From a4edbfa031eb4cd72678051f1510afde4f77951e Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Fri, 28 Feb 2014 08:36:29 +0100 Subject: Update to MediaWiki 1.22.3 --- RELEASE-NOTES-1.22 | 36 +- extensions/Cite/COPYING | 339 +++++++++++++++ extensions/Cite/Cite.i18n.php | 208 ++++++--- extensions/Cite/Cite.php | 20 - extensions/Cite/Cite_body.php | 7 + extensions/Cite/SpecialCite.alias.php | 2 +- extensions/Cite/SpecialCite.i18n.php | 249 ++++++++++- extensions/Cite/citeParserTests.txt | 12 +- extensions/ConfirmEdit/Asirra.i18n.php | 93 ++++- extensions/ConfirmEdit/Captcha.php | 170 ++++++-- extensions/ConfirmEdit/ConfirmEdit.i18n.php | 327 +++++++++------ extensions/ConfirmEdit/ConfirmEdit.php | 3 +- extensions/ConfirmEdit/ConfirmEditHooks.php | 14 +- extensions/ConfirmEdit/FancyCaptcha.class.php | 3 +- extensions/ConfirmEdit/FancyCaptcha.i18n.php | 185 ++++---- extensions/ConfirmEdit/FancyCaptcha.php | 11 + extensions/ConfirmEdit/HTMLCaptchaField.php | 81 ---- extensions/ConfirmEdit/QuestyCaptcha.i18n.php | 51 +-- extensions/ConfirmEdit/ReCaptcha.i18n.php | 74 ++-- extensions/Gadgets/ApiQueryGadgets.php | 2 +- extensions/Gadgets/COPYING | 339 +++++++++++++++ extensions/Gadgets/Gadgets.alias.php | 4 +- extensions/Gadgets/Gadgets.i18n.php | 185 ++++---- extensions/Gadgets/SpecialGadgets.php | 2 +- extensions/ImageMap/COPYING | 339 +++++++++++++++ extensions/ImageMap/ImageMap.i18n.php | 8 +- extensions/ImageMap/ImageMap.php | 16 + extensions/ImageMap/ImageMap_body.php | 6 +- extensions/InputBox/InputBox.classes.php | 16 +- extensions/InputBox/InputBox.i18n.php | 49 ++- extensions/Interwiki/COPYING | 339 +++++++++++++++ extensions/Interwiki/Interwiki.alias.php | 2 +- extensions/Interwiki/Interwiki.i18n.php | 169 +++++--- extensions/Interwiki/Interwiki_body.php | 10 +- extensions/LocalisationUpdate/KNOWN_ISSUES.txt | 11 - .../LocalisationUpdate.class.php | 113 +++-- .../LocalisationUpdate/LocalisationUpdate.i18n.php | 14 +- .../LocalisationUpdate/LocalisationUpdate.php | 14 +- extensions/LocalisationUpdate/QuickArrayReader.php | 199 +++++---- extensions/LocalisationUpdate/README | 34 ++ extensions/LocalisationUpdate/README_FIRST.txt | 8 - extensions/LocalisationUpdate/tests/tokenTest.php | 61 +-- extensions/LocalisationUpdate/update.php | 5 +- extensions/Nuke/COPYING | 8 - extensions/Nuke/Nuke.alias.php | 4 +- extensions/Nuke/Nuke.hooks.php | 27 ++ extensions/Nuke/Nuke.i18n.php | 300 ++++++++++--- extensions/Nuke/Nuke.php | 5 +- .../ParserFunctions/ParserFunctions.i18n.magic.php | 95 +++-- .../ParserFunctions/ParserFunctions.i18n.php | 97 ++++- extensions/ParserFunctions/ParserFunctions.php | 12 +- .../ParserFunctions/ParserFunctions_body.php | 2 +- extensions/PdfHandler/COPYING | 339 +++++++++++++++ extensions/PdfHandler/PdfHandler.i18n.php | 17 +- extensions/PdfHandler/PdfHandler_body.php | 4 +- extensions/Poem/Poem.i18n.php | 19 +- extensions/Renameuser/COPYING | 339 +++++++++++++++ extensions/Renameuser/README | 2 +- extensions/Renameuser/Renameuser.alias.php | 4 +- extensions/Renameuser/Renameuser.hooks.php | 14 +- extensions/Renameuser/Renameuser.i18n.php | 137 ++++-- extensions/Renameuser/Renameuser.php | 1 + extensions/Renameuser/RenameuserSQL.php | 3 +- .../Renameuser/specials/SpecialRenameuser.php | 2 +- extensions/SpamBlacklist/SpamBlacklist.i18n.php | 194 +++++++-- extensions/SpamBlacklist/SpamBlacklist.php | 4 + extensions/SpamBlacklist/SpamBlacklist_body.php | 9 +- extensions/SpamBlacklist/api/ApiSpamBlacklist.php | 78 ++++ extensions/SyntaxHighlight_GeSHi/COPYING | 339 +++++++++++++++ .../SyntaxHighlight_GeSHi.class.php | 43 +- .../SyntaxHighlight_GeSHi.i18n.php | 27 +- extensions/SyntaxHighlight_GeSHi/geshi/geshi.php | 2 +- .../SyntaxHighlight_GeSHi/geshi/geshi/haskell.php | 10 +- extensions/TitleBlacklist/COPYING | 339 +++++++++++++++ extensions/TitleBlacklist/TitleBlacklist.i18n.php | 78 ++-- .../TitleBlacklist/TitleBlacklist.library.php | 33 ++ extensions/TitleBlacklist/TitleBlacklist.list.php | 53 ++- extensions/TitleBlacklist/TitleBlacklist.php | 11 + .../TitleBlacklist/mw.ext.TitleBlacklist.lua | 22 + .../tests/ApiQueryTitleBlacklistTest.php | 22 + extensions/TitleBlacklist/tests/testSource | 1 + extensions/WikiEditor/.jshintignore | 2 + extensions/WikiEditor/.jshintrc | 32 +- extensions/WikiEditor/COPYING | 339 +++++++++++++++ extensions/WikiEditor/WikiEditor.i18n.php | 465 +++++++++++++++------ .../WikiEditor/modules/ext.wikiEditor.dialogs.js | 7 +- .../WikiEditor/modules/ext.wikiEditor.highlight.js | 3 +- extensions/WikiEditor/modules/ext.wikiEditor.js | 3 +- .../WikiEditor/modules/ext.wikiEditor.preview.js | 3 +- .../modules/ext.wikiEditor.previewDialog.js | 3 +- .../WikiEditor/modules/ext.wikiEditor.publish.js | 3 +- .../modules/ext.wikiEditor.templateEditor.js | 19 +- .../WikiEditor/modules/ext.wikiEditor.templates.js | 19 +- .../modules/ext.wikiEditor.tests.toolbar.js | 16 +- .../WikiEditor/modules/ext.wikiEditor.toc.js | 3 +- .../modules/ext.wikiEditor.toolbar.hideSig.js | 4 +- .../WikiEditor/modules/ext.wikiEditor.toolbar.js | 3 +- .../modules/images/toolbar/format-bold-hy.png | Bin 0 -> 1675 bytes .../modules/images/toolbar/format-italic-hy.png | Bin 0 -> 1475 bytes .../WikiEditor/modules/jquery.wikiEditor.css | 3 - .../modules/jquery.wikiEditor.dialogs.config.js | 59 +-- .../modules/jquery.wikiEditor.dialogs.js | 34 +- .../modules/jquery.wikiEditor.highlight.js | 41 +- .../WikiEditor/modules/jquery.wikiEditor.iframe.js | 202 ++++----- extensions/WikiEditor/modules/jquery.wikiEditor.js | 61 +-- .../modules/jquery.wikiEditor.preview.js | 15 +- .../modules/jquery.wikiEditor.previewDialog.js | 15 +- .../modules/jquery.wikiEditor.publish.js | 13 +- .../modules/jquery.wikiEditor.templateEditor.js | 137 +++--- .../modules/jquery.wikiEditor.templates.js | 51 ++- .../WikiEditor/modules/jquery.wikiEditor.toc.js | 136 +++--- .../modules/jquery.wikiEditor.toolbar.config.js | 7 +- .../modules/jquery.wikiEditor.toolbar.js | 53 ++- includes/DefaultSettings.php | 2 +- includes/User.php | 22 +- includes/Wiki.php | 13 +- includes/api/ApiFormatBase.php | 18 +- includes/db/DatabaseOracle.php | 32 +- includes/db/DatabasePostgres.php | 16 +- includes/installer/WebInstallerPage.php | 9 +- includes/specials/SpecialPrefixindex.php | 1 + includes/upload/UploadBase.php | 71 +++- languages/messages/MessagesEn.php | 1 + languages/messages/MessagesQqq.php | 8 + maintenance/postgres/tables.sql | 4 +- 125 files changed, 6813 insertions(+), 1661 deletions(-) create mode 100644 extensions/Cite/COPYING delete mode 100644 extensions/ConfirmEdit/HTMLCaptchaField.php create mode 100644 extensions/Gadgets/COPYING create mode 100644 extensions/ImageMap/COPYING create mode 100644 extensions/Interwiki/COPYING delete mode 100644 extensions/LocalisationUpdate/KNOWN_ISSUES.txt create mode 100644 extensions/LocalisationUpdate/README delete mode 100644 extensions/LocalisationUpdate/README_FIRST.txt create mode 100644 extensions/Nuke/Nuke.hooks.php create mode 100644 extensions/PdfHandler/COPYING create mode 100644 extensions/Renameuser/COPYING create mode 100644 extensions/SpamBlacklist/api/ApiSpamBlacklist.php create mode 100644 extensions/SyntaxHighlight_GeSHi/COPYING create mode 100644 extensions/TitleBlacklist/COPYING create mode 100644 extensions/TitleBlacklist/TitleBlacklist.library.php create mode 100644 extensions/TitleBlacklist/mw.ext.TitleBlacklist.lua create mode 100644 extensions/WikiEditor/COPYING create mode 100644 extensions/WikiEditor/modules/images/toolbar/format-bold-hy.png create mode 100644 extensions/WikiEditor/modules/images/toolbar/format-italic-hy.png diff --git a/RELEASE-NOTES-1.22 b/RELEASE-NOTES-1.22 index ed64aa4d..9862e5eb 100644 --- a/RELEASE-NOTES-1.22 +++ b/RELEASE-NOTES-1.22 @@ -3,15 +3,45 @@ Security reminder: MediaWiki does not require PHP's register_globals. If you have it on, turn it '''off''' if you can. +== MediaWiki 1.22.3 == + +This is a security and bugfix release of the MediaWiki 1.22 branch. + +=== Changes since 1.22.2 === +* (bug 60771) SECURITY: Disallow uploading SVG files using non-whitelisted + namespaces. Also disallow iframe elements. User will get an error + including the namespace name if they use a non- whitelisted namespace. +* (bug 61346) SECURITY: Make token comparison use constant time. It seems like + our token comparison would be vulnerable to timing attacks. This will take + constant time. +* (bug 61362) SECURITY: API: Don't find links in the middle of api.php links. +* (bug 53710) Add sequence support for upsert in DatabaseOracle in the same way + as in selectInsert +* (bug 60231, 58719) Various fixes to job running code in Wiki.php: Make it + async on Windows. Fixed possible "invalid filename" errors on Windows. + Redirect output to dev/null to avoid hanging PHP. +* (bug 60083) Correct sequence name for fresh Postgres installation. Spotted + by gebhkla +* (bug 60531) Avoid variable naming conflicts in + DatabasePostgres::selectSQLText. Spotted by gebhkla +* (bug 60094) Fix rebuildall.php fatal error with PostgreSQL. The fix for + 47055 introduced a fatal error when running rebuildall.php. This is a + workaround suggested by gebhkla on Bugzilla. It just checks to make sure + $options is actually an array before calling array_search on it. +* (bug 43817c12) Add error handling if descriptionmsg isn't defined for + extension. +* (bug 60543) Special:PrefixIndex omits stripprefix=1 for "Next page" link. + == MediaWiki 1.22.2 == This is a security and bugfix release of the MediaWiki 1.22 branch. === Changes since 1.22.1 === -* (bug 60339) SECURITY: Sanitize shell arguments to DjVu files, and other media formats -* (bug 58253) Check for very old PCRE versions in installer and updater -* (bug 60054) Make WikiPage::$mPreparedEdit public +* (bug 60339) SECURITY: Sanitize shell arguments to DjVu files, and other media + formats. +* (bug 58253) Check for very old PCRE versions in installer and updater. +* (bug 60054) Make WikiPage::$mPreparedEdit public. == MediaWiki 1.22.1 == diff --git a/extensions/Cite/COPYING b/extensions/Cite/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/extensions/Cite/COPYING @@ -0,0 +1,339 @@ + 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. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/extensions/Cite/Cite.i18n.php b/extensions/Cite/Cite.i18n.php index 2f204203..895a4d80 100644 --- a/extensions/Cite/Cite.i18n.php +++ b/extensions/Cite/Cite.i18n.php @@ -249,6 +249,7 @@ Defina-ne mas en o mensache [[MediaWiki:$2]].', /** Arabic (العربية) * @author Aiman titi + * @author Asaifm * @author Meno25 * @author OsamaK * @author زكريا @@ -279,7 +280,7 @@ $messages['ar'] = array( لا نص تم توفيره للمراجع المسماة $1', 'cite_error_included_ref' => 'إغلاق </ref> مفقود لوسم <ref>', 'cite_error_refs_without_references' => 'وسم <ref> موجود، لكن لا وسم <references/> تم العثور عليه', - 'cite_error_group_refs_without_references' => 'وسوم <ref> موجودة لمجموعة اسمها "$1"، لكن لا وسم <references group="$1"/> مماثل تم العثور عليه', # Fuzzy + 'cite_error_group_refs_without_references' => 'وسوم <ref> موجودة لمجموعة اسمها "$1"، ولكن لم يتم العثور على وسم <references group="$1"/> أو هناك وسم </ref> ناقص', 'cite_error_references_group_mismatch' => 'الوسم <ref> في <references> فيه خاصية group متضاربة "$1".', 'cite_error_references_missing_group' => 'الوسم <ref> المُعرّف في <references> فيه خاصية group "$1" التي لا تظهر في النص السابق.', 'cite_error_references_missing_key' => 'الوسم <ref> ذو الاسم "$1" المُعرّف في <references> غير مستخدم في النص السابق.', @@ -287,6 +288,8 @@ $messages['ar'] = array( 'cite_error_empty_references_define' => 'الوسم <ref> المُعرّف في <references> بالاسم "$1" ليس له محتوى.', 'cite_references_link_many' => '
  • ^ $2 $3
  • ', 'cite_references_link_many_format_backlink_labels' => 'أ ب ت ث ج ح خ د ذ ر ز س ش ص ض ط ظ ع غ ف ق ك ل م ن ه و ي أأ أب أت أث أج أح أخ أد أذ أر أز أس أش أص أض أط أظ أع أغ أف أق أك أل أم أن أه أو أي بأ بب بت بث بج بح بخ بد بذ بر بز بس بش بص بض بط بظ بع بغ بف بق بك بل بم بن به بو بي تأ تب تت تث تج تح تخ تد تذ تر تز تس تش تص تض تط تظ تع تغ تف تق تك تل تم تن ته تو تي ثأ ثب ثت ثث ثج ثح ثخ ثد ثذ ثر ثز ثس ثش ثص ثض ثط ثظ ثع ثغ ثف ثق ثك ثل ثم ثن ثه ثو ثي جأ جب جت جث جج جح جخ جد جذ جر جز جس جش جص جض جط جظ جع جغ جف جق جك جل جم جن جه جو جي حأ حب حت حث حج حح حخ حد حذ حر حز حس حش حص حض حط حظ حع حغ حف حق حك حل حم حن حه حو حي خأ خب خت خث خج خح خخ خد خذ خر خز خس خش خص خض خط خظ خع خغ خف خق خك خل خم خن خه خو خي دأ دب دت دث دج دح دخ دد دذ در دز دس دش دص دض دط دظ دع دغ دف دق دك دل دم دن ده دو دي ذأ ذب ذت ذث ذج ذح ذخ ذد ذذ ذر ذز ذس ذش ذص ذض ذط ذظ ذع ذغ ذف ذق ذك ذل ذم ذن ذه ذو ذي رأ رب رت رث رج رح رخ رد رذ رر رز رس رش رص رض رط رظ رع رغ رف رق رك رل رم رن ره رو ري زأ زب زت زث زج زح زخ زد زذ زر زز زس زش زص زض زط زظ زع زغ زف زق زك زل زم زن زه زو زي سأ سب ست سث سج سح سخ سد سذ سر سز سس سش سص سض سط سظ سع سغ سف سق سك سل سم سن سه سو سي شأ شب شت شث شج شح شخ شد شذ شر شز شس شش شص شض شط شظ شع شغ شف شق شك شل شم شن شه شو شي صأ صب صت صث صج صح صخ صد صذ صر صز صس صش صص صض صط صظ صع صغ صف صق صك صل صم صن صه صو صي ضأ ضب ضت ضث ضج ضح ضخ ضد ضذ ضر ضز ضس ضش ضص ضض ضط ضظ ضع ضغ ضف ضق ضك ضل ضم ضن ضه ضو ضي طأ طب طت طث طج طح طخ طد طذ طر طز طس طش طص طض طط طظ طع طغ طف طق طك طل طم طن طه طو طي ظأ ظب ظت ظث ظج ظح ظخ ظد ظذ ظر ظز ظس ظش ظص ظض ظط ظظ ظع ظغ ظف ظق ظك ظل ظم ظن ظه ظو ظي عأ عب عت عث عج عح عخ عد عذ عر عز عس عش عص عض عط عظ عع عغ عف عق عك عل عم عن عه عو عي غأ غب غت غث غج غح غخ غد غذ غر غز غس غش غص غض غط غظ غع غغ غف غق غك غل غم غن غه غو غي فأ فب فت فث فج فح فخ فد فذ فر فز فس فش فص فض فط فظ فع فغ فف فق فك فل فم فن فه فو في قأ قب قت قث قج قح قخ قد قذ قر قز قس قش قص قض قط قظ قع قغ قف قق قك قل قم قن قه قو قي كأ كب كت كث كج كح كخ كد كذ كر كز كس كش كص كض كط كظ كع كغ كف كق كك كل كم كن كه كو كي لأ لب لت لث لج لح لخ لد لذ لر لز لس لش لص لض لط لظ لع لغ لف لق لك لل لم لن له لو لي مأ مب مت مث مج مح مخ مد مذ مر مز مس مش مص مض مط مظ مع مغ مف مق مك مل مم من مه مو مي نأ نب نت نث نج نح نخ ند نذ نر نز نس نش نص نض نط نظ نع نغ نف نق نك نل نم نن نه نو ني هأ هب هت هث هج هح هخ هد هذ هر هز هس هش هص هض هط هظ هع هغ هف هق هك هل هم هن هه هو هي وأ وب وت وث وج وح وخ ود وذ ور وز وس وش وص وض وط وظ وع وغ وف وق وك ول وم ون وه وو وي يأ يب يت يث يج يح يخ يد يذ ير يز يس يش يص يض يط يظ يع يغ يف يق يك يل يم ين يه يو يي', + 'cite_references_link_accessibility_label' => 'تعدى المحتوى الحالي إلى أعلى الصفحة', + 'cite_references_link_many_accessibility_label' => 'تعدى إلى الأعلى ل:', ); /** Aramaic (ܐܪܡܝܐ) @@ -714,7 +717,7 @@ Defineix més al missatge [[MediaWiki:$2]].', 'cite_error_references_no_text' => "Etiqueta <ref> no vàlida; no s'ha proporcionat text per les refs amb l'etiqueta $1", 'cite_error_included_ref' => 'Es tanca el </ref> que manca per una etiqueta <ref>', - 'cite_error_refs_without_references' => 'Hi ha etiquetes <ref> però no cap etiqueta <references/>', + 'cite_error_refs_without_references' => "Hi ha etiquetes <ref> però no s'ha trobat cap etiqueta <references/>", 'cite_error_group_refs_without_references' => 'Existeixen etiquetes <ref> pel grup «$1» però no l\'etiqueta <references group="$1"/> corresponent', # Fuzzy 'cite_error_references_group_mismatch' => 'L\'etiqueta <ref> a <references> té un conflicte amb l\'atribut de grup "$1".', 'cite_error_references_missing_group' => 'L\'etiqueta <ref> definida a <references> té l\'atribut de grup "$1" que no apareix en el text anterior.', @@ -727,6 +730,7 @@ no s'ha proporcionat text per les refs amb l'etiqueta $1", * @author Умар */ $messages['ce'] = array( + 'cite-desc' => ' а тегаш тӀетовжорашан тӀетуху', 'cite_error' => 'ГӀалат дешнаш далорна $1', 'cite_error_references_no_text' => 'Тег <ref> нийса яц; тIетовжаран $1 йоза яздина дац', 'cite_error_refs_without_references' => 'Йолуш йолу тегаца <ref> йогӀуш йолу тег <references/> ца карийна', @@ -735,7 +739,7 @@ $messages['ce'] = array( 'cite_references_link_many_accessibility_label' => 'Дехьа гӀо:', ); -/** Czech (česky) +/** Czech (čeština) * @author Danny B. * @author Li-sung * @author Littledogboy @@ -770,7 +774,7 @@ Zvyšte jejich počet ve zprávě [[MediaWiki:$2]].', 'cite_references_link_many_accessibility_label' => 'Skočit nahoru k:', ); -/** Church Slavic (словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) +/** Church Slavic (словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) * @author ОйЛ */ $messages['cu'] = array( @@ -853,12 +857,13 @@ Definer flere i beskeden [[MediaWiki:$2]].', /** German (Deutsch) * @author Kghbln * @author Metalhead64 + * @author Purodha * @author Raimond Spekking * @author The Evil IP address * @author Umherirrender */ $messages['de'] = array( - 'cite-desc' => 'Ergänzt die Tags und für die Referenzierung von Wikiseiten', + 'cite-desc' => 'Ergänzt die Tags und für Referenzierungen in Wikiseiten', 'cite_error' => 'Referenzfehler: $1', 'cite_error_ref_numeric_key' => 'Ungültige Verwendung von <ref>: Der Parameter „name“ darf kein reiner Zahlenwert sein. Benutze einen beschreibenden Namen.', 'cite_error_ref_no_key' => 'Ungültige Verwendung von <ref>: Der Parameter „ref“ ohne Inhalt muss einen Namen haben.', @@ -980,12 +985,14 @@ Definěruj dalšne w powěsći [[MediaWiki:$2]].', za ref z mjenim $1 njejo se tekst pódał', 'cite_error_included_ref' => 'Kóńceca toflicka </ref> felujo za toflicku <ref>', 'cite_error_refs_without_references' => 'Toflicki <ref> eksistěruju, ale toflicka <references/> njejo se namakała', - 'cite_error_group_refs_without_references' => 'Toflicki <ref> eksistěruju za kupku z mjenim "$1", ale wótpowědujuca toflicka <references group="$1"/> njejo se namakała', # Fuzzy + 'cite_error_group_refs_without_references' => 'Toflicki <ref> eksistěruju za kupku z mjenim "$1", ale wótpowědujuca toflicka <references group="$1"/> njejo se namakała abo zacynjacy </ref> felujo', 'cite_error_references_group_mismatch' => 'Toflicka <ref> w <references> jo ze kupkowym atributom "$1" w konflikśe.', 'cite_error_references_missing_group' => 'Toflicka <ref>, kótaraž jo w <references> definěrowana, ma kupkowy atribut "$1", kótaryž njepokazujo se w pjerwjejšnem teksće.', 'cite_error_references_missing_key' => 'Toflicka <ref> z mjenim "$1", kótaraž jo w <references> definěrowana, njewužywa se w pjerwjejšnem teksće.', 'cite_error_references_no_key' => 'Toflicka <ref>, kótaraž jo w <references> definěrowana, njama mjenjowy atribut.', 'cite_error_empty_references_define' => 'Toflicka <ref>, kótaraž jo w <references> z mjenim "$1" definěrowana, njama wopśimjeśe.', + 'cite_references_link_accessibility_label' => 'Górjej skócyś', + 'cite_references_link_many_accessibility_label' => 'Górjej skócys do:', ); /** Greek (Ελληνικά) @@ -1070,7 +1077,9 @@ neniu teksto estis donita por ref-oj nomataj $1', * @author Crazymadlover * @author Drini * @author Erdemaslancan + * @author Fitoschido * @author Gustronico + * @author Ihojose * @author Locos epraix * @author Manuelt15 * @author McDutchie @@ -1104,13 +1113,15 @@ Define más en el mensaje [[MediaWiki:$2]].', no se ha definido el contenido de las referencias llamadas $1', 'cite_error_included_ref' => 'Etiqueta de apertura <ref> sin su correspondiente cierre </ref>', 'cite_error_refs_without_references' => 'Existen etiquetas <ref>, pero no se encontró una etiqueta <references />', - 'cite_error_group_refs_without_references' => 'Existen etiquetas <ref> para un grupo llamado "$1", pero no se encontró una etiqueta <references group="$1"/>', # Fuzzy + 'cite_error_group_refs_without_references' => 'Existen etiquetas <ref> para un grupo llamado «$1», pero no se encontró la etiqueta <references group="$1"/> correspondiente, o falta la etiqueta </ref> de cierre', 'cite_error_references_group_mismatch' => 'La etiqueta <ref> en <references> presenta el atributo de grupo "$1" en conflicto.', 'cite_error_references_missing_group' => 'La etiqueta <ref> definida en <references> pertenece al grupo "$1" no declarado en el texto precedente.', 'cite_error_references_missing_key' => 'La etiqueta <ref> con nombre "$1" definida en <references> no se utiliza en el texto precedente.', 'cite_error_references_no_key' => 'La etiqueta <ref> definida en <references> no tiene atributo de nombre.', 'cite_error_empty_references_define' => 'La etiqueta <ref> definida en <references> con nombre "$1" no tiene contenido.', 'cite_references_link_many_format_backlink_labels' => 'a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz', + 'cite_references_link_accessibility_label' => 'Ir a', + 'cite_references_link_many_accessibility_label' => 'Saltar a:', ); /** Estonian (eesti) @@ -1180,7 +1191,7 @@ $messages['fa'] = array( 'cite_error_references_no_text' => 'برچسب نامجاز؛ متنی برای یادکردهای با نام $1 وارد نشده‌است', 'cite_error_included_ref' => 'برچسب تمام کنندهٔ </ref> بدون برچسب <ref>', 'cite_error_refs_without_references' => 'برچسب <ref> وجود دارد اما برچسب <references/> پیدا نشد', - 'cite_error_group_refs_without_references' => 'برچسب <ref> برای گروهی به نام «$1» وجود دارد، اما برچسب <references group="$1"/> متناظر پیدا نشد', # Fuzzy + 'cite_error_group_refs_without_references' => 'برچسب <ref> برای گروهی به نام «$1» وجود دارد، اما برچسب متناظر با <references group="$1"/> یافت نشد یا </ref> بسته جا گذاشته شده‌است.', 'cite_error_references_group_mismatch' => 'برچسپ <ref> درون <references> در تضاد با ویژگی‌های گروه «$1» است.', 'cite_error_references_missing_group' => 'برچسپ <ref> در <references> تعریف شده، ویژگی‌های گروهی «$1» را دارد که درون متن قبل از آن ظاهر نمی‌شود.', 'cite_error_references_missing_key' => 'پرچسپ <ref> که با نام «$1» درون <references> تعریف شده، در متن قبل از آن استفاده نشده‌است.', @@ -1188,6 +1199,8 @@ $messages['fa'] = array( 'cite_error_empty_references_define' => 'برچسپ <ref> تعریف شده درون <references> با نام «$1» محتوایی ندارد.', 'cite_reference_link_key_with_num' => '$1_$2', 'cite_reference_link_prefix' => 'cite_ref-', + 'cite_references_link_accessibility_label' => 'پرش به بالا', + 'cite_references_link_many_accessibility_label' => 'پرش به بالا به:', ); /** Finnish (suomi) @@ -1278,6 +1291,7 @@ aucun texte n’a été fourni pour les références nommées $1.', 'cite_error_references_missing_key' => 'La balise <ref> avec le nom « $1 » définie dans <references> n’est pas utilisé dans le texte précédent.', 'cite_error_references_no_key' => 'La balise <ref> définie dans <references> n’a pas d’attribut de nom.', 'cite_error_empty_references_define' => 'La balise <ref> défini dans <references> avec le nom « $1 » n’a pas de contenu.', + 'cite_references_link_many_format' => '[[#$1|$2]]', 'cite_references_link_many_sep' => ', ', 'cite_references_link_many_and' => ' et ', 'cite_references_link_accessibility_label' => 'Aller', @@ -1490,10 +1504,11 @@ $messages['he'] = array( /** Hindi (हिन्दी) * @author Ansumang * @author Kaustubh + * @author Shubhamkanodia * @author Siddhartha Ghai */ $messages['hi'] = array( - 'cite-desc' => ' और टैग जोड़ता है, उद्धरणों के लिये।', + 'cite-desc' => 'उद्धरणों के लिये और टैग जोड़ता है।', 'cite_error' => 'सन्दर्भ त्रुटि: $1', 'cite_error_ref_numeric_key' => 'अमान्य <ref> टैग; नाम साधारण संख्या (integer) नहीं हो सकता, कृपया विस्तृत शीर्षक दें।', @@ -1523,8 +1538,9 @@ $messages['hi'] = array( 'cite_error_references_missing_key' => '<references> में "$1" नाम के साथ परिभाषित <ref> टैग उससे पहले के पाठ में प्रयुक्त नहीं है।', 'cite_error_references_no_key' => '<references> टैग में परिभाषित <ref> टैग का कोई नाम नहीं है।', 'cite_error_empty_references_define' => '<references> टैग में परिभाषित "$1" नामक <ref> टैग में कोई सामग्री नहीं है।', - 'cite_references_link_accessibility_label' => 'वापिस ऊपर जायें', - 'cite_references_link_many_accessibility_label' => 'इस तक वापिस ऊपर जायें:', + 'cite_references_link_many_format_backlink_labels' => 'अ आ इ ई उ ऊ ए ऐ ओ औ क ख ग घ ङ च छ ज झ ञ ट ठ ड ढ ण त थ द ध न प फ ब भ म य र ल व श ष स ह अ॰अ अ॰आ अ॰इ अ॰ई अ॰उ अ॰ऊ अ॰ए अ॰ऐ अ॰ओ अ॰औ अ॰क अ॰ख अ॰ग अ॰घ अ॰ङ अ॰च अ॰छ अ॰ज अ॰झ अ॰ञ अ॰ट अ॰ठ अ॰ड अ॰ढ अ॰ण अ॰त अ॰थ अ॰द अ॰ध अ॰न अ॰प अ॰फ अ॰ब अ॰भ अ॰म अ॰य अ॰र अ॰ल अ॰व अ॰श अ॰ष अ॰स अ॰ह आ॰अ आ॰आ आ॰इ आ॰ई आ॰उ आ॰ऊ आ॰ए आ॰ऐ आ॰ओ आ॰औ आ॰क आ॰ख आ॰ग आ॰घ आ॰ङ आ॰च आ॰छ आ॰ज आ॰झ आ॰ञ आ॰ट आ॰ठ आ॰ड आ॰ढ आ॰ण आ॰त आ॰थ आ॰द आ॰ध आ॰न आ॰प आ॰फ आ॰ब आ॰भ अ॰म आ॰य आ॰र आ॰ल आ॰व आ॰श आ॰ष आ॰स आ॰ह इ॰अ इ॰आ इ॰इ इ॰ई इ॰उ इ॰ऊ इ॰ए इ॰ऐ इ॰ओ इ॰औ इ॰क इ॰ख इ॰ग इ॰घ इ॰ङ इ॰च इ॰छ इ॰ज इ॰झ इ॰ञ इ॰ट इ॰ठ इ॰ड इ॰ढ इ॰ण इ॰त इ॰थ इ॰द इ॰ध इ॰न इ॰प इ॰फ इ॰ब इ॰भ इ॰म इ॰य इ॰र इ॰ल इ॰व इ॰श इ॰ष इ॰स इ॰ह ई॰अ ई॰आ ई॰इ ई॰ई ई॰उ ई॰ऊ ई॰ए ई॰ऐ ई॰ओ ई॰औ ई॰क ई॰ख ई॰ग ई॰घ ई॰ङ ई॰च ई॰छ ई॰ज ई॰झ ई॰ञ ई॰ट ई॰ठ ई॰ड ई॰ढ ई॰ण ई॰त ई॰थ ई॰द ई॰ध ई॰न ई॰प ई॰फ ई॰ब ई॰भ ई॰म ई॰य ई॰र ई॰ल ई॰व ई॰श ई॰ष ई॰स ई॰ह उ॰अ उ॰आ उ॰इ उ॰ई उ॰उ उ॰ऊ उ॰ए उ॰ऐ उ॰ओ उ॰औ उ॰क उ॰ख उ॰ग उ॰घ उ॰ङ उ॰च उ॰छ उ॰ज उ॰झ उ॰ञ उ॰ट उ॰ठ उ॰ड उ॰ढ उ॰ण उ॰त उ॰थ उ॰द उ॰ध उ॰न उ॰प उ॰फ उ॰ब उ॰भ उ॰म उ॰य उ॰र उ॰ल उ॰व उ॰श उ॰ष उ॰स उ॰ह ऊ॰अ ऊ॰आ ऊ॰इ ऊ॰ई ऊ॰उ ऊ॰ऊ ऊ॰ए ऊ॰ऐ ऊ॰ओ ऊ॰औ ऊ॰क ऊ॰ख ऊ॰ग ऊ॰घ ऊ॰ङ ऊ॰च ऊ॰छ ऊ॰ज ऊ॰झ ऊ॰ञ ऊ॰ट ऊ॰ठ ऊ॰ड ऊ॰ढ ऊ॰ण ऊ॰त ऊ॰थ ऊ॰द ऊ॰ध ऊ॰न ऊ॰प ऊ॰फ ऊ॰ब ऊ॰भ ऊ॰म ऊ॰य ऊ॰र ऊ॰ल ऊ॰व ऊ॰श ऊ॰ष ऊ॰स ऊ॰ह ए॰अ ए॰आ ए॰इ ए॰ई ए॰उ ए॰ऊ ए॰ए ए॰ऐ ए॰ओ ए॰औ ए॰क ए॰ख ए॰ग ए॰घ ए॰ङ ए॰च ए॰छ ए॰ज ए॰झ ए॰ञ ए॰ट ए॰ठ ए॰ड ए॰ढ ए॰ण ए॰त ए॰थ ए॰द ए॰ध ए॰न ए॰प ए॰फ ए॰ब ए॰भ ए॰म ए॰य ए॰र ए॰ल ए॰व ए॰श ए॰ष ए॰स ए॰ह ऐ॰अ ऐ॰आ ऐ॰इ ऐ॰ई ऐ॰उ ऐ॰ऊ ऐ॰ए ऐ॰ऐ ऐ॰ओ ऐ॰औ ऐ॰क ऐ॰ख ऐ॰ग ऐ॰घ ऐ॰ङ ऐ॰च ऐ॰छ ऐ॰ज ऐ॰झ ऐ॰ञ ऐ॰ट ऐ॰ठ ऐ॰ड ऐ॰ढ ऐ॰ण ऐ॰त ऐ॰थ ऐ॰द ऐ॰ध ऐ॰न ऐ॰प ऐ॰फ ऐ॰ब ऐ॰भ ऐ॰म ऐ॰य ऐ॰र ऐ॰ल ऐ॰व ऐ॰श ऐ॰ष ऐ॰स ऐ॰ह ओ॰अ ओ॰आ ओ॰इ ओ॰ई ओ॰उ ओ॰ऊ ओ॰ए ओ॰ऐ ओ॰ओ ओ॰औ ओ॰क ओ॰ख ओ॰ग ओ॰घ ओ॰ङ ओ॰च ओ॰छ ओ॰ज ओ॰झ ओ॰ञ ओ॰ट ओ॰ठ ओ॰ड ओ॰ढ ओ॰ण ओ॰त ओ॰थ ओ॰द ओ॰ध ओ॰न ओ॰प ओ॰फ ओ॰ब ओ॰भ ओ॰म ओ॰य ओ॰र ओ॰ल ओ॰व ओ॰श ओ॰ष ओ॰स ओ॰ह औ॰अ औ॰आ औ॰इ औ॰ई औ॰उ औ॰ऊ औ॰ए औ॰ऐ औ॰ओ औ॰औ औ॰क औ॰ख औ॰ग औ॰घ औ॰ङ औ॰च औ॰छ औ॰ज औ॰झ औ॰ञ औ॰ट औ॰ठ औ॰ड औ॰ढ औ॰ण औ॰त औ॰थ औ॰द औ॰ध औ॰न औ॰प औ॰फ औ॰ब औ॰भ औ॰म औ॰य औ॰र औ॰ल औ॰व औ॰श औ॰ष औ॰स औ॰ह क॰अ क॰आ क॰इ क॰ई क॰उ क॰ऊ क॰ए क॰ऐ क॰ओ क॰औ क॰क क॰ख क॰ग क॰घ क॰ङ क॰च क॰छ क॰ज क॰झ क॰ञ क॰ट क॰ठ क॰ड क॰ढ क॰ण क॰त क॰थ क॰द क॰ध क॰न क॰प क॰फ क॰ब क॰भ क॰म क॰य क॰र क॰ल क॰व क॰श क॰ष क॰स क॰ह ख॰अ ख॰आ ख॰इ ख॰ई ख॰उ ख॰ऊ ख॰ए ख॰ऐ ख॰ओ ख॰औ ख॰क ख॰ख ख॰ग ख॰घ ख॰ङ ख॰च ख॰छ ख॰ज ख॰झ ख॰ञ ख॰ट ख॰ठ ख॰ड ख॰ढ ख॰ण ख॰त ख॰थ ख॰द ख॰ध ख॰न ख॰प ख॰फ ख॰ब ख॰भ ख॰म ख॰य ख॰र ख॰ल ख॰व ख॰श ख॰ष ख॰स ख॰ह ग॰अ ग॰आ ग॰इ ग॰ई ग॰उ ग॰ऊ ग॰ए ग॰ऐ ग॰ओ ग॰औ ग॰क ग॰ख ग॰ग ग॰घ ग॰ङ ग॰च ग॰छ ग॰ज ग॰झ ग॰ञ ग॰ट ग॰ठ ग॰ड ग॰ढ ग॰ण ग॰त ग॰थ ग॰द ग॰ध ग॰न ग॰प ग॰फ ग॰ब ग॰भ ग॰म ग॰य ग॰र ग॰ल ग॰व ग॰श ग॰ष ग॰स ग॰ह घ॰अ घ॰आ घ॰इ घ॰ई घ॰उ घ॰ऊ घ॰ए घ॰ऐ घ॰ओ घ॰औ घ॰क घ॰ख घ॰ग घ॰घ घ॰ङ घ॰च घ॰छ घ॰ज घ॰झ घ॰ञ घ॰ट घ॰ठ घ॰ड घ॰ढ घ॰ण घ॰त घ॰थ घ॰द घ॰ध घ॰न घ॰प घ॰फ घ॰ब घ॰भ घ॰म घ॰य घ॰र घ॰ल घ॰व घ॰श घ॰ष घ॰स घ॰ह ङ॰अ ङ॰आ ङ॰इ ङ॰ई ङ॰उ ङ॰ऊ ङ॰ए ङ॰ऐ ङ॰ओ ङ॰औ ङ॰क ङ॰ख ङ॰ग ङ॰घ ङ॰ङ ङ॰च ङ॰छ ङ॰ज ङ॰झ ङ॰ञ ङ॰ट ङ॰ठ ङ॰ड ङ॰ढ ङ॰ण ङ॰त ङ॰थ ङ॰द ङ॰ध ङ॰न ङ॰प ङ॰फ ङ॰ब ङ॰भ ङ॰म ङ॰य ङ॰र ङ॰ल ङ॰व ङ॰श ङ॰ष ङ॰स ङ॰ह', + 'cite_references_link_accessibility_label' => 'ऊपर जायें', + 'cite_references_link_many_accessibility_label' => 'इस तक ऊपर जायें:', ); /** Croatian (hrvatski) @@ -1579,12 +1595,14 @@ Definuj dalše w zdźělence [[MediaWiki:$2]].', 'cite_error_references_no_text' => 'Njepłaćiwa referenca formy <ref>; žadyn tekst za referency z mjenom $1 podaty.', 'cite_error_included_ref' => 'Kónčny </ref> za tafličku <ref> faluje', 'cite_error_refs_without_references' => 'Taflički <ref> ekistuja, ale žana taflička code><references/> je so namakała', - 'cite_error_group_refs_without_references' => 'Taflički <ref> eksistuja za skupinu z mjenom "$1", ale njeje so wotpowědowaca taflička <references group="$1"/> namakała', # Fuzzy + 'cite_error_group_refs_without_references' => 'Taflički <ref> eksistuja za skupinu z mjenom "$1", ale njeje so wotpowědowaca taflička <references group="$1"/> namakała abo začinjacy </ref> faluje', 'cite_error_references_group_mismatch' => 'Taflička <ref> w <references> je ze skupinskim atributom "$1" w konflikće.', 'cite_error_references_missing_group' => 'Taflička <ref>, kotraž je w <references> definowana, ma skupinski atribut "$1", kotryž so w prjedawšim teksće njejewi.', 'cite_error_references_missing_key' => 'Taflička <ref> z mjenom "$1", kotraž je w <references> definowana, so w prjedawšim teksće njewužiwa.', 'cite_error_references_no_key' => 'Taflička <ref>, kotraž je w <references> definowana, mjenowy atribut nima.', 'cite_error_empty_references_define' => 'Taflička <ref>, kotraž je w <references> z mjenom "$1" definowana, wobsah nima.', + 'cite_references_link_accessibility_label' => 'Horje skočić', + 'cite_references_link_many_accessibility_label' => 'Horje skočić do:', ); /** Haitian (Kreyòl ayisyen) @@ -1734,38 +1752,38 @@ $messages['ig'] = array( * @author Lam-ang */ $messages['ilo'] = array( - 'cite-desc' => 'Agnayon ti ken nga etiketa, para kadagiti pagdakamat', + 'cite-desc' => 'Aginayon kadagiti etiketa ti ken , para kadagiti panagdakamat', 'cite_error' => 'Biddut ti dakamat: $1', - 'cite_error_ref_numeric_key' => 'Imbalido a <ref> nga etiketa; -ti nagan ket saan a mabalin a nalaka a sibubukel. Agusar ti agipalpalawag a titulo', - 'cite_error_ref_no_key' => 'Imbalido a <ref> nga etiketa; -dagita ref nga awan nagyanna ket masapul a managanan', - 'cite_error_ref_too_many_keys' => 'Imbalido a <ref> nga etiketa; + 'cite_error_ref_numeric_key' => 'Imbalido ti etiketa ti <ref>; +ti nagan ket saan a mabalin a nalaka a sibubukel. Agusar ti makaipalawag a titulo', + 'cite_error_ref_no_key' => 'Imbalido nga etiketa ti <ref> ; +dagita ref nga awan nagyanna ket masapul nga adda naganna', + 'cite_error_ref_too_many_keys' => 'Imbalido nga etiketa ti <ref> ; imbalido a nag-nagan, a kas adu unay', - 'cite_error_ref_no_input' => 'Imbalido a <ref> nga etiketa; + 'cite_error_ref_no_input' => 'Imbalido nga etiketa ti <ref> ; dagiti ref nga awan ti naganna ket masapul nga addaan ti nagyan', - 'cite_error_references_invalid_parameters' => 'Imbalido a <references> nga etiketa -awan dagiti parametro a maipalubos. + 'cite_error_references_invalid_parameters' => 'Imbalido nga etiketa ti <references>; +saan a maipalubos dagiti parametro. Usaren ti <references />', - 'cite_error_references_invalid_parameters_group' => 'Imbalido a <references> nga etiketa; -parametro a "grupo" ket ti maipalubos laeng. + 'cite_error_references_invalid_parameters_group' => 'Imbalido nga etiketa ti <references> ; +maipalubos laeng ti parametro ti "grupo" . Usaren ti <references /> , wenno<references group="..." />', - 'cite_error_references_no_backlink_label' => 'Naibusan kadagiti nagrunaan a likud ti silpo nga etiketa. -Ipalawag pay ti adu idiay [[MediaWiki:Cite references link many format backlink labels]] a mensahe', - 'cite_error_no_link_label_group' => 'Naibusan ti nangruna a silpo nga etiketa para iti grupo ti "$1". -Ipalawag pay ti adu idiay [[MediaWiki:$2]] a mensahe.', - 'cite_error_references_no_text' => 'Imbalido a <ref> nga etiketa; -awan ti testo a naited para dagiti ref a nanaganan $1', - 'cite_error_included_ref' => 'Irikrikep ti </ref> napukaw para iti <ref> nga etiketa', - 'cite_error_refs_without_references' => 'Ti <ref> nga etiketa ket addan, ngem awan ti <references/> nga etiketa a nabirukan', - 'cite_error_group_refs_without_references' => 'Adda dagiti <ref> para iti grupo a nanaganan ti "$1", ngem awan ti kapada a <references group="$1"/> nga etiketa ti nabirukan, wenno pangrikep a </ref> ket awan', - 'cite_error_references_group_mismatch' => 'Ti <ref> nga etiketa iday <references> ket addan ti nagsungat a gupit ti grupo "$1".', - 'cite_error_references_missing_group' => 'Ti <ref> nga etiketa a naipalawag idiay <references> ket addaan ti gupit ti grupo ti "$1" a saan nga agparang iti napalabas a testo.', - 'cite_error_references_missing_key' => 'Ti <ref> nga etiketa nga addaan ti nagan ti "$1" a naipalawag idiay <references> ket saan a nausar iti napalabas a testo.', - 'cite_error_references_no_key' => 'Ti <ref> nga etiketa a naipalawag idiay <references> ket awan ti nainagan a gupit.', - 'cite_error_empty_references_define' => 'Ti <ref> nga etiketa a naipalawag idiay <references> nga addaan ti nagan a "$1" ket awan ti nagyanna.', - 'cite_references_link_accessibility_label' => 'Lumagto ti ngato', - 'cite_references_link_many_accessibility_label' => 'Lumagto ti ngato iti:', + 'cite_error_references_no_backlink_label' => 'Naibusan kadagiti etiketa ti naisangayan a silpo ti likud. +Ipalawag pay ti adu idiay mensahe ti [[MediaWiki:Cite references link many format backlink labels]]', + 'cite_error_no_link_label_group' => 'Naibusan kadagiti etiketa ti nangruna a silpo para iti grupo ti "$1". +Ipalawag pay ti adu idiay mensahe ti [[MediaWiki:$2]] .', + 'cite_error_references_no_text' => 'Imbalido nga etiketa ti <ref> ; +awan ti testo a naited para kadagiti ref a nanaganan $1', + 'cite_error_included_ref' => 'Irikepen ti </ref> napukaw para iti etiketa ti <ref>', + 'cite_error_refs_without_references' => 'Ti etiketa ti <ref> ket addan, ngem awan ti etiketa ti <references/> a nabirukan', + 'cite_error_group_refs_without_references' => 'Adda dagiti etiketa ti <ref> para iti grupo a nanaganan ti "$1", ngem awan ti kapada nga etiketa ti <references group="$1"/> a nabirukan, wenno awan ti pangrikep ti </ref>', + 'cite_error_references_group_mismatch' => 'Ti etiketa ti <ref> iday <references> ket addan ti kasinnungat a gupit ti grupo ti "$1".', + 'cite_error_references_missing_group' => 'Ti etiketa ti <ref> a naipalawag idiay <references> ket addaan ti gupit ti grupo ti "$1" a saan nga agparang iti napalabas a testo.', + 'cite_error_references_missing_key' => 'Ti etiketa ti <ref> nga addaan ti nagan ti "$1" a naipalawag idiay <references> ket saan a nausar iti napalabas a testo.', + 'cite_error_references_no_key' => 'Ti etiketa ti <ref> a naipalawag idiay <references> ket awan ti nainagan a gupit.', + 'cite_error_empty_references_define' => 'Ti etiketa ti <ref> a naipalawag idiay <references> nga addaan ti nagan a "$1" ket awan ti nagyanna.', + 'cite_references_link_accessibility_label' => 'Mapan iti ngato', + 'cite_references_link_many_accessibility_label' => 'Mapan aginggana iti:', ); /** Ido (Ido) @@ -1878,6 +1896,8 @@ $messages['ja'] = array( 'cite_error_references_missing_key' => '<references> で定義されている <ref> タグ (name="$1") は、先行するテキスト内で使用されていません。', 'cite_error_references_no_key' => '<references> で定義されている <ref> タグに name 属性がありません。', 'cite_error_empty_references_define' => '<references> で定義されている <ref> タグ (name="$1") に内容がありません。', + 'cite_references_link_accessibility_label' => '元の位置に戻る', + 'cite_references_link_many_accessibility_label' => '以下の位置に戻る:', ); /** Jutish (jysk) @@ -1895,6 +1915,7 @@ $messages['jut'] = array( ); /** Javanese (Basa Jawa) + * @author Bennylin * @author Iwan Novirion * @author Meursault2004 * @author NoiX180 @@ -1925,10 +1946,12 @@ Tambahaké katemton nèng layang [[MediaWiki:$2]].', ora ditemokaké tèks kanggo ref mawa jeneng $1', 'cite_error_included_ref' => 'Panutupan </ref> kélangan tag <ref>', 'cite_error_refs_without_references' => 'Tag <ref> ditemokaké, nanging tag <references/> ora ditemokaké', - 'cite_error_group_refs_without_references' => 'Tag <ref> ditemokaké kanggo paguyuban ajeneng "$1", nanging tag <references group="$1"/> sing ana kaitané ora ditemokaké', # Fuzzy + 'cite_error_group_refs_without_references' => 'Tag <ref> ditemokaké kanggo paguyuban ajeneng "$1", nanging tag <references group="$1"/> sing ana kaitané ora ditemokaké, utawa tag panutup </ref> ora diwénéhi', 'cite_error_references_group_mismatch' => '<ref> tandha <references> nduwèni atribut klompok sing marai konflik "$1".', 'cite_error_references_missing_group' => '<ref> tag sing didhèfinisikaké <references> nduwèni atribut klompok "$1" sing ora njedhul sing tèks sakdurungé.', 'cite_error_references_missing_key' => '<ref> tag sing didhefinisikaké mawa jeneng "$1" <references> ora dianggo nèng tèks sakdurungé.', + 'cite_error_references_no_key' => 'Tag <ref> yang didefinisikan di di <references> tidak memiliki nama atribut.', + 'cite_error_empty_references_define' => 'Tag <ref> yang didefinisikan di di <references> dengan nama "$1" tidak memiliki isi.', 'cite_reference_link_key_with_num' => '$1_$2', 'cite_reference_link_prefix' => 'cite_ref-', 'cite_references_link_prefix' => 'cite_note-', @@ -1939,6 +1962,8 @@ ora ditemokaké tèks kanggo ref mawa jeneng $1', 'cite_references_link_many_format_backlink_labels' => 'a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz', 'cite_references_link_many_sep' => ' ', 'cite_references_link_many_and' => ' ', + 'cite_references_link_accessibility_label' => 'Mencolot munggah', + 'cite_references_link_many_accessibility_label' => 'Mencolot munggah menyang:', ); /** Georgian (ქართული) @@ -1971,7 +1996,7 @@ $messages['ka'] = array( სქოლიოსათვის $1 არ არის მითითებული ტექსტი', 'cite_error_included_ref' => 'დამხურავი ტეგი </ref> დაკარგულია', 'cite_error_refs_without_references' => 'არსებული ტეგისათვის <ref> ვერ მოიძებნა შესაბამისი ტეგი <references/>', - 'cite_error_group_refs_without_references' => 'ჯგუფი „$1“ არსებული ტეგებისათვის <ref> ვერ მოიძებნა შესაბამისი ტეგი <references group="$1"/>', # Fuzzy + 'cite_error_group_refs_without_references' => 'ჯგუფი „$1“ არსებული ტეგებისათვის <ref> ვერ მოიძებნა შესაბამისი ტეგი <references group="$1"/>, ან გამოტოვებულია დამხურავი ტეგი </ref>', 'cite_error_references_group_mismatch' => 'ტეგს <ref> <references>-ში გააჩნია ატრიბუტთა კონფლიქტური ჯგუფები „$1“.', 'cite_error_references_missing_group' => 'ტეგს <ref>, განმარტებულს <references>-ში, გააჩნია ჯგუფის ატრიბუტი „$1“, რომელიც ადრეულ ტექსტში არ მოიხსენიება.', 'cite_error_references_missing_key' => 'ტეგი <ref> სახელად „$1“, გარკვეული <references>-ში, არ გამოიყენება წინა ტექსტში.', @@ -1999,18 +2024,38 @@ $messages['kk-arab'] = array( ); /** Kazakh (Cyrillic script) (қазақша (кирил)‎) + * @author Arystanbek * @author Kaztrans */ $messages['kk-cyrl'] = array( - 'cite_error' => 'Дәйексөз алу $1 қатесі', - 'cite_error_ref_numeric_key' => 'Жарамсыз <ref> белгішесі; атау кәдімгі бүтін сан болуы мүмкін емес, сиппатауыш атау қолданыңыз', - 'cite_error_ref_no_key' => 'Жарамсыз <ref> белгішесі; мағлұматсыз түсініктемелерде атау болуы қажет', - 'cite_error_ref_too_many_keys' => 'Жарамсыз <ref> белгіше; жарамсыз атаулар, мысалы, тым көп', - 'cite_error_ref_no_input' => 'Жарамсыз <ref> белгіше; атаусыз түсініктемелерде мағлұматы болуы қажет', - 'cite_error_references_invalid_parameters' => 'Жарамсыз <references> белгіше; еш баптар рұқсат етілмейді, былай <references /> қолданыңыз', - 'cite_error_references_no_backlink_label' => 'Қосымша белгілердің саны бітті, одан әрі көбірек [[MediaWiki:Cite_references_link_many_format_backlink_labels]] жүйе хабарында белгілеңіз', # Fuzzy + 'cite-desc' => 'Сілтемелер үшін және белгішелерін қолданыңыз', + 'cite_error' => 'Дереккөз алу қатесі: $1', + 'cite_error_ref_numeric_key' => 'Жарамсыз <ref> белгішесі; +атау кәдімгі бүтін сан болуы мүмкін емес. Сипатауыш атау қолданыңыз', + 'cite_error_ref_no_key' => 'Жарамсыз <ref> белгішесі; +мағлұматсыз дерекөздерде атау болуы қажет', + 'cite_error_ref_too_many_keys' => 'Жарамсыз <ref> белгіше; +жарамсыз атаулар, мысалы, тым көп', + 'cite_error_ref_no_input' => 'Жарамсыз <ref> белгіше; +атаусыз дереккөздерде мағлұматы болуы қажет', + 'cite_error_references_invalid_parameters' => 'Жарамсыз <references> белгіше; +еш параметр рұқсат етілмейді, +былай <references /> қолданыңыз', + 'cite_error_references_invalid_parameters_group' => 'Жарамсыз <references> тегі; +тек "group" параметрін рұқсат етеді. +Келесідей қолданыңыз: <references />, or <references group="..." />', + 'cite_error_references_no_backlink_label' => 'Өзгертпелі белгілердің саны бітті, одан әрі көбірек [[MediaWiki:Cite references link many format backlink labels]] жүйе хабарында белгілеңіз', + 'cite_error_no_link_label_group' => '"$1" тобы үшін өзгертпелі сілтеме белгілері бітті. +Define more in the [[MediaWiki:$2]] message.', + 'cite_error_references_no_text' => 'Жарамсыз <ref> тегі; +no text was provided for refs named $1', + 'cite_error_included_ref' => '<ref> тегін </ref> тегімен жабуды қажет етеді', + 'cite_error_refs_without_references' => '<ref> тегі бар, бірақ <references/> тегі табылмады', + 'cite_error_group_refs_without_references' => '"$1" деп аталған дереккөз тобында <ref> тегі бар, бірақ тиісті <references group="$1"/> тегі табылмады, немесе </ref> жабу тегін қажет етеді', 'cite_references_link_one' => '
  • [[#$2|↑]] $3
  • ', 'cite_references_link_many' => '
  • ↑ $2 $3
  • ', + 'cite_references_link_accessibility_label' => 'Жоғарыға көтеріліңіз', + 'cite_references_link_many_accessibility_label' => 'Мынаған өту:', ); /** Kazakh (Latin script) (qazaqşa (latın)‎) @@ -2110,7 +2155,7 @@ Et wohr keine Tex aanjejovve för de <ref>s met dämm Name „$1“.', 'cite_error_included_ref' => 'Hee för dat <ref> ham_mer kei zopaß </ref>', 'cite_error_refs_without_references' => 'Et sinn_er <ref>-Befähle en dä Sigg, ävver mer han keine <references/>-Befähl jefunge.', - 'cite_error_group_refs_without_references' => 'Et sinn_er <ref>-Befähle för de jrop „$1“ en hee dä Sigg, ävver mer han keine <references group="$1"/>-Befähl jefunge.', # Fuzzy + 'cite_error_group_refs_without_references' => 'Et sinn_er <ref>-Befähle för de Jrop „$1“ en heh dä Sigg, ävver mer han keine <references group="$1"/>-Befähl jefonge, udder dä Befähl </ref> zom zohmaache es nit doh.', 'cite_error_references_group_mismatch' => 'Dä <ref> Befähl en <references> hät en widerschpröschlesche Jroppe-Eijeschaff „$1“.', 'cite_error_references_missing_group' => 'Dä <ref> Befähl, aanjejoove em Befähl <references>, hät en Jroppe-Eijeschaff „$1“, di ävver em Täx doför nit vörjekumme es.', 'cite_error_references_missing_key' => 'Dä <ref> Befähl mem Naame „$1“, aanjejoove em Befähl <references>, es em Täx doför nit vörjekumme.', @@ -2120,6 +2165,8 @@ Et wohr keine Tex aanjejovve för de 'cite_reference_link_prefix' => 'fohss_noht_betreck_', 'cite_references_link_prefix' => 'fohss_noht_nommer_', 'cite_references_link_many_and' => ' ', + 'cite_references_link_accessibility_label' => 'Jangk noh bovve', + 'cite_references_link_many_accessibility_label' => 'Jangk noh bovve op:', ); /** Cornish (kernowek) @@ -2195,6 +2242,17 @@ Doe kans d\'r mier insjtelle in \'t sysyeemberich [[MediaWiki:$2]] 'De tag <ref> dae is gedefinieerd in <references> mit de naam "$1" haet geinen inhawd.', ); +/** لوری (لوری) + * @author Bonevarluri + * @author Mogoeilor + */ +$messages['lrc'] = array( + 'cite-desc' => ' و <سرچشمه یا/> tags,و تگیا نه د گوتنیا اضاف بکید', + 'cite_error' => 'خطا جاگه:$1', + 'cite_references_link_accessibility_label' => 'بالا پرسن', + 'cite_references_link_many_accessibility_label' => 'پرستن د', +); + /** Lithuanian (lietuvių) * @author Garas * @author Homo @@ -2314,6 +2372,7 @@ $messages['mk'] = array( 'cite_error_references_missing_key' => 'Ознаката <ref> со име „$1“ определена во <references> не се користи во претходен текст.', 'cite_error_references_no_key' => 'Ознаката <ref> определена во <referencesgt; нема именски атрибут.', 'cite_error_empty_references_define' => 'Ознаката <ref> определена во <references> со име „$1“ нема содржина.', + 'cite_references_link_many_format_backlink_labels' => 'а б в г д ѓ е ж з ѕ и ј к л љ м н њ о п р с т ќ у ф х ц ч џ ш аа аб ав аг ад аѓ ае аж аз аѕ аи ај ак ал аљ ам ан ањ ао ап ар ас ат аќ ау аф ах ац ач аџ аш ба бб бв бг бд бѓ бе бж бз бѕ би бј бк бл бљ бм бн бњ бо бп бр бс бт бќ бу бф бх бц бч бџ бш ва вб вв вг вд вѓ ве вж вз бѕ ви вј вк вл вљ вм вн вњ во вп вр вс вт вќ ву вф вх вц вч вџ вш га гб гв гг гд гѓ ге гж гз гѕ ги гј гк гл гљ гм гн гњ го гп гр гс гт гќ гу гф гх гц гч гџ гш да дб дв дг дд дѓ де дж дз дѕ ди дј дк дл дљ дм дн дњ до дп др дс дт дќ ду дф дх дц дч дџ дш ѓа ѓб ѓв ѓг ѓд ѓе ѓж ѓз ѓѕ ѓи ѓј ѓк ѓл ѓљ ѓм ѓн ѓњ ѓо ѓп ѓр ѓс ѓт ѓќ ѓу ѓф ѓх ѓц ѓч ѓџ ѓш еа еб ев ег ед еѓ ее еж ез еѕ еи еј ек ел ељ ем ен ењ ео еп ер ес ет еќ еу еф ех ец еч еџ еш жа жб жв жг жд жѓ же жж жз жѕ жи жј жк жл жљ жм жн жњ жо жп жр жс жт жќ жу жф жх жц жч жџ жш за зб зв зг зд зѓ зе зж зз зѕ зи зј зк зл зљ зм зн зњ зо зп зр зс зт зќ зу зф зх зц зч зџ зш ѕа ѕб ѕв ѕг ѕд ѕѓ ѕе ѕж ѕз ѕѕ ѕи ѕј ѕк ѕл ѕљ ѕм ѕн ѕњ ѕо ѕп ѕр ѕс ѕт ѕќ ѕу ѕф ѕх ѕц ѕч ѕџ ѕш иа иб ив иг ид иѓ ие иж из иѕ ии иј ик ил иљ им ин ињ ио ип ир ис ит иќ иу иф их иц ич иџ иш ја јб јв јг јд јѓ је јж јз јѕ ји јј јк јл јљ јм јн јњ јо јп јр јс јт јќ ју јф јх јц јч јџ јш ка кб кв кг кд кѓ ке кж кз кѕ ки кј кк кл кљ км кн књ ко кп кр кс кт кќ ку кф кх кц кч кџ кш ла лб лв лг лд лѓ ле лж лз лѕ ли лј лк лл лљ лм лн лњ ло лп лр лс лт лќ лу лф лх лц лч лџ лш ља љб љв љг љд љѓ ље љж љз љѕ љи љј љк љл љљ љм љн љњ љо љп љр љс љт љќ љу љф љх љц љч љџ љш ма мб мв мг мд мѓ ме мж мз мѕ ми мј мк мл мљ мм мн мњ мо мп мр мс мт мќ му мф мх мц мч мџ мш на нб нв нг нд нѓ не нж нз нѕ ни нј нк нл нљ нм нн нњ но нп нр нс нт нќ ну нф нх нц нч нџ нш ња њб њв њг њд њѓ ње њж њз њѕ њи њј њк њл њљ њм њн њњ њо њп њр њс њт њќ њу њф њх њц њч њџ њш оа об ов ог од оѓ ое ож оз оѕ ои ој ок ол ољ ом он оњ оо оп ор ос от оќ оу оф ох оц оч оџ ош па пб пв пг пд пѓ пе пж пз пѕ пи пј пк пл пљ пм пн пњ по пп пр пс пт пќ пу пф пх пц пч пџ пш ра рб рв рг рд рѓ ре рж рз рѕ ри рј рк рл рљ рм рн рњ ро рп рр рс рт рќ ру рф рх рц рч рџ рш са сб св сг сд сѓ се сж сз сѕ си сј ск сл сљ см сн сњ со сп ср сс ст сќ су сф сх сц сч сџ сш та тб тв тг тд тѓ те тж тз тѕ ти тј тк тл тљ тм тн тњ то тп тр тс тт тќ ту тф тх тц тч тџ тш ќа ќб ќв ќг ќд ќѓ ќе ќж ќз ќѕ ќи ќј ќк ќл ќљ ќм ќн ќњ ќо ќп ќр ќс ќт ќќ ќу ќф ќх ќц ќч ќџ ќш уа уб ув уг уд уѓ уе уж уз уѕ уи уј ук ул уљ ум ун уњ уо уп ур ус ут уќ уу уф ух уц уч уџ уш фа фб фв фг фд фѓ фе фж фз фѕ фи фј фк фл фљ фм фн фњ фо фп фр фс фт фќ фу фф фх фц фч фџ фш ха хб хв хг хд хѓ хе хж хз хѕ хи хј хк хл хљ хм хн хњ хо хп хр хс хт хќ ху хф хх хц хч хџ хш ца цб цв цг цд цѓ це цж цз цѕ ци цј цк цл цљ цм цн цњ цо цп цр цс цт цќ цу цф цх цц цч цџ цш ча чб чв чг чд чѓ че чж чз чѕ чи чј чк чл чљ чм чн чњ чо чп чр чс чт чќ чу чф чх чц чч чџ чш џа џб џв џг џд џѓ џе џж џз џѕ џи џј џк џл џљ џм џн џњ џо џп џр џс џт џќ џу џф џх џц џч џџ џш ша шб шв шг шд шѓ ше шж шз шѕ ши шј шк шл шљ шм шн шњ шо шп шр шс шт шќ шу шф шх шц шч шџ шш', 'cite_references_link_accessibility_label' => 'Следно', 'cite_references_link_many_accessibility_label' => 'Отиди кај:', ); @@ -2353,6 +2412,8 @@ $messages['ml'] = array( 'cite_error_empty_references_define' => ' <references> ആവശ്യത്തിനായി "$1" എന്ന പേരിൽ നിർ‌വചിക്കപ്പെട്ട <ref> റ്റാഗിന് ഉള്ളടക്കമൊന്നുമില്ല.', 'cite_reference_link_prefix' => 'ഉദ്ധരിണി_അവലംബം-', 'cite_references_link_prefix' => 'ഉദ്ധരിണി_കുറിപ്പ്-', + 'cite_references_link_accessibility_label' => 'മുകളിലേയ്ക്ക്', + 'cite_references_link_many_accessibility_label' => 'മുകളിൽ ഇവിടേയ്ക്ക്:', ); /** Mongolian (монгол) @@ -2370,7 +2431,7 @@ $messages['mn'] = array( * @author V.narsikar */ $messages['mr'] = array( - 'cite-desc' => ' हे दोन संदर्भ देण्यासाठी वापरण्यात येणारे शब्द वाढविले जातील.', + 'cite-desc' => ' हे दोन संदर्भ देण्यासाठी वापरण्यात येणारे शब्द जोडल्या जातील.', 'cite_error' => 'त्रूटी उधृत करा: $1', 'cite_error_ref_numeric_key' => '<ref> चुकीचा कोड; नाव हे पूर्णांकी संख्या असू शकत नाही, कृपया माहितीपूर्ण शीर्षक द्या', 'cite_error_ref_no_key' => '<ref> चुकीचा कोड; रिकाम्या संदर्भांना नाव असणे गरजेचे आहे', @@ -2383,14 +2444,17 @@ $messages['mr'] = array( 'cite_error_no_link_label_group' => '"$1" करिता नमूदकेलेल्या कस्टम लिंक खूणा संपल्या . [[MediaWiki:$2]] संदेशात अधिक खूणा नमूद करा', 'cite_error_references_no_text' => '<ref> चुकीचा कोड; $1 नावाने दिलेल्या संदर्भांमध्ये काहीही माहिती नाही', - 'cite_error_included_ref' => '<ref> ला बंद करणारी </ref> ही खूण गायब आहे.', - 'cite_error_refs_without_references' => 'पानामधे <ref> (संदर्भ) आहे, परंतु <references/> ({{संदर्भयादी}}) सापडले नाही. {{संदर्भयादी}} असल्याशिवाय पानाच्या तळाशी संदर्भांचे तपशील दिसणार नाहीत.', + 'cite_error_included_ref' => '<ref> ला बंद करणारी </ref> ही खूणपताका गायब आहे.', + 'cite_error_refs_without_references' => "या पानामधे \"<ref>\" ही खूणपताका(संदर्भटॅग) आहे, परंतु <references/> अथवा {{ +संदर्भयादी}}या पैकी एकही लावण्यात आलेले नाही.''' या पानात \"{{संदर्भयादी}}\" हा साचा कॉपीपेस्ट करावा''' ''कारण,त्याशिवाय पानाच्या तळाशी संदर्भांचे तपशील दिसणार नाहीत.''", 'cite_error_group_refs_without_references' => '"$1" नावाच्या गटाकरिता <ref>खूणपताका उपलब्ध आहेत, पण संबंधीत <references group="$1"/> खूण मिळाली नाही.', - 'cite_error_references_group_mismatch' => 'tag in <references>मधील <ref> खूणांना खटका उडणारे group attribute "$1" आहे.', - 'cite_error_references_missing_group' => 'गट "$1" मधील <ref> ट्याग <references> ह्या पूर्वी वापल्या गेलेले नाही', - 'cite_error_references_missing_key' => '<references> ह्या मध्ये सांगितलेला <ref> "$1" ह्या नावाचा ट्याग ह्या पूर्वी वापरण्यात आलेला नाही.', - 'cite_error_references_no_key' => '<ref> ट्याग मध्ये विशारद गोष्टींना <references> ला नाम गुणधर्म नाहीत', - 'cite_error_empty_references_define' => '<ref> ट्याग मध्ये विशारद गोष्टीं <references> ज्या "$1" ह्या नावाने संबोधल्या आहेत त्यात माहिती नाही', + 'cite_error_references_group_mismatch' => '<references>मधील खूणपताकेस<ref> खूणांशी विसंवाद असणारे group attribute "$1" आहे.', + 'cite_error_references_missing_group' => 'गट "$1" मधील <ref> खूणपताका <references> ह्या पूर्वी वापल्या गेलेल्या नाहीत.', + 'cite_error_references_missing_key' => '<references> ह्या मध्ये टाकलेला <ref> "$1" ह्या नावाची खूणपताका ह्या पूर्वी वापरण्यात आलेली नाही.', + 'cite_error_references_no_key' => '<ref>खूणपताकेत नमूद गोष्टींना <references> ला नाम-गुणधर्म नाहीत.', + 'cite_error_empty_references_define' => '<ref>खूणपताकेत नमूद गोष्टींना, <references> ज्या "$1" ह्या नावाने संबोधल्या आहेत, त्यात माहिती नाही.', + 'cite_references_link_accessibility_label' => 'वर उडी मारा', + 'cite_references_link_many_accessibility_label' => 'ला वर उडी मारा:', ); /** Malay (Bahasa Melayu) @@ -2508,6 +2572,7 @@ $messages['nds-nl'] = array( ); /** Dutch (Nederlands) + * @author Flightmare * @author Niels * @author Romaine * @author Siebrand @@ -2544,6 +2609,8 @@ er is geen tekst opgegeven voor refs met de naam $1', 'cite_error_references_missing_key' => 'De tag <ref> met de naam "$1" gedefinieerd in <references> wordt niet eerder in de tekst gebruikt.', 'cite_error_references_no_key' => 'De tag <ref> die is gedefinieerd in <references> heeft geen eigenschapsnaam.', 'cite_error_empty_references_define' => 'De tag <ref> die is gedefinieerd in <references> met de naam "$1" heeft geen inhoud.', + 'cite_references_link_accessibility_label' => 'Omhoog', + 'cite_references_link_many_accessibility_label' => 'Omhoog naar:', ); /** Norwegian Nynorsk (norsk nynorsk) @@ -2596,6 +2663,8 @@ pas de tèxte per las referéncias nomenadas $1.', 'cite_error_references_missing_key' => 'La balisa <ref> amb lo nom « $1 » definida dins <references> es pas utilizada dins lo tèxte precedent.', 'cite_error_references_no_key' => 'La balisa <ref> definida dins <references> a pas de nom d’atribut.', 'cite_error_empty_references_define' => 'La balisa <ref> definida dins <references> amb lo nom « $1 » a pas de contengut.', + 'cite_references_link_accessibility_label' => 'Anar', + 'cite_references_link_many_accessibility_label' => 'Anar a :', ); /** Oriya (ଓଡ଼ିଆ) @@ -2784,12 +2853,14 @@ Defina mais na mensagem [[MediaWiki:$2]].', 'cite_error_references_no_text' => 'Tag <ref> inválida; não foi fornecido texto para as refs chamadas $1', 'cite_error_included_ref' => '</ref> de fecho em falta, para o elemento <ref>', 'cite_error_refs_without_references' => 'existem tags <ref>, mas nenhuma tag <references/> foi encontrada', - 'cite_error_group_refs_without_references' => 'existem tags <ref> para um grupo chamado "$1", mas nenhuma tag <references group="$1"/> correspondente foi encontrada', # Fuzzy + 'cite_error_group_refs_without_references' => 'existem marcas <ref> para um grupo chamado "$1", mas nenhuma marca <references group="$1"/> correspondente foi encontrada (ou uma marca de fechamento </ref> está faltando)', 'cite_error_references_group_mismatch' => 'O elemento <ref> em <references> tem o atributo de grupo "$1", que está em conflito com o de <references>.', 'cite_error_references_missing_group' => 'O elemento <ref> definido em <references> tem o atributo de grupo "$1", que não aparece no texto anterior.', 'cite_error_references_missing_key' => 'A etiqueta <ref> com nome "$1" definida em <references> não é utilizada no texto acima.', 'cite_error_references_no_key' => 'O elemento <ref> definido em <references> não tem um atributo de nome.', 'cite_error_empty_references_define' => 'O elemento <ref> definido em <references> com o nome "$1" não tem conteúdo.', + 'cite_references_link_accessibility_label' => 'Ir para cima', + 'cite_references_link_many_accessibility_label' => 'Ir para:', ); /** Brazilian Portuguese (português do Brasil) @@ -3114,6 +3185,13 @@ Usari <references /> oppuru <references group="..." 'cite_references_link_many_format_backlink_labels' => 'a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz', ); +/** Serbo-Croatian (srpskohrvatski / српскохрватски) + * @author Kolega2357 + */ +$messages['sh'] = array( + 'cite_error' => 'Greška citiranja $1; $2', # Fuzzy +); + /** Sinhala (සිංහල) * @author Budhajeewa * @author Thameera123 @@ -3261,6 +3339,7 @@ asnjë tekst nuk u dha për refs e quajtura $1', ); /** Serbian (Cyrillic script) (српски (ћирилица)‎) + * @author Milicevic01 * @author Millosh * @author Rancher * @author Михајло Анђелковић @@ -3286,13 +3365,14 @@ $messages['sr-ec'] = array( 'cite_references_link_one' => '
  • [[#$2|↑]] $3
  • ', 'cite_references_link_many' => '
  • ↑ $2 $3
  • ', 'cite_references_link_many_format' => '[[#$1|$2]]', - 'cite_references_link_many_format_backlink_labels' => 'a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz', + 'cite_references_link_many_format_backlink_labels' => 'а б в г д ђ е ж з и ј к л љ м н њ о п р с т ћ у ф х ц ч џ ш аа аб ав аг ад ађ ае аж аз аи ај ак ал аљ ам ан ањ ао ап ар ас ат аћ ау аф ах ац ач аџ аш ба бб бв бг бд бђ бе бж бз би бј бк бл бљ бм бн бњ бо бп бр бс бт бћ бу бф бх бц бч бџ бш ва вб вв вг вд вђ ве вж вз ви вј вк вл вљ вм вн вњ во вп вр вс вт вћ ву вф вх вц вч вџ вш га гб гв гг гд гђ ге гж гз ги гј гк гл гљ гм гн гњ го гп гр гс гт гћ гу гф гх гц гч гџ гш да дб дв дг дд дђ де дж дз ди дј дк дл дљ дм дн дњ до дп др дс дт дћ ду дф дх дц дч дџ дш ђа ђб ђв ђг ђд ]] ђе ђж ђз ђи ђј ђк ђл ђљ ђм ђн ђњ ђо ђп ђр ђс ђт ђћ ђу ђф ђх ђц ђч ђџ ђш еа еб ев ег ед еђ ее еж ез еи еј ек ел ељ ем ен ењ ео еп ер ес ет ећ еу еф ех ец еч еџ еш жа жб жв жг жд жђ же жж жз жи жј жк жл жљ жм жн жњ жо жп жр жс жт жћ жу жф жх жц жч жџ жш за зб зв зг зд зђ зе зж зз зи зј зк зл зљ зм зн зњ зо зп зр зс зт зћ зу зф зх зц зч зџ зш иа иб ив иг ид иђ ие иж из ии иј ик ил иљ им ин ињ ио ип ир ис ит ић иу иф их иц ич иџ иш ја јб јв јг јд јђ је јж јз ји јј јк јл јљ јм јн јњ јо јп јр јс јт јћ ју јф јх јц јч јџ јш ка кб кв кг кд кђ ке кж кз ки кј кк кл кљ км кн књ ко кп кр кс кт кћ ку кф кх кц кч кџ кш ла лб лв лг лд лђ ле лж лз ли лј лк лл лљ лм лн лњ ло лп лр лс лт лћ лу лф лх лц лч лџ лш ља љб љв љг љд љђ ље љж љз љи љј љк љл љљ љм љн љњ љо љп љр љс љт љћ љу љф љх љц љч љџ љш ма мб мв мг мд мђ ме мж мз ми мј мк мл мљ мм мн мњ мо мп мр мс мт мћ му мф мх мц мч мџ мш на нб нв нг нд нђ не нж нз ни нј нк нл нљ нм нн нњ но нп нр нс нт нћ ну нф нх нц нч нџ нш ња њб њв њг њд њђ ње њж њз њи њј њк њл њљ њм њн њњ њо њп њр њс њт њћ њу њф њх њц њч њџ њш оа об ов ог од ођ ое ож оз ои ој ок ол ољ ом он оњ оо оп ор ос от оћ оу оф ох оц оч оџ ош па пб пв пг пд пђ пе пж пз пи пј пк пл пљ пм пн пњ по пп пр пс пт пћ пу пф пх пц пч пџ пш ра рб рв рг рд рђ ре рж рз ри рј рк рл рљ рм рн рњ ро рп рр рс рт рћ ру рф рх рц рч рџ рш са сб св сг сд сђ се сж сз си сј ск сл сљ см сн сњ со сп ср сс ст сћ су сф сх сц сч сџ сш та тб тв тг тд тђ те тж тз ти тј тк тл тљ тм тн тњ то тп тр тс тт тћ ту тф тх тц тч тџ тш ћа ћб ћв ћг ћд ћђ ће ћж ћз ћи ћј ћк ћл ћљ ћм ћн ћњ ћо ћп ћр ћс ћт ћћ ћу ћф ћх ћц ћч ћџ ћш уа уб ув уг уд уђ уе уж уз уи уј ук ул уљ ум ун уњ уо уп ур ус ут ућ уу уф ух уц уч уџ уш фа фб фв фг фд фђ фе фж фз фи фј фк фл фљ фм фн фњ фо фп фр фс фт фћ фу фф фх фц фч фџ фш ха хб хв хг хд хђ хе хж хз хи хј хк хл хљ хм хн хњ хо хп хр хс хт хћ ху хф хх хц хч хџ хш ца цб цв цг цд цђ це цж цз ци цј цк цл цљ цм цн цњ цо цп цр цс цт цћ цу цф цх цц цч цџ цш ча чб чв чг чд чђ че чж чз чи чј чк чл чљ чм чн чњ чо чп чр чс чт чћ чу чф чх чц чч чџ чш џа џб џв џг џд џђ џе џж џз џи џј џк џл џљ џм џн џњ џо џп џр џс џт џћ џу џф џх џц џч џџ џш ша шб шв шг шд шђ ше шж шз ши шј шк шл шљ шм шн шњ шо шп шр шс шт шћ шу шф шх шц шч шџ шш', # Fuzzy 'cite_references_link_many_sep' => ' ', 'cite_references_link_many_and' => ' ', ); /** Serbian (Latin script) (srpski (latinica)‎) * @author Michaello + * @author Milicevic01 */ $messages['sr-el'] = array( 'cite-desc' => 'Dodaje i oznake za citiranje.', @@ -3315,7 +3395,7 @@ $messages['sr-el'] = array( 'cite_references_link_one' => '
  • [[#$2|↑]] $3
  • ', 'cite_references_link_many' => '
  • ↑ $2 $3
  • ', 'cite_references_link_many_format' => '[[#$1|$2]]', - 'cite_references_link_many_format_backlink_labels' => 'a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz', + 'cite_references_link_many_format_backlink_labels' => 'a b v g d đ e ž z i j k l lj m n nj o p r s t ć u f h c č dž š aa ab av ag ad ađ ae až az ai aj ak al alj am an anj ao ap ar as at ać au af ah ac ač adž aš ba bb bv bg bd bđ be bž bz bi bj bk bl blj bm bn bnj bo bp br bs bt bć bu bf bh bc bč bdž bš va vb vv vg vd vđ ve vž vz vi vj vk vl vlj vm vn vnj vo vp vr vs vt vć vu vf vh vc vč vdž vš ga gb gv gg gd gđ ge gž gz gi gj gk gl glj gm gn gnj go gp gr gs gt gć gu gf gh gc gč gdž gš da db dv dg dd dđ de dž dz di dj dk dl dlj dm dn dnj do dp dr ds dt dć du df dh dc dč ddž dš đa đb đv đg đd ]] đe đž đz đi đj đk đl đlj đm đn đnj đo đp đr đs đt đć đu đf đh đc đč đdž đš ea eb ev eg ed eđ ee ež ez ei ej ek el elj em en enj eo ep er es et eć eu ef eh ec eč edž eš ža žb žv žg žd žđ že žž žz ži žj žk žl žlj žm žn žnj žo žp žr žs žt žć žu žf žh žc žč ždž žš za zb zv zg zd zđ ze zž zz zi zj zk zl zlj zm zn znj zo zp zr zs zt zć zu zf zh zc zč zdž zš ia ib iv ig id iđ ie iž iz ii ij ik il ilj im in inj io ip ir is it ić iu if ih ic ič idž iš ja jb jv jg jd jđ je jž jz ji jj jk jl jlj jm jn jnj jo jp jr js jt jć ju jf jh jc jč jdž jš ka kb kv kg kd kđ ke kž kz ki kj kk kl klj km kn knj ko kp kr ks kt kć ku kf kh kc kč kdž kš la lb lv lg ld lđ le lž lz li lj lk ll llj lm ln lnj lo lp lr ls lt lć lu lf lh lc lč ldž lš lja ljb ljv ljg ljd ljđ lje ljž ljz lji ljj ljk ljl ljlj ljm ljn ljnj ljo ljp ljr ljs ljt ljć lju ljf ljh ljc ljč ljdž ljš ma mb mv mg md mđ me mž mz mi mj mk ml mlj mm mn mnj mo mp mr ms mt mć mu mf mh mc mč mdž mš na nb nv ng nd nđ ne nž nz ni nj nk nl nlj nm nn nnj no np nr ns nt nć nu nf nh nc nč ndž nš nja njb njv njg njd njđ nje njž njz nji njj njk njl njlj njm njn njnj njo njp njr njs njt njć nju njf njh njc njč njdž njš oa ob ov og od ođ oe ož oz oi oj ok ol olj om on onj oo op or os ot oć ou of oh oc oč odž oš pa pb pv pg pd pđ pe pž pz pi pj pk pl plj pm pn pnj po pp pr ps pt pć pu pf ph pc pč pdž pš ra rb rv rg rd rđ re rž rz ri rj rk rl rlj rm rn rnj ro rp rr rs rt rć ru rf rh rc rč rdž rš sa sb sv sg sd sđ se sž sz si sj sk sl slj sm sn snj so sp sr ss st sć su sf sh sc sč sdž sš ta tb tv tg td tđ te tž tz ti tj tk tl tlj tm tn tnj to tp tr ts tt tć tu tf th tc tč tdž tš ća ćb ćv ćg ćd ćđ će ćž ćz ći ćj ćk ćl ćlj ćm ćn ćnj ćo ćp ćr ćs ćt ćć ću ćf ćh ćc ćč ćdž ćš ua ub uv ug ud uđ ue už uz ui uj uk ul ulj um un unj uo up ur us ut uć uu uf uh uc uč udž uš fa fb fv fg fd fđ fe fž fz fi fj fk fl flj fm fn fnj fo fp fr fs ft fć fu ff fh fc fč fdž fš ha hb hv hg hd hđ he hž hz hi hj hk hl hlj hm hn hnj ho hp hr hs ht hć hu hf hh hc hč hdž hš ca cb cv cg cd cđ ce cž cz ci cj ck cl clj cm cn cnj co cp cr cs ct cć cu cf ch cc cč cdž cš ča čb čv čg čd čđ če čž čz či čj čk čl člj čm čn čnj čo čp čr čs čt čć ču čf čh čc čč čdž čš dža džb džv džg džd džđ dže džž džz dži džj džk džl džlj džm džn džnj džo džp džr džs džt džć džu džf džh džc džč dždž džš ša šb šv šg šd šđ še šž šz ši šj šk šl šlj šm šn šnj šo šp šr šs št šć šu šf šh šc šč šdž šš', # Fuzzy 'cite_references_link_many_sep' => ' ', 'cite_references_link_many_and' => ' ', ); @@ -3389,16 +3469,21 @@ Definera fler i [[MediaWiki:$2]]-meddelandet.', ); /** Tamil (தமிழ்) + * @author Jayarathina * @author Shanmugamp7 * @author செல்வா */ $messages['ta'] = array( 'cite-desc' => 'சேர்க்கிறது மற்றும் குறிச்சொற்கள், மேற்கோள்களுக்காக', 'cite_error' => 'பிழை காட்டு: $1', + 'cite_error_references_no_text' => 'செல்லாத <ref> குறிச்சொல்; +$1 என்னும் பெயரில் உள்ள ref குறிச்சொல்லுக்கு உரையேதும் வழங்கப்படவில்லை', + 'cite_error_refs_without_references' => '<ref> குறிச்சொல் உள்ளது, ஆனால் <references/> குறிச்சொல் காணப்படவில்லை', ); /** Telugu (తెలుగు) * @author Chaduvari + * @author Ravichandra * @author Veeven */ $messages['te'] = array( @@ -3411,6 +3496,7 @@ $messages['te'] = array( 'cite_error_references_invalid_parameters' => 'సరైన <references> ట్యాగు కాదు; పారామీటర్లకు కు అనుమతి లేదు, ఈ లోపాన్ని కలుగజేసే ఒక ఉదాహరణ: ', 'cite_error_references_no_backlink_label' => 'మీ స్వంత బ్యాక్‌లింకు లేబుళ్ళు అయిపోయాయి. [[MediaWiki:Cite references link many format backlink labels]] సందేశంలో మరిన్ని లేబుళ్ళను నిర్వచించుకోండి.', 'cite_error_references_no_text' => 'సరైన <ref> కాదు; $1 అనే పేరుగల ref లకు పాఠ్యమేమీ ఇవ్వలేదు', + 'cite_references_link_accessibility_label' => 'పైకి దూకు', ); /** Tajik (Cyrillic script) (тоҷикӣ) @@ -3599,6 +3685,8 @@ sadece "group" parametresine izin verilir. 'cite_error_references_no_key' => "<references>'da tanımlanan <ref> etiketinin hiçbir ad özniteliği yok.", 'cite_error_empty_references_define' => '<references>\'da tanımlanan "$1" adlı <ref> etiketinin içeriği yok.', 'cite_references_link_many_format_backlink_labels' => 'a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz', + 'cite_references_link_accessibility_label' => 'Yukarı git', + 'cite_references_link_many_accessibility_label' => 'Şuraya git:', ); /** Tatar (Cyrillic script) (татарча) diff --git a/extensions/Cite/Cite.php b/extensions/Cite/Cite.php index 4b2f70ff..045bb8cc 100644 --- a/extensions/Cite/Cite.php +++ b/extensions/Cite/Cite.php @@ -18,8 +18,6 @@ if ( ! defined( 'MEDIAWIKI' ) ) */ $wgHooks['ParserFirstCallInit'][] = 'wfCite'; -$wgHooks['BeforePageDisplay'][] = 'wfCiteBeforePageDisplay'; - $wgExtensionCredits['parserhook'][] = array( 'path' => __FILE__, @@ -98,22 +96,4 @@ $wgResourceModules['ext.rtlcite'] = $citeResourceTemplate + array( 'position' => 'top', ); -/** - * @param $out OutputPage - * @param $sk Skin - * @return bool - */ -function wfCiteBeforePageDisplay( $out, &$sk ) { - global $wgCiteEnablePopups; - - $out->addModules( 'ext.cite' ); - if ( $wgCiteEnablePopups ) { - $out->addModules( 'ext.cite.popups' ); - } - - /* RTL support quick-fix module */ - $out->addModuleStyles( 'ext.rtlcite' ); - return true; -} - /**#@-*/ diff --git a/extensions/Cite/Cite_body.php b/extensions/Cite/Cite_body.php index 27432f47..08c60722 100644 --- a/extensions/Cite/Cite_body.php +++ b/extensions/Cite/Cite_body.php @@ -155,6 +155,7 @@ class Cite { * @return string */ function ref( $str, $argv, $parser ) { + global $wgCiteEnablePopups; if ( $this->mInCite ) { return htmlspecialchars( "$str" ); } else { @@ -162,6 +163,12 @@ class Cite { $this->mInCite = true; $ret = $this->guardedRef( $str, $argv, $parser ); $this->mInCite = false; + $parserOutput = $parser->getOutput(); + $parserOutput->addModules( 'ext.cite' ); + if ( $wgCiteEnablePopups ) { + $parserOutput->addModules( 'ext.cite.popups' ); + } + $parserOutput->addModuleStyles( 'ext.rtlcite' ); return $ret; } } diff --git a/extensions/Cite/SpecialCite.alias.php b/extensions/Cite/SpecialCite.alias.php index 8061afcc..cbcdafbb 100644 --- a/extensions/Cite/SpecialCite.alias.php +++ b/extensions/Cite/SpecialCite.alias.php @@ -74,7 +74,7 @@ $specialPageAliases['ce'] = array( 'Cite' => array( 'Дош' ), ); -/** Czech (česky) */ +/** Czech (čeština) */ $specialPageAliases['cs'] = array( 'Cite' => array( 'Citovat' ), ); diff --git a/extensions/Cite/SpecialCite.i18n.php b/extensions/Cite/SpecialCite.i18n.php index 635025d4..79665633 100644 --- a/extensions/Cite/SpecialCite.i18n.php +++ b/extensions/Cite/SpecialCite.i18n.php @@ -395,7 +395,7 @@ $messages['arz'] = array( * @author Gitartha.bordoloi */ $messages['as'] = array( - 'cite_article_desc' => 'এখন [[Special:Cite|উদ্ধৃতি]] পৃষ্ঠা আৰু এটা টুলবক্স লিংক যোগ কৰে', + 'cite_article_desc' => 'এটা [[Special:Cite|উদ্ধৃতি]] পৃষ্ঠা আৰু এটা সা-সৰঞ্জাম লিংক যোগ কৰে', 'cite_article_link' => 'এই পৃষ্ঠাৰ উদ্ধৃতি দিয়ক', 'tooltip-cite-article' => 'এই পৃষ্ঠাখনৰ উদ্ধৃতি দিয়াৰ বিষয়ে তথ্য', 'cite' => '↓উদ্ধৃত', @@ -1014,6 +1014,7 @@ $messages['cdo'] = array( * @author Умар */ $messages['ce'] = array( + 'cite_article_desc' => 'ГӀирсан тӀе туху [[Special:Cite|дешнаш дало]] белхан агӀо а хьажораг а', 'cite_article_link' => 'АгӀонах лаьцна дешнаш дало', 'tooltip-cite-article' => 'ХӀара бу хаам агӀонах лаьцна дешнаш муха дало деза гойтуш', 'cite' => 'Далийнадош', @@ -1048,7 +1049,7 @@ $messages['co'] = array( 'cite_page' => 'Pagina:', ); -/** Czech (česky) +/** Czech (čeština) * @author Beren * @author Li-sung * @author Martin Kozák @@ -1130,7 +1131,7 @@ Při použití [[LaTeX]]ového balíčku url (někde na začátku dokumentu je u ", ); -/** Church Slavic (словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) +/** Church Slavic (словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) * @author ОйЛ */ $messages['cu'] = array( @@ -1285,9 +1286,10 @@ Når du bruger [[LaTeX]] pakkens URL-adressen (\\usepackage{url} et /** German (Deutsch) * @author Kghbln + * @author Purodha */ $messages['de'] = array( - 'cite_article_desc' => 'Ergänzt eine [[Special:Cite|Spezialseite]] als Zitierhilfe sowie einen zugehörigen Link im Bereich Werkzeuge', + 'cite_article_desc' => 'Erweitert das Wiki um eine [[Special:Cite|Spezialseite]] als Zitierhilfe sowie einen Link darauf im Bereich Werkzeuge', 'cite_article_link' => 'Seite zitieren', 'tooltip-cite-article' => 'Hinweis, wie diese Seite zitiert werden kann', 'cite' => 'Zitierhilfe', @@ -1955,6 +1957,77 @@ $messages['frp'] = array( 'cite_submit' => 'Citar', ); +/** Northern Frisian (Nordfriisk) + * @author Murma174 + */ +$messages['frr'] = array( + 'cite_article_desc' => 'Diar komt en nei [[Special:Cite|spezial-sidj]] tu, am sitiarin ianfacher tu maagin, an uk en ferwisang bi a werktjüügen', + 'cite_article_link' => 'Detdiar sidj sitiare', + 'tooltip-cite-article' => 'Hü detdiar sidj sitiaret wurd koon', + 'cite' => 'Sitiare', + 'cite_page' => 'Sidj:', + 'cite_submit' => 'Sitiare', + 'cite_text' => "__NOTOC__ +
    + +== Bibliograafisk dooten för {{FULLPAGENAME}} == + +* Sidj: {{FULLPAGENAME}} +* Skriiwer: {{SITENAME}} contributors +* Ütjden faan: ''{{SITENAME}}, {{int:sitesubtitle}}''. +* Leetst feranrang: {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} {{CURRENTTIME}} UTC +* Ufrepen: {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} {{CURRENTTIME}} UTC +* Permanent URL: {{canonicalurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}} +* Sidjenwerjuun ID: {{REVISIONID}} + +
    + ", +); + /** Friulian (furlan) * @author Klenje * @author MF-Warburg @@ -1989,6 +2062,13 @@ $messages['ga'] = array( 'cite_submit' => 'Luaigh', ); +/** Scottish Gaelic (Gàidhlig) + * @author Akerbeltz + */ +$messages['gd'] = array( + 'cite_article_link' => 'Thoir iomradh air an duilleag seo', +); + /** Galician (galego) * @author Toliño * @author Xosé @@ -3585,6 +3665,7 @@ $messages['kw'] = array( ); /** Latin (Latina) + * @author Autokrator * @author MissPetticoats * @author SPQRobin * @author UV @@ -3592,17 +3673,26 @@ $messages['kw'] = array( $messages['la'] = array( 'cite_article_desc' => ' Addet [[Special:Cite|citation]] specialem paginam et arcam instrumenti', # Fuzzy 'cite_article_link' => 'Hanc paginam citare', + 'tooltip-cite-article' => 'Institutiones de hanc pagina citanda', 'cite' => 'Paginam citare', 'cite_page' => 'Pagina:', 'cite_submit' => 'Citare', ); +/** Ladino (Ladino) + * @author Menachem.Moreira + */ +$messages['lad'] = array( + 'cite_page' => 'Pajina:', +); + /** Luxembourgish (Lëtzebuergesch) * @author Kaffi * @author Robby + * @author Soued031 */ $messages['lb'] = array( - 'cite_article_desc' => "Setzt eng [[Special:Cite|Zitatioun op dëser Spezialsäit]] bäi an e Link an d'Geschiirkëscht", + 'cite_article_desc' => "Setzt eng [[Special:Cite|Zitatioun op dëser Spezialsäit]] bei an e Link an d'Geschiirkëscht", 'cite_article_link' => 'Dës Säit zitéieren', 'tooltip-cite-article' => 'Informatioune wéi een dës Säit zitéiere kann', 'cite' => 'Zitéierhëllef', @@ -3726,10 +3816,15 @@ $messages['lo'] = array( ); /** لوری (لوری) + * @author Bonevarluri * @author Mogoeilor */ $messages['lrc'] = array( + 'cite_article_link' => 'جاگه ای بلگه', + 'tooltip-cite-article' => 'دونسمنیا چه جور دای بلگه جاگر بوئه', + 'cite' => 'جاگه', 'cite_page' => 'بلگه', + 'cite_submit' => 'جاگه', ); /** Lithuanian (lietuvių) @@ -4086,7 +4181,7 @@ $messages['mn'] = array( * @author V.narsikar */ $messages['mr'] = array( - 'cite_article_desc' => 'एक विशेष [[Special:Cite|बाह्यदुवे]] देणारे पान व टूलबॉक्सची लिंक तयार करा', + 'cite_article_desc' => 'एक [[Special:Cite|बाह्यदुवे]] देणारे विशेषपान व साधनपेटीचा दुवा जोडते', 'cite_article_link' => 'हे पान उधृत करा', 'tooltip-cite-article' => 'हे पृष्ठ बघण्यासाठीची माहिती', 'cite' => 'उधृत करा', @@ -5411,6 +5506,16 @@ $messages['sgs'] = array( 'cite_page' => 'Poslapis:', ); +/** Serbo-Croatian (srpskohrvatski / српскохрватски) + * @author Kolega2357 + */ +$messages['sh'] = array( + 'cite_article_link' => 'Citiraj ovaj članak', + 'cite' => 'Citiraj', + 'cite_page' => 'Stranica:', + 'cite_submit' => 'Citiraj - Цитирај', +); + /** Sinhala (සිංහල) * @author Budhajeewa * @author නන්දිමිතුරු @@ -5580,6 +5685,7 @@ When using the [[LaTeX]] package url (\\usepackage{url} somewhere i ); /** Serbian (Cyrillic script) (српски (ћирилица)‎) + * @author Milicevic01 * @author Millosh * @author Rancher * @author Sasa Stefanovic @@ -5588,25 +5694,144 @@ When using the [[LaTeX]] package url (\\usepackage{url} somewhere i */ $messages['sr-ec'] = array( 'cite_article_desc' => 'Додаје посебну страницу за [[Special:Cite|цитирање]] и везу с алаткама', - 'cite_article_link' => 'Библиографски подаци', + 'cite_article_link' => 'Цитирај ову страницу', 'tooltip-cite-article' => 'Информације о томе како цитирати ову страну', - 'cite' => 'цитат', + 'cite' => 'Цитирање', 'cite_page' => 'Страница:', - 'cite_submit' => 'цитат', + 'cite_submit' => 'Цитирај', + 'cite_text' => "__NOTOC__ +
    + +== Библиографски детаљи за страну {{FULLPAGENAME}} == + +* Назив стране: {{FULLPAGENAME}} +* Аутор: {{SITENAME}} сарадници +* Издавач: ''{{SITENAME}}, {{int:sitesubtitle}}''. +* Датум последње ревизије: {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} {{CURRENTTIME}} UTC +* Датум узимања: {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} {{CURRENTTIME}} UTC +* Стални URL: {{fullurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}} +* ID верзије стране: {{REVISIONID}} + +
    +", ); /** Serbian (Latin script) (srpski (latinica)‎) * @author Liangent * @author Michaello + * @author Milicevic01 * @author Жељко Тодоровић */ $messages['sr-el'] = array( 'cite_article_desc' => 'Dodaje specijalnu stranu za [[Special:Cite|citiranje]] i vezu ka oruđima.', - 'cite_article_link' => 'citiranje ove strane', + 'cite_article_link' => 'Citiraj ovu stranicu', 'tooltip-cite-article' => 'Informacije o tome kako citirati ovu stranu', - 'cite' => 'citat', + 'cite' => 'Citiranje', 'cite_page' => 'Stranica:', - 'cite_submit' => 'citat', + 'cite_submit' => 'Citiraj', + 'cite_text' => "__NOTOC__ +
    + +== Bibliografski detalji za stranu {{FULLPAGENAME}} == + +* Naziv strane: {{FULLPAGENAME}} +* Autor: {{SITENAME}} saradnici +* Izdavač: ''{{SITENAME}}, {{int:sitesubtitle}}''. +* Datum poslednje revizije: {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} {{CURRENTTIME}} UTC +* Datum uzimanja: {{CURRENTDAY}} {{CURRENTMONTHNAME}} {{CURRENTYEAR}} {{CURRENTTIME}} UTC +* Stalni URL: {{fullurl:{{FULLPAGENAME}}|oldid={{REVISIONID}}}} +* ID verzije strane: {{REVISIONID}} + +
    +", ); /** Seeltersk (Seeltersk) diff --git a/extensions/Cite/citeParserTests.txt b/extensions/Cite/citeParserTests.txt index 3076eeb6..052cd56a 100644 --- a/extensions/Cite/citeParserTests.txt +++ b/extensions/Cite/citeParserTests.txt @@ -311,16 +311,20 @@ AAAref aBBBnote bCCC[参 1]BBB[注 1]CCC[参 2]

    -
    refs -
    +
    +
    refs +
    +
    1. ref a
    2. ref c
    -
    notes -
    +
    +
    notes +
    +
    1. note b
    2. diff --git a/extensions/ConfirmEdit/Asirra.i18n.php b/extensions/ConfirmEdit/Asirra.i18n.php index 23190c29..451107bb 100644 --- a/extensions/ConfirmEdit/Asirra.i18n.php +++ b/extensions/ConfirmEdit/Asirra.i18n.php @@ -76,10 +76,28 @@ $messages['be-tarask'] = array( * @author Fohanno */ $messages['br'] = array( + 'asirra-desc' => 'Modulenn Asirra evit ConfirmEdit', + 'asirra-edit' => 'Evit sikour da wareziñ ar wiki diouzh ar stroboù emgefre, diuzit ar skeudennoù kizhier er voest dindan :', 'asirra-nojs' => "'''Gweredekait JavaScript, mar plij, hag adkasit ar bajenn.'''", + 'asirra-failed' => 'Diuzit an holl skeudennoù kizhier, mar plij', ); -/** Czech (česky) +/** Catalan (català) + * @author Toniher + */ +$messages['ca'] = array( + 'asirra-desc' => 'Mòdul Asirra de ConfirmEdit', + 'asirra-edit' => 'Per tal de protegir el wiki contra les edicions brosses, us demanem que seleccioneu només les fotos de gats del requadre a continuació:', + 'asirra-addurl' => "La modificació inclou nous enllaços externs. Per tal de protegir el wiki davant d'edicions brossa, us demanem que seleccioneu només les fotos de gots del requadre a continuació:", + 'asirra-badlogin' => 'Per tal de protegir el wiki contra els intents de trencament de contrasenyes, us demanem que seleccioneu només les fotos de gats del requadre a continuació:', + 'asirra-createaccount' => 'Per tal de protegir el wiki contra la creació automatitzada de comptes, us demanem que seleccioneu només les fotos de gats del requadre a continuació:', + 'asirra-createaccount-fail' => 'Identifiqueu correctament els gats.', + 'asirra-create' => 'Per tal de protegir el wiki contra la creació automàtica de pàgines, us demanem que seleccioneu només les fotos de gats del requadre a continuació:', + 'asirra-nojs' => "'''Habilitieu el JavaScript i torneu a enviar la pàgina.'''", + 'asirra-failed' => 'Identifiqueu totes les imatges de gats', +); + +/** Czech (čeština) * @author Vks */ $messages['cs'] = array( @@ -123,19 +141,35 @@ $messages['diq'] = array( /** Spanish (español) * @author Armando-Martin + * @author Ciencia Al Poder */ $messages['es'] = array( 'asirra-desc' => 'Módulo de Asirra para ConfirmEdit', 'asirra-edit' => 'Para ayudar a protegernos contra el spam de edición automática, seleccione sólo las fotos de gatos en el cuadro siguiente:', # Fuzzy - 'asirra-addurl' => 'Su edición incluye nuevos enlaces externos. Para ayudar a protegernos contra el spam automatizado, por favor, seleccione solo las fotos de gato en el cuadro siguiente:', # Fuzzy - 'asirra-badlogin' => 'Para ayudar a protegernos del robo automatizado de contraseñas, seleccione sólo las fotos de gatos en el cuadro siguiente:', # Fuzzy - 'asirra-createaccount' => 'Para ayudar a protegernos contra la creación automatizada de cuentas, seleccione sólo las fotos de gato en el cuadro siguiente:', # Fuzzy + 'asirra-addurl' => 'Tu edición incluye nuevos enlaces externos. Para proteger el wiki contra el spam automatizado, por favor, te pedimos que selecciones solo las fotos de gatos en el cuadro siguiente:', + 'asirra-badlogin' => 'Para proteger el wiki contra el robo automatizado de contraseñas, te pedimos por favor que selecciones únicamente las fotos de gatos en el cuadro siguiente:', + 'asirra-createaccount' => 'Para proteger el wiki contra la creación automatizada de cuentas de usuario, te pedimos por favor que selecciones únicamente las fotos de gatos en el cuadro siguiente:', 'asirra-createaccount-fail' => 'Identifique correctamente los gatos.', - 'asirra-create' => 'Para ayudar a protegernos contra la creación automática de páginas, seleccione sólo las fotos de gato en el cuadro siguiente:', # Fuzzy + 'asirra-create' => 'Para proteger el wiki contra la creación automatizada de páginas, te pedimos por favor que selecciones únicamente las fotos de gatos en el cuadro siguiente:', 'asirra-nojs' => "'''Por favor active JavaScript y vuelva a la página.'''", 'asirra-failed' => 'Identifique todas las imágenes de gatos', ); +/** Persian (فارسی) + * @author Armin1392 + */ +$messages['fa'] = array( + 'asirra-desc' => 'بخش آسیرا برای تایید ویرایش', + 'asirra-edit' => ' برای محافظت ویکی دربرابر ویرایش خودکار اسپم، ما دوستانه از شما درخواست می‌کنیم که تنها عکس‌های گربه را در جعبهٔ زیر انتخاب کنید:', + 'asirra-addurl' => 'ویرایش شما شامل لینک‌های خارجی جدید است.برای محافظت ویکی دربرابر ویرایش خودکار اسپم، ما دوستانه از شما درخواست می‌کنیم که تنها عکس‌های گربه را در جعبهٔ زیر انتخاب کنید:', + 'asirra-badlogin' => 'برای محافظت ویکی دربرابر رخنه به رمز‌ عبور به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که تنها عکس‌های گربه را در جعبهٔ زیر انتخاب کنید:', + 'asirra-createaccount' => 'برای محافظت ویکی دربرابر ایجاد حساب به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که تنها عکس‌های گربه را در جعبهٔ زیر انتخاب کنید:', + 'asirra-createaccount-fail' => 'لطفاً این گربه‌ها را به درستی شناسایی کنید.', + 'asirra-create' => 'برای محافظت ویکی دربرابر ایجاد صفحه به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که تنها عکس‌های گربه را در جعبهٔ زیر انتخاب کنید:', + 'asirra-nojs' => "'''لطفاً جاوااسکریپت را فعال کنید و صفحه را دوباره ارائه کنید.'''", + 'asirra-failed' => 'لطفاً همهٔ عکس‌های گربه را شناسایی کنید', +); + /** Finnish (suomi) * @author VezonThunder */ @@ -183,17 +217,33 @@ $messages['gl'] = array( 'asirra-failed' => 'Identifique todas as fotos de gatos', ); +/** Hebrew (עברית) + * @author Yona b + * @author ערן + */ +$messages['he'] = array( + 'asirra-desc' => 'מודול Asirra לאישור עריכה (ConfirmEdit)', + 'asirra-edit' => 'כדי להגן על הוויקי מעריכות ספאם אוטומטיות, נבקשך לבחור רק את תמונות החתולים בתיבה שלהלן:', + 'asirra-addurl' => 'העריכה שלך כוללת קישורים חיצוניים חדשים. כדי להגן על הויקי מעריכות ספאם אוטומטיות, נבקשך לבחור רק את תמונות החתולים בתיבה שלהלן:', + 'asirra-badlogin' => 'כדי להגן על הוויקי מפיצוח אוטומטי של סיסמאות, נבקשך לבחור רק את תמונות החתולים בתיבה שלהלן:', + 'asirra-createaccount' => 'כדי להגן על הוויקי מפני יצירה אוטומטית של חשבונות, נבקשך לבחור רק את תמונות החתולים בתיבה שלהלן:', + 'asirra-createaccount-fail' => 'יש לזהות כראוי את החתולים.', + 'asirra-create' => 'כדי להגן על הוויקי מפני יצירה אוטומטית של דפים, נבקשך לבחור רק את תמונות החתולים בתיבה שלהלן:', + 'asirra-nojs' => "'''יש לאפשר JavaScript ולשלוח מחדש את הדף.'''", + 'asirra-failed' => 'יש לזהות את כל תמונות החתולים', +); + /** Upper Sorbian (hornjoserbsce) * @author Michawiki */ $messages['hsb'] = array( 'asirra-desc' => 'Modul Asirra za ConfirmEdit', - 'asirra-edit' => 'Za škit přećiwo awtomatizowanemu spamej, prošu wubjer jenož fota kóčkow w slědowacym polu:', # Fuzzy - 'asirra-addurl' => 'Twoja změna wobsahuje nowe eksterne wotkazy. Za škit přećiwo awtomatizowanemu spamej, prošu wubjer jenož fota kóčkow w slědowacym polu:', # Fuzzy - 'asirra-badlogin' => 'Za škit přećiwo awtomatizowanemu złamanju hesłow, prošu wubjer jenož fota kóčkow w slědowacym polu:', # Fuzzy - 'asirra-createaccount' => 'Za škit přećiwo awtomatiskemu wutworjenju konta, prošu wubjer jenož fota kóčkow w slědowacym polu:', # Fuzzy + 'asirra-edit' => 'Za škit přećiwo awtomatizowanemu spamej, prošu wubjer jenož fota kóčkow w slědowacym polu:', + 'asirra-addurl' => 'Twoja změna wobsahuje nowe eksterne wotkazy. Za škit přećiwo awtomatizowanemu spamej, prošu wubjer jenož fota kóčkow w slědowacym polu:', + 'asirra-badlogin' => 'Za škit přećiwo awtomatizowanemu złamanju hesłow, prošu wubjer jenož fota kóčkow w slědowacym polu:', + 'asirra-createaccount' => 'Za škit přećiwo awtomatiskemu wutworjenju konta, prošu wubjer jenož fota kóčkow w slědowacym polu:', 'asirra-createaccount-fail' => 'Prošu identifikuj kóčki.', - 'asirra-create' => 'Za škit přećiwo awtomatiskemu wutworjenju strony, prošu wubjer jenož fota kóčkow w slědowacym polu:', # Fuzzy + 'asirra-create' => 'Za škit přećiwo awtomatiskemu wutworjenju strony, prošu wubjer jenož fota kóčkow w slědowacym polu:', 'asirra-nojs' => "'''Prošu zmóžń JavaScript a składuj stronu hišće raz.'''", 'asirra-failed' => 'Prošu identifikuj wšě wobrazy z kóčkami', ); @@ -245,16 +295,17 @@ $messages['ja'] = array( ); /** Korean (한국어) + * @author Hym411 * @author 아라 */ $messages['ko'] = array( 'asirra-desc' => 'ConfirmEdit에 대한 Asirra 모듈', - 'asirra-edit' => '자동화된 편집 스팸으로부터 보호하기 위해, 아래 상자에 있는 고양이 사진을 선택하세요:', # Fuzzy - 'asirra-addurl' => '편집에 새로운 바깥 링크가 포함되어 있습니다. 자동화된 스팸으로부터 보호하기 위해, 아래 상자에 있는 고양이 사진을 선택하세요:', # Fuzzy - 'asirra-badlogin' => '비밀번호 깨기로부터 보호하기 위해, 아래 상자에 있는 고양이 사진을 선택하세요:', # Fuzzy - 'asirra-createaccount' => '자동화된 계정 만들기로부터 보호하기 위해, 아래 상자에 있는 고양이 사진을 선택하세요:', # Fuzzy + 'asirra-edit' => '자동화된 편집 스팸으로부터 보호하기 위해, 아래 상자에 있는 고양이 사진을 선택하세요:', + 'asirra-addurl' => '편집에 새로운 바깥 링크가 포함되어 있습니다. 자동화된 스팸으로부터 보호하기 위해, 아래 상자에 있는 고양이 사진을 선택하세요:', + 'asirra-badlogin' => '자동화된 비밀번호 크래킹으로부터 보호하기 위해, 아래 상자에 있는 고양이 사진을 선택하세요:', + 'asirra-createaccount' => '자동화된 계정 만들기로부터 위키를 보호하기 위해, 아래 상자에 있는 고양이 사진을 선택하세요:', 'asirra-createaccount-fail' => '고양이를 올바르게 선택하세요.', - 'asirra-create' => '자동화된 문서 만들기로부터 보호하기 위해, 아래 상자에 있는 고양이 사진을 선택하세요:', # Fuzzy + 'asirra-create' => '자동화된 문서 만들기로부터 위키를 보호하기 위해, 아래 상자에 있는 고양이 사진을 선택하세요:', 'asirra-nojs' => "'''자바스크립트를 활성화하고 문서를 다시 제출하세요.'''", 'asirra-failed' => '고양이 그림을 모두 선택하세요', ); @@ -421,12 +472,12 @@ $messages['pt'] = array( */ $messages['roa-tara'] = array( 'asirra-desc' => 'Module Asirra pe confermà le cangiaminde', - 'asirra-edit' => "Pe darne 'na màne a proteggere condre le cangiaminde automatece de le rummate, pe piacere scacchie ìa categorije de le fote jndr'à buatte aqquà sotte:", # Fuzzy - 'asirra-addurl' => "Le cangiaminde tune 'ngludone collegaminde de fore nuève. Pe darne 'na màne a proteggere condre le cangiaminde automatece de le rummate, pe piacere scacchie 'a categorije d'a fote 'ndruche jndr'à buatte aqquà sotte:", # Fuzzy - 'asirra-badlogin' => "Pe darne 'na màne a proteggere condre le futteminde automatece de le passuord, pe piacere scacchie 'a categorije de le fote jndr'à buatte aqquà sotte:", # Fuzzy - 'asirra-createaccount' => "Pe darne 'na màne a proteggere condre le ccrejaziune automatece de le cunde, pe piacere scacchie 'a categorije de le fote jndr'à buatte aqquà sotte:", # Fuzzy + 'asirra-edit' => "Pe proteggere condre le cangiaminde automatece de le rummate, pe piacere scacchie 'a categorije de le fote jndr'à buatte aqquà sotte:", + 'asirra-addurl' => "Le cangiaminde tune 'ngludone collegaminde de fore nuève. Pe proteggere condre le cangiaminde automatece de le rummate, pe piacere scacchie 'a categorije d'a fote 'ndruche jndr'à buatte aqquà sotte:", + 'asirra-badlogin' => "Pe proteggere condre le futteminde automatece de le passuord, pe piacere scacchie 'a categorije de le fote jndr'à buatte aqquà sotte:", + 'asirra-createaccount' => "Pe proteggere condre le ccrejaziune automatece de le cunde, pe piacere scacchie 'a categorije de le fote jndr'à buatte aqquà sotte:", 'asirra-createaccount-fail' => 'Pe piacere idendifiche correttamende le categorije.', - 'asirra-create' => "Pe darne 'na màne a proteggere condre le ccrejaziune automatece de le pàggene, pe piacere scacchie 'a categorije de le fote jndr'à buatte aqquà sotte:", # Fuzzy + 'asirra-create' => "Pe proteggere condre le ccrejaziune automatece de le pàggene, pe piacere scacchie 'a categorije de le fote jndr'à buatte aqquà sotte:", 'asirra-nojs' => "'''Pe piacere abbilite JavaScript e conferme arrete 'a pàgene.'''", 'asirra-failed' => 'Pe piacere idendifiche tutte le categorije de le immaggine', ); @@ -459,6 +510,7 @@ $messages['si'] = array( /** Swedish (svenska) * @author Jopparn * @author Rotsee + * @author Tobulos1 * @author WikiPhoenix */ $messages['sv'] = array( @@ -466,6 +518,7 @@ $messages['sv'] = array( 'asirra-addurl' => 'Din redigering innehåller nya externa länkar. För att skydda wikin mot automatiserat redigerings-spam ber vi dig att endast markera fotografierna på katter i rutan nedan:', 'asirra-badlogin' => 'För att skydda wikin mot automatiserade försök att knäcka lösenord ber vi dig att endast markera fotografierna på katter i rutan nedan:', 'asirra-createaccount' => 'För att skydda wikin mot automatiserat kontoskapande ber vi dig att endast markera fotografierna på katter i rutan nedan:', + 'asirra-createaccount-fail' => 'Vänligen identifiera katterna korrekt.', 'asirra-create' => 'För att skydda wikin mot automatiserat sidskapande ber vi dig att endast markera fotografierna på katter i rutan nedan:', 'asirra-nojs' => "'''Var god aktivera JavaScript och hämta sidan igen.'''", 'asirra-failed' => 'Var god identifiera alla kattbilder', diff --git a/extensions/ConfirmEdit/Captcha.php b/extensions/ConfirmEdit/Captcha.php index 3be6d917..20b2dfd4 100644 --- a/extensions/ConfirmEdit/Captcha.php +++ b/extensions/ConfirmEdit/Captcha.php @@ -355,26 +355,38 @@ class SimpleCaptcha { */ function filterLink( $url ) { global $wgCaptchaWhitelist; - $source = wfMessage( 'captcha-addurl-whitelist' )->inContentLanguage()->text(); + static $regexes = null; - $whitelist = wfMessage( 'captcha-addurl-whitelist', $source )->isDisabled() - ? false - : $this->buildRegexes( explode( "\n", $source ) ); + if ( $regexes === null ) { + $source = wfMessage( 'captcha-addurl-whitelist' )->inContentLanguage(); - $cwl = $wgCaptchaWhitelist !== false ? preg_match( $wgCaptchaWhitelist, $url ) : false; - $wl = $whitelist !== false ? preg_match( $whitelist, $url ) : false; + $regexes = $source->isDisabled() + ? array() + : $this->buildRegexes( explode( "\n", $source->plain() ) ); - return !( $cwl || $wl ); + if ( $wgCaptchaWhitelist !== false ) { + array_unshift( $regexes, $wgCaptchaWhitelist ); + } + } + + foreach ( $regexes as $regex ) { + if ( preg_match( $regex, $url ) ) { + return false; + } + } + + return true; } /** * Build regex from whitelist * @param $lines string from [[MediaWiki:Captcha-addurl-whitelist]] - * @return string Regex or bool false if whitelist is empty + * @return array Regexes * @access private */ function buildRegexes( $lines ) { # Code duplicated from the SpamBlacklist extension (r19197) + # and later modified. # Strip comments and whitespace, then remove blanks $lines = array_filter( array_map( 'trim', preg_replace( '/#.*$/', '', $lines ) ) ); @@ -382,34 +394,59 @@ class SimpleCaptcha { # No lines, don't make a regex which will match everything if ( count( $lines ) == 0 ) { wfDebug( "No lines\n" ); - return false; + return array(); } 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'; + $regexes = array(); + $regexStart = array( + 'normal' => '/^https?:\/\/+[a-z0-9_\-.]*(?:', + 'noprotocol' => '/^(?:', + ); + $regexEnd = array( + 'normal' => ')/Si', + 'noprotocol' => ')/Si', + ); $regexMax = 4096; - $build = false; + $build = array(); foreach ( $lines as $line ) { + # Extract flags from the line + $options = array(); + if ( preg_match( '/^(.*?)\s*<([^<>]*)>$/', $line, $matches ) ) { + if ( $matches[1] === '' ) { + wfDebug( "Line with empty regex\n" ); + continue; + } + $line = $matches[1]; + $opts = preg_split( '/\s*\|\s*/', trim( $matches[2] ) ); + foreach ( $opts as $opt ) { + $opt = strtolower( $opt ); + if ( $opt == 'noprotocol' ) { + $options['noprotocol'] = true; + } + } + } + + $key = isset( $options['noprotocol'] ) ? 'noprotocol' : 'normal'; + // 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; + if ( !isset( $build[$key] ) ) { + $build[$key] = $line; + } elseif ( strlen( $build[$key] ) + strlen( $line ) > $regexMax ) { + $regexes[] = $regexStart[$key] . + str_replace( '/', '\/', preg_replace( '|\\\*/|', '/', $build[$key] ) ) . + $regexEnd[$key]; + $build[$key] = $line; } else { - $build .= '|' . $line; + $build[$key] .= '|' . $line; } } - if ( $build !== false ) { - $regexes .= $regexStart . - str_replace( '/', '\/', preg_replace( '|\\\*/|', '/', $build ) ) . - $regexEnd; + foreach ( $build as $key => $value ) { + $regexes[] = $regexStart[$key] . + str_replace( '/', '\/', preg_replace( '|\\\*/|', '/', $build[$key] ) ) . + $regexEnd[$key]; } return $regexes; } @@ -500,25 +537,42 @@ class SimpleCaptcha { * Hook for user creation form submissions. * @param User $u * @param string $message + * @param Status $status * @return bool true to continue, false to abort user creation */ - function confirmUserCreate( $u, &$message ) { + function confirmUserCreate( $u, &$message, &$status = null ) { + if ( $this->needCreateAccountCaptcha() ) { + $this->trigger = "new account '" . $u->getName() . "'"; + if ( !$this->passCaptcha() ) { + // For older MediaWiki + $message = wfMessage( 'captcha-createaccount-fail' )->text(); + // For MediaWiki 1.23+ + $status = Status::newFatal( 'captcha-createaccount-fail' ); + return false; + } + } + return true; + } + + /** + * Logic to check if we need to pass a captcha for the current user + * to create a new account, or not + * + * @return bool true to show captcha, false to skip captcha + */ + function needCreateAccountCaptcha() { global $wgCaptchaTriggers, $wgUser; if ( $wgCaptchaTriggers['createaccount'] ) { if ( $wgUser->isAllowed( 'skipcaptcha' ) ) { wfDebug( "ConfirmEdit: user group allows skipping captcha on account creation\n" ); - return true; + return false; } - if ( $this->isIPWhitelisted() ) - return true; - - $this->trigger = "new account '" . $u->getName() . "'"; - if ( !$this->passCaptcha() ) { - $message = wfMessage( 'captcha-createaccount-fail' )->text(); + if ( $this->isIPWhitelisted() ) { return false; } + return true; } - return true; + return false; } /** @@ -582,7 +636,7 @@ class SimpleCaptcha { * @return bool */ protected function isAPICaptchaModule( $module ) { - return $module instanceof ApiEditPage; + return $module instanceof ApiEditPage || $module instanceof ApiCreateAccount; } /** @@ -733,4 +787,50 @@ class SimpleCaptcha { $wgOut->addWikiMsg( 'captchahelp-cookies-needed' ); } } + + /** + * Pass API captcha parameters on to the login form when using + * API account creation. + * + * @param ApiCreateAccount $apiModule + * @param LoginForm $loginForm + * @return hook return value + */ + function addNewAccountApiForm( $apiModule, $loginForm ) { + global $wgRequest; + $main = $apiModule->getMain(); + + $id = $main->getVal( 'captchaid' ); + if ( $id ) { + $wgRequest->setVal( 'wpCaptchaId', $id ); + + // Suppress "unrecognized parameter" warning: + $main->getVal( 'wpCaptchaId' ); + } + + $word = $main->getVal( 'captchaword' ); + if ( $word ) { + $wgRequest->setVal( 'wpCaptchaWord', $word ); + + // Suppress "unrecognized parameter" warning: + $main->getVal( 'wpCaptchaWord' ); + } + + return true; + } + + /** + * Pass extra data back in API results for account creation. + * + * @param ApiCreateAccount $apiModule + * @param LoginForm &loginForm + * @param array &$params + * @return hook return value + */ + function addNewAccountApiResult( $apiModule, $loginPage, &$result ) { + if ( $result['result'] !== 'Success' && $this->needCreateAccountCaptcha() ) { + $this->addCaptchaAPI( $result ); + } + return true; + } } diff --git a/extensions/ConfirmEdit/ConfirmEdit.i18n.php b/extensions/ConfirmEdit/ConfirmEdit.i18n.php index e5e4c6bf..21a451e1 100644 --- a/extensions/ConfirmEdit/ConfirmEdit.i18n.php +++ b/extensions/ConfirmEdit/ConfirmEdit.i18n.php @@ -16,11 +16,11 @@ $messages['en'] = array( To protect the wiki against automated spam, we kindly ask you to solve the simple sum below and enter the answer in the box in order to save your edit ([[Special:Captcha/help|more info]]):', 'captcha-badlogin' => 'To protect the wiki against automated password cracking, we kindly ask you to solve the simple sum below and enter the answer in the box ([[Special:Captcha/help|more info]]):', 'captcha-createaccount' => 'To protect the wiki against automated account creation, we kindly ask you to 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-createaccount-fail' => 'Incorrect or missing CAPTCHA.', '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 protect the wiki against automated spamming, we kindly ask you to 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.', + 'captcha-sendemail-fail' => 'Incorrect or missing CAPTCHA.', + '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. @@ -31,7 +31,7 @@ Since this is a task that's hard to automate, it will allow most real humans to 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 [[Special:ListAdmins|site administrators]] for assistance if this is unexpectedly preventing you from making legitimate actions. +Please contact the [[Special:ListAdmins|site administrators]] for assistance if this is unexpectedly preventing you from making legitimate actions. Hit the \"back\" button in your browser to return to the page editor.", 'captcha-addurl-whitelist' => ' #
      @@ -213,11 +213,11 @@ $messages['ar'] = array(
       للمساعدة في الحماية من السبام الأوتوماتيكي، من فضلك حل عملية الجمع بالأسفل وأدخل الإجابة في الصندوق لكي يتم حفظ تعديلك ([[Special:Captcha/help|مزيد من المعلومات]]):',
       	'captcha-badlogin' => 'للمساعدة في الحماية ضد سرقة كلمات السر، من فضلك حل عملية الجمع البسيطة بالأسفل وأدخل الحل في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
       	'captcha-createaccount' => 'كحماية ضد إنشاء الحسابات الأوتوماتيكي، من فضلك حل عملية الجمع البسيطة بالأسفل وأدخل الإجابة في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
      -	'captcha-createaccount-fail' => 'كود تأكيد غير صحيح أو مفقود.',
      +	'captcha-createaccount-fail' => 'كابتشا غير صحيحة أو مفقودة.',
       	'captcha-create' => 'لإنشاء هذه الصفحة، من فضلك حل المسألة الرياضية التالية وأدخل
       الإجابة في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
       	'captcha-sendemail' => 'للمساعدة في الحماية ضد السخام الأتوماتيكي، من فضلك حل عملية الجمع البسيطة بالأسفل وأدخل الإجابة في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
      -	'captcha-sendemail-fail' => 'كود تأكيد غير صحيح أو مفقود',
      +	'captcha-sendemail-fail' => 'كابتشا غير صحيحة أو مفقودة.',
       	'captcha-disabledinapi' => 'هذا الإجراء يتطلب تحقيق , لذلك لايمكن أعتمادها من API.',
       	'captchahelp-title' => 'مساعدة الكابتشا',
       	'captchahelp-cookies-needed' => 'ستحتاج إلى أن تكون الكوكيز مفعلة في متصفحك لكي يعمل هذا',
      @@ -330,10 +330,10 @@ $messages['ast'] = array(
       	'captcha-addurl' => "La to edición inclúi nuevos enllaces esternos. Pa protexer la wiki escontra'l spam automatizáu, pidimoste por favor que resuelvas la suma simple d'embaxo y pongas la rempuesta na caxella pa guardar la edición ([[Special:Captcha/help|más información]]):",
       	'captcha-badlogin' => "Pa protexer la wiki escontra'l descifráu automáticu de claves, pidimoste por favor que resuelvas la suma simple d'embaxo y pongas la rempuesta na caxella ([[Special:Captcha/help|más información]]):",
       	'captcha-createaccount' => "Pa protexer la wiki escontra la creación automática de cuentes, pidimoste por favor que resuelvas la suma simple d'embaxo y pongas la rempuesta na caxella ([[Special:Captcha/help|más información]]):",
      -	'captcha-createaccount-fail' => 'Códigu de confirmación incorreutu o ausente.',
      +	'captcha-createaccount-fail' => 'CAPTCHA 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' => "Pa protexer la wiki escontra la puxarra automatizada, pidimoste por favor que resuelvas la suma cenciella d'embaxo y pongas la rempuesta na caxella ([[Special:Captcha/help|más información]]):",
      -	'captcha-sendemail-fail' => 'Códigu de confirmación incorreutu o ausente.',
      +	'captcha-sendemail-fail' => 'CAPTCHA incorreutu o ausente.',
       	'captcha-disabledinapi' => 'Esta aición requier un captcha y, poro, nun pue facese pel API',
       	'captchahelp-title' => 'Ayuda tocante al CAPTCHA',
       	'captchahelp-cookies-needed' => "Has tener les cookies habilitaes nel to navegador pa que'l sistema funcione.",
      @@ -600,6 +600,7 @@ $messages['bn'] = array(
       
       /** Breton (brezhoneg)
        * @author BrokenArrow
      + * @author Fohanno
        * @author Fulup
        * @author VIGNERON
        * @author Y-M D
      @@ -608,13 +609,13 @@ $messages['br'] = array(
       	'captcha-edit' => "A-raok gellout kemmañ 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-label' => 'CAPTCHA',
      -	'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 : 
      ([[Special:Captcha/help|Petra eo se?]])", # Fuzzy - '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 ?]]):", # Fuzzy - 'captcha-createaccount' => "A-benn hor skoazellañ da dalañ ouzh ar c'hrouiñ kontoù emgefre, jediñ an tamm oberiadenn ha skrivañ an disoc'h anezhi er vaezienn a-is ([[Special:Captcha/help|gouzout hiroc'h]]) :", # Fuzzy - 'captcha-createaccount-fail' => "Pe e vank ar c'hod kadarnaat pe eo fall anezhañ.", + '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 :
      ([[Special:Captcha/help|Petra eo se?]])", + 'captcha-badlogin' => "A-benn talañ ouzh preizhadur emgefre ar gerioù-tremen 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 sikour da dalañ ouzh ar c'hrouiñ kontoù emgefre, jedit an tamm oberiadenn ha skrivañ an disoc'h anezhi er vaezienn a-is ([[Special:Captcha/help|gouzout hiroc'h]]) :", + 'captcha-createaccount-fail' => "Pe e vank ar c'hod CAPTCHA pe ez eo fall.", 'captcha-create' => "A-benn krouiñ ar bajenn, skrivit disoc'h ar jedadennig eeun-mañ er vaezienn :
      ([[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]]) :", # Fuzzy - 'captcha-sendemail-fail' => "Pe e vank ar c'hod kadarnaat pe eo fall anezhañ.", + 'captcha-sendemail' => "Evit hor sikourda 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 CAPTCHA pe ez eo fall.", '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.", @@ -687,13 +688,14 @@ $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-label' => 'CAPTCHA', - '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ó]]):', # Fuzzy - '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ó]]):", # Fuzzy - '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ó]]):", # Fuzzy - 'captcha-createaccount-fail' => 'Manca el codi de confirmació, o bé és incorrecte.', + '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' => "Com a protecció contra l'obtenció automatitzada de contrasenyes, cal que resolgueu aquesta simple suma i introduïu el resultat en el quadre a continuació ([[Special:Captcha/help|més informació]]):", + 'captcha-createaccount' => "Com a protecció contra la creació automàtica de comptes d'usuari, cal que resolgueu aquesta simple suma i introduïu el resultat en el quadre a continuació ([[Special:Captcha/help|més informació]]):", + 'captcha-createaccount-fail' => 'Hi manca el CAPTCHA o bé eś 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ó]]):", # Fuzzy - 'captcha-sendemail-fail' => 'Manca el codi de confirmació, o bé és incorrecte.', + 'captcha-sendemail' => '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-fail' => 'Hi manca el CAPTCHA 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.", @@ -735,6 +737,7 @@ Buóh diōng kó̤ piĕng-cĭk hiĕk-miêng, áik \"diōng kó̤ sèng 1 hiĕk\" * @author Умар */ $messages['ce'] = array( + 'captcha-desc' => 'Спамах ларо а пароль харжа а CAPTCHA таронаш хуьлуьйту', 'right-skipcaptcha' => 'CAPTCHA-хьажар кхочушдар, CAPTCHA чекхдалар доцуш', ); @@ -745,7 +748,7 @@ $messages['ckb'] = array( 'right-skipcaptcha' => 'جێبەجێکردنی کردەوەکانی پێویست بە کاپچا بەبێ بەکارھێنانی کاپچا', ); -/** Czech (česky) +/** Czech (čeština) * @author Danny B. * @author Li-sung * @author Matěj Grabovský @@ -792,10 +795,10 @@ $messages['cy'] = array( Er mwyn gwarchod y wici rhag peiriant sbam, byddwch gystal â theipio cyfanswm y swm canlynol yn y blwch isod i roi eich golygiad ar gadw ([[Special:Captcha/help|mwy o wybodaeth]]):', 'captcha-badlogin' => 'Er mwyn arbed y wici rhag peiriannau datrys cyfrineiriau, byddwch gystal â gwneud y swm syml isod a gosod yr ateb yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):', 'captcha-createaccount' => 'Er mwyn arbed y wici rhag peiriannau dechrau cyfrifon, byddwch gystal â gwneud y swm syml isod a gosod yr ateb yn y blwch ([[Special:Captcha/help|mwy o wybodaeth]]):', - 'captcha-createaccount-fail' => "Côd cadarnhau ar goll neu'n anghywir.", + 'captcha-createaccount-fail' => "CAPTCHA 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 arbed y wici rhag sbamio awtomatig, byddwch gystal â gwneud y swm syml isod ac ysgrifennu'r ateb yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):", - 'captcha-sendemail-fail' => 'Y cod cadarnhau yn anghywir neu yn eisiau.', + 'captcha-sendemail-fail' => 'CAPTCHA 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.", @@ -822,6 +825,7 @@ Gwasgwch botwm 'nôl' eich porwr er mwyn dychwelyd at y dudalen golygu.", /** Danish (dansk) * @author Aputtu * @author Byrial + * @author Christian List * @author Hylle * @author Kaare * @author Peter Alberti @@ -834,13 +838,13 @@ $messages['da'] = array( Som beskyttelse af wikien mod automatiseret spam, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen, for at kunne gemme din redigering ([[Special:Captcha/help|flere oplysninger]]):', 'captcha-badlogin' => 'For at beskytte wikien mod automatiseret adgangskodegætning, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen ([[Special:Captcha/help|flere oplysninger]]):', 'captcha-createaccount' => 'For at beskytte wikien mod automatisk oprettelse af brugernavne, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen ([[Special:Captcha/help|flere oplysninger]]):', - 'captcha-createaccount-fail' => 'Forkert eller manglende kodeord.', + 'captcha-createaccount-fail' => 'Forkert eller manglende CAPTCHA.', '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 wikien mod automatisk spamning, skal du løse det enkle regnestykke nedenfor og skrive resultatet i boksen ([[Special:Captcha/help|flere oplysninger]]):', - 'captcha-sendemail-fail' => 'Forkert eller manglende bekræftelseskode.', + 'captcha-sendemail-fail' => 'Forkert eller manglende CAPTCHA.', '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-cookies-needed' => 'Din browser skal have cookies slået til, før dette kan virke.', '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. @@ -873,10 +877,10 @@ $messages['de'] = array( Um das Wiki vor automatisiertem Spam zu schützen, bitten wir dich die untenstehende einfache Rechenaufgabe zu lösen und deine Antwort in das Feld einzugeben, damit deine Bearbeitung gespeichert werden kann ([[Special:Captcha/help|mehr Informationen …]]):', 'captcha-badlogin' => 'Um das Wiki vor der automatisierten Kompromittierung der Benutzerkonten zu schützen, bitten wir dich die untenstehende einfache Rechenaufgabe zu lösen und deine Antwort in das Feld einzugeben ([[Special:Captcha/help|mehr Informationen …]]):', 'captcha-createaccount' => 'Um das Wiki vor der automatisierten Erstellung von Benutzerkonten zu schützen, bitten wir dich die untenstehende einfache Rechenaufgabe zu lösen und deine Antwort in das Feld einzugeben ([[Special:Captcha/help|mehr Informationen …]]):', - 'captcha-createaccount-fail' => 'Falscher oder fehlender Bestätigungscode.', + 'captcha-createaccount-fail' => 'Falsches oder fehlendes CAPTCHA.', '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 das Wiki vor automatisiertem Spam zu schützen, bitten wir dich die untenstehende einfache Rechenaufgabe zu lösen und deine Antwort in das Feld einzugeben ([[Special:Captcha/help|mehr Informationen …]]):', - 'captcha-sendemail-fail' => 'Falscher oder fehlender Bestätigungscode.', + 'captcha-sendemail-fail' => 'Falsches oder fehlendes CAPTCHA.', '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.", @@ -925,8 +929,10 @@ Der „Zurück“-Knopf des Browsers führt zurück zum Bearbeitungsfenster.', ); /** Zazaki (Zazaki) + * @author Asmen * @author Aspar * @author Erdemaslancan + * @author Marmase * @author Xoser */ $messages['diq'] = array( @@ -939,11 +945,11 @@ Otomatik spamî ra pawitîş, ma rica keno cewabê problemî qutiyê ke cor de z ([[Special:Captcha/help|malumato detayın]]):', 'captcha-createaccount' => 'Otomatik spam ra pawıtışi, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse ([[Special:Captcha/help|malumato detayın]]):', - 'captcha-createaccount-fail' => 'Kodê testiqî vin biyo ya zi raşt niyo.', + 'captcha-createaccount-fail' => 'CAPTCHA ğeleto ya ki kemio', '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' => 'Otomatik spam ra pawıtışi, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse ([[Special:Captcha/help|malumato detayın]]):', - 'captcha-sendemail-fail' => 'Kodê testiqî vin biyo ya zi raşt niyo.', + 'captcha-sendemail-fail' => 'CAPTCHA ğeleto ya ki kemio', '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ê.', @@ -977,10 +983,10 @@ $messages['dsb'] = array( Za šćit pśeśiwo zawtomatizěrowanemu spamoju, pšosymy śi slědujucy jadnory liceński nadawk rozwězaś a zapódaj wuslědk do kašćika, aby swóju změnu składował ([[Special:Captcha/help|dalšne info]]):', 'captcha-badlogin' => 'Aby wiki pśeśiwo zawtomatizěrowanemu wuzgónjowanjeju gronidła šćitał, pšosymy śi slědujucy jadnory liceński nadawk rozwězaś a zapódaj wuslědk do kašćika ([[Special:Captcha/help|dalšne info]]):', 'captcha-createaccount' => 'Aby wiki pśeśiwo zawtomatizěrowanemu załoženjeju kontow šćitał, pšosymy śi slědujucy jadnory liceński nadawk rozwězaś 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-createaccount-fail' => 'Wopacny abo felujucy wobkšuśeński kod CAPTCHA.', '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' => 'Aby wiki pśeśiwo awtomatiskemu spamowanjeju šćitał, pšosymy śi jadnory liceński nadawk rozwězaś 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-sendemail-fail' => 'Wopacny abo felujucy wobkšuśeński kod CAPTCHA.', '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ś.', @@ -1127,6 +1133,7 @@ Klaku la 'reiru' butonon en via retumilo por reiri al la paĝo-redaktilo.", /** Spanish (español) * @author Armando-Martin + * @author Ciencia Al Poder * @author Crazymadlover * @author Drini * @author Icvav @@ -1145,10 +1152,10 @@ $messages['es'] = array( Para proteger el wiki contra el spam automatizado, por favor resuelve la sencilla suma de abajo e introduce la respuesta en la caja para guardar tu edición ([[Special:Captcha/help|más información]]):', 'captcha-badlogin' => 'Para proteger el wiki del descifrado de contraseñas automatizado, 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 proteger el wiki de la creación automática de cuentas, resuelve por favor 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-createaccount-fail' => 'Falta el código CAPTCHA, 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 proteger el wiki contra el spam automatizado, por favor resuelve la simple suma que se presenta a continuación e introduce 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-sendemail-fail' => 'Falta el código CAPTCHA, o éste 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.', @@ -1182,11 +1189,11 @@ $messages['et'] = array( Palun lahenda allpool lihtne tehe ja sisesta vastus kasti, et saaksid muudatuse salvestada. Abinõu on viki kaitseks automaadistatud rämpsmuudatuste eest ([[Special:Captcha/help|lisateave]]):', 'captcha-badlogin' => 'Palun lahenda allpool lihtne tehe ja sisesta vastus kasti. Abinõu on viki kaitseks automaatsete parooliäraarvajate eest ([[Special:Captcha/help|lisateave]]):', 'captcha-createaccount' => 'Palun lahenda lihtne tehe ja sisesta vastus kasti. Abinõu on viki kaitseks kontode automaatse loomise eest ([[Special:Captcha/help|lisateave]]):', - 'captcha-createaccount-fail' => 'Puuduv või valesti sisestatud kinnituskood.', + 'captcha-createaccount-fail' => 'Puuduv või valesti sisestatud robotilõksu tekst.', 'captcha-create' => 'Lehekülje loomiseks lahenda palun lihtne tehe ja sisesta vastus kasti ([[Special:Captcha/help|lisateave]]):', 'captcha-sendemail' => 'Palun lahenda allpool lihtne tehe ja sisesta vastus kasti. Abinõu on viki kaitseks automaadistatud rämpsmuudatuste eest ([[Special:Captcha/help|lisateave]]):', - 'captcha-sendemail-fail' => 'Vigane või puuduv kinnituskood.', + 'captcha-sendemail-fail' => 'Vigane või puuduv robotilõksu tekst.', 'captcha-disabledinapi' => 'Ühes selle toiminguga tuleb läbida robotilõks ja seetõttu ei saa seda API kaudu sooritada.', 'captchahelp-title' => 'Mis on robotilõks?', 'captchahelp-cookies-needed' => 'Selle toimimiseks peab veebilehitseja lubama küpsiseid.', @@ -1246,10 +1253,10 @@ $messages['fa'] = array( برای کمک به جلوگیری از ارسال خودکار هرزنامه‌ها، لطفاً حاصل جمع زیر را حساب کنید و نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', 'captcha-badlogin' => 'برای کمک به جلوگیری از شکستن خودکار گذرواژه، لطفاً حاصل جمع زیر را حساب کنید و نتیجه را وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', 'captcha-createaccount' => 'برای جلوگیری از ایجاد خودکار حساب کاربری، لطفاً حاصل جمع زیر را حساب کنید و نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', - 'captcha-createaccount-fail' => 'کد تأییدی وجود ندارد یا نادرست است.', + 'captcha-createaccount-fail' => 'کد تأییدی وجود ندارد یا نادرست است.', 'captcha-create' => 'برای ایجاد صفحه لطفاً حاصل جمع زیر را حساب کنید و نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', 'captcha-sendemail' => 'برای کمک به حفاظت ویکی در برابر هرزنامه‌های خودکار، لطفاً جمع سادهٔ زیر را حل کنید و جواب را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', - 'captcha-sendemail-fail' => 'کد تأییدی وجود ندارد یا نادرست است.', + 'captcha-sendemail-fail' => 'کد تأییدی وجود ندارد یا نادرست است.', 'captcha-disabledinapi' => 'این اقدام به کپچا نیاز دارد، بنابراین نمی‌تواند از طریق API انجام شود.', 'captchahelp-title' => 'راهنمای Captcha', 'captchahelp-cookies-needed' => 'برای کار کردن آن، شما باید کوکی‌های مرورگرتان را فعال کنید.', @@ -1334,6 +1341,7 @@ $messages['fo'] = array( /** French (français) * @author Crochet.david + * @author Gomoko * @author Grondin * @author IAlex * @author Meithal @@ -1355,10 +1363,10 @@ $messages['fr'] = array( 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 automatisé des mots de passe, 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-createaccount-fail' => 'CAPTCHA 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 pollupostage 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-sendemail-fail' => 'Code de confirmation incorrect ou manquant.', + 'captcha-sendemail-fail' => 'CAPTCHA incorrect ou absent.', 'captcha-disabledinapi' => 'Cette action requiert un captcha, donc elle ne peut pas être effectuée via l’IPA.', 'captchahelp-title' => 'Aide sur le captcha', 'captchahelp-cookies-needed' => "Il vous faudra autoriser les témoins (''cookies'') de votre navigateur pour que cela fonctionne.", @@ -1461,6 +1469,7 @@ $messages['ga'] = array( /** Galician (galego) * @author Alma + * @author Elisardojm * @author Toliño * @author Xosé */ @@ -1472,10 +1481,10 @@ $messages['gl'] = array( Para protexer o wiki contra o spam automático, resolva a suma que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):', 'captcha-badlogin' => 'Para protexer o wiki contra o roubo de contrasinais, resolva a suma que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):', 'captcha-createaccount' => 'Para protexer o wiki contra a creación automática 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-createaccount-fail' => 'Falta o código de confirmación (CAPTCHA) 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 protexer o wiki contra o spam automático, 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-sendemail-fail' => 'Falta o código de confirmación (CAPTCHA) 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.', @@ -1579,19 +1588,20 @@ $messages['gu'] = array( /** Hebrew (עברית) * @author Amire80 + * @author Guycn2 * @author Rotem Liss * @author Rotemliss * @author YaronSh */ $messages['he'] = array( 'captcha-edit' => 'כדי לערוך את הדף, אנא פתרו את תרגיל החיבור הפשוט שלהלן והקלידו את התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):', - 'captcha-desc' => 'מתן טכניקות CAPTCHA להגנה נגד זיבול וניחוש ססמאות', + 'captcha-desc' => 'מתן טכניקות CAPTCHA להגנה נגד ספאם וניחוש סיסמאות', 'captcha-label' => 'CAPTCHA', 'captcha-addurl' => 'עריכתכם כוללת קישורים חיצוניים חדשים. לשם הגנה מפני ספאם אוטומטי, אנא פתרו את תרגיל החיבור הפשוט שלהלן והקלידו את התשובה בתיבה כדי לשמור את עריכתכם ([[Special:Captcha/help|מידע נוסף]]):', 'captcha-badlogin' => 'לשם הגנה מפני פריצת סיסמאות אוטומטית, אנא פתרו את תרגיל החיבור הפשוט שלהלן והקלידו את התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):', 'captcha-createaccount' => 'לשם הגנה מפני יצירת חשבונות אוטומטית, אנא פתרו את תרגיל החיבור הפשוט שלהלן והקלידו את התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):', - 'captcha-createaccount-fail' => 'לא הקלדתם קוד אישור, או שהוא שגוי.', + 'captcha-createaccount-fail' => 'קוד אישור שגוי או חסר.', 'captcha-create' => 'כדי ליצור את הדף, אנא פתרו את תרגיל החיבור הפשוט שלהלן והקלידו את התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):', 'captcha-sendemail' => 'כדי לעזור להילחם במציפי זבל אוטומטיים, עליך לחשב את הסכום הפשוט שלהלן ולהזין את התוצאה בתיבה ([[Special:Captcha/help|מידע נוסף]]):', 'captcha-sendemail-fail' => 'קוד האישור שגוי או חסר.', @@ -1707,10 +1717,10 @@ $messages['hsb'] = array( 'captcha-addurl' => 'W twojej změnje su nowe eksterne wotkazy. Zo by wiki přećiwo awtomatizowanemu spamej škitał, prosymy će slědowacy nadawk wuličić a wuslědk do kašćika zapisować, zo by so twoja změna składowała ([[Special:Captcha/help|dalše informacije]]).', 'captcha-badlogin' => 'Zo by wiki přećiwo awtomatiskemu zadobywanju do hesłow škitał, prosymy će slědowacy nadawk wuličeć a wuslědk do kašćika zapisować ([[Special:Captcha/help|dalše informacije]]):', 'captcha-createaccount' => 'Zo by wiki přećiwo awtomatiskemu wutworjenju wužiwarskich kontow škitał, prosymy će slědowacy nadawk nadawk rozrisać a wuslědk do kašćika zapisować ([[Special:Captcha/help|dalše informacije]]):', - 'captcha-createaccount-fail' => 'Wopačny abo pobrachowacy wobkrućenski kod.', + 'captcha-createaccount-fail' => 'Wopačny abo falowacy wobkrućenski kod CAPTCHA.', '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 slědowacy 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-sendemail-fail' => 'Wopačny abo falowacy wobkrućenski kod CAPTCHA.', 'captcha-disabledinapi' => 'Tuta akcija wužaduje sej captcha, tohodla njeda so přez API wuwjesć.', 'captchahelp-title' => 'Pomoc za CAPTCHA', 'captchahelp-cookies-needed' => 'Dyrbiš placki (cookies) w swojim wobhladowaku zmóžnić.', @@ -1798,10 +1808,10 @@ $messages['ia'] = array( Pro proteger le wiki contra le spam automatisate, per favor resolve le simple summa hic infra e entra le resultato in le quadro a fin de salveguardar tu modification ([[Special:Captcha/help|plus info]]):', 'captcha-badlogin' => 'Pro proteger le wiki contra le furto automatisate de contrasignos, per favor resolve le simple summa hic infra e entra le resultato in le quadro ([[Special:Captcha/help|plus info]]):', 'captcha-createaccount' => 'Pro proteger le wiki contra le creation automatisate 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-createaccount-fail' => 'Codice de confirmation (CAPTCHA) 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' => 'Pro proteger le wiki contra le spam automatisate, 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-sendemail-fail' => 'Codice de confirmation (CAPTCHA) 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.', @@ -1830,20 +1840,22 @@ Clicca le button 'retro' in tu navigator pro retornar al pagina de modification. * @author Ilham151096 * @author IvanLanin * @author Iwan Novirion + * @author Kenrick95 * @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-label' => 'CAPTCHA', - 'captcha-addurl' => "Suntingan Anda menyertakan pranala luar baru. Sebagai pelindungan terhadap ''spam'' otomatis, Anda harus mengetikkan kata atau hasil perhitungan yang tertera berikut ini:
      -([[Special:Captcha/help|info lengkap]])", # Fuzzy - '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]]):', # Fuzzy - '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:
      -([[Special:Captcha/help|info lengkap]])', # Fuzzy + 'captcha-addurl' => "Suntingan Anda menyertakan pranala luar baru. +Sebagai pelindungan terhadap ''spam'' otomatis, Anda harus mengetikkan hasil perhitungan sederhana berikut ini +([[Special:Captcha/help|info lengkap]]):", + 'captcha-badlogin' => 'Untuk melindungi wiki ini dari perengkahan kunci sandi otomatis, harap masukkan hasil perhitungan sederhana berikut dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):', + 'captcha-createaccount' => 'Untuk melindungi wiki ini dari pembuatan akun otomatis, kami meminta Anda untuk mengetikkan hasil perhitungan sederhana di bawah ini dalam kotak yang tersedia +([[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]]):', # Fuzzy + 'captcha-sendemail' => 'Untuk melindungi wiki ini dari spam otomatis, kami meminta Anda untuk memecahkan 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', @@ -1986,10 +1998,10 @@ $messages['ja'] = array( 自動でのスパム攻撃を防ぐため、お手数ですが下記の簡単な数式を計算してその答えを欄に入力してください ([[Special:Captcha/help|ヘルプ]]):', 'captcha-badlogin' => '自動でのパスワードクラック攻撃からウィキを保護するため、お手数ですが下記の簡単な数式を計算してその答えを欄に入力してください ([[Special:Captcha/help|詳細]]):', 'captcha-createaccount' => 'アカウントの自動登録からウィキを保護するため、お手数ですが下記の簡単な数式を計算してその答えを欄に入力してください ([[Special:Captcha/help|ヘルプ]]):', - 'captcha-createaccount-fail' => '確認コードが正しくない、または入力されていません。', + 'captcha-createaccount-fail' => 'CAPTCHA が正しくない、または入力されていません。', 'captcha-create' => 'ページを新規作成するには、下記の簡単な数式を計算してその答えを欄に入力してください ([[Special:Captcha/help|ヘルプ]]):', 'captcha-sendemail' => '自動でのスパム攻撃からウィキを保護するため、お手数ですが下記の簡単な数式を計算してその答えを欄に入力してください ([[Special:Captcha/help|詳細]]):', - 'captcha-sendemail-fail' => '確認コードが正しくない、または入力されていません。', + 'captcha-sendemail-fail' => 'CAPTCHA が正しくない、または入力されていません。', 'captcha-disabledinapi' => 'この操作には CAPTCHA 認証が必要なため、API では実行できません。', 'captchahelp-title' => 'CAPTCHA (画像認証) ヘルプ', 'captchahelp-cookies-needed' => 'ブラウザーの Cookie を有効にする必要があります。', @@ -2013,6 +2025,7 @@ $messages['ja'] = array( ); /** Jutish (jysk) + * @author Christian List * @author Huslåke * @author Ælsån */ @@ -2020,9 +2033,9 @@ $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', # Fuzzy '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]]):', # Fuzzy - '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]]):', # Fuzzy + 'captcha-badlogin' => 'For at beskytte mod automatiske forsøg på at gætte adgangskoden, skal du give svaret på regnestykket 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]]):', # Fuzzy - 'captcha-createaccount-fail' => 'Forkert eller manglende kodeord.', + 'captcha-createaccount-fail' => 'Forkert eller manglende bekræftelseskode.', '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.', @@ -2041,6 +2054,7 @@ Tryk på 'tilbage'-knappen i din browser for at returnere til redigeringssiden." ); /** Javanese (Basa Jawa) + * @author Bennylin * @author Meursault2004 * @author NoiX180 * @author Pras @@ -2050,12 +2064,14 @@ $messages['jv'] = array( 'captcha-desc' => 'Nyadhiyakaké tèhnik CAPTCHA kanggo njaga saka spam lan pambedhèk sandhi', 'captcha-label' => '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é]]):", # Fuzzy - '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é]]):', # Fuzzy - '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é]]):', # Fuzzy - 'captcha-createaccount-fail' => 'Kode pandhedhesan (konfirmasi) salah utawa durung diisi.', +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 tembung 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 CAPTCHA salah utawa durung diisi.', 'captcha-create' => 'Kanggo nggawé kaca iki, mangga itung-itungan ing ngisor iki diwangsuli sajroning kothak ([[Special:Captcha/help|info sabanjuré]]):', - 'captcha-sendemail-fail' => 'Kodhe pepesthèn salah utawa durung diisi.', + 'captcha-sendemail' => 'Kanggo ngreksa lawan spam otomatis, tulung lebokna tembung utawa kasil itung-itungan gampang ing ngisor sajroning kothak sing wis sumedya ([[Special:Captcha/help|info sabanjuré]]):', + 'captcha-sendemail-fail' => 'Kode CAPTCHA salah utawa durung diisi.', + 'captcha-disabledinapi' => 'Tindakan ini membutuhkan CAPTCHA, sehingga tidak dapat dilakukan melalui API.', '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. @@ -2208,9 +2224,9 @@ Bet öñdewine qaýtw barw üşin «Artqa» degen tüýmesin basıñız.', # Fuz $messages['km'] = array( 'captcha-edit' => 'ដើម្បីកែប្រែ​ទំព័រនេះ សូមដោះស្រាយ​ប្រមាណវិធីបូក​ខាងក្រោម​នេះរួច​បញ្ជូលចម្លើយ​ទៅក្នុង​ប្រអប់សិន([[Special:Captcha/help|ព័ត៌មាន​បន្ថែម]])៖', 'captcha-desc' => 'ផ្ដល់បច្ចេកទេស CAPTCHA ដើម្បីការពារពីស្ប៉ាមនិងការការទាយពាក្យសំងាត់', - 'captcha-addurl' => 'កំណែ​របស់អ្នក​មាន​តំណភ្ជាប់ក្រៅ​ថ្មី។ ដើម្បី​ជួយបង្ការ​ស្ប៉ាម​ស្វ័យប្រវត្តិ សូមដោះស្រាយ​ប្រមាណវិធីបូក​ខាងក្រោម​នេះរួច​បញ្ជូលចម្លើយ​ទៅក្នុង​ប្រអប់សិន([[Special:Captcha/help|ព័ត៌មាន​បន្ថែម]])៖', # Fuzzy - 'captcha-badlogin' => 'ដើម្បីការពារការបំបែកពាក្យសំងាត់ដោយស្វ័យប្រវត្តិ សូមដោះស្រាយផលបូកខាងក្រោមរួចបញ្ជូលចម្លើយទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', # Fuzzy - 'captcha-createaccount' => 'ដើម្បី​បង្ការការបង្កើត​គណនី​ស្វ័យប្រវត្តិ សូមដោះស្រាយ​ប្រមាណវិធីបូក​ខាងក្រោម​នេះរួច​បញ្ជូលចម្លើយ​ទៅក្នុង​ប្រអប់សិន([[Special:Captcha/help|ព័ត៌មាន​បន្ថែម]])៖', # Fuzzy + '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', @@ -2220,6 +2236,7 @@ $messages['km'] = array( * @author IRTC1015 * @author Klutzy * @author Kwj2772 + * @author Priviet * @author ToePeu * @author 아라 */ @@ -2231,10 +2248,10 @@ $messages['ko'] = array( 자동화된 스팸으로부터 위키를 보호하기 위해, 편집을 저장하려면 아래의 간단한 계산 값을 입력 상자에 적어 주세요 ([[Special:Captcha/help|자세한 정보]]):', 'captcha-badlogin' => '자동화된 비밀번호 깨기로부터 위키를 보호하기 위해, 아래의 간단한 계산 값을 입력 상자에 입력해주세요 ([[Special:Captcha/help|자세한 정보]]):', 'captcha-createaccount' => '자동화된 계정 만들기로부터 위키를 보호하기 위해, 아래의 간단한 계산 값을 입력 상자에 적어 주세요 ([[Special:Captcha/help|자세한 정보]]):', - 'captcha-createaccount-fail' => '입력값이 잘못되었거나 없습니다.', + 'captcha-createaccount-fail' => '캡챠가 올바르지 않거나 입력되지 않았습니다.', 'captcha-create' => '문서를 만드려면 아래의 간단한 계산 값을 입력 상자에 적어 주세요 ([[Special:Captcha/help|자세한 정보]]):', 'captcha-sendemail' => '자동화된 스팸으로부터 위키를 보호하기 위해, 아래의 간단한 계산 값을 입력 상자에 적어 주세요 ([[Special:Captcha/help|자세한 정보]]):', - 'captcha-sendemail-fail' => '입력값이 잘못되었거나 없습니다.', + 'captcha-sendemail-fail' => '캡챠가 올바르지 않거나 입력되지 않았습니다.', 'captcha-disabledinapi' => '이 동작은 캡차를 거쳐야 하기 때문에 API로 이 작업을 수행할 수 없습니다.', 'captchahelp-title' => 'CAPTCHA(캡차) 도움말', 'captchahelp-cookies-needed' => '정상적으로 작동하려면 웹 브라우저의 쿠키 사용이 활성화되어 있어야 합니다.', @@ -2338,6 +2355,14 @@ $messages['la'] = array( 'captchahelp-title' => 'Captcha auxilium', ); +/** Ladino (Ladino) + * @author Menachem.Moreira + */ +$messages['lad'] = array( + 'captcha-label' => 'CAPTCHA', + 'captchahelp-title' => 'Ayudo de CAPTCHA', +); + /** Luxembourgish (Lëtzebuergesch) * @author Les Meloures * @author Robby @@ -2351,18 +2376,18 @@ $messages['lb'] = array( Fir dës Wiki virun automatiséiertem Spam ze schütze froe mir Iech fir déi folgend einfach Additioun ze léisen an d'Resultat an d'Feld ënnen anzedroen fir Är Ännerung ze späicheren ([[Special:Captcha/help|méi Informatiounen]]):", 'captcha-badlogin' => "Fir dës Wiki 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 dës Wiki 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-createaccount-fail' => 'Falschen oder kee CAPTCHA.', '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 dës Wiki 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-sendemail-fail' => 'Falschen oder kee CAPTCHA.', '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 Cookien an Ärem Browser erlabe fir dat dëst funktionéiert.', - 'captchahelp-text' => "Websäiten, déi et jiddwerengem 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, mä se sinn trotzdem eng grouss Plo. + 'captchahelp-text' => "Websäiten, déi et jiddwerengem 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. Sou Spam-Linke kënne wuel geläscht ginn, mä se sinn trotzdem eng grouss Plo. Heiansdo, 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ährend déi meescht Spammer an aner Roboter-Attacke kënnen ofgewiert ginn. -Leider kann dat zu Schwierigkeete féiere fir Persounen déi net esou gutt gesinn oder déi text-baséiert oder sprooch-baséiert Browser benotzen. +Leider kann dat zu Schwierigkeete féiere fir Persounen déi net sou 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. [[Special:ListAdmins|een Administrateur]] fir Hëllef wann dëst iech onerwaarter Weis vu legitimen Editen ofhält. @@ -2423,7 +2448,10 @@ $messages['lo'] = array( */ $messages['lrc'] = array( 'captcha-label' => 'كپچا', + 'captcha-createaccount-fail' => 'کد کپچا غلط یا گم بیه.', + 'captcha-sendemail-fail' => 'کد کپچا غلط یا گم بیه.', 'captchahelp-title' => 'هومياری كپچا', + 'captchahelp-cookies-needed' => 'شما با کوکیانه د جاگرد تو فعال بکید سی یه وه کار بکه.', ); /** Lithuanian (lietuvių) @@ -2442,15 +2470,17 @@ $messages['lt'] = array( /** Latvian (latviešu) * @author BrokenArrow + * @author Edgars2007 * @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ņā:
      ([[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:
      ([[Special:Captcha/help|Kāpēc tā?]])', # Fuzzy + '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:
      ([[Special:Captcha/help|vairāk informācijas]])', '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]]):', # Fuzzy 'captcha-createaccount' => 'Lai pasargātos no automātiskas mēstuļošanas, Tev reģistrējoties ir jāieraksta šī vienādojuma rezultāts:
      ([[Special:Captcha/help|Kāpēc tā?]])', # Fuzzy - 'captcha-createaccount-fail' => 'Nepareizs apstiprinājuma kods vai arī tas nav ievadīts.', + 'captcha-createaccount-fail' => 'Nepareizs apstiprinājuma kods vai arī tas nav ievadīts.', # Fuzzy 'captcha-create' => 'Lai izveidotu šo lapu, atrisini šo vienādojumu un rezulātu ieraksti šajā lodziņā:
      ([[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. @@ -2500,10 +2530,10 @@ $messages['mk'] = array( За да ни помогнете да се заштитиме од автоматизиран спам, би ве замолиле да ја решите простата задача подолу и да го внесете резултатот во полето за да можете да го зачувате уредувањето ([[Special:Captcha/help|повеќе инфо]]):', 'captcha-badlogin' => 'За да ни помогнете да се заштитиме од автоматизирано пробивање на лозинки, би ве замолиле да ја решите простата задача подолу и внесете резултатот во полето ([[Special:Captcha/help|повеќе информации]]):', 'captcha-createaccount' => 'За да ни помогнете да се заштитиме од автоматизирано создавање на сметки, би ве замолиле да ја решите простата задача подолу и да го внесете резултатот во полето ([[Special:Captcha/help|повеќе инфо]]):', - 'captcha-createaccount-fail' => 'Потврдниот код е неточен или недостасува.', + 'captcha-createaccount-fail' => 'CAPTCHA е неточен или недостасува.', 'captcha-create' => 'За да ја создадете страницата, прво решете ја простата задача подолу и впишете го решението во полето ([[Special:Captcha/help|повеќе инфо]]):', 'captcha-sendemail' => 'За да се заштитиме од автоматизирано спамирање, би сакале да ве замолиме да ја решите простата задача подолу и да го внесете резултатот во полето ([[Special:Captcha/help|повеќе информации]]):', - 'captcha-sendemail-fail' => 'Потврдниот код е неточен или недостасува.', + 'captcha-sendemail-fail' => 'CAPTCHA е неточен или недостасува.', 'captcha-disabledinapi' => 'Ова дејство бара captcha, така што не може да се изврши преку API.', 'captchahelp-title' => 'Помош со Captcha', 'captchahelp-cookies-needed' => 'Треба да имате овозможено колачиња за да може ова да работи.', @@ -2516,7 +2546,7 @@ $messages['mk'] = array( Во моментов немаме аудио-алтернатива за ова. Контактирајте ги [[Special:ListAdmins|администраторите на страната]] за помош доколку ова неочекувано ве спречува во правењето на искрени придонеси. -Кликнете на копчето „назад“ во вашиот прелисувач за да се вратите на уредувањето на страницата.', +Стиснете на копчето „назад“ во вашиот прелисувач за да се вратите на уредувањето на страницата.', 'captcha-addurl-whitelist' => ' #
       # Опис на синтаксата:
       #  * Сето она што стои по знакот „#“, па до крајот на редот е коментар
      @@ -2537,10 +2567,10 @@ $messages['ml'] = array(
       യാന്ത്രികമായി പാഴെഴുത്തുൾപ്പെടുത്തുന്നതിൽ നിന്നും വിക്കി സം‌രക്ഷിക്കുന്നതിന്റെ ഭാഗമായി, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന ലഘു ഗണിത ക്രിയ ചെയ്ത് അതിന്റെ ഉത്തരം താഴെയുള്ള പെട്ടിയിൽ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):',
       	'captcha-badlogin' => 'യാന്ത്രികമായി രഹസ്യവാക്ക് പൊളിക്കുന്നതിൽ നിന്നും വിക്കി സംരക്ഷിക്കുന്നതിന്റെ ഭാഗമായി, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന ലഘു ഗണിത ക്രിയ ചെയ്ത്, ഉത്തരം താഴെയുള്ള പെട്ടിയിൽ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):',
       	'captcha-createaccount' => 'യാന്ത്രികമായി അംഗത്വം സൃഷ്ടിക്കുന്നതിൽ നിന്നും വിക്കി സം‌രക്ഷിക്കുന്നതിന്റെ ഭാഗമായി, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന ലഘു ഗണിത ക്രിയ ചെയ്ത് അതിന്റെ ഉത്തരം താഴെയുള്ള പെട്ടിയിൽ ടൈപ്പു ചെയ്യുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):',
      -	'captcha-createaccount-fail' => 'തെറ്റായതോ ലഭ്യമല്ലാത്തതോ ആയ സ്ഥിരീകരണ കോഡ്.',
      +	'captcha-createaccount-fail' => 'തെറ്റായതോ ലഭ്യമല്ലാത്തതോ ആയ കാപ്ച്ച.',
       	'captcha-create' => 'ഈ താൾ സൃഷ്ടിക്കുവാൻ, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന കൂട്ടൽ ക്രിയയുടെ ഉത്തരം താഴെയുള്ള പെട്ടിയിൽ എഴുതുക  ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):',
       	'captcha-sendemail' => 'യാന്ത്രികമായ പാഴെഴുത്ത് ഉൾപ്പെടുത്തുന്നതിൽ നിന്നും വിക്കി സംരക്ഷിക്കുന്നതിന്റെ  ഭാഗമായി, ദയവായി താഴെ കൊടുത്തിരിക്കുന്ന ലഘു ഗണിത ക്രിയ ചെയ്ത്, ഉത്തരം പെട്ടിയിൽ എഴുതുക ([[Special:Captcha/help|കൂടുതൽ വിവരങ്ങൾ]]):',
      -	'captcha-sendemail-fail' => 'തെറ്റായതോ ലഭ്യമല്ലാത്തതോ ആയ സ്ഥിരീകരണ കോഡ്.',
      +	'captcha-sendemail-fail' => 'തെറ്റായതോ ലഭ്യമല്ലാത്തതോ ആയ കാപ്ച്ച.',
       	'captcha-disabledinapi' => 'ഈ പ്രവൃത്തി പൂർണ്ണമാകാൻ കാപ്ച ആവശ്യമാണ്, അതുകൊണ്ടിത് എ.പി.ഐ. ഉപയോഗിച്ച് ചെയ്യാൻ കഴിയില്ല.',
       	'captchahelp-title' => 'കാപ്ച്ച സഹായം',
       	'captchahelp-cookies-needed' => 'ഇതു പ്രവർത്തിക്കണമെങ്കിൽ താങ്കളുടെ ബ്രൗസറിൽ കുക്കികൾ സജ്ജീകരിച്ചിരിക്കണം.',
      @@ -2705,6 +2735,7 @@ $messages['nan'] = array(
       /** Norwegian Bokmål (norsk bokmål)
        * @author Audun
        * @author Danmichaelo
      + * @author Event
        * @author Laaknor
        * @author Nghtwlkr
        */
      @@ -2712,13 +2743,14 @@ $messages['nb'] = 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-label' => 'CAPTCHA',
      -	'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]]):', # Fuzzy
      -	'captcha-badlogin' => 'Løs det enkle regnestykket i boksen nedenfor for å hjelpe oss å beskytte oss mot automatisk passordtyveri ([[Special:Captcha/help|mer informasjon]]):', # Fuzzy
      -	'captcha-createaccount' => 'Løs det enkle regnestykket i boksen nedenfor for å hjelpe oss å beskytte oss mot automatisk kontoopprettelse ([[Special:Captcha/help|mer informasjon]]):', # Fuzzy
      -	'captcha-createaccount-fail' => 'Feil eller manglende bekreftelseskode.',
      +	'captcha-addurl' => 'Din redigering inneholder nye eksterne lenker.
      +Løs den enkle summeringen i boksen nedenfor for å beskytte mot automatisk spam ([[Special:Captcha/help|Mer informasjon]]):',
      +	'captcha-badlogin' => 'Løs den enkle summeringen i boksen nedenfor for å beskytte mot automatisk passordtyveri ([[Special:Captcha/help|Mer informasjon]]):',
      +	'captcha-createaccount' => 'Løs den enkle summeringen i boksen nedenfor for å beskytte mot automatisk kontoopprettelse ([[Special:Captcha/help|Mer informasjon]]):',
      +	'captcha-createaccount-fail' => 'Feil eller manglende CAPTCHA-svar.',
       	'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]]):', # Fuzzy
      -	'captcha-sendemail-fail' => 'Ukorrekt eller manglende bekreftelseskode.',
      +	'captcha-sendemail' => 'Løs den enkle summeringen i boksen nedenfor for å beskytte mot automatisk spamming ([[Special:Captcha/help|m\\Mer informasjon]]):',
      +	'captcha-sendemail-fail' => 'Feil eller manglende CAPTCHA-svar.',
       	'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.',
      @@ -2780,9 +2812,9 @@ Mit den „Trüch“-Knopp vun dien Browser kummst du trüch na dat Ännerfinste
        */
       $messages['nds-nl'] = array(
       	'captcha-edit' => "Um disse zied te bewarken, mu'j eerst t antwoord op disse eenvoudige somme invullen ([[Special:Captcha/help|meer informasie]]):",
      -	'captcha-desc' => 'Biejt CAPTCHA-technieken um bescharming te biejen tegen moekpost en t raojen van wachtwoorden',
      +	'captcha-desc' => 'Biedt CAPTCHA-technieken um bescharming te biejen tegen spam en t raojen van wachtwoorden',
       	'captcha-addurl' => 'In joew bewarking staon nieje uutgaonde verwiezingen.
      -Vul ter de bescharming van disse wiki tegen automatiese moekpost t antwoord op de somme in, in t invoerveld dat hieronder steet, um joew bewarking op te slaon:
      +Vul ter de bescharming van disse wiki tegen automatiese moekbiedragen t antwoord op de somme in, in t invoerveld dat hieronder steet, um joew bewarking op te slaon:
      ([[Special:Captcha/help|meer informasie]])', 'captcha-badlogin' => 'Vul ter de bescharming van disse wiki tegen t automaties kraken van wachtwoorden t antwoord op de somme in, in t invoerveld ([[Special:Captcha/help|meer informasie]]):', 'captcha-createaccount' => 'Vul ter bescharming van disse wiki tegen t automaties anmaken van gebrukers t antwoord op de somme in, in t invoerveld ([[Special:Captcha/help|meer informasie]]):', @@ -2821,11 +2853,11 @@ Voer het antwoord op de onderstaande eenvoudige som in het invoervenster in ([[S Voer ter bescherming tegen geautomatiseerde spam het antwoord op de onderstaande eenvoudige som in in het invoerveld om uw bewerking op te slaan ([[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 in het invoervenster ([[Special:Captcha/help|meer informatie]]):', - 'captcha-createaccount-fail' => 'De bevestigingscode ontbreekt of is onjuist.', + 'captcha-createaccount-fail' => 'De CAPTCHA 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-sendemail-fail' => 'De CAPTCHA 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.', @@ -2910,9 +2942,10 @@ Trykk på «attende»-knappen for å kome tilbake til endringssida.', */ $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', # Fuzzy + 'captcha-desc' => 'Ofèrta de tecnicas CAPTCHA per protegir contra lo spam e la descobèrta dels senhals per ensages multiples', 'captcha-label' => 'CAPTCHA', - '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 :
      ([[Special:Captcha/help|Qu'es aquò?]])", # Fuzzy + 'captcha-addurl' => "Vòstra modificacion inclutz de ligams extèrnes. +Per nos ajudar dins la proteccion contra lo corrièr indesirable automatizat, calculatz l'operacion simpla çaijós e inscrivissètz-ne lo resultat dins lo camp ([[Special:Captcha/help|mai d'informacions]]) :", '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]])", # Fuzzy 'captcha-createaccount' => 'Coma proteccion contra las creacions de compte abusivas, entratz lo resultat de l’addicion dins la bóstia çaijós:
      ([[Special:Captcha/help|mai d’entresenhas]])', # Fuzzy @@ -3052,11 +3085,11 @@ e ch'a buta l'arzulta ant ël quadrèt ([[Special:Captcha/help|për savejne dë 'captcha-badlogin' => "Për goerné la wiki da ij programa ch'a fan ciav fàusse n'automàtich, i-j ciamoma 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 goerné la wiki da ij programa ch'a deurbo dij cont n'automàtich, i-j ciamoma 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-createaccount-fail' => "Ël còde tërbol ò 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à
      ant ël quadrèt ([[Special:Captcha/help|për savejne dë pì]]):", 'captcha-sendemail' => "Për protegi la wiki contra la rumenta automàtica, i-j ciamoma 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-sendemail-fail' => "Ël còdes tërbol ò 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.", @@ -3186,10 +3219,10 @@ $messages['pt-br'] = array( Como prevenção contra sistemas automatizados que inserem spam, será necessário resolver a simples soma abaixo e inserir sua resposta no respectivo campo ([[Special:Captcha/help|detalhes]])', 'captcha-badlogin' => 'Como prevenção contra sistemas automatizados de pesquisa e descoberta de senhas, será necessário resolver a simples soma abaixo e inserir sua resposta no respectivo campo ([[Special:Captcha/help|detalhes]])', 'captcha-createaccount' => 'Para proteger a wiki contra sistemas automatizados de criação de contas, solicitamos que resolva a soma simples apresentada abaixo e introduza a resposta no respectivo campo ([[Special:Captcha/help|mais informações]]):', - 'captcha-createaccount-fail' => 'Código de confirmação incorreto ou não preenchido.', + 'captcha-createaccount-fail' => 'Código de confirmação incorreto ou não preenchido.', # Fuzzy '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' => 'Como proteção ao wiki contra spam automatizado, será necessário resolver a simples soma abaixo e inserir sua resposta no respectivo campo ([[Special:Captcha/help|detalhes]]):', - 'captcha-sendemail-fail' => 'Código de confirmação incorreto ou não preenchido.', + 'captcha-sendemail-fail' => 'Código CAPTCHA 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', @@ -3216,6 +3249,7 @@ Pressione o botão 'voltar' de seu navegador para retornar à página de ediçã * @author AlimanRuna */ $messages['qu'] = array( + 'captcha-badlogin' => 'Wikita kikinmanta millay ruraq yaykuna rima chamqaymanta amachanapaqqa, kay qatiq yapayta ruraspa yapasqata kahachapi yaykuchiy ([[Special:Captcha/help|astawan yachay]]):', 'captchahelp-title' => 'Captcha nisqamanta yanapay', ); @@ -3479,10 +3513,48 @@ Fari clic supra ô buttuni 'back' dû browser pi turnari a la pàggina di mudìf ); /** Scots (Scots) + * @author John Reid * @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]])', # Fuzzy + 'captcha-edit' => 'Tae edit this page, please solve the simple sum ablow an enter the answer in the box ([[Special:Captcha/help|more info]]):', + 'captcha-desc' => 'Provides CAPTCHA techniques fer tae protect again spam an passwaird-guessin', + 'captcha-label' => 'CAPTCHA.', + 'captcha-addurl' => 'Yer eidit inclædes new external airtins. +Tae protect the wiki again autæmated spam, we kindly ask ye tae solve the symple sum ablow an enter the answer in the box in order tae save yer eidit ([[Special:Captcha/help|mair info]]):', + 'captcha-badlogin' => 'Tae protect the wiki fae autaemated passwaird cracking, we kindly ask ye tae solve the symple sum ablow an enter the answer in the box ([[Special:Captcha/help|mair info]]):', + 'captcha-createaccount' => 'Tae protect the wiki fae autæmated accoont creation, we kindly ask ye tae solve the symple sum ablow an enter the answer in the box ([[Special:Captcha/help|mair info]]):', + 'captcha-createaccount-fail' => 'Oncorrect or missing CAPTCHA.', + 'captcha-create' => 'Tae mak the page, please solve the symple sum ablow an enter the answer in the box ([[Special:Captcha/help|mair info]]):', + 'captcha-sendemail' => 'Tae protect the wiki fae autæmated spamming, we kindly ask ye tae solve the symple sum ablow an enter the answer in the box ([[Special:Captcha/help|mair info]]):', + 'captcha-sendemail-fail' => 'Oncorrect or missing CAPTCHA.', + 'captcha-disabledinapi' => 'This action needs ae CAPTCHA, sae it canna be performed through the API.', + 'captchahelp-title' => 'CAPTCHA heelp', + 'captchahelp-cookies-needed' => "Ye'll need tae haee cookies enabled in yer brouser fer this tae wairk.", + 'captchahelp-text' => 'Wab sites that accept postings fae the public, like this wiki, ar aften abused bi spammers wha uise autaemated tuils tae post their links til moni sites. +While these spam links can be remuived, they ar ae signeeficant nuisance. + +Sometimes, especially whan adding new wab links til ae page, the wiki micht shaw ye aen eimage o coloured or distorted tex an ask ye tae type the wairds shawn. +Syne this is ae task that\'s hard tae autæmate, it will allou maist real bodies tae mak their posts while stapping maist spammers an ither robotic attackers. + +Onfortunately this can inconvenience uisers with limited vision or uising tex-based or speech-based brousers. +At the moment we dinna hae aen audio alternative available. +Please contact the [[Special:ListAdmins|site admeenistraters]] fer assistance gif this is onexpectedly preventin ye fae makin legeetimate actions. + +Hit the "back" button in yer brouser tae return til the page eiditer.', + 'captcha-addurl-whitelist' => ' #
      +# Syntax is aes follows:
      +#   * Awthin fae ae "#" chairacter til the end o the line is ae comment
      +#   * Ilka no-blank line is ae regex fragment that will yinly match hosts inside URLs
      + #
      ', + 'right-skipcaptcha' => 'Perform CAPTCHA-triggering actions wiout haein tae gae through the CAPTCHA', +); + +/** Serbo-Croatian (srpskohrvatski / српскохрватски) + * @author Kolega2357 + */ +$messages['sh'] = array( + 'captcha-createaccount-fail' => 'Netačan unos ili nedostatak koda za potvrđivanje.', ); /** Sinhala (සිංහල) @@ -3632,6 +3704,7 @@ Shtypni butonin "prapa" ("back") të shfletuesit tuaj për tu kthyer tek faqja e ); /** Serbian (Cyrillic script) (српски (ћирилица)‎) + * @author Milicevic01 * @author Millosh * @author Rancher */ @@ -3641,31 +3714,46 @@ $messages['sr-ec'] = array( 'captcha-addurl' => 'Ваша измена садржи нове спољашње везе. У циљу заштите од непожељних порука, решите просту рачуницу испод и унесите одговор у поље ([[Special:Captcha/help|више информација]]):', # Fuzzy 'captcha-badlogin' => 'У циљу заштите од пробијања лозинки, решите просту рачуницу испод и унесите одговор у поље ([[Special:Captcha/help|више информација]]):', # Fuzzy - 'captcha-createaccount' => 'У циљу заштите од самоотварања налога, решите просту рачуницу испод и унесите одговор у поље ([[Special:Captcha/help|више информација]]):', # Fuzzy - 'captcha-createaccount-fail' => 'Неправилан или непостојећи код за потврду.', + 'captcha-createaccount' => 'У циљу заштите од аутоматизованог вандализма, решите просту рачуницу испод и унесите одговор у поље ([[Special:Captcha/help|више информација]]):', + 'captcha-createaccount-fail' => 'Неправилан или непостојећи код за потврду.', # Fuzzy 'captcha-create' => 'Да бисте направили страницу, решите просту рачуницу испод и унесите одговор у поље ([[Special:Captcha/help|више информација]]):', 'captcha-sendemail' => 'У циљу заштите од слања непожељних порука, решите просту рачуницу испод и унесите одговор у поље ([[Special:Captcha/help|више информација]]):', # Fuzzy - 'captcha-sendemail-fail' => 'Неправилан или непостојећи код за потврду.', - 'captchahelp-title' => 'Помоћ око потврдног кôда', + 'captcha-sendemail-fail' => 'Неправилан или непостојећи код за потврду.', # Fuzzy + 'captchahelp-title' => 'Помоћ око потврдног кoда', 'captchahelp-cookies-needed' => 'Потребно је да омогућите колачиће да би ово радило.', + 'captchahelp-text' => 'Веб-сајтове који подржавају слање садржаја из јавности, као што је овај вики, често злоупотребљавају вандали који користе аутоматизоване алате да шаљу своје повезнице ка многим сајтовима. Иако се ове нежељене повезнице могу уклонити, оне задају велику муку. + +Понекад, поготово када се додају нове интернет повезнице на страну, вики софтвер вам може показати слику обојеног и изврнутог текста и тражити да укуцате тражену реч. Пошто је тешко аутоматизовати овакав задатак, он омогућује свим правим људима да врше своје измене, али ће зато спречити вандале и остале роботске нападаче. + +Нажалост, ово може да буде неповољно за кориснике са ограниченим видом и за оне који користе прегледаче базиране на тексту или говору. У овом тренутку, аудио алтернатива није доступна. Молимо контактирајте администраторе сајта ради помоћи ако вас ово неочекивано омета у прављењу добрих измена. + +Кликните на дугме „назад“ вашег прегледача да се вратите на поље за унос текста.', # Fuzzy 'right-skipcaptcha' => 'прескакање радњи које захтевају унос потврдног кода', ); /** Serbian (Latin script) (srpski (latinica)‎) * @author Michaello + * @author Milicevic01 */ $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' => 'Pruža zaštitu protiv nepoželjnih poruka u vidu potvrdnog koda', '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]]):', # Fuzzy '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]]):', # Fuzzy - 'captcha-createaccount' => 'U cilju zaštite od automatskog stvaranja naloga, reši jednostavan zbir dole i unesi ga u kutiju ([[Special:Captcha/help|detaljnije]]):', # Fuzzy - 'captcha-createaccount-fail' => 'Nepravilan ili nepostojeći kod za potvrdu.', + 'captcha-createaccount' => 'U cilju zaštite od automatizovanog vandalizma, rešite prostu računicu ispod i unesite odgovor u polje ([[Special:Captcha/help|više informacija]]):', + 'captcha-createaccount-fail' => 'Nepravilan ili nepostojeći kod za potvrdu.', # Fuzzy 'captcha-create' => 'Za stvaranje strane reši jednostavan zbir dole i unesi ga u kutiju ([[Special:Captcha/help|detaljnije]]):', - 'captcha-sendemail-fail' => 'Nepravilan ili nepostojeći kod za potvrdu.', - 'captchahelp-title' => 'pomoć za kapču', + 'captcha-sendemail-fail' => 'Nepravilan ili nepostojeći kod za potvrdu.', # Fuzzy + 'captchahelp-title' => 'Pomoć oko potvrdnog koda', '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.', + 'captchahelp-text' => 'Veb-sajtove koji podržavaju slanje sadržaja iz javnosti, kao što je ovaj viki, često zloupotrebljavaju vandali koji koriste automatizovane alate da šalju svoje poveznice ka mnogim sajtovima. Iako se ove neželjene poveznice mogu ukloniti, one zadaju veliku muku. + +Ponekad, pogotovo kada se dodaju nove internet poveznice na stranu, viki softver vam može pokazati sliku obojenog i izvrnutog teksta i tražiti da ukucate traženu reč. Pošto je teško automatizovati ovakav zadatak, on omogućuje svim pravim ljudima da vrše svoje izmene, ali će zato spreč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 pregledače bazirane na tekstu ili govoru. U ovom trenutku, audio alternativa nije dostupna. Molimo kontaktirajte administratore sajta radi pomoći ako vas ovo neočekivano ometa u pravljenju dobrih izmena. + +Kliknite na dugme „nazad“ vašeg pregledača da se vratite na polje za unos teksta.', # Fuzzy + 'right-skipcaptcha' => 'preskakanje radnji koje zahtevaju unos potvrdnog koda', ); /** Seeltersk (Seeltersk) @@ -3734,6 +3822,7 @@ Hit the 'back' button in your browser to return to the page editor.", # Fuzzy * @author Martinwiss * @author Per * @author Rotsee + * @author WikiPhoenix */ $messages['sv'] = array( 'captcha-edit' => 'För att redigera den här sidan måste du först skriva svaret på följande @@ -3743,11 +3832,11 @@ räkneuppgift i rutan ([[Special:Captcha/help|mer information]]):', 'captcha-addurl' => 'Din ändring innebär 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 försök att knäcka lösenord på automatisk väg, 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-createaccount-fail' => 'Felaktig eller saknad CAPTCHA.', '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' => 'För att skydda wikin mot spam, ber vi dig att lösa den här enkla räkneuppgiften, och skriva in svaret i rutan ([[Special:Captcha/help|mer information]]):', - 'captcha-sendemail-fail' => 'Felaktig eller saknad bekräftelsekod.', + 'captcha-sendemail-fail' => 'Felaktig eller saknad CAPTCHA.', '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.', @@ -3977,13 +4066,13 @@ $messages['tr'] = array( 'captcha-desc' => 'Spam ve parola tahminine karşı korunmak için "Güvenlik Kodu" (CAPTCHA) tekniği sağlar.', 'captcha-label' => 'Güvenlik Kodu', '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 yanıtlayın ve yanıtı kutunun içine yazın ([[Special:Captcha/help|ayrıntılı bilgi]]):', # Fuzzy - 'captcha-badlogin' => 'Otomatik parola çözülmesine karşı korunmak için, lütfen aşağıdaki basit soruyu yanıtlayın ve kutunın içinde yanıtı yazın ([[Special:Captcha/help|ayrıntılı bilgi]]):', # Fuzzy - 'captcha-createaccount' => 'Otomatik hesap oluşturmaya karşı korunmak için, lütfen aşağıdaki basit soruyu yanıtlayın ve kutunın içinde yanıtı yazın ([[Special:Captcha/help|ayrıntılı bilgi]]):', # Fuzzy - 'captcha-createaccount-fail' => 'Hatalı ya da eksik onay kodu.', +Vikiyi otomatik spamdan korumak ve değişikliğinizi kaydetmek için, aşağıdaki basit toplamı çözmenizi ve yanıtı kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):', + 'captcha-badlogin' => 'Vikiyi otomatik parola çözülmesine karşı korumak için, aşağıdaki basit toplamı çözmenizi ve yanıtı kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):', + 'captcha-createaccount' => 'Vikiyi otomatik hesap oluşturmaya karşı korumak için, aşağıdaki basit toplamı çözmenizi ve yanıtı kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):', + 'captcha-createaccount-fail' => 'Hatalı ya da eksik CAPTCHA.', 'captcha-create' => 'Bu sayfayı oluşturmak için, lütfen aşağıdaki basit soruyu yanıtlayın ve kutunun içinde yanıtı yazın ([[Special:Captcha/help|ayrıntılı bilgi]]):', - 'captcha-sendemail' => 'Otomatik spamlara karşı korunmaya yardımcı olmak için, lütfen aşağıdaki basit işlemi çözün ve yanıtı kutuya yazın ([[Special:Captcha/help|ayrıntılı bilgi]]):', # Fuzzy - 'captcha-sendemail-fail' => 'Hatalı ya da eksik onay kodu.', + 'captcha-sendemail' => 'Vikiyi otomatik spamlara karşı korumaya yardımcı olmak için, aşağıdaki basit toplamı çözmenizi ve yanıtı kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):', + 'captcha-sendemail-fail' => 'Hatalı ya da eksik CAPTCHA.', 'captcha-disabledinapi' => 'Bu eylem güvenlik kodu gerektiriyor, dolayısıyla API aracılığıyla yapılamaz.', 'captchahelp-title' => 'Güvenlik kodu yardımı', 'captchahelp-cookies-needed' => 'Bunun çalışabilmesi için tarayıcınızın çerezleri etkinleştirilmelidir.', @@ -4012,6 +4101,7 @@ $messages['tru'] = array( /** Ukrainian (українська) * @author Ahonc * @author Alex Khimich + * @author Andriykopanytsia * @author NickK * @author Olvin * @author Riwnodennyk @@ -4026,10 +4116,10 @@ $messages['uk'] = array( Із метою захисту від автоматичного спаму, будь ласка, виконайте просту арифметичну дію і введіть відповідь у текстове поле, щоб редагування було збережене ([[Special:Captcha/help|докладніше]]):', 'captcha-badlogin' => 'Із метою захисту від автоматичного злому пароля, будь ласка, виконайте просту арифметичну дію і введіть відповідь у текстове поле ([[Special:Captcha/help|докладніше]]):', 'captcha-createaccount' => 'Із метою захисту від автоматичного створення облікового запису просимо виконати просту арифметичну дію і ввести відповідь у текстове поле ([[Special:Captcha/help|докладніше]]):', - 'captcha-createaccount-fail' => 'Неправильний або відсутній код підтвердження.', + 'captcha-createaccount-fail' => 'Неправильна або відсутня капча.', 'captcha-create' => 'Щоб створити сторінку, будь ласка, виконайте просту арифметичну дію і введіть відповідь у текстове поле ([[Special:Captcha/help|докладніше]]):', 'captcha-sendemail' => "Із метою захисту вікі від автоматичного спаму просимо розв'язати простий математичний приклад і ввести відповідь ([[Special:Captcha/help|деталі]]):", - 'captcha-sendemail-fail' => 'Неправильний або відсутній код підтвердження.', + 'captcha-sendemail-fail' => 'Неправильна або відсутня капча.', 'captcha-disabledinapi' => 'Ця дія потребує перевірки CAPTCHA, тому не може бути здійснена за допомогою API.', 'captchahelp-title' => 'Довідка про CAPTCHA', 'captchahelp-cookies-needed' => 'Вам потрібно ввімкнути куки у браузері, щоб ця функція запрацювала.', @@ -4095,11 +4185,11 @@ $messages['vi'] = array( 'captcha-addurl' => 'Sửa đổi của bạn có chứa các liên kết ra bên ngoài. Để tránh spam tự động trong wiki, xin bạn vui lòng giải phép toán đơn giản ở dưới và nhập kết quả vào ô để lưu giữ các sửa đổi của bạn ([[Special:Captcha/help|thông tin thêm]]):', 'captcha-badlogin' => 'Để tránh vụ tự động bẻ mật khẩu của người dùng wiki, xin bạn vui lòng giải phép cộng đơn giản ở dưới và nhập kết quả vào ô ([[Special:Captcha/help|thông tin thêm]]):', 'captcha-createaccount' => 'Để tránh vụ tự động mở tài khoản trong wiki, xin bạn vui lòng giải phép cộng đơn giản ở dưới và nhập 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-createaccount-fail' => 'CAPTCHA bị thiếu hoặc không chính xác.', '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 bạn vui lòng giải phép cộng đơn giản ở dưới và nhập kết quả 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-sendemail-fail' => 'CAPTCHA bị thiếu hoặc không chính xác.', '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.', @@ -4128,7 +4218,8 @@ Nhấn chuột vào nút “Back” của trình duyệt để trở lại trang */ $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]]):', # Fuzzy + 'captcha-addurl' => 'Redakam olik keninükon yümis plödik nulik. +Ad jelön siti ta peneds badik itjäfidik, dunolös, begö! saedami balugik sököl, e penolös saedoti in bokil ad dakipön redakam ola ([[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]]):', # Fuzzy '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]]):', # Fuzzy 'captcha-createaccount-fail' => 'Kot fümükama paneveräton u paseleton.', diff --git a/extensions/ConfirmEdit/ConfirmEdit.php b/extensions/ConfirmEdit/ConfirmEdit.php index d861a04a..f0836973 100644 --- a/extensions/ConfirmEdit/ConfirmEdit.php +++ b/extensions/ConfirmEdit/ConfirmEdit.php @@ -189,6 +189,8 @@ $wgHooks['EmailUser'][] = 'ConfirmEditHooks::confirmEmailUser'; $wgHooks['APIEditBeforeSave'][] = 'ConfirmEditHooks::confirmEditAPI'; $wgHooks['APIGetAllowedParams'][] = 'ConfirmEditHooks::APIGetAllowedParams'; $wgHooks['APIGetParamDescription'][] = 'ConfirmEditHooks::APIGetParamDescription'; +$wgHooks['AddNewAccountApiForm'][] = 'ConfirmEditHooks::addNewAccountApiForm'; +$wgHooks['AddNewAccountApiResult'][] = 'ConfirmEditHooks::addNewAccountApiResult'; $wgAutoloadClasses['ConfirmEditHooks'] = "$wgConfirmEditIP/ConfirmEditHooks.php"; $wgAutoloadClasses['SimpleCaptcha'] = "$wgConfirmEditIP/Captcha.php"; @@ -196,7 +198,6 @@ $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 diff --git a/extensions/ConfirmEdit/ConfirmEditHooks.php b/extensions/ConfirmEdit/ConfirmEditHooks.php index bc85138d..af8b9c44 100644 --- a/extensions/ConfirmEdit/ConfirmEditHooks.php +++ b/extensions/ConfirmEdit/ConfirmEditHooks.php @@ -4,7 +4,7 @@ class ConfirmEditHooks { /** * Get the global Captcha instance * - * @return Captcha|SimpleCaptcha + * @return SimpleCaptcha */ static function getInstance() { global $wgCaptcha, $wgCaptchaClass; @@ -26,13 +26,21 @@ class ConfirmEditHooks { static function confirmEditAPI( $editPage, $newtext, &$resultArr ) { return self::getInstance()->confirmEditAPI( $editPage, $newtext, $resultArr ); } + + static function addNewAccountApiForm( $apiModule, $loginForm ) { + return self::getInstance()->addNewAccountApiForm( $apiModule, $loginForm ); + } + + static function addNewAccountApiResult( $apiModule, $loginPage, &$result ) { + return self::getInstance()->addNewAccountApiResult( $apiModule, $loginPage, $result ); + } static function injectUserCreate( &$template ) { return self::getInstance()->injectUserCreate( $template ); } - static function confirmUserCreate( $u, &$message ) { - return self::getInstance()->confirmUserCreate( $u, $message ); + static function confirmUserCreate( $u, &$message, &$status = null ) { + return self::getInstance()->confirmUserCreate( $u, $message, $status ); } static function triggerUserLogin( $user, $password, $retval ) { diff --git a/extensions/ConfirmEdit/FancyCaptcha.class.php b/extensions/ConfirmEdit/FancyCaptcha.class.php index d1c6a41f..e2dbb82b 100644 --- a/extensions/ConfirmEdit/FancyCaptcha.class.php +++ b/extensions/ConfirmEdit/FancyCaptcha.class.php @@ -14,7 +14,8 @@ class FancyCaptcha extends SimpleCaptcha { if ( !$backend ) { $backend = new FSFileBackend( array( 'name' => 'captcha-backend', - 'lockManager' => 'nullLockManager', + 'wikiId' => wfWikiId(), + 'lockManager' => new NullLockManager( array() ), 'containerPaths' => array( 'captcha-render' => $wgCaptchaDirectory ), 'fileMode' => 777 ) ); diff --git a/extensions/ConfirmEdit/FancyCaptcha.i18n.php b/extensions/ConfirmEdit/FancyCaptcha.i18n.php index 7f28d048..b5a262c8 100644 --- a/extensions/ConfirmEdit/FancyCaptcha.i18n.php +++ b/extensions/ConfirmEdit/FancyCaptcha.i18n.php @@ -37,7 +37,8 @@ $messages['qqq'] = array( 'fancycaptcha-create' => '{{Related|ConfirmEdit-create}}', 'fancycaptcha-edit' => '{{Related|ConfirmEdit-edit}}', 'fancycaptcha-sendemail' => '{{Related|ConfirmEdit-sendemail}}', - 'fancycaptcha-reload-text' => 'Prompts a click to get a new FancyCaptcha image.', + 'fancycaptcha-reload-text' => 'Prompts a click to get a new FancyCaptcha image. +{{Identical|Refresh}}', ); /** Gheg Albanian (Gegë) @@ -76,19 +77,21 @@ $messages['an'] = array( /** Arabic (العربية) * @author Aiman titi + * @author Asaifm * @author Meno25 */ $messages['ar'] = array( 'fancycaptcha-desc' => 'مولد فانسي كابتشا لConfirm Edit', 'fancycaptcha-addurl' => 'تعديلك يتضمن وصلات خارجية جديدة. -للحماية من السبام الأوتوماتيكي، من فضلك أدخل الكلمات التي تظهر بالأسفل في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):', # Fuzzy - 'fancycaptcha-badlogin' => 'للمساعدة في الحماية ضد سرقة كلمات السر، من فضلك أدخل الكلمات التي تظهر بالأسفل في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):', # Fuzzy - 'fancycaptcha-createaccount' => 'للمساعدة في منع إنشاء حسابات بطريقة أوتوماتيكية، قم من فضلك بإدخال الكلمات التي تظهر أدناه في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):', # Fuzzy +للحماية من السخام الأوتوماتيكي، من فضلك أدخل الكلمات التي تظهر بالأسفل في الصندوق ([[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|مزيد من المعلومات]]):', # Fuzzy + 'fancycaptcha-sendemail' => 'للمساعدة في منع إنشاء حسابات بطريقة أوتوماتيكية، قم من فضلك بإدخال الكلمات التي تظهر أدناه في الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):', + 'fancycaptcha-reload-text' => 'تحديث', ); /** Egyptian Spoken Arabic (مصرى) @@ -272,7 +275,7 @@ $messages['cdo'] = array( * @author Умар */ $messages['ce'] = array( - 'fancycaptcha-addurl' => 'Хьан нисдар чохь керла арахьара хьажоригаш ю. Спамах лардала дерхар до лахахь гура чохь гайтан дешнаш язъе ([[Special:Captcha/help|ма-дарра…]]):', # Fuzzy + 'fancycaptcha-addurl' => 'Хьан нисдар чохь керла арахьара хьажорагаш ю. Спамах лардала дехар до лахахь гура чохь гайтан дешнаш язъе ([[Special:Captcha/help|ма-дарра…]]):', ); /** Sorani Kurdish (کوردی) @@ -282,21 +285,23 @@ $messages['ckb'] = array( 'fancycaptcha-createaccount' => 'بۆ یارمەتیدانی بەرگری لە دروستکردنی خۆکاری ھەژمار، تکایە ئەو وشانە لە خوارەوەدا دیارن لە بۆکسەکەدا بنووسە ([[Special:Captcha/help|زانیاریی زۆرتر]]):', # Fuzzy ); -/** Czech (česky) +/** Czech (čeština) * @author Mormegil + * @author Tchoř */ $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á?]])', # Fuzzy - '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á?]])', # Fuzzy - '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á?]])', # Fuzzy + 'fancycaptcha-addurl' => 'Vaše editace obsahuje nové odkazy formou URL. +Abychom wiki ochránili před automatizovaným spamováním, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):', + 'fancycaptcha-badlogin' => 'Abychom wiki ochránili proti automatizovaným pokusům uhodnout heslo, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):', + 'fancycaptcha-createaccount' => 'Abychom wiki ochránili proti automatizovanému zakládání účtů, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):', '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í]]):', # Fuzzy + 'fancycaptcha-sendemail' => 'Abychom wiki ochránili proti automatizovanému spamování, žádáme vás o opsání textu z následujícího obrázku ([[Special:Captcha/help|více informací]]):', 'fancycaptcha-reload-text' => 'Vygenerovat nový kód', ); -/** Church Slavic (словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) +/** Church Slavic (словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) * @author ОйЛ */ $messages['cu'] = array( @@ -326,7 +331,7 @@ Er mwyn arbed y wici rhag peiriannau sbam, byddwch gystal â theipio'r geiriau a $messages['da'] = array( 'fancycaptcha-addurl' => 'Din ændring tilføjer nye eksterne henvisninger. For at beskytte mod automatiseret spam, skal du indtaste ordene som vises i feltet nedenfor. ([[Special:Captcha/help|mere information]]):', - 'fancycaptcha-badlogin' => 'For at beskytte mod automatiske forsøg på at gætte kodeord, skal du indtaste ordene som vises i feltet nedenfor. ([[Special:Captcha/help|mere information]]):', + 'fancycaptcha-badlogin' => 'For at beskytte mod automatiske forsøg på at gætte adgangskoden, skal du indtaste ordene som vises i feltet nedenfor. ([[Special:Captcha/help|mere information]]):', 'fancycaptcha-createaccount' => 'For at beskytte mod automatisk oprettelse af brugerkonti, der bruges til spam, skal du indtaste ordet som vises i feltet nedenfor. ([[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' => 'For at redigere denne side, indtast da venligst ordene, der står i feltet nedenfor ([[Special:Captcha/help|mere information]]):', @@ -368,17 +373,18 @@ Zum Schutz vor automatisiertem Spamming geben Sie das folgende Wort in das Feld /** Zazaki (Zazaki) * @author Gorizon + * @author Mirzali * @author Xoser */ $messages['diq'] = array( - 'fancycaptcha-addurl' => 'Vırnayışané tod linkané hariciyé newe esto. -Qe otomatik spami ra pawıtış, ma rica keno çekuyané ke qutiya cor de inan binuse ([[Special:Captcha/help|enformasyoné bini]]):', - '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î]]):', # Fuzzy - '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î]]):', # Fuzzy + 'fancycaptcha-addurl' => 'Vurnayışanê to de gıreyê teberiê newey estê. +Seba pawıtışê spamê otomatiki ra, ma reca kenime ke çekuyanê cêrênan zerreyê qutiye de bınusê ([[Special:Captcha/help|zêde melumat]]):', + '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î]]):', # Fuzzy +([[Special:Captcha/help|enformasyonê bînî]]):', 'fancycaptcha-reload-text' => 'Newe ke', ); @@ -387,12 +393,13 @@ Qe otomatik spami ra pawıtış, ma rica keno çekuyané ke qutiya cor de inan b */ $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]]):', # Fuzzy - '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]]):', # Fuzzy - '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]]):', # Fuzzy +Aby wiki pśeśiwo awtomatiskemu spamowanjeju šćitał, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):', + 'fancycaptcha-badlogin' => 'Aby wiki pśeśiwo awtomatiskemu wugódanjeju gronidła šćitał, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):', + 'fancycaptcha-createaccount' => 'Aby wiki pśeśiwo awtomatiskemu załoženjeju kontow šćitał, 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]]):', # Fuzzy + 'fancycaptcha-sendemail' => 'Aby wiki pśeśiwo awtomatiskemu spamowanjeju šćitał, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):', + 'fancycaptcha-reload-text' => 'Aktualizěrowaś', ); /** Greek (Ελληνικά) @@ -461,12 +468,13 @@ Palun sisesta allpool olevas kastis kuvatud sõnad. Abinõu on kaitseks automaad /** Basque (euskara) * @author An13sa + * @author Xabier Armendaritz */ $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]]):', # Fuzzy 'fancycaptcha-badlogin' => 'Pasahitzen cracking automatikoa saihestu asmoz, beheko koadroan ageri diren hitzak idazteko eskatzen dizugu ([[Special:Captcha/help|informazio gehigarria]]):', # Fuzzy 'fancycaptcha-createaccount' => 'Erabiltzaile kontuak automatikoki sortzea saihestu asmoz, beheko koadroan ageri diren hitzak idazteko eskatzen dizugu ([[Special:Captcha/help|informazio gehigarria]]):', # Fuzzy - 'fancycaptcha-create' => 'Orrialde sortu ahal izateko, beheko koadroan ageri hitzak idatzi ([[Special:Captcha/help|informazio gehigarria]]):', + 'fancycaptcha-create' => 'Orri sortu ahal izateko, idatz itzazu beheko koadroan ageri diren hitzak ([[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]]):', # Fuzzy ); @@ -481,13 +489,13 @@ $messages['eu'] = array( */ $messages['fa'] = array( 'fancycaptcha-addurl' => 'ویرایش شما حاوی پیوند به بیرون جدیدی است. -برای کمک به جلوگیری از هرزنگاری خودکار، لطفاً واژه‌ای را که در تصویر می‌بینید در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', # Fuzzy +برای جلوگیری از هرزنگاری خودکار ویکی، ما با احترام از شما می‌خواهیم واژه‌ای را که در تصویر می‌بینید در جعبهٔ زیر وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', 'fancycaptcha-badlogin' => 'برای کمک به جلوگیری از شکستن خودکار گذرواژه، لطفاً واژه‌ای را که در تصویر می‌بینید را وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', - 'fancycaptcha-createaccount' => 'برای کمک به جلوگیری از ایجاد خودکار حساب کاربری، لطفاً واژه‌ای را که در تصویر می‌بینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', # Fuzzy + 'fancycaptcha-createaccount' => 'برای کمک به جلوگیری از ایجاد خودکار حساب کاربری، ما با احترام از شما می‌خواهید واژه‌ای را که در تصویر می‌بینید را در جعبهٔ زیر وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', 'fancycaptcha-create' => 'برای ایجاد این صفحه، لطفاً واژه‌ای را که در تصویر می‌بینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', 'fancycaptcha-edit' => 'برای ویرایش این صفحه، لطفاً واژه‌ای را که در تصویر می‌بینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', - 'fancycaptcha-sendemail' => 'برای کمک به محافظت در برابر هرزه‌نگاری خودکار، لطفاً واژه‌هایی را که در جعبهٔ زیر نمایش داده می‌شوند وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', # Fuzzy - 'fancycaptcha-reload-text' => 'تازه کردن', + 'fancycaptcha-sendemail' => 'برای کمک به محافظت در برابر هرزه‌نگاری خودکار، ما با احترام از شما می‌خواهیم واژه‌هایی را که در جعبهٔ زیر نمایش داده می‌شوند وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):', + 'fancycaptcha-reload-text' => 'تازه‌کردن', ); /** Finnish (suomi) @@ -594,18 +602,19 @@ Zum Schutz vor automatisiertem Spamming gib des Wort in s Fäld unten yy. Druck ); /** Gujarati (ગુજરાતી) + * @author Ashok modhvadia * @author Dsvyas * @author Sushant savla */ $messages['gu'] = array( - 'fancycaptcha-addurl' => 'તમારા ફેરફારમાં નવી બાહ્ય કડીઓ શામિલ છે. -તમે કરેલા ફેરફારોમાં નવી બાહ્ય કડીઓ સામેલ છે. સ્વચાલિત સ્પેમ/સ્પામ(spam) થી બચવા માટે નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજુના ખાનામાં લખો -([[Special:Captcha/help|more info]]):', # Fuzzy - 'fancycaptcha-badlogin' => 'આપોઆપ થતી ગુપ્તસંજ્ઞાની ચોરી (password cracking)થી બચાવવા માટે નીચે આપેલા શબ્દ તેની બાજુના ખાનામાં લખો ([[Special:Captcha/help|more info]]):', # Fuzzy - 'fancycaptcha-createaccount' => 'આપોઆપ નવા ખાતા ખુલતા રોકવા માટે નીચે દેખાતા શબ્દો ખાનામાં લખો ([[Special:Captcha/help|વધુ માહિતી]]):', # Fuzzy + 'fancycaptcha-addurl' => 'તમે કરેલા ફેરફારોમાં નવી બાહ્ય કડીઓ સામેલ છે. +વિકિને સ્વચાલિત સ્પેમ/સ્પામ(spam)થી બચાવવા માટે અમે તમને જણાવીએ છીએ કે કૃપયા નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજુના ખાનામાં લખો. +([[Special:Captcha/help|વધુ વિગત]]):', + 'fancycaptcha-badlogin' => 'આપોઆપ થતી ગુપ્તસંજ્ઞાની ચોરી (password cracking)થી વિકિને બચાવવા માટે અમે તમને જણાવીએ છીએ કે કૃપયા નીચે આપેલા શબ્દ તેની બાજુના ખાનામાં લખો. ([[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]]):', # Fuzzy + 'fancycaptcha-sendemail' => 'વિકિને આપોઆપ થતી સ્પૅમીંગથી બચાવવા માટે. અમે તમને જણાવીએ છીએ કે કૃપયા નીચે આપેલા શબ્દ તેની બાજુના ખાનામાં લખો ([[Special:Captcha/help|વધુ માહિતી]]):', ); /** Hebrew (עברית) @@ -657,12 +666,13 @@ slova koja vidite na slici dolje:
      ([[Special:Captcha/help|Pomoć]])', * @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?]]).', # Fuzzy - '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?]]):', # Fuzzy - '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?]]):', # Fuzzy + 'fancycaptcha-addurl' => 'W twojej změnje su nowe eksterne wotkazy. Jako škitnu naprawu přećiwo awtomatiskemu spamej zapodaj prošu slědowace znamješka do kašćika ([[Special:Captcha/help|dalše informacije]]):', + 'fancycaptcha-badlogin' => 'Zo by wiki přećiwo awtomatiskemu kradnjenju hesłow škitał, prosymy će, slědowace słowa do kašćika zapisować ([[Special:Captcha/help|dalše informacije]]):', + 'fancycaptcha-createaccount' => 'Jako škitna naprawa přećiwo awtomatiskemu wutworjenju wužiwarskich kontow, zapodaj prošu slědowace słowa do kašćika ([[Special:Captcha/help|dalše informacije]]):', '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]]):', # Fuzzy + 'fancycaptcha-sendemail' => 'Za škit přećiwo awtomatiskemu spamowanju, zapodaj prošu słowa, kotrež so deleka w kašćiku jewja ([[Special:Captcha/help|dalše informacije]]):', + 'fancycaptcha-reload-text' => 'Aktualizować', ); /** Hungarian (magyar) @@ -711,13 +721,13 @@ $messages['id'] = array( * @author Lam-ang */ $messages['ilo'] = array( - 'fancycaptcha-addurl' => 'Ti inurnos mo ket adda nagyan na a baro a panilpo ti ruar. -Tapno masalakniban kadagiti automatiko a spam, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', # Fuzzy - 'fancycaptcha-badlogin' => 'Tapno masalakniban kadagiti automatiko a pinagsulbar ti kontrasenias, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', # Fuzzy - 'fancycaptcha-createaccount' => 'Tapno makasalaknib kadagiti automatiko a pinagaramid ti pakabilangan, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', # Fuzzy + 'fancycaptcha-addurl' => 'Dagiti inurnosmo ket aglaon kadagiti baro a silpo ti ruar. +Tapno masalakniban ti wiki kadagiti automatiko nga spam, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):', + 'fancycaptcha-badlogin' => 'Tapno masalakniban kadagiti automatiko a panagsulbar ti kontrasenias, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):', + 'fancycaptcha-createaccount' => 'Tapno makasalakniban ti wiki kadagiti automatiko a panagpartuat ti pakabilangan, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):', 'fancycaptcha-create' => 'Tapno makaaramid ti panid, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', 'fancycaptcha-edit' => 'Tapno makaurnos daytoy a panid, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', - 'fancycaptcha-sendemail' => 'Tapno makasalaknib kadagiti automatiko a pinagspam, pangaasim nga ikabil ti balikas nga agparang dita baba a kahon. ([[Special:Captcha/help|adu pay a pakaammo]]):', # Fuzzy + 'fancycaptcha-sendemail' => 'Tapno makasalakniban ti wiki kadagiti automatiko a panag-spam, naemmakami nga agdawat nga ikabilmo dagiti balikas nga agparang dita baba iti kahon ([[Special:Captcha/help|adu pay a pakaammo]]):', 'fancycaptcha-reload-text' => 'Pasadiwaen', ); @@ -770,11 +780,12 @@ $messages['ja'] = array( ); /** Jutish (jysk) + * @author Christian List * @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]]):', # Fuzzy - '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]]):', # Fuzzy + 'fancycaptcha-badlogin' => 'For at beskytte mod automatiske forsøg på at gætte adgangskoden, skal du indtaste ordet som vises i feltet nedenfor. ([[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]]):', # Fuzzy '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 @@ -782,28 +793,33 @@ $messages['jut'] = array( ); /** Javanese (Basa Jawa) + * @author Bennylin * @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]]):', # Fuzzy - '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]]):', # Fuzzy - '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]]):', # Fuzzy + '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 ngreksa lawan parengkahan tembung sandhi otomatis, tulung lebokna ukara ing ngisor iki menyang sajroning kothak sing wis sumedya ([[Special:Captcha/help|info sabanjuré]]):', + 'fancycaptcha-createaccount' => 'Kanggo ngreksa lawan panggawéyan rékening (akun) otomatis, tulung lebokna ukara ing ngisor iki menyang sajroning kothak ([[Special:Captcha/help|info sabanjuré]]):', '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]]):', + 'fancycaptcha-sendemail' => 'Kanggo ngreksa lawan spam otomatis, tulung lebokna ukara ing ngisor iki menyang sajroning kothak sing wis sumedya ([[Special:Captcha/help|info sabanjuré]]):', + 'fancycaptcha-reload-text' => 'Anyarana', ); /** Georgian (ქართული) * @author David1010 * @author ITshnik + * @author Tokoko */ $messages['ka'] = array( 'fancycaptcha-addurl' => 'თქვენი ცვლილება შეიცავს ახალ გარე ბმულებს. -ავტომატური სპამინგისგან თავდაცვის მიზნით, გთხოვთ, შეიყვანოთ ქვემოთ მოცემული სიტყვები ყუთში ([[Special:Captcha/help|მეტი ინფორმაცია]]):', # Fuzzy - 'fancycaptcha-badlogin' => 'პაროლების ავტომატური გატეხვისგან თავდაცვის მიზნით, გთხოვთ, შეიყვანოთ ქვემოთ მოცემული სიტყვები ყუთში ([[Special:Captcha/help|მეტი ინფორმაცია]]):', # Fuzzy - 'fancycaptcha-createaccount' => 'ანგარიშების ავტომატური რეგისტრაციისაგან თავდაცვის მიზნით, გთხოვთ, შეიყვანოთ ნაჩვენები სიმბოლოები ტექსტურ ველში ([[Special:Captcha/help|დეტალურად]]):', # Fuzzy +ვიკის ავტომატური სპამინგისგან თავდაცვის მიზნით, ჩვენ მოგიწოდებთ, შეიყვანოთ ქვემოთ მოცემული სიტყვები ყუთში ([[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|მეტი ინფორმაცია]]):', # Fuzzy + 'fancycaptcha-sendemail' => 'ვიკის ავტომატური სპამისაგან თავდაცვის მიზნით, ჩვენ მოგიწოდებთ, შეიყვანოთ ქვევით ნაჩვენები სიტყვა ტექსტურ ველში ([[Special:Captcha/help|მეტი ინფორმაცია]]):', + 'fancycaptcha-reload-text' => 'განახლება', ); /** Kara-Kalpak (Qaraqalpaqsha) @@ -868,9 +884,9 @@ tömendegi körsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/h $messages['km'] = array( 'fancycaptcha-addurl' => 'កំណែប្រែរបស់អ្នកមានតំណភ្ជាប់ខាងក្រៅ។ -ដើម្បីការពារពីស្ប៉ាម(spam)ស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', # Fuzzy - 'fancycaptcha-badlogin' => 'ដើម្បីការពារការបំបែកពាក្យសំងាត់ដោយស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', # Fuzzy - 'fancycaptcha-createaccount' => 'ដើម្បីការពារការបង្កើតគណនីដោយស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', # Fuzzy +ដើម្បីការពារពីស្ប៉ាមស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', + 'fancycaptcha-badlogin' => 'ដើម្បីការពារការបំបែកពាក្យសម្ងាត់ដោយស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', + 'fancycaptcha-createaccount' => 'ដើម្បីការពារការបង្កើតគណនីដោយស្វ័យប្រវត្តិ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', 'fancycaptcha-create' => 'ដើម្បីបង្កើតទំព័រនេះ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', 'fancycaptcha-edit' => 'ដើម្បីកែប្រែទំព័រនេះ សូមបញ្ជូលពាក្យខាងក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|ព័ត៌មានបន្ថែម]])៖', ); @@ -904,20 +920,21 @@ $messages['krc'] = array( */ $messages['ksh'] = array( 'fancycaptcha-desc' => 'Määt e nett Käptsche för dä Confirm Edit 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)', # Fuzzy + 'fancycaptcha-addurl' => 'Do häß neuje Lengks op frembde Websigge dobei jedonn. +Mer schöze ons Wiki jäje automattesche SPAM, dröm +don di Wööter en dat Käßje endraare. ([[Special:Captcha/help|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)', # Fuzzy +endraare. ([[Special:Captcha/help|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)', # Fuzzy +Metmaacher aanmeldt. +Dröm beß esu joot un +don di Wööt onge en dat Käßje endraare. ([[Special:Captcha/help|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, + '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]])', # Fuzzy +([[Special:Captcha/help|Mieh Enfommazjuhne]])', 'fancycaptcha-reload-text' => 'Nöü Aanzeije!', ); @@ -1123,12 +1140,12 @@ As Schutz gegen automaatsch Spam, geev disse Bookstavenreeg in dat Feld ünnen i */ $messages['nds-nl'] = array( 'fancycaptcha-addurl' => "Joew bewarking bevat uutgaonde verwiezingen. -Um dit projekt te bescharmen tegen ongewunste reklame, mu'j t woord dat hieronder steet invullen ([[Special:Captcha/help|hulpe]]):", +Um dit projekt te bescharmen tegen automatiese spam, mu'j t woord dat hieronder steet invullen ([[Special:Captcha/help|hulpe]]):", 'fancycaptcha-badlogin' => "Um disse webstee te beveiligen tegen t kraken van wachtwoorden, mu'j de woorden die'j hieronder zien effen invullen ([[Special:Captcha/help|hulpe]]):", 'fancycaptcha-createaccount' => "Um disse wiki te bescharmen tegen t automaties anmaken van gebrukersprofielen mu'j t woord hieronder invullen ([[Special:Captcha/help|hulpe]]):", 'fancycaptcha-create' => "Um n pagina an te maken, mö'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 reklame mö'j de woorden hieronder invullen ([[Special:Captcha/help|hulpe]]):", + 'fancycaptcha-edit' => 'Vul de woorden die hieronder staon in um disse zied te bewarken ([[Special:Captcha/help|hulpe]]):', 'fancycaptcha-sendemail' => 'Voer de woorden die hieronder staon in t invoerveld in as bescharming tegen automatiese ongewunste reklame ([[Special:Captcha/help|hulpe]]):', 'fancycaptcha-reload-text' => 'Verniejen', @@ -1147,7 +1164,7 @@ Voer de woorden die hieronder verschijnen in het invoerveld in als bescherming t '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 getoond worden in het invoerveld in als bescherming tegen spam ([[Special:Captcha/help|meer informatie]]):', - 'fancycaptcha-reload-text' => 'Verversen', + 'fancycaptcha-reload-text' => 'Vernieuwen', ); /** Nederlands (informeel)‎ (Nederlands (informeel)‎) @@ -1207,12 +1224,12 @@ $messages['or'] = array( */ $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]]):', # Fuzzy - '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]]):', # Fuzzy - '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]])', # Fuzzy + '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|więcej informacji]]):', + 'fancycaptcha-badlogin' => 'Ze względu na ochronę przed automatycznym łamaniem haseł prosimy o wpisanie słów, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|więcej informacji]]):', + 'fancycaptcha-createaccount' => 'Ze względu na ochronę przed automatycznym tworzeniem kont prosimy o wpisanie słów, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|więcej informacji]])', 'fancycaptcha-create' => 'Aby utworzyć tę stronę, przepisz słowa, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|pomoc]]):', 'fancycaptcha-edit' => 'Aby edytować tę stronę, przepisz 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]]).', # Fuzzy + 'fancycaptcha-sendemail' => 'Ze względu na ochronę przed zautomatyzowanym spamem prosimy o wpisanie słów, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|więcej informacji]]).', 'fancycaptcha-reload-text' => 'Odśwież', ); @@ -1282,6 +1299,14 @@ $messages['pt-br'] = array( 'fancycaptcha-reload-text' => 'Atualizar', ); +/** Quechua (Runa Simi) + * @author AlimanRuna + */ +$messages['qu'] = array( + 'fancycaptcha-create' => "P'anqata kamarinaykipaqqa kay qatiq kahachapi kaq rimakunata yaykuchiy ([[Special:Captcha/help|astawan yachay]]):", + 'fancycaptcha-edit' => "Kay p'anqata llamk'anaykipaqqa kay qatiq kahachapi kaq rimakunata yaykuchiy ([[Special:Captcha/help|astawan yachay]]):", +); + /** Romansh (rumantsch) * @author Kazu89 */ @@ -1309,13 +1334,13 @@ Pentru a împiedica roboții de spam, vă rugăm să introduceți cuvintele care * @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]]):", # Fuzzy - '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]]):', # Fuzzy - '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]]):', # Fuzzy + 'fancycaptcha-addurl' => "'U cangiamende tune 'nglude de le collegaminde de fore. +Pe proteggere condre a 'u spam automateche, pe piacere mitte le parole ca iessene sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):", + 'fancycaptcha-badlogin' => "Pe proteggere condre a futteminde automatece de passuord, pe piacere mitte le parole ca iessene aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):", + 'fancycaptcha-createaccount' => "Pe proteggere condre a ccreazione automateche de cunde utinde, pe piacere mitte le parole ca iessene aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):", '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]]):", # Fuzzy + 'fancycaptcha-sendemail' => "Pe proteggere condre a spam automatece, pe piacere mitte le parole ca iessene aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):", 'fancycaptcha-reload-text' => 'Aggiorne', ); @@ -1605,12 +1630,12 @@ Upang makatulong sa pagsasanggalang laban sa kusang pinapadalang mga \"manluluso */ $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]]):', # Fuzzy - 'fancycaptcha-badlogin' => 'Otomatik parola kırma yöntemine karşı korunmak için lütfen aşağıdaki sözcükleri kutunun içine yazınız ([[Special:Captcha/help|ayrıntılı bilgi]]):', # Fuzzy - '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]]):', # Fuzzy +Vikiyi otomatik spamdan korumak için, aşağıdaki sözcükleri kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):', + 'fancycaptcha-badlogin' => 'Vikiyi otomatik parola kırma yöntemine karşı korumak için, aşağıdaki sözcükleri kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):', + 'fancycaptcha-createaccount' => 'Vikiyi otomatik hesap oluşturmaya karşı korumaya yardım etmek için, aşağıdaki sözcükleri kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı 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]]):', # Fuzzy + 'fancycaptcha-sendemail' => 'Vikiyi otomatik spamlerden korumak için, aşağıdaki sözcükleri kutunun içine yazmanızı rica ediyoruz ([[Special:Captcha/help|ayrıntılı bilgi]]):', 'fancycaptcha-reload-text' => 'Yenile', ); @@ -1744,10 +1769,10 @@ $messages['zh-hans'] = array( $messages['zh-hant'] = array( 'fancycaptcha-addurl' => '您的編輯內容中含有本網站以外的連結。 為防止不當程式大量破壞,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', - 'fancycaptcha-badlogin' => '為防止不當程式破解密碼,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', # Fuzzy - 'fancycaptcha-createaccount' => '為防止不當程式大量建立帳戶,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', # Fuzzy + 'fancycaptcha-badlogin' => '為幫助wiki防範可自動破解密碼之不當程式,我們請您鍵入下面資訊框中的單詞([[Special:Captcha/help|相關資訊]]):', + 'fancycaptcha-createaccount' => '為幫助wiki防範可自動創建賬戶之不當程式,我們請您鍵入下面資訊框中的單詞([[Special:Captcha/help|相關資訊]]):', 'fancycaptcha-create' => '為防止不當程式大量建立頁面,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', 'fancycaptcha-edit' => '如您想要編輯此頁面,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', - 'fancycaptcha-sendemail' => '為防止不當程式進行破壞,請輸入以下的文字([[Special:Captcha/help|相關資訊]]):', # Fuzzy + 'fancycaptcha-sendemail' => '為幫助wiki防範垃圾電郵,我們請您鍵入下面資訊框中的單詞([[Special:Captcha/help|相關資訊]]):', 'fancycaptcha-reload-text' => '重新整理', ); diff --git a/extensions/ConfirmEdit/FancyCaptcha.php b/extensions/ConfirmEdit/FancyCaptcha.php index 46002e22..cbabb4a0 100644 --- a/extensions/ConfirmEdit/FancyCaptcha.php +++ b/extensions/ConfirmEdit/FancyCaptcha.php @@ -62,6 +62,7 @@ $wgAutoloadClasses['FancyCaptcha'] = $dir . '/FancyCaptcha.class.php'; $wgResourceModules['ext.confirmEdit.fancyCaptcha.styles'] = array( 'localBasePath' => $dir . '/resources', 'remoteExtPath' => 'ConfirmEdit/resources', + 'targets' => array( 'mobile', 'desktop' ), 'styles' => 'ext.confirmEdit.fancyCaptcha.css', ); @@ -72,5 +73,15 @@ $wgResourceModules['ext.confirmEdit.fancyCaptcha'] = array( 'dependencies' => 'mediawiki.api', ); +// FIXME: remove, add mobile target to ext.confirmEdit.fancyCaptcha and update +// MobileFrontend accordingly when bug 57629 is resolved +$wgResourceModules['ext.confirmEdit.fancyCaptchaMobile'] = array( + 'localBasePath' => $dir . '/resources', + 'remoteExtPath' => 'ConfirmEdit/resources', + 'scripts' => 'ext.confirmEdit.fancyCaptcha.js', + 'targets' => array( 'mobile', 'desktop' ), + 'dependencies' => 'mobile.startup', +); + $wgAutoloadClasses['ApiFancyCaptchaReload'] = $dir . '/ApiFancyCaptchaReload.php'; $wgAPIModules['fancycaptchareload'] = 'ApiFancyCaptchaReload'; diff --git a/extensions/ConfirmEdit/HTMLCaptchaField.php b/extensions/ConfirmEdit/HTMLCaptchaField.php deleted file mode 100644 index c069ce9e..00000000 --- a/extensions/ConfirmEdit/HTMLCaptchaField.php +++ /dev/null @@ -1,81 +0,0 @@ -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(); - } -} diff --git a/extensions/ConfirmEdit/QuestyCaptcha.i18n.php b/extensions/ConfirmEdit/QuestyCaptcha.i18n.php index ddf2ab6a..12d372a3 100644 --- a/extensions/ConfirmEdit/QuestyCaptcha.i18n.php +++ b/extensions/ConfirmEdit/QuestyCaptcha.i18n.php @@ -208,17 +208,17 @@ Per ajudar a protegir-se contra la brossa automàtica, responeu la pregunta que 'questycaptcha-create' => 'Per crear la pàgina, per favor responeu la pregunta que apareix a continuació ([[Special:Captcha/help|més informació]]):', ); -/** Czech (česky) +/** Czech (čeština) * @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]]):', # Fuzzy - '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]]):', # Fuzzy - '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]]):', # Fuzzy +V zájmu ochrany této wiki před automatickým spamováním vás prosíme o zodpovězení níže uvedené otázky ([[Special:Captcha/help|další informace]]):', + 'questycaptcha-badlogin' => 'V zájmu ochrany této wiki proti automatickým pokusům uhodnout heslo vás prosíme o zodpovězení níže uvedené otázky ([[Special:Captcha/help|další informace]]):', + 'questycaptcha-createaccount' => 'V zájmu ochrany této wiki před automatickým vytvářením účtů vás prosíme o zodpovězení níže uvedené otázky ([[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í]]):', # Fuzzy + 'questycaptcha-sendemail' => 'V zájmu ochrany této wiki před automatickým spamováním vás prosíme o zodpovězení níže uvedené otázky ([[Special:Captcha/help|další informace]]):', '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. @@ -303,12 +303,12 @@ Der „Zurück“-Knopf des Browsers führt zurück zum Bearbeitungsfenster.', # */ $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]]):', # Fuzzy - '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]]):', # Fuzzy - '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]]):', # Fuzzy +Aby wiki pśeśiwo zawtomatizěrowanemu spamoju šćitał, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):', + 'questycaptcha-badlogin' => 'Aby wiki pśeśiwo zawtomatizěrowanemu wusnuchlenjeju gronidła šćitał, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):', + 'questycaptcha-createaccount' => 'Aby wiki pśeśiwo zawtomatizěrowanemu napóranjeju kontow šćitał, 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]]):', # Fuzzy + 'questycaptcha-sendemail' => 'Aby wiki pśeśiwo awtomatiskemu spamowanjeju šćitał, 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. @@ -557,12 +557,12 @@ $messages['he'] = array( */ $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]]):', # Fuzzy - '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]]):', # Fuzzy - '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]]):', # Fuzzy +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še 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]]):', # Fuzzy + '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. @@ -715,17 +715,18 @@ $messages['ja'] = array( /** Korean (한국어) * @author Kwj2772 + * @author Priviet * @author 아라 */ $messages['ko'] = array( 'questycaptcha-desc' => '편집 확인에 대한 탐구적인 CAPCHA(캡차) 생성기', - 'questycaptcha-addurl' => '편집에 새로운 바깥 링크가 포함되어 있습니다. -자동화된 스팸으로부터 보호하기 위해, 아래에 보이는 질문에 답해주세요 ([[Special:Captcha/help|자세한 정보]]):', # Fuzzy - 'questycaptcha-badlogin' => '자동화된 비밀번호 깨기로부터 보호하기 위해, 아래에 보이는 질문에 답해주세요 ([[Special:Captcha/help|자세한 정보]]):', # Fuzzy - 'questycaptcha-createaccount' => '자동화된 계정 만들기로부터 보호하기 위해, 아래에 보이는 질문에 답해주세요 ([[Special:Captcha/help|자세한 정보]]):', # Fuzzy + '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|자세한 정보]]):', # Fuzzy + 'questycaptcha-sendemail' => '자동 스팸으로부터 보호하기 위해, 아래에 보이는 질문에 답해주세요 ([[Special:Captcha/help|자세한 정보]]):', 'questycaptchahelp-text' => '이 위키와 같이 사람의 공개적인 참여가 가능한 웹 사이트에서는 자동 프로그램이 스팸을 뿌리는 경우가 있습니다. 물론 이러한 스팸은 제거할 수는 있지만 번거로운 작업이 늘어납니다. @@ -793,7 +794,7 @@ Fir d'Wiki géint automatesche Spam-Ännerungen ze schützen, froe mir Iech d'Fr '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 dës Wiki 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 jiddwerengem 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, mä si sinn trotzdem eng grouss Plo. +Sou Spam-Linke kënne wuel geläscht ginn, mä si sinn trotzdeem eng grouss Plo. Heiansdo, 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ährend déi meescht Spammer an aner Roboter-Attacke kënnen ofgewiert ginn. @@ -837,7 +838,7 @@ $messages['mk'] = array( Контактирајте ги [[Special:ListAdmins|администраторите на страната]] за помош доколку ова неочекувано ве спречува во правењето на искрени придонеси. -Кликнете на копчето „назад“ во вашиот прелисувач за да се вратите на уредувањето на страницата.', +Стиснете на копчето „назад“ во вашиот прелисувач за да се вратите на уредувањето на страницата.', ); /** Malayalam (മലയാളം) @@ -1108,13 +1109,13 @@ Apăsați butonul „Înapoi” al navigatorului pentru a vă reîntoarce la pag * @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]]):", # Fuzzy - '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]]):", # Fuzzy - '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]]):", # Fuzzy + 'questycaptcha-addurl' => "'U cangiamende tune 'nglude de le collegaminde de fore. +Peproteggere condre a 'u spam automateche, pe piacere respunne a 'a domande ca iesse sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):", + 'questycaptcha-badlogin' => "Pe proteggere condre a futteminde automatece de password, pe piacere respunne a 'a domande ca iesse aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):", + 'questycaptcha-createaccount' => "Pe proteggere condre a ccreazione automateche de cunde utinde, pe piacere respunne a 'a domande ca iesse aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):", '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]]):", # Fuzzy + 'questycaptcha-sendemail' => "Pe proteggere condre a spam automatece, pe piacere respunne a 'a domande ca iesse 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.
      Pure ca chiste collegaminde de spam ponne essere luate, lore sò sembre 'nu scassamende de palle.

      diff --git a/extensions/ConfirmEdit/ReCaptcha.i18n.php b/extensions/ConfirmEdit/ReCaptcha.i18n.php index 9e2c4781..5572656a 100644 --- a/extensions/ConfirmEdit/ReCaptcha.i18n.php +++ b/extensions/ConfirmEdit/ReCaptcha.i18n.php @@ -81,10 +81,10 @@ $messages['be-tarask'] = array( $messages['br'] = array( 'recaptcha-edit' => "Evit 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. Evit sikour en em wareziñ diouzh ar stroboù, merkit an daou c'her a welit er voest dindan :", - 'recaptcha-badlogin' => "Da sikour en em wareziñ diouzh an diskuliañ gerioù-tremen emgefre dre daolioù-esae, merkit an daou c'her a welit er voest dindan :", # Fuzzy - 'recaptcha-createaccount' => "Da sikour en em wareziñ diouzh ar c'hrouiñ kontoù emgefre, merkit an daou c'her a welit er voest dindan :", # Fuzzy + 'recaptcha-badlogin' => "Evit sikour da wareziñ ar wiki diouzh an diskuliañ gerioù-tremen emgefre dre daolioù-esae, merkit an daou c'her a welit er voest dindan :", + 'recaptcha-createaccount' => "Evit sikour d'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 :", # Fuzzy + 'recaptcha-create' => "Evit sikour d'en em wareziñ diouzh ar c'hrouiñ pajennoù emgefre, merkit an daou c'her a welit er voest dindan :", ); /** Bosnian (bosanski) @@ -99,18 +99,18 @@ $messages['bs'] = array( 'recaptcha-create' => 'Da bismo pomogli protiv automatiziranog pravljenja stranica, molimo upišite dvije riječi koje vidite u kutiju ispod:', # Fuzzy ); -/** Czech (česky) +/** Czech (čeština) * @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:', # Fuzzy - '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:', # Fuzzy - 'recaptcha-badlogin' => 'V zájmu ochrany proti automatickým pokusům uhodnout heslo opište dvě slova, která vidíte na obrázku:', # Fuzzy - 'recaptcha-createaccount' => 'V rámci ochrany před automatickým vytvářením účtů opište dvě slova, která vidíte na obrázku:', # Fuzzy + 'recaptcha-edit' => 'V zájmu ochrany této wiki před automatickým spamováním vás prosíme o opsání dvou slov, která vidíte v rámečku níže:', + 'recaptcha-addurl' => 'Vaše editace obsahuje nové externí odkazy. V zájmu ochrany této wiki před automatickým spamováním vás prosíme o opsání dvou slov, která vidíte v rámečku níže:', + 'recaptcha-badlogin' => 'V zájmu ochrany této wiki proti automatickým pokusům uhodnout heslo vás prosíme o opsání dvou slov, která vidíte v rámečku níže:', + 'recaptcha-createaccount' => 'V zájmu ochrany této wiki před automatickým vytvářením účtů vás prosíme o opsání dvou slov, která vidíte v rámečku níže:', '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:', # Fuzzy + 'recaptcha-create' => 'V zájmu ochrany před automatickým zakládáním stránek vás prosíme o opsání dvou slov, která vidíte v rámečku níže:', ); /** Welsh (Cymraeg) @@ -166,6 +166,18 @@ $messages['es'] = array( 'recaptcha-create' => 'Para protegernos de la creación automática de páginas, escribe las dos palabras que ves en el cuadro de abajo:', # Fuzzy ); +/** Persian (فارسی) + * @author Armin1392 + */ +$messages['fa'] = array( + 'recaptcha-edit' => 'برای محافظت ویکی دربرابر ویرایش خودکار اسپم، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:', + 'recaptcha-addurl' => 'ویرایش شما شامل لینک‌های خارجی جدید است.برای محافظت ویکی دربرابر اسپم خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:', + 'recaptcha-badlogin' => 'برای محافظت ویکی دربرابر رخنهٔ رمز عبور به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:', + 'recaptcha-createaccount' => 'برای محافظت ویکی دربرابر ایجاد حساب به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:', + 'recaptcha-createaccount-fail' => 'پاسخ نادرست یا عدم وجود ری‌سی‌اِی‌پی‌تی‌سی‌اچ‌اِی.', + 'recaptcha-create' => 'برای محافظت ویکی دربرابر ایجاد صفحه به طور خودکار، ما دوستانه از شما درخواست می‌کنیم که دو کلمه‌ای را که در جعبهٔ زیر می‌بینید را بنویسید:', +); + /** Finnish (suomi) * @author Nedergard * @author VezonThunder @@ -182,8 +194,10 @@ $messages['fi'] = array( /** French (français) * @author Gomoko * @author Urhixidur + * @author Verdy p */ $messages['fr'] = array( + 'recaptcha-desc' => 'module reCAPTCHA pour Confirmer Modifier', 'recaptcha-edit' => 'Afin de protéger le wiki du spam des modifications automatisées, nous vous demandons de bien vouloir écrire les deux mots visibles dans le cadre ci-dessous :', 'recaptcha-addurl' => 'Votre contribution contient des liens vers un site externe. Pour protéger le wiki contre le spam automatisé, nous vous demandons de bien vouloir écrire les deux mots visibles dans le cadre qui suit :', 'recaptcha-badlogin' => 'Pour protéger le wiki des essais automatiques de cassage de mot de passe, nous vous demandons de bien vouloir écrire les deux mots visibles dans le cadre qui suit:', @@ -218,26 +232,27 @@ $messages['gsw'] = array( ); /** Hebrew (עברית) + * @author Yona b */ $messages['he'] = array( - 'recaptcha-edit' => 'אינכם משתמש רשום.כהגנה מפני ספאם אוטומטי, אנא הקלידו את שתי המילים שלהלן. תודה.', # Fuzzy - 'recaptcha-addurl' => 'אינכם משתמש רשום.כהגנה מפני ספאם אוטומטי, אנא הקלידו את שתי המילים שלהלן. תודה.', # Fuzzy - 'recaptcha-badlogin' => 'כהגנה מפני מפצחי סיסמאות אוטומטיים אנא הקלידו את שתי המילים שלהלן:', # Fuzzy - 'recaptcha-createaccount' => 'כהגנה מפני יצירת חשבונות פיקטיביים ע"י אוטומטים אנא הקלידו את שתי המילים שלהלן:', # Fuzzy + 'recaptcha-edit' => 'אינכם משתמש רשום. כהגנה מפני ספאם אוטומטי, אנא הקלידו את שתי המילים שלהלן. תודה.', + 'recaptcha-addurl' => 'עריכתכם כוללת קישורים חיצוניים חדשים. כהגנה מפני ספאם אוטומטי, אנא הקלידו את שתי המילים שלהלן. תודה.', + 'recaptcha-badlogin' => 'כהגנה מפני מפצחי סיסמאות אוטומטיים, אנא הקלידו את שתי המילים שלהלן:', + 'recaptcha-createaccount' => 'כהגנה מפני יצירה אוטומטית של חשבונות, נא הקלידו את שתי המילים שלהלן:', 'recaptcha-createaccount-fail' => 'לא הוקלדו מילות האישור, או שהוקלדו מילים לא נכונות. נסו שנית.', - 'recaptcha-create' => 'אינכם משתמש רשום.כהגנה מפני ספאם אוטומטי, אנא הקלידו את שתי המילים שלהלן. תודה.', # Fuzzy + '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š:', # Fuzzy - '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š:', # Fuzzy - 'recaptcha-badlogin' => 'Za škit přećiwo awtomatizowanemu złamanju hesłow, zapisaj prošu wobě słowje, kotrejž widźiš, do slědowaceho pola:', # Fuzzy - 'recaptcha-createaccount' => 'Za škit přećiwo awtomatiskemu wutworjenju konta, prošu zapisaj tej wobě słowje, kotrejž w slědowacym polu widźiš:', # Fuzzy + 'recaptcha-edit' => 'Zo by wiki přećiwo awtomatizowanemu spamej škitał, zapisaj prošu dwě słowje, kotrejž w slědowacym polu widźiš:', + 'recaptcha-addurl' => 'Twoja změna wobsahuje nowe eksterne wotkazy. Zo by wiki přećiwo awtomatizowanemu spamej škitał, zapisaj prošu dwě słowje, kotrejž w slědowacym polu widźiš:', + 'recaptcha-badlogin' => 'Zo by wiki přećiwo awtomatizowanemu złamanju hesłow škitał, zapisaj prošu dwě słowje, kotrejž widźiš, do slědowaceho pola:', + 'recaptcha-createaccount' => 'Zo by wiki přećiwo awtomatiskemu wutworjenju konta škitał, zapisaj prošu dwě 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š:', # Fuzzy + 'recaptcha-create' => 'Zo by wiki přećiwo awtomatiskemu wutworjenju strony škitał, zapisaj prošu dwě słowje, kotrejž w slědowacym polu widźiš:', ); /** Interlingua (interlingua) @@ -291,16 +306,17 @@ $messages['ja'] = array( ); /** Korean (한국어) + * @author Priviet * @author 아라 */ $messages['ko'] = array( 'recaptcha-desc' => '편집 확인에 대한 reCAPCHA 모듈', - 'recaptcha-edit' => '자동화된 편집 스팸으로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:', # Fuzzy - 'recaptcha-addurl' => '편집에 새로운 바깥 링크가 포함되어 있습니다. 자동화된 스팸으로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:', # Fuzzy - 'recaptcha-badlogin' => '자동화된 비밀번호 깨기로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:', # Fuzzy - 'recaptcha-createaccount' => '자동화된 계정 만들기로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:', # Fuzzy + 'recaptcha-edit' => '자동 편집 스팸으로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:', + 'recaptcha-addurl' => '편집에 새로운 바깥 고리가 포함되어 있습니다. 자동 스팸으로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:', + 'recaptcha-badlogin' => '자동 비밀번호 크래킹으로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:', + 'recaptcha-createaccount' => '자동화된 계정 만들기로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:', 'recaptcha-createaccount-fail' => 'reCAPTCHA 답이 올바르지 않거나 없습니다.', - 'recaptcha-create' => '자동화된 문서 만들기로부터 보호하기 위해, 아래 상자에 보이는 두 낱말을 입력하세요:', # Fuzzy + 'recaptcha-create' => '자동 문서 생성을 막기 위해 아래 상자에 보이는 두 낱말을 입력하세요:', ); /** Colognian (Ripoarisch) @@ -464,12 +480,12 @@ $messages['pt-br'] = array( * @author Joetaras */ $messages['roa-tara'] = array( - 'recaptcha-edit' => "Pe darne 'na màne a proteggere condre le cangiaminde automatece de le rummate, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:", # Fuzzy - 'recaptcha-addurl' => "Le cangiaminde tune 'ngludone collegaminde de fore nuève. Pe darne 'na màne a proteggere condre le cangiaminde automatece de le rummate, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:", # Fuzzy - 'recaptcha-badlogin' => "Pe darne 'na màne a proteggere condre le futteminde automatece de le passuord, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:", # Fuzzy - 'recaptcha-createaccount' => "Pe darne 'na màne a proteggere condre le ccrejaziune automatece de le cunde, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:", # Fuzzy + 'recaptcha-edit' => "Pe proteggere condre le cangiaminde automatece de le rummate, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:", + 'recaptcha-addurl' => "Le cangiaminde tune 'ngludone collegaminde de fore nuève. Pe proteggere condre le cangiaminde automatece de le rummate, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:", + 'recaptcha-badlogin' => "Pe proteggere condre le futteminde automatece de le passuord, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:", + 'recaptcha-createaccount' => "Pe proteggere condre le ccrejaziune automatece de le cunde, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:", 'recaptcha-createaccount-fail' => 'Resposte reCAPTCHA ingorrette o mangande.', - 'recaptcha-create' => "Pe darne 'na màne a proteggere condre le ccrejaziune automatece de le pàggene, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:", # Fuzzy + 'recaptcha-create' => "Pe proteggere condre le ccrejaziune automatece de le pàggene, pe piacere scrive le doje parole ca 'ndruche jndr'à buatte aqquà sotte:", ); /** Russian (русский) diff --git a/extensions/Gadgets/ApiQueryGadgets.php b/extensions/Gadgets/ApiQueryGadgets.php index a529daf0..94c4f04d 100644 --- a/extensions/Gadgets/ApiQueryGadgets.php +++ b/extensions/Gadgets/ApiQueryGadgets.php @@ -214,7 +214,7 @@ class ApiQueryGadgets extends ApiQueryBase { ' api.php?action=query&list=gadgets&gaprop=id|desc', 'Get a list of gadgets with all possible properties:', " api.php?action=query&list=gadgets&gaprop=$allProps", - 'Get a list of gadgets belonging to caregory "foo":', + 'Get a list of gadgets belonging to category "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', diff --git a/extensions/Gadgets/COPYING b/extensions/Gadgets/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/extensions/Gadgets/COPYING @@ -0,0 +1,339 @@ + 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. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/extensions/Gadgets/Gadgets.alias.php b/extensions/Gadgets/Gadgets.alias.php index 7f3307a5..5ec050c9 100644 --- a/extensions/Gadgets/Gadgets.alias.php +++ b/extensions/Gadgets/Gadgets.alias.php @@ -59,7 +59,7 @@ $specialPageAliases['ce'] = array( 'Gadgets' => array( 'Гаджеташ' ), ); -/** Czech (česky) */ +/** Czech (čeština) */ $specialPageAliases['cs'] = array( 'Gadgets' => array( 'Udělátka' ), ); @@ -136,7 +136,7 @@ $specialPageAliases['haw'] = array( /** Hebrew (עברית) */ $specialPageAliases['he'] = array( - 'Gadgets' => array( 'סקריפטים' ), + 'Gadgets' => array( 'גאדג\'טים', 'סקריפטים' ), ); /** Hindi (हिन्दी) */ diff --git a/extensions/Gadgets/Gadgets.i18n.php b/extensions/Gadgets/Gadgets.i18n.php index 2cef466a..b5cbc28a 100644 --- a/extensions/Gadgets/Gadgets.i18n.php +++ b/extensions/Gadgets/Gadgets.i18n.php @@ -379,9 +379,9 @@ $messages['ba'] = array( 'gadgets' => 'Гаджеттар', 'gadgets-title' => 'Гаджеттар', 'gadgets-uses' => 'Ҡулланыла', - 'gadgets-required-rights' => '{{PLURAL:$2|Хоҡуҡ талап ителә|Хоҡутар талап ителә}}: + 'gadgets-required-rights' => '{{PLURAL:$2|1=Хоҡуҡ талап ителә|Хоҡутар талап ителә}}: -$1', +$1', # Fuzzy 'gadgets-export' => 'Сығарырға', 'gadgets-not-found' => '"$1" гаджеты табылманы.', 'gadgets-export-download' => 'Күсереп алырға', @@ -459,10 +459,10 @@ $messages['be-tarask'] = array( 'gadgets-pagetext' => 'Ніжэй знаходзіцца сьпіс гаджэтаў, якія ўдзельнікі могуць уключыць у [[Special:Preferences#mw-prefsection-gadgets|сваіх наладах]], у адпаведнасьці са сьпісам на старонцы [[MediaWiki:Gadgets-definition|вызначэньняў]]. Гэты сьпіс дазваляе лёгка атрымаць доступ да старонак сыстэмных паведамленьняў, якія вызначаюць апісаньні і крынічныя коды гаджэтаў.', 'gadgets-uses' => 'Выкарыстоўвае', - 'gadgets-required-rights' => '{{PLURAL:$2|Патрабуецца права|Патрабуюцца наступныя правы}}: + 'gadgets-required-rights' => '{{PLURAL:$2|1=Патрабуецца права|Патрабуюцца наступныя правы}}: -$1', - 'gadgets-required-skins' => 'Даступны ў {{PLURAL:$2|тэме $1|наступных тэмах: $1}}.', +$1', # Fuzzy + 'gadgets-required-skins' => 'Даступны ў {{PLURAL:$2|1=тэме $1|наступных тэмах: $1}}.', # Fuzzy 'gadgets-default' => 'Дазволеныя для ўсіх па змоўчваньні.', 'gadgets-export' => 'Экспартаваць', 'gadgets-export-title' => 'Экспарт гаджэта', @@ -634,19 +634,29 @@ Heu de tenir els permisos adequats en el wiki de destinació (incloent-hi els pe */ $messages['ce'] = array( 'gadgets-desc' => 'Атто бо декъашхошна харжам ба [[Special:Preferences#mw-prefsection-gadgets|гIирс нисбарца]] CSS- а JavaScript-хIоттончаш, лато лууш йерш', # Fuzzy - 'prefs-gadgets' => 'Хlоттончаш', - 'gadgets-prefstext' => 'Лаххьа балийна леррина хlоттончаш могlам, шуьга шайга латалур йолуш хьай долахь долучу дакъан. -Хlара хlоттончаш дукхачу хьоляхь болх беш ю оцу JavaScript тlяхь, цундела аша латоеза JavaScript шай дуьнена машан гlирса чохь, цаьрга болх байта. -Диц маделаш, хlара хlоттончаш болх бяш яз хlо гlирс нисбо агlон чохь. + 'prefs-gadgets' => 'Гаджеташ', + 'gadgets-prefstext' => 'Лаххьа балийна леррина гаджеташ могӀам, шуьга шайга латалур йолуш хьай долахь долучу дакъан. +ХӀара гаджеташ дуккхачу хьолехь болх беш ю оцу JavaScript тӀехь, цундела аша латоеза JavaScript шай браузер чохь, цаьрга болх байта. +Диц маделаш, хӀара гаджеташ болх бяш яц хӀо гӀирс нисбо агӀон чохь. -Ишта диц маде, хlара хlоттончаш юкъа йогуш яз кху MediaWiki гlирсашна, мадарра аьльча шу санна декъашхоша шаьш йеш ю. +Ишта диц маде, хӀара гаджеташ юкъа йогуш яц кху MediaWiki гlирсашна, мадарра аьльча шу санна декъашхоша шаьш йеш ю. Адманкуьйгалхошка шайг хийцало и хlоттончи могlам, хlокх могlам гlонца [[MediaWiki:Gadgets-definition|къастам бало]] а [[Special:Gadgets|церах лаьцна]].', - 'gadgets' => 'Хlоттончаш', - 'gadgets-title' => 'Хlоттончаш', + 'gadgets' => 'Гаджеташ', + 'gadgets-title' => 'Гаджеташ', 'gadgets-pagetext' => 'Гlирса хааман могlамаш, къастош йолу хlоттончи цlераш, хуьлаш йолу хIокху [[MediaWiki:Gadgets-definition|къастамца]]]]. ХIокху могIамо атто бо гIирсан хаамаш атта тIе кхочуш барца, цуьнах лаьцна хIоттош а йолш йолучу хIоттончи ишарца.', # Fuzzy - 'gadgets-uses' => 'Лелош йу', + 'gadgets-uses' => 'Лелош ю', + 'gadgets-required-rights' => '{{PLURAL:$2|1=Оьшуш ю бакъо|Оьшуш ю бакъонаш}}: + +$1', # Fuzzy + 'gadgets-default' => 'Латае массарна Iад йитарца.', 'gadgets-export' => 'Экспорт ян', + 'gadgets-export-title' => 'Гаджет экспорт яр', + 'gadgets-export-text' => 'Гаджет $1 экспорт ян тӀетаӀае кнопка «{{int:gadgets-export-download}}», тӀакха чуяьккхина файл Ӏалаше, +Special:Import агӀона дехьа гӀой чуяккха файл. ТӀакха MediaWiki:Gadgets-definition агӀона чу билла лахара могӀа: +
      $2
      +И болх бан хьан бакъо хила еза (кхин системин хаамаш та ян бакъо а хила еза), кхи серверан чохь файлаш импорт йо гӀирс латина хила беза.', + 'gadgets-export-download' => 'Чуяккха', ); /** Sorani Kurdish (کوردی) @@ -679,7 +689,7 @@ $1', 'gadgets-export-download' => 'دایبگرە', ); -/** Czech (česky) +/** Czech (čeština) * @author Danny B. * @author Li-sung * @author Mormegil @@ -712,7 +722,7 @@ Na cílové wiki musíte mít příslušná oprávnění (včetně práva editov 'gadgets-export-download' => 'Stáhnout', ); -/** Church Slavic (словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) +/** Church Slavic (словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) * @author ОйЛ */ $messages['cu'] = array( @@ -849,6 +859,7 @@ Sie müssen über die notwendigen Berechtigungen auf dem für den Import vorgese /** Zazaki (Zazaki) * @author Erdemaslancan * @author Gorizon + * @author Mirzali * @author Neribij * @author Olvörg * @author Xoser @@ -856,12 +867,12 @@ Sie müssen über die notwendigen Berechtigungen auf dem für den Import vorgese $messages['diq'] = array( 'gadgets-desc' => "Karberan ré destur bidek [[Special:Preferences#mw-prefsection-gadgets|hesıbyayan]]'ra [[Special:Gadgets|Hacetanê CSS u JavaScriptî]] bışé weçiné", 'prefs-gadgets' => 'Haleti', - 'gadgets-prefstext' => 'Cor de yew listeya hacetanê xasî esta ke ti eşkenî xesabê xo de a bikî. -Enê hacatî JavaScript ser o gurêyenê, aya ra ti ganî browserê xo de JavaScript a bikî. -Ena pela opsiyonî de hacetî tesîr nêkenê. + 'gadgets-prefstext' => 'Cêr de yew lista hacetanê xasan esta ke tı şenay xesabê xo de a kerê. +Enê haceti JavaScript sero gureyenê, aye ra tı gani ageyrayoğê xo de JavaScript a kerê. +Ena pela opsiyoni de haceti tesir nêkenê. -Enê hacatanê xasî parçê sofwarê Mediyawîkî nîyê, aye ra karberê localî enê hacetî virazenê. -Îdarekarê mehelî eşkenê hacetan [[MediaWiki:Gadgets-definition|definitions]] û [[Special:Gadgets|descriptions]] ra bivurnê.', +Enê hacetê xasi parçê sofwarê Mediyawiki niyê, aye ra karberê locali enê haceti vırazenê. +İdarekarê meheli şenê be [[MediaWiki:Gadgets-definition|kıfşkerdeyan]] û [[Special:Gadgets|arezekerdışan]] ra hacetanê mınasıban bıvurnê.', 'gadgets' => 'Haleti', 'gadgets-title' => 'Haleti', 'gadgets-pagetext' => 'Cêr de yew listeya hacetanê xasan esta ke ti eşkenî [[Special:Preferences#mw-prefsection-gadgets|xesabê xo]] de a bikî, seke [[MediaWiki:Gadgets-definition|definitions]] nîşan dîyayo. @@ -1116,7 +1127,7 @@ $1', 'gadgets-export-text' => 'برای برون‌بری ابزار $1، بر دکمهٔ «{{int:gadgets-export-download}}» کلیک کنید، پروندهٔ بارگیری‌شده را ذخیره کنید، به ویژه:درون‌ریزی در ویکی مقصد بروید و بارگذاری‌اش کنید. سپس این را به صفحهٔ مدیاویکی:Gadgets-definition بیفزایید:
      $2
      لازم است تا در ویکی مقصد دسترسی‌های مناسب (شامل حق ویرایش پیغام‌های سامانه) را داشته باشید و درون‌ریزی از بارگذاری‌های پرونده باید فعال شده باشد.', - 'gadgets-export-download' => 'بارگیری', + 'gadgets-export-download' => 'دریافت', ); /** Finnish (suomi) @@ -1380,6 +1391,7 @@ Special:Import નિયોજીત વિકિ પર Special:Import પર /** Hebrew (עברית) * @author Amire80 * @author Guycn1 + * @author Guycn2 * @author Rotem Liss * @author YaronSh */ @@ -1401,7 +1413,7 @@ $messages['he'] = array( $1', 'gadgets-required-skins' => 'זמין {{PLURAL:$2|בערכות העיצוב הבאות: $1|בערכת העיצוב $1}}', - 'gadgets-default' => 'מופעל לכולם לפי בררת מחדל.', + 'gadgets-default' => 'מופעל לכולם כברירת מחדל.', 'gadgets-export' => 'יצוא', 'gadgets-export-title' => "יצוא גאדג'טים", 'gadgets-not-found' => 'הגאדג׳ט "$1" לא נמצא.', @@ -1637,32 +1649,32 @@ Anda harus memeroleh izin pada wiki tujuan (termasuk hak menyunting pesan sistem * @author Lam-ang */ $messages['ilo'] = array( - 'gadgets-desc' => 'Mabalin dagiti agar-aramat nga agpili iti [[Special:Gadgets|CSS ken JavaScript gadgets]] idiay [[Special:Preferences#mw-prefsection-gadgets|kaykayat da]]', - 'prefs-gadgets' => 'Gadgets', - 'gadgets-prefstext' => 'Adda dita baba ti listaan ti naipangruna a gadgets nga usaren idiay pakabilangam. -Dagitoy a gadgets ket naibasta iti JavaScript, masapul a pakabaelan ti JavaScript idiay "pagbasabasam" tapno agbalin da. -Saan a mabalin nga usaren dagitoy a gadgets ditoy kaykayat a panid. - -Dagitoy a gadgets ket saan a paset ti MediaWiki software, inaramid ken inayaywanan dagiti agar-aramat ti lokal a wiki. -Mabaliwan dagita administrador nga urnosen ti [[MediaWiki:Gadgets-definition|pinakailawag]] ken [[Special:Gadgets|deskripsion]] ti gadgets.', - 'gadgets' => 'Gadgets', - 'gadgets-title' => 'Gadgets', - 'gadgets-pagetext' => 'Dita baba ket adda listaan dagiti naipangruna a gadgets a dagiti agar-aramat ket mapagbalin da idiay [[Special:Preferences#mw-prefsection-gadgets|kaykayat da a panid]], a naipalawag iti [[MediaWiki:Gadgets-definition|dagiti pinakailawag]]. -Daytoy a pinakabuklan ket mangted ti nalaka a pinagserrek kadagit mensahe ti sistema a panid a nagpailawag iti deskripsion ti gadget ken kodigo.', + 'gadgets-desc' => 'Agpalubos kadagiti agar-aramat nga agpili kadagiti naiduma a [[Special:Gadgets|CSS ken JavaScript a gadget]] iti [[Special:Preferences#mw-prefsection-gadgets|kakaykayatanda]]', + 'prefs-gadgets' => 'Dagiti gadget', + 'gadgets-prefstext' => 'Dita baba ket listaan kadagiti naipangruna a gadget a mabalinmo a pakabaelan iti pakabilangam. +Dagitoy a gadget ket naibatay iti JavaScript, isunga masapul a pakabaelan ti JavaScript idiay "pagbasabasam" tapno agbalin dagitoy. +Laglagipen a dagitoy a gadget ket awan ti pagbanaganna iti daytoy panid ti kakaykayatan. + +Laglagipen pay a dagitoy a naipangruna a gadget ket saan a paset ti sopwer ti MediaWiki, ken kadawyan a pinarang-ay ken tinartaripato babaen dagiti agar-aramat iti lokal a wiki. +Dagiti lokal nga administrador ket mabalinda nga urnosen dagiti [[MediaWiki:Gadgets-definition|panangipalplawag]] ken dagiti [[Special:Gadgets|deskripsion]] dagiti magun-od a gadget.', + 'gadgets' => 'Dagiti gadget', + 'gadgets-title' => 'Dagiti gadget', + 'gadgets-pagetext' => 'Dita baba ket listaan dagiti naipangruna a gadget a mabalin a pakabaelan dagiti agar-aramat iti bukodda a [[Special:Preferences#mw-prefsection-gadgets|panid ti kakaykayatan]], a kas naipalawag babaen dagiti [[MediaWiki:Gadgets-definition|pannakaipalawag]]. +Daytoy a nakabuklan ket mangted ti nalaka a panagserrek kadagiti panid ti mensahe ti sistema a mangipalawag ti tungngal maysa a deskripsion ken kodigo ti gadget.', 'gadgets-uses' => 'Usar', - 'gadgets-required-rights' => 'Masapul dagiti sumaganad {{PLURAL:$2|a karbengan|dagiti karbengan}}: + 'gadgets-required-rights' => 'Masapul ti sumaganad a {{PLURAL:$2|karbengan|karkarbengan}}: $1', - 'gadgets-required-skins' => 'Adda mabalin idiay {{PLURAL:$2|$1 a kudil|dagiti sumaganad a kudil: $1}}.', - 'gadgets-default' => 'Pakabaelan a kinasigud iti amin nga agar-aramat.', + 'gadgets-required-skins' => 'Mabalin a magun-od {{PLURAL:$2|iti $1 a kudil|kadagiti sumaganad a kudil: $1}}.', + 'gadgets-default' => 'Pakabaelan a kasisigud para kadagiti amin.', 'gadgets-export' => 'Agipan', 'gadgets-export-title' => 'Agipan ti gadget', 'gadgets-not-found' => 'Saan a nabirukan ti "$1" a gadget.', - 'gadgets-export-text' => 'Ti pinag-ipan ti $1 a gadget, agtakla idiay "{{int:gadgets-export-download}}" a buton, idulin ti inkarga nga agpababa a papeles, -mapan idiay Special:Import ti papanan a wiki ken ikarga nga agpangato. Ken inayon dagiti sumaganad idiay MediaWiki:Gadgets-definition page: + 'gadgets-export-text' => 'Ti panag-ipan ti $1 a gadget, pinduten ti buton ti "{{int:gadgets-export-download}}", idulin ti naikarga a papeles, +mapan idiay Special:Import iti papanan a wiki ken ikarganto. Kalpasanna inayon dagiti sumaganad idiay panid ti MediaWiki:Gadgets-definition:
      $2
      -Masapul nga addaan ka ti husto a pammalubos iti papanan a wiki (nairaman ti karbegnan a pinagbaliw dagiti mensahe ti sistema) ken naipabalin ti pinagala kadagiti naggapu a papeles a naikarga nga agpangato.', - 'gadgets-export-download' => 'Ikarga nga agpababa', +Nasken nga addaanka ti maitunos a pammalubos iti papanan a wiki (mairaman ti karbengan a panag-urnos kadagiti mensahe ti sistema) ken nasken a napakabaelan ti panagikarga kadagiti papeles.', + 'gadgets-export-download' => 'Agikaraga', ); /** Ido (Ido) @@ -1789,6 +1801,7 @@ Bemærk også at disse specielle gadgets ikke er en del af MediaWiki-softwaren o ); /** Javanese (Basa Jawa) + * @author Bennylin * @author Meursault2004 * @author NoiX180 * @author Pras @@ -1813,6 +1826,10 @@ $1', 'gadgets-export' => 'Èkspor', 'gadgets-export-title' => 'Èkspor perkakas', 'gadgets-not-found' => 'Perkasas "$1" ora ditemokaké.', + '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: +
      $2
      +Anda harus memeroleh izin pada wiki tujuan (termasuk hak menyunting pesan sistem) dan mengimpor dari unggahan berkas yang harus diaktifkan.', 'gadgets-export-download' => 'Undhuh', ); @@ -1872,18 +1889,23 @@ $messages['kk-arab'] = array( */ $messages['kk-cyrl'] = array( 'prefs-gadgets' => 'Қажет құралдар', - 'gadgets-prefstext' => 'Төменде өз тіркелгіңізде қоса алатын арнаулы қажет құралдар тізімі беріледі. -Осы қажет құралдар көбінесе JavaScript әмірлеріне негізделінеді, сондықтан бұлар жұмыс істеуі үшін шолғышыңызда JavaScript қосылған болуы керек. -Бұл баптау бетіне осы қажет құралдар әсер етпейтінің ескеріңіз. + 'gadgets-prefstext' => 'Төменде өз тіркелгіңізде қоса алатын арнаулы қажет құралдар тізімі берілген. +Осы қажет құралдар көбінесе JavaScript әмірлеріне негізделеді, сондықтан бұлар жұмыс істеуі үшін шолғышыңызда JavaScript қосылған болуы керек. +Бұл баптау бетіне осы қажет құралдар әсер етпейтінін ескеріңіз. -Тағы да ескеріңіз: осы қажет құралдар MediaWiki бағдарламасының бөлігі емес, және де бұларды жайшылықта жергілікті уикидің қатысушылары дамытады және қоштайды. -Жергілікті әкімшілер жетімді қажет нәрсе тізімін [[{{ns:mediawiki}}:Gadgets-definition]] және [[{{ns:special}}:Gadgets]] беттері арқылы +Тағы да ескеріңіз: осы қажет құралдар MediaWiki бағдарламасының бөлігі емес және бұларды әдетте сіздің жергілікті уикиіңіздің қатысушылары дамытады және қоштайды. +Жергілікті әкімшілер жетімді гаджеттерді [[MediaWiki:Gadgets-definition]] және [[Special:Gadgets|сипаттама]] беттері арқылы өңдей алады.', # Fuzzy 'gadgets' => 'Қажет құралдар', 'gadgets-title' => 'Қажет құралдар', - 'gadgets-pagetext' => 'Төменде арнаулы қажет құралдар тізімі беріледі. [[{{ns:mediawiki}}:Gadgets-definition]] бетінде анықталған қажет құралдарды қатысушылар өзінің баптауында қоса алады. -Бұл шолу беті арқылы әрбір қажет құралдың сипаттамасы мен әмірін анықтайтын жүйе хабар беттеріне жеңіл қатынай аласыз.', # Fuzzy + 'gadgets-pagetext' => 'Төменде қатысушылар өзінің [[Special:Preferences#mw-prefsection-gadgets|баптауларынан]] қоса алатын арнаулы қажет құралдар тізімі берілген. [[MediaWiki:Gadgets-definition]] шолу беті арқылы әрбір қажет құралдың сипаттамасы мен әмірін анықтайтын жүйе хабар беттеріне жеңіл қатынай аласыз.', 'gadgets-uses' => 'Қолданыстағылар', + 'gadgets-required-rights' => 'Келесі {{PLURAL:$2|құқықты|құқықтарды}} қажет етеді: $1', + 'gadgets-default' => 'Әркімге автоматты түрде қосылады.', + 'gadgets-export' => 'Экспорттау', + 'gadgets-export-title' => 'Гаджетті экспорттау', + 'gadgets-not-found' => '"$1" гаджеті табылмады.', + 'gadgets-export-download' => 'Түсіру', ); /** Kazakh (Latin script) (qazaqşa (latın)‎) @@ -2051,7 +2073,7 @@ Ausserdeem sollt Dir wëssen, datt dës Gadgete generell net Deel vu MediaWiki s 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#mw-prefsection-gadgets|Benotzer-Astellungen]] aschalte kënnen, esou wéi dat op [[MediaWiki:Gadgets-definition|definéiert]] ass. + 'gadgets-pagetext' => "Ënnendrënner ass eng Lëscht vun de spezielle Gadgeten déi d'Benotzer op hire [[Special:Preferences#mw-prefsection-gadgets|Benotzer-Astellungen]] aschalte kënnen, sou 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ës Rechter}}: $1.", @@ -2060,8 +2082,8 @@ Dës Iwwersiicht gëtt einfachen Zougang zu de Systemmessage-Säiten, déi all G '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:
      $2
      -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-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 luet en do erop. Duerno setzt der op d\'MediaWiki:Gadgets-Definitiouns Säit dëst derbäi:
      $2
      +Dir musst déi erfuerdert Rechter(inklusiv d\'Recht fir Systemmessagen z\'änneren) op der Zil-Wiki hunn an den Import vun eropgelueden Fichiere muss ageschalt sinn.', 'gadgets-export-download' => 'Eroflueden', ); @@ -2070,6 +2092,7 @@ Dir musst déi erfuerdert Rechter(inklusiv d\'Recht fir System-Messagen z\'änne * @author Soul Train */ $messages['lez'] = array( + 'prefs-gadgets' => 'Гажетар', 'gadgets' => 'Гаджетар', 'gadgets-title' => 'Гажетар', ); @@ -2109,11 +2132,16 @@ Doe mós de juuste rèchte höbben óppe doelwie, ouch óm bewirkinge aan systee ); /** لوری (لوری) + * @author Bonevarluri * @author Mogoeilor */ $messages['lrc'] = array( 'prefs-gadgets' => 'چيا هنی', + 'gadgets' => 'گجت یا', + 'gadgets-title' => 'گجت یا', + 'gadgets-uses' => 'کاروردیا', 'gadgets-export' => 'وه صحرا ديئن', + 'gadgets-not-found' => 'گجت "$1" پیدا نبی.', 'gadgets-export-download' => 'گرتن', ); @@ -2244,7 +2272,7 @@ $1', 'gadgets-export' => 'Извези', 'gadgets-export-title' => 'Извоз на алатка', 'gadgets-not-found' => 'Алатката „$1“ не е пронајдена.', - 'gadgets-export-text' => 'За да ја извезете алатката $1, кликнете на копчето „{{int:gadgets-export-download}}“, зачувајте ја преземената податотека, + 'gadgets-export-text' => 'За да ја извезете алатката $1, стиснете на копчето „{{int:gadgets-export-download}}“, зачувајте ја преземената податотека, одете на Special:Import на целното вики и подигнете ја. Потоа на страницата MediaWiki:Gadgets-definition внесете го следново:
      $2
      Мора да имате соодветни дозволи на целното вики (вклучувајќи го правото за уредување на системски пораки), и мора да биде овозможен увозот од подигања.', @@ -2301,7 +2329,7 @@ $messages['mr'] = array( 'gadgets-title' => 'गॅजेट', 'gadgets-pagetext' => 'खाली तुम्ही तुमच्या सदस्यत्वासाठी [[Special:Preferences#mw-prefsection-gadgets|माझ्या पसंती]] पानावर वापरू शकत असलेल्या [[MediaWiki:Gadgets-definition|व्याख्या]]ने सांगितलेल्या गॅजेट्सची यादी दिलेली आहे. हे पान तुम्हाला प्रत्येक गॅजेट्सचा कोड व व्याख्या देणार्‍या पानासाठी सोपी संपर्क सुविधा पुरविते.', 'gadgets-uses' => 'उपयोग', - 'gadgets-required-rights' => 'खलील गोष्ठी साठी विनंती {{PLURAL:$2|right|rights}}: + 'gadgets-required-rights' => 'खालील {{PLURAL:$2|अधिकार}} हवेच : $1', 'gadgets-required-skins' => '{{PLURAL:$2|$1 skin|खालील देखाव्यांवर : $1}} उपलब्ध आहेत', @@ -2309,11 +2337,11 @@ $1', 'gadgets-export' => 'निर्यात करा', 'gadgets-export-title' => 'उपकरण निर्यात', 'gadgets-not-found' => 'उपकरण "$1" सापडत नाही.', - 'gadgets-export-text' => '$1 उपकरण-सुविधा निर्यातकरण्या करिता, "{{int:gadgets-export-download}}" कलीवर टिचकी मारा, उतरवलेली संचिका-फाईल जतन करा + 'gadgets-export-text' => '$1 उपकरण-सुविधा निर्यात करण्याकरिता, "{{int:gadgets-export-download}}" कळीवर टिचकी मारा, उतरवलेली संचिका-फाईल जतन करा डेस्टिनेशन विकिच्या विशेष:आयात पानावर जाऊन संचिका-फाईल चढवावी.नंतर खालील MediaWiki:Gadgets-definition पान चढवावे :
      $2
      तुमच्याकडे डेस्टिनेशन विकिवर (सिस्टीम मेसेजेस सुद्धा संपादीत करण्यासहीत ) सुयोग्य परवानग्या उपलब्ध असणे अत्यावश्यक आहे आणि चढवलेल्या संचिकाकरिता आयात सुविधा सक्षम असणे आवश्यक आहे.', - 'gadgets-export-download' => 'उतरवा', + 'gadgets-export-download' => 'अधिभारण करा', ); /** Malay (Bahasa Melayu) @@ -2457,16 +2485,17 @@ Dit overzichte biejt eenvoudige toegang tot de systeemtekstzied waor de beschrie /** Nepali (नेपाली) * @author Bhawani Gautam + * @author Nirmal Dulal */ $messages['ne'] = array( - 'gadgets-desc' => 'प्रयोगकर्ताको [[Special:Preferences#mw-prefsection-gadgets|अभिरुचि अनुसार]] [[Special:Gadgets|CSS र जाभास्क्रीप्ट उपकरणहरु]] छान्न दिनुहोस्', - 'prefs-gadgets' => 'उपकरणहरु', - 'gadgets-prefstext' => 'विशेष उपकरणहरुको सूची तल दिइएकोछ तपाईंले आफ्नो खातामा सक्रिय पार्न सक्नुहुन्छ। -प्राय सबै उपकरणहरु जाभास्क्रीप्टमा आधारित छन्, यस कारण ब्राउजरमा काम गराउनको लागि जाभास्क्रीप्टलाई सक्रिय गर्नु पर्छ। -याद राख्नुहोस् ती उपकरणहरुले अभिरुचि पृष्ठमा असर गर्दैनन्। -यो पनि याद राखुहोस् यी विशेष उपकरणहरु मीडिया विकि सफ्टवेयरभित्र पर्दैनन् र प्राय स्थानीय विकि प्रयोगकर्ताहरुले विकास यसको विकास र सञ्चालन गर्दछन्। स्थानीय प्रबन्धकहरुले उपलब्ध उपकरणहरुका [[MediaWiki:Gadgets-definition|परिभाषाहरु]] र [[Special:Gadgets|विवरणहरु]] सम्पादन गर्दछन्।', - 'gadgets' => 'उपकरणहरु', - 'gadgets-title' => 'उपकरणहरु', + 'gadgets-desc' => 'प्रयोगकर्ताको [[Special:Preferences#mw-prefsection-gadgets|अभिरुचि अनुसार]] [[Special:Gadgets|CSS र जाभास्क्रीप्ट उपकरणहरू]] छान्न दिनुहोस', + 'prefs-gadgets' => 'उपकरणहरू', + 'gadgets-prefstext' => 'विशेष उपकरणहरूको सूची तल दिइएकोछ तपाईंले आफ्नो खातामा सक्रिय पार्न सक्नुहुन्छ। +प्राय सबै उपकरणहरू जाभास्क्रीप्टमा आधारित छन्, यस कारण ब्राउजरमा काम गराउनको लागि जाभास्क्रीप्टलाई सक्रिय गर्नु पर्छ। +याद राख्नुहोस् ती उपकरणहरूले अभिरुचि पृष्ठमा असर गर्दैनन्। +यो पनि याद राखुहोस् यी विशेष उपकरणहरू मीडिया विकि सफ्टवेयरभित्र पर्दैनन् र प्राय स्थानीय विकि प्रयोगकर्ताहरुले विकास यसको विकास र सञ्चालन गर्दछन्। स्थानीय प्रबन्धकहरूले उपलब्ध उपकरणहरूका [[MediaWiki:Gadgets-definition|परिभाषाहरू]] र [[Special:Gadgets|विवरणहरू]] सम्पादन गर्दछन्।', + 'gadgets' => 'उपकरणहरू', + 'gadgets-title' => 'उपकरणहरू', 'gadgets-pagetext' => 'विशेष उपकरणहरुको सूची तल दिइएकोछ प्रयोगकर्ताहरुले [[MediaWiki:Gadgets-definition|परिभाषाहरु]]मा जनाए अनुसार आफ्नो [[Special:Preferences#mw-prefsection-gadgets|अभिरुचि पृष्ठमा]], सक्रिय पार्न सक्नेछन्।। यस सिंहावलोकनले प्रणाली सन्देश पृष्ठ सजिलै प्राप्त गर्न सकिनेछ जसले प्रत्येक उपकरणको विवरण र कोडलाई परिभाषित गरेको छ।', 'gadgets-uses' => 'प्रयोगहरु', @@ -2913,6 +2942,7 @@ Tu a ave le permesse appropriate sus 'a Uicchi de destinazione (ingludenne le de * @author Eleferen * @author Ignatus * @author Illusion + * @author Kaganer * @author MaxSem * @author VasilievVV * @author Александр Сигачёв @@ -2931,10 +2961,10 @@ $messages['ru'] = array( 'gadgets-pagetext' => 'Ниже приведён список гаджетов, которые участники могут включить на своей странице настроек, в соответствии со списком на странице [[MediaWiki:Gadgets-definition|определений]]. Этот список позволяет легко получить доступ к страницам системных сообщений, определяющих описания и исходные коды гаджетов.', 'gadgets-uses' => 'Использует', - 'gadgets-required-rights' => '{{PLURAL:$2|Требуется право|Требуются права}}: + 'gadgets-required-rights' => '{{PLURAL:$2|1=Требуется право|Требуются права}}: $1', - 'gadgets-required-skins' => 'Доступен при {{PLURAL:$2|теме оформления $1|следующих темах оформления: $1}}.', + 'gadgets-required-skins' => 'Доступен в {{PLURAL:$2|1=теме оформления «$1»|следующих темах оформления: $1}}.', 'gadgets-default' => 'Включён для всех по умолчанию.', 'gadgets-export' => 'Экспортировать', 'gadgets-export-title' => 'Экспорт гаджета', @@ -3042,6 +3072,15 @@ $messages['sgs'] = array( 'gadgets' => 'Rakondā', ); +/** Serbo-Croatian (srpskohrvatski / српскохрватски) + * @author Kolega2357 + */ +$messages['sh'] = array( + 'gadgets' => 'Alatke / Алатке', + 'gadgets-title' => 'Alatke / Алатке', + 'gadgets-uses' => 'Upotrebe / Употребе', +); + /** Sinhala (සිංහල) * @author Budhajeewa * @author නන්දිමිතුරු @@ -3179,6 +3218,7 @@ Ju duhet të keni leje të përshtatshme në wiki-n e destinuar (duke përfshir ); /** Serbian (Cyrillic script) (српски (ћирилица)‎) + * @author Milicevic01 * @author Millosh * @author Nikola Smolenski * @author Rancher @@ -3186,12 +3226,12 @@ Ju duhet të keni leje të përshtatshme në wiki-n e destinuar (duke përfshir */ $messages['sr-ec'] = array( 'gadgets-desc' => 'Омогућава корисницима да изаберу прилагођене [[Special:Gadgets|CSS и јаваскрипт гаџете]] у својим [[Special:Preferences#mw-prefsection-gadgets|подешавањима]]', - 'prefs-gadgets' => 'Гаџети', + 'prefs-gadgets' => 'Геџети', 'gadgets-prefstext' => 'Испод се налази списак посебних гаџета које можете да омогућите на свом налогу. Ове справице су углавном засноване на јаваскрипти, тако да она мора бити омогућена. Гаџети неће утицати на страницу за подешавање. -Они нису део софтвера Медијавики, већ се развијају и одржавају од стране корисника ваше викије. +Они нису део софтвера Медијавики, већ се развијају и одржавају од стране корисника на вашем локалном викију. Администратори могу да измене [[MediaWiki:Gadgets-definition|значења]] и [[Special:Gadgets|описе]] доступних гаџета.', 'gadgets' => 'Гаџети', 'gadgets-title' => 'Гаџети', @@ -3215,6 +3255,7 @@ $1', /** Serbian (Latin script) (srpski (latinica)‎) * @author Michaello + * @author Milicevic01 * @author Жељко Тодоровић */ $messages['sr-el'] = array( @@ -3224,7 +3265,7 @@ $messages['sr-el'] = array( Ove spravice su uglavnom zasnovane na javaskripti, tako da ona mora biti omogućena. Gadžeti neće uticati na stranicu za podešavanje. -Oni nisu deo softvera Medijaviki, već se razvijaju i održavaju od strane korisnika vaše vikije. +Oni nisu deo softvera Medijaviki, već se razvijaju i održavaju od strane korisnika na vašem lokalnom vikiju. Administratori mogu da izmene [[MediaWiki:Gadgets-definition|značenja]] i [[Special:Gadgets|opise]] dostupnih gadžeta.', 'gadgets' => 'gedžeti', 'gadgets-title' => 'gedžeti', @@ -3279,6 +3320,7 @@ $messages['su'] = array( * @author Diupwijk * @author Lejonel * @author M.M.S. + * @author Skalman */ $messages['sv'] = array( 'gadgets-desc' => 'Låter användare aktivera personliga [[Special:Gadgets|CSS- och JavaScript-finesser]] genom sina [[Special:Preferences#mw-prefsection-gadgets|inställningar]]', @@ -3291,7 +3333,7 @@ Notera också att dessa finesser inte är en del av MediaWiki-programvaran, och 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#mw-prefsection-gadgets|inställningar]], definierad av [[MediaWiki:Gadgets-definition|definieringarna]]. + 'gadgets-pagetext' => 'Härunder finns en lista över finesser som användare kan aktivera i sina [[Special:Preferences#mw-prefsection-gadgets|inställningar]], definierad av [[MediaWiki:Gadgets-definition|definitionerna]]. 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 följande {{PLURAL:$2|rättighet|rättigheter}}: @@ -3513,6 +3555,7 @@ $messages['ug-arab'] = array( /** Ukrainian (українська) * @author AS * @author Ahonc + * @author Andriykopanytsia * @author Dim Grits * @author Olvin * @author Prima klasy4na @@ -3535,10 +3578,10 @@ $messages['uk'] = array( 'gadgets-pagetext' => 'Нижче наведено перелік додатків, які можна ввімкнути на [[Special:Preferences#mw-prefsection-gadgets|сторінці налаштувань]]. Цей перелік задано на [[MediaWiki:Gadgets-definition|сторінці визначень]]. Таким чином, можна отримати простий доступ до системних сторінок, де задається опис кожного додатку та його код.', 'gadgets-uses' => 'Використовує', - 'gadgets-required-rights' => '{{PLURAL:$2|Потрібне право|Потрібні такі права}}: + 'gadgets-required-rights' => '{{PLURAL:$2|1=Потрібне право|Потрібні такі права}}: $1', - 'gadgets-required-skins' => 'Доступний на {{PLURAL:$2|$1 skin|наступних темах оформлення: $1}}.', + 'gadgets-required-skins' => 'Доступний на {{PLURAL:$2|1=$1 skin|наступних темах оформлення: $1}}.', 'gadgets-default' => 'Увімкнено для всіх за замовчуванням.', 'gadgets-export' => 'Експортувати', 'gadgets-export-title' => 'Експорт додатка', diff --git a/extensions/Gadgets/SpecialGadgets.php b/extensions/Gadgets/SpecialGadgets.php index 888ba6e2..f6c3d74c 100644 --- a/extensions/Gadgets/SpecialGadgets.php +++ b/extensions/Gadgets/SpecialGadgets.php @@ -95,7 +95,7 @@ class SpecialGadgets extends SpecialPage { array( 'action' => 'edit' ) ); $links[] = Linker::link( - $this->getTitle( "export/{$gadget->getName()}" ), + $this->getPageTitle( "export/{$gadget->getName()}" ), $this->msg( 'gadgets-export' )->escaped() ); diff --git a/extensions/ImageMap/COPYING b/extensions/ImageMap/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/extensions/ImageMap/COPYING @@ -0,0 +1,339 @@ + 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. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/extensions/ImageMap/ImageMap.i18n.php b/extensions/ImageMap/ImageMap.i18n.php index 1e07d69c..3e7e9f76 100644 --- a/extensions/ImageMap/ImageMap.i18n.php +++ b/extensions/ImageMap/ImageMap.i18n.php @@ -1,6 +1,6 @@ '<imagemap> টেগ্‌ ব্যৱহাৰ কৰি ক্লায়েণ্ট-চাইড ক্লিকেবল্‌ ইমেজ্‌ মেপৰ অনুমতি দিয়ে', 'imagemap_no_image' => 'ত্ৰুটী: প্ৰথম শাৰীত এখন ছবি নিৰ্দিষ্ট কৰিবই লাগিব', 'imagemap_invalid_image' => 'ত্ৰুটী: ছবিখন অবৈধ বা ছবিখন নাই', - 'imagemap_bad_image' => 'ত্ৰুটী: এই পৃষ্ঠাত ছবিখন ব্লেকলিষ্টেড কৰা হৈছে', + 'imagemap_bad_image' => 'ত্ৰুটী: এই পৃষ্ঠাত ছবিখন ব্লেকলিষ্টেড কৰা হৈছে।', 'imagemap_no_link' => "ত্ৰুটী: $1 শাৰীৰ শেষত কোনো বৈধ লিংক পোৱা নগ'ল", 'imagemap_invalid_title' => 'ত্ৰুটী: $1 শাৰীত থকা লিংকৰ শিৰোনাম অবৈধ', 'imagemap_missing_coord' => 'ত্ৰুটী: $1 শাৰীত আকৃতিৰ বাবে যথেষ্ট স্থানাংক নাই', @@ -365,7 +365,9 @@ $messages['ca'] = array( * @author Умар */ $messages['ce'] = array( + 'imagemap_desc' => 'Таро хуьлуьйту картан суьрта таӀийча латораш билгалдан <imagemap> теган гӀуьнца', 'imagemap_invalid_image' => 'ГӀалат: нийса дац я ишта сурт дац кху чохь', + 'imagemap_no_link' => 'ГӀалат: $1 могӀанан чаккхехь нийса йоцу хьажораг ю', 'imagemap_invalid_title' => 'ГӀалат: могӀана $1 хьажориган корта нийса яц', 'imagemap_description' => 'Суьртах лаьцна', ); @@ -376,7 +378,7 @@ $messages['co'] = array( 'imagemap_description' => "À prupositu d'issa imagine", ); -/** Czech (česky) +/** Czech (čeština) * @author Li-sung * @author Mormegil */ diff --git a/extensions/ImageMap/ImageMap.php b/extensions/ImageMap/ImageMap.php index aa4cfa0d..b263bbb5 100644 --- a/extensions/ImageMap/ImageMap.php +++ b/extensions/ImageMap/ImageMap.php @@ -1,4 +1,20 @@ diff --git a/extensions/InputBox/InputBox.classes.php b/extensions/InputBox/InputBox.classes.php index 380015cc..314bc6c8 100644 --- a/extensions/InputBox/InputBox.classes.php +++ b/extensions/InputBox/InputBox.classes.php @@ -84,10 +84,10 @@ class InputBox { // Use button label fallbacks if ( !$this->mButtonLabel ) { - $this->mButtonLabel = wfMessage( 'tryexact' )->escaped(); + $this->mButtonLabel = wfMessage( 'tryexact' )->text(); } if ( !$this->mSearchButtonLabel ) { - $this->mSearchButtonLabel = wfMessage( 'searchfulltext' )->escaped(); + $this->mSearchButtonLabel = wfMessage( 'searchfulltext' )->text(); } // Build HTML @@ -101,7 +101,7 @@ class InputBox { 'name' => 'searchbox', 'id' => 'searchbox', 'class' => 'searchbox', - 'action' => SpecialPage::getTitleFor( 'Search' )->escapeLocalUrl(), + 'action' => SpecialPage::getTitleFor( 'Search' )->getLocalUrl(), ) ); $htmlOut .= Xml::element( 'input', @@ -239,7 +239,7 @@ class InputBox { public function getSearchForm2() { // Use button label fallbacks if ( !$this->mButtonLabel ) { - $this->mButtonLabel = wfMessage( 'tryexact' )->escaped(); + $this->mButtonLabel = wfMessage( 'tryexact' )->text(); } $id = Sanitizer::escapeId( $this->mID, 'noninitial' ); @@ -255,7 +255,7 @@ class InputBox { 'name' => 'bodySearch' . $id, 'id' => 'bodySearch' . $id, 'class' => 'bodySearch', - 'action' => SpecialPage::getTitleFor( 'Search' )->escapeLocalUrl(), + 'action' => SpecialPage::getTitleFor( 'Search' )->getLocalUrl(), 'style' => $this->mInline ? 'display: inline;' : '' ) ); @@ -312,11 +312,11 @@ class InputBox { if ( $this->mType == "comment" ) { if ( !$this->mButtonLabel ) { - $this->mButtonLabel = wfMessage( "postcomment" )->escaped(); + $this->mButtonLabel = wfMessage( 'postcomment' )->text(); } } else { if ( !$this->mButtonLabel ) { - $this->mButtonLabel = wfMessage( 'createarticle' )->escaped(); + $this->mButtonLabel = wfMessage( 'createarticle' )->text(); } } @@ -427,7 +427,7 @@ class InputBox { global $wgScript; if ( !$this->mButtonLabel ) { - $this->mButtonLabel = wfMessage( "postcomment" )->escaped(); + $this->mButtonLabel = wfMessage( 'postcomment' )->text(); } $htmlOut = Xml::openElement( 'div', diff --git a/extensions/InputBox/InputBox.i18n.php b/extensions/InputBox/InputBox.i18n.php index 1c8519f0..972aea54 100644 --- a/extensions/InputBox/InputBox.i18n.php +++ b/extensions/InputBox/InputBox.i18n.php @@ -142,7 +142,7 @@ $messages['as'] = array( অনুগ্ৰহ কৰি "create", "comment", "search", "search2" বা "fulltext" নিৰ্ধাৰণ কৰক', 'tryexact' => 'কেবল দিয়া শব্দহে বিচাৰিব', 'searchfulltext' => 'সম্পূৰ্ণ পাঠ্য বিচাৰিব', - 'createarticle' => 'পৃষ্ঠা বনাওক', + 'createarticle' => 'পৃষ্ঠা সৃষ্টি কৰক', 'inputbox-ns-main' => 'মূখ্য', ); @@ -355,9 +355,11 @@ $messages['cdo'] = array( * @author Умар */ $messages['ce'] = array( + 'inputbox-desc' => 'Аьтту хуьлуьйту хьалхе билгалйина HTML-формаш лато', + 'inputbox-error-no-type' => 'Ахьа язъечу меттиган тайп билгала йина яц.', 'tryexact' => 'Леррина лахар', 'searchfulltext' => 'Дуьззина йозанца лахар', - 'createarticle' => 'Яззам кхоллар', + 'createarticle' => 'АгӀо кхолла', ); /** Sorani Kurdish (کوردی) @@ -791,11 +793,12 @@ $messages['hak'] = array( /** Hebrew (עברית) * @author Amire80 + * @author Guycn2 * @author Rotem Liss */ $messages['he'] = array( 'inputbox-desc' => 'אפשרות להכללת טופסי HTML שהוגדרו מראש', - 'inputbox-error-no-type' => 'לא ציינתם את סוג תיבת הקלט ליצירה.', + 'inputbox-error-no-type' => 'לא ציינת את סוג תיבת הקלט ליצירה.', 'inputbox-error-bad-type' => 'סוג תיבת הקלט "$1" אינו ידוע. אנא ציינו "create", "comment", "search", "search2" או "fulltext".', 'tryexact' => 'לדף בשם זה', @@ -949,14 +952,14 @@ $messages['ig'] = array( * @author Lam-ang */ $messages['ilo'] = array( - 'inputbox-desc' => 'Pakabaelan na nga agikabil kadagiti napalasin a kinabuklan ti HTML', - 'inputbox-error-no-type' => 'Saan mo pay nga imbaga no ania a kita ti pagikabilan a kahon ti aramiden.', - 'inputbox-error-bad-type' => 'Ti kita ti pigikabilan a kahon "$1" ket saan a ma-ammoan. -Pangaasi ta ibagam nga "agaramid", "komentario", "biruken", "biruken2", "wenno sibubukel a testo".', + 'inputbox-desc' => 'Mangipalubos ti panangiraman kadagiti nasakbayan a naipalawag a porma ti HTML', + 'inputbox-error-no-type' => 'Saanmo pay a nainaganan no ania a kita ti partuaten a kahon ti pagikabilan.', + 'inputbox-error-bad-type' => 'Ti kita ti kahon a pigikabilan ti "$1" ket saan a mabigbigan. +Pangngaasi nga inaganam ti "agpartuat", "komento", "biruken", "biruken2", "wenno sibubukel a testo".', 'tryexact' => 'Padasem to pudno a kapada', - 'searchfulltext' => 'Agbiruk ti sibubukel a testo', - 'createarticle' => 'Agaramid ti panid', - 'inputbox-ns-main' => 'Dati', + 'searchfulltext' => 'Agbiruk ti napno a testo', + 'createarticle' => 'Agpartuat ti panid', + 'inputbox-ns-main' => 'Nangruna', ); /** Ido (Ido) @@ -1063,11 +1066,12 @@ $messages['kaa'] = array( /** Kabyle (Taqbaylit) * @author Agurzil + * @author Mmistmurt */ $messages['kab'] = array( 'tryexact' => 'Nadi ɣef uzwel kif-kif', 'searchfulltext' => 'Nadi aḍris ettmam', - 'createarticle' => 'Xleq amagrad', # Fuzzy + 'createarticle' => 'Xleq amagrad', ); /** Kazakh (Arabic script) (قازاقشا (تٴوتە)‏) @@ -1124,7 +1128,7 @@ $messages['ko'] = array( 'inputbox-error-bad-type' => '"$1" 입력 상자 종류는 정의되어 있지 않습니다. "create", "comment", "search", "search2"나 "fulltext" 중 하나를 지정하세요.', 'tryexact' => '일치하는 항목 찾기', - 'searchfulltext' => '전체 글 찾기', + 'searchfulltext' => '전체 글 검색', 'createarticle' => '문서 만들기', 'inputbox-ns-main' => '문서', ); @@ -1163,6 +1167,13 @@ $messages['la'] = array( 'createarticle' => 'Paginam creare', ); +/** Ladino (Ladino) + * @author Menachem.Moreira + */ +$messages['lad'] = array( + 'createarticle' => 'Krear pajina', +); + /** Luxembourgish (Lëtzebuergesch) * @author Robby */ @@ -1231,9 +1242,11 @@ $messages['lo'] = array( ); /** لوری (لوری) + * @author Bonevarluri * @author Mogoeilor */ $messages['lrc'] = array( + 'searchfulltext' => 'پی جوری متنی', 'createarticle' => 'راس كردن بلگه', 'inputbox-ns-main' => 'اصلی', ); @@ -1348,7 +1361,7 @@ $messages['mn'] = array( */ $messages['mr'] = array( 'inputbox-desc' => 'पूर्वी लिहिलेले HTML अर्ज वापरण्याची परवानगी द्या', - 'inputbox-error-no-type' => 'तुम्ही कुठल्या प्रकारची पृष्ठपेटी तयार करायची ते स्पष्ट केलेले नाही.', + 'inputbox-error-no-type' => 'कुठल्या प्रकारची पृष्ठपेटी तयार करायची ते तुम्ही स्पष्ट केलेले नाही.', 'inputbox-error-bad-type' => 'तुम्ही दिलेला पृष्ठपेटीचा "$1" हा प्रकार ओळखीचा नाही. कृपया "create", "comment", "search" किंवा "search2" किंवा "fulltext".यातील एक निवडा.', 'tryexact' => 'दिलेलेच शब्द शोधा', @@ -1654,6 +1667,7 @@ Por favor, especifique "create", "comment", "search", "search2" ou "fulltext".', * @author Brunoy Anastasiya Seryozhenko * @author Eduardo.mps * @author MetalBrasil + * @author Opraco */ $messages['pt-br'] = array( 'inputbox-desc' => 'Permite a inclusão de formulários definidos de HTML', @@ -1662,7 +1676,7 @@ $messages['pt-br'] = array( Por favor, especifique "create", "comment", "search", "search2" ou "fulltext".', 'tryexact' => 'Tentar a expressão exata', 'searchfulltext' => 'Pesquisar em todo o texto.', - 'createarticle' => 'Criar página.', + 'createarticle' => 'Criar página', 'inputbox-ns-main' => 'Principal', ); @@ -1810,6 +1824,13 @@ $messages['sgs'] = array( 'searchfulltext' => 'Ėiškuotė pėlna teksta', ); +/** Serbo-Croatian (srpskohrvatski / српскохрватски) + * @author Kolega2357 + */ +$messages['sh'] = array( + 'searchfulltext' => 'Pretraži cijeli tekst - Претражи цео текст', +); + /** Sinhala (සිංහල) * @author Asiri wiki * @author Budhajeewa diff --git a/extensions/Interwiki/COPYING b/extensions/Interwiki/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/extensions/Interwiki/COPYING @@ -0,0 +1,339 @@ + 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. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/extensions/Interwiki/Interwiki.alias.php b/extensions/Interwiki/Interwiki.alias.php index 30098f05..3e49249e 100644 --- a/extensions/Interwiki/Interwiki.alias.php +++ b/extensions/Interwiki/Interwiki.alias.php @@ -251,5 +251,5 @@ $specialPageAliases['zh-hans'] = array( /** Traditional Chinese (中文(繁體)‎) */ $specialPageAliases['zh-hant'] = array( - 'Interwiki' => array( '跨維基連結' ), + 'Interwiki' => array( '跨wiki', '跨維基' ), ); \ No newline at end of file diff --git a/extensions/Interwiki/Interwiki.i18n.php b/extensions/Interwiki/Interwiki.i18n.php index a2619ff3..cebc7dc4 100644 --- a/extensions/Interwiki/Interwiki.i18n.php +++ b/extensions/Interwiki/Interwiki.i18n.php @@ -435,8 +435,11 @@ $messages['arz'] = array( /** Assamese (অসমীয়া) * @author Bishnu Saikia + * @author Gitartha.bordoloi */ $messages['as'] = array( + 'interwiki' => 'আন্তঃৱিকি তথ্য চাওক আৰু সম্পাদনা কৰক', + 'interwiki-title-norights' => 'আন্তঃৱিকি তথ্য চাওক', 'interwiki_1' => 'হয়', 'interwiki_0' => 'নহয়', 'interwiki_edit' => 'সম্পাদনা কৰক', @@ -798,6 +801,7 @@ Ho pezet soñj e c'hall an dra-se terriñ liammoù zo anezho dija.", Marteze n\'eus ket anezhañ.', 'interwiki-badprefix' => 'Arouezennoù direizh zo er rakger etrewiki spisaet "$1', 'interwiki-submit-empty' => "N'hall ket ar rakger hag an URL bezañ goullo.", + 'interwiki-submit-invalidurl' => 'Direizh eo protokol an URL.', 'log-name-interwiki' => 'Deizlevr taolenn an etrewiki', 'logentry-interwiki-iw_add' => '$1 {{GENDER:$2|en deus|he deus}} ouzhpennet ar rakger "$4" ($5) (treuz: $6; lec\'hel: $7) d\'an daolenn etrewiki', 'logentry-interwiki-iw_edit' => '$1 {{GENDER:$2|en deus|he deus}} kemmet ar rakger "$4" ($5) (treuz: $6; lec\'hel: $7) en daolenn etrewiki', @@ -931,6 +935,7 @@ Possiblement no existeix.', */ $messages['ce'] = array( 'interwiki-title-norights' => 'Юкъарвикишан хаамаш хьажар', + 'interwiki-desc' => 'ТӀетуху [[Special:Interwiki|белхан агӀо]] юкъаравикин дешхьалхенашка хьажа а уьш тая а.', 'interwiki_intro' => 'ХӀара ду юкъарвикишан таблице хьажар.', 'interwiki-legend-show' => 'Гайта хьехар', 'interwiki-legend-hide' => 'Къайладаккха хьехар', @@ -951,7 +956,9 @@ $messages['ce'] = array( 'interwiki_0' => 'яц', 'interwiki_edit' => 'Нисйé', 'interwiki_reasonfield' => 'Бахьан:', - 'interwiki_addbutton' => 'Тlетоха', + 'interwiki_delquestion' => '«$1» дӀаяккхар', + 'interwiki_addbutton' => 'ТӀетоха', + 'logentry-interwiki-iw_edit' => '$1 {{GENDER:$2|хийцина}} префикс «$4» ($5) (trans: $6; local: $7) юкъарвики-таблицехь', ); /** Sorani Kurdish (کوردی) @@ -968,7 +975,7 @@ $messages['co'] = array( 'interwiki_reasonfield' => 'Mutivu:', ); -/** Czech (česky) +/** Czech (čeština) * @author Danny B. * @author Mormegil */ @@ -1030,7 +1037,7 @@ Pravděpodobně neexistuje.', 'action-interwiki' => 'změnit tento záznam interwiki', ); -/** Church Slavic (словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) +/** Church Slavic (словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) * @author ОйЛ */ $messages['cu'] = array( @@ -1086,8 +1093,8 @@ $messages['da'] = array( 'interwiki-legend-hide' => 'Skjul forklaring', 'interwiki_prefix' => 'Præfiks', 'interwiki-prefix-label' => 'Præfiks:', - 'interwiki_prefix_intro' => 'Interwiki præfiks som skal anvendes i [[præfiks:sidenavn]] wikitext syntaks.', - 'interwiki_url_intro' => 'Skabelon til URL-adresser. Pladsholderen $1 vil blive erstattet af sidenavn af wikitext, når den ovennævnte wikitext syntaks bruges.', + 'interwiki_prefix_intro' => 'Interwiki præfiks som skal anvendes i [[præfiks:sidenavn]] wikitekst syntaks.', + 'interwiki_url_intro' => 'Skabelon til URL-adresser. Pladsholderen $1 vil blive erstattet af sidenavn af wikitekst, når den ovennævnte wikitekst syntaks bruges.', 'interwiki_local' => 'Videresend', 'interwiki-local-label' => 'Videresend:', 'interwiki_local_intro' => 'En HTTP-forespørgsel til den lokale wiki med denne interwiki præfiks i URL-adressen er:', @@ -1095,7 +1102,7 @@ $messages['da'] = array( 'interwiki_local_1_intro' => 'Omdirigeret til target URL i interwiki link definitioner (dvs. behandles som referencer i lokale sider).', 'interwiki_trans' => 'Transkluder', 'interwiki-trans-label' => 'Transkluder:', - 'interwiki_trans_intro' => 'Hvis wikitext syntaksen [[præfiks:sidenavn]] bruges, så:', + 'interwiki_trans_intro' => 'Hvis wikitekst syntaksen [[præfiks:sidenavn]] bruges, så:', 'interwiki_1' => 'ja', 'interwiki_0' => 'nej', 'interwiki_error' => 'Fejl: Interwikitabellen er tom eller noget andet gik galt.', @@ -1121,7 +1128,7 @@ Husk, at dette kan bryde eksisterende hyperlinks.', Det findes muligvis ikke.', 'interwiki-badprefix' => 'Det angivne interwikipræfiks "$1" indeholder ugyldige tegn.', 'right-interwiki' => 'Redigere interwikidata', - 'action-interwiki' => 'ændre dette interwiki-element', + 'action-interwiki' => 'redigere interwikidata', ); /** German (Deutsch) @@ -1402,6 +1409,7 @@ Verŝajne ĝi ne ekzistas.', /** Spanish (español) * @author Armando-Martin + * @author Ciencia Al Poder * @author Crazymadlover * @author Imre * @author Invadinado @@ -1421,18 +1429,18 @@ $messages['es'] = array( 'interwiki-legend-hide' => 'Ocultar la leyenda', 'interwiki_prefix' => 'Prefijo', 'interwiki-prefix-label' => 'Prefijo:', - 'interwiki_prefix_intro' => 'Prefijo interwiki que se utilizará en sintaxis wikitexto [[prefix:pagename]] wikitext syntax.', - 'interwiki_url_intro' => 'Plantilla para URLs. El marcador $1 será reemplazado por el nombre de página del wikitexto cuando se use la sintaxis de wikitexto arriba mostrada.', - 'interwiki_local' => 'Adelante', - 'interwiki-local-label' => 'Adelante:', - 'interwiki_local_intro' => 'Una solicitud HTTP a la wiki local con este prefijo interwiki en la URL es:', - 'interwiki_local_0_intro' => 'no se satisfizo, normalmente bloqueado por "página no encontrada",', - 'interwiki_local_1_intro' => 'redirigido a la URL objetivo en las definiciones de enlaces interwiki (es decir, se la trata como a las referencias en páginas locales)', + 'interwiki_prefix_intro' => 'Prefijo interwiki que se utilizará en sintaxis wikitexto [[prefijo:nombre de página]].', + 'interwiki_url_intro' => 'Plantilla para URLs. El marcador $1 será reemplazado por el nombre de página del wikitexto cuando se use la sintaxis de wikitexto mostrada arriba.', + 'interwiki_local' => 'Remitir', + 'interwiki-local-label' => 'Remitir:', + 'interwiki_local_intro' => 'Una solicitud HTTP a la wiki local con este prefijo interwiki en la URL:', + 'interwiki_local_0_intro' => 'no será satisfecha, normalmente mostrando una página de error "título incorrecto" en su lugar.', + 'interwiki_local_1_intro' => 'será remitida a la URL objetivo definida en los enlaces de interwiki.', 'interwiki_trans' => 'transcluir', 'interwiki-trans-label' => 'Transcluir:', - 'interwiki_trans_intro' => 'Si se utiliza la sintaxis de wikitexto {{prefix:pagename}}, entonces:', - 'interwiki_trans_1_intro' => 'permitir la transclusión desde la wiki foránea, si las transclusiones de interwiki son por lo general permitidas en esta wiki,', - 'interwiki_trans_0_intro' => 'no permitirlo. En su lugar, buscar una página en el espacio de nombre de la plantilla.', + 'interwiki_trans_intro' => 'Si se utiliza la sintaxis de wikitexto {{prefijo:nombre de la página}}, entonces:', + 'interwiki_trans_1_intro' => 'se permitirá la transclusión desde la wiki foránea, si las transclusiones de interwiki son por lo general permitidas en este wiki.', + 'interwiki_trans_0_intro' => 'no se permitirá, y en su lugar, buscará una página en el espacio de nombres de plantilla.', 'interwiki_intro_footer' => 'Para más información consulte [//www.mediawiki.org/wiki/Manual:Interwiki_table MediaWiki.org] acerca de la tabla de interwiki. Hay un [[Special:Log/interwiki|registro de cambios]] a esta tabla de interwiki.', 'interwiki_1' => 'sí', @@ -1535,10 +1543,23 @@ Võimalik, et seda pole olemas.', /** Basque (euskara) * @author An13sa * @author Kobazulo + * @author Theklan + * @author Xabier Armendaritz */ $messages['eu'] = array( + 'interwiki' => 'Ikusi eta aldatu interwikiak', + 'interwiki-title-norights' => 'Ikusi interwikiak', + 'interwiki-desc' => 'Interwiki taula ikusi eta aldatzeko [[Special:Interwiki|orrialde berezi]] bat gehitzen du', + 'interwiki_intro' => 'Hau interwiki taularen ikuspegi orokor bat da.', + 'interwiki-legend-show' => 'Erakutsi azalpenak', + 'interwiki-legend-hide' => 'Ezkutatu azalpenak', 'interwiki_prefix' => 'Aurrizkia', 'interwiki-prefix-label' => 'Aurrizkia:', + 'interwiki_local' => 'Aurrera', + 'interwiki-local-label' => 'Aurrera:', + 'interwiki_trans' => 'Txertatu', + 'interwiki-trans-label' => 'Txertatu:', + 'interwiki_trans_intro' => '{{prefix:pagename}} wikitestu erako sintaxia erabiltzen bada, orduan:', 'interwiki_1' => 'bai', 'interwiki_0' => 'ez', 'interwiki_edit' => 'Aldatu', @@ -1547,30 +1568,48 @@ $messages['eu'] = array( 'interwiki_deleting' => '"$1" aurrizkia ezabatzen ari zara.', 'interwiki_addbutton' => 'Gehitu', 'interwiki_edittext' => 'Interwiki aurrizkia editatzen', + 'right-interwiki' => 'Interwiki datuak aldatu', + 'action-interwiki' => 'aldatu interwiki sarrera hau', ); /** Persian (فارسی) + * @author Armin1392 * @author Ebraminio * @author Hamid rostami * @author Huji * @author Mjbmr + * @author Omidh + * @author Reza1615 */ $messages['fa'] = array( 'interwiki' => 'نمایش و ویرایش اطلاعات میان‌ویکی', 'interwiki-title-norights' => 'مشاهدهٔ اطلاعات میان‌ویکی', 'interwiki-desc' => 'یک [[Special:Interwiki|صفحهٔ ویژه]] برای مشاهده و ویرایش جدول میان‌ویکی می‌افزاید.', - 'interwiki_intro' => 'قمستی از افزونهٔ میان‌ویکی. به صورت یک مرور کلی در Special:Interwiki نمایش داده شده.', # Fuzzy + 'interwiki_intro' => 'این یک نمای کلی از جدول interwiki است.', + 'interwiki-legend-show' => 'نمایش افسانه', + 'interwiki-legend-hide' => 'پنهان کردن افسانه', 'interwiki_prefix' => 'پیشوند', 'interwiki-prefix-label' => 'پیشوند:', - 'interwiki_local' => 'مشخص کردن به عنوان یک ویکی محلی', # Fuzzy - 'interwiki-local-label' => 'مشخص کردن به عنوان یک ویکی محلی:', # Fuzzy - 'interwiki_trans' => 'اجازهٔ گنجاندن میان‌ویکی را بده', # Fuzzy - 'interwiki-trans-label' => 'اجازهٔ گنجاندن میان‌ویکی را بده:', # Fuzzy + 'interwiki_prefix_intro' => 'پیشوند ویکی داخلی در [[prefix:pagename]] نحو متن ویکی استفاده شده‌است.', + 'interwiki_url' => 'نشانی اینترنتی', + 'interwiki-url-label' => 'نشانی اینترنتی:', + 'interwiki_url_intro' => 'الگو برای یو‌ار‌ال‌ها. هنگامی که نحو متن ویکی فوق‌الذکر استفاده شده‌است، نگه‌دارندهٔ جا $1 توسط pagename متن ویکی جایگزین خواهد شد.', + 'interwiki_local' => 'جلو', + 'interwiki-local-label' => 'جلو:', + 'interwiki_local_intro' => 'درخواست اچ‌تی‌تی‌پی برای ویکی داخلی با این پیشوند ویکی داخلی در یوآر‌ال هست:', + 'interwiki_local_0_intro' => 'بدون افتخار، اغلب توسط "صفحه پیدا نشد" مسدود شده.', + 'interwiki_local_1_intro' => 'هدایت به یوآر‌ال مورد نظر داده‌ شده در تعاریف لینک ویکی داخلی (یعنی مانند منابع در صفحات داخلی مطرح می‌شود).', + 'interwiki_trans' => 'تراگنجایش', + 'interwiki-trans-label' => 'تراگنجایش:', + 'interwiki_trans_intro' => 'اگر نحو متن ویکی {{prefix:pagename}} استفاده شده‌است، سپس:', + 'interwiki_trans_1_intro' => 'اجازه دادن ترنس‌کلوژن از ویکی خارجی، اگر ترنس‌کلوژن‌های ویکی داخلی در این ویکی به طور کلی اجازه داده خواهد شد.', + 'interwiki_trans_0_intro' => 'اجازه به این ندهید، بلکه به دنبال یک صفحه در فضای نام الگو باشید.', 'interwiki_intro_footer' => 'برای اطلاعات بیشتر در مورد Interwiki به [//www.mediawiki.org/wiki/Manual:Interwiki_table MediaWiki.org] مراحعه نمائید. همچنین می‌توانید [[Special:Log/interwiki|تاریخچهٔ تغییرات]] چدول Interwiki را مشاهده کنید.', 'interwiki_1' => 'بله', 'interwiki_0' => 'خیر', 'interwiki_error' => 'خطا: جدول میان‌ویکی خالی است، یا چیز دیگری مشکل دارد.', + 'interwiki-cached' => 'اطلاعات ویکی داخلی ذخیره شده‌است. اصلاح ذخیره ممکن نیست.', 'interwiki_edit' => 'ویرایش', 'interwiki_reasonfield' => 'دلیل:', 'interwiki_delquestion' => 'حذف «$1»', @@ -1592,7 +1631,11 @@ $messages['fa'] = array( احتمالاً این پیشوند وجود ندارد.', 'interwiki-badprefix' => 'پیشوند میان‌ویکی «$1» حاوی نویسه‌های نامجاز است', 'interwiki-submit-empty' => 'پیشوند و آدرس URL نمی‌توانند خالی باشند.', + 'interwiki-submit-invalidurl' => 'تفاهم‌نامهٔ یوآر‌ال نامعتبر است.', 'log-name-interwiki' => 'سیاههٔ جدول میان‌ویکی', + 'logentry-interwiki-iw_add' => '$1 {{GENDER:$2|اضافه شده}} پیشوند "$4" ($5) (ترانس: $6; local: $7) به جدول ویکی داخلی', + 'logentry-interwiki-iw_edit' => '$1 {{GENDER:$2|اصلاح شده}} پیشوند "$4" ($5) (tترنس: $6; داخلی: $7) در جدول ویکی داخلی', + 'logentry-interwiki-iw_delete' => '$1 {{GENDER:$2|حذف شده}} پیشوند "$4" از جدول ویکی داخلی', 'log-description-interwiki' => 'این یک تاریخچه از تغییرات [[Special:Interwiki|interwiki table]] است.', 'right-interwiki' => 'ویرایش اطلاعات میان‌ویکی', 'action-interwiki' => 'تغییر این مدخل میان‌ویکی', @@ -1745,6 +1788,13 @@ $messages['frp'] = array( 'action-interwiki' => 'changiér ceta entrâ entèrvouiqui', ); +/** Northern Frisian (Nordfriisk) + * @author Murma174 + */ +$messages['frr'] = array( + 'interwiki-title-norights' => 'Interwiki-dooten uunluke', +); + /** Friulian (furlan) * @author Klenje */ @@ -1969,6 +2019,7 @@ $messages['haw'] = array( /** Hebrew (עברית) * @author Agbad * @author Amire80 + * @author Guycn2 * @author Rotemliss * @author YaronSh * @author דניאל ב. @@ -1987,12 +2038,12 @@ $messages['he'] = array( 'interwiki_local' => 'העברה', 'interwiki-local-label' => 'העברה:', 'interwiki_local_intro' => 'בקשת HTTP לאתר הוויקי המקומי עם קידומת בינוויקי זו בכתובת:', - 'interwiki_local_0_intro' => 'לא מכובדת, לרוב נחסמת עם הודעת "הדף לא נמצא",', + 'interwiki_local_0_intro' => 'לא מכובדת, לרוב נחסמת עם הודעת "הדף לא נמצא".', 'interwiki_local_1_intro' => 'מופנית אל כתובת היעד שניתנה בהגדרות קישור הבינוויקי (כלומר מטופלת כמו הפניה בדפים מקומיים)', 'interwiki_trans' => 'הכללה', 'interwiki-trans-label' => 'הכללה:', 'interwiki_trans_intro' => 'אם נעשה שימוש בתחביר {{prefix:pagename}}, אז:', - 'interwiki_trans_1_intro' => 'תינתן האפשרות להכללת מקטעים חיצוניים מאתר ויקי חיצוני, אם הכללות מקטעי ויקי חיצוניים מורשים באופן כללי באתר ויקי זה,', + 'interwiki_trans_1_intro' => 'תינתן האפשרות להכללת מקטעים חיצוניים מאתר ויקי חיצוני, אם הכללות מקטעי ויקי חיצוניים מורשים באופן כללי באתר ויקי זה.', 'interwiki_trans_0_intro' => 'אין לאפשר זאת, במקום זאת יש לחפש דף במרחב השם תבנית.', 'interwiki_intro_footer' => 'עיינו ב־[//www.mediawiki.org/wiki/Manual:Interwiki_table MediaWiki.org] למידע נוסף על טבלת הבינוויקי. ישנו [[Special:Log/interwiki|יומן שינויים]] לטבלת הבינוויקי.', @@ -2363,6 +2414,7 @@ Memora que isto pote rumper ligamines existente.', Es possibile que illo non existe.', 'interwiki-badprefix' => 'Le prefixo interwiki specificate "$1" contine characteres invalide', 'interwiki-submit-empty' => 'Le prefixo e le URL non pote esser vacue.', + 'interwiki-submit-invalidurl' => 'Le protocollo del URL es invalide.', 'log-name-interwiki' => 'Registro del tabella interwiki', 'logentry-interwiki-iw_add' => '$1 {{GENDER:$2|addeva}} le prefixo "$4" ($5) (trans: $6; local: $7) al tabella interwiki', 'logentry-interwiki-iw_edit' => '$1 {{GENDER:$2|modificava}} le prefixo "$4" ($5) (trans: $6; local: $7) in le tabella interwiki', @@ -2828,7 +2880,7 @@ $messages['ko'] = array( 'logentry-interwiki-iw_add' => '$1 사용자가 "$4" ($5) (틀 포함: $6, 로컬: $7) 접두어를 인터위키 테이블에 {{GENDER:$2|추가}}했습니다.', 'logentry-interwiki-iw_edit' => '$1 사용자가 인터위키 테이블의 "$4" ($5) (틀 포함: $6, 로컬: $7) 접두어를 {{GENDER:$2|수정}}했습니다.', 'logentry-interwiki-iw_delete' => '$1 사용자가 인터위키 테이블의 "$4" 접두어를 {{GENDER:$2|삭제}}했습니다.', - 'log-description-interwiki' => '[[Special:Interwiki|인터위키]] 목록의 바뀐 내역입니다.', + 'log-description-interwiki' => '[[Special:Interwiki|인터위키 테이블]]이 바뀐 기록입니다.', 'right-interwiki' => '인터위키 목록 고치기', 'action-interwiki' => '이 인터위키 접두어 바꾸기', ); @@ -2979,11 +3031,11 @@ $messages['lb'] = array( 'interwiki_delfailed' => 'Prefix "$1" konnt net aus der Interwiki-Tabell erausgeholl ginn.', 'interwiki_addtext' => 'En Interwiki-prefix derbäisetzen', 'interwiki_addintro' => 'Dir setzt en neien Interwiki-Prefix derbäi. -Denkt drunn datt keng Espacen ( ), Et-commerciale (&), Gläichzeechen (=) a keng Doppelpunkten (:) däerfen dra sinn.', +Denkt drun datt keng Espacen ( ), Et-commerciale (&), Gläichzeechen (=) a keng Doppelpunkten (:) däerfen dra sinn.', 'interwiki_addbutton' => 'Derbäisetzen', 'interwiki_added' => 'De Prefix "$1" gou an d\'Interwiki-Tabell derbäigesat.', 'interwiki_addfailed' => 'De Prefix "$1" konnt net an d\'Interwiki-Tabell derbäigesat ginn. -Méiglecherweis gëtt et e schn an der Interwiki-Tabell.', +Méiglecherweis gëtt et e schonn an der Interwiki-Tabell.', 'interwiki_edittext' => 'En interwiki Prefix änneren', 'interwiki_editintro' => 'Dir ännert en Interwiki Prefix. Denkt drun, datt dat kann dozou féieren datt Linken déi et scho gëtt net méi funktionéieren.', @@ -3157,7 +3209,7 @@ $messages['mk'] = array( 'interwiki_1' => 'да', 'interwiki_0' => 'не', 'interwiki_error' => 'Грешка: Mеѓувики-табелата е празна, или нешто друго не е во ред.', - 'interwiki-cached' => 'Податоците за меѓувики се кеширани. Кешот не може да се измени.', + 'interwiki-cached' => 'Податоците за меѓувики се меѓускладирани. Меѓускладот не може да се измени.', 'interwiki_edit' => 'Уреди', 'interwiki_reasonfield' => 'Причина:', 'interwiki_delquestion' => 'Бришење на „$1“', @@ -3261,11 +3313,12 @@ $messages['mn'] = array( /** Marathi (मराठी) * @author Kaustubh + * @author V.narsikar */ $messages['mr'] = array( 'interwiki' => 'आंतरविकि डाटा पहा व संपादा', 'interwiki-title-norights' => 'अंतरविकि डाटा पहा', - 'interwiki-desc' => 'आंतरविकि सारणी पाहण्यासाठी व संपादन्यासाठी एक [[Special:Interwiki|विशेष पान]] वाढविते', + 'interwiki-desc' => 'आंतरविकि सारणी पाहण्यासाठी व संपादण्यासाठी एक [[Special:Interwiki|विशेष पान]] वाढविते', 'interwiki_intro' => 'आंतरविकि सारणी बद्दल अधिक माहीतीसाठी [http://www.mediawiki.org/wiki/Interwiki_table MediaWiki.org] पहा.', # Fuzzy 'interwiki_prefix' => 'उपपद (पूर्वप्रत्यय)', 'interwiki-prefix-label' => 'उपपद (पूर्वप्रत्यय):', # Fuzzy @@ -3280,11 +3333,11 @@ $messages['mr'] = array( 'interwiki_addbutton' => 'वाढवा', 'interwiki_added' => '"$1" उपपद आंतरविकि सारणी मध्ये वाढविण्यात आलेले आहे.', 'interwiki_addfailed' => '"$1" उपपद आंतरविकि सारणी मध्ये वाढवू शकलेलो नाही. कदाचित ते अगोदरच अस्तित्वात असण्याची शक्यता आहे.', - 'interwiki_edittext' => 'एक अंतरविकि उपपद संपादित आहे', - 'interwiki_editintro' => 'तुम्ही एक अंतरविकि उपपद संपादित आहात. + 'interwiki_edittext' => 'एक आंतरविकि उपपद संपादित आहे', + 'interwiki_editintro' => 'तुम्ही एक आंतरविकि उपपद संपादित आहात. लक्षात ठेवा की यामुळे अगोदर दिलेले दुवे तुटू शकतात.', - 'interwiki_edited' => 'अंतरविकि सारणीमध्ये "$1" उपपद यशस्वीरित्या बदलण्यात आलेले आहे.', - 'interwiki_editerror' => 'अंतरविकि सारणीमध्ये "$1" उपपद बदलू शकत नाही. + 'interwiki_edited' => 'आंतरविकि सारणीमध्ये "$1" उपपद यशस्वीरित्या बदलण्यात आलेले आहे.', + 'interwiki_editerror' => 'आंतरविकि सारणीमध्ये "$1" उपपद बदलू शकत नाही. कदाचित ते अस्तित्वात नसेल.', 'log-name-interwiki' => 'आंतरविकि सारणी नोंद', 'log-description-interwiki' => '[[Special:Interwiki|आंतरविकि सारणीत]] झालेल्या बदलांची ही सूची आहे.', @@ -3783,6 +3836,7 @@ Vielaischd hods des a ned.", /** Polish (polski) * @author BeginaFelicysym + * @author Chrumps * @author Leinad * @author Matma Rex * @author McMonster @@ -3808,7 +3862,7 @@ $messages['pl'] = array( 'interwiki_trans' => 'Transkluzja', 'interwiki-trans-label' => 'Transkluzja:', 'interwiki_trans_intro' => 'Jeśli składnia wiki {{przedrostek:nazwastrony}} została użyta, to:', - 'interwiki_trans_1_intro' => 'pozwala na transkluzję z innych wiki, jeśli transkluzja interwiki jest w ogóle dozwolona na tej wiki,', + 'interwiki_trans_1_intro' => 'pozwala na transkluzję z innych wiki, jeśli transkluzja interwiki jest w ogóle dozwolona na tej wiki.', 'interwiki_trans_0_intro' => 'nie pozwalaj na nią, raczej szukaj strony w przestrzeni szablonów.', 'interwiki_intro_footer' => 'Na [//www.mediawiki.org/wiki/Manual:Interwiki_table MediaWiki.org] odnajdziesz więcej informacji na temat tabeli interwiki. Tutaj znajduje się [[Special:Log/interwiki|rejestr zmian]] tabeli interwiki.', @@ -4054,6 +4108,9 @@ Existe um [[Special:Log/interwiki|registro de modificações]] à tabela de inte 'interwiki-submit-empty' => 'O prefixo e o URL não podem estar vazios.', 'interwiki-submit-invalidurl' => 'O protocolo do URL é inválido.', 'log-name-interwiki' => 'Registro da tabela de interwikis', + 'logentry-interwiki-iw_add' => '$1 {{GENDER:$2|adicionou}} o prefixo "$4" ($5) (trans: $6; local: $7) à tabela de interwikis', + 'logentry-interwiki-iw_edit' => '$1 {{GENDER:$2|modificou}} o prefixo "$4" ($5) (trans: $6; local: $7) na tabela de interwikis', + 'logentry-interwiki-iw_delete' => '$1 {{GENDER:$2|removeu}} o prefixo "$4" da tabela de interwikis', 'log-description-interwiki' => 'Este é um registro das alterações à [[Special:Interwiki|tabela de interwikis]].', 'right-interwiki' => 'Editar dados de interwiki', 'action-interwiki' => 'alterar esta entrada interwiki', @@ -4107,12 +4164,16 @@ $messages['roa-tara'] = array( 'interwiki_prefix_intro' => "'U prefisse inderuicchi avène ausate jndr'à [[prefix:pagename]] sindasse uicchiteste.", 'interwiki_local' => 'Inoltre', 'interwiki-local-label' => 'Inoltre:', + 'interwiki_local_intro' => "'Na richieste HTTP sus a sta uicchi locale cu ste prefisse inderuicchi jndr'à URL jè:", + 'interwiki_local_0_intro' => 'none onorate, normalmende bloccate da "pàgene none acchiate".', 'interwiki_1' => 'sine', 'interwiki_0' => 'none', 'interwiki_edit' => 'Cange', 'interwiki_reasonfield' => 'Mutive:', 'interwiki_delquestion' => 'Scangellamende de "$1"', 'interwiki_deleting' => 'Tu ste scangille \'u prefisse "$1".', + 'interwiki_deleted' => '\'U prefisse "$1" ha state luate da \'a tabbelle de inderuicchi.', + 'interwiki_delfailed' => '\'U prefisse "$1" non ge pò essere luate da \'a tabbelle de inderuicchi.', 'interwiki_addtext' => "Aggiunge 'nu prefisse inderuicchi", 'interwiki_addbutton' => 'Aggiunge', 'right-interwiki' => 'Cange le date de inderuicchi', @@ -4267,16 +4328,21 @@ Lu prifissu putissi èssiri ca non c\'è.', /** Sassaresu (Sassaresu) * @author Felis + * @author Jun Misugi */ $messages['sdc'] = array( - 'interwiki' => 'Vidè e mudìfiggà li dati interwiki', + 'interwiki' => 'Vidè e mudifiggà li dati interwiki', + 'interwiki-title-norights' => 'Vidé li dati interwiki', 'interwiki_prefix' => 'Prefissu', - 'interwiki-prefix-label' => 'Prefissu:', # Fuzzy - 'interwiki_reasonfield' => 'Rasgioni', # Fuzzy - 'interwiki_delquestion' => 'Canzillendi "$1"', - 'interwiki_deleting' => 'Sei canzillendi lu prefissu "$1".', + 'interwiki-prefix-label' => 'Prefissu:', + 'interwiki_1' => 'si', + 'interwiki_0' => 'no', + 'interwiki_edit' => 'Mudifiggà', + 'interwiki_reasonfield' => 'Rasgioni', + 'interwiki_delquestion' => 'Canzillendhi "$1"', + 'interwiki_deleting' => 'Sei canzillendhi lu prefissu "$1".', 'interwiki_addtext' => 'Aggiungi un prefissu interwiki', - 'interwiki_addbutton' => 'Aggiungi', + 'interwiki_addbutton' => 'Aggiungì', 'log-name-interwiki' => 'Rigisthru di la table interwiki', ); @@ -4411,6 +4477,7 @@ Morda ne obstaja.', ); /** Serbian (Cyrillic script) (српски (ћирилица)‎) + * @author Milicevic01 * @author Rancher * @author Sasa Stefanovic * @author Жељко Тодоровић @@ -4452,13 +4519,14 @@ $messages['sr-ec'] = array( 'interwiki_editerror' => 'Префикс "$1" не може бити измењен у табели међувикија. Вероватно затшо што не постоји.', 'interwiki-badprefix' => 'Задати међувики префикс "$1" садржи недозвољене знакове', - 'log-name-interwiki' => 'Историја табеле међувикија', + 'log-name-interwiki' => 'Дневник табеле међувикија', 'log-description-interwiki' => 'Ово је историја измена [[Special:Interwiki|табеле међувикија]].', 'right-interwiki' => 'уређивање међувикија', ); /** Serbian (Latin script) (srpski (latinica)‎) * @author Michaello + * @author Milicevic01 * @author Жељко Тодоровић */ $messages['sr-el'] = array( @@ -4497,9 +4565,9 @@ Imajte na umu da može da ošteti postojeće međuviki veze.', 'interwiki_editerror' => 'Prefiks "$1" ne može biti izmenjen u tabeli međuvikija. Verovatno zatšo što ne postoji.', 'interwiki-badprefix' => 'Zadati međuviki prefiks "$1" sadrži nedozvoljene znakove', - 'log-name-interwiki' => 'Istorija tabele međuvikija', + 'log-name-interwiki' => 'Dnevnik tabele međuvikija', 'log-description-interwiki' => 'Ovo je istorija izmena [[Special:Interwiki|tabele međuvikija]].', - 'right-interwiki' => 'Izmeni međuviki', + 'right-interwiki' => 'uređivanje međuvikija', ); /** Seeltersk (Seeltersk) @@ -4556,13 +4624,16 @@ $messages['sv'] = array( 'interwiki_prefix' => 'Prefix', 'interwiki-prefix-label' => 'Prefix:', 'interwiki_prefix_intro' => 'Interwiki-prefix avsedda att användas i [[prefix:pagename]]-wikisyntax.', + 'interwiki_url_intro' => 'Mall för webbadresser. Platshållaren $1 kommer att ersättas av sidnamnet i wikitexten, när den ovannämnda wikitextsyntaxen används.', 'interwiki_local' => 'Vidarebefordra', 'interwiki-local-label' => 'Vidarebefordra:', 'interwiki_local_intro' => 'En HTTP-förfrågan till den lokala wikin med denna interwiki-prefix i webbadressen är:', 'interwiki_local_0_intro' => 'inte accepterad, vanligtvis blockerad av "sidan kunde inte hittas".', + 'interwiki_local_1_intro' => 'omdirigeras till måladressen som anges i definitionerna av interwiki-länken (d.v.s. behandlas som referenser i lokala sidor).', 'interwiki_trans' => 'Transkludera', 'interwiki-trans-label' => 'Transkludera:', 'interwiki_trans_intro' => 'Om wikitextsyntax {{prefix:pagename}} används så:', + 'interwiki_trans_1_intro' => 'tillåt inkludering från utländska wikin, om interwiki-inkluderingar är allmänt tillåten på denna wiki.', 'interwiki_trans_0_intro' => 'tillåt inte det, leta istället efter en sida i mall-namnrymden.', 'interwiki_intro_footer' => 'Se [//www.mediawiki.org/wiki/Manual:Interwiki_table MediaWiki.org] för mer information om interwikitabellen. Det finns en [[Special:Log/interwiki|logg över ändringar]] i interwikitabellen.', @@ -4648,6 +4719,7 @@ $messages['tcy'] = array( ); /** Telugu (తెలుగు) + * @author Chaduvari * @author Kiranmayee * @author Veeven */ @@ -4663,7 +4735,7 @@ $messages['te'] = array( అంతర్వికీ పట్టికకి జరిగిన [[Special:Log/interwiki|మార్పుల యొక్క చిట్టా]] కూడా ఉంది.', 'interwiki_1' => 'అవును', 'interwiki_0' => 'కాదు', - 'interwiki_error' => 'పొరపాటు: అంతర్వికీ పట్టిక ఖాళీగా ఉంది, లేదా ఏదో తప్పు జరిగింది.', + 'interwiki_error' => 'లోపం: అంతర్వికీ పట్టిక ఖాళీగా ఉంది, లేదా మరేదో తప్పు జరిగింది.', 'interwiki_edit' => 'మార్చు', 'interwiki_reasonfield' => 'కారణం:', 'interwiki_delquestion' => '"$1"ని తొలగిస్తున్నారు', @@ -5153,6 +5225,7 @@ $messages['yi'] = array( ); /** Cantonese (粵語) + * @author Antonytse */ $messages['yue'] = array( 'interwiki' => '去睇同編輯跨維基資料', @@ -5165,7 +5238,7 @@ $messages['yue'] = array( 'interwiki_trans' => '容許跨維基包含', # Fuzzy 'interwiki-trans-label' => '容許跨維基包含:', # Fuzzy 'interwiki_error' => '錯誤: 跨維基表係空、又或者有其它嘢出錯。', - 'interwiki_reasonfield' => '原因', # Fuzzy + 'interwiki_reasonfield' => '原因:', 'interwiki_delquestion' => '刪緊 "$1"', 'interwiki_deleting' => '你而家拎走緊前綴 "$1"。', 'interwiki_deleted' => '前綴 "$1" 已經成功噉響個跨維基表度拎走咗。', @@ -5201,7 +5274,7 @@ $messages['yue'] = array( */ $messages['zh-hans'] = array( 'interwiki' => '查看和编辑跨wiki数据', - 'interwiki-title-norights' => '查看跨维基数据', + 'interwiki-title-norights' => '查看跨wiki数据', 'interwiki-desc' => '新增[[Special:Interwiki|特殊页面]]以查看和编辑跨wiki表', 'interwiki_intro' => '这是跨wiki表的概览。', 'interwiki-legend-show' => '显示说明', @@ -5224,7 +5297,7 @@ $messages['zh-hans'] = array( 'interwiki_1' => '是', 'interwiki_0' => '否', 'interwiki_error' => '错误: 跨wiki表为空,或是发生其它错误。', - 'interwiki-cached' => '跨wiki数据已缓存。缓存不能编辑。', + 'interwiki-cached' => '跨维基数据是缓存的。缓存不能被修改。', 'interwiki_edit' => '编辑', 'interwiki_reasonfield' => '理由:', 'interwiki_delquestion' => '正在删除“$1”', @@ -5252,7 +5325,7 @@ $messages['zh-hans'] = array( 'logentry-interwiki-iw_edit' => '$1{{GENDER:$2|已修改}}跨wiki表中的前缀“$4”($5) (包含:$6;本地:$7)', 'logentry-interwiki-iw_delete' => '$1已从跨wiki表中{{GENDER:$2|删除}}前缀“$4”', 'log-description-interwiki' => '这是一个[[Special:Interwiki|跨wiki表]]的更改日志。', - 'right-interwiki' => '编辑跨维基数据', + 'right-interwiki' => '编辑跨wiki数据', 'action-interwiki' => '更改该跨维基条目', ); diff --git a/extensions/Interwiki/Interwiki_body.php b/extensions/Interwiki/Interwiki_body.php index ec104968..fd982811 100644 --- a/extensions/Interwiki/Interwiki_body.php +++ b/extensions/Interwiki/Interwiki_body.php @@ -36,7 +36,7 @@ class SpecialInterwiki extends SpecialPage { $out->addModules( 'ext.interwiki.specialpage' ); $action = $par ? $par : $request->getVal( 'action', $par ); - $return = $this->getTitle(); + $return = $this->getPageTitle(); switch( $action ) { case 'delete': @@ -186,7 +186,7 @@ class SpecialInterwiki extends SpecialPage { array( 'id' => "mw-interwiki-{$action}form", 'method' => 'post', - 'action' => $this->getTitle()->getLocalUrl( array( + 'action' => $this->getPageTitle()->getLocalUrl( array( 'action' => 'submit', 'prefix' => $prefix ) ) @@ -229,7 +229,7 @@ class SpecialInterwiki extends SpecialPage { return; } $reason = $request->getText( 'wpInterwikiReason' ); - $selfTitle = $this->getTitle(); + $selfTitle = $this->getPageTitle(); $dbw = wfGetDB( DB_MASTER ); switch( $do ) { case 'delete': @@ -325,7 +325,7 @@ class SpecialInterwiki extends SpecialPage { if ( $canModify ) { $this->getOutput()->addHTML( "
      " . $this->msg( 'interwiki_intro_footer' )->parse() ); $addtext = $this->msg( 'interwiki_addtext' )->escaped(); - $addlink = Linker::linkKnown( $this->getTitle( 'add' ), $addtext ); + $addlink = Linker::linkKnown( $this->getPageTitle( 'add' ), $addtext ); $this->getOutput()->addHTML( '' ); } @@ -363,7 +363,7 @@ class SpecialInterwiki extends SpecialPage { ); $out .= Html::closeElement( 'tr' ) . "\n"; - $selfTitle = $this->getTitle(); + $selfTitle = $this->getPageTitle(); # Output the existing Interwiki prefixes table rows foreach ( $iwPrefixes as $iwPrefix ) { diff --git a/extensions/LocalisationUpdate/KNOWN_ISSUES.txt b/extensions/LocalisationUpdate/KNOWN_ISSUES.txt deleted file mode 100644 index 7ce14cd0..00000000 --- a/extensions/LocalisationUpdate/KNOWN_ISSUES.txt +++ /dev/null @@ -1,11 +0,0 @@ -- Only works with SVN revision 50605 or later of the - MediaWiki core - - - -Key issues at the moment: -* Seems to want to store a copy of the localization updates in each local database. -We've got hundreds of wikis run from the same installation set; we don't want to multiply our effort by 1000. - -* It doesn't seem to be using available memcached stuff; unsure yet whether this is taken care of -by the general message caching or if we're going to end up making extra hits we don't need. diff --git a/extensions/LocalisationUpdate/LocalisationUpdate.class.php b/extensions/LocalisationUpdate/LocalisationUpdate.class.php index 66b63232..24620545 100644 --- a/extensions/LocalisationUpdate/LocalisationUpdate.class.php +++ b/extensions/LocalisationUpdate/LocalisationUpdate.class.php @@ -3,7 +3,7 @@ /** * Class for localization updates. * - * TODO: refactor code to remove duplication + * @todo Refactor code to remove duplication */ class LocalisationUpdate { @@ -60,7 +60,7 @@ class LocalisationUpdate { $skipCore = isset( $options['skip-core'] ); $skipExtensions = isset( $options['skip-extensions'] ); - if( isset( $options['outdir'] ) ) { + if ( isset( $options['outdir'] ) ) { $wgLocalisationUpdateDirectory = $options['outdir']; } @@ -82,25 +82,25 @@ class LocalisationUpdate { $result = 0; // Update all MW core messages. - if( !$skipCore ) { + if ( !$skipCore ) { $result = self::updateMediawikiMessages( $verbose, $coreUrl ); } // Update all Extension messages. - if( !$skipExtensions ) { - if( $all ) { + if ( !$skipExtensions ) { + if ( $all ) { global $IP; $extFiles = array(); // Look in extensions/ for all available items... - // TODO: add support for $wgExtensionAssetsPath + // @todo Add support for $wgExtensionAssetsPath $dirs = new RecursiveDirectoryIterator( "$IP/extensions/" ); // I ain't kidding... RecursiveIteratorIterator. - foreach( new RecursiveIteratorIterator( $dirs ) as $pathname => $item ) { + foreach ( new RecursiveIteratorIterator( $dirs ) as $pathname => $item ) { $filename = basename( $pathname ); $matches = array(); - if( preg_match( '/^(.*)\.i18n\.php$/', $filename, $matches ) ) { + if ( preg_match( '/^(.*)\.i18n\.php$/', $filename, $matches ) ) { $group = $matches[1]; $extFiles[$group] = $pathname; } @@ -187,7 +187,14 @@ class LocalisationUpdate { ); // Compare the files. - $changedCount += self::compareFiles( $repoUrl, $localUrl, $verbose, $changedEnglishStrings, false, true ); + $changedCount += self::compareFiles( + $repoUrl, + $localUrl, + $verbose, + $changedEnglishStrings, + false, + true + ); } // Log some nice info. @@ -218,7 +225,7 @@ class LocalisationUpdate { preg_match_all( '/\$messages(.*\s)*?\);/', $contents, $results ); // But we want them all in one string. - if( !empty( $results[0] ) && is_array( $results[0] ) ) { + if ( !empty( $results[0] ) && is_array( $results[0] ) ) { $contents = implode( "\n\n", $results[0] ); } else { $contents = ''; @@ -245,8 +252,8 @@ class LocalisationUpdate { // Use cURL to get the SVN contents. if ( preg_match( "/^http/", $file ) ) { - while( !$filecontents && $attempts <= $wgLocalisationUpdateRetryAttempts ) { - if( $attempts > 0 ) { + while ( !$filecontents && $attempts <= $wgLocalisationUpdateRetryAttempts ) { + if ( $attempts > 0 ) { $delay = 1; self::myLog( 'Failed to download ' . $file . "; retrying in ${delay}s..." ); sleep( $delay ); @@ -257,11 +264,13 @@ class LocalisationUpdate { } if ( !$filecontents ) { self::myLog( 'Cannot get the contents of ' . $file . ' (curl)' ); + return false; } - } else {// otherwise try file_get_contents + } else { // otherwise try file_get_contents if ( !( $filecontents = file_get_contents( $file ) ) ) { self::myLog( 'Cannot get the contents of ' . $file ); + return false; } } @@ -281,16 +290,20 @@ class LocalisationUpdate { * * @return array */ - public static function loadFilesToCompare( $tag, $file1, $file2, $verbose, $alwaysGetResult = true ) { + public static function loadFilesToCompare( $tag, $file1, $file2, $verbose, + $alwaysGetResult = true + ) { $file1contents = self::getFileContents( $file1 ); if ( $file1contents === false || $file1contents === '' ) { self::myLog( "Failed to read $file1" ); + return array( null, null ); } $file2contents = self::getFileContents( $file2 ); if ( $file2contents === false || $file2contents === '' ) { self::myLog( "Failed to read $file2" ); + return array( null, null ); } @@ -304,7 +317,11 @@ class LocalisationUpdate { // Check if the file has changed since our last update. if ( !$alwaysGetResult ) { if ( !self::checkHash( $file1, $file1hash ) && !self::checkHash( $file2, $file2hash ) ) { - self::myLog( "Skipping {$tag} since the files haven't changed since our last update", $verbose ); + self::myLog( + "Skipping {$tag} since the files haven't changed since our last update", + $verbose + ); + return array( null, null ); } } @@ -318,6 +335,7 @@ class LocalisationUpdate { } else { // Broken file? Report and bail self::myLog( "Failed to parse $file1" ); + return array( null, null ); } } @@ -330,6 +348,7 @@ class LocalisationUpdate { $messages2 = array(); } else { self::myLog( "Failed to parse $file2" ); + return array( null, null ); } } @@ -353,7 +372,9 @@ class LocalisationUpdate { * * @return array|int */ - private static function compareLanguageArrays( $langcode, $old_messages, $new_messages, $verbose, $forbiddenKeys, $saveResults ) { + private static function compareLanguageArrays( $langcode, $old_messages, + $new_messages, $verbose, $forbiddenKeys, $saveResults + ) { // Get the currently-cached messages, if any $cur_messages = self::readFile( $langcode ); @@ -369,7 +390,6 @@ class LocalisationUpdate { ); } - if ( $saveResults ) { // If anything has changed from the saved version, save the new version if ( $new_messages != $cur_messages ) { @@ -384,10 +404,12 @@ class LocalisationUpdate { } else { $updates = 0; } + return $updates; } else { // Find all deleted or changed messages $changedStrings = array_diff_assoc( $old_messages, $new_messages ); + return $changedStrings; } } @@ -404,7 +426,9 @@ class LocalisationUpdate { * * @return array|int */ - public static function compareFiles( $newfile, $oldfile, $verbose, array $forbiddenKeys = array(), $alwaysGetResult = true, $saveResults = false ) { + public static function compareFiles( $newfile, $oldfile, $verbose, + array $forbiddenKeys = array(), $alwaysGetResult = true, $saveResults = false + ) { // Get the languagecode. $langcode = Language::getCodeFromFileName( $newfile, 'Messages' ); @@ -415,7 +439,14 @@ class LocalisationUpdate { return $saveResults ? 0 : array(); } - return self::compareLanguageArrays( $langcode, $old_messages, $new_messages, $verbose, $forbiddenKeys, $saveResults ); + return self::compareLanguageArrays( + $langcode, + $old_messages, + $new_messages, + $verbose, + $forbiddenKeys, + $saveResults + ); } /** @@ -449,7 +480,14 @@ class LocalisationUpdate { } // Find the changed english strings. - $forbiddenKeys = self::compareLanguageArrays( 'en', $old_messages['en'], $new_messages['en'], $verbose, array(), false ); + $forbiddenKeys = self::compareLanguageArrays( + 'en', + $old_messages['en'], + $new_messages['en'], + $verbose, + array(), + false + ); // Do an update for each language. foreach ( $new_messages as $language => $messages ) { @@ -461,7 +499,14 @@ class LocalisationUpdate { $old_messages[$language] = array(); } - $updates += self::compareLanguageArrays( $language, $old_messages[$language], $messages, $verbose, $forbiddenKeys, true ); + $updates += self::compareLanguageArrays( + $language, + $old_messages[$language], + $messages, + $verbose, + $forbiddenKeys, + true + ); } // And log some stuff. @@ -473,7 +518,7 @@ class LocalisationUpdate { /** * Checks whether a messages file has a certain hash. * - * TODO: Swap return values, this is insane + * @todo Swap return values, this is insane * * @param $file string Filename * @param $hash string Hash @@ -482,7 +527,12 @@ class LocalisationUpdate { */ public static function checkHash( $file, $hash ) { $hashes = self::readFile( 'hashes' ); - return @$hashes[$file] !== $hash; + + wfSuppressWarnings(); + $return = $hashes[$file] !== $hash; + wfRestoreWarnings(); + + return $return; } /** @@ -514,7 +564,7 @@ class LocalisationUpdate { if ( isset( $_SERVER ) && array_key_exists( 'REQUEST_METHOD', $_SERVER ) ) { wfDebug( $log . "\n" ); } else { - print( $log . "\n" ); + print "$log\n"; } } @@ -525,10 +575,12 @@ class LocalisationUpdate { */ public static function parsePHP( $php, $varname ) { try { - $reader = new QuickArrayReader("getVar( $varname ); - } catch( Exception $e ) { + } catch ( Exception $e ) { self::myLog( "Failed to read file: " . $e ); + return false; } } @@ -559,7 +611,9 @@ class LocalisationUpdate { public static function readFile( $lang ) { if ( !isset( self::$filecache[$lang] ) ) { $file = self::filename( $lang ); - $contents = @file_get_contents( $file ); + wfSuppressWarnings(); + $contents = file_get_contents( $file ); + wfRestoreWarnings(); if ( $contents === false ) { wfDebug( "Failed to read file '$file'\n" ); @@ -586,11 +640,12 @@ class LocalisationUpdate { public static function writeFile( $lang, $var ) { $file = self::filename( $lang ); - if ( !@file_put_contents( $file, serialize( $var ) ) ) { + wfSuppressWarnings(); + if ( !file_put_contents( $file, serialize( $var ) ) ) { throw new MWException( "Failed to write to file '$file'" ); } + wfRestoreWarnings(); self::$filecache[$lang] = $var; } - } diff --git a/extensions/LocalisationUpdate/LocalisationUpdate.i18n.php b/extensions/LocalisationUpdate/LocalisationUpdate.i18n.php index c45af9e2..0e73e3bc 100644 --- a/extensions/LocalisationUpdate/LocalisationUpdate.i18n.php +++ b/extensions/LocalisationUpdate/LocalisationUpdate.i18n.php @@ -5,7 +5,7 @@ * @file * @ingroup Extensions */ - + $messages = array(); /** English @@ -102,7 +102,14 @@ $messages['ca'] = array( 'localisationupdate-desc' => 'Manté els missatges localitzats tan actualitzats com sigui possible', ); -/** Czech (česky) +/** Chechen (нохчийн) + * @author Умар + */ +$messages['ce'] = array( + 'localisationupdate-desc' => 'Таро ма хуьйла хаамашан болх бан гӀо до', +); + +/** Czech (čeština) * @author Mormegil */ $messages['cs'] = array( @@ -304,9 +311,10 @@ $messages['ksh'] = array( /** Luxembourgish (Lëtzebuergesch) * @author Robby + * @author Soued031 */ $messages['lb'] = array( - 'localisationupdate-desc' => 'hält déi lokaliséiert Messagen esou aktuell wéi méiglech.', + 'localisationupdate-desc' => 'hält déi lokaliséiert Messagen sou aktuell wéi méiglech.', ); /** Macedonian (македонски) diff --git a/extensions/LocalisationUpdate/LocalisationUpdate.php b/extensions/LocalisationUpdate/LocalisationUpdate.php index abec5406..f73304cd 100644 --- a/extensions/LocalisationUpdate/LocalisationUpdate.php +++ b/extensions/LocalisationUpdate/LocalisationUpdate.php @@ -11,7 +11,6 @@ */ $wgLocalisationUpdateDirectory = false; - /** * These should point to either an HTTP-accessible file or local file system. * $1 is the name of the repo (for extensions) and $2 is the name of file in the repo. @@ -19,7 +18,8 @@ $wgLocalisationUpdateDirectory = false; */ $wgLocalisationUpdateCoreURL = "https://git.wikimedia.org/raw/mediawiki%2Fcore.git/HEAD/$4"; -$wgLocalisationUpdateExtensionURL = "https://git.wikimedia.org/raw/mediawiki%2Fextensions%2F$3.git/HEAD/$4"; +$wgLocalisationUpdateExtensionURL = + "https://git.wikimedia.org/raw/mediawiki%2Fextensions%2F$3.git/HEAD/$4"; /// Deprecated $wgLocalisationUpdateSVNURL = false; @@ -28,11 +28,11 @@ $wgLocalisationUpdateRetryAttempts = 5; // Info about me! $wgExtensionCredits['other'][] = array( - 'path' => __FILE__, - 'name' => 'LocalisationUpdate', - 'author' => array( 'Tom Maaswinkel', 'Niklas Laxström', 'Roan Kattouw' ), - 'version' => '1.0', - 'url' => 'https://www.mediawiki.org/wiki/Extension:LocalisationUpdate', + 'path' => __FILE__, + 'name' => 'LocalisationUpdate', + 'author' => array( 'Tom Maaswinkel', 'Niklas Laxström', 'Roan Kattouw' ), + 'version' => '1.0', + 'url' => 'https://www.mediawiki.org/wiki/Extension:LocalisationUpdate', 'descriptionmsg' => 'localisationupdate-desc', ); diff --git a/extensions/LocalisationUpdate/QuickArrayReader.php b/extensions/LocalisationUpdate/QuickArrayReader.php index 214d5a61..453032f2 100644 --- a/extensions/LocalisationUpdate/QuickArrayReader.php +++ b/extensions/LocalisationUpdate/QuickArrayReader.php @@ -8,7 +8,7 @@ * order of magnitude slower than eval(). */ class QuickArrayReader { - var $vars = array(); + private $vars = array(); /** * @param $string string @@ -27,96 +27,100 @@ class QuickArrayReader { ); $tokens = token_get_all( $string ); $count = count( $tokens ); - for( $i = 0; $i < $count; ) { - while( isset($skipTypes[$tokens[$i][0]] ) ) { + for ( $i = 0; $i < $count; ) { + while ( isset( $skipTypes[$tokens[$i][0]] ) ) { $i++; } - switch( $tokens[$i][0] ) { - case T_OPEN_TAG: - $i++; - continue; - case T_VARIABLE: - // '$messages' -> 'messages' - $varname = trim( substr( $tokens[$i][1], 1 ) ); - $varindex = null; - - while( isset($skipTypes[$tokens[++$i][0]] ) ); + switch ( $tokens[$i][0] ) { + case T_OPEN_TAG: + $i++; + continue; + case T_VARIABLE: + // '$messages' -> 'messages' + $varname = trim( substr( $tokens[$i][1], 1 ) ); + $varindex = null; + + while ( isset( $skipTypes[$tokens[++$i][0]] ) ); + + if ( $tokens[$i] === '[' ) { + while ( isset( $skipTypes[$tokens[++$i][0]] ) ); + + if ( isset( $scalarTypes[$tokens[$i][0]] ) ) { + $varindex = $this->parseScalar( $tokens[$i] ); + } else { + throw $this->except( $tokens[$i], 'scalar index' ); + } + while ( isset( $skipTypes[$tokens[++$i][0]] ) ); - if( $tokens[$i] === '[' ) { - while( isset($skipTypes[$tokens[++$i][0]] ) ); + if ( $tokens[$i] !== ']' ) { + throw $this->except( $tokens[$i], ']' ); + } + while ( isset( $skipTypes[$tokens[++$i][0]] ) ); + } - if( isset($scalarTypes[$tokens[$i][0]] ) ) { - $varindex = $this->parseScalar( $tokens[$i] ); + if ( $tokens[$i] !== '=' ) { + throw $this->except( $tokens[$i], '=' ); + } + while ( isset( $skipTypes[$tokens[++$i][0]] ) ); + + if ( isset( $scalarTypes[$tokens[$i][0]] ) ) { + $buildval = $this->parseScalar( $tokens[$i] ); + } elseif ( $tokens[$i][0] === T_ARRAY ) { + while ( isset( $skipTypes[$tokens[++$i][0]] ) ); + if ( $tokens[$i] !== '(' ) { + throw $this->except( $tokens[$i], '(' ); + } + $buildval = array(); + do { + while ( isset( $skipTypes[$tokens[++$i][0]] ) ); + + if ( $tokens[$i] === ')' ) { + break; + } + if ( isset( $scalarTypes[$tokens[$i][0]] ) ) { + $key = $this->parseScalar( $tokens[$i] ); + } + while ( isset( $skipTypes[$tokens[++$i][0]] ) ); + + if ( $tokens[$i][0] !== T_DOUBLE_ARROW ) { + throw $this->except( $tokens[$i], '=>' ); + } + while ( isset( $skipTypes[$tokens[++$i][0]] ) ); + + if ( isset( $scalarTypes[$tokens[$i][0]] ) ) { + $val = $this->parseScalar( $tokens[$i] ); + } + wfSuppressWarnings(); + $buildval[$key] = $val; + wfRestoreWarnings(); + while ( isset( $skipTypes[$tokens[++$i][0]] ) ); + + if ( $tokens[$i] === ',' ) { + continue; + } elseif ( $tokens[$i] === ')' ) { + break; + } else { + throw $this->except( $tokens[$i], ', or )' ); + } + } while ( true ); } else { - throw $this->except( $tokens[$i], 'scalar index' ); + throw $this->except( $tokens[$i], 'scalar or array' ); } - while( isset($skipTypes[$tokens[++$i][0]] ) ); - - if( $tokens[$i] !== ']' ) { - throw $this->except( $tokens[$i], ']' ); + if ( is_null( $varindex ) ) { + $this->vars[$varname] = $buildval; + } else { + wfSuppressWarnings(); + $this->vars[$varname][$varindex] = $buildval; + wfRestoreWarnings(); } - while( isset($skipTypes[$tokens[++$i][0]] ) ); - } - - if( $tokens[$i] !== '=' ) { - throw $this->except( $tokens[$i], '=' ); - } - while( isset($skipTypes[$tokens[++$i][0]] ) ); - - if( isset($scalarTypes[$tokens[$i][0]] ) ) { - $buildval = $this->parseScalar( $tokens[$i] ); - } elseif( $tokens[$i][0] === T_ARRAY ) { - while( isset($skipTypes[$tokens[++$i][0]] ) ); - if( $tokens[$i] !== '(' ) { - throw $this->except( $tokens[$i], '(' ); + while ( isset( $skipTypes[$tokens[++$i][0]] ) ); + if ( $tokens[$i] !== ';' ) { + throw $this->except( $tokens[$i], ';' ); } - $buildval = array(); - do { - while( isset($skipTypes[$tokens[++$i][0]] ) ); - - if( $tokens[$i] === ')' ) { - break; - } - if( isset($scalarTypes[$tokens[$i][0]] ) ) { - $key = $this->parseScalar( $tokens[$i] ); - } - while( isset($skipTypes[$tokens[++$i][0]] ) ); - - if( $tokens[$i][0] !== T_DOUBLE_ARROW ) { - throw $this->except( $tokens[$i], '=>' ); - } - while( isset($skipTypes[$tokens[++$i][0]] ) ); - - if( isset($scalarTypes[$tokens[$i][0]] ) ) { - $val = $this->parseScalar( $tokens[$i] ); - } - @$buildval[$key] = $val; - while( isset($skipTypes[$tokens[++$i][0]] ) ); - - if( $tokens[$i] === ',' ) { - continue; - } elseif( $tokens[$i] === ')' ) { - break; - } else { - throw $this->except( $tokens[$i], ', or )' ); - } - } while(true); - } else { - throw $this->except( $tokens[$i], 'scalar or array' ); - } - if( is_null( $varindex ) ) { - $this->vars[$varname] = $buildval; - } else { - @$this->vars[$varname][$varindex] = $buildval; - } - while( isset($skipTypes[$tokens[++$i][0]] ) ); - if( $tokens[$i] !== ';' ) { - throw $this->except($tokens[$i], ';'); - } - $i++; - break; - default: - throw $this->except($tokens[$i], 'open tag, whitespace, or variable.'); + $i++; + break; + default: + throw $this->except( $tokens[$i], 'open tag, whitespace, or variable.' ); } } } @@ -127,11 +131,12 @@ class QuickArrayReader { * @return Exception */ private function except( $got, $expected ) { - if( is_array( $got ) ) { + if ( is_array( $got ) ) { $got = token_name( $got[0] ) . " ('" . $got[1] . "')"; } else { $got = "'" . $got . "'"; } + return new Exception( "Expected $expected, got $got" ); } @@ -143,30 +148,42 @@ class QuickArrayReader { * @return mixed Parsed value */ function parseScalar( $token ) { - if( is_array( $token ) ) { + if ( is_array( $token ) ) { $str = $token[1]; } else { $str = $token; } - if ( $str !== '' && $str[0] == '\'' ) + if ( $str !== '' && $str[0] == '\'' ) { // Single-quoted string // @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] == '"' ) + } + + wfSuppressWarnings(); + if ( $str !== '' && $str[0] == '"' ) { // Double-quoted string // @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 ) ); - if ( substr( $str, 0, 4 ) === 'true' ) + } + wfRestoreWarnings(); + + if ( substr( $str, 0, 4 ) === 'true' ) { return true; - if ( substr( $str, 0, 5 ) === 'false' ) + } + + if ( substr( $str, 0, 5 ) === 'false' ) { return false; - if ( substr( $str, 0, 4 ) === 'null' ) + } + + if ( substr( $str, 0, 4 ) === 'null' ) { return null; + } + // Must be some kind of numeric value, so let PHP's weak typing // be useful for a change return $str; @@ -177,7 +194,7 @@ class QuickArrayReader { * @return null|string */ function getVar( $varname ) { - if( isset( $this->vars[$varname] ) ) { + if ( isset( $this->vars[$varname] ) ) { return $this->vars[$varname]; } else { return null; diff --git a/extensions/LocalisationUpdate/README b/extensions/LocalisationUpdate/README new file mode 100644 index 00000000..3df784b5 --- /dev/null +++ b/extensions/LocalisationUpdate/README @@ -0,0 +1,34 @@ +== Localisation Update == +Localisation Update extension can update the MediaWiki messages at any time, +without needing to upgrade the MediaWiki software. + +For more information see: + https://www.mediawiki.org/wiki/Extension:LocalisationUpdate + +== Installation == +1. Add the following to LocalSettings.php of your MediaWiki setup: + + require_once "$IP/extensions/LocalisationUpdate/LocalisationUpdate.php"; + $wgLocalisationUpdateDirectory = "$IP/cache"; + +2. Create a cache folder in the installation directory, and be sure the server +has permissions to write on it. + +If localization updates don't seem to come through, you may need to run, + + php maintenance/rebuildLocalisationCache.php --force. + +3. Whenever you want to run an update, run, + + php extensions/LocalisationUpdate/update.php + +For detailed help, see: + + php extensions/LocalisationUpdate/update.php --help + +4. If you are on Unix like system, you should add LocalisationUpdate to +crontab: + + crontab -e + # Add the following line + @daily php /path/to/your/wiki/extensions/LocalisationUpdate/update.php --quiet diff --git a/extensions/LocalisationUpdate/README_FIRST.txt b/extensions/LocalisationUpdate/README_FIRST.txt deleted file mode 100644 index 3973c435..00000000 --- a/extensions/LocalisationUpdate/README_FIRST.txt +++ /dev/null @@ -1,8 +0,0 @@ -To install this extension first include -LocalisationUpdate/LocalisationUpdate.php in your LocalSettings.php - -Then add the required new tables to your database by running -php maintenance/update.php on the command line. - -Whenever you want to run an update, run -php extensions/LocalisationUpdate/update.php on the command line. diff --git a/extensions/LocalisationUpdate/tests/tokenTest.php b/extensions/LocalisationUpdate/tests/tokenTest.php index 1112313c..2b71cc46 100644 --- a/extensions/LocalisationUpdate/tests/tokenTest.php +++ b/extensions/LocalisationUpdate/tests/tokenTest.php @@ -4,47 +4,53 @@ $IP = strval( getenv( 'MW_INSTALL_PATH' ) ) !== '' ? getenv( 'MW_INSTALL_PATH' ) : realpath( dirname( __FILE__ ) . "/../../../" ); -require_once( "$IP/maintenance/commandLine.inc" ); +require_once "$IP/maintenance/commandLine.inc"; function evalExtractArray( $php, $varname ) { eval( $php ); - return @$$varname; + wfSuppressWarnings(); + + return $$varname; + wfRestoreWarnings(); } function confExtractArray( $php, $varname ) { try { - $ce = new ConfEditor("getVars(); - $retval = @$vars[$varname]; - } catch( Exception $e ) { + wfSuppressWarnings(); + $retval = $vars[$varname]; + wfRestoreWarnings(); + } catch ( Exception $e ) { print $e . "\n"; $retval = null; } + return $retval; } function quickTokenExtractArray( $php, $varname ) { - $reader = new QuickArrayReader("getVar( $varname ); } - -if( count( $args ) ) { +if ( count( $args ) ) { $sources = $args; } else { $sources = array_merge( - glob("$IP/extensions/*/*.i18n.php"), - glob("$IP/languages/messages/Messages*.php") ); + glob( "$IP/extensions/*/*.i18n.php" ), + glob( "$IP/languages/messages/Messages*.php" ) ); } -foreach( $sources as $sourceFile ) { +foreach ( $sources as $sourceFile ) { $rel = basename( $sourceFile ); $out = str_replace( '/', '-', $rel ); $sourceData = file_get_contents( $sourceFile ); - if( preg_match( '!extensions/!', $sourceFile ) ) { + if ( preg_match( '!extensions/!', $sourceFile ) ) { $sourceData = LocalisationUpdate::cleanupExtensionFile( $sourceData ); $items = 'langs'; } else { @@ -54,30 +60,33 @@ foreach( $sources as $sourceFile ) { file_put_contents( "$out.txt", $sourceData ); - $start = microtime(true); + $start = microtime( true ); $eval = evalExtractArray( $sourceData, 'messages' ); - $deltaEval = microtime(true) - $start; + $deltaEval = microtime( true ) - $start; - $start = microtime(true); + $start = microtime( true ); $quick = quickTokenExtractArray( $sourceData, 'messages' ); - $deltaQuick = microtime(true) - $start; + $deltaQuick = microtime( true ) - $start; - $start = microtime(true); + $start = microtime( true ); $token = confExtractArray( $sourceData, 'messages' ); - $deltaToken = microtime(true) - $start; + $deltaToken = microtime( true ) - $start; - $hashEval = md5(serialize($eval)); - $hashToken = md5(serialize($token)); - $hashQuick = md5(serialize($quick)); - $countEval = count( (array)$eval); + $hashEval = md5( serialize( $eval ) ); + $hashToken = md5( serialize( $token ) ); + $hashQuick = md5( serialize( $quick ) ); + $countEval = count( (array)$eval ); $countToken = count( (array)$token ); $countQuick = count( (array)$quick ); - printf( "%s %s %d $items - %0.1fms - eval\n", $rel, $hashEval, $countEval, $deltaEval * 1000 ); - printf( "%s %s %d $items - %0.1fms - QuickArrayReader\n", $rel, $hashQuick, $countQuick, $deltaQuick * 1000 ); - printf( "%s %s %d $items - %0.1fms - ConfEditor\n", $rel, $hashToken, $countToken, $deltaToken * 1000 ); + printf( "%s %s %d $items - %0.1fms - eval\n", + $rel, $hashEval, $countEval, $deltaEval * 1000 ); + printf( "%s %s %d $items - %0.1fms - QuickArrayReader\n", + $rel, $hashQuick, $countQuick, $deltaQuick * 1000 ); + printf( "%s %s %d $items - %0.1fms - ConfEditor\n", + $rel, $hashToken, $countToken, $deltaToken * 1000 ); - if( $hashEval !== $hashToken || $hashEval !== $hashQuick ) { + if ( $hashEval !== $hashToken || $hashEval !== $hashQuick ) { echo "FAILED on $rel\n"; file_put_contents( "$out-eval.txt", var_export( $eval, true ) ); file_put_contents( "$out-token.txt", var_export( $token, true ) ); diff --git a/extensions/LocalisationUpdate/update.php b/extensions/LocalisationUpdate/update.php index 750fc4f2..04ea64c7 100644 --- a/extensions/LocalisationUpdate/update.php +++ b/extensions/LocalisationUpdate/update.php @@ -5,9 +5,9 @@ $IP = strval( getenv( 'MW_INSTALL_PATH' ) ) !== '' : realpath( dirname( __FILE__ ) . "/../../" ); // TODO: migrate to maintenance class -require_once( "$IP/maintenance/commandLine.inc" ); +require_once "$IP/maintenance/commandLine.inc"; -if( isset( $options['help'] ) ) { +if ( isset( $options['help'] ) ) { print "Fetches updated localisation files from MediaWiki development SVN\n"; print "and saves into local database to merge with release defaults.\n"; print "\n"; @@ -23,7 +23,6 @@ if( isset( $options['help'] ) ) { exit( 0 ); } - $starttime = microtime( true ); // Prevent the script from timing out diff --git a/extensions/Nuke/COPYING b/extensions/Nuke/COPYING index f1537d13..d159169d 100644 --- a/extensions/Nuke/COPYING +++ b/extensions/Nuke/COPYING @@ -1,11 +1,3 @@ -The license text below "----" applies to all files within this distribution, other -than those that are in a directory which contains files named "LICENSE" or -"COPYING", or a subdirectory thereof. For those files, the license text contained in -said file overrides any license information contained in directories of smaller depth. -Alternative licenses are typically used for software that is provided by external -parties, and merely packaged with the Semantic MediaWiki release for convenience. ----- - GNU GENERAL PUBLIC LICENSE Version 2, June 1991 diff --git a/extensions/Nuke/Nuke.alias.php b/extensions/Nuke/Nuke.alias.php index 0b27b4a5..be9f3450 100644 --- a/extensions/Nuke/Nuke.alias.php +++ b/extensions/Nuke/Nuke.alias.php @@ -61,7 +61,7 @@ $specialPageAliases['dsb'] = array( /** Spanish (español) */ $specialPageAliases['es'] = array( - 'Nuke' => array( 'BorradoMasivo', 'Borrado_en_masa' ), + 'Nuke' => array( 'BorradoMasivo', 'Borrado_en_masa', 'Borrado_masivo' ), ); /** Estonian (eesti) */ @@ -201,7 +201,7 @@ $specialPageAliases['nl'] = array( /** Norwegian Nynorsk (norsk nynorsk) */ $specialPageAliases['nn'] = array( - 'Nuke' => array( 'Massesletting' ), + 'Nuke' => array( 'Massesletting', 'Masseslett' ), ); /** Polish (polski) */ diff --git a/extensions/Nuke/Nuke.hooks.php b/extensions/Nuke/Nuke.hooks.php new file mode 100644 index 00000000..fddcf51a --- /dev/null +++ b/extensions/Nuke/Nuke.hooks.php @@ -0,0 +1,27 @@ +isAllowed( 'nuke' ) ) { + $toolLinks[] = Linker::link( + SpecialPage::getTitleFor( 'Nuke' ), + wfMessage( 'nuke-linkoncontribs' )->escaped(), + array( 'title' => wfMessage( 'nuke-linkoncontribs-text' )->text() ), + array( 'target' => $userPageTitle->getText() ) + ); + } + return true; + } +} diff --git a/extensions/Nuke/Nuke.i18n.php b/extensions/Nuke/Nuke.i18n.php index f72d208d..2b4a9abb 100644 --- a/extensions/Nuke/Nuke.i18n.php +++ b/extensions/Nuke/Nuke.i18n.php @@ -40,6 +40,8 @@ Input the username or IP address to get a list of pages to delete, or leave blan 'nuke-nopages-global' => 'There are no new pages in [[Special:RecentChanges|recent changes]].', 'nuke-viewchanges' => 'view changes', 'nuke-namespace' => 'Limit to namespace:', + 'nuke-linkoncontribs' => 'mass delete', + 'nuke-linkoncontribs-text' => "Mass delete pages where this user is the only author", ); /** Message documentation (Message documentation) @@ -56,8 +58,9 @@ Input the username or IP address to get a list of pages to delete, or leave blan */ $messages['qqq'] = array( 'nuke' => '{{doc-special|Nuke}} -The Nuke extension allows for sysops to delete a large number of pages ("Mass delete"). -For more information, see http://www.mediawiki.org/wiki/Extension:Nuke', +The Nuke extension allows for sysops to delete a large number of pages ("Mass delete"). +For more information, see http://www.mediawiki.org/wiki/Extension:Nuke +{{Identical|Mass delete}}', 'action-nuke' => '{{doc-action|nuke}}', 'nuke-desc' => '{{desc|name=Nuke|url=http://www.mediawiki.org/wiki/Extension:Nuke}} The Nuke extension allows for sysops to delete a large number of pages ("Mass delete").', @@ -92,7 +95,7 @@ Parameters: 'nuke-submit-delete' => 'Submit button to delete the selected pages.', 'right-nuke' => '{{doc-right|nuke}}', 'nuke-select' => 'Parameters: -* $1 - two links: {{msg-mw|Powersearch-toggleall}} and {{msg-mw|Powersearch-togglenone}} which respectively selects all pages and de-selects all +* $1 - two links: {{msg-mw|Powersearch-toggleall}} and {{msg-mw|Powersearch-togglenone}} which respectively selects all pages and de-selects all pages {{Identical|Select}}', 'nuke-userorip' => 'Used as label for "target" input box.', @@ -121,8 +124,16 @@ The link points to History page of the page. This message follows: * {{msg-mw|nuke-editby}} and {{msg-mw|comma-separator}} -* or empty string (if username is empty).', +* or empty string (if username is empty). +{{Identical|View changes}}', 'nuke-namespace' => 'Label shown on [[Special:Nuke]] in front of the namespace input that allows choosing a namespace to filter the search by', + 'nuke-linkoncontribs' => 'Used as link text which is used on [[Special:Contributions]] and [[Special:DeletedContributions]]. + +Only added if a user has rights to nuke pages. + +The link has the tooltip {{msg-mw|Nuke-linkoncontribs-text}}. +{{Identical|Mass delete}}', + 'nuke-linkoncontribs-text' => 'Tooltip for the link which is labeled {{msg-mw|Nuke-linkoncontribs}}.', ); /** Afrikaans (Afrikaans) @@ -228,8 +239,10 @@ $messages['arz'] = array( /** Assamese (অসমীয়া) * @author Bishnu Saikia + * @author Gitartha.bordoloi */ $messages['as'] = array( + 'nuke' => 'সমূহীয়া বিলোপন', 'nuke-submit-user' => 'যাওক', ); @@ -262,6 +275,8 @@ un comentariu y calca nel botón pa desaniciales.', 'nuke-nopages-global' => 'Nun hai páxines nueves nos [[Special:RecentChanges|cambios recientes]].', 'nuke-viewchanges' => 'ver los cambios', 'nuke-namespace' => 'Llendar al espaciu de nomes:', + 'nuke-linkoncontribs' => 'desaniciar en masa', + 'nuke-linkoncontribs-text' => "Desaniciar en masa les páxines nes qu'esti usuariu ye l'únicu autor", ); /** Azerbaijani (azərbaycanca) @@ -413,7 +428,7 @@ Merkañ un tamm notenn ha klikañ war ar bouton d'o diverkañ.", # Fuzzy Lakait un notenn ha klikit war ar bouton evit o diverkañ.', 'nuke-defaultreason' => 'Diverkañ a-vras ar pajennoù bet ouzhpennet gant $1', # Fuzzy 'nuke-multiplepeople' => 'Diverkañ a-vras ar pajennoù nevez-ouzhpennet', - '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. + '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', @@ -443,7 +458,7 @@ navedite razloge i komentare te kliknite na dugme da bi ste ih obrisali.', # Fuz stavite ih u komentar i pritisnite dugme za njihovo brisanje.', 'nuke-defaultreason' => 'Masovno uklanjanje stranica koje je dodao $1', # Fuzzy 'nuke-multiplepeople' => 'više korisnika', # Fuzzy - 'nuke-tools' => 'Ovaj alat omogućuje masovno brisanje stranica koje je nedavno dodao određeni korisnik ili IP adresa. + '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', @@ -456,22 +471,41 @@ Unesite korisničko ime ili IP adresu za izlistavanje stranica koje se brišu il /** Catalan (català) * @author Aleator + * @author Alvaro Vidal-Abarca * @author Paucabot * @author SMP * @author Toniher + * @author Vriullop */ $messages['ca'] = array( 'nuke' => 'Eliminació massiva', + 'action-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.', # Fuzzy - '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.', # Fuzzy - 'nuke-defaultreason' => 'Esborrat massiu de pàgines creades per $1', # Fuzzy + 'nuke-nopages' => 'No hi ha pàgines noves de [[Special:Contributions/$1|{{GENDER:$1|$1}}]] als canvis recents.', + 'nuke-list' => 'Les següents pàgines han estat creades recentment per [[Special:Contributions/$1|{{GENDER:$1|$1}}]]; +afegiu un comentari i cliqueu el botó per a esborrar-les.', + 'nuke-list-multiple' => 'Les següents pàgines han estat creades recentment; +afegiu un comentari i cliqueu el botó per a esborrar-les.', + 'nuke-defaultreason' => 'Esborrat massiu de pàgines creades per [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', + 'nuke-multiplepeople' => 'Esborrat massiu de pàgines creades recentment', 'nuke-tools' => "Aquesta eina permet l'eliminació massiva de pàgines creades recentment per un usuari o IP. -Per obtenir la llista de pàgines per esborrar podeu introduir el nom d'un usuari o una IP.", +Indiqueu el nom d'usuari o adreça IP per obtenir la llista de pàgines a esborrar, o deixeu-ho en blanc per tots els usuaris.", 'nuke-submit-user' => 'Vés-hi', - 'nuke-submit-delete' => 'Esborra la selecció', + 'nuke-submit-delete' => 'Esborra els seleccionats', 'right-nuke' => 'Esborrar pàgines de forma massiva', + 'nuke-select' => 'Selecciona: $1', + 'nuke-userorip' => "Nom d'usuari, adreça IP o en blanc:", + 'nuke-maxpages' => 'Nombre màxim de pàgines:', + 'nuke-editby' => 'Creada per [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', + 'nuke-deleted' => "La pàgina '''$1''' ha estat esborrada.", + 'nuke-not-deleted' => "La pàgina [[:$1]] '''no s'ha pogut''' esborrar.", + 'nuke-delete-more' => '[[Special:Nuke|Esborra més pàgines]]', + 'nuke-pattern' => 'Patró pel nom de pàgina:', + 'nuke-nopages-global' => 'No hi ha cap pàgina nova als [[Special:RecentChanges|canvis recents]].', + 'nuke-viewchanges' => 'mostra els canvis', + 'nuke-namespace' => "Limitat a l'espai de noms:", + 'nuke-linkoncontribs' => 'eliminació massiva', + 'nuke-linkoncontribs-text' => "Eliminació massiva de pàgines on aquest usuari és l'únic autor", ); /** Chechen (нохчийн) @@ -479,8 +513,9 @@ Per obtenir la llista de pàgines per esborrar podeu introduir el nom d'un usuar * @author Умар */ $messages['ce'] = array( - 'nuke' => 'Дуккха дӀяккхар', + 'nuke' => 'Дуккха дӀаяккхар', 'action-nuke' => 'дуккха агIонаш дӀаяхар', + 'nuke-desc' => 'Куьйгалхошна таро хуьлуьйту [[Special:Nuke|дуккха агӀонаш]] дӀаяха', 'nuke-list-multiple' => 'Лахахь гайтина агӀонаш дукху хан йоцуш кхолийна. Уьш дӀаяха билгалонаш Ӏадйите тӀетаӀе кнопка.', 'nuke-defaultreason' => 'Декъашхочо $1 кхоьллина агIонаш, дуккха дӀаяхар', # Fuzzy @@ -492,9 +527,12 @@ $messages['ce'] = array( 'nuke-userorip' => 'Декъашхочун цӀе, IP-адрес (еса йита мега):', 'nuke-maxpages' => 'АгӀонашан максимальни дукхалла:', 'nuke-editby' => 'Кхолийна {{GENDER:$1|декъашхочо}} [[Special:Contributions/$1|$1]]', + 'nuke-delete-more' => '[[Special:Nuke|Дуккха агӀонаш дӀаяхар]]', 'nuke-pattern' => 'Кеп агӀона цӀеран:', 'nuke-viewchanges' => 'ХӀоттина болу хийцам', 'nuke-namespace' => 'Къастае ана цӀераш:', + 'nuke-linkoncontribs' => 'дуккха дӀаяккхар', + 'nuke-linkoncontribs-text' => 'ХӀокху декъашхочо кхоьллина агӀонаш массо дӀаяха', ); /** Chamorro (Chamoru) @@ -511,10 +549,11 @@ $messages['ckb'] = array( 'right-nuke' => 'سڕینەوەی پەڕەکان بەکۆمەڵ', ); -/** Czech (česky) +/** Czech (čeština) * @author Danny B. * @author Jkjk * @author Li-sung + * @author Littledogboy * @author Matěj Grabovský * @author Mormegil */ @@ -527,8 +566,8 @@ $messages['cs'] = array( 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é {{GENDER:$1|vytvořil|vytvořila}} [[Special:Contributions/$1|$1]]', - 'nuke-multiplepeople' => 'Hromadné odstranění nedávno založených stránek', + 'nuke-defaultreason' => 'Hromadné smazání stránek, které {{GENDER:$1|vytvořil|vytvořila}} [[Special:Contributions/$1|$1]]', + 'nuke-multiplepeople' => 'Hromadné smazání nedávno založených stránek', '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', @@ -545,6 +584,8 @@ Zadejte uživatelské jméno nebo IP adresu, zobrazí se seznam stránek ke smaz 'nuke-nopages-global' => 'V [[Special:RecentChanges|posledních změnách]] nejsou žádné nové stránky.', 'nuke-viewchanges' => 'ukázat změny', 'nuke-namespace' => 'Omezit na jmenný prostor:', + 'nuke-linkoncontribs' => 'hromadné mazání', + 'nuke-linkoncontribs-text' => 'Hromadně smazat stránky, jichž je tento uživatel jediným autorem', ); /** Danish (dansk) @@ -585,6 +626,7 @@ Skriv et brugernavn eller en IP-adresse for at få en liste over sider at slette * @author Geitost * @author Kghbln * @author Metalhead64 + * @author Purodha * @author Raimond Spekking * @author SVG */ @@ -615,6 +657,8 @@ Gib die IP-Adresse oder den Benutzernamen ein, um eine Liste der zu löschenden 'nuke-nopages-global' => 'Es gibt keine neuen Seiten unter den [[Special:RecentChanges|letzten Änderungen]].', 'nuke-viewchanges' => 'Änderungen ansehen', 'nuke-namespace' => 'Auf den folgenden Namensraum begrenzen:', + 'nuke-linkoncontribs' => 'Massenlöschungen', + 'nuke-linkoncontribs-text' => 'Massengelöschte Seiten, bei denen dieser Benutzer der einzige Autor ist.', ); /** German (formal address) (Deutsch (Sie-Form)‎) @@ -650,7 +694,7 @@ Listanê peleyê ke besternaya vinayışi rê namey karberi yana ip adresi deker 'right-nuke' => 'pelan yew hew de hewnaker', 'nuke-select' => 'Weçinaye: $1', 'nuke-delete-more' => '[[Special:Nuke|Zewbi pera besterne]]', - 'nuke-viewchanges' => 'Vurnayışa bıvin', + 'nuke-viewchanges' => 'vurnayışan bıvêne', ); /** Lower Sorbian (dolnoserbski) @@ -682,6 +726,8 @@ zapódaj komentar a klikni na tłocašk, aby je wulašował.', 'nuke-nopages-global' => 'Njejsu žedne nowe boki w [[Special:RecentChanges|aktualnych změnach]].', 'nuke-viewchanges' => 'změny pokazaś', 'nuke-namespace' => 'Na slědujucy mjenjowy rum wobgranicowaś:', + 'nuke-linkoncontribs' => 'masowe wulašowanje', + 'nuke-linkoncontribs-text' => 'Bok masowego wulašowanja, źož toś ten wužywaŕ jo jadnučki awtor', ); /** Ewe (eʋegbe) @@ -820,6 +866,8 @@ Kustutatavate lehekülgede nimekirja näitamiseks sisesta kasutajanimi või IP-a 'nuke-nopages-global' => '[[Special:RecentChanges|Viimaste muudatuste]] all pole uusi lehekülgi.', 'nuke-viewchanges' => 'vaata muudatusi', 'nuke-namespace' => 'Nimeruumipiirang:', + 'nuke-linkoncontribs' => 'lauskustutamine', + 'nuke-linkoncontribs-text' => 'Lauskustuta leheküljed, mille ainus autor on see kasutaja', ); /** Basque (euskara) @@ -839,6 +887,7 @@ idatz ezazu ohar bat, eta sakatu botoia orri horiek ezabatzeko.', ); /** Persian (فارسی) + * @author Armin1392 * @author Ebraminio * @author Huji * @author Mjbmr @@ -865,21 +914,25 @@ $messages['fa'] = array( 'nuke-userorip' => 'نام کاربری، نشانی آی‌پی یا خالی:', 'nuke-maxpages' => 'حداکثر تعداد صفحه‌ها:', 'nuke-editby' => 'ایجاد شده توسط [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', - 'nuke-deleted' => "صفحهٔ '''$1''' حذف شده است.", + 'nuke-deleted' => "صفحهٔ '''$1''' حذف شده‌است.", 'nuke-not-deleted' => "صفحهٔ [[:$1]] را '''نمی‌توان''' حذف کرد.", 'nuke-delete-more' => '[[Special:Nuke|حذف صفحه‌های بیشتر]]', 'nuke-pattern' => 'الگو برای نام صفحه:', 'nuke-nopages-global' => 'هیچ صفحهٔ جدیدی در [[Special:RecentChanges|فهرست تغییرات اخیر]] نیست.', 'nuke-viewchanges' => 'نمایش تغییرات', 'nuke-namespace' => 'محدودیت به فضای نام:', + 'nuke-linkoncontribs' => 'حذف گروه', + 'nuke-linkoncontribs-text' => 'حذف دستهٔ صفحات جایی که این کاربر تنها نویسنده است', ); /** Finnish (suomi) * @author Beluga * @author Crt * @author Jaakonam + * @author Mies * @author Nike * @author Olli + * @author Pxos * @author Stryn */ $messages['fi'] = array( @@ -888,15 +941,15 @@ $messages['fi'] = array( 'nuke-desc' => 'Mahdollistaa ylläpitäjille sivujen [[Special:Nuke|massapoistamisen]].', 'nuke-nopages' => 'Ei käyttäjän [[Special:Contributions/$1|{{GENDER:$1|$1}}]] lisäämiä uusia sivuja tuoreissa muutoksissa.', 'nuke-list' => 'Käyttäjä [[Special:Contributions/$1|{{GENDER:$1|$1}}]] on äskettäin luonut seuraavat sivut. -Lisää kommentti ja poista napsauttamalla painiketta.', - 'nuke-list-multiple' => 'Seuraavat sivut tehtiin äskettäin. -Lisää kommentti ja poista napsauttamalla painiketta.', +Lisää kommentti ja poista sivut napsauttamalla painiketta.', + 'nuke-list-multiple' => 'Seuraavat sivut on luotu äskettäin. +Lisää kommentti ja poista sivut napsauttamalla painiketta.', 'nuke-defaultreason' => 'Käyttäjän [[Special:Contributions/$1|{{GENDER:$1|$1}}]] lisäämien sivujen massapoistaminen', 'nuke-multiplepeople' => 'Äskettäin lisättyjen 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, tai jätä kenttä tyhjäksi niin saat kaikkien käyttäjien tekemät sivut.', 'nuke-submit-user' => 'Siirry', - 'nuke-submit-delete' => 'Poista valitut', + 'nuke-submit-delete' => 'Poista valitut sivut', 'right-nuke' => 'Massapoistaa sivuja', 'nuke-select' => 'Valinta: $1', 'nuke-userorip' => 'Käyttäjänimi tai IP-osoite (voi jättää myös tyhjäksi):', @@ -904,11 +957,13 @@ Kirjoita käyttäjänimi tai IP-osoite, niin saat listan poistettavista sivuista 'nuke-editby' => 'Luonut [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', 'nuke-deleted' => "Sivu '''$1''' on poistettu.", 'nuke-not-deleted' => "Sivua [[:$1]] '''ei voitu''' poistaa.", - 'nuke-delete-more' => '[[Special:Nuke|Poista lisää sivuja]]', - 'nuke-pattern' => 'Sivun nimien etuliite', + 'nuke-delete-more' => '[[Special:Nuke|Poista enemmän sivuja]]', + 'nuke-pattern' => 'Malli sivun nimelle:', 'nuke-nopages-global' => '[[Special:RecentChanges|Tuoreissa muutoksissa]] ei ole uusia sivuja.', 'nuke-viewchanges' => 'näytä muutokset', 'nuke-namespace' => 'Rajoita nimiavaruuteen:', + 'nuke-linkoncontribs' => 'massapoisto', + 'nuke-linkoncontribs-text' => 'Massapoista ne sivut, joissa tämä käyttäjä on ainoa sivuja muokannut', ); /** French (français) @@ -930,7 +985,7 @@ $messages['fr'] = array( '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|{{GENDER:$1|$1}}]] dans la liste des changements récents.', 'nuke-list' => 'Les pages suivantes ont été créées récemment par [[Special:Contributions/$1|{{GENDER:$1|$1}}]]; saisissez un commentaire et cliquez sur le bouton pour les supprimer.', - 'nuke-list-multiple' => 'Les pages suivantes ont été récemment créées ; + '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 [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', 'nuke-multiplepeople' => 'Suppression de masse de pages récemment ajoutées', @@ -949,6 +1004,8 @@ entrez un commentaire et cliquez sur le bouton pour les supprimer.', 'nuke-nopages-global' => "Il n'y a pas de nouvelle page dans [[Special:RecentChanges|changements récents]].", 'nuke-viewchanges' => 'voir les modifications', 'nuke-namespace' => "Se limiter à l'espace de nommage:", + 'nuke-linkoncontribs' => 'suppression de masse', + 'nuke-linkoncontribs-text' => 'Supprimer des pages en masse quand cet utilisateur est l’unique auteur', ); /** Franco-Provençal (arpetan) @@ -983,6 +1040,41 @@ Buchiér lo nom d’usanciér ou ben l’adrèce IP por avêr la lista de les p 'nuke-namespace' => 'Sè limitar a cet’èspâço de noms :', ); +/** Northern Frisian (Nordfriisk) + * @author Murma174 + */ +$messages['frr'] = array( + 'nuke' => 'Sidjen bonkerwiis strik', + 'action-nuke' => 'sidjen bonkerwiis tu striken', + 'nuke-desc' => 'Administratooren kön diarmä sidjen [[Special:Nuke|bonkerwiis strik]]', + 'nuke-nopages' => 'Bi a „leetst feranrangen“ san nian nei sidjen faan [[Special:Contributions/$1|{{GENDER:$1|$1}}]].', + 'nuke-list' => 'Jodiar sidjen san faan [[Special:Contributions/$1|{{GENDER:$1|$1}}]] skrewen wurden. +Skriiw ap, huaram dü jo strikst, an do trak üüb di knoop tu striken.', + 'nuke-list-multiple' => 'Jodiar sidjen san jüst skrewen wurden. +Skriiw ap, huaram dü jo strikst, an do trak üüb di knoop tu striken.', + 'nuke-defaultreason' => 'Sidjen faan [[Special:Contributions/$1|{{GENDER:$1|$1}}]] bonkerwiis strik', + 'nuke-multiplepeople' => 'Jüst skrewen sidjen bonkerwiis strik', + 'nuke-tools' => 'Diarmä kön sidjen, diar faan en was IP of en wasen brüker skrewen wurden san, bonkerwiis stregen wurd. +Skriiw diar det IP-adres of di brükernööm iin, an do könst dü det list faan sidjen sä, diar stregen wurd kön. +Wan dü diar niks henskrafst, wurd aal a brükern uunwiset.', + 'nuke-submit-user' => 'Widjer', + 'nuke-submit-delete' => 'Enkelten strik', + 'right-nuke' => 'Sidjen bonkerwiis strik', + 'nuke-select' => 'Schük ütj: $1', + 'nuke-userorip' => 'Brükernööm, IP-adres of niks:', + 'nuke-maxpages' => 'Ei muar sidjen üs:', + 'nuke-editby' => 'Skrewen faan [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', + 'nuke-deleted' => "Sidj '''„$1“''' as stregen wurden.", + 'nuke-not-deleted' => "Sidj [[:$1]] '''küd ei''' stregen wurd.", + 'nuke-delete-more' => '[[Special:Nuke|Muar sidjen strik]]', + 'nuke-pattern' => 'Münster för di sidjnööm:', + 'nuke-nopages-global' => 'Diar san nian sidjen uun a [[Special:RecentChanges|leetst feranrangen]].', + 'nuke-viewchanges' => 'Feranrangen wise', + 'nuke-namespace' => 'Bluas uun di nöömrüm:', + 'nuke-linkoncontribs' => 'Bonkerwiis strik', + 'nuke-linkoncontribs-text' => 'Bonkerwiis stregen sidjen, huar di brüker di iansagst skriiwer as.', +); + /** Friulian (furlan) * @author Klenje */ @@ -1022,6 +1114,8 @@ Introduza o nome do usuario ou enderezo IP para obter unha lista das páxinas pa 'nuke-nopages-global' => 'Non hai páxinas novas nos [[Special:RecentChanges|cambios recentes]].', 'nuke-viewchanges' => 'ollar os cambios', 'nuke-namespace' => 'Limitar ao espazo de nomes:', + 'nuke-linkoncontribs' => 'eliminar en masa', + 'nuke-linkoncontribs-text' => 'Eliminar en masa as páxinas das que este usuario é o único autor', ); /** Ancient Greek (Ἀρχαία ἑλληνικὴ) @@ -1082,8 +1176,10 @@ $messages['gv'] = array( /** Hebrew (עברית) * @author Amire80 * @author Guycn1 + * @author Guycn2 * @author Rotem Liss * @author YaronSh + * @author Yona b */ $messages['he'] = array( 'nuke' => 'מחיקה מרובה', @@ -1096,8 +1192,8 @@ $messages['he'] = array( אנא כתבו נימוק למחיקה ולחצו על הכפתור כדי למחוק אותם.', 'nuke-defaultreason' => 'הסרה מרובה של דפים שנוצרו על־ידי [[Special:Contributions/$1|$1]]', 'nuke-multiplepeople' => 'מחיקה מרובה של דפים שנוספו לאחרונה', - 'nuke-tools' => 'כלי זה מאפשר מחיקות המוניות של דפים שנוספו לאחרונה על ידי משתמש או כתובת IP מסוימים. -כתבו את שם המשתמש או כתובת ה־IP כדי לקבל את רשימת הדפים למחיקה או השאירו את השדה הזה ריק עבור כל המשתמשים.', + 'nuke-tools' => 'כלי זה מאפשר מחיקות המוניות של דפים שנוספו לאחרונה על־ידי משתמש או כתובת IP מסוימים. +כתבו את שם המשתמש או כתובת ה־IP כדי לקבל את רשימת הדפים למחיקה, או השאירו את השדה ריק עבור כל המשתמשים.', 'nuke-submit-user' => 'הצגה', 'nuke-submit-delete' => 'מחיקת הדפים שנבחרו', 'right-nuke' => 'מחיקה מרובה של דפים', @@ -1112,6 +1208,8 @@ $messages['he'] = array( 'nuke-nopages-global' => 'אין דפים חדשים ב[[Special:RecentChanges|שינויים אחרונים]].', 'nuke-viewchanges' => 'הצגת שינויים', 'nuke-namespace' => 'להגביל למרחב השמות הבא:', + 'nuke-linkoncontribs' => 'מחיקה מרובה', + 'nuke-linkoncontribs-text' => 'מחיקת דפים רבים בהם משתמש זה הוא הכותב היחיד', ); /** Hindi (हिन्दी) @@ -1159,6 +1257,7 @@ $messages['hil'] = array( /** Croatian (hrvatski) * @author Dalibor Bosits * @author Dnik + * @author MaGa * @author Roberta F. * @author SpeedyGonsales */ @@ -1173,6 +1272,9 @@ $messages['hr'] = array( 'nuke-submit-delete' => 'Obriši označeno', 'right-nuke' => 'Skupno brisanje stranica', 'nuke-select' => 'Odaberite: $1', + 'nuke-viewchanges' => 'prikaži promjene', + 'nuke-linkoncontribs' => 'skupno brisanje', + 'nuke-linkoncontribs-text' => 'Skupno brisanje stranica kojima je ovaj suradnik jedini autor', ); /** Upper Sorbian (hornjoserbsce) @@ -1203,6 +1305,8 @@ napisaj komentar a klikń na tłóčatko, zo by je wušmórnył.', 'nuke-nopages-global' => 'Njejsu žane nowe strony w [[Special:RecentChanges|aktualnych změnach]].', 'nuke-viewchanges' => 'změny pokazać', 'nuke-namespace' => 'Na slědowacy mjenowy rum wobmjezować:', + 'nuke-linkoncontribs' => 'masowe zhašenje', + 'nuke-linkoncontribs-text' => 'Strony masoweho zhašenja, hdźež tutón wužiwar je jenički awtor', ); /** Hungarian (magyar) @@ -1280,7 +1384,7 @@ $messages['id'] = array( 'nuke-desc' => 'Memberikan kemampuan bagi pengurus untuk [[Special:Nuke|menghapus halaman secara massal]]', 'nuke-nopages' => 'Tak ditemukan halaman baru dari [[Special:Contributions/$1|{{GENDER:$1|$1}}]] di perubahan terbaru.', 'nuke-list' => 'Halaman berikut baru saja dibuat oleh [[Special:Contributions/$1|{{GENDER:$1|$1}}]]; berikan komentar dan tekan tombol untuk menghapus halaman-halaman tersebut.', - 'nuke-list-multiple' => 'Halaman berikut baru dibuat; + 'nuke-list-multiple' => 'Halaman berikut baru dibuat; berikan komentar dan tekan tombol untuk menghapus.', 'nuke-defaultreason' => 'Penghapusan masal halaman-halaman yang dibuat oleh [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', 'nuke-multiplepeople' => 'Penghapusan masal halaman yang baru saja ditambahkan', @@ -1313,9 +1417,9 @@ $messages['ig'] = array( * @author Lam-ang */ $messages['ilo'] = array( - 'nuke' => 'Paga-adduan nga pinag-ikkat', + 'nuke' => 'Paga-adduan nga panagikkat', 'action-nuke' => 'ikkaten dagiti panid', - 'nuke-desc' => 'Ikkan na ti administrador ti abilidad nga [[Special:Nuke| paga-adduan nga pang-ikkat]] kadagit panid', + 'nuke-desc' => 'Ikkanna ti administrador ti abilidad iti [[Special:Nuke|adu a panagikkat]] kadagiti panid', 'nuke-nopages' => 'Awan dagiti baro a panid babaen ni [[Special:Contributions/$1|{{GENDER:$1|$1}}]] idiay kaudian abalbaliw.', 'nuke-list' => 'Dagiti sumaganad a panid ket kadamdamaan a pinartuat babaen ni [[Special:Contributions/$1|{{GENDER:$1|$1}}]]; ikkam ti komentario ken pindutem ti buton tapno maikkatda.', @@ -1339,6 +1443,8 @@ Ikabil ti nagan ti agar-aramat wenno IP address tapno maalam dagiti listaan dagi 'nuke-nopages-global' => 'Awan dagiti baro a panid idiay [[Special:RecentChanges|kinaudian a pinagbaliw]].', 'nuke-viewchanges' => 'kitaen dagiti sinukatan', 'nuke-namespace' => 'Patingga iti nagan a lugar:', + 'nuke-linkoncontribs' => 'agikkat ti adu', + 'nuke-linkoncontribs-text' => 'Agikkat ti adu a pampanid a ti agar-aramat ket isu laeng ti nagsurat', ); /** Ido (Ido) @@ -1415,6 +1521,8 @@ Inserisci il nome utente o l'indirizzo IP per la lista delle pagine da cancellar 'nuke-nopages-global' => 'Non ci sono nuove pagine negli [[Special:RecentChanges|ultimi cambiamenti]].', 'nuke-viewchanges' => 'vedi modifiche', 'nuke-namespace' => 'Limita al namespace:', + 'nuke-linkoncontribs' => 'cancella massivamente', + 'nuke-linkoncontribs-text' => "Cancella massivamente le pagine dove questo utente è l'unico contributore", ); /** Japanese (日本語) @@ -1457,6 +1565,7 @@ $messages['ja'] = array( 'nuke-nopages-global' => '[[Special:RecentChanges|最近の更新]]には新しいページはありません。', 'nuke-viewchanges' => '履歴を表示', 'nuke-namespace' => '名前空間:', + 'nuke-linkoncontribs' => '一括削除', ); /** Jutish (jysk) @@ -1528,7 +1637,9 @@ $messages['ka'] = array( 'nuke-deleted' => "გვერდი '''$1''' წაიშალა.", 'nuke-not-deleted' => "გვერდი [[:$1]] წაშლა '''შეუძლებელია'''.", 'nuke-delete-more' => '[[Special:Nuke|მრავალრიცხოვანი გვერდების წაშლა]]', + 'nuke-pattern' => 'გვერდის სახელის თარგი:', 'nuke-viewchanges' => 'ცვლილებების ჩვენება', + 'nuke-namespace' => 'სახელთა სივრცის შეზღუდვა:', ); /** Kazakh (Cyrillic script) (қазақша (кирил)‎) @@ -1587,6 +1698,7 @@ $messages['kn'] = array( * @author Albamhandae * @author Klutzy * @author Kwj2772 + * @author Priviet * @author ToePeu * @author 아라 */ @@ -1617,13 +1729,17 @@ $messages['ko'] = array( 'nuke-nopages-global' => '[[Special:RecentChanges|최근 바뀜]]에 새 문서가 없습니다.', 'nuke-viewchanges' => '차이 보기', 'nuke-namespace' => '이름공간 제한:', + 'nuke-linkoncontribs' => '문서 대량 삭제', + 'nuke-linkoncontribs-text' => '이 사용자가 유일한 기여자인 문서를 대량 삭제', ); /** Krio (Krio) * @author Jose77 + * @author Protostar */ $messages['kri'] = array( 'nuke-submit-user' => 'Go to am', + 'nuke-linkoncontribs' => 'mass delet', ); /** Kinaray-a (Kinaray-a) @@ -1681,6 +1797,7 @@ $messages['ku-latn'] = array( /** Luxembourgish (Lëtzebuergesch) * @author Les Meloures * @author Robby + * @author Soued031 */ $messages['lb'] = array( 'nuke' => 'Masseläschung', @@ -1691,7 +1808,7 @@ $messages['lb'] = array( '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' => 'Masseläschung vu Säiten, déi vum [[Special:Contributions/$1|{{GENDER:$1|$1}}]] ugefaang goufen', - 'nuke-multiplepeople' => 'Masse-Läschung vu Säiten déi rezent derbäi gesat goufen', + 'nuke-multiplepeople' => 'Masse-Läschung vu Säiten déi rezent derbäigesat goufen', 'nuke-tools' => "Dësen Tool erlaabt vill Säite mateneen ze läschen, déi vun engem Benotzer oder vun enger IP-Adress ugeluecht goufen. Gitt w.e.g. d'IP-Adress respektiv de Benotzer u fir eng Lëscht vun de Säiten ze kréien déi geläscht solle ginn, oder loosst et eidel fir all Benotzer.", 'nuke-submit-user' => 'Lass', @@ -1708,6 +1825,8 @@ Gitt w.e.g. d'IP-Adress respektiv de Benotzer u fir eng Lëscht vun de Säiten z 'nuke-nopages-global' => 'Et si keng nei Säiten an de [[Special:RecentChanges|rezenten Ännerungen]].', 'nuke-viewchanges' => 'Ännerunge weisen', 'nuke-namespace' => 'Op dësen Nummraum limitéieren:', + 'nuke-linkoncontribs' => 'Masseläschungen', + 'nuke-linkoncontribs-text' => 'Massegeläschte Säite wou dëse Benotzer den eenzegen Auteur ass', ); /** Limburgish (Limburgs) @@ -1785,7 +1904,7 @@ $messages['mg'] = array( */ $messages['min'] = array( 'nuke' => 'Pangapuihan masal', - 'nuke-list-multiple' => 'Laman ko baru sajo dibuek; + 'nuke-list-multiple' => 'Laman ko baru sajo dibuek; agiah komentar dan takan tombol untuak mangapuih.', 'nuke-defaultreason' => 'Pangapuihan masal laman-laman nan dibuek dek [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', 'nuke-tools' => 'Pakakeh ko mamungkinkan pangapuihan masal laman-laman nan baru sajo dibuek jo sorang pangguno atau alamaik IP. @@ -1832,6 +1951,8 @@ $messages['mk'] = array( 'nuke-nopages-global' => 'Нема нови страници во [[Special:RecentChanges|скорешните промени]].', 'nuke-viewchanges' => 'прикажи промени', 'nuke-namespace' => 'Само во имен. простор:', + 'nuke-linkoncontribs' => 'масовно бришење', + 'nuke-linkoncontribs-text' => 'Масовното бришење на страници чиј единствен автор е овој корисник', ); /** Malayalam (മലയാളം) @@ -1864,21 +1985,26 @@ $messages['ml'] = array( 'nuke-nopages-global' => '[[Special:RecentChanges|സമീപകാലമാറ്റങ്ങളിൽ]] പുതിയ താളുകളൊന്നുമില്ല.', 'nuke-viewchanges' => 'മാറ്റങ്ങൾ കാണുക', 'nuke-namespace' => 'ഈ നാമമേഖലയിൽ ഒതുക്കുക:', + 'nuke-linkoncontribs' => 'കൂട്ട മായ്ക്കൽ', + 'nuke-linkoncontribs-text' => 'ഈ ഉപയോക്താവ് കൂട്ടത്തോടെ മായ്ച്ച താളുകൾ', ); /** Marathi (मराठी) * @author Kaustubh + * @author V.narsikar */ $messages['mr'] = array( 'nuke' => 'एकदम खूप पाने वगळा', - 'nuke-desc' => 'प्रबंधकांना एकाचवेळी [[Special:Nuke|अनेक पाने वगळण्याची]] परवानगी देते', + 'nuke-desc' => 'प्रबंधकांना [[Special:Nuke|गठ्ठ्याने वगळण्याची(मास डिलीट)]] क्षमता देते', 'nuke-nopages' => '[[Special:Contributions/$1|$1]] कडून अलीकडील बदलांमध्ये नवीन पाने नाहीत.', # Fuzzy 'nuke-list' => 'खालील पाने ही [[Special:Contributions/$1|$1]] ने अलिकडे वाढविलेली आहेत; शेरा द्या व वगळण्यासाठी कळीवर टिचकी द्या.', # Fuzzy 'nuke-defaultreason' => '$1 ने नवीन वाढविलेली अनेक पाने एकावेळी वगळा', # Fuzzy 'nuke-tools' => 'हे उपकरण एखाद्या विशिष्ट सदस्य अथवा अंकपत्त्याद्वारे नवीन तयार करण्यात आलेल्या पानांना एकाचवेळी वगळण्याची संधी देते. सदस्य नाव अथवा अंकपत्ता दिल्यास वगळण्यासाठी पानांची यादी मिळेल:', # Fuzzy 'nuke-submit-user' => 'जा', 'nuke-submit-delete' => 'निवडलेले वगळा', - 'right-nuke' => 'खूप पाने एकत्र वगळा', + 'right-nuke' => 'गठ्ठ्याने पाने वगळा', + 'nuke-linkoncontribs' => 'एकगठ्ठा वगळा', + 'nuke-linkoncontribs-text' => 'ती पाने एकगठ्ठा वगळा, ज्यांचा हा सदस्य एकमेव लेखक आहे', ); /** Malay (Bahasa Melayu) @@ -1911,6 +2037,8 @@ Isikan nama pengguna atau alamat IP untuk mendapat senarai laman yang hendak dik 'nuke-nopages-global' => 'Tiada laman baru dalam [[Special:RecentChanges|perubahan terkini]].', 'nuke-viewchanges' => 'lihat perubahan', 'nuke-namespace' => 'Had ruang nama:', + 'nuke-linkoncontribs' => 'hapus pukal', + 'nuke-linkoncontribs-text' => 'Hapus pukal halaman-halaman di mana pengguna ini satu-satunya pengarangnya', ); /** Maltese (Malti) @@ -1988,6 +2116,8 @@ Skriv et brukernavn eller en IP-adresse for å få en liste over sider som kan s 'nuke-delete-more' => '[[Special:Nuke|Slett flere sider]]', 'nuke-pattern' => 'Mønster for sidenavnet:', 'nuke-nopages-global' => 'Det er ingen sider i [[Special:RecentChanges|siste endringer]].', + 'nuke-linkoncontribs' => 'masseslett', + 'nuke-linkoncontribs-text' => 'Masseslett sider der denne brukeren er den eneste oppretteren', ); /** Low German (Plattdüütsch) @@ -2044,6 +2174,7 @@ $messages['niu'] = array( /** Dutch (Nederlands) * @author SPQRobin * @author Siebrand + * @author Sjoerddebruin * @author Wiki13 */ $messages['nl'] = array( @@ -2072,6 +2203,7 @@ Voer de gebruikersnaam of het IP-adres in voor een lijst van te verwijderen pagi 'nuke-nopages-global' => "Er zijn geen nieuwe pagina's in de [[Special:RecentChanges|recente wijzigingen]].", 'nuke-viewchanges' => 'wijzigingen bekijken', 'nuke-namespace' => 'Beperk tot naamruimte:', + 'nuke-linkoncontribs' => 'massaal verwijderen', ); /** Norwegian Nynorsk (norsk nynorsk) @@ -2089,7 +2221,7 @@ skriv inn ei sletteårsak og trykk på knappen for å sletta dei.', skriv inn ein kommentar og trykk på knappen for å sletta dei.', 'nuke-defaultreason' => 'Massesletting av sider lagde inn av [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', 'nuke-multiplepeople' => 'Massesletting av nyleg oppretta sider', - 'nuke-tools' => 'Dette verktøyet mogeleggjer massesletting av sider som nyleg er lagde inn av ein viss brukar eller ei viss IP-adresse. + 'nuke-tools' => 'Dette verktøyet mogeleggjer massesletting av sider som nyleg er lagde inn av ein viss brukar eller ei viss IP-adresse. Skriv inn eit brukarnamn eller ei IP-adresse for å få ei liste over sider som kan verta sletta, eller lat feltet stå tomt for alle brukarar.', 'nuke-submit-user' => 'Gå', 'nuke-submit-delete' => 'Slett valde', @@ -2120,9 +2252,9 @@ $messages['nso'] = array( $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.', # Fuzzy - 'nuke-list' => 'Las paginas seguentas son estadas creadas recentament per [[Special:Contributions/$1|$1]]; Indicatz un comentari e clicatz sul boton per los suprimir.', # Fuzzy - 'nuke-defaultreason' => 'Supression en massa de las paginas apondudas per $1', # Fuzzy + 'nuke-nopages' => 'Cap de pagina novèla pas creada per [[Special:Contributions/$1|{{GENDER:$1|$1}}]] dins la lista dels darrièrs cambiaments.', + 'nuke-list' => 'Las paginas seguentas son estadas creadas recentament per [[Special:Contributions/$1|{{GENDER:$1|$1}}]]; picatz un comentari e clicatz sul boton per los suprimir.', + 'nuke-defaultreason' => 'Supression en massa de las paginas apondudas per [[Special:Contributions/$1|{{GENDER:$1|$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 lista de las paginas de suprimir, o daissar blanc per totes los utilizaires.', 'nuke-submit-user' => 'Validar', 'nuke-submit-delete' => 'Supression seleccionada', @@ -2174,6 +2306,7 @@ $messages['pdc'] = array( * @author Olgak85 * @author Rezonansowy * @author Sp5uhe + * @author WTM * @author Woytecr */ $messages['pl'] = array( @@ -2202,6 +2335,8 @@ Wpisz nazwę użytkownika lub adres IP, by otrzymać listę stron do usunięcia. 'nuke-nopages-global' => 'Brak nowych stron w [[Special:RecentChanges|ostatnich zmianach]].', 'nuke-viewchanges' => 'widok zmian', 'nuke-namespace' => 'Tylko w przestrzeni nazw:', + 'nuke-linkoncontribs' => 'masowe usuwanie', + 'nuke-linkoncontribs-text' => 'Masowe usuwanie stron, których jedynym autorem jest ten użytkownik', ); /** Piedmontese (Piemontèis) @@ -2245,7 +2380,7 @@ $messages['ps'] = array( 'nuke-multiplepeople' => 'د تازه راگډ شويو مخونو ټول ړنگېدنه', 'nuke-submit-user' => 'ورځه', 'nuke-submit-delete' => 'ټاکل شوی ړنگول', - 'right-nuke' => 'د ډله ايز ړنګون مخونه', + 'right-nuke' => 'د ډله ايز ړنگون مخونه', 'nuke-select' => 'ټاکل: $1', 'nuke-userorip' => 'کارن-نوم، آي پي پته يا تش:', 'nuke-maxpages' => 'د حد اکثر شمېر مخونه:', @@ -2257,6 +2392,7 @@ $messages['ps'] = array( /** Portuguese (português) * @author Hamilton Abreu + * @author Imperadeiro98 * @author Luckas * @author Malafaya * @author 555 @@ -2280,6 +2416,8 @@ introduza um comentário e clique o botão para eliminá-las.', 'nuke-editby' => 'Criada por [[Special:Contributions/$1|$1]]', # Fuzzy 'nuke-deleted' => "A página '''$1''' foi eliminada.", 'nuke-not-deleted' => 'Não foi possível eliminar a página [[:$1]].', + 'nuke-linkoncontribs' => 'eliminação em massa', + 'nuke-linkoncontribs-text' => 'Eliminar em massa páginas em que este utilizador é o único autor', ); /** Brazilian Portuguese (português do Brasil) @@ -2421,6 +2559,7 @@ Mitte 'u nome de l'utende o l'indirizze IP pe avè 'n'elenghe de le pàggene de 'nuke-nopages-global' => "Non ge stonne pàggene nove jndr'à le [[Special:RecentChanges|cangiaminde recende]].", 'nuke-viewchanges' => 'vide le cangiaminde', 'nuke-namespace' => 'Limite a namespace:', + 'nuke-linkoncontribs' => 'scangellazione de masse', ); /** Russian (русский) @@ -2429,6 +2568,7 @@ Mitte 'u nome de l'utende o l'indirizze IP pe avè 'n'elenghe de le pàggene de * @author HalanTul * @author KPu3uC B Poccuu * @author Kaganer + * @author Okras * @author VasilievVV * @author Александр Сигачёв */ @@ -2458,6 +2598,8 @@ $messages['ru'] = array( 'nuke-nopages-global' => 'В [[Special:RecentChanges|недавних изменениях]] нет новых страниц.', 'nuke-viewchanges' => 'Внесённые изменения', 'nuke-namespace' => 'Ограничить пространством имён:', + 'nuke-linkoncontribs' => 'множественное удаление', + 'nuke-linkoncontribs-text' => 'Массово удалить страницы, где этот участник является единственным автором', ); /** Rusyn (русиньскый) @@ -2497,7 +2639,7 @@ $messages['sah'] = array( Соторго быһаарыыта суруйан баран тимэҕи баттаа.', 'nuke-defaultreason' => '$1 кыттааччы айбыт сирэйдэрин бүтүннүү суох оҥоруу', # Fuzzy 'nuke-multiplepeople' => 'элбэх кыттааччы', # Fuzzy - 'nuke-tools' => 'Бу сирэй көмөтүнэн ханнык эмэ кыттааччы оҥорбут көннөрүүлэрин эбэтэр биир IP-ттан оҥоһуллубут көннөрүүлэри бүтүннүү суох гынахха сөп. + 'nuke-tools' => 'Бу сирэй көмөтүнэн ханнык эмэ кыттааччы оҥорбут көннөрүүлэрин эбэтэр биир IP-ттан оҥоһуллубут көннөрүүлэри бүтүннүү суох гынахха сөп. Кыттааччы аатын эбэтэр IP-тын киллэрдэххинэ оҥорбут көннөрүүлэрин тиһигэ тахсыа, кураанах хааллардаххына бары кыттааччылар көннөрүүлэрэ көстүө.', 'nuke-submit-user' => 'Толор', 'nuke-submit-delete' => 'Талыллыбыты сот', @@ -2523,6 +2665,45 @@ $messages['scn'] = array( 'right-nuke' => "Scancella pàggini 'n massa", ); +/** Scots (Scots) + * @author John Reid + */ +$messages['sco'] = array( + 'nuke-linkoncontribs' => 'nuke-delete', + 'nuke-linkoncontribs-text' => 'nuke-delete pages whaur this uiser is the yinly author', +); + +/** Serbo-Croatian (srpskohrvatski / српскохрватски) + * @author Kolega2357 + */ +$messages['sh'] = array( + 'nuke' => 'Masovno brisanje', + 'action-nuke' => 'masovno brisanje stranica', + '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|{{GENDER:$1|$1}}]]; ostavite komentar i pritisnite dugme za njihovo brisanje.', + 'nuke-list-multiple' => 'Sledeće stranice su nedavno napravljenje, ostavite komentar i pritisnite dugme da biste ih obrisali.', + 'nuke-defaultreason' => 'Masovno brisanje stranica koje je napravio korisnik [[Special:Contributions/$1|{{GENDER:$1|$1}}]]', + 'nuke-multiplepeople' => 'Masovno brisanje nedavno dodatih stranica', + 'nuke-tools' => 'Ova alatka omogućava zbirno brisanje stranica koje je nedavno dodao određeni korisnik (sa nalogom ili bez njega). +Unesite korisničko ime ili IP adresu da biste dobili spisak stranica za brisanje, ili ostavite prazno ako želite da se navedu svi korisnici.', + 'nuke-submit-user' => 'Idi', + 'nuke-submit-delete' => 'Obriši izabrano', + 'right-nuke' => 'masovno brisanje stranica', + 'nuke-select' => 'Izaberi: $1', + 'nuke-userorip' => 'Korisničko ime, IP adresa ili prazno:', + 'nuke-maxpages' => 'Najveći broj stranica:', + 'nuke-editby' => 'Napravio [[Special:Contributions/$1|$1]]', + 'nuke-deleted' => "Stranica '''$1''' je obrisana.", + 'nuke-not-deleted' => "'''Ne mogu''' da obrišem stranicu [[:$1]].", + 'nuke-delete-more' => '[[Special:Nuke|Obriši još stranica]]', + 'nuke-pattern' => 'Obrazac za naziv stranice:', + 'nuke-nopages-global' => 'Nema novih stranica u [[Special:RecentChanges|skorašnjim izmenama]].', + 'nuke-viewchanges' => 'pogledaj izmene', + 'nuke-namespace' => 'Ograničenja na imenskim prostorima:', + 'nuke-linkoncontribs' => 'masovno brisanje', +); + /** Sinhala (සිංහල) * @author නන්දිමිතුරු * @author පසිඳු කාවින්ද @@ -2631,6 +2812,9 @@ $messages['sr-ec'] = array( 'nuke-not-deleted' => "'''Не могу''' да обришем страницу [[:$1]].", 'nuke-delete-more' => '[[Special:Nuke|Обриши још страница]]', 'nuke-pattern' => 'Образац за назив странице:', + 'nuke-viewchanges' => 'прикажи измене', + 'nuke-linkoncontribs' => 'масовно брисање', + 'nuke-linkoncontribs-text' => 'Скупно брисање страница чије једини аутор овај корисник', ); /** Serbian (Latin script) (srpski (latinica)‎) @@ -2650,7 +2834,7 @@ $messages['sr-el'] = array( Unesite korisničko ime ili IP adresu da biste dobili spisak stranica za brisanje, ili ostavite prazno ako želite da se navedu svi korisnici.', 'nuke-submit-user' => 'Idi', 'nuke-submit-delete' => 'Obriši obeleženo', - 'right-nuke' => 'Masovno brisanje strana.', + 'right-nuke' => 'masovno brisanje strana', 'nuke-select' => 'Izaberi: $1', 'nuke-userorip' => 'Korisničko ime, IP adresa ili prazno:', 'nuke-maxpages' => 'Najveći broj stranica:', @@ -2659,6 +2843,9 @@ Unesite korisničko ime ili IP adresu da biste dobili spisak stranica za brisanj 'nuke-not-deleted' => "'''Ne mogu''' da obrišem stranicu [[:$1]].", 'nuke-delete-more' => '[[Special:Nuke|Obriši još stranica]]', 'nuke-pattern' => 'Obrazac za naziv stranice:', + 'nuke-viewchanges' => 'prikaži izmene', + 'nuke-linkoncontribs' => 'masovno brisanje', + 'nuke-linkoncontribs-text' => 'Skupno brisanje stranica čije jedini autor ovaj korisnik', ); /** Seeltersk (Seeltersk) @@ -2695,6 +2882,7 @@ tuliskeun pamanggih anjeun, terus pencét tombolna pikeun ngahapus.', # Fuzzy /** Swedish (svenska) * @author Cybjit + * @author Hangsna * @author Lejonel * @author Martinwiss * @author Tobulos1 @@ -2726,6 +2914,8 @@ Ange användarnamnet eller IP-adressen för att se en lista över sidor som kan 'nuke-nopages-global' => 'Det finns inga nya sidor i [[Special:RecentChanges|senaste ändringar]].', 'nuke-viewchanges' => 'visa ändringar', 'nuke-namespace' => 'Begränsa till namnrymd:', + 'nuke-linkoncontribs' => 'massradering', + 'nuke-linkoncontribs-text' => 'Radera alla sidor där användaren är ensam bidragsgivare', ); /** Swahili (Kiswahili) @@ -2755,6 +2945,7 @@ $messages['ta'] = array( ); /** Telugu (తెలుగు) + * @author Ravichandra * @author Veeven */ $messages['te'] = array( @@ -2774,6 +2965,7 @@ $messages['te'] = array( 'nuke-delete-more' => '[[Special:Nuke|మరిన్ని పేజీలను తొలగించండి]]', 'nuke-nopages-global' => '[[Special:RecentChanges|ఇటీవలి మార్పుల]]లో కొత్త పేజీలు ఏమీ లేవు.', 'nuke-viewchanges' => 'మార్పులను చూడండి', + 'nuke-linkoncontribs' => 'మూకుమ్మడి తొలగింపు', ); /** Tetum (tetun) @@ -2910,7 +3102,9 @@ $messages['ug-latn'] = array( /** Ukrainian (українська) * @author AS + * @author Aced * @author Ahonc + * @author Andriykopanytsia * @author Base * @author Dim Grits * @author Microcell @@ -2933,7 +3127,7 @@ $messages['uk'] = array( 'nuke-submit-delete' => 'Вилучити обрані', 'right-nuke' => 'Масове вилучення сторінок', 'nuke-select' => 'Вибір: $1', - 'nuke-userorip' => "Ім'я користувача, IP-адреса (за бажанням):", + 'nuke-userorip' => "Ім'я користувача, IP-адреса (необов'язковий параметр):", 'nuke-maxpages' => 'Максимальна кількість сторінок:', 'nuke-editby' => 'Створено {{GENDER:$1|користувачем|користувачкою}} [[Special:Contributions/$1|$1]]', 'nuke-deleted' => "Сторінка '''$1''' була вилучена.", @@ -2943,6 +3137,8 @@ $messages['uk'] = array( 'nuke-nopages-global' => 'У [[Special:RecentChanges|нових редагуваннях]] немає нових сторінок.', 'nuke-viewchanges' => 'переглянути зміни', 'nuke-namespace' => 'Обмежити за простором назв:', + 'nuke-linkoncontribs' => 'масове вилучення', + 'nuke-linkoncontribs-text' => 'Масове вилучення сторінок, де цей користувач є єдиним автором', ); /** Urdu (اردو) @@ -3011,17 +3207,20 @@ Hãy nhập tên thành viên hoặc địa chỉ IP để lấy danh sách các 'nuke-nopages-global' => 'Không có trang mới trong các [[Special:RecentChanges|thay đổi gần đây]].', 'nuke-viewchanges' => 'xem thay đổi', 'nuke-namespace' => 'Giới hạn theo không gian tên:', + 'nuke-linkoncontribs' => 'xóa hàng loạt', + 'nuke-linkoncontribs-text' => 'Xóa hàng loạt các trang có người dùng này là tác giả duy nhất', ); /** Volapük (Volapük) + * @author Malafaya * @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.', # Fuzzy - '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.', # Fuzzy - 'nuke-defaultreason' => 'Moükam padas fa geban: $1 pejafölas', # Fuzzy + 'nuke-nopages' => 'Pads nonik fa geban: [[Special:Contributions/$1|{{GENDER:$1|$1}}]] pejaföls binons su lised votükamas nulik.', + 'nuke-list' => 'Pads sököl pejafons brefabüo fa geban: [[Special:Contributions/$1|{{GENDER:$1|$1}}]]; penolös küpeti e klikolös gnobi ad moükön onis.', + 'nuke-defaultreason' => 'Moükam masifik padas fa [[Special:Contributions/$1|{{GENDER:$1|$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:', # Fuzzy 'nuke-submit-user' => 'Ledunolöd', 'nuke-submit-delete' => 'Pevalöl ad pamoükön', @@ -3068,8 +3267,8 @@ $messages['zh-hans'] = array( 'action-nuke' => '删除大量页面', 'nuke-desc' => '让管理员可以[[Special:Nuke|批量删除]]页面', 'nuke-nopages' => '在最近更改中没有[[Special:Contributions/$1|{{GENDER:$1|$1}}]]创建的新页面。', - 'nuke-list' => '以下为[[Special:Contributions/$1|{{GENDER:$1|$1}}]]最近创建的页面,请填写注释并点击按钮删除它们。', - 'nuke-list-multiple' => '以下为最近创建的页面,请填写注释并点击按钮删除它们。', + 'nuke-list' => '以下为[[Special:Contributions/$1|{{GENDER:$1|$1}}]]最近创建的页面,请填写注释再点击按钮删除它们。', + 'nuke-list-multiple' => '以下为最近创建的页面,请填写注释再点击按钮删除它们。', 'nuke-defaultreason' => '大量删除[[Special:Contributions/$1|{{GENDER:$1|$1}}]]创建的页面', 'nuke-multiplepeople' => '大量删除最近添加的页面', 'nuke-tools' => '此工具允许大量删除指定用户或IP地址在最近创建的页面。输入用户名或IP地址可获取可删除页面列表,留白则检索所有用户。', @@ -3078,7 +3277,7 @@ $messages['zh-hans'] = array( 'right-nuke' => '删除大量页面', 'nuke-select' => '选择:$1', 'nuke-userorip' => '用户名、IP地址或空白:', - 'nuke-maxpages' => '最多页面数:', + 'nuke-maxpages' => '最大页面数:', 'nuke-editby' => '由[[Special:Contributions/$1|{{GENDER:$1|$1}}]]创建', 'nuke-deleted' => "已删除页面'''$1'''。", 'nuke-not-deleted' => "'''无法'''删除[[:$1]]页面。", @@ -3087,6 +3286,8 @@ $messages['zh-hans'] = array( 'nuke-nopages-global' => '[[Special:RecentChanges|最近更改]]中没有新的页面。', 'nuke-viewchanges' => '查看变更', 'nuke-namespace' => '限制名字空间为:', + 'nuke-linkoncontribs' => '大量删除', + 'nuke-linkoncontribs-text' => '大量删除仅此用户为作者的页面', ); /** Traditional Chinese (中文(繁體)‎) @@ -3094,6 +3295,7 @@ $messages['zh-hans'] = array( * @author Cwlin0416 * @author Justincheng12345 * @author Liangent + * @author Liuxinyu970226 * @author Mark85296341 * @author Shinjiman */ @@ -3121,4 +3323,6 @@ $messages['zh-hant'] = array( 'nuke-nopages-global' => '[[Special:RecentChanges|最近更改]]中沒有新的頁面。', 'nuke-viewchanges' => '查看變更', 'nuke-namespace' => '限制名字空間為:', + 'nuke-linkoncontribs' => '大量刪除', + 'nuke-linkoncontribs-text' => '大量刪除僅此用戶創建之頁面', ); diff --git a/extensions/Nuke/Nuke.php b/extensions/Nuke/Nuke.php index 80a41631..e10ce422 100644 --- a/extensions/Nuke/Nuke.php +++ b/extensions/Nuke/Nuke.php @@ -4,7 +4,7 @@ if ( !defined( 'MEDIAWIKI' ) ) { die( 'Not an entry point.' ); } -define( 'Nuke_VERSION', '1.1.7' ); +define( 'Nuke_VERSION', '1.1.8' ); $dir = dirname( __FILE__ ) . '/'; @@ -24,9 +24,12 @@ $wgGroupPermissions['sysop']['nuke'] = true; $wgAvailableRights[] = 'nuke'; $wgAutoloadClasses['SpecialNuke'] = $dir . 'Nuke_body.php'; +$wgAutoloadClasses['NukeHooks'] = $dir . 'Nuke.hooks.php'; $wgSpecialPages['Nuke'] = 'SpecialNuke'; $wgSpecialPageGroups['Nuke'] = 'pagetools'; +$wgHooks['ContributionsToolLinks'][] = 'NukeHooks::nukeContributionsLinks'; + // Resource loader modules $moduleTemplate = array( 'localBasePath' => dirname( __FILE__ ) . '/', diff --git a/extensions/ParserFunctions/ParserFunctions.i18n.magic.php b/extensions/ParserFunctions/ParserFunctions.i18n.magic.php index 5d26cb71..e92ffe12 100644 --- a/extensions/ParserFunctions/ParserFunctions.i18n.magic.php +++ b/extensions/ParserFunctions/ParserFunctions.i18n.magic.php @@ -58,25 +58,26 @@ $magicWords['ar'] = array( /** 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' ), + '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, 'أجزاء_العنوان' ), + 'len' => array( 0, 'لين' ), + 'pos' => array( 0, 'بوس' ), + 'rpos' => array( 0, 'آربوس' ), + 'sub' => array( 0, 'متفرع' ), + 'count' => array( 0, 'عدد' ), + 'replace' => array( 0, 'استبدال' ), + 'explode' => array( 0, 'انفجار' ), + 'urldecode' => array( 0, 'فك_مسار' ), ); /** South Azerbaijani (تورکجه) */ @@ -100,7 +101,7 @@ $magicWords['ce'] = array( 'replace' => array( 0, 'хийцарна', 'замена' ), ); -/** Czech (česky) */ +/** Czech (čeština) */ $magicWords['cs'] = array( 'expr' => array( 0, 'výraz' ), 'if' => array( 0, 'když' ), @@ -122,8 +123,15 @@ $magicWords['de'] = array( /** Zazaki (Zazaki) */ $magicWords['diq'] = array( + 'expr' => array( 0, 'ifade' ), 'if' => array( 0, 'se' ), 'ifeq' => array( 0, 'sek' ), + 'ifexpr' => array( 0, 'ifadeyose' ), + 'iferror' => array( 0, 'çınyose' ), + 'time' => array( 0, 'zeman' ), + 'sub' => array( 0, 'bın' ), + 'count' => array( 0, 'hesabk' ), + 'replace' => array( 0, 'vırnayen' ), ); /** Esperanto (Esperanto) */ @@ -145,12 +153,14 @@ $magicWords['eo'] = array( /** Spanish (español) */ $magicWords['es'] = array( 'if' => array( 0, 'si' ), + 'ifeq' => array( 0, 'siigual' ), 'ifexpr' => array( 0, 'siexpr' ), 'iferror' => array( 0, 'sierror' ), 'switch' => array( 0, 'según' ), 'default' => array( 0, '#predeterminado' ), 'ifexist' => array( 0, 'siexiste' ), 'time' => array( 0, 'tiempo' ), + 'timel' => array( 0, 'tiempol' ), 'len' => array( 0, 'long', 'longitud' ), 'replace' => array( 0, 'reemplazar' ), 'explode' => array( 0, 'separar' ), @@ -293,7 +303,7 @@ $magicWords['ja'] = array( 'count' => array( 0, '回数' ), 'replace' => array( 0, '置き換え' ), 'explode' => array( 0, '分割' ), - 'urldecode' => array( 0, 'URLデコード' ), + 'urldecode' => array( 0, 'URLデコード', 'URLデコード' ), ); /** Korean (한국어) */ @@ -375,7 +385,7 @@ $magicWords['mk'] = array( $magicWords['ml'] = array( 'expr' => array( 0, 'ദ്യോതകം' ), 'if' => array( 0, 'എങ്കിൽ' ), - 'ifeq' => array( 0, 'സമെമെങ്കിൽ' ), + 'ifeq' => array( 0, 'സമമെങ്കിൽ' ), 'ifexpr' => array( 0, 'എക്സ്പ്രെഷനെങ്കിൽ' ), 'iferror' => array( 0, 'പിഴവെങ്കിൽ' ), 'switch' => array( 0, 'മാറ്റുക' ), @@ -580,22 +590,22 @@ $magicWords['uz'] = array( /** Vietnamese (Tiếng Việt) */ $magicWords['vi'] = array( - 'expr' => array( 0, 'côngthức' ), + 'expr' => array( 0, 'công_thức', 'côngthức' ), 'if' => array( 0, 'nếu' ), - 'ifeq' => array( 0, 'nếubằng' ), - 'ifexpr' => array( 0, 'nếucôngthức' ), - 'iferror' => array( 0, 'nếulỗi' ), - 'default' => array( 0, '#mặcđịnh' ), - 'ifexist' => array( 0, 'nếutồntại' ), + 'ifeq' => array( 0, 'nếu_bằng', 'nếubằng' ), + 'ifexpr' => array( 0, 'nếu_công_thức', 'nếucôngthức' ), + 'iferror' => array( 0, 'nếu_lỗi', 'nếulỗi' ), + 'default' => array( 0, '#mặc_định', '#mặcđịnh' ), + 'ifexist' => array( 0, 'nếu_tồn_tại', 'nếutồntại' ), 'time' => array( 0, 'giờ' ), - 'timel' => array( 0, 'giờđịaphương' ), - 'len' => array( 0, 'sốchữ', 'sốkýtự', 'sốkítự' ), - 'pos' => array( 0, 'vịtrí' ), - 'rpos' => array( 0, 'vịtríphải' ), - 'sub' => array( 0, 'chuỗicon' ), + 'timel' => array( 0, 'giờ_địa_phương', 'giờđịaphương' ), + 'len' => array( 0, 'số_chữ', 'sốchữ', 'số_ký_tự', 'sốkýtự', 'số_kí_tự', 'sốkítự' ), + 'pos' => array( 0, 'vị_trí', 'vịtrí' ), + 'rpos' => array( 0, 'vị_trí_phải', 'vịtríphải' ), + 'sub' => array( 0, 'chuỗi_con', 'chuỗicon' ), 'count' => array( 0, 'số' ), - 'replace' => array( 0, 'thaythế' ), - 'urldecode' => array( 0, 'giảimãurl' ), + 'replace' => array( 0, 'thay_thế', 'thaythế' ), + 'urldecode' => array( 0, 'giải_mã_url', 'giảimãurl' ), ); /** Yiddish (ייִדיש) */ @@ -632,7 +642,22 @@ $magicWords['zh'] = array( /** Simplified Chinese (中文(简体)‎) */ $magicWords['zh-hans'] = array( + 'if' => array( 0, '若' ), 'ifeq' => array( 0, '若相等', '如果相等' ), + 'iferror' => array( 0, '如果错误' ), + 'switch' => array( 0, '开关' ), 'default' => array( 0, '#默认' ), 'ifexist' => array( 0, '若有', '如果存在' ), + 'time' => array( 0, '时间' ), + 'pos' => array( 0, '终端' ), + 'rpos' => array( 0, '反终端' ), + 'sub' => array( 0, 'PF子' ), + 'count' => array( 0, '计数' ), +); + +/** Traditional Chinese (中文(繁體)‎) */ +$magicWords['zh-hant'] = array( + 'if' => array( 0, '若' ), + 'time' => array( 0, '時間' ), + 'timel' => array( 0, '時間L' ), ); \ No newline at end of file diff --git a/extensions/ParserFunctions/ParserFunctions.i18n.php b/extensions/ParserFunctions/ParserFunctions.i18n.php index e026b693..f61310b2 100644 --- a/extensions/ParserFunctions/ParserFunctions.i18n.php +++ b/extensions/ParserFunctions/ParserFunctions.i18n.php @@ -177,6 +177,7 @@ $messages['an'] = array( /** Arabic (العربية) * @author Aiman titi + * @author Asaifm * @author Meno25 */ $messages['ar'] = array( @@ -184,6 +185,7 @@ $messages['ar'] = array( 'pfunc_time_error' => 'خطأ: زمن غير صحيح', 'pfunc_time_too_long' => 'خطأ: استدعاءات #time كثيرة جدا', 'pfunc_time_too_big' => 'خطأ : # الوقت يدعم فقط حتى 9999 سنة', + 'pfunc_time_too_small' => 'خطأ: #time تدعم الأعوام بدءاً من 0.', 'pfunc_rel2abs_invalid_depth' => 'خطأ: عمق غير صحيح في المسار: "$1" (حاول دخول عقدة فوق العقدة الجذرية)', 'pfunc_expr_stack_exhausted' => 'خطأ في التعبير: ستاك مجهد', 'pfunc_expr_unexpected_number' => 'خطأ في التعبير: رقم غير متوقع', @@ -237,6 +239,7 @@ $messages['arz'] = array( /** Assamese (অসমীয়া) * @author Bishnu Saikia + * @author Gitartha.bordoloi * @author Rajuonline */ $messages['as'] = array( @@ -254,7 +257,7 @@ $messages['as'] = array( 'pfunc_expr_unexpected_closing_bracket' => 'এক্সপ্ৰেছন ত্ৰুটী: অবাঞ্চিত সমাপ্তকাৰী বন্ধনী', 'pfunc_expr_unrecognised_punctuation' => 'এক্সপ্ৰেছন ত্ৰুটী: অপৰিচিত বিৰামচিহ্ন কেৰেক্টাৰ "$1"', 'pfunc_expr_unclosed_bracket' => 'এক্সপ্ৰেছন ত্ৰুটী: উন্মুক্ত বন্ধনী', - 'pfunc_expr_division_by_zero' => 'শূন্যৰ দ্বাৰা হৰণ কৰা হৈছে', + 'pfunc_expr_division_by_zero' => 'শূন্যৰে হৰণ কৰা হৈছে।', 'pfunc_expr_invalid_argument' => '$1 ৰ বাবে ভুল চৰ্ত: < -1 অথবা > 1', 'pfunc_expr_invalid_argument_ln' => 'ln ৰ বাবে অমান্য চৰ্ত: <= 0', 'pfunc_expr_unknown_error' => 'এক্সপ্ৰেছন ত্ৰুটী: : অজ্ঞাত ত্ৰুটী ($1)', @@ -545,14 +548,16 @@ $messages['ca'] = array( * @author Умар */ $messages['ce'] = array( + 'pfunc_desc' => 'Дика тайина маьӀнийн функцешца анализатор', 'pfunc_time_error' => 'Гlалато: хан нийса яц', 'pfunc_expr_stack_exhausted' => 'Яздарехь гlалат ду: хьаладуьззина татол', 'pfunc_expr_unrecognised_word' => 'Яздарехь гlалат ду: дойзуш доцу дош «$1»', - 'pfunc_expr_unexpected_operator' => 'Дешнийн гӀалам : ца хаа оператор $1', + 'pfunc_expr_unexpected_operator' => 'Дешнийн гӀалат: ца хаа оператор $1', 'pfunc_expr_unrecognised_punctuation' => 'Дешнашан гӀалат: евзина йоцу пунктуацин символ «$1»', + 'pfunc_expr_unknown_error' => 'Дешнийн гӀалат: ца хаа гӀалат ($1)', ); -/** Czech (česky) +/** Czech (čeština) * @author Danny B. * @author Li-sung * @author Matěj Grabovský @@ -564,6 +569,7 @@ $messages['cs'] = array( '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_time_too_small' => 'Chyba: #time nepodporuje roky menší než 0.', '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', @@ -631,12 +637,13 @@ $messages['da'] = array( * @author Kghbln * @author LWChris * @author Metalhead64 + * @author Purodha * @author Raimond Spekking * @author Rentenirer * @author Rillke */ $messages['de'] = array( - 'pfunc_desc' => 'Ergänzt den Parser um logische Funktionen', + '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', @@ -702,6 +709,8 @@ $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_time_too_big' => 'Zmólka: #time pódpěra jano lěta až do 9999.', + 'pfunc_time_too_small' => 'Zmólka: #time pódpěra jano lěta wót 0.', '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', @@ -823,7 +832,10 @@ $messages['et'] = array( 'pfunc_time_error' => 'Tõrge: Vigane aeg', 'pfunc_time_too_long' => 'Tõrge: Liiga palju #time-kutseid.', 'pfunc_time_too_big' => 'Tõrge: #time toetab vaid aastaid kuni väärtuseni 9999.', + 'pfunc_time_too_small' => 'Tõrge: #time toetab aastaid alates 0-st.', + 'pfunc_rel2abs_invalid_depth' => 'Tõrge: Vigane tee pikkus: "$1" (üritati pöörduda juursõlmest kõrgema sõlme poole).', 'pfunc_expr_unexpected_number' => 'Avaldistõrge: Ootamatu number', + 'pfunc_expr_preg_match_failure' => 'Avaldistõrge: preg_match nurjus ootamatult.', 'pfunc_expr_unrecognised_word' => 'Avaldistõrge: Tundmatu sõna "$1"', 'pfunc_expr_unexpected_operator' => 'Avaldistõrge: Ootamatu $1-tehtemärk', 'pfunc_expr_missing_operand' => 'Avaldistõrge: Puudub $1-tehte operand', @@ -1135,6 +1147,7 @@ $messages['hsb'] = array( 'pfunc_time_error' => 'Zmylk: njepłaćiwe časowe podaće', 'pfunc_time_too_long' => 'Zmylk: přewjele zawołanjow #time', 'pfunc_time_too_big' => 'Zmylk: #time jenož lěta hač do 9999 podpěruje.', + 'pfunc_time_too_small' => 'Zmylk: #time jenož lěta wot 0 podpěruje.', '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', @@ -1187,6 +1200,7 @@ $messages['ia'] = array( '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_time_too_small' => 'Error: #time supporta solmente annos desde 0.', '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', @@ -1233,6 +1247,33 @@ $messages['id'] = array( 'pfunc_string_too_long' => 'Kesalahan: String melebihi limit $1 karakter', ); +/** Iloko (Ilokano) + * @author Lam-ang + */ +$messages['ilo'] = array( + 'pfunc_desc' => 'Napasayaat a parser nga adda kadagiti lohikal nga annong', + 'pfunc_time_error' => 'Biddut: Imbalido nga oras.', + 'pfunc_time_too_long' => 'Biddut: Adu unay dagiti panagtawag ti #time.', + 'pfunc_time_too_big' => 'Biddut: Ti #time ket suportaranna laeng dagiti tawen aginggana iti 9999.', + 'pfunc_time_too_small' => 'Biddut: ti #time ket suportaranna laeng dagiti tawen manipud ti 0.', + 'pfunc_rel2abs_invalid_depth' => 'Biddut: Imbalido a kauneg iti dalan: "$1" (nagpadas a nangserrek ti nodo iti ngato ti ramut a nodo).', + 'pfunc_expr_stack_exhausted' => 'Biddut a panangiyebkas: Naibusen ti tuon.', + 'pfunc_expr_unexpected_number' => 'Biddut a panangiyebkas:Di nanamnama a bilang.', + 'pfunc_expr_preg_match_failure' => 'Biddut a panangiyebkas: Di nanamnama a pannakapaay ti preg_match.', + 'pfunc_expr_unrecognised_word' => 'Biddut a panangiyebkas: Di mabigbigan a balikas ti "$1".', + 'pfunc_expr_unexpected_operator' => 'Biddut a panangiyebkas: Di nanamnama nga operator ti $1.', + 'pfunc_expr_missing_operand' => 'Biddut a panangiyebkas: Napukaw nga operand para iti $1.', + 'pfunc_expr_unexpected_closing_bracket' => 'Biddut a panangiyebkas: Di nanamnama a pangrikep a braket.', + 'pfunc_expr_unrecognised_punctuation' => 'Biddut a panangiyebkas: Di nanamnama a karakter ti tuldek ti "$1".', + 'pfunc_expr_unclosed_bracket' => 'Biddut a panangiyebkas: Di narikpan a braket.', + 'pfunc_expr_division_by_zero' => 'Panagbingbingay babaen ti sero.', + 'pfunc_expr_invalid_argument' => 'Imbalido nga argumento para iti $1: < -1 wenno > 1.', + 'pfunc_expr_invalid_argument_ln' => 'Imbalido nga argumento para iti ln: <= 0.', + 'pfunc_expr_unknown_error' => 'Biddut a panangiyebkas: Di ammo a biddut ($1).', + 'pfunc_expr_not_a_number' => 'Iti $1: Ti resulta ket saan a bilang.', + 'pfunc_string_too_long' => 'Biddut: Ti kuerdas ket nasurokanna ti limitado ti karakter iti $1.', +); + /** Ido (Ido) * @author Malafaya */ @@ -1241,6 +1282,28 @@ $messages['io'] = array( 'pfunc_expr_division_by_zero' => 'Divido per zero', ); +/** Icelandic (íslenska) + * @author Snævar + */ +$messages['is'] = array( + 'pfunc_time_error' => 'Villa: Ógildur tími.', + 'pfunc_time_too_long' => 'Villa: Of mörg köll til #time.', + 'pfunc_time_too_big' => 'Villa: #time styður aðeins ár upp til 9999.', + 'pfunc_time_too_small' => 'Villa: #time styður aðeins ár frá 0.', + 'pfunc_expr_unexpected_number' => 'Villa í segð: Óvænt tala.', + 'pfunc_expr_unrecognised_word' => 'Villa í segð: Óþekkt orð „$1”.', + 'pfunc_expr_unexpected_operator' => 'Villa í segð: Óvæntur $1 virki.', + 'pfunc_expr_missing_operand' => 'Villa í segð: Vantar þolanda fyrir $1.', + 'pfunc_expr_unrecognised_punctuation' => 'Villa í segð: Óþekkt greinarmerki „$1”.', + 'pfunc_expr_unclosed_bracket' => 'Villa í segð: Ólokaður svigi.', + 'pfunc_expr_division_by_zero' => 'Deiling með núlli.', + 'pfunc_expr_invalid_argument' => 'Ógilt frumgildi fyrir $1: < -1 eða > 1.', + 'pfunc_expr_invalid_argument_ln' => 'Ógilt frumgildi fyrir ln: <= 0.', + 'pfunc_expr_unknown_error' => 'Villa í segð: Óþekkt villa ($1).', + 'pfunc_expr_not_a_number' => 'Niðurstaðan úr $1 er ekki tala.', + 'pfunc_string_too_long' => 'Villa: Strengurinn er lengri en hámarkslengdin $1 segir til um.', +); + /** Italian (italiano) * @author Beta16 * @author BrokenArrow @@ -1494,6 +1557,7 @@ $messages['lb'] = array( '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_time_too_small' => 'Feeler: #time ënnerstëtzt nëmme Jore vun 0 un.', '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"', @@ -1536,6 +1600,13 @@ $messages['li'] = array( 'pfunc_string_too_long' => 'Fout: De teks is lenger es de limiet van $1 {{PLURAL:$1|teike|teikes}}', ); +/** لوری (لوری) + * @author Bonevarluri + */ +$messages['lrc'] = array( + 'pfunc_time_error' => 'خطا:وخت نامعتور.', +); + /** Lithuanian (lietuvių) * @author Hugo.arg */ @@ -1564,7 +1635,7 @@ $messages['min'] = array( * @author Brest */ $messages['mk'] = array( - 'pfunc_desc' => 'Проширување на можностите на парсерот со логички функции', + 'pfunc_desc' => 'Проширување на можностите на расчленувачот со логички функции', 'pfunc_time_error' => 'Грешка: погрешен формат за време', 'pfunc_time_too_long' => 'Грешка: премногу повикувања на функцијата #time', 'pfunc_time_too_big' => 'Грешка: #time поддржува само години до 9999', @@ -1763,7 +1834,7 @@ $messages['nl'] = array( '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_missing_operand' => 'Fout in uitdrukking: operand voor $1 ontbreekt.', '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.', @@ -1898,6 +1969,7 @@ $messages['pms'] = array( '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ët mach j'agn fin al 9999.", + 'pfunc_time_too_small' => "Eror: #time a përmet j'agn mach da 0.", '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à", @@ -1941,7 +2013,8 @@ $messages['pt'] = array( 'pfunc_desc' => 'Melhora o analisador sintático com funções lógicas', '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_time_too_big' => 'Erro: #time só permite anos até 9999', + 'pfunc_time_too_small' => 'Erro: #time só permite anos a partir de 0.', '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', @@ -2176,6 +2249,15 @@ $messages['scn'] = array( 'pfunc_string_too_long' => 'Erruri: la stringa supira lu limiti di $1 carattiri', ); +/** Serbo-Croatian (srpskohrvatski / српскохрватски) + * @author Kolega2357 + */ +$messages['sh'] = array( + 'pfunc_time_error' => 'Greška: pogrešno vreme', + 'pfunc_time_too_long' => 'Greška: previše pozivanja funkcije #time', + 'pfunc_rel2abs_invalid_depth' => 'Greška: Nepravilna dubina u putanji: "$1"', +); + /** Sinhala (සිංහල) * @author Budhajeewa * @author නන්දිමිතුරු @@ -2379,6 +2461,7 @@ $messages['sv'] = array( '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_time_too_small' => 'Fel: #tid stödjer enbart år från 0.', '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', diff --git a/extensions/ParserFunctions/ParserFunctions.php b/extensions/ParserFunctions/ParserFunctions.php index 4ef62047..99c8444c 100644 --- a/extensions/ParserFunctions/ParserFunctions.php +++ b/extensions/ParserFunctions/ParserFunctions.php @@ -25,10 +25,20 @@ $wgPFStringLengthLimit = 1000; * * 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 + * MediaWiki templates can be found at: http://www.mediawiki.org/wiki/Extension:Scribunto */ $wgPFEnableStringFunctions = false; +/** + * Enable string functions, when running Wikimedia Jenkins unit tests. + * + * Running Jenkins unit tests without setting $wgPFEnableStringFunctions = true; + * will cause all the parser tests for string functions to be skipped. + */ +if ( isset( $wgWikimediaJenkinsCI ) && ( $wgWikimediaJenkinsCI === true ) ) { + $wgPFEnableStringFunctions = true ; +} + /** REGISTRATION */ $wgExtensionCredits['parserhook'][] = array( 'path' => __FILE__, diff --git a/extensions/ParserFunctions/ParserFunctions_body.php b/extensions/ParserFunctions/ParserFunctions_body.php index 3567cc58..e4ede065 100644 --- a/extensions/ParserFunctions/ParserFunctions_body.php +++ b/extensions/ParserFunctions/ParserFunctions_body.php @@ -669,7 +669,7 @@ class ExtParserFunctions { } if ( intval( $inLength ) == 0 ) { - $result = mb_substr( $inStr, $inStart ); + $result = mb_substr( $inStr, intval( $inStart ) ); } else { $result = mb_substr( $inStr, intval( $inStart ), intval( $inLength ) ); } diff --git a/extensions/PdfHandler/COPYING b/extensions/PdfHandler/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/extensions/PdfHandler/COPYING @@ -0,0 +1,339 @@ + 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. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/extensions/PdfHandler/PdfHandler.i18n.php b/extensions/PdfHandler/PdfHandler.i18n.php index 06143e7b..213f4462 100644 --- a/extensions/PdfHandler/PdfHandler.i18n.php +++ b/extensions/PdfHandler/PdfHandler.i18n.php @@ -226,7 +226,7 @@ $messages['ckb'] = array( 'exif-pdf-pagesize' => 'قەبارەی پەڕە', ); -/** Czech (česky) +/** Czech (čeština) * @author Matěj Grabovský * @author Mormegil */ @@ -542,6 +542,10 @@ $messages['ia'] = array( 'pdf-desc' => 'Gestor pro visualisar files PDF in modo de imagine', 'pdf_no_metadata' => 'Non pote obtener metadatos ab PDF', 'pdf_page_error' => 'Numero de pagina foras del intervallo', + 'exif-pdf-producer' => 'Programma de conversion', + 'exif-pdf-version' => 'Version del formato PDF', + 'exif-pdf-encrypted' => 'Cryptate', + 'exif-pdf-pagesize' => 'Dimension del pagina', ); /** Indonesian (Bahasa Indonesia) @@ -672,6 +676,7 @@ $messages['lb'] = array( 'pdf-desc' => '"Programm" den et erméiglecht PDF-Fichieren als Bild ze kucken', 'pdf_no_metadata' => 'Meta-Informatiounen aus dem PDF Dokument kënnen net gelies ginn', 'pdf_page_error' => "D'Säitenzuel ass net an dem Beräich.", + 'exif-pdf-producer' => 'Ëmwandlungsprogramm', 'exif-pdf-version' => 'Versioun vum PDF-Format', 'exif-pdf-encrypted' => 'Verschlësselt', 'exif-pdf-pagesize' => 'Gréisst vun der Säit', @@ -686,6 +691,13 @@ $messages['li'] = array( 'pdf_page_error' => 'paginanómmer besteit neet', ); +/** لوری (لوری) + * @author Mogoeilor + */ +$messages['lrc'] = array( + 'exif-pdf-pagesize' => 'انازه بلگه', +); + /** Lithuanian (lietuvių) * @author Matasg */ @@ -726,11 +738,12 @@ $messages['ml'] = array( /** Marathi (मराठी) * @author Kaustubh * @author Sankalpdravid + * @author V.narsikar */ $messages['mr'] = array( 'pdf-desc' => 'चित्र मोडमध्ये पीडीएफ संचिका पाहण्यासाठी आवश्यक प्रणाली', 'pdf_no_metadata' => 'पीडीएफमधून मेटाडाटा घेऊ शकत नाही', - 'pdf_page_error' => 'पान क्रमांक सीमेमध्ये नाही', + 'pdf_page_error' => 'पान क्रमांक आवाक्यात नाही', ); /** Malay (Bahasa Melayu) diff --git a/extensions/PdfHandler/PdfHandler_body.php b/extensions/PdfHandler/PdfHandler_body.php index d9ed4884..495f3bb8 100644 --- a/extensions/PdfHandler/PdfHandler_body.php +++ b/extensions/PdfHandler/PdfHandler_body.php @@ -188,12 +188,12 @@ class PdfHandler extends ImageHandler { "-", $dstPath ); - $cmd .= ") 2>&1"; + $cmd .= ")"; wfProfileIn( 'PdfHandler' ); wfDebug( __METHOD__ . ": $cmd\n" ); $retval = ''; - $err = wfShellExec( $cmd, $retval ); + $err = wfShellExecWithStderr( $cmd, $retval ); wfProfileOut( 'PdfHandler' ); $removed = $this->removeBadFile( $dstPath, $retval ); diff --git a/extensions/Poem/Poem.i18n.php b/extensions/Poem/Poem.i18n.php index c58ce78d..29740252 100644 --- a/extensions/Poem/Poem.i18n.php +++ b/extensions/Poem/Poem.i18n.php @@ -124,6 +124,13 @@ $messages['ca'] = array( 'poem-desc' => "Afegeix l'etiqueta <poem> per al formatatge de poemes", ); +/** Chechen (нохчийн) + * @author Умар + */ +$messages['ce'] = array( + 'poem-desc' => 'ТӀетуху тег <poem> дешнаш дӀадаха', +); + /** Sorani Kurdish (کوردی) * @author Asoxor */ @@ -131,7 +138,7 @@ $messages['ckb'] = array( 'poem-desc' => 'تاگی <poem> زێدەدەکات بۆ ڕێکخستنی ھۆنراوەکان', ); -/** Czech (česky) +/** Czech (čeština) * @author Matěj Grabovský */ $messages['cs'] = array( @@ -147,6 +154,7 @@ $messages['da'] = array( /** German (Deutsch) * @author Kghbln + * @author Purodha * @author Raimond Spekking */ $messages['de'] = array( @@ -310,7 +318,7 @@ $messages['id'] = array( * @author Lam-ang */ $messages['ilo'] = array( - 'poem-desc' => 'Ikkan na iti<poem> nga tag para ti pagporma ti daniw', + 'poem-desc' => 'Agnayon ti etiketa ti <poem> para iti panagporma ti daniw', ); /** Italian (italiano) @@ -558,6 +566,13 @@ $messages['scn'] = array( 'poem-desc' => 'Iunci lu tag <poem> pi la furmattazioni di li testa puetici', ); +/** Scots (Scots) + * @author John Reid + */ +$messages['sco'] = array( + 'poem-desc' => 'Adds <poem> tag fr poem formattin', +); + /** Slovak (slovenčina) * @author Helix84 */ diff --git a/extensions/Renameuser/COPYING b/extensions/Renameuser/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/extensions/Renameuser/COPYING @@ -0,0 +1,339 @@ + 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. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/extensions/Renameuser/README b/extensions/Renameuser/README index e44aaafe..a344ebf6 100644 --- a/extensions/Renameuser/README +++ b/extensions/Renameuser/README @@ -1,4 +1,4 @@ -These is the readme file for the MediaWiki Renameuser extension. +This is the readme file for the MediaWiki Renameuser extension. Extension page on mediawiki.org: https://www.mediawiki.org/wiki/Extension:Renameuser Latest version of the readme file: https://gerrit.wikimedia.org/r/gitweb?p=mediawiki/extensions/Renameuser.git;a=blob;f=README diff --git a/extensions/Renameuser/Renameuser.alias.php b/extensions/Renameuser/Renameuser.alias.php index 0523c045..13997709 100644 --- a/extensions/Renameuser/Renameuser.alias.php +++ b/extensions/Renameuser/Renameuser.alias.php @@ -64,7 +64,7 @@ $specialPageAliases['ce'] = array( 'Renameuser' => array( 'Декъашхочун_цӀе_хийца' ), ); -/** Czech (česky) */ +/** Czech (čeština) */ $specialPageAliases['cs'] = array( 'Renameuser' => array( 'Přejmenovat_uživatele' ), ); @@ -131,7 +131,7 @@ $specialPageAliases['frp'] = array( /** Galician (galego) */ $specialPageAliases['gl'] = array( - 'Renameuser' => array( 'Renomear_o_usuario' ), + 'Renameuser' => array( 'Renomear_o_usuario', 'Renomear_usuario', 'Renomear_a_usuaria', 'Renomear_usuaria' ), ); /** Swiss German (Alemannisch) */ diff --git a/extensions/Renameuser/Renameuser.hooks.php b/extensions/Renameuser/Renameuser.hooks.php index 41dcc43e..e5271735 100644 --- a/extensions/Renameuser/Renameuser.hooks.php +++ b/extensions/Renameuser/Renameuser.hooks.php @@ -9,14 +9,14 @@ class RenameuserHooks { * @return bool */ public static function onShowMissingArticle( $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(); + $out = $article->getContext()->getOutput(); LogEventsList::showLogExtract( - $wgOut, + $out, 'renameuser', $page, '', @@ -53,4 +53,14 @@ class RenameuserHooks { } return true; } + + /** + * So users can just type in a username for target and it'll work + * @param array $types + * @return bool + */ + public static function onGetLogTypesOnUser( array &$types ) { + $types[] = 'renameuser'; + return true; + } } diff --git a/extensions/Renameuser/Renameuser.i18n.php b/extensions/Renameuser/Renameuser.i18n.php index c1411037..3cf2cfa7 100644 --- a/extensions/Renameuser/Renameuser.i18n.php +++ b/extensions/Renameuser/Renameuser.i18n.php @@ -328,7 +328,7 @@ $messages['as'] = array( 'renameuser' => 'ব্যৱহাৰকাৰীৰ নাম সলাওক', 'renameuser-linkoncontribs' => 'ব্যৱহাৰীৰ নাম সলাওক', 'renameuser-linkoncontribs-text' => 'এই ব্যৱহাৰকাৰীৰ পুনৰ্নামাকৰণ কৰক', - 'renameuser-desc' => "এজন ব্যৱহাৰকাৰীৰ পুনৰ্নামাকৰণ কৰিবলৈ এখন [[Special:Renameuser|বিশেষ পৃষ্ঠা]] যোগ দিয়ে (''renameuser'' অধিকাৰৰ প্ৰয়োজন)", + 'renameuser-desc' => "এজন ব্যৱহাৰকাৰীৰ পুনৰ্নামাকৰণ কৰিবলৈ এটা [[Special:Renameuser|বিশেষ পৃষ্ঠা]] যোগ দিয়ে (''renameuser'' অধিকাৰৰ প্ৰয়োজন)", 'renameuserold' => 'বৰ্তমানৰ সদস্যনাম:', 'renameusernew' => 'নতুন সদস্যনাম:', 'renameuserreason' => 'কাৰণ:', @@ -346,9 +346,9 @@ $messages['as'] = array( অনুগ্ৰহ কৰি ঘূৰি গৈ পুনৰ চেষ্টা কৰক।', 'renameuser-error-same-user' => 'আপুনি এজন সদস্যক আগৰ নামটোলৈকে নামান্তৰ কৰিব নোৱাৰে।', 'renameusersuccess' => '"$1" সদস্যজনক "$2"লৈ নামান্তৰিত কৰা হৈছে।', - 'renameuser-page-exists' => '$1 পৃষ্ঠাখন ইতিমধ্যেই আছে আৰু তাৰ ওপৰত স্বয়ংক্ৰিয়ভাৱে লিখিব নোৱাৰি।', - 'renameuser-page-moved' => "$1 পৃষ্ঠাখন $2-লৈ স্থানান্তৰ কৰা হ'ল।", - 'renameuser-page-unmoved' => '$1 পৃষ্ঠাখন $2-লৈ স্থানান্তৰ কৰা সম্ভৱ নহয়।', + 'renameuser-page-exists' => '$1 পৃষ্ঠাটো ইতিমধ্যেই আছে আৰু তাৰ ওপৰত স্বয়ংক্ৰিয়ভাৱে লিখিব নোৱাৰি।', + 'renameuser-page-moved' => "$1 পৃষ্ঠাটো $2-লৈ স্থানান্তৰ কৰা হ'ল।", + 'renameuser-page-unmoved' => '$1 পৃষ্ঠাটো $2-লৈ স্থানান্তৰ কৰা সম্ভৱ নহয়।', 'log-name-renameuser' => 'সদস্যৰ পুনৰ্নামাকৰণ অভিলেখ', 'log-description-renameuser' => 'সদস্যনাম পৰিৱৰ্তনৰ অভিলেখ', 'logentry-renameuser-renameuser-legacier' => 'সদস্য $4ৰ পৰা $5লৈ, $1’য়ে পুনৰ নামাকৰণ কৰিলে', @@ -790,12 +790,15 @@ A continuació es proporciona el registre de reanomenaments per a més informaci $messages['ce'] = array( 'renameuser' => 'Декъашхочун цӀе хийца', 'renameuser-linkoncontribs' => 'декъашхочун цӀе хийца', + 'renameuser-desc' => 'ТӀетуху декъашхойн цӀераш хийца [[Special:Renameuser|аьтту]] (оьшу бакъо renameuser)', 'renameuserreason' => 'Бахьан:', 'renameusersubmit' => 'Кхочушдé', 'renameuser-page-exists' => 'Агӏо $1 йолуш ю цундела и ша юху дӏаязъян йиш яц.', - 'renameuser-page-moved' => 'АгӀона $1 цӀе хийцина оцу $2.', + 'renameuser-page-moved' => 'АгӀона $1 цӀе хийцина → $2.', 'log-name-renameuser' => 'Декъашхойн цӀераш хийцар долу тептар', - 'renameuser-move-log' => 'Автоматически декъашхочун цӀе хийцина дела «[[User:$1|$1]]» оцу «[[User:$2|$2]]»', + 'log-description-renameuser' => 'ХӀокху тептар чохь гойту дӀабазбелла декъашхойн цӀераш хийцар.', + 'logentry-renameuser-renameuser-legacier' => '$1 $4 декъашхочун цӀе хийцина → $5', + 'renameuser-move-log' => 'Автоматически декъашхочун цӀе хийцина дела «[[User:$1|$1]]» → «[[User:$2|$2]]»', 'action-renameuser' => 'декъашхойн цӀераш хийцар', 'right-renameuser' => 'декъашхойн цӀераш хийцар', ); @@ -824,7 +827,7 @@ $messages['crh-latn'] = array( 'log-name-renameuser' => 'Qullanıcı adı deñişikligi jurnalı', ); -/** Czech (česky) +/** Czech (čeština) * @author Danny B. * @author Li-sung * @author Martin Kozák @@ -866,7 +869,7 @@ $messages['cs'] = array( Pro přehled je níže zobrazen výpis z knihy přejmenování uživatelů.', ); -/** Church Slavic (словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) +/** Church Slavic (словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) * @author Svetko * @author ОйЛ */ @@ -978,6 +981,7 @@ Til information er omdøbningsloggen vist nedenfor.', /** German (Deutsch) * @author Kghbln * @author Metalhead64 + * @author Purodha * @author Raimond Spekking * @author Spacebirdy * @author The Evil IP address @@ -1022,6 +1026,7 @@ Zur Information folgt das Benutzernamenänderungs-Logbuch.', /** Zazaki (Zazaki) * @author Aspar * @author Erdemaslancan + * @author Gorizon * @author Mirzali * @author Xoser */ @@ -1036,7 +1041,7 @@ $messages['diq'] = array( 'renameusermove' => 'nameyê karberan u pelê werêaameyişan bıkırışi nameyo newe', 'renameusersuppress' => 'Name de newi re hetenayışo newe vıraştış', 'renameuserreserve' => 'nameyê karberi yo verini bloke bıker.', - 'renameuserwarnings' => 'hişyariyi', + 'renameuserwarnings' => 'İğtari:', 'renameuserconfirm' => 'bele karberi newe ra name bıker', 'renameusersubmit' => 'bierşawê/biruşnê', 'renameuser-submit-blocklog' => 'Rocekanê bloqandê karbari bıvin', @@ -1722,6 +1727,7 @@ $messages['gu'] = array( /** Hebrew (עברית) * @author Amire80 + * @author Guycn2 * @author Ofekalef * @author Rotem Liss * @author Rotemliss @@ -1747,7 +1753,7 @@ $messages['he'] = array( 'renameusererrorexists' => 'המשתמש "$1" כבר קיים.', 'renameusererrorinvalid' => 'שם המשתמש "$1" אינו תקין.', 'renameuser-error-request' => 'הייתה בעיה בקבלת הבקשה. אנא חזרו לדף הקודם ונסו שנית.', - 'renameuser-error-same-user' => 'אינכם יכולים לשנות את שם המשתמש לשם זהה לשמו הישן.', + 'renameuser-error-same-user' => 'לא ניתן לשנות את שם המשתמש לשם זהה לשמו הישן.', 'renameusersuccess' => 'שם המשתמש של "$1" שונה ל"$2".', 'renameuser-page-exists' => 'הדף $1 כבר קיים ולא ניתן לדרוס אותו אוטומטית.', 'renameuser-page-moved' => 'הדף $1 הועבר לשם $2.', @@ -1758,7 +1764,7 @@ $messages['he'] = array( 'logentry-renameuser-renameuser-legacier' => '$1 {{GENDER:$2|שינה|שינתה}} את שם המשתמש $4 ל{{GRAMMAR:תחילית|$5}}', 'renameuser-move-log' => 'העברה אוטומטית בעקבות שינוי שם המשתמש "[[User:$1|$1]]" ל־"[[User:$2|$2]]"', 'action-renameuser' => 'לשנות שמות משתמש', - 'right-renameuser' => 'שינוי שמות משתמש', + 'right-renameuser' => 'שינוי שמות משתמשים', 'renameuser-renamed-notice' => 'שם המשתמש הזה שונה. יומן שינויי שמות המשתמש מוצג להלן.', ); @@ -1981,6 +1987,9 @@ Per favor retorna e reproba.', 'renameuser-page-moved' => 'Le pagina $1 ha essite renominate a $2.', 'renameuser-page-unmoved' => 'Le pagina $1 non poteva esser renominate a $2.', 'log-name-renameuser' => 'Registro de renominationes de usatores', + 'log-description-renameuser' => 'Isto es un registro de cambiamentos de nomines de usator.', + 'logentry-renameuser-renameuser' => '$1 {{GENDER:$2|renominava}} le usator $4 ({{PLURAL:$6|$6 modification|$6 modificationes}}) a $5', + 'logentry-renameuser-renameuser-legacier' => '$1 renominava le usator $4 a $5', 'renameuser-move-log' => 'Le pagina ha essite automaticamente renominate con le renomination del usator "[[User:$1|$1]]" a "[[User:$2|$2]]"', 'action-renameuser' => 'renominar usatores', 'right-renameuser' => 'Renominar usatores', @@ -2504,7 +2513,7 @@ $messages['ksh'] = array( 'renameusernew' => 'Dä neue Metmaacher-Name', 'renameuserreason' => 'Jrund för et Ömdäufe:', # Fuzzy 'renameusermove' => 'De Metmaachersigg met Klaaf- un Ungersigge op dä neue Metmaacher-Name ömstelle', - 'renameusersuppress' => 'Donn kein Ömleidung op dä neue Name aanlääje', + 'renameusersuppress' => 'Donn kein Ömleidong 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', @@ -2602,6 +2611,16 @@ $messages['la'] = array( Commodule notatio renominationum usoris subter datur.', ); +/** Ladino (Ladino) + * @author Menachem.Moreira + * @author Universal Life + */ +$messages['lad'] = array( + 'renameusernew' => 'Nombre de kullaneador muevo:', + 'renameuserreason' => 'Razon:', + 'renameuserwarnings' => 'Avisos:', +); + /** Luxembourgish (Lëtzebuergesch) * @author Les Meloures * @author Robby @@ -2681,6 +2700,22 @@ $messages['li'] = array( Relevante regels oet 't logbook staon hieónger.", ); +/** لوری (لوری) + * @author Bonevarluri + * @author Mogoeilor + */ +$messages['lrc'] = array( + 'renameusernew' => 'نوم کاروری تازه:', + 'renameuserreason' => 'دلیل:', + 'renameuser-submit-blocklog' => 'قلف پهرستنومه سی کارور نشو بیه', + 'renameuser-page-moved' => 'بلگه $1 د $2 جا وه جا بیه', + 'renameuser-page-unmoved' => 'نبوئه بلگه $1 د $2 جا وه جا بوئه', + 'log-name-renameuser' => 'پهرستنومه دواره نوم دئن د کارور', + 'log-description-renameuser' => 'یه پهرستنومه آلشت دئن نوم کاروریا هئ.', + 'renameuser-renamed-notice' => 'ای کارور یه گل نوم هنی وش دئه بیه. +پهرستنومه نوم هنی دئن وا سرچشمه زیر دروس بیه.', +); + /** Lithuanian (lietuvių) * @author Eitvys200 * @author Homo @@ -2820,7 +2855,7 @@ $messages['ml'] = array( 'renameuserold' => 'ഇപ്പോഴത്തെ ഉപയോക്തൃനാമം:', 'renameusernew' => 'പുതിയ ഉപയോക്തൃനാമം:', 'renameuserreason' => 'കാരണം:', - 'renameusermove' => 'നിലവിലുള്ള ഉപയോക്തൃതാളും, ഉപയോക്താവിന്റെ സം‌വാദം താളും (ഉപതാളുകൾ അടക്കം) പുതിയ നാമത്തിലേക്കു മാറ്റുക.', + 'renameusermove' => 'നിലവിലുള്ള ഉപയോക്തൃതാളും, ഉപയോക്താവിന്റെ സം‌വാദത്താളും (ഉപതാളുകൾ അടക്കം) പുതിയ നാമത്തിലേക്കു മാറ്റുക.', 'renameusersuppress' => 'പുതിയ നാമത്തിലേയ്ക്ക് തിരിച്ചുവിടലുകളൊന്നും സൃഷ്ടിക്കരുത്', 'renameuserreserve' => 'പഴയ ഉപയോക്തൃനാമം ഭാവിയിൽ ഉപയോഗിക്കുന്നതു തടയുക', 'renameuserwarnings' => 'മുന്നറിയിപ്പുകൾ:', @@ -2873,7 +2908,7 @@ $messages['mr'] = array( 'renameuserreserve' => 'जुने सदस्य खाते पुढील वापरासाठी अवरुद्ध करा', 'renameuserwarnings' => 'ताकीद:', 'renameuserconfirm' => 'होय, सदस्याचे नाव बदला', - 'renameusersubmit' => 'पाठवा', + 'renameusersubmit' => 'सादर करा', 'renameusererrordoesnotexist' => '"$1" नावाचा सदस्य अस्तित्वात नाही.', 'renameusererrorexists' => '"$1" नावाचा सदस्य अगोदरच अस्तित्वात आहे', 'renameusererrorinvalid' => '"$1" हे नाव चुकीचे आहे.', @@ -3459,9 +3494,12 @@ $messages['ps'] = array( 'renameuserold' => 'اوسنی کارن-نوم:', 'renameusernew' => 'نوی کارن-نوم:', 'renameuserreason' => 'سبب:', + 'renameusermove' => 'د کارن او د خبرو اترو مخونه (او د هغوی څېرمه مخونه) نوي نوم ته ورلېږدول', + 'renameusersuppress' => 'نوي نوم ته مخ گرځونی مه جوړوه', 'renameuserwarnings' => 'ګواښنې:', 'renameuserconfirm' => 'هو، کارن-نوم بدلوم', 'renameusersubmit' => 'سپارل', + 'renameuser-submit-blocklog' => 'د کارن بنديز يادښت ښکاره کول', 'renameusererrordoesnotexist' => 'د "$1" په نامه کوم کارن نه شته.', 'renameusererrorexists' => 'د "$1" په نامه يو کارن له پخوا نه شته.', 'renameusererrorinvalid' => 'د "$1" کارن نوم سم نه دی.', @@ -3593,6 +3631,13 @@ $messages['qu'] = array( Kay qatiqpiqa hukchay hallch'atam rikunki.", ); +/** Romansh (rumantsch) + * @author Kazu89 + */ +$messages['rm'] = array( + 'log-name-renameuser' => "Protocol da midadas da num d'utilisader", +); + /** Romani (Romani) * @author Desiphral */ @@ -3684,6 +3729,7 @@ L'archivije de le renomenaziune 'u iacchie aqquà sotte cumme referimende.", /** Russian (русский) * @author Ahonc + * @author Amire80 * @author Anonim.one * @author DCamer * @author DR @@ -3719,7 +3765,7 @@ $messages['ru'] = array( 'renameuser-page-unmoved' => 'Страница $1 не может быть переименована в $2.', 'log-name-renameuser' => 'Журнал переименований участников', 'log-description-renameuser' => 'Это журнал произведённых переименований зарегистрированных участников.', - 'logentry-renameuser-renameuser' => '$1 {{GENDER:$2|переименовал}} участника $4 ({{PLURAL:$6|$6 правка|$6 правки|$6 правок}}) в $5', + 'logentry-renameuser-renameuser' => '$1 {{GENDER:$2|переименовал}} участника $4 ({{PLURAL:$6|$6 правка|$6 правок|$6 правки}}) в $5', 'logentry-renameuser-renameuser-legacier' => '$1 переименовал пользователя $4 в $5', 'renameuser-move-log' => 'Автоматически в связи с переименованием учётной записи «[[User:$1|$1]]» в «[[User:$2|$2]]»', 'action-renameuser' => 'переименование участников', @@ -3889,10 +3935,43 @@ $messages['sgs'] = array( ); /** Serbo-Croatian (srpskohrvatski / српскохрватски) + * @author Kolega2357 * @author OC Ripper */ $messages['sh'] = array( + 'renameuser' => 'Promijeni ime korisnika', + 'renameuser-linkoncontribs' => 'preimenuj korisnika', + 'renameuser-linkoncontribs-text' => 'Preimenuj ovog korisnika', + 'renameuser-desc' => 'Preimenuj korisnika', # Fuzzy + 'renameuserold' => 'Trenutno korisničko ime:', + 'renameusernew' => 'Novo korisničko ime:', + 'renameuserreason' => 'Razlog:', + 'renameusermove' => 'Premjesti korisnikove stranice (glavnu, stranicu za razgovor i podstranice, ako postoje) na novo ime', + 'renameusersuppress' => 'Ne pravi preusmerenja na novo korisničko ime', + 'renameuserreserve' => 'Blokiraj staro korisničko ime za dalju upotrebu', + 'renameuserwarnings' => 'Upozorenja:', + 'renameuserconfirm' => 'Da, preimenuj korisnika', 'renameusersubmit' => 'Unesi', + 'renameuser-submit-blocklog' => 'Evidencija blokiranja za korisnika', + 'renameusererrordoesnotexist' => 'Korisničko ime "$1" ne postoji', + 'renameusererrorexists' => 'Korisničko ime "$1" već postoji', + 'renameusererrorinvalid' => 'Korisničko ime "$1" ne valja', + 'renameuser-error-request' => 'Nastao je problem prilikom primanja zahteva. +Molimo vas pokušajte ponovo.', + 'renameuser-error-same-user' => 'Ne možete preimenovati korisnika u isto ime kao i pre.', + 'renameusersuccess' => 'Korisnik "$1" je preimenovan u "$2"', + 'renameuser-page-exists' => 'Stranica $1 već postoji i ne može se automatski presnimiti.', + 'renameuser-page-moved' => 'Stranica $1 je premeštena na $2.', + 'renameuser-page-unmoved' => 'Strana $1 se ne može premestiti na $2.', + 'log-name-renameuser' => 'Evidencija preimenovanja', + 'log-description-renameuser' => 'Ovo je evidencija izmjena preimenovanja korisnika.', + 'logentry-renameuser-renameuser' => '$1 {{GENDER:$2|preimenovao}} korisnika $4 ({{PLURAL:$6|$6 edit|$6 edits}}) na $5', + 'logentry-renameuser-renameuser-legacier' => '$1 preimenovao korisnika $4 na $5', + 'renameuser-move-log' => 'Automatski premeštena stranica dok je korisnik "[[User:$1|$1]]" preimenovan u "[[User:$2|$2]]"', + 'action-renameuser' => 'preimenovanje korisnika', + 'right-renameuser' => 'preimenovanje korisničkih imena', + 'renameuser-renamed-notice' => 'Ovom korisniku je promenjeno ime. +Evidencija promena imena je priložena ispod, kao informacija.', ); /** Sinhala (සිංහල) @@ -4089,15 +4168,17 @@ $messages['sr-ec'] = array( 'renameuser-submit-blocklog' => 'Дневник блокирања за корисника', 'renameusererrordoesnotexist' => 'Корисник „$1“ не постоји.', 'renameusererrorexists' => 'Корисник „$1“ већ постоји.', - 'renameusererrorinvalid' => 'Погрешно корисничко име: "$1"', + 'renameusererrorinvalid' => 'Погрешно корисничко име: „$1“', 'renameuser-error-request' => 'Дошло је до проблема при примању захтева. Вратите се назад и покушајте поново.', 'renameuser-error-same-user' => 'Не можете преименовати корисника у исто име.', - 'renameusersuccess' => 'Корисник "$1" је преименован на "$2"', + 'renameusersuccess' => 'Корисник „$1“ је преименован на „$2“', 'renameuser-page-exists' => 'Страница $1 већ постоји и не може се заменити.', - 'renameuser-page-moved' => 'Страница $1 је премештена у $2.', + 'renameuser-page-moved' => 'Страница $1 је премештена на $2.', 'renameuser-page-unmoved' => 'Страница $1 не може да се премести на $2.', 'log-name-renameuser' => 'Дневник преименовања корисника', + 'log-description-renameuser' => 'Испод је списак преименованих корисника.', + 'logentry-renameuser-renameuser' => '$1 је {{GENDER:$2|преименовао|преименовала}} корисника $4 ({{PLURAL:$6|$6 измену|$6 измена}}) у $5', 'renameuser-move-log' => 'Премештене странице приликом преименовања корисника: „[[User:$1|$1]]“ у „[[User:$2|$2]]“.', 'action-renameuser' => 'преименовање корисника', 'right-renameuser' => 'преименовање корисничких имена', @@ -4132,12 +4213,14 @@ $messages['sr-el'] = array( 'renameusererrorinvalid' => 'Pogrešno korisničko ime: "$1"', '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 "$1" je preimenovan na "$2"', + 'renameusersuccess' => 'Korisnik „$1“ je preimenovan na „$2“', '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.', 'log-name-renameuser' => 'Dnevnik preimenovanja korisnika', - 'renameuser-move-log' => 'Automatski pomerene stranice prilikom preimenovanja korisničkog imena: „[[User:$1|$1]]“ u „[[User:$2|$2]]“.', + 'log-description-renameuser' => 'Ispod je spisak preimenovanih korisnika.', + 'logentry-renameuser-renameuser' => '$1 je {{GENDER:$2|preimenovao|preimenovala}} korisnika $4 ({{PLURAL:$6|$6 izmenu|$6 izmena}}) u $5', + 'renameuser-move-log' => 'Premeštene stranice prilikom preimenovanja korisnika: „[[User:$1|$1]]“ u „[[User:$2|$2]]“.', 'action-renameuser' => 'preimenovanje korisnika', 'right-renameuser' => 'preimenovanje korisničkih imena', 'renameuser-renamed-notice' => 'Ovom korisniku je promenjeno ime. @@ -4318,7 +4401,7 @@ $messages['te'] = array( 'renameuser-desc' => "వాడుకరి పేరు మార్చండి (''renameuser'' అన్న అధికారం కావాలి)", 'renameuserold' => 'ప్రస్తుత వాడుకరి పేరు:', 'renameusernew' => 'కొత్త వాడుకరి పేరు:', - 'renameuserreason' => 'పేరు మార్చడానికి కారణం:', # Fuzzy + 'renameuserreason' => 'కారణం:', 'renameusermove' => 'వాడుకరి పేజీ, చర్చాపేజీలను (వాటి ఉపపేజీలతో సహా) కొత్త పేరుకు తరలించండి', 'renameusersuppress' => 'కొత్త పేరుకి దారిమార్పులు సృష్టించకు', 'renameuserreserve' => 'పాత వాడుకరిపేరుని భవిష్యత్తులో వాడకుండా నిరోధించు', @@ -4534,6 +4617,7 @@ $messages['to'] = array( /** Turkish (Türkçe) * @author Joseph * @author Karduelis + * @author Marmase * @author Runningfridgesrule * @author Uğur Başak * @author Vito Genovese @@ -4545,7 +4629,7 @@ $messages['tr'] = array( '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:', # Fuzzy + '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', @@ -4639,9 +4723,10 @@ $messages['ur'] = array( /** Uzbek (oʻzbekcha) * @author CoderSI + * @author Sociologist */ $messages['uz'] = array( - 'log-name-renameuser' => 'Ishtirokchilarni qayta nomlash qaydlari', + 'log-name-renameuser' => 'Foydalanuvchilarni qayta nomlash qaydlari', ); /** vèneto (vèneto) @@ -4745,7 +4830,7 @@ $messages['vo'] = array( 'renameuser-desc' => "Votanemön gebani (gität: ''renameuser'' zesüdon)", 'renameuserold' => 'Gebananem anuik:', 'renameusernew' => 'Gebananem nulik:', - 'renameuserreason' => 'Kod votanemama:', # Fuzzy + 'renameuserreason' => 'Kod:', '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:', @@ -4836,13 +4921,15 @@ $messages['yo'] = array( ); /** Cantonese (粵語) + * @author Antonytse + * @author Liuxinyu970226 */ $messages['yue'] = array( 'renameuser' => '改用戶名', 'renameuser-desc' => "幫用戶改名 (需要 ''renameuser'' 權限)", 'renameuserold' => '現時嘅用戶名:', 'renameusernew' => '新嘅用戶名:', - 'renameuserreason' => '改名嘅原因:', # Fuzzy + 'renameuserreason' => '原因:', 'renameusermove' => '搬用戶頁同埋佢嘅對話頁(同埋佢哋嘅細頁)到新名', 'renameuserwarnings' => '警告:', 'renameuserconfirm' => '係,改呢個用戶名', diff --git a/extensions/Renameuser/Renameuser.php b/extensions/Renameuser/Renameuser.php index e9e83143..40636b54 100644 --- a/extensions/Renameuser/Renameuser.php +++ b/extensions/Renameuser/Renameuser.php @@ -48,4 +48,5 @@ $wgJobClasses['renameUser'] = 'RenameUserJob'; $wgHooks['ShowMissingArticle'][] = 'RenameuserHooks::onShowMissingArticle'; $wgHooks['ContributionsToolLinks'][] = 'RenameuserHooks::onContributionsToolLinks'; +$wgHooks['GetLogTypesOnUser'][] = 'RenameuserHooks::onGetLogTypesOnUser'; diff --git a/extensions/Renameuser/RenameuserSQL.php b/extensions/Renameuser/RenameuserSQL.php index eeb879a0..153cac88 100644 --- a/extensions/Renameuser/RenameuserSQL.php +++ b/extensions/Renameuser/RenameuserSQL.php @@ -112,6 +112,7 @@ class RenameuserSQL { if ( !$dbw->affectedRows() && $this->checkIfUserExists ) { $dbw->rollback(); + wfProfileOut( __METHOD__ ); return false; } @@ -221,7 +222,7 @@ class RenameuserSQL { } if ( count( $jobs ) > 0 ) { - Job::safeBatchInsert( $jobs ); // don't commit yet + JobQueueGroup::singleton()->push( $jobs, JobQueue::QOS_ATOMIC ); // don't commit yet } // Commit the transaction diff --git a/extensions/Renameuser/specials/SpecialRenameuser.php b/extensions/Renameuser/specials/SpecialRenameuser.php index d869e2a8..f6b9bac1 100644 --- a/extensions/Renameuser/specials/SpecialRenameuser.php +++ b/extensions/Renameuser/specials/SpecialRenameuser.php @@ -58,7 +58,7 @@ class SpecialRenameuser extends SpecialPage { } $out->addHTML( - Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getTitle()->getLocalUrl(), 'id' => 'renameuser' ) ) . + Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getPageTitle()->getLocalUrl(), 'id' => 'renameuser' ) ) . Xml::openElement( 'fieldset' ) . Xml::element( 'legend', null, $this->msg( 'renameuser' )->text() ) . Xml::openElement( 'table', array( 'id' => 'mw-renameuser-table' ) ) . diff --git a/extensions/SpamBlacklist/SpamBlacklist.i18n.php b/extensions/SpamBlacklist/SpamBlacklist.i18n.php index af397dba..3dd1a487 100644 --- a/extensions/SpamBlacklist/SpamBlacklist.i18n.php +++ b/extensions/SpamBlacklist/SpamBlacklist.i18n.php @@ -56,7 +56,7 @@ $messages['en'] = array( 'spam-blacklist-desc' => 'Regex-based anti-spam tool allowing to blacklist URLs in pages and email addresses for registered users', 'log-name-spamblacklist' => 'Spam blacklist log', 'log-description-spamblacklist' => 'These events track spam blacklist hits.', - 'logentry-spamblacklist-hit' => '$1 caused a spam blacklist hit on $3 by attempting to add $4.', + 'logentry-spamblacklist-hit' => '{{GENDER:$2|$1}} caused a spam blacklist hit on $3 by attempting to add $4.', 'right-spamblacklistlog' => 'View spam blacklist log', 'action-spamblacklistlog' => 'view the spam blacklist log', ); @@ -88,10 +88,8 @@ Parameters: 'log-description-spamblacklist' => 'Description of spam blacklist log', 'logentry-spamblacklist-hit' => 'Log entry that is created when a user adds a link that is blacklisted on the spam blacklist. -Parameters: -* $1 - a user link, for example "Jane Doe (Talk | contribs)" -* $2 - (Optional) a username. Can be used for GENDER -* $3 - the page the user attempted to edit +{{logentry}} +Additional parameters: * $4 - the URL the user tried to add', 'right-spamblacklistlog' => '{{doc-right|spamblacklistlog}}', 'action-spamblacklistlog' => '{{doc-action|spamblacklistlog}}', @@ -144,6 +142,7 @@ $messages['an'] = array( ); /** Arabic (العربية) + * @author Asaifm * @author Meno25 * @author OsamaK */ @@ -167,8 +166,15 @@ $messages['ar'] = array( # * كل سطر غير فارغ هو تعبير منتظم يطابق فقط المضيفين داخل الوصلات الخارجية #
      ', + 'spam-blacklisted-email' => 'هذا البريد الإلكتروني مدرج في القائمة السوداء', + 'spam-blacklisted-email-text' => 'بريدك الإلكتروني مدرج في القائمة السوداء وبناءً على ذلك لا يمكنك استخدامه لإرسال رسائل للمستخدمين الأخرين.', + 'spam-blacklisted-email-signup' => 'هذا البريد الإلكتروني مدرج في القائمة السوداء وممنوع من الإستخدام.', 'spam-invalid-lines' => '{{PLURAL:$1||السطر التالي|السطران التاليان|السطور التالية}} في قائمة السبام السوداء {{PLURAL:$1|ليس تعبيرًا منتظمًا صحيحًا|ليسا تعبيرين منتظمين صحيحين|ليست تعبيرات منتظمة صحيحة}} و{{PLURAL:$1||يحتاج|يحتاجان|تحتاج}} إلى أن {{PLURAL:$1||يصحح|يصححان|تصحح}} قبل حفظ الصفحة:', - 'spam-blacklist-desc' => 'أداة ضد السبام تعتمد على التعبيرات المنتظمة: [[MediaWiki:Spam-blacklist]] و [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'spam-blacklist-desc' => 'أداة ضد السخام تعتمد على التعبيرات النمطية وتسمح بمنع روابط في الصفحات وعنواين البريد الإلكتروني للمستخدمين المسجلين', + 'log-name-spamblacklist' => 'سجل السخام المدرج على القائمة السوداء', + 'log-description-spamblacklist' => 'هذا الأحداث توثق مشاهدات القائمة السوداء للسخام.', + 'right-spamblacklistlog' => 'اعرض سجل السخام المدرج على القائمة السوداء', + 'action-spamblacklistlog' => 'اعرض سجل السخام المدرج على القائمة السوداء', ); /** Egyptian Spoken Arabic (مصرى) @@ -248,16 +254,16 @@ $messages['as'] = array( * @author Xuacu */ $messages['ast'] = array( - 'spam-blacklist' => ' # Les URLs que casen con esta llista se bloquiarán cuando s\'añadan a una páxina. - # Esta llista afeuta namái a esta wiki; mira tamién la llista negra global. - # Pa ver la documentación visita https://www.mediawiki.org/wiki/Extension:SpamBlacklist - #
      +	'spam-blacklist' => '# 
      +# Les URLs esternes que casen con esta llista bloquiaránse cuando s\'amiesten a una páxina.
      +# Esta llista afeuta namái a esta wiki; mire tamién la llista negra global.
      +# Pa ver la documentación vea https://www.mediawiki.org/wiki/Extension:SpamBlacklist
       #
       # La sintaxis ye ésta:
       #  * Tol testu dende un caráuter "#" hasta lo cabero la llinia ye un comentariu
       #  * Toa llinia non balera ye un fragmentu regex qu\'afeuta namái a los sirvidores de les URLs
       
      - #
      ', +#
      ', 'spam-whitelist' => ' #
       # Les URLs esternes d\'esta llista *nun* se bloquiarán inda si quedaríen bloquiaes
       # por una entrada na llista negra.
      @@ -317,7 +323,7 @@ $messages['ba'] = array(
       # * # хәрефенән башлап юл аҙағына тиклем барыһы ла иҫкәрмә тип иҫәпләнә
       # * Һәр буш булмаған юл URL эсендәге төйөнгә генә ҡулланылған регуляр аңлатманың өлөшө булып тора
       #
      ', - 'spam-invalid-lines' => 'Түбәндәге ҡара исемлек {{PLURAL:$1|юлында|юлдарында}} хаталы регуляр {{PLURAL:$1|аңлатма|аңлатмалар}} бар һәм {{PLURAL:$1|ул|улар}} битте һаҡлар алдынан төҙәтелергә тейеш:', + 'spam-invalid-lines' => 'Түбәндәге ҡара исемлек {{PLURAL:$1|1=юлында|юлдарында}} хаталы регуляр {{PLURAL:$1|1=аңлатма|аңлатмалар}} бар һәм {{PLURAL:$1|1=ул|улар}} битте һаҡлар алдынан төҙәтелергә тейеш:', # Fuzzy 'spam-blacklist-desc' => 'Регуляр аңлатмаларға нигеҙләнгән спамға ҡаршы ҡорал: [[MediaWiki:Spam-blacklist]] һәм [[MediaWiki:Spam-whitelist]]', # Fuzzy ); @@ -427,7 +433,7 @@ $messages['be-tarask'] = array( 'spam-blacklisted-email' => 'Адрасы электроннай пошты з чорнага сьпісу', 'spam-blacklisted-email-text' => 'З Вашага адрасу электроннай пошты ў цяперашні момант забаронена дасылаць электронныя лісты іншым удзельнікам.', 'spam-blacklisted-email-signup' => 'Пададзены Вамі адрас электроннай пошты ў цяперашні момант знаходзіцца ў чорным сьпісе.', - 'spam-invalid-lines' => '{{PLURAL:$1|Наступны радок чорнага сьпісу ўтрымлівае няслушны рэгулярны выраз|Наступныя радкі чорнага сьпісу ўтрымліваюць няслушныя рэгулярныя выразы}} і {{PLURAL:$1|павінен быць|павінныя быць}} выпраўлены перад захаваньнем старонкі:', + 'spam-invalid-lines' => '{{PLURAL:$1|1=Наступны радок чорнага сьпісу ўтрымлівае няслушны рэгулярны выраз|Наступныя радкі чорнага сьпісу ўтрымліваюць няслушныя рэгулярныя выразы}} і {{PLURAL:$1|1=павінен быць|павінныя быць}} выпраўлены перад захаваньнем старонкі:', # Fuzzy 'spam-blacklist-desc' => 'Антыспамавы інструмэнт, які базуецца на рэгулярных выразах: [[MediaWiki:Spam-blacklist]] і [[MediaWiki:Spam-whitelist]]', # Fuzzy ); @@ -447,6 +453,7 @@ $messages['bjn'] = array( ); /** Bengali (বাংলা) + * @author Aftab1995 * @author Bellayet * @author Nasir8891 * @author Zaheen @@ -477,6 +484,10 @@ $messages['bn'] = array( 'spam-blacklisted-email-signup' => 'আপনার লেখা ইমেইল ঠিকানাটি কালোতালিকাভুক্ত।', 'spam-invalid-lines' => 'নিচের স্প্যাম কালোতালিকার {{PLURAL:$1|লাইন|লাইনগুলি}} অবৈধ রেগুলার {{PLURAL:$1|এক্সপ্রেশন|এক্সপ্রেশন}} ধারণ করছে এবং পাতাটি সংরক্ষণের আগে এগুলি ঠিক করা {{PLURAL:$1|প্রয়োজন|প্রয়োজন}}:', 'spam-blacklist-desc' => 'রেজেক্স-ভিত্তিক স্প্যামরোধী সরঞ্জাম: [[MediaWiki:Spam-blacklist]] এবং [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'log-name-spamblacklist' => 'স্প্যাম কালোতালিকা লগ', + 'log-description-spamblacklist' => 'এই ঘটনাগুলি স্প্যাম কালোতালিকার হিট অনুসরণ।', + 'right-spamblacklistlog' => 'স্প্যাম কালোতালিকা লগ দেখুন', + 'action-spamblacklistlog' => 'স্প্যাম কালোতালিকা লগ দেখুন', ); /** Breton (brezhoneg) @@ -588,6 +599,15 @@ $messages['ca'] = array( 'spam-blacklist-desc' => 'Eina anti-spam basada en regexp: [[MediaWiki:Spam-blacklist]] i [[MediaWiki:Spam-whitelist]]', # Fuzzy ); +/** Chechen (нохчийн) + * @author Умар + */ +$messages['ce'] = array( + 'spam-blacklist-desc' => 'Анти-спам гӀирс URL дӀакъовла таро хуьлуьйту агӀонашкахь а электронан почтехь а дӀабазбелачу декъашхошна', + 'log-name-spamblacklist' => 'Спам-кехатан тептар', + 'log-description-spamblacklist' => 'Спам-кехато зулам долоре хьожу тептар.', +); + /** Sorani Kurdish (کوردی) * @author Calak */ @@ -595,7 +615,7 @@ $messages['ckb'] = array( 'right-spamblacklistlog' => 'دیتنی لۆگی پێرستی ڕەشی ڕیکلام', ); -/** Czech (česky) +/** Czech (čeština) * @author Li-sung * @author Matěj Grabovský * @author Mormegil @@ -642,7 +662,12 @@ $messages['cs'] = array( 'spam-blacklisted-email-text' => 'Vaše e-mailová adresa je momentálně uvedena na černé listině, takže ostatním uživatelům nemůžete posílat e-maily.', 'spam-blacklisted-email-signup' => 'Uvedená e-mailová adresa je v současné době na černé listině.', 'spam-invalid-lines' => 'Na černé listině spamu {{PLURAL:$1|je následující řádka neplatný regulární výraz|jsou následující řádky neplatné regulární výrazy|jsou následující řádky regulární výrazy}} a je nutné {{PLURAL:$1|ji|je|je}} před uložením stránky opravit :', - 'spam-blacklist-desc' => 'Antispamový nástroj na základě regulárních výrazů: [[MediaWiki:Spam-blacklist]] a [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'spam-blacklist-desc' => 'Antispamový nástroj na základě regulárních výrazů umožňující zakázat URL ve stránkách a e-mailových adresách registrovaných uživatelů', + 'log-name-spamblacklist' => 'Kniha protispamové černé listiny', + 'log-description-spamblacklist' => 'Tyto události sledují zásahy protispamové černé listiny.', + 'logentry-spamblacklist-hit' => '{{GENDER:$2|Uživateli|Uživatelce}} $1 zabránila protispamová černá listina přidat $4 na stránku $3.', + 'right-spamblacklistlog' => 'Prohlížení knihy protispamové černé listiny', + 'action-spamblacklistlog' => 'prohlížet knihu protispamové černé listiny', ); /** Welsh (Cymraeg) @@ -700,6 +725,7 @@ $messages['cy'] = array( 'log-description-spamblacklist' => "Mae'r digwyddiadau hyn yn cofnodi trawiadau ar y rhestr sbam waharddedig.", 'logentry-spamblacklist-hit' => 'Fe geisiodd $1 ychwanegu $4 sydd ar y rhestr waharddedig $3.', 'right-spamblacklistlog' => 'Gallu gweld lòg y rhestr sbam waharddedig', + 'action-spamblacklistlog' => 'gweld lòg rhestr y sbam gwaharddedig', ); /** Danish (dansk) @@ -742,7 +768,7 @@ $messages['da'] = array( # * hver ikke-tomme linjer anvendes som regulære udtryk for at matcha domænenavne i webadresser #
      ', 'spam-blacklisted-email' => 'Sortlistet e-mailadresse', - 'spam-blacklisted-email-text' => 'Din e-mailadresse er i øjeblikket blokeret for at sende e-mails til andre brugere.', + 'spam-blacklisted-email-text' => 'Din e-mailadresse er i øjeblikket blokeret fra at sende e-mails til andre brugere.', 'spam-blacklisted-email-signup' => 'Den angivne e-mailadresse er i øjeblikket blokeret for brug.', 'spam-invalid-lines' => 'Følgende {{PLURAL:$1|linje|linjer}} i spamsortelisten er {{PLURAL:$1|et ugyldigt regulært udtryk|ugyldige regulære udtryk}} og må rettes før lagring af siden:', 'spam-blacklist-desc' => 'Antispamværktøj baseret på regulære udtryk der giver mulighed for at sortliste URLs i sider og e-mailadresser for registrerede brugere', @@ -802,7 +828,7 @@ $messages['de'] = array( 'spam-blacklisted-email-text' => 'Deine E-Mail-Adresse ist derzeit für das Senden von E-Mail-Nachrichten an andere Benutzer blockiert.', 'spam-blacklisted-email-signup' => 'Die angegebene E-Mail-Adresse ist derzeit für das Senden von E-Mail-Nachrichten an andere Benutzer blockiert.', 'spam-invalid-lines' => 'Die {{PLURAL:$1|folgende Zeile|folgenden Zeilen}} in der Blockierliste {{PLURAL:$1|ist ein ungültiger regulärer Ausdruck|sind ungültige reguläre Ausdrücke}}. Sie {{PLURAL:$1|muss|müssen}} vor dem Speichern der Seite korrigiert werden:', - 'spam-blacklist-desc' => 'Ein auf regulären Ausdrücken basiertes Anti-Spam-Werkzeug, um URLs in Seiten und E-Mail-Adressen für registrierte Benutzer auf die schwarze Liste zu setzen', + 'spam-blacklist-desc' => 'Ergänzt ein auf reguläre Ausdrücke gestütztes Anti-Spam-Werkzeug zum Sperren von URLs und E-Mail-Adressen für das Einfügen durch registrierte Benutzer', 'log-name-spamblacklist' => 'Spam-Blacklist-Logbuch', 'log-description-spamblacklist' => 'Es folgt ein Logbuch von Spam-Blacklist-Treffern.', 'logentry-spamblacklist-hit' => '$1 verursachte einen Spam-Blacklist-Treffer auf „$3“ durch das versuchte Hinzufügen von $4.', @@ -836,6 +862,7 @@ $messages['de-formal'] = array( /** Zazaki (Zazaki) * @author Aspar * @author Erdemaslancan + * @author Marmase * @author Olvörg */ $messages['diq'] = array( @@ -877,7 +904,7 @@ $messages['diq'] = array( 'spam-blacklisted-email-text' => 'Nıka adresa e-postayê to qande karberê bini ra mesac riştene listeyê siya dero.', 'spam-blacklisted-email-signup' => 'E-posta adresiyo ke deyayo karkerdışe cı newke groto siyaliste.', 'spam-invalid-lines' => 'na qerelisteya spami {{PLURAL:$1|satır|satıran}} {{PLURAL:$1|nemeqbulo|nemeqbuli}};', - 'spam-blacklist-desc' => 'Regex-tabanlı anti-spam aracı: [[MediaWiki:Spam-blacklist]] ve [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'spam-blacklist-desc' => "Regex-tabanın haleta anti-spami URL'ya perer u adresa e-posta qande karberande qeydınan geriyayo", ); /** Lower Sorbian (dolnoserbski) @@ -905,7 +932,7 @@ $messages['dsb'] = array( # ', 'spam-blacklisted-email' => 'Blokěrowana e-mailowa adresa', 'spam-invalid-lines' => '{{PLURAL:$1|Slědujuca smužka|Slědujucej smužce|Slědujuce smužki|Slědujuce smužki}} corneje lisćiny spama {{PLURAL:$1|jo njepłaśiwy regularny wuraz|stej njepłaśiwej regularnej wuraza|su njepłaśiwe regularne wuraze|su njepłaśiwe regularne wuraze}} a {{PLURAL:$1|musy|musytej|muse|muse}} se korigěrowaś, pjerwjej až składujoš bok:', - 'spam-blacklist-desc' => 'Antispamowy rěd na zakłaźe regularnych wurazow: [[MediaWiki:Spam-blacklist]] a [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'spam-blacklist-desc' => 'Pśeśiwospamowy rěd na zakłaźe Regex, kótaryž zmóznja URL na bokach a e-mailowe adresy za zregistrěrowanych wužywarjow do carneje lisćiny stajiś', ); /** Greek (Ελληνικά) @@ -1079,9 +1106,14 @@ $messages['et'] = array( # * Iga rida, mis ei ole tühi, on regulaaravaldise osa, mis vastab ainult e-posti aadressides sisalduvatele hostinimedele.', 'spam-blacklisted-email' => 'Musta nimekirja kantud e-posti aadress', 'spam-blacklisted-email-text' => 'Musta nimekirja sissekande tõttu on sinu e-posti aadressilt teistele kasutajatele e-kirjade saatmine praegu keelatud.', - 'spam-blacklisted-email-signup' => 'Selle e-posti aadressi kasutamine praegu musta nimekirja sissekandega keelatud.', + 'spam-blacklisted-email-signup' => 'Selle e-posti aadressi kasutamine on praegu musta nimekirja sissekandega keelatud.', 'spam-invalid-lines' => '{{PLURAL:$1|Järgmine rida|Järgmised read}} rämpspostituste mustas nimekirjas on {{PLURAL:$1|vigane regulaaravaldis|vigased regulaaravaldised}} ja {{PLURAL:$1|see|need}} tuleb enne lehekülje salvestamist parandada:', 'spam-blacklist-desc' => 'Regulaaravaldisel põhinev tööriist, mis võimaldab lisada musta nimekirja lehekülgedel toodud internetiaadresse ning registreeritud kasutajate e-posti aadresse.', + 'log-name-spamblacklist' => 'Rämpsu musta nimekirja logi', + 'log-description-spamblacklist' => 'Siin on loetletud rämpspostituse musta nimekirja tabamused.', + 'logentry-spamblacklist-hit' => '$1 püüdis lisada leheküljele $3 rämpspostituse mustas nimekirjas olevat linki $4.', + 'right-spamblacklistlog' => 'Vaadata rämpsu musta nimekirja', + 'action-spamblacklistlog' => 'vaadata rämpsu musta nimekirja', ); /** Persian (فارسی) @@ -1104,28 +1136,35 @@ $messages['fa'] = array( # در فهرست سیاه قرار داشته باشند. # # ', - 'email-blacklist' => ' # از ثبت نام یا ارسال نامه توسط نشانی‌های پست الکترونیکی که با این فهرست مطابقت کنند جلوگیری می‌شود. + 'email-blacklist' => ' # از ثبت نام یا ارسال نامه توسط نشانی‌های رایانامه‌ای که با این فهرست مطابقت کنند جلوگیری می‌شود. # این فهرست فقط روی همین ویکی اثر دارد؛ به فهرست سیاه سراسری نیز مراجعه کنید. # برای مستندات به https://www.mediawiki.org/wiki/Extension:SpamBlacklist مراجعه کنید #
       # دستورات به این شکل هستند:
       #  * همه چیز از «#» تا پایان سطر به عنوان توضیح در نظر گرفته می‌شود
      -#  * هر سطر از متن به عنوان یک دستور از نوع عبارت باقاعده در نظر گرفته می‌شود که فقط با نام میزبان در نشانی پست الکترونیکی مطابقت داده می‌شود
      +#  * هر سطر از متن به عنوان یک دستور از نوع عبارت باقاعده در نظر گرفته می‌شود که فقط با نام میزبان در نشانی رایانامه مطابقت داده می‌شود
       
        #
      ', 'email-whitelist' => ' #
      -# نشانی‌های پست الکترونیکی که با این فهرست مطابقت کنند محدود *نمی‌شوند* حتی اگر
      +# نشانی‌های رایانامه که با این فهرست مطابقت کنند محدود *نمی‌شوند* حتی اگر
       # با فهرست سیاه مطابقت داشته باشند.
       #
        #
      # دستورات به این شکل هستند: # * همه چیز از «#» تا پایان سطر به عنوان توضیح در نظر گرفته می‌شود -# * هر سطر از متن به عنوان یک دستور از نوع عبارت باقاعده در نظر گرفته می‌شود که فقط با نام میزبان در نشانی پست الکترونیکی مطابقت داده می‌شود', - 'spam-blacklisted-email' => 'نشانی پست الکترونیکی موجود در لیست سیاه', - 'spam-blacklisted-email-text' => 'نشانی پست الکترونیکی شما در حال حاضر در فهرست سیاه قرار دارد و نمی‌توانید به دیگر کاربران نامه بفرستید.', - 'spam-blacklisted-email-signup' => 'نشانی پست الکترونیکی داده شده در حال حاضر در فهرست سیاه است و قابل استفاده نیست.', +# * هر سطر از متن به عنوان یک دستور از نوع عبارت باقاعده در نظر گرفته می‌شود که فقط با نام میزبان در نشانی رایانامه مطابقت داده می‌شود', + 'spam-blacklisted-email' => 'نشانی رایانامه موجود در فهرست سیاه', + 'spam-blacklisted-email-text' => 'نشانی رایانامهٔ شما در حال حاضر در فهرست سیاه قرار دارد و نمی‌توانید به دیگر کاربران نامه بفرستید.', + 'spam-blacklisted-email-signup' => 'نشانی رایانامه داده‌شده در حال حاضر در فهرست سیاه است.', 'spam-invalid-lines' => '{{PLURAL:$1|سطر|سطرهای}} زیر در فهرست سیاه هرزنگاری، عبارات باقاعدهٔ نامجاز {{PLURAL:$1|است|هستند}} و قبل از ذخیره کردن صفحه باید اصلاح {{PLURAL:$1|شود|شوند}}:', - 'spam-blacklist-desc' => 'ابزار ضد هرزنویسی مبتنی بر regular expressions: [[MediaWiki:Spam-blacklist]] و [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'spam-blacklist-desc' => 'Regex-based anti-spam tool allowing to blacklist URLs in pages and email addresses for registered users + +ابزار بر پایهٔ عبارت باقاعده ضدهرزنگاری اجازهٔ فهرست سیاه‌کردن نشانی‌های اینترنتی در صفحه‌ها و نشانی‌های رایانامه برای کاربران ثبت نام کرده', + 'log-name-spamblacklist' => 'سیاههٔ فهرست سیاه هرزنگاری', + 'log-description-spamblacklist' => 'این رویدادها وقوع فهرست سیاه هزنگاری را دنبال می‌کند.', + 'logentry-spamblacklist-hit' => '$1 در $3 با تلاش در افزودن $4 باعث برخورد به فهرست سیاه هرزنامه شده‌است.', + 'right-spamblacklistlog' => 'دیدن یک سیاههٔ فهرست سیاه هرزنامه', + 'action-spamblacklistlog' => 'دیدن سیاههٔ فهرست سیاه هرزنامه', ); /** Finnish (suomi) @@ -1229,7 +1268,7 @@ $messages['fr'] = array( 'spam-blacklist-desc' => 'Outil anti-pourriel basé sur des expressions rationnelles permettant de mettre en liste noire des URLs dans les pages et des adresses de courriel pour les utilisateurs enregistrés', 'log-name-spamblacklist' => 'Journal de liste noire des pourriels', 'log-description-spamblacklist' => 'Ces événements tracent les correspondances avec la liste noire des pourriels.', - 'logentry-spamblacklist-hit' => '$1 a provoqué un correspondance avec la liste noire des pourriels sur $3 en essayant d’ajouter $4.', + 'logentry-spamblacklist-hit' => '{{GENDER:$2|$1}} a provoqué une correspondance avec la liste noire des pourriels sur $3 en essayant d’ajouter $4.', 'right-spamblacklistlog' => 'Afficher le journal de la liste noire des pourriels', 'action-spamblacklistlog' => 'afficher le journal de la liste noir des pourriels', ); @@ -1567,7 +1606,7 @@ $messages['hsb'] = array( 'spam-blacklisted-email-text' => 'Twoja e-mejlowa adresa je tuchwilu w čornej lisćinje a tohodla za słanje e-mejlow do druhich wužiwarjow zablokowana.', 'spam-blacklisted-email-signup' => 'Podata e-mejlowa adresa je tuchwilu přećiwo wužiwanju zablokowana.', 'spam-invalid-lines' => '{{PLURAL:$1|slědowaca linka je njepłaćiwy regularny wuraz|slědowacych linkow je regularny wuraz|slědowace linki su regularne wurazy|slědowacej lince stej regularnej wurazaj}} a {{PLURAL:$1|dyrbi|dyrbi|dyrbja|dyrbjetej}} so korigować, prjedy hač so strona składuje:', - 'spam-blacklist-desc' => 'Přećiwospamowy nastroj na zakładźe Regex: [[MediaWiki:Spam-blacklist]] a [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'spam-blacklist-desc' => 'Přećiwospamowy nastroj na zakładźe Regex, kotryž zmóznja URL na stronach a e-mejlowe adresy za zregistrowanych wužiwarjow do čorneje lisćiny stajić', ); /** Hungarian (magyar) @@ -1644,7 +1683,12 @@ $messages['ia'] = array( 'spam-blacklisted-email-text' => 'Tu adresse de e-mail es actualmente blocate de inviar messages a altere usatores.', 'spam-blacklisted-email-signup' => 'Le adresse de e-mail specificate es actualmente blocate per le lista nigre.', 'spam-invalid-lines' => 'Le sequente {{PLURAL:$1|linea|lineas}} del lista nigre antispam es {{PLURAL:$1|un expression|expressiones}} regular invalide e debe esser corrigite ante que tu immagazina le pagina:', - 'spam-blacklist-desc' => 'Instrumento antispam a base de regex: [[MediaWiki:Spam-blacklist]] e [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'spam-blacklist-desc' => 'Instrumento antispam a base de regex que permitte blocar URLs in paginas e adresses de e-mail pro usatores registrate', + 'log-name-spamblacklist' => 'Registro del lista nigre de spam', + 'log-description-spamblacklist' => 'Iste eventos tracia le activationes del lista nigre de spam.', + 'logentry-spamblacklist-hit' => '{{GENDER:$2|$1}} ha provocate un activation del lista nigre de spam sur $3 con su tentativa de inserer $4.', + 'right-spamblacklistlog' => 'Vider le registro del lista nigre de spam', + 'action-spamblacklistlog' => 'vider le registro del lista nigre de spam', ); /** Indonesian (Bahasa Indonesia) @@ -1719,7 +1763,12 @@ $messages['ilo'] = array( 'spam-blacklisted-email-text' => 'Ti e-suratmo a pagtaengan ket agdama a naiparit manipud ti panagipatulod kadagiti e-surat kadagiti sabsabali nga agar-aramat.', 'spam-blacklisted-email-signup' => 'Ti naited nga e-surat a pagatengan ket agdama a naiparit manipud ti panagusar.', 'spam-invalid-lines' => 'Ti sumaganad a spam blacklist {{PLURAL:$1| a linia ket|kadagiti linia ket}} imbalido a kadawyan {{PLURAL:$1|a nangisao|kadagiti panangisao}} ken {{PLURAL:$1|masapsapol|masapol}} a mapudnuan sakbay nga idulin ti panid:', - 'spam-blacklist-desc' => 'Naibantay ti regex kontra-spam a ramit: [[MediaWiki:Spam-blacklist]] ken [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'spam-blacklist-desc' => 'Naibatay ti regex a ramit ti kontra-spam a mangpalubos a mangiparit kadagiti URL kadagiti panid ken dagiti esurat a pagtaengan para kadagiti nakarehistro nga agar-aramat', + 'log-name-spamblacklist' => 'Listaan ti naiparit para iti spam', + 'log-description-spamblacklist' => 'Dagitoy a pasamak ket surotenna dagiti naiparit a listaan a napuntaan ti spam.', + 'logentry-spamblacklist-hit' => 'Ti $1 ket gapuanan ti pannakapunta ti naiparit a listaan ti spam iti $3 babaen ti panagpadas nga aginayon iti $4.', + 'right-spamblacklistlog' => 'Kitaen ti naiparit a listaan ti spam', + 'action-spamblacklistlog' => 'kitaen ti naiparit a listaan ti spam', ); /** Icelandic (íslenska) @@ -1873,7 +1922,7 @@ $messages['ja'] = array( 'spam-blacklist-desc' => 'ページ内の URL や登録利用者のメールアドレスをブラックリスト化できるようにする、正規表現に基づいたスパム対策ツール', 'log-name-spamblacklist' => 'スパムブラックリスト記録', 'log-description-spamblacklist' => 'これらのイベントはスパムブラックリストとの一致を追跡します。', - 'logentry-spamblacklist-hit' => '$1 が $3 に $4 を追加しようとした際にスパムブラックリストが発動しました。', + 'logentry-spamblacklist-hit' => '{{GENDER:$2|$1}} が $3 に $4 を追加しようとした際にスパムブラックリストが発動しました。', 'right-spamblacklistlog' => 'スパムブラックリストを閲覧', 'action-spamblacklistlog' => 'スパムブラックリスト記録の閲覧', ); @@ -2207,6 +2256,15 @@ $messages['li'] = array( 'spam-blacklist-desc' => 'Antispamfunctionaliteit via reguliere expressies: [[MediaWiki:Spam-blacklist]] en [[MediaWiki:Spam-whitelist]]', # Fuzzy ); +/** لوری (لوری) + * @author Bonevarluri + */ +$messages['lrc'] = array( + 'log-name-spamblacklist' => 'پهرستنومه نوم گه سئ اسپم', + 'right-spamblacklistlog' => 'دیئن پهرستنومه نوم گه سئ اسپم', + 'action-spamblacklistlog' => 'دیئن پهرستنومه نوم گه سئ اسپم', +); + /** Minangkabau (Baso Minangkabau) * @author Iwan Novirion */ @@ -2312,7 +2370,12 @@ $messages['ml'] = array( 'spam-blacklisted-email-text' => 'താങ്കളുടെ ഇമെയിൽ വിലാസം ഇപ്പോൾ മറ്റുള്ളവർക്ക് എഴുത്തയക്കാനാവാത്ത കരിമ്പട്ടികയിൽ ഉൾപ്പെട്ടിരിക്കുന്നു.', 'spam-blacklisted-email-signup' => 'നൽകിയ ഇമെയിൽ വിലാസം ഇപ്പോൾ കരിമ്പട്ടികയിൽ പെട്ടിരിക്കുന്ന ഒന്നാണ്.', 'spam-invalid-lines' => 'താഴെ കൊടുത്തിരിക്കുന്ന പാഴെഴുത്ത് കരിമ്പട്ടികയിലെ {{PLURAL:$1|വരി ഒരു|വരികൾ}} അസാധുവായ റെഗുലർ {{PLURAL:$1|എക്സ്‌‌പ്രെഷൻ|എക്സ്‌‌പ്രെഷനുകൾ}} ആണ്, താൾ സേവ് ചെയ്യുന്നതിനു മുമ്പ് {{PLURAL:$1|അത്|അവ}} ശരിയാക്കേണ്ടതുണ്ട്:', - 'spam-blacklist-desc' => 'റെജെക്സ്-അധിഷ്ഠിത പാഴെഴുത്ത് തടയൽ ഉപകരണം: [[MediaWiki:Spam-blacklist]] ഒപ്പം [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'spam-blacklist-desc' => 'അംഗത്വമെടുത്ത ഉപയോക്താക്കൾ യു.ആർ.എല്ലുകളും ഇമെയിൽ വിലാസങ്ങളും, താളുകളിൽ ചേർക്കുന്നത് കരിമ്പട്ടികയിൽ പെടുത്താനുള്ള റെജെക്സ്-അധിഷ്ഠിത പാഴെഴുത്ത് തടയൽ ഉപകരണം', + 'log-name-spamblacklist' => 'പാഴെഴുത്ത് കരിമ്പട്ടിക രേഖ', + 'log-description-spamblacklist' => 'പാഴെഴുത്ത് കരിമ്പട്ടികയെ ഉണർത്തിയ പ്രവൃത്തികളുടെ രേഖ.', + 'logentry-spamblacklist-hit' => '$3 എന്ന താളിൽ $4 എന്നത് ചേർക്കാൻ $1 നടത്തിയ ശ്രമം പാഴെഴുത്ത് കരിമ്പട്ടികയിൽ കുടുങ്ങിയിരിക്കുന്നു.', + 'right-spamblacklistlog' => 'പാഴെഴുത്ത് കരിമ്പട്ടിക രേഖ കാണുക', + 'action-spamblacklistlog' => 'പാഴെഴുത്ത് കരിമ്പട്ടിക രേഖ കാണുക', ); /** Marathi (मराठी) @@ -2524,6 +2587,11 @@ $messages['nl'] = array( 'spam-blacklisted-email-signup' => 'Het opgegeven e-mailadres staat momenteel op de zwarte lijst.', 'spam-invalid-lines' => 'De volgende {{PLURAL:$1|regel|regels}} van de zwarte lijst {{PLURAL:$1|is een|zijn}} onjuiste reguliere {{PLURAL:$1|expressie|expressies}} en {{PLURAL:$1|moet|moeten}} verbeterd worden alvorens de pagina kan worden opgeslagen:', 'spam-blacklist-desc' => "Op reguliere expressies gebaseed antispamhulpprogramma dat het mogelijk maakt URL's in pagina's te blokkeren en e-mailadressen voor geblokkeerde gebruikers", + 'log-name-spamblacklist' => 'Logboek zwarte lijst', + 'log-description-spamblacklist' => 'Deze lijst bevat gebeurtenissen met betrekking tot de zwarte lijst.', + 'logentry-spamblacklist-hit' => '{{GENDER:$2|$1}} heeft geprobeerd $4 van de zwarte lijst toe te voegen op $3', + 'right-spamblacklistlog' => 'Logboek zwarte lijst bekijken', + 'action-spamblacklistlog' => 'logboek zwarte lijst te bekijken', ); /** Nederlands (informeel)‎ (Nederlands (informeel)‎) @@ -2631,6 +2699,7 @@ $messages['or'] = array( /** Polish (polski) * @author BeginaFelicysym + * @author Chrumps * @author Derbeth * @author Sp5uhe */ @@ -2677,6 +2746,8 @@ $messages['pl'] = array( 'spam-blacklisted-email-signup' => 'Podany adres e-mail jest obecnie na czarnej liście blokującej przed użyciem.', 'spam-invalid-lines' => '{{PLURAL:$1|Następująca linia jest niepoprawnym wyrażeniem regularnym i musi być poprawiona przed zapisaniem strony:|Następujące linie są niepoprawnymi wyrażeniami regularnymi i muszą być poprawione przed zapisaniem strony:}}', 'spam-blacklist-desc' => 'Narzędzie antyspamowe oparte o wyrażenia regularne: [[MediaWiki:Spam-blacklist|spam – lista zabronionych]] oraz [[MediaWiki:Spam-whitelist|spam – lista dozwolonych]]', # Fuzzy + 'logentry-spamblacklist-hit' => '$1 {{GENDER:$2|uruchomił|uruchomiła}} filtr antyspamowy na stronie $3 próbując dodać $4.', + 'right-spamblacklistlog' => 'Podgląd rejestru czarnej listy spamu', ); /** Piedmontese (Piemontèis) @@ -2709,7 +2780,12 @@ $messages['pms'] = array( 'spam-blacklisted-email-text' => "Soa adrëssa ëd pòsta eletrònica a l'é al moment an na lista nèira për mandé dij mëssagi a j'àutri utent.", 'spam-blacklisted-email-signup' => "L'adrëssa ëd pòsta eletrònica dàita a l'é al moment an na lista nèira për l'utilisassion.", 'spam-invalid-lines' => "{{PLURAL:$1|St'|Sti}} element dla lista nèira dla rumenta ëd reclam a {{PLURAL:$1|l'é|son}} {{PLURAL:$1|n'|dj'}}espression regolar nen {{PLURAL:$1|bon-a|bon-e}} e a l'{{PLURAL:$1|ha|han}} da manca d'esse coregiùe anans che salvé la pàgina:", - 'spam-blacklist-desc' => 'Strument anti-spam basà an dzora a Regex: [[MediaWiki:Spam-blacklist]] e [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'spam-blacklist-desc' => "Utiss contra la rumenta basà su dj'espression regolar ch'a permëtto ëd buté an sla lista nèira dj'adrësse an sl'Aragnà ant le pàgine e dj'adrësse ëd pòsta eletrònica për j'utent argistrà.", + 'log-name-spamblacklist' => 'Argistr dla lista nèira dla rumenta', + 'log-description-spamblacklist' => 'Costi eveniment a marco le rëspondense con la lista nèira dla rumenta.', + 'logentry-spamblacklist-hit' => "$1 a l'ha causà na rëspondensa con la lista nèira dla rumenta su $3 an sërcand ëd gionté $4.", + 'right-spamblacklistlog' => "Smon-e l'argistr dla lista nèira dla rumenta", + 'action-spamblacklistlog' => "vëdde l'argistr dla lista nèira dla rumenta", ); /** Western Punjabi (پنجابی) @@ -2850,6 +2926,13 @@ $messages['pt-br'] = array( 'action-spamblacklistlog' => 'ver os registros da lista negra de spam', ); +/** Romansh (rumantsch) + * @author Kazu89 + */ +$messages['rm'] = array( + 'log-name-spamblacklist' => 'Protocol da la glista naira da spam', +); + /** Romanian (română) * @author Firilacroco * @author Minisarm @@ -2924,9 +3007,11 @@ $messages['roa-tara'] = array( /** Russian (русский) * @author Ahonc + * @author Amire80 * @author Express2000 * @author HalanTul * @author Kaganer + * @author NBS * @author Okras * @author Александр Сигачёв */ @@ -2970,8 +3055,13 @@ $messages['ru'] = array( 'spam-blacklisted-email' => 'Адреса электронной почты, занесённые в чёрный список', 'spam-blacklisted-email-text' => 'Ваш адрес электронной почты в настоящее время находится в чёрном списке, поэтому вы не можете отправлять сообщения другим пользователям.', 'spam-blacklisted-email-signup' => 'Указанный адрес электронной почты в настоящее время занесён в чёрный список и не может быть использован.', - 'spam-invalid-lines' => '{{PLURAL:$1|Следующая строка чёрного списка ссылок содержит ошибочное регулярное выражение и должна быть исправлена|Следующие строки чёрного списка ссылок содержат ошибочные регулярные выражения и должны быть исправлены}} перед сохранением:', + 'spam-invalid-lines' => '{{PLURAL:$1|1=Следующая строка чёрного списка ссылок содержит ошибочное регулярное выражение и должна быть исправлена|Следующие строки чёрного списка ссылок содержат ошибочные регулярные выражения и должны быть исправлены}} перед сохранением:', 'spam-blacklist-desc' => 'Основанный на регулярных выражениях анти-спам инструмент позволяет добавлять в чёрный список URL на страницах и адреса электронной почты для зарегистрированных пользователей', + 'log-name-spamblacklist' => 'Журнал спам-листа', + 'log-description-spamblacklist' => 'Это журнал, отслеживающий срабатывание спам-листа.', + 'logentry-spamblacklist-hit' => '$1 вызвал срабатывание спам-листа на странице $3 из-за попытки добавить $4.', + 'right-spamblacklistlog' => 'Просмотр журнала чёрного списка по спаму', + 'action-spamblacklistlog' => 'просмотр журнала чёрного списка по спаму', ); /** Rusyn (русиньскый) @@ -3301,7 +3391,9 @@ $messages['stq'] = array( ); /** Swedish (svenska) + * @author Ainali * @author Lejonel + * @author Lokal Profil * @author Skalman * @author WikiPhoenix */ @@ -3325,10 +3417,34 @@ $messages['sv'] = array( # * All text från ett #-tecken till radens slut är en kommentar # * Alla icke-tomma rader används som reguljära uttryck för att matcha domännamn i URL:er + # ', + 'email-blacklist' => ' #
      +# E-postadresser som matchar den här listan kommer att hindras att registrera och skicka e-post
      +# Denna lista gäller endast denna wiki; se även den globala svartlistan.
      +# För dokumentation se https://www.mediawiki.org/wiki/Extension:SpamBlacklist
      +#
      +# Syntaxen är följande:
      +#   * Allt från ett "#"-tecken till slutet av raden är en kommentar
      +#   * Varje icke-tom rad är ett regex-fragment som endast kommer att matcha värdnamn i e-postadresser
      + #
      ', + 'email-whitelist' => ' #
      +# E-postadresser som matchar den här listan kommer *inte* att blockeras, även om de skulle ha blivit blockerade av svartlistan.
      +#
      +# Syntaxen är följande:
      +#   * Allt från ett "#"-tecken till slutet av raden är en kommentar
      +#   * Varje icke-tom rad är ett regex-fragment som endast kommer att matcha värdnamn i e-postadresser
      +
        #
      ', 'spam-blacklisted-email' => 'Svartlistad e-postadress', + 'spam-blacklisted-email-text' => 'Din e-postadress är för närvarande svartlistad från att skicka e-post till andra användare.', + 'spam-blacklisted-email-signup' => 'Den angivna e-postadressen är förnärvarande svartlistad från användning.', 'spam-invalid-lines' => 'Följande {{PLURAL:$1|rad|rader}} i svarta listan för spam innehåller inte något giltigt reguljärt uttryck och måste rättas innan sidan sparas:', 'spam-blacklist-desc' => 'Antispamverktyg baserat på reguljära uttryck som gör det möjligt att svartlista webbadresser på sidor och e-postadresser för registrerade användare', + 'log-name-spamblacklist' => 'Svartlistningslogg för spam', + 'log-description-spamblacklist' => 'Dessa händelser spårar träffar is svartlistningsloggen för spam.', + 'logentry-spamblacklist-hit' => '$1 orsakade en träff i svartlistningsloggen för spam på $3 genom att försöka lägga till $4.', + 'right-spamblacklistlog' => 'Visa svartlistningslogg för spam', + 'action-spamblacklistlog' => 'visa svartlistningsloggen för spam', ); /** Tamil (தமிழ்) @@ -3559,7 +3675,7 @@ $messages['uk'] = array( 'spam-blacklisted-email' => 'Адреса електронної пошти з чорного списку', 'spam-blacklisted-email-text' => 'Ваша адреса електронної пошти в даний час знаходиться в чорному списку, тому ви не можете надсилати повідомлення іншим користувачам.', 'spam-blacklisted-email-signup' => 'Вказана Вами адреса електронної пошти наразі занесена до чорного списку і не може бути використаною.', - 'spam-invalid-lines' => '{{PLURAL:$1|Наступний рядок із чорного списку посилань містить помилковий регулярний вираз і його треба виправити|Наступні рядки із чорного списку посилань містять помилкові регулярні вирази і їх треба виправити}} перед збереженням:', + 'spam-invalid-lines' => '{{PLURAL:$1|1=Наступний рядок із чорного списку посилань містить помилковий регулярний вираз і його треба виправити|Наступні рядки із чорного списку посилань містять помилкові регулярні вирази і їх треба виправити}} перед збереженням:', 'spam-blacklist-desc' => 'Засновану на регулярних виразах антиспам інструмент, який дозволяє кидати у чорний список URL сторінки і адреси електронної пошти для зареєстрованих користувачів', 'log-name-spamblacklist' => 'Журнал чорного списку спамерів', 'log-description-spamblacklist' => 'Ці події відстежують потрапляння у чорний список спамерів.', @@ -3803,8 +3919,10 @@ $messages['zh-hant'] = array( 'spam-blacklisted-email-text' => '您的電郵地址目前已列入黑名單以防止您發送電郵予其他用戶。', 'spam-blacklisted-email-signup' => '此電郵地址目前被禁止使用。', 'spam-invalid-lines' => '以下在灌水黑名單的{{PLURAL:$1|一行|多行}}有無效的表示式,請在儲存這頁前先將{{PLURAL:$1|它|它們}}修正:', - 'spam-blacklist-desc' => '以正則表達式為本的防灌水工具:[[MediaWiki:Spam-blacklist]] 與 [[MediaWiki:Spam-whitelist]]', # Fuzzy + 'spam-blacklist-desc' => '基於正則表達式的反垃圾電郵工具,允許加入濫發電郵的URL和/或註冊用戶於此頁面', 'log-name-spamblacklist' => '垃圾連結黑名單日誌', + 'log-description-spamblacklist' => '這些事件已被垃圾郵件黑名單觸發。', + 'logentry-spamblacklist-hit' => '$1於$3嘗試加入$4而觸發垃圾電郵黑名單。', 'right-spamblacklistlog' => '查閱垃圾電郵黑名單日誌', 'action-spamblacklistlog' => '查閱垃圾電郵黑名單日誌', ); diff --git a/extensions/SpamBlacklist/SpamBlacklist.php b/extensions/SpamBlacklist/SpamBlacklist.php index 2fd7855d..45e5237c 100644 --- a/extensions/SpamBlacklist/SpamBlacklist.php +++ b/extensions/SpamBlacklist/SpamBlacklist.php @@ -18,6 +18,10 @@ $wgExtensionCredits['antispam'][] = array( $dir = __DIR__ . '/'; $wgExtensionMessagesFiles['SpamBlackList'] = $dir . 'SpamBlacklist.i18n.php'; +// Register the API method +$wgAutoloadClasses['ApiSpamBlacklist'] = "$dir/api/ApiSpamBlacklist.php"; +$wgAPIModules['spamblacklist'] = 'ApiSpamBlacklist'; + /** * Array of settings for blacklist classes */ diff --git a/extensions/SpamBlacklist/SpamBlacklist_body.php b/extensions/SpamBlacklist/SpamBlacklist_body.php index bf5c9aab..15fbc72f 100644 --- a/extensions/SpamBlacklist/SpamBlacklist_body.php +++ b/extensions/SpamBlacklist/SpamBlacklist_body.php @@ -34,10 +34,13 @@ class SpamBlacklist extends BaseBlacklist { * This is used to load the old links already on the page, so * the filter is only applied to links that got added. If not given, * the filter is applied to all $links. + * @param boolean $preventLog Whether to prevent logging of hits. Set to true when + * the action is testing the links rather than attempting to save them + * (e.g. the API spamblacklist action) * * @return Array Matched text(s) if the edit should not be allowed, false otherwise */ - function filter( array $links, Title $title = null ) { + function filter( array $links, Title $title = null, $preventLog = false ) { $fname = 'wfSpamBlacklistFilter'; wfProfileIn( $fname ); @@ -93,7 +96,9 @@ class SpamBlacklist extends BaseBlacklist { $ip = $wgRequest->getIP(); $imploded = implode( ' ', $matches[0] ); wfDebugLog( 'SpamBlacklistHit', "$ip caught submitting spam: $imploded\n" ); - $this->logFilterHit( $title, $imploded ); // Log it + if( !$preventLog ) { + $this->logFilterHit( $title, $imploded ); // Log it + } if( $retVal === false ){ $retVal = array(); } diff --git a/extensions/SpamBlacklist/api/ApiSpamBlacklist.php b/extensions/SpamBlacklist/api/ApiSpamBlacklist.php new file mode 100644 index 00000000..dad9e8e0 --- /dev/null +++ b/extensions/SpamBlacklist/api/ApiSpamBlacklist.php @@ -0,0 +1,78 @@ +extractRequestParams(); + $matches = BaseBlacklist::getInstance( 'spam' )->filter( $params['url'], NULL, true ); + $res = $this->getResult(); + + if ( $matches !== false ) { + // this url is blacklisted. + $res->addValue( 'spamblacklist', 'result', 'blacklisted' ); + $res->setIndexedTagName( $matches, 'match' ); + $res->addValue( 'spamblacklist', 'matches', $matches ); + } else { + // not blacklisted + $res->addValue( 'spamblacklist', 'result', 'ok' ); + } + } + + public function getAllowedParams() { + return array( + 'url' => array( + ApiBase::PARAM_REQUIRED => true, + ApiBase::PARAM_ISMULTI => true, + ) + ); + } + + public function getParamDescription() { + return array( + 'url' => 'A pipe-separated list of URLs to validate against the blacklist', + ); + } + + public function getDescription() { + return 'Validate one or more URLs against the SpamBlacklist.'; + } + + public function getExamples() { + return array( + 'api.php?action=spamblacklist&url=http%3A%2F%2Fwww.example.com%2F%7Chttp%3A%2F%2Fwww.example.org%2F', + 'api.php?action=spamblacklist&url=https%3A%2F%2Fwww.example.net%2Findex.php', + ); + } + + public function getHelpUrls() { + return array( 'https://www.mediawiki.org/wiki/Extension:SpamBlacklist/API' ); + } +} diff --git a/extensions/SyntaxHighlight_GeSHi/COPYING b/extensions/SyntaxHighlight_GeSHi/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/extensions/SyntaxHighlight_GeSHi/COPYING @@ -0,0 +1,339 @@ + 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. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php b/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php index 7318574d..b1c9851d 100644 --- a/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php +++ b/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.class.php @@ -28,12 +28,6 @@ class SyntaxHighlight_GeSHi { // Don't trim leading spaces away, just the linefeeds $text = preg_replace( '/^\n+/', '', $text ); - if( $wgUseTidy ) { - // HTML Tidy will convert tabs to spaces incorrectly (bug 30930). - // Preemptively replace the spaces in a more controlled fashion. - $text = self::tabsToSpaces( $text ); - } - // Validate language if( isset( $args['lang'] ) && $args['lang'] ) { $lang = $args['lang']; @@ -101,6 +95,12 @@ class SyntaxHighlight_GeSHi { if( $enclose === GESHI_HEADER_DIV ) { $out = str_replace( "\n", '', $out ); } + // HTML Tidy will convert tabs to spaces incorrectly (bug 30930). + // But the conversion from tab to space occurs while reading the input, + // before the conversion from to tab, so we can armor it that way. + if( $wgUseTidy ) { + $out = str_replace( "\t", ' ', $out ); + } // Register CSS $parser->getOutput()->addHeadItem( self::buildHeadItem( $geshi ), "source-{$lang}" ); @@ -488,35 +488,4 @@ class SyntaxHighlight_GeSHi { public static function hOldSpecialVersion_GeSHi( &$sp, &$extensionTypes ) { return self::hSpecialVersion_GeSHi( $extensionTypes ); } - - /** - * Convert tabs to spaces - * - * @param string $text - * @return string - */ - private static function tabsToSpaces( $text ) { - $lines = explode( "\n", $text ); - $lines = array_map( array( __CLASS__, 'tabsToSpacesLine' ), $lines ); - return implode( "\n", $lines ); - } - - /** - * Convert tabs to spaces for a single line - * - * @param $line - * @internal param string $text - * @return string - */ - private static function tabsToSpacesLine( $line ) { - $parts = explode( "\t", $line ); - $width = 8; // To match tidy's config & typical browser defaults - $out = $parts[0]; - foreach( array_slice( $parts, 1 ) as $chunk ) { - $spaces = $width - (strlen( $out ) % $width); - $out .= str_repeat( ' ', $spaces ); - $out .= $chunk; - } - return $out; - } } diff --git a/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.i18n.php b/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.i18n.php index 8555c4f9..d385b01c 100644 --- a/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.i18n.php +++ b/extensions/SyntaxHighlight_GeSHi/SyntaxHighlight_GeSHi.i18n.php @@ -202,11 +202,12 @@ $messages['ca'] = array( * @author Умар */ $messages['ce'] = array( + 'syntaxhighlight-desc' => 'Таро хуьлуьйту тег <syntaxhighlight> лело [http://qbnz.com/highlighter/ GeSHi Highlighter] гӀоьнца синтаксисан бос хилийта', 'syntaxhighlight-supported' => 'Ловш долу меттанаш:', 'geshi.css' => '/* CSS-код, кху чу хlоттайахь, оцо болх бийра бу сизашдо беснашна хlокхуньца GeSHI */', ); -/** Czech (česky) +/** Czech (čeština) * @author Li-sung * @author Matěj Grabovský */ @@ -320,7 +321,7 @@ $messages['es'] = array( $messages['et'] = array( 'syntaxhighlight-desc' => 'Võimaldab [http://qbnz.com/highlighter/ GeSHi] abil <syntaxhighlight>-silti kasutades süntaksit esile tõsta.', 'syntaxhighlight-specify' => 'Sa pead täpsustama keelt nõnda:', - 'syntaxhighlight-supported' => 'Süntaksi esiletoomise on toetatud järgnevates keeltes:', + 'syntaxhighlight-supported' => 'Süntaksi esiletõstu toetavad keeled:', 'syntaxhighlight-err-loading' => '(toetatud keelte loetelu laadimisel esines viga)', 'syntaxhighlight-err-language' => 'Vigane keel.', 'geshi.css' => '/* CSS mis on asetatud siia, määrab GeSHi süntaksi esiletoomise stiili */', @@ -442,11 +443,12 @@ $messages['gu'] = array( ); /** Hebrew (עברית) + * @author Guycn2 * @author Rotem Liss */ $messages['he'] = array( 'syntaxhighlight-desc' => 'אפשרות לסימון קוד מקור בצבעים עם התגית <syntaxhighlight> באמצעות [http://qbnz.com/highlighter/ GeSHi Highlighter]', - 'syntaxhighlight-specify' => 'עליכם לציין שפה באופן הבא:', + 'syntaxhighlight-specify' => 'יש לציין שפה באופן הבא:', 'syntaxhighlight-supported' => 'שפות נתמכות:', 'syntaxhighlight-err-loading' => '(שגיאה בטעינת הרשימה של השפות הנתמכות)', 'syntaxhighlight-err-language' => 'שפה שגויה.', @@ -545,6 +547,18 @@ $messages['ig'] = array( 'syntaxhighlight-err-language' => 'Asụsụ ámághị.', ); +/** Iloko (Ilokano) + * @author Lam-ang + */ +$messages['ilo'] = array( + 'syntaxhighlight-desc' => 'Mangited ti panangimaris ti eskritu <syntaxhighlight> nga agus-usar iti [http://qbnz.com/highlighter/ GeSHi - Generic Syntax Highlighter]', + 'syntaxhighlight-specify' => 'Nasken nga inaganan ti pagsasao a kasla daytoy:', + 'syntaxhighlight-supported' => 'Dagiti nasuportaran a pagsasao para iti panangimaris ti eskritu:', + 'syntaxhighlight-err-loading' => '(biddut ti panangikarga ti listaan ti nasuportaran a pagsasao)', + 'syntaxhighlight-err-language' => 'Imbalido a pagsasao.', + 'geshi.css' => '/* Ti CSS a maikabil ditoy ket maipakatto iti panangimaris ti eskritu ti GeSHi */', +); + /** Ido (Ido) * @author Malafaya */ @@ -688,10 +702,11 @@ $messages['ksh'] = array( /** Luxembourgish (Lëtzebuergesch) * @author Les Meloures * @author Robby + * @author Soued031 */ $messages['lb'] = array( 'syntaxhighlight-desc' => "Syntax-Ervirhiewung <syntaxhighlight> mat Hëllef vu [http://qbnz.com/highlighter/ 'GeSHi Highlighter']", - 'syntaxhighlight-specify' => 'Déi gewënscht Sprooch muss esou definéiert ginn:', + 'syntaxhighlight-specify' => 'Déi gewënscht Sprooch muss sou definéiert ginn:', 'syntaxhighlight-supported' => "Ënnerstëtzte Sprooche fir d'Syntax faarweg ze markéieren", 'syntaxhighlight-err-loading' => '(Feeler beim Luede vun der Lëscht vun den ënnerstëtzte Sproochen)', 'syntaxhighlight-err-language' => 'Net valabel Sprooch.', @@ -936,7 +951,6 @@ $messages['pt'] = array( /** Brazilian Portuguese (português do Brasil) * @author Helder.wiki - * @author Heldergeovane */ $messages['pt-br'] = array( 'syntaxhighlight-desc' => 'Providencia realce de sintaxe <syntaxhighlight> através do [http://qbnz.com/highlighter/ GeSHi Highlighter]', @@ -1124,12 +1138,13 @@ $messages['ta'] = array( ); /** Telugu (తెలుగు) + * @author Chaduvari * @author Veeven */ $messages['te'] = array( 'syntaxhighlight-specify' => 'భాషని ఈ విధంగా ఇవ్వాలి:', 'syntaxhighlight-supported' => 'ఛందస్సు ఉద్దీపనకి తోడ్పాటు ఉన్న భాషలు:', - 'syntaxhighlight-err-loading' => '(తోడ్పాటున్న భాషల జాబితా లోడింగులో పొరపాటు జరిగింది)', + 'syntaxhighlight-err-loading' => '(తోడ్పాటున్న భాషల జాబితా లోడింగులో లోపం జరిగింది)', 'syntaxhighlight-err-language' => 'చెల్లని భాష.', ); diff --git a/extensions/SyntaxHighlight_GeSHi/geshi/geshi.php b/extensions/SyntaxHighlight_GeSHi/geshi/geshi.php index 60741577..4323d05c 100644 --- a/extensions/SyntaxHighlight_GeSHi/geshi/geshi.php +++ b/extensions/SyntaxHighlight_GeSHi/geshi/geshi.php @@ -41,7 +41,7 @@ // /** The version of this GeSHi file */ -define('GESHI_VERSION', '1.0.8.11'); +define('GESHI_VERSION', '1.0.8.11-wmf1'); // WMF fix for Haskell (bug 52509) // Define the root directory for the GeSHi code tree if (!defined('GESHI_ROOT')) { diff --git a/extensions/SyntaxHighlight_GeSHi/geshi/geshi/haskell.php b/extensions/SyntaxHighlight_GeSHi/geshi/geshi/haskell.php index adae1116..d3b494ed 100644 --- a/extensions/SyntaxHighlight_GeSHi/geshi/geshi/haskell.php +++ b/extensions/SyntaxHighlight_GeSHi/geshi/geshi/haskell.php @@ -13,6 +13,14 @@ * ------- * 2005/08/27 (1.0.0) * - First Release + * 2013/09/28 + * - Single quotes dropped from QUOTEMARKS to resolve . + * Change is local to SyntaxHighlight_GeSHi, made by Ori Livneh (ori@wikimedia.org), based + * on a proposed upstream patch. + * Upstream bug report: + * + * Upstream patch (stalled since 2012): + * * * TODO (updated 2005/08/27) * ------------------------- @@ -46,7 +54,7 @@ $language_data = array ( 3 => "/{-(?:(?R)|.)-}/s", //Nested Comments ), 'CASE_KEYWORDS' => 0, - 'QUOTEMARKS' => array('"',"'"), + 'QUOTEMARKS' => array('"'), // SyntaxHighlight_GeSHi modification; see CHANGES above. 'ESCAPE_CHAR' => '\\', 'KEYWORDS' => array( /* main haskell keywords */ diff --git a/extensions/TitleBlacklist/COPYING b/extensions/TitleBlacklist/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/extensions/TitleBlacklist/COPYING @@ -0,0 +1,339 @@ + 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. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/extensions/TitleBlacklist/TitleBlacklist.i18n.php b/extensions/TitleBlacklist/TitleBlacklist.i18n.php index ca05a33d..39ce9d24 100644 --- a/extensions/TitleBlacklist/TitleBlacklist.i18n.php +++ b/extensions/TitleBlacklist/TitleBlacklist.i18n.php @@ -127,7 +127,7 @@ $messages['ar'] = array( هو يطابق مدخلة القائمة السوداء التالية: $1', 'titleblacklist-invalid' => '{{PLURAL:$1||السطر التالي|السطران التاليان|السطور التالية}} في قائمة العناوين السوداء {{PLURAL:$1||غير صحيح|غير صحيحان|غير صحيحة}}؛ من فضلك {{PLURAL:$1||صححه|صححهما|صححهم}} قبل الحفظ:', 'titleblacklist-override' => 'تجاهل القائمة السوداء', - 'right-tboverride' => 'تجاوز قائمة العناوين السوداء', # Fuzzy + 'right-tboverride' => 'تجاوز قائمتي العناوين أو أسماء المستخدمين السوداوين', 'right-tboverride-account' => 'تجاوز قائمة اسم المستخدم السوداء.', ); @@ -227,8 +227,8 @@ $messages['ba'] = array( Ул түбәндәге ҡара исемлек яҙмаһы менән тап килә: $1', 'titleblacklist-forbidden-new-account' => '"$2" исемле ҡатнашыусы булдырыла алмай. Ул түбәндәге ҡара исемлек яҙмаһы менән тап килә: $1', - 'titleblacklist-invalid' => 'Ҡара исемлектә түбәндәге {{PLURAL:$1|юл|юлдар}} дөрөҫ түгел; -зинһар, һаҡлар алдынан {{PLURAL:$1|уны|уларҙы}} төҙәтегеҙ:', + 'titleblacklist-invalid' => 'Ҡара исемлектә түбәндәге {{PLURAL:$1|1=юл|юлдар}} дөрөҫ түгел; +зинһар, һаҡлар алдынан {{PLURAL:$1|1=уны|уларҙы}} төҙәтегеҙ:', # Fuzzy 'titleblacklist-override' => 'Ҡара исемлекте иғтибарға алмаҫҡа', 'right-tboverride' => 'Исемдәр ҡара исемлеген иғтибарға алмау', # Fuzzy 'right-tboverride-account' => 'Ҡатнашыусы исемдәре ҡара исемлеген иғтибарға алмау', @@ -296,8 +296,8 @@ $messages['be-tarask'] = array( Яна адпавядае наступнаму элемэнту чорнага сьпісу: $1', 'titleblacklist-forbidden-new-account' => 'Імя ўдзельніка «$2» было забаронена для стварэньня. Яно адпавядае наступнаму элемэнту чорнага сьпісу: $1', - 'titleblacklist-invalid' => '{{PLURAL:$1|Наступны радок у|Наступныя радкі ў}} сьпісе забароненых назваў — {{PLURAL:$1|няслушны|няслушныя}}; -калі ласка, выпраўце {{PLURAL:$1|яго|іх}} перад захаваньнем:', + 'titleblacklist-invalid' => '{{PLURAL:$1|1=Наступны радок у|Наступныя радкі ў}} сьпісе забароненых назваў — {{PLURAL:$1|1=няслушны|няслушныя}}; +калі ласка, выпраўце {{PLURAL:$1|1=яго|іх}} перад захаваньнем:', # Fuzzy 'titleblacklist-override' => 'Ігнараваць чорны сьпіс', 'right-tboverride' => 'Ігнараваньне чорнага сьпісу назваў і імёнаў удзельнікаў', 'right-tboverride-account' => 'ігнараваньне чорнага сьпісу ўдзельнікаў', @@ -404,6 +404,7 @@ molimo da {{PLURAL:$1|ga|ih}} ispravite prije spremanja:', * @author Aleator * @author El libre * @author Jordi Roqué + * @author Papapep * @author Pitort * @author SMP * @author Vriullop @@ -417,7 +418,7 @@ $messages['ca'] = array( # Per defecte, no distingeix majúscules de minúscules', 'titleblacklist-forbidden-edit' => 'El títol «$2» està prohibit i no es pot crear. Concorda amb la següent entrada de la llista negra: $1', 'titleblacklist-forbidden-move' => "No es pot moure «$2» a «$3», perquè el títol «$3» està prohibit. Concorda amb l'entrada de la llista negra següent: $1", - 'titleblacklist-forbidden-upload' => "El nom de fitxer «$2» ha estat prohibit i se n'impedeix la creació. Concorda amb la següent línia de la llista negra: $1", + 'titleblacklist-forbidden-upload' => "S'ha prohibit el nom de fitxer «$2» i se n'impedeix la creació. Concorda amb la següent línia de la llista negra: $1", 'titleblacklist-forbidden-new-account' => "No es pot crear el nom d'usuari «$2». Coincideix amb la següent entrada de la llista negra: $1", 'titleblacklist-invalid' => '{{PLURAL:$1|La línia següent|Les línies següents}} de la llista negra no {{PLURAL:$1|és vàlida|són vàlides}}; heu de corregir-{{PLURAL:$1|la|les}} abans de guardar:', 'titleblacklist-override' => 'Ignora la llista negra', @@ -429,6 +430,7 @@ $messages['ca'] = array( * @author Умар */ $messages['ce'] = array( + 'titleblacklist-desc' => '[[MediaWiki:Titleblacklist|Ӏаьржа]] а [[MediaWiki:Titlewhitelist|къайн]] а могӀанийн гӀоьнца куьйгалхошна таро хуьлуьйту декъашхойн дӀаяздарш ца кхоллийта.', 'right-tboverride' => 'Ӏаьржачу могӀанийн чура агӀонийн цӀераш тергалцаяр я декъашхой тергалцабар', 'right-tboverride-account' => 'Ӏаьржачу могӀанийн чура декъашхойн цӀераш тергалцаяр', ); @@ -441,7 +443,7 @@ $messages['ckb'] = array( 'right-tboverride' => 'تێپەڕاندنی تاوتوێی پێرستی ڕەشی سەردێڕ یان ناوی بەکارھێنەری', ); -/** Czech (česky) +/** Czech (čeština) * @author Danny B. * @author Li-sung * @author Matěj Grabovský @@ -557,6 +559,7 @@ $messages['de-formal'] = array( /** Zazaki (Zazaki) * @author Aspar * @author Erdemaslancan + * @author Marmase */ $messages['diq'] = array( 'titleblacklist-desc' => 'serkaran re desturê vıraştışê pel u hesabê karberan dano, qey qedexekerdışi re yew [[MediaWiki:Titleblacklist|listeya risiyayan]] u [[MediaWiki:Titlewhitelist|listeya risıpiyan]] dano.', @@ -573,8 +576,8 @@ malumatê ey na listeyasiya de zepê ya: $1', malumatê ey na listeyasiya de zêpê ya: $1', 'titleblacklist-forbidden-new-account' => 'vıraştışê nameyê karberê"$2" i qedexe bı. malumatê ey na listeyasiya de zêpê ya: $1', - 'titleblacklist-invalid' => 'nê {{PLURAL:$1|satır o ke|satır ê ke}} listeyasiyayi de qedexe yê; -kerem kerê verqeydkerdışi de raşt kerê:', + 'titleblacklist-invalid' => 'Na ğırab lista dı {{PLURAL:$1|en asatır|ené satıri}} néravérené; +Verdé qeyd kerdışi timar keré:', 'titleblacklist-override' => 'Tenilisti mehesebne', 'right-tboverride' => 'Siya listeya sernuşti nêravêrde ke', 'right-tboverride-account' => 'Tenilisteya naman dê karberan mehesebnê', @@ -696,14 +699,14 @@ $messages['et'] = array( 'titlewhitelist' => '# See pealkiri on valges nimekirjas. Kommentaariks kasuta märki "#". # Vaikimisi on see tõstutundetu', 'titleblacklist-forbidden-edit' => 'Lehekülje pealkirjaga "$2" loomine on keelatud. -See vastab järgnevale musta nimekirja sissekandele: $1', - 'titleblacklist-forbidden-move' => 'Lehekülge "$2" ei saa teisaldada pealkirja "$3" alla, sest lehekülgede pealkirjaga "$3" loomine on keelatud. -See vastab järgnevale musta nimekirja sissekandele: $1', - 'titleblacklist-forbidden-upload' => 'Pealkirjaga "$2" on keelatud faili üles laadida. -See vastab järgnevale musta nimekirja sissekandele: $1', - 'titleblacklist-forbidden-new-account' => 'Kasutaja nimega "$2" loomine on keelatud. -See vastab järgnevale musta nimekirja sissekandele: $1', - 'titleblacklist-invalid' => '{{PLURAL:$1|Järgnev|Järgnevad}} musta nimekirja {{PLURAL:$1|rida on vigane|read on vigased}}. +See vastab järgmisele musta nimekirja sissekandele: $1', + 'titleblacklist-forbidden-move' => 'Lehekülge "$2" ei saa teisaldada pealkirja "$3" alla, sest lehekülje loomine pealkirjaga "$3" on keelatud. +See vastab järgmisele musta nimekirja sissekandele: $1', + 'titleblacklist-forbidden-upload' => 'Faili pealkirjaga "$2" on keelatud üles laadida. +See vastab järgmisele musta nimekirja sissekandele: $1', + 'titleblacklist-forbidden-new-account' => 'Kasutajat nimega "$2" on keelatud luua. +See vastab järgmisele musta nimekirja sissekandele: $1', + 'titleblacklist-invalid' => '{{PLURAL:$1|Järgmine|Järgmised}} musta nimekirja {{PLURAL:$1|rida on vigane|read on vigased}}. Palun paranda {{PLURAL:$1|see|need}} enne salvestamist:', 'titleblacklist-override' => 'Eira musta nimekirja', 'right-tboverride' => 'Eirata pealkirjade või kasutajanimede musta nimekirja', @@ -915,10 +918,12 @@ $messages['gu'] = array( /** Hebrew (עברית) * @author Amire80 + * @author Guycn2 * @author Rotem Liss + * @author Rotemliss */ $messages['he'] = array( - 'titleblacklist-desc' => 'אפשרות למנהלים לאסור על יצירת דפים וחשבונות משתמש לפי [[MediaWiki:Titleblacklist|רשימה שחורה]] ו[[MediaWiki:Titlewhitelist|רשימה לבנה]]', + 'titleblacklist-desc' => 'אפשרות למפעילי המערכת לאסור יצירת דפים וחשבונות משתמש לפי [[MediaWiki:Titleblacklist|רשימה שחורה]] ו[[MediaWiki:Titlewhitelist|רשימה לבנה]]', 'titleblacklist' => '# זוהי רשימת הכותרות האסורות. לא ניתן ליצור כותרות וחשבונות משתמש שמתאימים לביטוי רגולרי המופיע כאן. # השתמשו בסימן "#" להערות. #רשימה זו אינה תלויה ברישיות כברירת מחדל.', @@ -936,7 +941,7 @@ $messages['he'] = array( אנא תקנו {{PLURAL:$1|אותה|אותן}} לפני השמירה:', 'titleblacklist-override' => 'התעלם מהרשימה השחורה', 'right-tboverride' => 'עקיפת רשימת שמות המשתמשים האסורים', - 'right-tboverride-account' => 'לעקוף את הרשימה השחורה של שמות המשתמשים', + 'right-tboverride-account' => 'עקיפת הרשימה השחורה של שמות המשתמשים', ); /** Hindi (हिन्दी) @@ -1374,14 +1379,15 @@ Hic titulus congruit cum expressione regulari: $1', /** Luxembourgish (Lëtzebuergesch) * @author Robby + * @author Soued031 */ $messages['lb'] = array( 'titleblacklist-desc' => "Erlaabt den Administrateuren et d'Uleeë vu Säiten a Benotzerkonte mat spezifeschen Titelen iwwer eng [[MediaWiki:Titleblacklist|schwaarz Lëscht]] an eng [[MediaWiki:Titlewhitelist|wäiss Lëscht]] ze verbidden", 'titleblacklist' => '# Dëst ass een Titel deen op enger schwaarzer Lëscht steet. Titelen a Benotzernimm op déi dës Ausdréck passe kann net ugeluecht ginn # Benotzt "#" fir Bemierkungen -# Et gëtt tëschent groussen a klenge Buchstawen ënnerscheed', +# Et gëtt tëscht groussen a klenge Buchstawen ënnerscheet', 'titlewhitelist' => "# Dëst ass d'''Whitelist'' vun den Titelen. Benotzt \"#\" fir Bemierkungen. -# Et gëtt een Ënnerscheed tëschent groussen a klenge Buchstawe gemaach", +# Et gëtt een Ënnerscheed tëscht groussen a klenge Buchstawe gemaach", 'titleblacklist-forbidden-edit' => 'Den Titel "$2" dàerf net ugeluecht ginn. En ass op der schwaarzer Lëscht wéint folgendem Begrëff: $1', 'titleblacklist-forbidden-move' => '"$2" kann net op "$3" geréckelt ginn, well den Titel "$3" net däerf ugeluecht ginn. @@ -1389,7 +1395,7 @@ En entsprécht dëser Rubrik vun der schwaarzr Lëscht: $1', 'titleblacklist-forbidden-upload' => 'De Fichiersnumm "$2" kann net benotzt ginn. Hien ass identesch mat dësem Numm vun der schwaarzer Lëscht (black list): $1', 'titleblacklist-forbidden-new-account' => 'De Benotzermumm "$2" gouf gespaart fir benotzt ze ginn. -En ass esou op der \'\'schwaarzer Lëscht\'\': $1', +En ass sou op der \'\'schwaarzer Lëscht\'\': $1', 'titleblacklist-invalid' => 'Dës {{PLURAL:$1|Linn|Linnen}} op der schwaarzer Lëscht vun den {{PLURAL:$1|Titelen ass|Titele sinn}} net valabel; verbessert se virum späicheren:', 'titleblacklist-override' => 'Schwaarz Lëscht ignoréieren', @@ -1498,9 +1504,10 @@ $messages['ml'] = array( * @author Kaustubh * @author Mahitgar * @author Rahuldeshmukh101 + * @author V.narsikar */ $messages['mr'] = array( - 'titleblacklist-desc' => '[[MediaWiki:Titleblacklist|ब्लॅकलीस्ट]] व [[MediaWiki:Titlewhitelist|व्हाईट लीस्ट]] ला अनुसरून पाने आणि सदस्य खात्यांना प्रतिबंधतीअ करण्याची प्रचालकांना परवानगी द्या', + 'titleblacklist-desc' => '[[MediaWiki:Titleblacklist|ब्लॅकलीस्ट]] व [[MediaWiki:Titlewhitelist|व्हाईट लीस्ट]] ला अनुसरून पाने आणि सदस्य खात्यांना प्रतिबंधित करण्याची प्रचालकांना परवानगी द्या', 'titleblacklist' => '# ही ब्लॉक केलेल्या शीर्षकांची यादी आहे. या यादीत असलेल्या शीर्षकांचे लेख लिहिता येणार नाहीत. # शेरा देण्यासाठी "#" वापरा.', 'titlewhitelist' => '# ही वापरू शकत असलेल्या शीर्षकांची यादी आहे. शेरा देण्यासाठी "#" वापरा', @@ -1698,15 +1705,17 @@ $messages['or'] = array( /** Polish (polski) * @author Beau * @author BeginaFelicysym + * @author Chrumps * @author Derbeth + * @author Peter Bowman * @author Sp5uhe */ $messages['pl'] = array( 'titleblacklist-desc' => 'Pozwala na blokowanie tworzenia stron i kont użytkowników o określonych nazwach wykorzystując [[MediaWiki:Titleblacklist|czarną]] oraz [[MediaWiki:Titlewhitelist|białą]] listę', - 'titleblacklist' => '# Lista zabronionych nazw. Strony i konta o nazwach odpowiadających poniższym wyrażeniom regularnym, nie będą mogły zostać utworzone. -# Użyj znaku „#”, by utworzyć komentarz. + 'titleblacklist' => '# Lista zabronionych nazw. Strony i konta o nazwach odpowiadających poniższym wyrażeniom regularnym nie będą mogły zostać utworzone. +# Użyj znaku „#”, aby utworzyć komentarz. # Domyślnie we wpisach ma znaczenie wielkość znaków.', - 'titlewhitelist' => '# To jest lista dopuszczalnych nazw artykułów. Użyj znaku „#” by utworzyć komentarz. + 'titlewhitelist' => '# To jest lista dopuszczalnych nazw artykułów. Użyj znaku „#”, aby utworzyć komentarz. # Domyślnie we wpisach ma znaczenie wielkość znaków.', 'titleblacklist-forbidden-edit' => 'Utworzenie strony o nazwie „$2” nie jest możliwe. Nazwa ta pasuje do wpisu z czarnej listy: $1', @@ -1718,7 +1727,7 @@ Nazwa ta pasuje do wpisu z czarnej listy: $1', Nazwa ta pasuje do wpisu z czarnej listy: $1', 'titleblacklist-invalid' => '{{PLURAL:$1|Następująca linia|Następujące linie}} na liście zabronionych tytułów stron {{PLURAL:$1|jest nieprawidłowa|są nieprawidłowe}}. Popraw {{PLURAL:$1|ją|je}} przed zapisaniem:', 'titleblacklist-override' => 'Ignoruj czarną listę', - 'right-tboverride' => 'Zastąp czarną listę zabronionych tytułów stron lub nazw użytkowników', + 'right-tboverride' => 'Ignorowanie czarnej listy tytułów lub nazw użytkowników', 'right-tboverride-account' => 'Ignorowanie czarnej listy użytkowników', ); @@ -1920,7 +1929,7 @@ $messages['ru'] = array( 'titleblacklist-forbidden-upload' => 'Файл с названием «$2» был запрещён к созданию. Он попадает под следующую запись списка запрещенных названий: $1', 'titleblacklist-forbidden-new-account' => 'Запрещено использовать имя участника «$2». Имя соответствует следующей записи из чёрного списка: $1', - 'titleblacklist-invalid' => '{{PLURAL:$1|Следующая строка|Следующие строки}} в списке запрещённых названий {{PLURAL:$1|не является правильным регулярным выражением|не являются правильными регулярными выражениями}}. Пожалуйста, исправьте {{PLURAL:$1|её|их}} перед сохранением:', + 'titleblacklist-invalid' => '{{PLURAL:$1|1=Следующая строка|Следующие строки}} в списке запрещённых названий {{PLURAL:$1|1=не является правильным регулярным выражением|не являются правильными регулярными выражениями}}. Пожалуйста, исправьте {{PLURAL:$1|1=её|их}} перед сохранением:', 'titleblacklist-override' => 'Игнорировать чёрный список', 'right-tboverride' => 'игнорирование чёрного списка имён страниц или участников', 'right-tboverride-account' => 'игнорирование чёрного списка имён участников', @@ -1998,6 +2007,14 @@ $messages['sah'] = array( 'right-tboverride-account' => 'кыттааччылар ааттарын "хара тиһигин" туттума', ); +/** Serbo-Croatian (srpskohrvatski / српскохрватски) + * @author Kolega2357 + */ +$messages['sh'] = array( + 'right-tboverride' => 'Zaobilaženje spiska zabranjenih naslova', + 'right-tboverride-account' => 'Zaobilaženje spiska zabranjenih korisničkih imena', +); + /** Sinhala (සිංහල) * @author Budhajeewa * @author පසිඳු කාවින්ද @@ -2324,6 +2341,7 @@ lütfen kaydetmeden önce düzeltin:', /** Ukrainian (українська) * @author AS * @author Ahonc + * @author Andriykopanytsia * @author Base * @author JenVan * @author Prima klasy4na @@ -2342,8 +2360,8 @@ $messages['uk'] = array( Вона підпадає під наступний запис із списку заборонених назв: $1', 'titleblacklist-forbidden-new-account' => "Заборонено використовувати ім'я користувача «$2». Ім'я відповідає наступному запису з чорного списку: $1", - 'titleblacklist-invalid' => '{{PLURAL:$1|Наступнинй рядок|Наступні рядки}} списку заборонених назв є {{PLURAL:$1|помилковим|помилковими}}; -будь ласка, виправіть {{PLURAL:$1|його|їх}} перед збереженням:', + 'titleblacklist-invalid' => '{{PLURAL:$1|1=Наступний рядок|Наступні рядки}} списку заборонених назв є {{PLURAL:$1|1=помилковим|помилковими}}; +будь ласка, виправте {{PLURAL:$1|1=його|їх}} перед збереженням:', 'titleblacklist-override' => 'Ігнорувати чорний список', 'right-tboverride' => 'ігнорування чорного списку назв сторінок або користувачів', 'right-tboverride-account' => 'ігнорування чорного списку імен користувачів', diff --git a/extensions/TitleBlacklist/TitleBlacklist.library.php b/extensions/TitleBlacklist/TitleBlacklist.library.php new file mode 100644 index 00000000..0c2a599c --- /dev/null +++ b/extensions/TitleBlacklist/TitleBlacklist.library.php @@ -0,0 +1,33 @@ + array( $this, 'test' ), + ); + + $this->getEngine()->registerInterface( __DIR__ . '/mw.ext.TitleBlacklist.lua', $lib, array() ); + } + + public function test( $action = null, $title = null ) { + $this->checkType( 'mw.ext.TitleBlacklist.test', 1, $action, 'string' ); + $this->checkTypeOptional( 'mw.ext.TitleBlacklist.test', 2, $title, 'string', '' ); + $this->incrementExpensiveFunctionCount(); + if ( $title == '' ) { + $title = $this->getParser()->mTitle->getPrefixedText(); + } + $entry = TitleBlacklist::singleton()->isBlacklisted( $title, $action ); + if ( $entry ) { + return array( array( + 'params' => $entry->getParams(), + 'regex' => $entry->getRegex(), + 'raw' => $entry->getRaw(), + 'version' => $entry->getFormatVersion(), + 'message' => $entry->getErrorMessage( $action ), + 'custommessage' => $entry->getCustomMessage() + ) ); + } + return array( null ); + } + +} diff --git a/extensions/TitleBlacklist/TitleBlacklist.list.php b/extensions/TitleBlacklist/TitleBlacklist.list.php index d197a9c5..3947e8ae 100644 --- a/extensions/TitleBlacklist/TitleBlacklist.list.php +++ b/extensions/TitleBlacklist/TitleBlacklist.list.php @@ -156,7 +156,12 @@ class TitleBlacklist { if ( $override && self::userCanOverride( $user, $action ) ) { return false; } else { - return $this->isBlacklisted( $title, $action ); + $entry = $this->isBlacklisted( $title, $action ); + if ( !$entry ) { + return false; + } + $params = $entry->getParams(); + return isset( $params['autoconfirmed'] ) && $user->isAllowed( 'autoconfirmed' ) ? false : $entry; } } @@ -172,17 +177,29 @@ class TitleBlacklist { public function isBlacklisted( $title, $action = 'edit' ) { if ( !( $title instanceof Title ) ) { $title = Title::newFromText( $title ); + if ( !( $title instanceof Title ) ) { + // The fact that the page name is invalid will stop whatever + // action is going through. No sense in doing more work here. + return false; + } } $blacklist = $this->getBlacklist(); + $autoconfirmedItem = false; foreach ( $blacklist as $item ) { - if ( $item->matches( $title, $action ) ) { + if ( $item->matches( $title->getFullText(), $action ) ) { if ( $this->isWhitelisted( $title, $action ) ) { return false; } - return $item; // "returning true" + $params = $item->getParams(); + if ( !isset( $params['autoconfirmed'] ) ) { + return $item; + } + if ( !$autoconfirmedItem ) { + $autoconfirmedItem = $item; + } } } - return false; + return $autoconfirmedItem; } /** @@ -199,7 +216,7 @@ class TitleBlacklist { } $whitelist = $this->getWhitelist(); foreach ( $whitelist as $item ) { - if ( $item->matches( $title, $action ) ) { + if ( $item->matches( $title->getFullText(), $action ) ) { return true; } } @@ -343,7 +360,7 @@ class TitleBlacklistEntry { * Check whether a user can perform the specified action * on the specified Title * - * @param $title Title to check + * @param $title string to check * @param $action %Action to check * @return bool TRUE if the the regex matches the title, and is not overridden * else false if it doesn't match (or was overridden) @@ -357,15 +374,20 @@ class TitleBlacklistEntry { return false; } + if ( isset( $this->mParams['antispoof'] ) && is_callable( 'AntiSpoof::checkUnicodeString' ) ) { + list( $ok, $norm ) = AntiSpoof::checkUnicodeString( $title ); + if ( $ok == "OK" ) { + list( $ver, $title ) = explode( ':', $norm, 2 ); + } else { + wfDebugLog( 'TitleBlacklist', 'AntiSpoof could not normalize "' . $title . '".' ); + } + } + wfSuppressWarnings(); - $match = preg_match( "/^(?:{$this->mRegex})$/us" . ( isset( $this->mParams['casesensitive'] ) ? '' : 'i' ), $title->getFullText() ); + $match = preg_match( "/^(?:{$this->mRegex})$/us" . ( isset( $this->mParams['casesensitive'] ) ? '' : 'i' ), $title ); wfRestoreWarnings(); - global $wgUser; if ( $match ) { - if ( isset( $this->mParams['autoconfirmed'] ) && $wgUser->isAllowed( 'autoconfirmed' ) ) { - return false; - } if ( isset( $this->mParams['moveonly'] ) && $action != 'move' ) { return false; } @@ -427,6 +449,9 @@ class TitleBlacklistEntry { if ( preg_match( '/errmsg\s*=\s*(.+)/i', $opt, $matches ) ) { $options['errmsg'] = $matches[1]; } + if ( $opt2 == 'antispoof' ) { + $options['antispoof'] = true; + } } // Process magic words preg_match_all( '/{{\s*([a-z]+)\s*:\s*(.+?)\s*}}/', $regex, $magicwords, PREG_SET_ORDER ); @@ -469,10 +494,10 @@ class TitleBlacklistEntry { } /** - * @return array This entry's options + * @return array This entry's parameters */ - public function getOptions() { - return $this->mOptions; + public function getParams() { + return $this->mParams; } /** diff --git a/extensions/TitleBlacklist/TitleBlacklist.php b/extensions/TitleBlacklist/TitleBlacklist.php index 68fb6778..acd946d6 100644 --- a/extensions/TitleBlacklist/TitleBlacklist.php +++ b/extensions/TitleBlacklist/TitleBlacklist.php @@ -22,6 +22,7 @@ $dir = __DIR__; $wgExtensionMessagesFiles['TitleBlacklist'] = $dir . '/TitleBlacklist.i18n.php'; $wgAutoloadClasses['TitleBlacklist'] = $dir . '/TitleBlacklist.list.php'; $wgAutoloadClasses['TitleBlacklistHooks'] = $dir . '/TitleBlacklist.hooks.php'; +$wgAutoloadClasses['Scribunto_LuaTitleBlacklistLibrary'] = $dir . '/TitleBlacklist.library.php'; /** @defgroup Title blacklist source types * @{ @@ -76,6 +77,16 @@ $wgHooks['CentralAuthAutoCreate'][] = 'TitleBlacklistHooks::centralAuthAutoCreat $wgHooks['EditFilter'][] = 'TitleBlacklistHooks::validateBlacklist'; $wgHooks['ArticleSaveComplete'][] = 'TitleBlacklistHooks::clearBlacklist'; $wgHooks['UserCreateForm'][] = 'TitleBlacklistHooks::addOverrideCheckbox'; +$wgHooks['UnitTestsList'][] = function( &$files ) { + $files += glob( __DIR__ . '/tests/*Test.php' ); + return true; +}; +$wgHooks['ScribuntoExternalLibraries'][] = function( $engine, array &$extraLibraries ) { + if( $engine == 'lua' ) { + $extraLibraries['mw.ext.TitleBlacklist'] = 'Scribunto_LuaTitleBlacklistLibrary'; + } + return true; +}; $wgResourceModules['mediawiki.api.titleblacklist'] = array( 'scripts' => 'mediawiki.api.titleblacklist.js', diff --git a/extensions/TitleBlacklist/mw.ext.TitleBlacklist.lua b/extensions/TitleBlacklist/mw.ext.TitleBlacklist.lua new file mode 100644 index 00000000..1b48eed1 --- /dev/null +++ b/extensions/TitleBlacklist/mw.ext.TitleBlacklist.lua @@ -0,0 +1,22 @@ +local TitleBlacklist = {} +local php + +function TitleBlacklist.test( action, title ) + return php.test( action, title ) +end + +function TitleBlacklist.setupInterface( options ) + -- Boilerplate + TitleBlacklist.setupInterface = nil + php = mw_interface + mw_interface = nil + + -- Register this library in the "mw" global + mw = mw or {} + mw.ext = mw.ext or {} + mw.ext.TitleBlacklist = TitleBlacklist + + package.loaded['mw.ext.TitleBlacklist'] = TitleBlacklist +end + +return TitleBlacklist diff --git a/extensions/TitleBlacklist/tests/ApiQueryTitleBlacklistTest.php b/extensions/TitleBlacklist/tests/ApiQueryTitleBlacklistTest.php index 1f8164e7..344e9996 100644 --- a/extensions/TitleBlacklist/tests/ApiQueryTitleBlacklistTest.php +++ b/extensions/TitleBlacklist/tests/ApiQueryTitleBlacklistTest.php @@ -105,6 +105,28 @@ class ApiQueryTitleBlacklistTest extends ApiTestCase { $listed[0]['titleblacklist']['line'], 'Correct blacklist line is returned' ); + } + + /** + * Tests integration with the AntiSpoof extension + */ + function testAntiSpoofIntegration() { + if ( !class_exists( 'AntiSpoof') ) { + $this->markTestSkipped( "This test requires the AntiSpoof extension" ); + } + + $listed = $this->doApiRequest( array( + 'action' => 'titleblacklist', + 'tbtitle' => 'AVVVV', + 'tbaction' => 'create', + 'tbnooverride' => true, + ) ); + + $this->assertEquals( + 'blacklisted', + $listed[0]['titleblacklist']['result'], + 'Spoofed title is blacklisted' + ); } } diff --git a/extensions/TitleBlacklist/tests/testSource b/extensions/TitleBlacklist/tests/testSource index f73d9dd7..235cc671 100644 --- a/extensions/TitleBlacklist/tests/testSource +++ b/extensions/TitleBlacklist/tests/testSource @@ -2,3 +2,4 @@ .*[Ff]ail.* .*[Nn]yancat.* .*evil_acc.* +AW{1,10} diff --git a/extensions/WikiEditor/.jshintignore b/extensions/WikiEditor/.jshintignore index 66a218b5..b97a47d3 100644 --- a/extensions/WikiEditor/.jshintignore +++ b/extensions/WikiEditor/.jshintignore @@ -1,2 +1,4 @@ # upstream lib from Google modules/contentCollector.js +# messy +modules/jquery.wikiEditor.iframe.js diff --git a/extensions/WikiEditor/.jshintrc b/extensions/WikiEditor/.jshintrc index 64cd5087..5d335e32 100644 --- a/extensions/WikiEditor/.jshintrc +++ b/extensions/WikiEditor/.jshintrc @@ -1,9 +1,33 @@ { + /* Common */ + + // Enforcing + "camelcase": true, + "curly": true, + "eqeqeq": true, + "immed": true, + "latedef": true, + "newcap": true, + "noarg": true, + "noempty": true, + "nonew": true, + "quotmark": "single", + "trailing": true, + "undef": true, + "unused": true, + // Legacy + "onevar": true, + + /* Local */ + + // Relaxing + "loopfunc": true, + "multistr": true, + // Environment + "browser": true, + "predef": [ "mediaWiki", "jQuery" - ], - "browser": true, - "smarttabs": true, - "multistr": true + ] } diff --git a/extensions/WikiEditor/COPYING b/extensions/WikiEditor/COPYING new file mode 100644 index 00000000..d159169d --- /dev/null +++ b/extensions/WikiEditor/COPYING @@ -0,0 +1,339 @@ + 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. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/extensions/WikiEditor/WikiEditor.i18n.php b/extensions/WikiEditor/WikiEditor.i18n.php index 26f1e2ca..fa3c1b0b 100644 --- a/extensions/WikiEditor/WikiEditor.i18n.php +++ b/extensions/WikiEditor/WikiEditor.i18n.php @@ -334,6 +334,7 @@ I guess that "feature-providing modules" means the same as "modules providing fe {{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-title' => '{{Identical|Edit template}}', '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}}''", @@ -1281,6 +1282,7 @@ $1:Eixemplo.jpg|Piet_de_foto_2', /** Old English (Ænglisc) * @author Gott wisst + * @author Shirayuki * @author Wōdenhelm */ $messages['ang'] = array( @@ -4032,6 +4034,7 @@ $1:Cuntuh.jpg|Judul2', ); /** Bengali (বাংলা) + * @author Aftab1995 * @author Bellayet * @author Leemon2010 * @author Nasir8891 @@ -4149,8 +4152,8 @@ $messages['bn'] = array( '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-gallery-example' => '$1:উদাহরণ.jpg|ক্যাপশন১ +$1:উদাহরণ.jpg|ক্যাপশন২', 'wikieditor-toolbar-tool-newline' => 'নতুন লাইন', 'wikieditor-toolbar-tool-table' => 'ছক', 'wikieditor-toolbar-tool-table-example-old' => '- @@ -5069,7 +5072,7 @@ Voleu convertir-lo en un enllaç intern?", '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-file-title' => 'Insereix arxiu', + 'wikieditor-toolbar-tool-file-title' => 'Inserir un fitxer', 'wikieditor-toolbar-file-target' => 'Nom del fitxer:', 'wikieditor-toolbar-file-caption' => 'Títol:', 'wikieditor-toolbar-file-size' => 'Mida:', @@ -5077,7 +5080,7 @@ Voleu convertir-lo en un enllaç intern?", 'wikieditor-toolbar-file-default' => '(per defecte)', 'wikieditor-toolbar-file-format' => 'Format:', 'wikieditor-toolbar-file-format-none' => 'cap', - 'wikieditor-toolbar-tool-file-insert' => 'Inserta', + 'wikieditor-toolbar-tool-file-insert' => 'Insereix', 'wikieditor-toolbar-tool-file-cancel' => 'Cancel·la', 'wikieditor-toolbar-tool-reference' => 'Referència', 'wikieditor-toolbar-tool-reference-example' => 'Inseriu la nota al peu aquí', @@ -5251,8 +5254,8 @@ $1:Example.jpg|Peu2', * @author Умар */ $messages['ce'] = array( - 'wikieditor' => 'Викийозан рéдоккхучечохь аллсам чулоцург', - 'wikieditor-desc' => 'Аьтто бо тlе хуттучо, викийозан аъ ишта кхечу харжамна рéдоккхучечохь аллсам чулоцучо', + 'wikieditor' => 'Викийоза тадаран шоьйра интерфейс', + 'wikieditor-desc' => 'Тадарш даран шоьйра интерфейс латайо кхин дукху фукцеш а', 'wikieditor-wikitext-tab' => 'Викийоза', 'wikieditor-loading' => 'Чуйолуш', 'wikieditor-preview-preference' => 'Латайé хьалха муха ю хьажар дуьхь дуьхьал', @@ -5265,7 +5268,7 @@ $messages['ce'] = array( 'wikieditor-publish-preference' => 'Латайé цхьац ког бокхуш чутохар', 'wikieditor-publish-button-publish' => 'Нахангайта', 'wikieditor-publish-button-cancel' => 'Цаоьшу', - 'wikieditor-publish-dialog-title' => 'Нахангайта оцу кхолламехь {{SITENAME}}', + 'wikieditor-publish-dialog-title' => '{{SITENAME}} проектехь арахецар', 'wikieditor-publish-dialog-summary' => 'Хийцамах лаьцна (доц язде хlу хийцам бина ахьа):', 'wikieditor-publish-dialog-minor' => 'Жим хийцам', 'wikieditor-publish-dialog-watch' => 'Тергам бé хlокху агlон', @@ -5279,41 +5282,42 @@ $messages['ce'] = array( 'wikieditor-toc-preference' => 'Латедé коьрта дерг шавигарна аттонца', 'wikieditor-toc-show' => 'Гайта коьртехь дерг', 'wikieditor-toc-hide' => 'Къайлахьо коьртехь дерг', - 'wikieditor-toolbar' => 'Рéдоккху меттиг', - 'wikieditor-toolbar-desc' => 'Рéдоккху меттиг гlоле лелорца', + 'wikieditor-toolbar' => 'Тадаран меттиг', + 'wikieditor-toolbar-desc' => 'Тадаран меттиг гӀоле лелорца', 'wikieditor-toolbar-preference' => 'Латайé гlоле йолу тадар', - 'wikieditor-toolbar-dialogs-preference' => 'Латайé йозан хьажориг йуьллург, таблийцан аъ кхин хlумнашна', # Fuzzy + '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' => 'Чоьхьа хьажораг', 'wikieditor-toolbar-tool-ilink-example' => 'Хьажориган коьрта могlа', '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' => 'Оцу вики агlон', - 'wikieditor-toolbar-tool-link-int-target' => 'Хьажийна агlо йа URL:', - 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Агlон цlе йа URL', + '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' => 'Хьалхара агlон чохь', - 'wikieditor-toolbar-tool-link-ext-target' => 'URL хьажоригаш:', - 'wikieditor-toolbar-tool-link-ext-text' => 'Хьажориган йоза:', - 'wikieditor-toolbar-tool-link-insert' => 'Чуйилла хьажориг', + '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-target-status-disambig' => 'Дуккха маьӀнаш долу агӀонаш', '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' => 'Ахьа хоттийна URL кхечу вики-агӀонан хьажорагах тера ю. Лаьий хьуна и хьажораг чоьхьарчех я?', + 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Чоьхьа хьажораг', 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Арахьара хьажораг', - 'wikieditor-toolbar-tool-link-empty' => 'Ахьа ца гайтин мичхьа хьажойеза хьажориг.', + 'wikieditor-toolbar-tool-link-empty' => 'Ахьа ца гайтин мичхьа хьажойеза хьажораг.', 'wikieditor-toolbar-tool-file' => 'Чохь йолу файл', 'wikieditor-toolbar-tool-file-example' => 'Example.jpg', 'wikieditor-toolbar-tool-file-title' => 'Файл чуйиллар', @@ -5322,6 +5326,7 @@ $messages['ce'] = array( 'wikieditor-toolbar-file-size' => 'Барам:', 'wikieditor-toolbar-file-float' => 'Нисдар:', 'wikieditor-toolbar-file-default' => '(Iад йитарца)', + 'wikieditor-toolbar-file-format-none' => 'цхьаа', 'wikieditor-toolbar-tool-file-insert' => 'Чудилла', 'wikieditor-toolbar-tool-file-cancel' => 'Цаоьшу', 'wikieditor-toolbar-tool-reference' => 'ТIетовжар', @@ -5331,7 +5336,7 @@ $messages['ce'] = array( 'wikieditor-toolbar-tool-reference-insert' => 'Чудилла', 'wikieditor-toolbar-tool-reference-text' => 'ТIетовжаран йоза', 'wikieditor-toolbar-tool-signature' => 'Куьгтаlор хан хlоттош', - 'wikieditor-toolbar-section-advanced' => 'Кхин тlе дукха', + 'wikieditor-toolbar-section-advanced' => 'Кхин тӀе', 'wikieditor-toolbar-tool-heading' => 'Корта', 'wikieditor-toolbar-tool-heading-1' => 'Локхалла 1', 'wikieditor-toolbar-tool-heading-2' => 'Локхалла 2', @@ -5362,26 +5367,26 @@ $messages['ce'] = array( '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-newline' => 'Керла могӀа', 'wikieditor-toolbar-tool-table' => 'Таблица', 'wikieditor-toolbar-tool-table-example-old' => '- -! коьрта могlа 1 -! коьрта могlа 2 -! коьрта могlа 3 +! коьрта могӀа 1 +! коьрта могӀа 2 +! коьрта могӀа 3 |- -| могlа 1, чоь 1 -| могlа 1, чоь 2 -| могlа 1, чоь 3 +| могӀа 1, чоь 1 +| могӀа 1, чоь 2 +| могӀа 1, чоь 3 |- -| могlа 2, чоь 1 -| могlа 2, чоь 2 -| могlа 2, чоь 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' => 'Бlогlамаш', - 'wikieditor-toolbar-tool-table-dimensions-header' => 'Тlетоха коьрта могlан могlа', + 'wikieditor-toolbar-tool-table-dimensions-header' => 'ТӀетоха коьрта могӀанан могӀа', 'wikieditor-toolbar-tool-table-wikitable' => 'Кечйеш дозанашца', 'wikieditor-toolbar-tool-table-sortable' => 'Листалуш йе таблица', 'wikieditor-toolbar-tool-table-example' => 'Чоьнан йоза', @@ -5405,12 +5410,12 @@ $1:Example.jpg|Цуьнах лаце2', 'wikieditor-toolbar-tool-replace-success' => 'Балийна хийцам: $1.', # Fuzzy 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ахьа ца гайтна хlу лаха деза.', 'wikieditor-toolbar-tool-replace-invalidregex' => 'Ахьа язйина цlе юх-юха нийса яц: $1', - 'wikieditor-toolbar-section-characters' => 'Саболу куьцаш', + '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-symbols' => 'Символаш', + 'wikieditor-toolbar-characters-page-greek' => 'Грекийн', 'wikieditor-toolbar-characters-page-cyrillic' => 'Кирилан', 'wikieditor-toolbar-characters-page-arabic' => 'Ӏарбийн', 'wikieditor-toolbar-characters-page-arabicextended' => 'Iаьрбийн шординарш', @@ -5429,7 +5434,7 @@ $1:Example.jpg|Цуьнах лаце2', '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-link' => 'Хьажорагаш', 'wikieditor-toolbar-help-page-heading' => 'Коьрта могlнаш', 'wikieditor-toolbar-help-page-list' => 'Могlамаш', 'wikieditor-toolbar-help-page-file' => 'Файлаш', @@ -5444,7 +5449,7 @@ $1:Example.jpg|Цуьнах лаце2', '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-description' => 'Чоьхьа хьажораг', 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Агlонан коьрта могlа|Хьажориган йоза]]
      [[Агlонан коьрта могlа]]', 'wikieditor-toolbar-help-content-ilink-result' => "Хьажориган йоза
      Агlонан коьрта могlа", 'wikieditor-toolbar-help-content-xlink-description' => 'Арахьара хьажораг', @@ -5476,7 +5481,7 @@ $1:Example.jpg|Цуьнах лаце2', 'wikieditor-toolbar-help-content-reference-description' => 'Билгалдаккхар', 'wikieditor-toolbar-help-content-reference-syntax' => 'Агlонан йоза.<ref name="test">[http://www.example.org Хьажориган йоза], кхин тlе дузуш йоза.</ref>', 'wikieditor-toolbar-help-content-reference-result' => "Агlонан йоза.[1]", - 'wikieditor-toolbar-help-content-rereference-description' => 'Кхин тlе лело изза хьажориг', + 'wikieditor-toolbar-help-content-rereference-description' => 'Кхин тӀе лело изза хьажораг', 'wikieditor-toolbar-help-content-rereference-result' => "Агlонан йоза[1].", 'wikieditor-toolbar-help-content-showreferences-description' => 'Гайта билгалдаккхар', 'wikieditor-toolbar-help-content-showreferences-result' => "
      1. ^ Хьажориган йоза, кхин тlе дузуш йоза.
      ", @@ -5739,7 +5744,7 @@ $messages['co'] = array( 'wikieditor-toolbar-tool-heading-5' => 'Livellu 5', ); -/** Czech (česky) +/** Czech (čeština) * @author Jkjk * @author Kuvaly * @author Littledogboy @@ -5777,7 +5782,7 @@ $messages['cs'] = array( '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.', # Fuzzy + 'wikieditor-toolbar-dialogs-preference' => 'Používat průvodce pro vkládání odkazů a tabulek i pro funkci hledání a nahrazování.', '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ě', @@ -6048,7 +6053,7 @@ $messages['csb'] = array( 'wikieditor-toolbar-help-content-xlink-description' => 'Bùtnowé lënczi', ); -/** Church Slavic (словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) +/** Church Slavic (словѣньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ) * @author ОйЛ */ $messages['cu'] = array( @@ -6131,7 +6136,7 @@ $messages['cy'] = array( '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 dewin sy'n mewnosod cysylltau a thablau, ac sy'n gallu chwilio a disodli", + 'wikieditor-toolbar-dialogs-preference' => "Galluogi'r dewin sy'n mewnosod cysylltau a thablau, ac sy'n gallu chwilio a disodli", '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', @@ -6861,9 +6866,11 @@ $1:Beispiel.jpg|Beschreibung2', ); /** Swiss High German (Schweizer Hochdeutsch) + * @author Filzstift * @author Geitost */ $messages['de-ch'] = array( + 'wikieditor-toolbar-dialogs-preference' => 'Assistenten zum Einfügen von Links und Tabellen sowie die Funktion «Suchen und Ersetzen» aktivieren', 'wikieditor-toolbar-tool-reference-example' => 'Fussnotentext hier einfügen', 'wikieditor-toolbar-tool-big' => 'Gross', 'wikieditor-toolbar-tool-big-example' => 'Grosser Text', @@ -6892,6 +6899,7 @@ Möchten Sie daraus einen internen Link machen?', /** Zazaki (Zazaki) * @author Erdemaslancan * @author Gorizon + * @author Marmase * @author Mirzali * @author Xoser */ @@ -6909,7 +6917,7 @@ $messages['diq'] = array( 'wikieditor-previewDialog-loading' => 'Ho bar keno...', 'wikieditor-publish-preference' => 'Game be game çap kerdişi a bike', 'wikieditor-publish-button-publish' => 'Vıla ke', - 'wikieditor-publish-button-cancel' => 'Bıterkne', + 'wikieditor-publish-button-cancel' => 'Bıtexelne', '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', @@ -6943,13 +6951,13 @@ $messages['diq'] = array( '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' => 'Metnê asnayışi:', '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' => "Greyê URL'i:", 'wikieditor-toolbar-tool-link-ext-text' => 'Metnê gri:', 'wikieditor-toolbar-tool-link-insert' => 'Gıre bıerz', - 'wikieditor-toolbar-tool-link-cancel' => 'Bıterkne', + 'wikieditor-toolbar-tool-link-cancel' => 'Bıtexelne', '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' => 'Sernameyo xırab.', @@ -6974,10 +6982,10 @@ $messages['diq'] = array( 'wikieditor-toolbar-file-format-none' => 'çıniyo', 'wikieditor-toolbar-tool-file-insert' => 'Têare ker', 'wikieditor-toolbar-tool-file-cancel' => 'Bıterkne', - 'wikieditor-toolbar-tool-reference' => 'çıme', + 'wikieditor-toolbar-tool-reference' => 'Referans', '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-title' => 'Referans dek', 'wikieditor-toolbar-tool-reference-insert' => 'de bike', 'wikieditor-toolbar-tool-reference-text' => 'Nusteyê Referansi', 'wikieditor-toolbar-tool-signature' => 'tamğayê imza ve zamani', @@ -6992,13 +7000,13 @@ $messages['diq'] = array( 'wikieditor-toolbar-group-format' => 'Format', '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' => 'Listeya nımreyın', '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ê wiki çıniyo', 'wikieditor-toolbar-tool-nowiki-example' => 'Ne-format nuşte itiya ra bıerz', - 'wikieditor-toolbar-tool-redirect' => 'Hetenayış', + 'wikieditor-toolbar-tool-redirect' => 'Serçarnayış', 'wikieditor-toolbar-tool-redirect-example' => 'Nameyê pele ke hedef biyo', 'wikieditor-toolbar-tool-big' => 'gırd', 'wikieditor-toolbar-tool-big-example' => 'metno gırd', @@ -7037,7 +7045,7 @@ $1:misal.jpg|nuşteyê resmi2', 'wikieditor-toolbar-tool-table-example' => 'metnê hucreyi', 'wikieditor-toolbar-tool-table-preview' => 'Verqayt', 'wikieditor-toolbar-tool-table-insert' => 'têare ker', - 'wikieditor-toolbar-tool-table-cancel' => 'Bıterkne', + 'wikieditor-toolbar-tool-table-cancel' => 'Bıtexelne', 'wikieditor-toolbar-tool-table-toomany' => '1000 hucrara ziyed tablo eştış pê no mesaj mumkın 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', @@ -7055,7 +7063,7 @@ $1:misal.jpg|nuşteyê resmi2', 'wikieditor-toolbar-tool-replace-success' => '$1 {{PLURAL:$1|yedeg|yedegi}} 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-section-characters' => 'Karakterê xısusiy', 'wikieditor-toolbar-characters-page-latin' => 'Latin', 'wikieditor-toolbar-characters-page-latinextended' => 'latinkiya hêrabiyaye', 'wikieditor-toolbar-characters-page-ipa' => 'IPA', @@ -7083,12 +7091,12 @@ $1:misal.jpg|nuşteyê resmi2', '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-link' => 'Gırey', 'wikieditor-toolbar-help-page-heading' => 'sernameyi', 'wikieditor-toolbar-help-page-list' => 'Listey', 'wikieditor-toolbar-help-page-file' => 'dosyayi', 'wikieditor-toolbar-help-page-reference' => 'Çımey', - 'wikieditor-toolbar-help-page-discussion' => 'werê-ameyiş/munaqeşa', + 'wikieditor-toolbar-help-page-discussion' => 'Werênayış', 'wikieditor-toolbar-help-content-italic-description' => 'italik', 'wikieditor-toolbar-help-content-italic-syntax' => "''metno italik''", 'wikieditor-toolbar-help-content-italic-result' => 'metno italik', @@ -7119,19 +7127,19 @@ $1:misal.jpg|nuşteyê resmi2', 'wikieditor-toolbar-help-content-ulist-description' => 'listeya işareti ya maddeyın', 'wikieditor-toolbar-help-content-ulist-syntax' => '* unsurê listeyi
      * unsurê listeyi', 'wikieditor-toolbar-help-content-ulist-result' => '
      • unsurê listeyi
      • unsurê listeyi
      ', - 'wikieditor-toolbar-help-content-olist-description' => 'listeya numreyın', + 'wikieditor-toolbar-help-content-olist-description' => 'Listeya nımreyın', 'wikieditor-toolbar-help-content-olist-syntax' => '# unsurê listeyi
      # unsurê listeyi', 'wikieditor-toolbar-help-content-olist-result' => '
      1. unsurê listeyi
      2. unsurê listeyi
      ', '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' => "
      metnê resmi
      ", - 'wikieditor-toolbar-help-content-reference-description' => 'çıme/referans', + 'wikieditor-toolbar-help-content-reference-description' => 'Referans', 'wikieditor-toolbar-help-content-reference-syntax' => 'metnê peli.<ref name="tesel kerdış/cerebnayiş">[http://www.misal.org metnê gıreyi], zeylê metni.</ref>', 'wikieditor-toolbar-help-content-reference-result' => "metnê peli.[1]", 'wikieditor-toolbar-help-content-rereference-description' => 'şuxulnayişê zeylê o çımeyi', 'wikieditor-toolbar-help-content-rereference-result' => "metnê peli.[1]", 'wikieditor-toolbar-help-content-showreferences-description' => 'çımeyi ramocın', - 'wikieditor-toolbar-help-content-showreferences-result' => "
      1. ^ metnê gıreyi, zeylê metni.
      ", + 'wikieditor-toolbar-help-content-showreferences-result' => "
      1. ^ metnê gırey, metno ilawe.
      ", 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'pê tamğayê zemani imza eştış', 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "nameyê karberi (mesaj) 15:54, 10 Heziran 2009 (UTC)", 'wikieditor-toolbar-help-content-signature-description' => 'imza', @@ -7176,7 +7184,7 @@ $messages['dsb'] = array( '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ś', # Fuzzy + 'wikieditor-toolbar-dialogs-preference' => 'Asistenty za zasajźenje wótkazow, tabelow a funkciju pytanja a wuměnjenja zmóžniś', 'wikieditor-toolbar-hidesig' => 'Pódpisowy tłočašk w bokach w głownem mjenjowem rumje schowaś', 'wikieditor-toolbar-loading' => 'Zacytujo se...', 'wikieditor-toolbar-tool-bold' => 'Tucny', @@ -7204,6 +7212,7 @@ $messages['dsb'] = array( '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-target-status-disambig' => 'Bok wěcejzmysłowosći', '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ś?', @@ -8463,7 +8472,7 @@ $messages['eu'] = array( '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' => 'Wiki orri 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:', @@ -8665,7 +8674,7 @@ $messages['fa'] = array( 'wikieditor' => 'رابط ویرایش پیشرفته ویکی‌متن', 'wikieditor-desc' => 'یک رابط ویرایش پیشرفته ویکی‌متن و چندین پودمان دارای قابلیت فراهم می‌کند', 'wikieditor-wikitext-tab' => 'ویکی‌متن', - 'wikieditor-loading' => 'در حال بارگیری', + 'wikieditor-loading' => 'در حال بارگیری...', 'wikieditor-preview-preference' => 'فعال‌سازی پیش‌نمایش کنار یک دیگر', 'wikieditor-preview-tab' => 'پیش‌نمایش', 'wikieditor-preview-changes-tab' => 'تغییرها', @@ -8721,7 +8730,7 @@ $messages['fa'] = array( '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-target-status-disambig' => 'صفحهٔ ابهام‌زدائی', + 'wikieditor-toolbar-tool-link-int-target-status-disambig' => 'صفحهٔ ابهام‌زدایی', 'wikieditor-toolbar-tool-link-int-invalid' => 'عنوان تعیین‌شده نامعتبر است.', 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'نشانی اینترنتی که وارد کردید به شکلی است که نمایانگر یک پیوند به صفحه‌ای داخل ویکی است. آیا می‌خواهید آن را به یک پیوند داخلی تبدیل کنید؟', 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'پیوند داخلی', @@ -8914,6 +8923,7 @@ $1:مثال.jpg|عنوان ۲', * @author Nedergard * @author Nike * @author Olli + * @author Pxos * @author Silvonen * @author Str4nd * @author Stryn @@ -8980,6 +8990,7 @@ $messages['fi'] = array( '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-target-status-disambig' => 'Täsmennyssivu', '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?', @@ -9698,9 +9709,75 @@ $messages['fur'] = array( ); /** Western Frisian (Frysk) + * @author Kening Aldgilles */ $messages['fy'] = array( + 'wikieditor-publish-button-cancel' => 'Ofbrekke', + 'wikieditor-template-editor-dialog-cancel' => 'Ofbrekke', + 'wikieditor-toc-show' => 'Ynhâld sjen litte', + 'wikieditor-toc-hide' => 'Ynhâld ferbergje', + 'wikieditor-toolbar' => 'Bewurkingsbalke', + 'wikieditor-toolbar-tool-link-title' => 'Keppeling ynfoegje', + 'wikieditor-toolbar-tool-link-insert' => 'Keppeling ynfoegje', 'wikieditor-toolbar-tool-link-cancel' => 'Ofbrekke', + 'wikieditor-toolbar-tool-file-example' => 'Eksimpel.jpg', + 'wikieditor-toolbar-tool-file-title' => 'Bestân ynfoegje', + 'wikieditor-toolbar-file-size' => 'Grutte:', + 'wikieditor-toolbar-file-default' => '(standert)', + 'wikieditor-toolbar-file-format-none' => 'gjin', + 'wikieditor-toolbar-tool-file-insert' => 'Ynfoegje', + 'wikieditor-toolbar-tool-file-cancel' => 'Ofbrekke', + 'wikieditor-toolbar-tool-reference' => 'Referinsje', + 'wikieditor-toolbar-tool-reference-example' => 'Foettekst hjir ynfoegje', + 'wikieditor-toolbar-tool-reference-cancel' => 'Ofbrekke', + 'wikieditor-toolbar-tool-reference-title' => 'Referinsje ynfoegje', + 'wikieditor-toolbar-tool-reference-insert' => 'Ynfoegje', + 'wikieditor-toolbar-tool-reference-text' => 'Referinsjetekst', + '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' => 'Koptekst', + 'wikieditor-toolbar-tool-ulist' => 'List sûnder nûmers', + 'wikieditor-toolbar-tool-olist' => 'List mei nûmers', + 'wikieditor-toolbar-group-insert' => 'Ynfoegje', + 'wikieditor-toolbar-tool-table-title' => 'Tabel ynfoegje', + 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rigen', + 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolommen', + 'wikieditor-toolbar-tool-table-dimensions-header' => 'Koprigel ynfoegje', + 'wikieditor-toolbar-tool-table-example' => 'Eksimpel', + 'wikieditor-toolbar-tool-table-insert' => 'Ynfoegje', + 'wikieditor-toolbar-tool-table-cancel' => 'Ofbrekke', + 'wikieditor-toolbar-tool-replace-search' => 'Sykje op:', + 'wikieditor-toolbar-tool-replace-replace' => 'Ferfange mei:', + 'wikieditor-toolbar-section-characters' => 'Spesjale tekens', + 'wikieditor-toolbar-characters-page-latin' => 'Latyn', + 'wikieditor-toolbar-help-page-reference' => 'Referinsjes', + 'wikieditor-toolbar-help-page-discussion' => 'Oerlis', + 'wikieditor-toolbar-help-content-italic-description' => 'Kursyf', + 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursive tekst''", + 'wikieditor-toolbar-help-content-italic-result' => 'Kursive tekst', + 'wikieditor-toolbar-help-content-bold-description' => 'Fet', + 'wikieditor-toolbar-help-content-bold-syntax' => "'''Fette tekst'''", + 'wikieditor-toolbar-help-content-bold-result' => 'Fette tekst', + 'wikieditor-toolbar-help-content-bolditalic-description' => 'Fet & kursyf', + 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Fette & kursive tekst'''''", + 'wikieditor-toolbar-help-content-bolditalic-result' => 'Fette & kursive tekst', + 'wikieditor-toolbar-help-content-ilink-description' => 'Ynterne ferwizing', + 'wikieditor-toolbar-help-content-xlink-description' => 'Eksterne ferwizing', + 'wikieditor-toolbar-help-content-heading2-syntax' => '== Koptekst ==', + 'wikieditor-toolbar-help-content-heading2-result' => '

      Koptekst

      ', + 'wikieditor-toolbar-help-content-heading3-description' => 'Lytse kop tredde nivo', + 'wikieditor-toolbar-help-content-heading3-syntax' => '== Koptekst ==', + 'wikieditor-toolbar-help-content-heading3-result' => '

      Koptekst

      ', + 'wikieditor-toolbar-help-content-heading4-description' => 'Lytse kop fjirde nivo', + 'wikieditor-toolbar-help-content-heading4-syntax' => '== Koptekst ==', + 'wikieditor-toolbar-help-content-heading4-result' => '

      Koptekst

      ', + 'wikieditor-toolbar-help-content-heading5-description' => 'Lytse kop fyfte nivo', + 'wikieditor-toolbar-help-content-heading5-syntax' => '== Koptekst ==', + 'wikieditor-toolbar-help-content-heading5-result' => '
      Koptekst
      ', + 'wikieditor-toolbar-help-content-ulist-description' => 'List sûnder nûmers', ); /** Irish (Gaeilge) @@ -9731,6 +9808,7 @@ $messages['ga'] = array( /** Scottish Gaelic (Gàidhlig) * @author Akerbeltz + * @author Shirayuki */ $messages['gd'] = array( 'wikieditor' => 'Eadar-aghaidh deasachadh wikitext adhartach', @@ -9764,7 +9842,7 @@ $messages['gd'] = array( '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', # Fuzzy + 'wikieditor-toolbar-dialogs-preference' => 'Cuir an comas na draoidhean airson ceanglaichean, clàran agus am foincsean airson lorg a dhèanamh no rudan a chur an àite rudan eile', 'wikieditor-toolbar-loading' => "'Ga luchdadh...", 'wikieditor-toolbar-tool-bold' => 'Trom', 'wikieditor-toolbar-tool-bold-example' => 'Teacs trom', @@ -11424,7 +11502,7 @@ $1:उदाहरण.jpg|चित्रशीर्षक२', 'wikieditor-toolbar-tool-replace-close' => 'बंद करें', 'wikieditor-toolbar-tool-replace-nomatch' => 'आपके खोज कुछ मिला नहीं', 'wikieditor-toolbar-tool-replace-success' => '$1 प्रतिस्थापन बनें ।', # Fuzzy - 'wikieditor-toolbar-section-characters' => 'विशेष वर्ण', + 'wikieditor-toolbar-section-characters' => 'विशेष अक्षर', 'wikieditor-toolbar-characters-page-latin' => 'लाटिन', 'wikieditor-toolbar-characters-page-latinextended' => 'लाटिन विस्तारित', 'wikieditor-toolbar-characters-page-ipa' => 'आइपीए', @@ -11517,6 +11595,7 @@ $messages['hif-latn'] = array( /** Croatian (hrvatski) * @author Bugoslav + * @author Eleassar * @author Ex13 * @author Excaliboor * @author MaGa @@ -11538,7 +11617,7 @@ $messages['hr'] = array( '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-title' => 'Objavi na {{GRAMMAR:dajalnik|{{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', @@ -11786,7 +11865,7 @@ $messages['hsb'] = array( '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ć', # Fuzzy + 'wikieditor-toolbar-dialogs-preference' => 'Asistenty za zasadźenje wotkazow, tabelow a funkciju pytanja a wuměnjenja zmóžnić', 'wikieditor-toolbar-hidesig' => 'Podpisowe tłóčatko w stronach we hłownym mjenowym rumje schować', 'wikieditor-toolbar-loading' => 'Čita so...', 'wikieditor-toolbar-tool-bold' => 'Tučny', @@ -11814,6 +11893,7 @@ $messages['hsb'] = array( '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-target-status-disambig' => 'Strona wjacewoznamowosće', '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ć?', @@ -12527,7 +12607,7 @@ $messages['ia'] = array( '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', # Fuzzy + 'wikieditor-toolbar-dialogs-preference' => 'Activar dialogos pro inserer ligamines, tabellas e le function de cercar e reimplaciar', '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', @@ -12555,6 +12635,7 @@ $messages['ia'] = array( '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-target-status-disambig' => 'Pagina de disambiguation', '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?', @@ -12570,6 +12651,7 @@ Vole tu facer lo un ligamine interne?', 'wikieditor-toolbar-file-float' => 'Alineamento:', 'wikieditor-toolbar-file-default' => '(predefinition)', 'wikieditor-toolbar-file-format' => 'Formato:', + 'wikieditor-toolbar-file-format-none' => 'nulle', 'wikieditor-toolbar-tool-file-insert' => 'Inserer', 'wikieditor-toolbar-tool-file-cancel' => 'Cancellar', 'wikieditor-toolbar-tool-reference' => 'Referentia', @@ -12636,9 +12718,9 @@ $1:Exemplo.jpg|Legenda2', '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.', # Fuzzy + 'wikieditor-toolbar-tool-table-toomany' => 'Inserer un tabella con plus de 1000 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-table-zero' => 'Tu non pote inserer un tabella 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:', @@ -12650,7 +12732,7 @@ $1:Exemplo.jpg|Legenda2', '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.', # Fuzzy + 'wikieditor-toolbar-tool-replace-success' => '$1 {{PLURAL:$1|reimplaciamento|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', @@ -12673,6 +12755,7 @@ $1:Exemplo.jpg|Legenda2', 'wikieditor-toolbar-characters-page-thai' => 'Thailandese', 'wikieditor-toolbar-characters-page-lao' => 'Laotiano', 'wikieditor-toolbar-characters-page-khmer' => 'Cambodgiano', + 'wikieditor-toolbar-characters-minus' => 'signo minus', 'wikieditor-toolbar-section-help' => 'Adjuta', 'wikieditor-toolbar-help-heading-description' => 'Description', 'wikieditor-toolbar-help-heading-syntax' => 'Entrata', @@ -13655,6 +13738,7 @@ $1:Example.jpg|Myndlýsing2', * @author Beta16 * @author Darth Kule * @author F. Cosoleto + * @author FRacco * @author Gianfranco * @author Gliu * @author McDutchie @@ -13694,7 +13778,7 @@ $messages['it'] = array( '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-preference' => 'Abilita la barra degli strumenti di modifica avanzata', 'wikieditor-toolbar-dialogs-preference' => "Abilita le finestre per l'inserimento di collegamenti, tabelle e la funzione di cerca e sostituisci", 'wikieditor-toolbar-hidesig' => 'Nasconde il pulsante della firma dalle pagine nel namespace principale', 'wikieditor-toolbar-loading' => 'Caricamento in corso...', @@ -15162,6 +15246,7 @@ $messages['kn'] = array( * @author Kwj2772 * @author LFM * @author Mintz0223 + * @author Priviet * @author 관인생략 * @author 아라 */ @@ -15213,8 +15298,8 @@ $messages['ko'] = array( '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-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' => '링크 텍스트:', @@ -15239,7 +15324,7 @@ $messages['ko'] = array( 'wikieditor-toolbar-file-caption' => '설명:', 'wikieditor-toolbar-file-size' => '크기:', 'wikieditor-toolbar-file-float' => '정렬:', - 'wikieditor-toolbar-file-default' => '(기본값)', + 'wikieditor-toolbar-file-default' => '(기본 값)', 'wikieditor-toolbar-file-format' => '형식:', 'wikieditor-toolbar-file-format-none' => '없음', 'wikieditor-toolbar-tool-file-insert' => '넣기', @@ -15313,7 +15398,7 @@ $1:Example.jpg|설명2', 'wikieditor-toolbar-tool-table-zero' => '행이나 열의 개수가 0인 표를 넣을 수 없습니다.', 'wikieditor-toolbar-tool-replace' => '찾아 바꾸기', 'wikieditor-toolbar-tool-replace-title' => '찾아 바꾸기', - 'wikieditor-toolbar-tool-replace-search' => '찾기:', + 'wikieditor-toolbar-tool-replace-search' => '찾을 대상:', 'wikieditor-toolbar-tool-replace-replace' => '바꾸기:', 'wikieditor-toolbar-tool-replace-case' => '대소문자를 구별', 'wikieditor-toolbar-tool-replace-regex' => '찾을 문자열에 정규 표현식을 적용', @@ -16468,6 +16553,8 @@ $1:Exemplum.jpg|Descriptio 2', 'wikieditor-toolbar-characters-page-telugu' => 'Telugu', 'wikieditor-toolbar-section-help' => 'Adiutatum', 'wikieditor-toolbar-help-heading-description' => 'Descriptio', + 'wikieditor-toolbar-help-heading-syntax' => 'Quod scribis', + 'wikieditor-toolbar-help-heading-result' => 'Quod accipies', 'wikieditor-toolbar-help-page-format' => 'Formatio', 'wikieditor-toolbar-help-page-link' => 'Nexus', 'wikieditor-toolbar-help-page-heading' => 'Tituli', @@ -16490,17 +16577,47 @@ $1:Exemplum.jpg|Descriptio 2', 'wikieditor-toolbar-help-content-xlink-description' => 'Nexus externus', 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Titulus nexus]
      [http://www.example.org]
      http://www.example.org', 'wikieditor-toolbar-help-content-xlink-result' => "Titulus nexus
      [1]
      http://www.example.org", + 'wikieditor-toolbar-help-content-heading2-description' => 'Secundi ordinis titulus', + 'wikieditor-toolbar-help-content-heading2-syntax' => '== Textus tituli ==', + 'wikieditor-toolbar-help-content-heading2-result' => '

      Textus tituli

      ', + 'wikieditor-toolbar-help-content-heading3-description' => 'Tertii ordinis titulus', + 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Textus tituli ===', + 'wikieditor-toolbar-help-content-heading3-result' => '

      Textus tituli

      ', + 'wikieditor-toolbar-help-content-heading4-description' => 'Quarti ordinis titulus', + 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Textus tituli ====', + 'wikieditor-toolbar-help-content-heading4-result' => '

      Textus tituli

      ', + 'wikieditor-toolbar-help-content-heading5-description' => 'Quinti ordinis titulus', + 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Textus tituli =====', + 'wikieditor-toolbar-help-content-heading5-result' => '
      Textus tituli
      ', + 'wikieditor-toolbar-help-content-ulist-description' => 'Index globosus', + 'wikieditor-toolbar-help-content-ulist-syntax' => '* Res indicata
      * Res indicata', + 'wikieditor-toolbar-help-content-ulist-result' => '
      • Res indicata
      • Res indicata
      ', 'wikieditor-toolbar-help-content-file-description' => 'Fasciculus in pagina impositus', 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Exemplum.png|thumb|Descriptio fasciculi]]', # Fuzzy 'wikieditor-toolbar-help-content-file-result' => "
      Descriptio fasciculi
      ", 'wikieditor-toolbar-help-content-reference-description' => 'Referentia bibliographica', + 'wikieditor-toolbar-help-content-reference-syntax' => 'Textus paginae.<ref name="test">[http://www.example.org Textus nexus], textus additus.</ref>', + 'wikieditor-toolbar-help-content-reference-result' => "Textus paginae.[1]", + 'wikieditor-toolbar-help-content-rereference-description' => 'Eiusdem referentiae usus additus', + 'wikieditor-toolbar-help-content-rereference-result' => "Textus paginae.[1]", 'wikieditor-toolbar-help-content-showreferences-description' => 'Referentias bibliographicas monstrare', + 'wikieditor-toolbar-help-content-showreferences-result' => "
      1. ^ Textus nexus, textus additus.
      ", 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Subscriptio tua cum indicatione temporis', 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "Nomen usoris (disputatio) 15:54, 10 Iunii 2009 (UTC)", 'wikieditor-toolbar-help-content-signature-description' => 'Subscriptio', 'wikieditor-toolbar-help-content-signature-result' => "Nomen usoris (disputatio)", ); +/** Ladino (Ladino) + * @author Menachem.Moreira + */ +$messages['lad'] = array( + 'wikieditor-wikitext-tab' => 'Vikiteksto', + 'wikieditor-publish-button-publish' => 'Publikar', + 'wikieditor-publish-dialog-title' => 'Publikar a {{SITENAME}}', + 'wikieditor-publish-dialog-publish' => 'Publikar', +); + /** Luxembourgish (Lëtzebuergesch) * @author Robby * @author Soued031 @@ -16537,7 +16654,7 @@ $messages['lb'] = array( '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' => "Assistene fir d'Drasetze vu Linken, Tabellen genee esou wéi d'Funktioun 'sichen an ersetzen' aschalten", + 'wikieditor-toolbar-dialogs-preference' => "Assistente fir d'Drasetze vu Linken, Tabellen genee sou wéi d'Funktioun 'sichen an ersetzen' aschalten", 'wikieditor-toolbar-hidesig' => 'Den Ënnerschrëftsknäppchen op Säiten am Haaptnummraum verstoppen', 'wikieditor-toolbar-loading' => 'Lueden...', 'wikieditor-toolbar-tool-bold' => 'Fettgedréckt', @@ -17004,6 +17121,7 @@ $1:Veurbeildj2|Biesjrif2', ); /** لوری (لوری) + * @author Bonevarluri * @author Mogoeilor */ $messages['lrc'] = array( @@ -17040,6 +17158,8 @@ $messages['lrc'] = array( 'wikieditor-toolbar-tool-link' => 'ديس ون', 'wikieditor-toolbar-tool-link-int' => 'سی ويكی بلگه', 'wikieditor-toolbar-tool-link-cancel' => 'رد كردن', + 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'بلگه نیئش', + 'wikieditor-toolbar-tool-file-title' => 'نیائن جانیا', 'wikieditor-toolbar-file-size' => 'انازه', 'wikieditor-toolbar-file-float' => 'د راست چيين', 'wikieditor-toolbar-file-default' => 'پيش فرض', @@ -17051,14 +17171,27 @@ $messages['lrc'] = array( 'wikieditor-toolbar-tool-reference-cancel' => 'رد كردن', 'wikieditor-toolbar-tool-reference-title' => 'دائن سرچشمه', 'wikieditor-toolbar-tool-reference-insert' => 'دائن', + 'wikieditor-toolbar-tool-signature' => 'امضا و دیسمن وخت', 'wikieditor-toolbar-section-advanced' => 'پيشرفته', 'wikieditor-toolbar-tool-heading' => 'سربلگه', + 'wikieditor-toolbar-tool-heading-1' => 'ریتراز1', + 'wikieditor-toolbar-tool-heading-3' => 'ریتراز3', + 'wikieditor-toolbar-tool-heading-5' => 'ریتراز5', + 'wikieditor-toolbar-tool-ulist' => 'نوم گه توپر بیه', + 'wikieditor-toolbar-tool-olist' => 'نوم گه شماره دار', + 'wikieditor-toolbar-tool-redirect-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-replace' => 'بگرد و جاگزین کو', + 'wikieditor-toolbar-tool-replace-title' => 'بگرد و جاگزین کو', + 'wikieditor-toolbar-tool-replace-search' => 'پی جوری سی', + 'wikieditor-toolbar-tool-replace-button-findnext' => 'نهایی نه پیدا کو', 'wikieditor-toolbar-tool-replace-close' => 'بسن', + 'wikieditor-toolbar-tool-replace-emptysearch' => 'شما سی پی جوری هیچی وارد نکردیته.', 'wikieditor-toolbar-characters-page-latin' => 'لاتين', 'wikieditor-toolbar-characters-page-symbols' => 'نماديا', 'wikieditor-toolbar-characters-page-greek' => 'هلنی', @@ -17076,7 +17209,20 @@ $messages['lrc'] = array( 'wikieditor-toolbar-characters-page-lao' => 'لائو', 'wikieditor-toolbar-characters-page-khmer' => 'خمر', 'wikieditor-toolbar-section-help' => 'هومياری', + 'wikieditor-toolbar-help-page-list' => 'نوم گه یا', + 'wikieditor-toolbar-help-page-file' => 'جانیایا', 'wikieditor-toolbar-help-page-discussion' => 'گپ', + 'wikieditor-toolbar-help-content-heading2-description' => 'دوئمی ریتراز سرون', + 'wikieditor-toolbar-help-content-heading3-description' => 'سئمین ریتراز سرون', + 'wikieditor-toolbar-help-content-heading4-description' => 'چئارمی ریتراز سرون', + 'wikieditor-toolbar-help-content-heading5-description' => 'پنجمین ریتراز سرون', + 'wikieditor-toolbar-help-content-ulist-description' => 'نوم گه توپر بیه', + 'wikieditor-toolbar-help-content-ulist-syntax' => '* قلم نوم گه
      * قلم نوم گه', + 'wikieditor-toolbar-help-content-ulist-result' => '
      • قلم نوم گه
      • قلم نوم گه
      ', + 'wikieditor-toolbar-help-content-olist-syntax' => '# قلم نوم گه
      * قلم نوم گه', + 'wikieditor-toolbar-help-content-olist-result' => '
      • قلم نوم گه
      • قلم نوم گه
      ', + 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'امضا و دیسمن وخت', + 'wikieditor-toolbar-help-content-signature-description' => 'امضا', 'wikieditor-toolbar-help-content-indent-description' => 'مئن رئته', ); @@ -18603,22 +18749,22 @@ $messages['mr'] = array( 'wikieditor' => 'विकिमजकूर संपादनाची विकसित सुविधा', 'wikieditor-desc' => 'विस्तारणीय विकिमजकुर संपादन आंतरपृष्ठ (इंटरफेस) आणि बर्‍याच वैशिष्ट्यपूर्ण निश्चयिका (मॊड्यूल्स) पुरवते', 'wikieditor-wikitext-tab' => 'विकिमजकूर', - 'wikieditor-loading' => 'चढवत आहे…', + 'wikieditor-loading' => 'प्रभारण करीत आहे', 'wikieditor-preview-preference' => 'सोबतच आजु-बाजूस दिसणारी झलक शक्य करा.', 'wikieditor-preview-tab' => 'झलक', 'wikieditor-preview-changes-tab' => 'बदल', - 'wikieditor-preview-loading' => 'चढवत आहे…', + 'wikieditor-preview-loading' => 'प्रभारण करीत आहे', 'wikieditor-previewDialog-preference' => '"झलक पहा" चौकट सक्षम करा', 'wikieditor-previewDialog-tab' => 'झलक पहा', - 'wikieditor-previewDialog-loading' => 'चढवत आहे…', + '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-summary' => 'बदलांचा सारांश :(आपण केलेल्या बदलांचे थोडक्यात वर्णन करा):', 'wikieditor-publish-dialog-minor' => 'छोटा बदल', - 'wikieditor-publish-dialog-watch' => 'या पानावर बदलांसाठी लक्ष ठेवा', + 'wikieditor-publish-dialog-watch' => 'पान निरीक्षणांतर्गत ठेवा', 'wikieditor-publish-dialog-publish' => 'प्रकाशित करा', 'wikieditor-publish-dialog-goback' => 'मागे जा', 'wikieditor-template-editor-preference' => 'विकि साच्यांची नमुना संपादन सक्षम करा', @@ -18635,11 +18781,11 @@ $messages['mr'] = array( 'wikieditor-toolbar-preference' => 'वर्धित संपादन साधनपट्टी सक्षम करा', 'wikieditor-toolbar-dialogs-preference' => 'दुवे, सारण्या (टेबल) आणि इतर भरण्याकरिता dialogs सक्षम करा', # Fuzzy 'wikieditor-toolbar-hidesig' => 'मुख्य नामविश्वातील पानांपासून स्वाक्षरीची कळ लपवा', - 'wikieditor-toolbar-loading' => 'चढवत आहे…', + 'wikieditor-toolbar-loading' => 'प्रभारण करीत आहे', 'wikieditor-toolbar-tool-bold' => 'ठळक', 'wikieditor-toolbar-tool-bold-example' => 'ठळक मजकूर', 'wikieditor-toolbar-tool-italic' => 'तिरपी मुद्राक्षरे', - 'wikieditor-toolbar-tool-italic-example' => 'तिरपी मुद्राक्षरे', + 'wikieditor-toolbar-tool-italic-example' => 'तिरप्या मुद्राक्षरातील मजकूर', 'wikieditor-toolbar-tool-ilink' => 'अंतर्गत दुवा', 'wikieditor-toolbar-tool-ilink-example' => 'शीर्षकास दुवा द्या', 'wikieditor-toolbar-tool-xlink' => 'बाह्य दुव्यात (http:// हा उपसर्ग विसरू नका)', @@ -18660,7 +18806,8 @@ $messages['mr'] = array( '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-target-status-loading' => 'पान अस्तित्व आहे काय ते तपासत आहे...', + 'wikieditor-toolbar-tool-link-int-target-status-disambig' => 'निःसंदिग्धिकरण पान', 'wikieditor-toolbar-tool-link-int-invalid' => 'तुम्ही नमूद केलेले शीर्षक अग्राह्य आहे.', 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'तुम्ही नमूद केलेली यूआरएल इतर विकिपानास जोडावयाची आहे असे दिसते. तुम्हाला अंतर्गत दुवा बनवायचा आहे काय ?', 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'अंतर्गत दुवा', @@ -18670,13 +18817,14 @@ $messages['mr'] = array( 'wikieditor-toolbar-tool-file-example' => 'उदाहरण.jpg', 'wikieditor-toolbar-tool-file-title' => 'चित्र टाका', 'wikieditor-toolbar-file-target' => 'संचिकेचे नाव:', - 'wikieditor-toolbar-file-caption' => 'वर्णन:', + 'wikieditor-toolbar-file-caption' => 'मथळा:', 'wikieditor-toolbar-file-size' => 'आकार:', 'wikieditor-toolbar-file-float' => 'समास:', - 'wikieditor-toolbar-file-format' => 'प्रकार', + 'wikieditor-toolbar-file-default' => '(अविचल)', + 'wikieditor-toolbar-file-format' => 'प्रारुप:', 'wikieditor-toolbar-file-format-none' => 'काहीही नाही', 'wikieditor-toolbar-tool-file-insert' => 'समाविष्ट करा', - 'wikieditor-toolbar-tool-file-cancel' => 'रद्द', + 'wikieditor-toolbar-tool-file-cancel' => 'रद्द करा', 'wikieditor-toolbar-tool-reference' => 'संदर्भ', 'wikieditor-toolbar-tool-reference-example' => 'तळटीप मजकूर येथे भरा', 'wikieditor-toolbar-tool-reference-cancel' => 'रद्द करा', @@ -18692,10 +18840,10 @@ $messages['mr'] = array( 'wikieditor-toolbar-tool-heading-4' => 'स्तर ४', 'wikieditor-toolbar-tool-heading-5' => 'स्तर ५', 'wikieditor-toolbar-tool-heading-example' => 'अग्रशीर्ष मजकूर', - 'wikieditor-toolbar-group-format' => 'आराखडा', + 'wikieditor-toolbar-group-format' => 'प्रारुप', 'wikieditor-toolbar-tool-ulist' => 'बिंदी क्रमांकन', 'wikieditor-toolbar-tool-ulist-example' => 'बिंदी क्रमांकन घटक', - 'wikieditor-toolbar-tool-olist' => 'अनुक्रम यादी', + 'wikieditor-toolbar-tool-olist' => 'अनुक्रमित यादी', 'wikieditor-toolbar-tool-olist-example' => 'अनुक्रम यादी घटक', 'wikieditor-toolbar-tool-indent' => 'समासांतर', 'wikieditor-toolbar-tool-indent-example' => 'समासांतर ओळ', @@ -18733,7 +18881,7 @@ $1:Example.jpg|चित्रपरिचय २', '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-dimensions-header' => 'शीर्ष ओळ जोडा', 'wikieditor-toolbar-tool-table-wikitable' => 'काठासहीत शैली', 'wikieditor-toolbar-tool-table-sortable' => 'सारणी क्रमानुसारी करण्याजोगी करा', 'wikieditor-toolbar-tool-table-example' => 'उदाहरण', @@ -18776,7 +18924,7 @@ $1:Example.jpg|चित्रपरिचय २', 'wikieditor-toolbar-characters-page-devanagari' => 'देवनागरी', 'wikieditor-toolbar-characters-page-thai' => 'थाई भाषा', 'wikieditor-toolbar-characters-page-lao' => 'लाऒ भाषा', - 'wikieditor-toolbar-characters-page-khmer' => 'खमेर', + 'wikieditor-toolbar-characters-page-khmer' => 'ख्मेर', 'wikieditor-toolbar-characters-minus' => 'ॠण चिन्ह', 'wikieditor-toolbar-section-help' => 'साहाय्य', 'wikieditor-toolbar-help-heading-description' => 'वर्णन', @@ -18819,7 +18967,7 @@ $1:Example.jpg|चित्रपरिचय २', '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-description' => 'अनुक्रमित यादी', 'wikieditor-toolbar-help-content-olist-syntax' => '# यादी घटक
      # यादी घटक', 'wikieditor-toolbar-help-content-olist-result' => '
      1. यादी घटक
      2. यादी घटक
      ', 'wikieditor-toolbar-help-content-file-description' => 'संलग्न संचिका', @@ -18833,8 +18981,7 @@ $1:Example.jpg|चित्रपरिचय २', 'wikieditor-toolbar-help-content-rereference-result' => "पान मजकूर.[1]", 'wikieditor-toolbar-help-content-showreferences-description' => 'संदर्भ दर्शवा', 'wikieditor-toolbar-help-content-showreferences-result' => "
      1. ^ Link text, additional text.
      ", - 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'वेळेसह तुमची सही -तुमची सही व वेळ', + 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'सही आणि वेळठसा', 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "सदस्यनाव (चर्चा) 15:54, 10 June 2009 (UTC)", 'wikieditor-toolbar-help-content-signature-description' => 'सही', 'wikieditor-toolbar-help-content-signature-result' => "सदस्यनाव (चर्चा)", @@ -20377,7 +20524,7 @@ $messages['nn'] = array( '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', # Fuzzy + 'wikieditor-toolbar-dialogs-preference' => 'Aktiver dialogar for insetjing av lenkjer, tabellar og søk og byt ut-funksjonen', 'wikieditor-toolbar-loading' => 'Lastar …', 'wikieditor-toolbar-tool-bold' => 'Feit', 'wikieditor-toolbar-tool-bold-example' => 'Feit tekst', @@ -20612,6 +20759,7 @@ $messages['nso'] = array( ); /** Occitan (occitan) + * @author Beta16 * @author Boulaur * @author Cedric31 * @author Jfblanc @@ -20646,7 +20794,7 @@ $messages['oc'] = array( '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' => 'Barra d’aisinas de modificacion', 'wikieditor-toolbar-desc' => "Modificacion de la barra d'aisinas amb l'utilizabilitat melhorada", 'wikieditor-toolbar-preference' => "Activar la barra d'aisinas melhorada", 'wikieditor-toolbar-dialogs-preference' => 'Activar las bóstias de dialòg per apondre de ligams, de tablèus e mai encara', # Fuzzy @@ -20686,7 +20834,7 @@ $messages['oc'] = array( 'wikieditor-toolbar-tool-file-example' => 'Exemple.jpg', 'wikieditor-toolbar-tool-file-title' => 'Importar un fichièr', 'wikieditor-toolbar-file-target' => 'Nom de fichièr :', - 'wikieditor-toolbar-file-caption' => 'Legenda :', + 'wikieditor-toolbar-file-caption' => 'Legenda:', 'wikieditor-toolbar-file-size' => 'Talha :', 'wikieditor-toolbar-file-float' => 'Alinhament :', 'wikieditor-toolbar-file-default' => '(per defaut)', @@ -21957,7 +22105,7 @@ $messages['pms'] = array( '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", # Fuzzy + 'wikieditor-toolbar-dialogs-preference' => "Ativé j'assistent për gionté dle anliure, dle tàule e ëdcò la fonsion d'arserca e rampiass", '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', @@ -21985,6 +22133,7 @@ $messages['pms'] = array( '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-target-status-disambig' => "Pàgina d'omonimìa", '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', @@ -22526,8 +22675,8 @@ $messages['ps'] = array( 'wikieditor-toolbar-tool-table-dimensions-rows' => 'ليکې', 'wikieditor-toolbar-tool-table-dimensions-columns' => 'ستنې', 'wikieditor-toolbar-tool-table-wikitable' => 'ډول او پولې', - 'wikieditor-toolbar-tool-table-sortable' => 'لښتيال د اوډون وړ گرځول', - 'wikieditor-toolbar-tool-table-example' => 'بېلګه', + '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' => 'ناگارل', @@ -23401,7 +23550,7 @@ $messages['ro'] = array( '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-watch' => 'Urmărește această pagină', 'wikieditor-publish-dialog-publish' => 'Salvează pagina', 'wikieditor-publish-dialog-goback' => 'Înapoi', 'wikieditor-template-editor-preference' => 'Activează modificarea formatelor wiki prin formulare', @@ -23415,7 +23564,7 @@ $messages['ro'] = array( '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', # Fuzzy + 'wikieditor-toolbar-dialogs-preference' => 'Activează asistență pentru inserarea legăturilor, tabelelor, precum și pentru funcțiile de căutare și înlocuire', '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', @@ -23443,6 +23592,7 @@ $messages['ro'] = array( '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-target-status-disambig' => 'Pagină de dezambiguizare', '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ă', @@ -23884,6 +24034,7 @@ $1:Example.jpg|Titele2', * @author Dim Grits * @author Eleferen * @author G0rn + * @author Iluvatar * @author KPu3uC B Poccuu * @author Kaganer * @author Lockal @@ -23906,7 +24057,7 @@ $messages['ru'] = array( 'wikieditor-publish-preference' => 'Включить пошаговую публикацию', 'wikieditor-publish-button-publish' => 'Опубликовать', 'wikieditor-publish-button-cancel' => 'Отмена', - 'wikieditor-publish-dialog-title' => 'Опубликование в проекте {{SITENAME}}', + 'wikieditor-publish-dialog-title' => 'Публикация в проекте {{SITENAME}}', 'wikieditor-publish-dialog-summary' => 'Описание изменений (кратко укажите какие изменения были произведены):', 'wikieditor-publish-dialog-minor' => 'Малое изменение', 'wikieditor-publish-dialog-watch' => 'Наблюдать за этой страницей', @@ -23951,6 +24102,7 @@ $messages['ru'] = array( '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-target-status-disambig' => 'Страницы разрешения неоднозначностей', 'wikieditor-toolbar-tool-link-int-invalid' => 'Указанное название недопустимо.', 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Указанный вами URL похож на ссылку на другую вики-страницу. Вы хотите сделать данную ссылку внутренней?', 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Внутренняя ссылка', @@ -24047,7 +24199,7 @@ $1:Example.jpg|Описание2', 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Заменить все', 'wikieditor-toolbar-tool-replace-close' => 'Закрыть', 'wikieditor-toolbar-tool-replace-nomatch' => 'По вашему запросу ничего не найдено.', - 'wikieditor-toolbar-tool-replace-success' => '$1 {{PLURAL:$1|замена произведена|замены произведены|замен произведено}}.', + 'wikieditor-toolbar-tool-replace-success' => '$1 {{PLURAL:$1|замена произведена|замен произведено|замены произведены}}.', 'wikieditor-toolbar-tool-replace-emptysearch' => 'Вы не указали что следует искать.', 'wikieditor-toolbar-tool-replace-invalidregex' => 'Введённое вами регулярное выражение ошибочно: $1', 'wikieditor-toolbar-section-characters' => 'Спецсимволы', @@ -24070,6 +24222,7 @@ $1:Example.jpg|Описание2', 'wikieditor-toolbar-characters-page-thai' => 'Тайские', 'wikieditor-toolbar-characters-page-lao' => 'Лаосские', 'wikieditor-toolbar-characters-page-khmer' => 'Кхмерские', + 'wikieditor-toolbar-characters-endash' => 'среднее тире', 'wikieditor-toolbar-characters-emdash' => 'длинное тире', 'wikieditor-toolbar-characters-minus' => 'знак минус', 'wikieditor-toolbar-section-help' => 'Справка', @@ -25817,7 +25970,7 @@ $messages['sl'] = array( '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 {{SITENAME}}', + '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', @@ -27012,7 +27165,7 @@ $messages['sv'] = array( '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-preference' => 'Aktivera steg-för-steg-publicering', 'wikieditor-publish-button-publish' => 'Publicera', 'wikieditor-publish-button-cancel' => 'Avbryt', 'wikieditor-publish-dialog-title' => 'Publicera i {{SITENAME}}', @@ -27313,15 +27466,15 @@ $messages['sw'] = array( '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' => 'Ingiza faili', 'wikieditor-toolbar-tool-file-example' => 'Mfano.jpg', 'wikieditor-toolbar-tool-file-title' => 'Ingiza faili', 'wikieditor-toolbar-file-target' => 'Jina la faili:', 'wikieditor-toolbar-file-size' => 'Ukubwa:', 'wikieditor-toolbar-tool-file-insert' => 'Ingiza', 'wikieditor-toolbar-tool-file-cancel' => 'Ghairi', - 'wikieditor-toolbar-tool-reference' => 'Tiniwayo', - 'wikieditor-toolbar-tool-reference-example' => 'Weka maneno ya tiniwayo hapa', + 'wikieditor-toolbar-tool-reference' => 'Marejeo', + 'wikieditor-toolbar-tool-reference-example' => 'Weka maneno ya marejeo hapa', 'wikieditor-toolbar-tool-reference-cancel' => 'Batilisha', 'wikieditor-toolbar-tool-reference-title' => 'Ingiza marejeo', 'wikieditor-toolbar-tool-reference-insert' => 'Ingiza', @@ -27429,7 +27582,7 @@ Idadi ya mistari au ya safu si halali.', '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-reference' => 'Marejeo', 'wikieditor-toolbar-help-page-discussion' => 'Majadiliano', 'wikieditor-toolbar-help-content-italic-description' => 'Italiki', 'wikieditor-toolbar-help-content-italic-syntax' => "''Maandishi ya italiki''", @@ -27464,15 +27617,15 @@ Idadi ya mistari au ya safu si halali.', 'wikieditor-toolbar-help-content-olist-description' => 'Orodha zenye namba', 'wikieditor-toolbar-help-content-olist-syntax' => '# Aya
      # Aya', 'wikieditor-toolbar-help-content-olist-result' => '
      1. Aya
      2. Aya
      ', - 'wikieditor-toolbar-help-content-file-description' => 'Faili futike', + 'wikieditor-toolbar-help-content-file-description' => 'Ingiza faili', 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Maelezo mafupi]]', 'wikieditor-toolbar-help-content-file-result' => "
      Maelezo mafupi
      ", - 'wikieditor-toolbar-help-content-reference-description' => 'Tiniwayo', + 'wikieditor-toolbar-help-content-reference-description' => 'Marejeo', 'wikieditor-toolbar-help-content-reference-syntax' => 'Maandishi ya ukurasa.<ref name="mfano">[http://www.example.org Maandishi ya kiungo], maandishi mengine.</ref>', 'wikieditor-toolbar-help-content-reference-result' => "Maandiko.[1]", - 'wikieditor-toolbar-help-content-rereference-description' => 'Kutumia tiniwayo fulani kwa mara nyingine', + 'wikieditor-toolbar-help-content-rereference-description' => 'Kutumia marejeo fulani kwa mara nyingine', 'wikieditor-toolbar-help-content-rereference-result' => "Maandiko.[1]", - 'wikieditor-toolbar-help-content-showreferences-description' => 'Onyesha tiniwayo', + 'wikieditor-toolbar-help-content-showreferences-description' => 'Onyesha marejeo', 'wikieditor-toolbar-help-content-showreferences-result' => "
      1. ^ Maandishi ya kiungo, maandishi mengine.
      ", 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Sahihi pamoja na stempu ya saa', 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "Jina la mtumiaji (majadiliano) 15:54, 10 June 2009 (UTC)", @@ -27483,6 +27636,16 @@ Idadi ya mistari au ya safu si halali.', 'wikieditor-toolbar-help-content-indent-result' => 'Maandiko ya kawaida
      Yaliyojongezwa ndani
      Yaliyojongezwa ndani
      ', ); +/** Silesian (ślůnski) + * @author Krol111 + */ +$messages['szl'] = array( + 'wikieditor' => 'Zaawansowano tajla edycyji wikitekstu', + 'wikieditor-desc' => 'Dowo poszyrzalno tajla edycyji wikitekstu a wjela funkcyji uofyrowane bez moduły', + 'wikieditor-wikitext-tab' => 'Wikitext', + 'wikieditor-loading' => 'Trwo ładowańy…', +); + /** Tamil (தமிழ்) * @author Balajijagadesh * @author Karthi.dr @@ -28681,6 +28844,7 @@ $messages['tpi'] = array( * @author Joseph * @author Koc61 * @author Manco Capac + * @author Meelo * @author Rapsar * @author Sadrettin * @author Srhat @@ -28755,6 +28919,7 @@ $messages['tr'] = array( 'wikieditor-toolbar-tool-file' => 'Gömülü dosya', 'wikieditor-toolbar-tool-file-example' => 'Örnek.jpg', 'wikieditor-toolbar-file-float' => 'Hizalama:', + 'wikieditor-toolbar-tool-file-insert' => 'Ekle', 'wikieditor-toolbar-tool-reference' => 'Kaynakça', 'wikieditor-toolbar-tool-reference-example' => 'Dipnot metnini buraya ekleyin', 'wikieditor-toolbar-tool-reference-cancel' => 'İptal', @@ -29465,7 +29630,7 @@ $1:Example.jpg|Опис2', 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Замінити всі', 'wikieditor-toolbar-tool-replace-close' => 'Закрити', 'wikieditor-toolbar-tool-replace-nomatch' => 'За Вашим запитом нічого не знайдено.', - 'wikieditor-toolbar-tool-replace-success' => '$1 {{PLURAL:$1|заміну|замін}} зроблено.', + 'wikieditor-toolbar-tool-replace-success' => '$1 {{PLURAL:$1|1=заміну|заміни|замін}} зроблено.', 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ви не зазначили, що треба шукати.', 'wikieditor-toolbar-tool-replace-invalidregex' => 'Введений вами регулярний вираз помилковий: $1', 'wikieditor-toolbar-section-characters' => 'Спеціальні символи', @@ -29848,7 +30013,7 @@ $messages['uz'] = array( 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ichki havola', 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Tashqi havola', 'wikieditor-toolbar-tool-link-empty' => 'Nimaga ishorat qilishni koʻrsatmadingiz', - 'wikieditor-toolbar-tool-file' => 'Oʻrnatilgan fayl', + 'wikieditor-toolbar-tool-file' => 'Fayl oʻrnatish', 'wikieditor-toolbar-tool-file-example' => 'Example.jpg', 'wikieditor-toolbar-tool-file-title' => 'Fayl qoʻyish', 'wikieditor-toolbar-file-target' => 'Fayl nomi:', @@ -30007,7 +30172,7 @@ $1:Example.jpg|Izoh2', 'wikieditor-toolbar-help-content-olist-description' => 'Raqamlangan roʻyxat', 'wikieditor-toolbar-help-content-olist-syntax' => '# Roʻyxat qismi
      # Roʻyxat qismi', 'wikieditor-toolbar-help-content-olist-result' => '
      1. Roʻyxat qismi
      2. Roʻyxat qismi
      ', - 'wikieditor-toolbar-help-content-file-description' => 'Oʻrnatilgan fayl', + 'wikieditor-toolbar-help-content-file-description' => 'Fayl oʻrnatish', 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Izohlovchi matn]]', 'wikieditor-toolbar-help-content-file-result' => "
      @@ -30289,17 +30454,51 @@ $messages['vep'] = array( 'wikieditor-publish-dialog-minor' => 'Penikaine redakcii', 'wikieditor-publish-dialog-publish' => 'Publikuida', 'wikieditor-publish-dialog-goback' => 'Tagaze', + 'wikieditor-template-editor-dialog-submit' => 'Udištada', + 'wikieditor-template-editor-dialog-cancel' => 'Tühjitada tego', 'wikieditor-toc-show' => 'Ozutada südäiolend', + 'wikieditor-toc-hide' => 'Peitta südäiolend', + 'wikieditor-toolbar' => "Redaktiruindan panel'", + 'wikieditor-toolbar-loading' => 'Ozutase…', 'wikieditor-toolbar-tool-bold' => 'Lihavoitud', 'wikieditor-toolbar-tool-bold-example' => 'Lihavoitud tekst', + 'wikieditor-toolbar-tool-italic' => 'Kursiv', + 'wikieditor-toolbar-tool-italic-example' => 'Kursivtekst', + 'wikieditor-toolbar-tool-ilink' => 'Südäikosketuz', + 'wikieditor-toolbar-tool-ilink-example' => 'Kosketusen pälkirjutez', + 'wikieditor-toolbar-tool-xlink' => 'Irdkosketuz (muštkat prefiksas http://)', + 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com kosketusen pälkirjutez', 'wikieditor-toolbar-tool-link' => 'Kosketuz', 'wikieditor-toolbar-tool-link-title' => 'Ližada kosketuz', + 'wikieditor-toolbar-tool-link-int' => 'Wiki-lehtpolele', + 'wikieditor-toolbar-tool-link-int-target' => "Metlehtpol' vai URL:", + 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Lehtpolen nimi vai URL:', + 'wikieditor-toolbar-tool-link-int-text' => 'Ozutadud tekst:', + 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Ozutadud tekst:', + 'wikieditor-toolbar-tool-link-ext' => 'Irdaližele saitale', 'wikieditor-toolbar-tool-link-ext-target' => 'Kosketusen URL:', 'wikieditor-toolbar-tool-link-ext-text' => 'Kosketusen tekst:', + 'wikieditor-toolbar-tool-link-insert' => 'Ližada kosketuz', 'wikieditor-toolbar-tool-link-cancel' => 'Heitta', + 'wikieditor-toolbar-tool-link-int-target-status-exists' => "Lehtpol' om jo olmas", + 'wikieditor-toolbar-tool-link-int-target-status-notexists' => "Ei ole mugošt lehtpol't", 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Vär nimi', + 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Irdkosketuz', + 'wikieditor-toolbar-tool-link-int-invalid' => 'Nece pälkirjutez om vär.', + 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Südäikosketuz', + 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Irdkosketuz', 'wikieditor-toolbar-tool-file' => 'Mülütadud fail', 'wikieditor-toolbar-tool-file-example' => 'Ozutez.jpg', + 'wikieditor-toolbar-tool-file-title' => 'Ližada fail', + 'wikieditor-toolbar-file-target' => 'Failannimi:', + 'wikieditor-toolbar-file-caption' => 'Allekirjutez:', + 'wikieditor-toolbar-file-size' => 'Suruz', + 'wikieditor-toolbar-file-float' => 'Tazostamine:', + 'wikieditor-toolbar-file-default' => '(augotižjärgendusen mödhe)', + 'wikieditor-toolbar-file-format' => 'Format:', + 'wikieditor-toolbar-file-format-none' => 'Ei ole', + 'wikieditor-toolbar-tool-file-insert' => 'Ližata', + 'wikieditor-toolbar-tool-file-cancel' => 'Tühjištada', 'wikieditor-toolbar-tool-reference-insert' => 'Ližata', 'wikieditor-toolbar-tool-heading' => 'Pälkirjutez', 'wikieditor-toolbar-tool-heading-1' => 'Tazopind 1', @@ -30481,7 +30680,7 @@ $messages['vi'] = array( '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' => 'Tập ả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', @@ -30625,7 +30824,7 @@ $messages['vo'] = array( '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', # Fuzzy + 'wikieditor-toolbar-group-format' => 'Fomät', 'wikieditor-toolbar-tool-big' => 'Gretik', 'wikieditor-toolbar-tool-big-example' => 'Vödem gretik', 'wikieditor-toolbar-tool-table' => 'Taib', @@ -31236,6 +31435,7 @@ $1:Example.jpg|Àkọlé2', * @author Horacewai2 * @author Simon Shek * @author Waihorace + * @author Xiaomingyan */ $messages['yue'] = array( 'wikieditor' => '進階維基文字編輯界面', @@ -31368,8 +31568,8 @@ $1:Example.jpg|標題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-rows' => '行数', + 'wikieditor-toolbar-tool-table-dimensions-columns' => '列數', 'wikieditor-toolbar-tool-table-dimensions-header' => '新增標題行', 'wikieditor-toolbar-tool-table-wikitable' => '連埋外框同格式', 'wikieditor-toolbar-tool-table-sortable' => '整一個可以排序嘅表格', @@ -31526,9 +31726,9 @@ $messages['zh-hans'] = array( 'wikieditor-toc-show' => '显示内容', 'wikieditor-toc-hide' => '隐藏内容', 'wikieditor-toolbar' => '编辑工具栏', - 'wikieditor-toolbar-desc' => '具有增强可用性的页面编辑工具', - 'wikieditor-toolbar-preference' => '启用增强编辑工具栏', - 'wikieditor-toolbar-dialogs-preference' => '启用对话框插入链接、表格以及搜索和替换功能', + 'wikieditor-toolbar-desc' => '有增强的使用性能的页面编辑工具栏', + 'wikieditor-toolbar-preference' => '启用增强的编辑工具栏', + 'wikieditor-toolbar-dialogs-preference' => '启用插入链接表格向导及查找和替换功能', 'wikieditor-toolbar-hidesig' => '在主名字空间中隐藏签名按钮', 'wikieditor-toolbar-loading' => '正在载入', 'wikieditor-toolbar-tool-bold' => '粗体', @@ -31567,7 +31767,7 @@ $messages['zh-hans'] = array( 'wikieditor-toolbar-tool-file-title' => '插入文件', 'wikieditor-toolbar-file-target' => '文件名:', 'wikieditor-toolbar-file-caption' => '标题:', - 'wikieditor-toolbar-file-size' => '大小:', + 'wikieditor-toolbar-file-size' => '尺寸:', 'wikieditor-toolbar-file-float' => '对齐:', 'wikieditor-toolbar-file-default' => '(默认)', 'wikieditor-toolbar-file-format' => '格式:', @@ -31575,7 +31775,7 @@ $messages['zh-hans'] = array( 'wikieditor-toolbar-tool-file-insert' => '插入', 'wikieditor-toolbar-tool-file-cancel' => '取消', 'wikieditor-toolbar-tool-reference' => '参考', - 'wikieditor-toolbar-tool-reference-example' => '在此处插入注释文字', + 'wikieditor-toolbar-tool-reference-example' => '请在这里插入注释文字', 'wikieditor-toolbar-tool-reference-cancel' => '取消', 'wikieditor-toolbar-tool-reference-title' => '插入注释内容', 'wikieditor-toolbar-tool-reference-insert' => '插入', @@ -31597,7 +31797,7 @@ $messages['zh-hans'] = array( 'wikieditor-toolbar-tool-indent' => '缩进', 'wikieditor-toolbar-tool-indent-example' => '已缩进行', 'wikieditor-toolbar-tool-nowiki' => '非维基格式文字', - 'wikieditor-toolbar-tool-nowiki-example' => '在此处插入非维基格式文字', + 'wikieditor-toolbar-tool-nowiki-example' => '请在这里插入非格式化文字', 'wikieditor-toolbar-tool-redirect' => '重定向', 'wikieditor-toolbar-tool-redirect-example' => '目标页名称', 'wikieditor-toolbar-tool-big' => '大号', @@ -31629,8 +31829,8 @@ $1:Example.jpg|标题2', '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-rows' => '行数', + 'wikieditor-toolbar-tool-table-dimensions-columns' => '列数', 'wikieditor-toolbar-tool-table-dimensions-header' => '添加标题行', 'wikieditor-toolbar-tool-table-wikitable' => '显示边框', 'wikieditor-toolbar-tool-table-sortable' => '使表格内容可排序', @@ -31759,6 +31959,7 @@ $1:Example.jpg|标题2', * @author Waihorace * @author Wong128hk * @author Wrightbus + * @author Xiaomingyan */ $messages['zh-hant'] = array( 'wikieditor' => '進階維基文字編輯介面', @@ -31904,8 +32105,8 @@ $1:Example.jpg|標題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-rows' => '行數', + 'wikieditor-toolbar-tool-table-dimensions-columns' => '列數', 'wikieditor-toolbar-tool-table-dimensions-header' => '新增標題行', 'wikieditor-toolbar-tool-table-wikitable' => '設定邊框格式', 'wikieditor-toolbar-tool-table-sortable' => '使表格內容可排序', diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.dialogs.js b/extensions/WikiEditor/modules/ext.wikiEditor.dialogs.js index 0e0dd090..c6d327f8 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.dialogs.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.dialogs.js @@ -1,15 +1,14 @@ /* * JavaScript for WikiEditor Dialogs */ - -$( document ).ready( function() { +jQuery( 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() ); } ); diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.highlight.js b/extensions/WikiEditor/modules/ext.wikiEditor.highlight.js index a6b43851..92515cfd 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.highlight.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.highlight.js @@ -1,8 +1,7 @@ /* * JavaScript for WikiEditor Highlighting */ - -$( document ).ready( function() { +jQuery( 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 index 6056e63b..46087989 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.js @@ -1,8 +1,7 @@ /* * JavaScript for WikiEditor */ - -$( document ).ready( function() { +jQuery( 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 index 3fbca82d..cdc00f7b 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.preview.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.preview.js @@ -1,8 +1,7 @@ /* * JavaScript for WikiEditor Preview module */ - -$( document ).ready( function() { +jQuery( 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 index 67f97e00..3b1acd7c 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.previewDialog.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.previewDialog.js @@ -1,8 +1,7 @@ /* * JavaScript for WikiEditor Preview Dialog */ - -$( document ).ready( function() { +jQuery( 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 index d874478c..423766d2 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.publish.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.publish.js @@ -1,8 +1,7 @@ /* * JavaScript for WikiEditor Publish module */ - -$( document ).ready( function() { +jQuery( 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 index 8879d10d..660a14fb 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.templateEditor.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.templateEditor.js @@ -1,12 +1,13 @@ /* * 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' ); -}); +( function ( mw, $ ) { + $( document ).ready( function () { + // Disable in template namespace + if ( mw.config.get( 'wgNamespaceNumber' ) === 10 ) { + return true; + } + // Add template editor module + $( 'textarea#wpTextbox1' ).wikiEditor( 'addModule', 'templateEditor' ); + } ); +}( mediaWiki, jQuery ) ); diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.templates.js b/extensions/WikiEditor/modules/ext.wikiEditor.templates.js index 6eae6de5..fec51866 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.templates.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.templates.js @@ -1,12 +1,13 @@ /* * 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' ); -} ); +( function ( mw, $ ) { + $( document ).ready( function () { + // Disable for template namespace + if ( mw.config.get( 'wgNamespaceNumber' ) === 10 ) { + return true; + } + // Add templates module + $( '#wpTextbox1' ).wikiEditor( 'addModule', 'templates' ); + } ); +}( mediaWiki, jQuery ) ); diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.tests.toolbar.js b/extensions/WikiEditor/modules/ext.wikiEditor.tests.toolbar.js index d4ffe5ae..7ed765e9 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.tests.toolbar.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.tests.toolbar.js @@ -4,7 +4,7 @@ var textareaId = '#wpTextbox1'; var wikiEditorTests = { // Add emoticons section - add_sections_toolbar: { + 'add_sections_toolbar': { call: 'addToToolbar', data: { 'sections': { @@ -159,8 +159,8 @@ var wikiEditorTests = { data: { section: 'info', page: 'removeme' - }, - test: '*[rel=info].section *[rel=removeme].page', + }, + test: '*[rel=info].section *[rel=removeme].page', pre: 1, post: 0 }, @@ -171,8 +171,8 @@ var wikiEditorTests = { section: 'info', page: 'emoticons', 'character': ':))' - }, - test: '*[rel=info].section *[rel=emoticons].page *[rel=":))"]', + }, + test: '*[rel=info].section *[rel=emoticons].page *[rel=":))"]', pre: 1, post: 0 }, @@ -211,7 +211,7 @@ jQuery(document).ready( function ( $ ) { return false; } - var test, pre, post, + var test, pre, post, i, messages = [ 'Running tests for wikiEditor API' ], $target = $( textareaId ), $ui = $target.data( 'wikiEditor-context' ).$ui, @@ -234,13 +234,13 @@ jQuery(document).ready( function ( $ ) { } if ( window.console ) { - for ( var i = 0; i < messages.length; i++ ) { + for ( i = 0; i < messages.length; i++ ) { window.console.log( messages[i] ); } } $(this) - .attr( 'title', messages.join( " | " ) ) + .attr( 'title', messages.join( ' | ' ) ) .text( passes + ' / ' + tests + ' were successful' ) .css( 'backgroundColor', passes < tests ? 'red' : 'green' ) .data( 'testDone', 'true' ) diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.toc.js b/extensions/WikiEditor/modules/ext.wikiEditor.toc.js index 264e9f86..1fc542c5 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.toc.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.toc.js @@ -1,8 +1,7 @@ /* * JavaScript for WikiEditor Table of Contents */ - -$( document ).ready( function() { +jQuery( 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 index 3bc0f0b4..48d30274 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.toolbar.hideSig.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.toolbar.hideSig.js @@ -1,7 +1,7 @@ /* * Remove the signature button if the main namespace is edited. */ -$( document ).ready( function() { +jQuery( 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 @@ -11,4 +11,4 @@ $( document ).ready( function() { 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 index 5cdeae57..3f30c0c4 100644 --- a/extensions/WikiEditor/modules/ext.wikiEditor.toolbar.js +++ b/extensions/WikiEditor/modules/ext.wikiEditor.toolbar.js @@ -1,8 +1,7 @@ /* * JavaScript for WikiEditor Toolbar */ - -$( document ).ready( function() { +jQuery( document ).ready( function ( $ ) { if ( !$.wikiEditor.isSupported( $.wikiEditor.modules.toolbar ) ) { $( '.wikiEditor-oldToolbar' ).show(); return; diff --git a/extensions/WikiEditor/modules/images/toolbar/format-bold-hy.png b/extensions/WikiEditor/modules/images/toolbar/format-bold-hy.png new file mode 100644 index 00000000..453a9580 Binary files /dev/null and b/extensions/WikiEditor/modules/images/toolbar/format-bold-hy.png differ diff --git a/extensions/WikiEditor/modules/images/toolbar/format-italic-hy.png b/extensions/WikiEditor/modules/images/toolbar/format-italic-hy.png new file mode 100644 index 00000000..108bae64 Binary files /dev/null and b/extensions/WikiEditor/modules/images/toolbar/format-italic-hy.png differ diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.css b/extensions/WikiEditor/modules/jquery.wikiEditor.css index d8e331cc..6e05ff03 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.css +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.css @@ -18,9 +18,6 @@ } .wikiEditor-ui textarea:focus { outline: none; -} -.wikiEditor-ui .wikiEditor-ui-bottom { - } .wikiEditor-ui .wikiEditor-ui-text { line-height: 0; diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.js b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.js index 0d769164..f37d004e 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.js @@ -1,6 +1,8 @@ /** * Configuration of Dialog module for wikiEditor */ +/*jshint curly:false, noarg:false, quotmark:false, onevar:false */ +/*global alert */ ( function ( $, mw ) { $.wikiEditor.modules.dialogs.config = { @@ -226,7 +228,7 @@ $.wikiEditor.modules.dialogs.config = { ); } $( '#wikieditor-toolbar-link-type-int, #wikieditor-toolbar-link-type-ext' ).click( function () { - if ( $( '#wikieditor-toolbar-link-type-ext' ).is( ':checked' ) ) { + if ( $( '#wikieditor-toolbar-link-type-ext' ).prop( 'checked' ) ) { // Abort previous request var request = $( '#wikieditor-toolbar-link-int-target-status' ).data( 'request' ); if ( request ) { @@ -234,8 +236,9 @@ $.wikiEditor.modules.dialogs.config = { } updateWidget( 'external' ); } - if ( $( '#wikieditor-toolbar-link-type-int' ).is( ':checked' ) ) + if ( $( '#wikieditor-toolbar-link-type-int' ).prop( 'checked' ) ) { updateExistence( true ); + } }); // Set labels of tabs based on rel values $(this).find( '[rel]' ).each( function () { @@ -250,12 +253,12 @@ $.wikiEditor.modules.dialogs.config = { .data( 'tooltip', mw.msg( 'wikieditor-toolbar-tool-link-int-text-tooltip' ) ); $( '#wikieditor-toolbar-link-int-target, #wikieditor-toolbar-link-int-text' ) .each( function () { - var tooltip = mw.msg( $( this ).attr( 'id' ) + '-tooltip' ); - if ( $( this ).val() === '' ) + 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' ) ) { @@ -295,26 +298,30 @@ $.wikiEditor.modules.dialogs.config = { $( '#wikieditor-toolbar-link-type-int' ).prop( 'checked', true ); updateExistence(); } - if ( $( '#wikieditor-toolbar-link-int-text' ).data( 'untouched' ) ) + /*jshint eqeqeq:false */ + 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(); - } + $( '#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 ) + 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 @@ -379,7 +386,7 @@ $.wikiEditor.modules.dialogs.config = { // Title suggestions $( '#wikieditor-toolbar-link-int-target' ).data( 'suggcache', {} ).suggestions( { - fetch: function ( query ) { + fetch: function () { var that = this; var title = $(this).val(); @@ -608,7 +615,7 @@ $.wikiEditor.modules.dialogs.config = { // 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 ) { + if ( ( e.keyCode || e.which ) === 13 ) { var button = $(this).data( 'dialogaction' ) || $(this).find( 'button:first' ); button.click(); e.preventDefault(); @@ -706,7 +713,7 @@ $.wikiEditor.modules.dialogs.config = { // 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 ) { + if ( ( e.keyCode || e.which ) === 13 ) { var button = $( this ).data( 'dialogaction' ) || $( this ).find( 'button:first' ); button.click(); e.preventDefault(); @@ -978,7 +985,7 @@ $.wikiEditor.modules.dialogs.config = { 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' ) { + if ( typeof jQuery.fn.tablesorter === 'function' ) { $( '#wikieditor-toolbar-table-preview, #wikieditor-toolbar-table-preview2' ) .filter( '.sortable' ) .tablesorter(); @@ -1070,7 +1077,7 @@ $.wikiEditor.modules.dialogs.config = { // 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 ) { + if ( ( e.keyCode || e.which ) === 13 ) { var button = $(this).data( 'dialogaction' ) || $(this).find( 'button:first' ); button.click(); e.preventDefault(); @@ -1202,7 +1209,7 @@ $.wikiEditor.modules.dialogs.config = { if ( !match ) { $( '#wikieditor-toolbar-replace-nomatch' ).show(); - } else if ( mode == 'replaceAll' ) { + } 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 @@ -1237,7 +1244,7 @@ $.wikiEditor.modules.dialogs.config = { $(this).data( 'offset', 0 ); } else { - if ( mode == 'replace' ) { + if ( mode === 'replace' ) { var actualReplacement; if (isRegex) { @@ -1330,7 +1337,7 @@ $.wikiEditor.modules.dialogs.config = { // 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 ) { + if ( ( e.keyCode || e.which ) === 13 ) { var button = $(this).data( 'dialogaction' ) || $(this).find( 'button:first' ); button.click(); e.preventDefault(); @@ -1350,12 +1357,12 @@ $.wikiEditor.modules.dialogs.config = { $( textbox ) .bind( 'keypress.srdialog', function ( e ) { - if ( e.which == 13 ) { + if ( e.which === 13 ) { // Enter var button = dialog.data( 'dialogaction' ) || dialog.find( 'button:first' ); button.click(); e.preventDefault(); - } else if ( e.which == 27 ) { + } else if ( e.which === 27 ) { // Escape $(that).dialog( 'close' ); } diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.js b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.js index f6d86d78..6d92966f 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.js @@ -42,8 +42,8 @@ $.wikiEditor.modules.dialogs = { }, openDialog: function ( context, module ) { if ( module in $.wikiEditor.modules.dialogs.modules ) { - var mod = $.wikiEditor.modules.dialogs.modules[module]; - var $dialog = $( '#' + mod.id ); + var mod = $.wikiEditor.modules.dialogs.modules[module], + $dialog = $( '#' + mod.id ); if ( $dialog.length === 0 ) { $.wikiEditor.modules.dialogs.fn.reallyCreate( context, mod, module ); $dialog = $( '#' + mod.id ); @@ -82,7 +82,7 @@ $.wikiEditor.modules.dialogs = { module = config[mod]; // Only create the dialog if it's supported, isn't filtered and doesn't exist yet filtered = false; - if ( typeof module.filters != 'undefined' ) { + if ( typeof module.filters !== 'undefined' ) { for ( i = 0; i < module.filters.length; i++ ) { if ( $( module.filters[i] ).length === 0 ) { filtered = true; @@ -92,7 +92,7 @@ $.wikiEditor.modules.dialogs = { } // If the dialog already exists, but for another textarea, simply remove it $existingDialog = $( '#' + module.id ); - if ( $existingDialog.length > 0 && $existingDialog.data( 'context' ).$textarea != context.$textarea ) { + 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 @@ -119,13 +119,13 @@ $.wikiEditor.modules.dialogs = { * @param {String} name Dialog name (key in $.wikiEditor.modules.dialogs.modules) */ reallyCreate: function ( context, module, name ) { - var msg, + var msg, dialogDiv, configuration = module.dialog; // Add some stuff to configuration configuration.bgiframe = true; configuration.autoOpen = false; // By default our dialogs are modal, unless explicitely defined in their specific configuration. - if( typeof configuration.modal == "undefined" ) { + if( typeof configuration.modal === 'undefined' ) { configuration.modal = true; } configuration.title = $.wikiEditor.autoMsg( module, 'title' ); @@ -138,7 +138,7 @@ $.wikiEditor.modules.dialogs = { } configuration.buttons = configuration.newButtons; // Create the dialog
      - var dialogDiv = $( '
      ' ) + dialogDiv = $( '
      ' ) .attr( 'id', module.id ) .html( module.html ) .data( 'context', context ) @@ -171,26 +171,28 @@ $.wikiEditor.modules.dialogs = { * 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
      inside a dialog is both - // :visible and :hidden - var oldHidden = $(this).find( '*' ).not( ':visible' ); + var oldWS, thisWidth, wrapperWidth, + wrapper = $(this).closest( '.ui-dialog' ), + 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
      inside a dialog is both + // :visible and :hidden + 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' ); + 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 = $(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 = $(this).data( 'wrapperWidth' ) ? $(this).data( 'wrapperWidth' ) : 0; wrapperWidth = Math.max( wrapper.get(0).scrollWidth, wrapperWidth ); wrapper.width( wrapperWidth ); $(this).data( 'wrapperWidth', wrapperWidth ); diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.highlight.js b/extensions/WikiEditor/modules/jquery.wikiEditor.highlight.js index 9d964fa7..f646e456 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.highlight.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.highlight.js @@ -20,13 +20,21 @@ $.wikiEditor.modules.highlight = { * Internally used event handlers */ evt: { + /** + * @param context + * @param event + */ delayedChange: function ( context, event ) { - if ( event.data.scope == 'realchange' ) { + if ( event.data.scope === 'realchange' ) { $.wikiEditor.modules.highlight.fn.scan( context ); $.wikiEditor.modules.highlight.fn.mark( context, event.data.scope ); } }, - ready: function ( context, event ) { + /** + * @param context + * @param event + */ + ready: function ( context ) { $.wikiEditor.modules.highlight.fn.scan( context ); $.wikiEditor.modules.highlight.fn.mark( context, 'ready' ); } @@ -39,19 +47,22 @@ $.wikiEditor.modules.highlight = { /** * Creates a highlight module within a wikiEditor * + * @param context * @param config Configuration object to create module from */ - create: function ( context, config ) { + create: function ( context ) { context.modules.highlight.markersStr = ''; }, /** * Scans text division for tokens * + * @param context * @param division */ - scan: function ( context, division ) { + scan: function ( context ) { var tokenArray, text, module, exp, - left, right, match; + left, right, match, + regex, label, markAfter, offset; /*jshint eqnull: true */ // Remove all existing tokens @@ -65,11 +76,11 @@ $.wikiEditor.modules.highlight = { if ( module in $.wikiEditor.modules && 'exp' in $.wikiEditor.modules[module] ) { for ( 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; + regex = $.wikiEditor.modules[module].exp[exp].regex; + label = $.wikiEditor.modules[module].exp[exp].label; + markAfter = $.wikiEditor.modules[module].exp[exp].markAfter || false; // Search for tokens - var offset = 0; + offset = 0; while ( ( match = text.substr( offset ).match( regex ) ) != null ) { right = ( left = offset + match.index ) + match[0].length; tokenArray[tokenArray.length] = { @@ -95,16 +106,19 @@ $.wikiEditor.modules.highlight = { /** * Marks up text with HTML * + * @param context * @param division * @param tokens */ // FIXME: What do division and tokens do? // TODO: Document the scan() and mark() APIs somewhere - mark: function ( context, division, tokens ) { - var i, subtracted, oldLength, j, o; + mark: function ( context, division ) { + /*jshint eqeqeq:false, onevar:false */ + var i, subtracted, oldLength, j, o, + markers; // Reset markers - var markers = []; + markers = []; // Recycle markers that will be skipped in this run if ( context.modules.highlight.markers && division !== '' ) { @@ -353,8 +367,9 @@ $.wikiEditor.modules.highlight = { // Don't remove these either return true; } - if ( marker && typeof marker.beforeUnwrap === 'function' ) + if ( marker && typeof marker.beforeUnwrap === 'function' ) { marker.beforeUnwrap( this ); + } if ( ( marker && marker.anchor === 'tag' ) || $(this).is( 'p' ) ) { // Remove all classes $(this).removeAttr( 'class' ); diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.iframe.js b/extensions/WikiEditor/modules/jquery.wikiEditor.iframe.js index 4d425012..538fcb18 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.iframe.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.iframe.js @@ -1,6 +1,6 @@ /* IFrame extension for wikiEditor */ - -( function( $ ) { $.wikiEditor.extensions.iframe = function( context ) { +/*jshint onevar:false, boss:true */ +( function ( $ ) { $.wikiEditor.extensions.iframe = function ( context ) { /* * Event Handlers @@ -14,18 +14,18 @@ context.evt = $.extend( context.evt, { * 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 ) { + keydown: function ( event ) { switch ( event.which ) { case 90: // z case 89: // y - if ( event.which == 89 && !$.browser.msie ) { + 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 ) { + if ( event.shiftKey || event.which === 89 ) { // Redo newPosition = context.historyPosition + 1; } else { @@ -35,7 +35,7 @@ context.evt = $.extend( context.evt, { // 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.fn.updateHistory( context.oldDelayedHTML !== context.$content.html() ); context.oldDelayedHistoryPosition = context.historyPosition; context.historyPosition = newPosition; // Change state @@ -65,8 +65,8 @@ context.evt = $.extend( context.evt, { 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' ) ) { + for ( var i=0; i < $tabindexList.length; i++ ) { + if ( $tabindexList.eq( i ).attr( 'id' ) === context.$iframe.attr( 'id' ) ) { $tabindexList.get( i + 1 ).focus(); break; } @@ -74,48 +74,48 @@ context.evt = $.extend( context.evt, { return false; } break; - case 86: //v - if ( event.ctrlKey && $.browser.msie && 'paste' in context.evt ) { - //paste, intercepted for IE - context.evt.paste( event ); - } - 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 ) { + change: function ( event ) { event.data.scope = 'division'; var newHTML = context.$content.html(); - if ( context.oldHTML != newHTML ) { + 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 ) { + if ( context.$content.children().length === 0 ) { context.$content.append( '

      ' ); } return true; }, - 'delayedChange': function( event ) { + delayedChange: function ( event ) { event.data.scope = 'division'; var newHTML = context.$content.html(); - if ( context.oldDelayedHTML != newHTML ) { + if ( context.oldDelayedHTML !== newHTML ) { context.oldDelayedHTML = newHTML; event.data.scope = 'realchange'; // Surround by

      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( "

      " ); + if ( ! $.browser.msie && t && t.node.nodeName === '#text' && t.node.parentNode.nodeName.toLowerCase() === 'body' ) { + $( t.node ).wrap( '

      ' ); context.fn.purgeOffsets(); context.fn.setSelection( { start: cursorPos[0], end: cursorPos[1] } ); } } - context.fn.updateHistory( event.data.scope == 'realchange' ); + context.fn.updateHistory( event.data.scope === 'realchange' ); return true; }, - 'cut': function( event ) { + cut: function ( event ) { setTimeout( function() { context.$content.find( 'br' ).each( function() { if ( $(this).parent().is( 'body' ) ) { @@ -125,7 +125,7 @@ context.evt = $.extend( context.evt, { }, 100 ); return true; }, - 'paste': function( event ) { + 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; @@ -138,6 +138,7 @@ context.evt = $.extend( context.evt, { } setTimeout( function() { + /*jshint eqnull:true */ // Kill stuff we know we don't want context.$content.find( 'script,style,img,input,select,textarea,hr,button,link,meta' ).remove(); var nodeToDelete = []; @@ -152,30 +153,31 @@ context.evt = $.extend( context.evt, { } if ( elementAtCursor == null || elementAtCursor.node == null ) { context.$content.prepend( '

      ' ); - firstDirtyNode = context.$content.children()[0]; + 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 + // This is ugly but seems like the best way to handle the case where we select and replace all editor contents try { + /*jshint expr:true */ firstDirtyNode.parentNode; } catch ( err ) { context.$content.prepend( '

      ' ); - firstDirtyNode = context.$content.children()[0]; + 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' ) - ) { + 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' ) - ) { + while ( firstDirtyNode.previousSibling != null && + !$( firstDirtyNode.previousSibling ).hasClass( 'wikiEditor' ) + ) { if ( $( firstDirtyNode.previousSibling ).hasClass( '#comment' ) ) { $( firstDirtyNode ).remove(); @@ -185,9 +187,9 @@ context.evt = $.extend( context.evt, { } if ( firstDirtyNode.previousSibling != null ) { - $lastDirtyNode = $( firstDirtyNode.previousSibling ); + $lastDirtyNode = $( firstDirtyNode.previousSibling ); } else { - $lastDirtyNode = $( firstDirtyNode ); + $lastDirtyNode = $( firstDirtyNode ); } var cc = makeContentCollector( $.browser, null ); @@ -218,7 +220,7 @@ context.evt = $.extend( context.evt, { } - if( !pastedPretty && $.browser.msie && i == 0 ) { + if ( !pastedPretty && $.browser.msie && i === 0 ) { continue; } $newElement = $( '

      ' ); @@ -241,7 +243,7 @@ context.evt = $.extend( context.evt, { //anything without wikiEditor class was pasted. $selection = context.$content.find( ':not(.wikiEditor)' ); - if ( $selection.length == 0 ) { + if ( $selection.length === 0 ) { break; } else { firstDirtyNode = $selection.eq( 0 )[0]; @@ -260,7 +262,7 @@ context.evt = $.extend( context.evt, { }, 0 ); return true; }, - 'ready': function( event ) { + ready: function ( event ) { // Initialize our history queue if ( context.$content ) { context.history.push( { 'html': context.$content.html(), 'sel': context.fn.getCaretPosition() } ); @@ -275,7 +277,11 @@ context.evt = $.extend( context.evt, { * Internally used functions */ context.fn = $.extend( context.fn, { - 'highlightLine': function( $element, mode ) { + /** + * @param {jQuery} $element + * @param mode + */ + highlightLine: function ( $element ) { if ( !$element.is( 'p' ) ) { $element = $element.closest( 'p' ); } @@ -283,7 +289,7 @@ context.fn = $.extend( context.fn, { setTimeout( function() { $element.animate( { 'backgroundColor': 'white' }, 'slow' ); }, 100 ); setTimeout( function() { $element.css( 'backgroundColor', 'white' ); }, 1000 ); }, - 'htmlToText': function( html ) { + 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]; @@ -294,15 +300,15 @@ context.fn = $.extend( context.fn, { // IE does overzealous whitespace collapsing for $( '
      ' ).html( html );
       		// We also do 
      and easy cases for

      conversion here, complicated cases are handled later html = html - .replace( /\r?\n/g, "" ) // IE7 inserts newlines before block elements - .replace( / /g, " " ) // We inserted these to prevent IE from collapsing spaces - .replace( /\]*\>\<\/p\>/gi, '

      ' ) // Remove trailing
      from

      - .replace( /\<\/p\>\s*\]*\>/gi, "\n" ) // Easy case for

      conversion - .replace( /\]*\>/gi, "\n" ) //
      conversion - .replace( /\<\/p\>(\n*)\]*\>/gi, "$1\n" ) + .replace( /\r?\n/g, '' ) // IE7 inserts newlines before block elements + .replace( / /g, ' ' ) // We inserted these to prevent IE from collapsing spaces + .replace( /]*\><\/p\>/gi, '

      ' ) // Remove trailing
      from

      + .replace( /<\/p\>\s*]*\>/gi, '\n' ) // Easy case for

      conversion + .replace( /]*\>/gi, '\n' ) //
      conversion + .replace( /<\/p\>(\n*)]*\>/gi, '$1\n' ) // Un-nest

      tags - .replace( /\]*\>]*\>/gi, '

      ' ) - .replace( /\<\/p\><\/p\>/gi, '

      ' ); + .replace( /]*\>]*\>/gi, '

      ' ) + .replace( /<\/p\><\/p\>/gi, '

      ' ); // 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]; @@ -311,8 +317,8 @@ context.fn = $.extend( context.fn, { var $pre = $( '
      ' + html + '
      ' ); $pre.find( '.wikiEditor-noinclude' ).each( function() { $( this ).remove(); } ); // Convert tabs,

      s and
      s back - $pre.find( '.wikiEditor-tab' ).each( function() { $( this ).text( "\t" ); } ); - $pre.find( 'br' ).each( function() { $( this ).replaceWith( "\n" ); } ); + $pre.find( '.wikiEditor-tab' ).each( function() { $( this ).text( '\t' ); } ); + $pre.find( 'br' ).each( function() { $( this ).replaceWith( '\n' ); } ); // Converting

      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() { @@ -323,21 +329,21 @@ context.fn = $.extend( context.fn, { // 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' ) { + while ( t && t.node.nodeName !== '#text' && t.node.nodeName !== 'BR' && t.node.nodeName !== 'P' ) { t = t.prev(); } if ( t ) { - text = "\n" + text; + 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' ) { + 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"; + 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 ); } ); @@ -357,8 +363,8 @@ context.fn = $.extend( context.fn, { * @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' ) { + beforeSelection: function ( classname, strict ) { + if ( typeof classname === 'undefined' ) { classname = ''; } var e = null, offset = null; @@ -381,7 +387,7 @@ context.fn = $.extend( context.fn, { // 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 ) { + if ( $.browser.opera && e === body && offset === 1 ) { return null; } } @@ -400,14 +406,14 @@ context.fn = $.extend( context.fn, { return null; } var seekPos = context.fn.htmlToText( range2.htmlText ).length; - var offset = context.fn.getOffset( seekPos ); + offset = context.fn.getOffset( seekPos ); e = offset ? offset.node : null; offset = offset ? offset.offset : null; if ( !e ) { return null; } } - if ( e.nodeName != '#text' ) { + if ( e.nodeName !== '#text' ) { // The selection is not in a textnode, but between two non-text nodes // (usually inside the between two
      s). Go to the rightmost // child of the node just before the selection @@ -425,7 +431,7 @@ context.fn = $.extend( context.fn, { // constructor thousands of times is very inefficient var classStr = ' ' + classname + ' '; while ( e ) { - if ( !strict && ( !classname || ( ' ' + e.className + ' ' ).indexOf( classStr ) != -1 ) ) { + if ( !strict && ( !classname || ( ' ' + e.className + ' ' ).indexOf( classStr ) !== -1 ) ) { return $( e ); } var next = e.previousSibling; @@ -440,7 +446,7 @@ context.fn = $.extend( context.fn, { /** * Object used by traverser(). Don't use this unless you know what you're doing */ - 'rawTraverser': function( node, inP, ancestor, skipNoinclude ) { + rawTraverser: function ( node, inP, ancestor, skipNoinclude ) { this.node = node; this.inP = inP; this.ancestor = ancestor; @@ -450,16 +456,16 @@ context.fn = $.extend( context.fn, { var nextInP = this.inP; while ( p && !p.nextSibling ) { p = p.parentNode; - if ( p == this.ancestor ) { + if ( p === this.ancestor ) { // We're back at the ancestor, stop here p = null; } - if ( p && p.nodeName == "P" ) { + if ( p && p.nodeName === 'P' ) { nextInP = null; } } p = p ? p.nextSibling : null; - if ( p && p.nodeName == "P" ) { + if ( p && p.nodeName === 'P' ) { nextInP = p; } do { @@ -467,13 +473,13 @@ context.fn = $.extend( context.fn, { // 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 ) { + while ( p && ( ' ' + p.className + ' ' ).indexOf( ' wikiEditor-noinclude ' ) !== -1 ) { p = p.nextSibling; } } if ( p && p.firstChild ) { p = p.firstChild; - if ( p.nodeName == "P" ) { + if ( p.nodeName === 'P' ) { nextInP = p; } } @@ -487,16 +493,16 @@ context.fn = $.extend( context.fn, { var prevInP = this.inP; while ( p && !p.previousSibling ) { p = p.parentNode; - if ( p == this.ancestor ) { + if ( p === this.ancestor ) { // We're back at the ancestor, stop here p = null; } - if ( p && p.nodeName == "P" ) { + if ( p && p.nodeName === 'P' ) { prevInP = null; } } p = p ? p.previousSibling : null; - if ( p && p.nodeName == "P" ) { + if ( p && p.nodeName === 'P' ) { prevInP = p; } do { @@ -510,7 +516,7 @@ context.fn = $.extend( context.fn, { } if ( p && p.lastChild ) { p = p.lastChild; - if ( p.nodeName == "P" ) { + if ( p.nodeName == 'P' ) { prevInP = p; } } @@ -528,28 +534,28 @@ context.fn = $.extend( context.fn, { * @return Traverser object, use .next() or .prev() to get a traverser object referring to the * previous/next node */ - 'traverser': function( start ) { + 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; + 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 ) { + while ( node && ( ' ' + node.className + ' ' ).indexOf( ' wikiEditor-noinclude ' ) !== -1 ) { node = node.nextSibling; } if ( node && node.firstChild ) { node = node.firstChild; - if ( node.nodeName == "P" ) { + if ( node.nodeName === 'P' ) { inP = node; } } } while ( node && node.firstChild ); return new context.fn.rawTraverser( node, inP, startNode, true ); }, - 'getOffset': function( offset ) { + getOffset: function ( offset ) { if ( !context.offsets ) { context.fn.refreshOffsets(); } @@ -578,21 +584,21 @@ context.fn = $.extend( context.fn, { 'lastTextNode': base.lastTextNode }; }, - 'purgeOffsets': function() { + purgeOffsets: function () { context.offsets = null; }, - 'refreshOffsets': function() { + 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' ) { + 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 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 ); + var leavingP = t.node.nodeName === '#text' && t.inP && nextT && ( !nextT.inP || nextT.inP !== t.inP ); context.offsets[pos] = { 'node': t.node, 'offset': 0, @@ -610,27 +616,27 @@ context.fn = $.extend( context.fn, { }; } pos = nextPos + ( leavingP ? 1 : 0 ); - if ( t.node.nodeName == '#text' ) { + if ( t.node.nodeName === '#text' ) { lastTextNode = t.node; } t = nextT; } }, - 'saveCursorAndScrollTop': function() { + saveCursorAndScrollTop: function () { // Stub out textarea behavior return; }, - 'restoreCursorAndScrollTop': function() { + restoreCursorAndScrollTop: function () { // Stub out textarea behavior return; }, - 'saveSelection': function() { + saveSelection: function () { if ( $.client.profile().name === 'msie' ) { context.$iframe[0].contentWindow.focus(); context.savedSelection = context.$iframe[0].contentWindow.document.selection.createRange(); } }, - 'restoreSelection': function() { + restoreSelection: function () { if ( $.client.profile().name === 'msie' && context.savedSelection !== null ) { context.$iframe[0].contentWindow.focus(); context.savedSelection.select(); @@ -640,10 +646,10 @@ context.fn = $.extend( context.fn, { /** * Update the history queue * - * @param htmlChange pass true or false to inidicate if there was a text change that should potentially + * @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 ) { + 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? @@ -675,7 +681,7 @@ context.fn = $.extend( context.fn, { /** * Sets up the iframe in place of the textarea to allow more advanced operations */ - 'setupIframe': function() { + setupIframe: function () { context.$iframe = $( '' ) .attr( { 'frameBorder': 0, @@ -834,7 +840,7 @@ context.fn = $.extend( context.fn, { * equivilant functionality to the otherwise textarea-based functionality. */ - 'getElementAtCursor': function() { + getElementAtCursor: function () { if ( context.$iframe[0].contentWindow.getSelection ) { // Firefox and Opera var selection = context.$iframe[0].contentWindow.getSelection(); @@ -855,7 +861,7 @@ context.fn = $.extend( context.fn, { /** * Gets the complete contents of the iframe (in plain text, not HTML) */ - 'getContents': function() { + getContents: function () { // For

      , .html() returns

       

      in IE // This seems to convince IE while not affecting display if ( !context.$content ) { @@ -880,7 +886,7 @@ context.fn = $.extend( context.fn, { * Gets the currently selected text in the content * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead */ - 'getSelection': function() { + getSelection: function () { var retval; if ( context.$iframe[0].contentWindow.getSelection ) { // Firefox and Opera @@ -915,7 +921,7 @@ context.fn = $.extend( context.fn, { * selection is empty. * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead */ - 'encapsulateSelection': function( options ) { + encapsulateSelection: function ( options ) { var selText = $(this).textSelection( 'getSelection' ); var selTextArr; var collapseToEnd = false; @@ -1127,7 +1133,7 @@ context.fn = $.extend( context.fn, { * 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 ) { + getCaretPosition: function ( options ) { var startPos = null, endPos = null; if ( context.$iframe[0].contentWindow.getSelection ) { var selection = context.$iframe[0].contentWindow.getSelection(); @@ -1264,7 +1270,7 @@ context.fn = $.extend( context.fn, { * @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 ) { + setSelection: function ( options ) { var sc = options.startContainer, ec = options.endContainer; sc = sc && sc.jquery ? sc[0] : sc; ec = ec && ec.jquery ? ec[0] : ec; @@ -1351,7 +1357,7 @@ context.fn = $.extend( context.fn, { * 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 ) { + scrollToCaretPosition: function ( options ) { context.fn.scrollToTop( context.fn.getElementAtCursor(), true ); }, /** @@ -1361,7 +1367,7 @@ context.fn = $.extend( context.fn, { * @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 ) { + scrollToTop: function ( $element, force ) { var html = context.$content.closest( 'html' ), body = context.$content.closest( 'body' ), parentHtml = $( 'html' ), diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.js b/extensions/WikiEditor/modules/jquery.wikiEditor.js index def8b69e..85030b66 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.js @@ -8,7 +8,8 @@ * $( 'textarea#wpTextbox1' ).wikiEditor( 'addModule', 'toolbar', { ... config ... } ); * */ -( function ( $ ) { +/*jshint onevar:false, boss:true */ +( function ( $, mw ) { /** * Global static object for wikiEditor that provides generally useful functionality to all modules and contexts. @@ -113,7 +114,7 @@ $.wikiEditor = { isRequired: function ( module, requirement ) { if ( typeof module.req !== 'undefined' ) { for ( var req in module.req ) { - if ( module.req[req] == requirement ) { + if ( module.req[req] === requirement ) { return true; } } @@ -132,9 +133,10 @@ $.wikiEditor = { * with the key 'bar'. */ autoMsg: function ( object, property ) { + var i, p; // Accept array of possible properties, of which the first one found will be used - if ( typeof property == 'object' ) { - for ( var i in property ) { + if ( typeof property === 'object' ) { + for ( i in property ) { if ( property[i] in object || property[i] + 'Msg' in object ) { property = property[i]; break; @@ -144,11 +146,11 @@ $.wikiEditor = { if ( property in object ) { return object[property]; } else if ( property + 'Msg' in object ) { - var p = object[property + 'Msg']; + p = object[property + 'Msg']; if ( $.isArray( p ) && p.length >= 2 ) { - return mediaWiki.message.apply( mediaWiki.message, p ).plain(); + return mw.message.apply( mw.message, p ).plain(); } else { - return mediaWiki.message( p ).plain(); + return mw.message( p ).plain(); } } else { return ''; @@ -181,10 +183,10 @@ $.wikiEditor = { 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] != '/' ) { + if ( src.substr( 0, 7 ) !== 'http://' && src.substr( 0, 8 ) !== 'https://' && src[0] !== '/' ) { src = path + src; } - return src + '?' + mw.loader.version( 'jquery.wikiEditor' ); + return src + '?' + mw.loader.getVersion( 'jquery.wikiEditor' ); }, /** @@ -197,9 +199,9 @@ $.wikiEditor = { */ autoIconOrOffset: function ( icon, offset, path, lang ) { lang = lang || mw.config.get( 'wgUserLanguage' ); - if ( typeof offset == 'object' && lang in offset ) { + if ( typeof offset === 'object' && lang in offset ) { return offset[lang]; - } else if ( typeof icon == 'object' && lang in icon ) { + } else if ( typeof icon === 'object' && lang in icon ) { return $.wikiEditor.autoIcon( icon, undefined, lang ); } else { return $.wikiEditor.autoLang( offset, lang ); @@ -223,7 +225,7 @@ if ( !$.wikiEditor.isSupported() ) { // 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' ) { +if ( !context || typeof context === 'undefined' ) { // Star filling the context with useful data - any jQuery selections, as usual should be named with a preceding $ context = { @@ -247,7 +249,7 @@ if ( !context || typeof context == 'undefined' ) { 'oldDelayedHTML': null, // The previous selection of the iframe, stored to detect whether the selection has changed 'oldDelayedSel': null, - // Saved selection state for IE + // Saved selection state for old IE (<=10) 'savedSelection': null, // Stack of states in { html: [string] } form 'history': [], @@ -276,14 +278,14 @@ if ( !context || typeof context == 'undefined' ) { 'addModule': function ( context, data ) { var module, call, modules = {}; - if ( typeof data == 'string' ) { + if ( typeof data === 'string' ) { modules[data] = {}; - } else if ( typeof data == 'object' ) { + } else if ( typeof data === 'object' ) { modules = data; } for ( 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' && + 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 @@ -326,11 +328,11 @@ if ( !context || typeof context == 'undefined' ) { */ 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' ) { + if ( typeof event === 'undefined' ) { event = { 'type': 'custom' }; } // Ensure there's a place for extra information to live - if ( typeof event.data == 'undefined' ) { + if ( typeof event.data === 'undefined' ) { event.data = {}; } @@ -393,7 +395,7 @@ if ( !context || typeof context == 'undefined' ) { // Return the newly appended tab return $( '
      ' ) .attr( 'rel', 'wikiEditor-ui-view-' + options.name ) - .addClass( context.view == options.name ? 'current' : null ) + .addClass( context.view === options.name ? 'current' : null ) .append( $( '' ) .attr( 'href', '#' ) .mousedown( function () { @@ -406,7 +408,7 @@ if ( !context || typeof context == 'undefined' ) { context.$tabs.find( 'div' ).removeClass( 'current' ); $(this).parent().addClass( 'current' ); $(this).blur(); - if ( 'init' in options && typeof options.init == 'function' ) { + if ( 'init' in options && typeof options.init === 'function' ) { options.init( context ); } event.preventDefault(); @@ -457,17 +459,17 @@ if ( !context || typeof context == 'undefined' ) { }, /** - * Save text selection for IE + * Save text selection for old IE (<=10) */ saveSelection: function () { - if ( $.client.profile().name === 'msie' ) { + if ( $.client.profile().name === 'msie' && document.selection && document.selection.createRange ) { context.$textarea.focus(); context.savedSelection = document.selection.createRange(); } }, /** - * Restore text selection for IE + * Restore text selection for old IE (<=10) */ restoreSelection: function () { if ( $.client.profile().name === 'msie' && context.savedSelection !== null ) { @@ -478,6 +480,13 @@ if ( !context || typeof context == 'undefined' ) { } }; + /** + * Workaround for a scrolling bug in IE8 (bug 61908) + */ + if ( $.client.profile().name === 'msie' ) { + context.$textarea.css( 'height', context.$textarea.height() ); + } + /** * Base UI Construction * @@ -539,9 +548,9 @@ if ( !context || typeof context == 'undefined' ) { var args = $.makeArray( arguments ); // Dynamically setup core extensions for modules that are required -if ( args[0] == 'addModule' && typeof args[1] !== 'undefined' ) { +if ( args[0] === 'addModule' && typeof args[1] !== 'undefined' ) { var modules = args[1]; - if ( typeof modules !== "object" ) { + if ( typeof modules !== 'object' ) { modules = {}; modules[args[1]] = ''; } @@ -577,4 +586,4 @@ return $(this).data( 'wikiEditor-context', context ); }; -}( jQuery ) ); +}( jQuery, mediaWiki ) ); diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.preview.js b/extensions/WikiEditor/modules/jquery.wikiEditor.preview.js index 39907364..372d2e8e 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.preview.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.preview.js @@ -1,6 +1,6 @@ /* Preview module for wikiEditor */ ( function ( $, mw ) { - +/*jshint onevar:false */ $.wikiEditor.modules.preview = { /** @@ -32,7 +32,7 @@ fn: { * @param context Context object of editor to create module in * @param config Configuration object to create module from */ - create: function ( context, config ) { + create: function ( context ) { if ( 'initialized' in context.modules.preview ) { return; } @@ -65,9 +65,9 @@ fn: { }, function ( data ) { if ( - typeof data.parse == 'undefined' || - typeof data.parse.text == 'undefined' || - typeof data.parse.text['*'] == 'undefined' + typeof data.parse === 'undefined' || + typeof data.parse.text === 'undefined' || + typeof data.parse.text['*'] === 'undefined' ) { return; } @@ -89,7 +89,7 @@ fn: { // 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 ) { + if ( context.modules.preview.changesText === wikitext ) { return; } context.$changesTab.find( 'table.diff tbody' ).empty(); @@ -115,8 +115,9 @@ fn: { rvprop: '' }; var section = $( '[name="wpSection"]' ).val(); - if ( section !== '' ) + if ( section !== '' ) { postdata2.rvsection = section; + } $.post( mw.util.wikiScript( 'api' ), postdata2, function ( data ) { // Add diff CSS diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.js b/extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.js index ca88c79a..5381e605 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.js @@ -1,5 +1,6 @@ /* Publish module for wikiEditor */ -( function( $ ) { $.wikiEditor.modules.previewDialog = { +/*jshint onevar:false */ +( function ( $, mw ) { $.wikiEditor.modules.previewDialog = { /** * Compatability map @@ -29,7 +30,7 @@ fn: { * @param context Context object of editor to create module in * @param config Configuration object to create module from */ - create: function( context, config ) { + create: function( context ) { // Build the dialog behind the Publish button var dialogID = 'wikiEditor-' + context.instance + '-preview-dialog'; $.wikiEditor.modules.dialogs.fn.create( @@ -78,7 +79,7 @@ fn: { .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 ) { + if ( context.modules.preview.previewText === wikitext ) { return; } @@ -96,9 +97,9 @@ fn: { }, function( data ) { if ( - typeof data.parse == 'undefined' || - typeof data.parse.text == 'undefined' || - typeof data.parse.text['*'] == 'undefined' + typeof data.parse === 'undefined' || + typeof data.parse.text === 'undefined' || + typeof data.parse.text['*'] === 'undefined' ) { return; } @@ -128,4 +129,4 @@ fn: { } } -}; } )( jQuery ); +}; } )( jQuery, mediaWiki ); diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js b/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js index b61140dc..058fa1b3 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js @@ -1,4 +1,5 @@ /* Publish module for wikiEditor */ +/*jshint onevar:false */ ( function ( $ ) { $.wikiEditor.modules.publish = { @@ -31,7 +32,7 @@ fn: { * @param context Context object of editor to create module in * @param config Configuration object to create module from */ - create: function ( context, config ) { + create: function ( context ) { // Build the dialog behind the Publish button var dialogID = 'wikiEditor-' + context.instance + '-dialog'; $.wikiEditor.modules.dialogs.fn.create( @@ -89,16 +90,18 @@ fn: { ); /* END OF REALLY DIRTY HACK */ - if ( $( '#wpMinoredit' ).length === 0 ) + if ( $( '#wpMinoredit' ).length === 0 ) { $( '#wikiEditor-' + context.instance + '-dialog-minor' ).hide(); - else if ( $( '#wpMinoredit' ).is( ':checked' ) ) + } else if ( $( '#wpMinoredit' ).prop( 'checked' ) ) { $( '#wikiEditor-' + context.instance + '-dialog-minor' ) .prop( 'checked', true ); - if ( $( '#wpWatchthis' ).length === 0 ) + } + if ( $( '#wpWatchthis' ).length === 0 ) { $( '#wikiEditor-' + context.instance + '-dialog-watch' ).hide(); - else if ( $( '#wpWatchthis' ).is( ':checked' ) ) + } else if ( $( '#wpWatchthis' ).prop( 'checked' ) ) { $( '#wikiEditor-' + context.instance + '-dialog-watch' ) .prop( 'checked', true ); + } $(this).find( 'form' ).submit( function ( e ) { $(this).closest( '.ui-dialog' ).find( 'button:first' ).click(); diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js b/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js index bd00325f..3cbd5ba5 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js @@ -1,5 +1,6 @@ /* TemplateEditor module for wikiEditor */ -( function( $ ) { $.wikiEditor.modules.templateEditor = { +/*jshint quotmark:false, onevar:false */ +( function ( $ ) { $.wikiEditor.modules.templateEditor = { /** * Name mappings, dirty hack which will be removed once "TemplateInfo" extension is more fully supported */ @@ -37,9 +38,13 @@ */ evt: { - mark: function( context, event ) { + /** + * @param context + * @param event + */ + mark: function( context ) { // The markers returned by this function are skipped on realchange, so don't regenerate them in that case - if ( context.modules.highlight.currentScope == 'realchange' ) { + if ( context.modules.highlight.currentScope === 'realchange' ) { return; } @@ -47,10 +52,9 @@ evt: { 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' ) { + while ( tokenIndex < tokenArray.length && tokenArray[tokenIndex].label !== 'TEMPLATE_BEGIN' ) { tokenIndex++; } //open template @@ -58,19 +62,18 @@ evt: { var beginIndex = tokenIndex; var endIndex = -1; //no match found var openTemplates = 1; - var templatesMatched = false; - while ( tokenIndex < tokenArray.length - 1 && endIndex == -1 ) { + while ( tokenIndex < tokenArray.length - 1 && endIndex === -1 ) { tokenIndex++; - if ( tokenArray[tokenIndex].label == 'TEMPLATE_BEGIN' ) { + if ( tokenArray[tokenIndex].label === 'TEMPLATE_BEGIN' ) { openTemplates++; - } else if ( tokenArray[tokenIndex].label == 'TEMPLATE_END' ) { + } else if ( tokenArray[tokenIndex].label === 'TEMPLATE_END' ) { openTemplates--; - if ( openTemplates == 0 ) { + if ( openTemplates === 0 ) { endIndex = tokenIndex; } //we can stop looping } }//while finding template ending - if ( endIndex != -1 ) { + if ( endIndex !== -1 ) { markers.push( { start: tokenArray[beginIndex].offset, end: tokenArray[endIndex].offset, @@ -92,7 +95,7 @@ evt: { } }, onSkip: function( node ) { - if ( $( node ).html() == $( node ).data( 'oldHTML' ) ) { + if ( $( node ).html() === $( node ).data( 'oldHTML' ) ) { // No change return; } @@ -104,7 +107,7 @@ evt: { 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 ) { + if ( $label.text() !== displayName ) { $label.text( displayName ); } } @@ -119,7 +122,7 @@ evt: { $.wikiEditor.modules.templateEditor.fn.bindTemplateEvents( $( node ) ); } }, - getAnchor: function( ca1, ca2 ) { + getAnchor: function( ca1 ) { return $( ca1.parentNode ).is( 'span.wikiEditor-template-text' ) ? ca1.parentNode : null; }, @@ -142,7 +145,9 @@ evt: { 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; + if ( event.ctrlKey || event.metaKey ) { + return true; + } switch ( event.which ) { case 13: // Enter $evtElem.click(); @@ -177,14 +182,22 @@ evt: { } } }, - keyup: function( context, event ) { + /** + * @param context + * @param event + */ + keyup: function( context ) { // 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 ) { + /** + * @param context + * @param event + */ + keypress: function( context ) { // If this event is from a keydown event which we want to block, ignore it return ( context.$iframe.data( 'ignoreKeypress' ) ? false : true ); } @@ -210,7 +223,7 @@ fn: { * @param context Context object of editor to create module in * @param config Configuration object to create module from */ - create: function( context, config ) { + create: function( context ) { // Initialize module within the context context.modules.templateEditor = {}; }, @@ -220,8 +233,7 @@ fn: { */ wrapTemplate: function( $wrapper ) { var model = $wrapper.data( 'model' ); - var context = $wrapper.data( 'marker' ).context; - var $template = $wrapper + $wrapper .wrap( '' ) .addClass( 'wikiEditor-template-text wikiEditor-template-text-shrunken' ) .parent() @@ -249,7 +261,7 @@ fn: { bindTemplateEvents: function( $wrapper ) { var $template = $wrapper.parent( '.wikiEditor-template' ); - if ( typeof ( opera ) == "undefined" ) { + if ( typeof opera === 'undefined' ) { $template.parent().attr('contentEditable', 'false'); } @@ -274,7 +286,7 @@ fn: { * Toggle the visisbilty of the wikitext for a given template * @param $wrapper The origianl wrapper we want expand/collapse */ - toggleWikiTextEditor: function( $wrapper ) { + toggleWikiTextEditor: function( $wrapper ) { var context = $wrapper.data( 'marker' ).context; var $template = $wrapper.parent( '.wikiEditor-template' ); context.fn.purgeOffsets(); @@ -285,11 +297,11 @@ fn: { 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') ){ + 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' ) ) { + 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 @@ -350,7 +362,7 @@ fn: { 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' ) ) { + if ( $templateText.html() !== $templateText.data( 'oldHTML' ) ) { templateModel = $.wikiEditor.modules.templateEditor.fn.updateModel( $templateText ); } @@ -362,11 +374,11 @@ fn: { var $rows = $fields.find( '.wikiEditor-template-dialog-field-wrapper' ); for ( var paramIndex in params ) { var param = params[paramIndex]; - if ( typeof param.name == 'undefined' ) { + if ( typeof param.name === 'undefined' ) { // param is the template name, skip it continue; } - var paramText = typeof param == 'string' ? + var paramText = typeof param === 'string' ? param.name.replace( /[\_\-]/g, ' ' ) : param.name; var paramVal = templateModel.getValue( param.name ); @@ -397,11 +409,13 @@ fn: { .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; + if ( e.keyCode === 9 || 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 ( $this.val().indexOf( '\n' ) !== -1 || $this.val().length > 24 ) { if ( !expanded ) { $this.animate( { 'height': '4.5em' }, 'fast' ); $this.data( 'expanded', true ); @@ -455,7 +469,7 @@ fn: { updateModel: function( $templateText, model ) { var context = $templateText.data( 'marker' ).context; var text; - if ( typeof model == 'undefined' ) { + if ( typeof model === 'undefined' ) { text = context.fn.htmlToText( $templateText.html() ); } else { text = model.getText(); @@ -464,7 +478,7 @@ fn: { $templateText.text( text ); $templateText.html( $templateText.html().replace( /\n/g, '
      ' ) ); $templateText.data( 'oldHTML', $templateText.html() ); - if ( typeof model == 'undefined' ) { + if ( typeof model === 'undefined' ) { model = new $.wikiEditor.modules.templateEditor.fn.model( text ); $templateText.data( 'model', model ); } @@ -476,9 +490,9 @@ fn: { */ getTemplateDisplayName: function ( model ) { var tName = model.getName(); - if( model.getValue( 'name' ) != '' ) { + if( model.getValue( 'name' ) !== '' ) { return tName + ': ' + model.getValue( 'name' ); - } else if( 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()] ); @@ -541,27 +555,28 @@ fn: { var retVal; if ( isNaN( name ) ) { // It's a string! - if ( typeof paramsByName[name] == 'undefined' ) { + if ( typeof paramsByName[name] === 'undefined' ) { // Does not exist - return ""; + return ''; } rangeIndex = paramsByName[name]; } else { // It's a number! - rangeIndex = parseInt( name ); + rangeIndex = parseInt( name, 10 ); } - if ( typeof params[rangeIndex] == 'undefined' ) { + if ( typeof params[rangeIndex] === 'undefined' ) { // Does not exist - return ""; + return ''; } valueRange = ranges[params[rangeIndex].valueIndex]; - if ( typeof valueRange.newVal == 'undefined' || original ) { + 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; } + /*jshint eqnull:true */ if ( value != null ) { ranges[params[rangeIndex].valueIndex].newVal = value; } @@ -574,7 +589,7 @@ fn: { * Get template name */ this.getName = function() { - if( typeof ranges[templateNameIndex].newVal == 'undefined' ) { + if( typeof ranges[templateNameIndex].newVal === 'undefined' ) { return wikitext.substring( ranges[templateNameIndex].begin, ranges[templateNameIndex].end ); } else { return ranges[templateNameIndex].newVal; @@ -635,9 +650,9 @@ fn: { * Get modified template text */ this.getText = function() { - newText = ""; - for ( i = 0 ; i < ranges.length; i++ ) { - if( typeof ranges[i].newVal == 'undefined' ) { + var newText = ""; + for ( var 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; @@ -659,7 +674,7 @@ fn: { var adjustment = 0; for (var i = 0 ; i < ranges.length; i++ ) { ranges[i].begin += adjustment; - if( typeof ranges[i].adjust != 'undefined' ) { + 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' @@ -680,15 +695,16 @@ fn: { // Get rid of first {{ with whitespace var sanatizedStr = wikitext.replace( /{{/, " " ); // Replace end - endBraces = sanatizedStr.match( /}}\s*$/ ); + var endBraces = sanatizedStr.match( /}}\s*$/ ); if ( endBraces ) { sanatizedStr = sanatizedStr.substring( 0, endBraces.index ) + " " + sanatizedStr.substring( endBraces.index + 2 ); } + var startIndex, endIndex, sanatizedSegment, openBraces, brace; //treat HTML comments like whitespace - while ( sanatizedStr.indexOf( '') + 3; if( endIndex < 3 ){ @@ -700,26 +716,26 @@ fn: { } // Match the open braces we just found with equivalent closing braces note, works for any level of braces - while ( sanatizedStr.indexOf( '{{' ) != -1 ) { + 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; + 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 ) { + 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; + brace = sanatizedStr[++endIndex]; + openBraces += brace === ']' ? -1 : brace === '[' ? 1 : 0; } sanatizedSegment = sanatizedStr.substring( startIndex,endIndex ).replace( /[\[\]|=]/g , 'X' ); sanatizedStr = @@ -733,14 +749,16 @@ fn: { var params = []; var templateNameIndex = 0; var doneParsing = false; - oldDivider = 0; - divider = sanatizedStr.indexOf( '|', oldDivider ); - if ( divider == -1 ) { + var oldDivider = 0; + var divider = sanatizedStr.indexOf( '|', oldDivider ); + if ( divider === -1 ) { divider = sanatizedStr.length; doneParsing = true; collapsible = false; //zero params } - nameMatch = sanatizedStr.substring( 0, divider ).match( /[^\s]/ ); + var nameMatch = sanatizedStr.substring( 0, divider ).match( /[^\s]/ ); + var nameEndMatch; + /*jshint eqnull:true */ 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 @@ -758,18 +776,21 @@ fn: { * Start looping over params */ var currentParamNumber = 0; + var currentField, currentValue, valueBeginIndex, valueBegin, valueEnd; + var nameIndex, equalsIndex, valueIndex; + var currentName, nameBegin, nameBeginIndex, nameEnd, nameEndIndex; var valueEndIndex = ranges[templateNameIndex].end; var paramsByName = []; while ( !doneParsing ) { currentParamNumber++; oldDivider = divider; divider = sanatizedStr.indexOf( '|', oldDivider + 1 ); - if ( divider == -1 ) { + if ( divider === -1 ) { divider = sanatizedStr.length; doneParsing = true; } currentField = sanatizedStr.substring( oldDivider+1, divider ); - if ( currentField.indexOf( '=' ) == -1 ) { + if ( currentField.indexOf( '=' ) === -1 ) { // anonymous field, gets a number //default values, since we'll allow empty values diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.templates.js b/extensions/WikiEditor/modules/jquery.wikiEditor.templates.js index b303e3fa..b0462563 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.templates.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.templates.js @@ -1,22 +1,23 @@ /* Templates Module for wikiEditor */ -( function( $ ) { $.wikiEditor.modules.templates = { +/*jshint onevar:false */ +( function ( $ ) { $.wikiEditor.modules.templates = { /** * Core Requirements */ -'req': [ 'iframe' ], +req: [ 'iframe' ], /** * Object Templates */ -'tpl': { - 'marker': { - 'type': 'template', - 'anchor': 'wrap', - 'skipDivision': 'realchange', - 'afterWrap': function( node ) { +tpl: { + marker: { + type: 'template', + anchor: 'wrap', + skipDivision: 'realchange', + afterWrap: function ( node ) { $( node ).addClass( 'wikiEditor-template' ); }, - 'getAnchor': function( ca1, ca2 ) { + getAnchor: function ( ca1 ) { return $( ca1.parentNode ).is( '.wikiEditor-template' ) ? ca1.parentNode : null; } } @@ -24,10 +25,14 @@ /** * Event handlers */ -'evt': { - 'mark': function( context, event ) { +evt: { + /** + * @param context + * @param event + */ + mark: function ( context ) { // The markers returned by this function are skipped on realchange, so don't regenerate them in that case - if ( context.modules.highlight.currentScope == 'realchange' ) { + if ( context.modules.highlight.currentScope === 'realchange' ) { return; } // Get references to the markers and tokens from the current context @@ -36,14 +41,14 @@ // 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 ) { + 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 ) { + } 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 }, + { context: context, start: start, end: tokens[i].offset }, $.wikiEditor.modules.templates.tpl.marker ); } @@ -53,15 +58,19 @@ } } }, -'exp': [ - { 'regex': /{{/, 'label': "TEMPLATE_BEGIN" }, - { 'regex': /}}/, 'label': "TEMPLATE_END", 'markAfter': true } +exp: [ + { regex: /{{/, label: 'TEMPLATE_BEGIN' }, + { regex: /}}/, label: 'TEMPLATE_END', markAfter: true } ], /** * Internally used functions */ -'fn': { - 'create': function( context, config ) { +fn: { + /** + * @param context + * @param config + */ + create: function () { // Do some stuff here... } } diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.toc.js b/extensions/WikiEditor/modules/jquery.wikiEditor.toc.js index 54b8a863..3f186db6 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.toc.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.toc.js @@ -1,31 +1,32 @@ /* TOC Module for wikiEditor */ -( function( $ ) { $.wikiEditor.modules.toc = { +/*jshint onevar:false */ +( function ( $, mw ) { $.wikiEditor.modules.toc = { /** * Compatability map */ -'browsers': { +browsers: { // Left-to-right languages - 'ltr': { - 'msie': [['>=', 7]], - 'firefox': [['>=', 3]], - 'opera': [['>=', 10]], - 'safari': [['>=', 4]], - 'chrome': [['>=', 4]] + 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]] + rtl: { + msie: [['>=', 8]], + firefox: [['>=', 3]], + opera: [['>=', 10]], + safari: [['>=', 4]], + chrome: [['>=', 4]] } }, /** * Core Requirements */ -'req': [ 'iframe' ], +req: [ 'iframe' ], /** * Configuration */ @@ -51,10 +52,18 @@ api: { * Event handlers */ evt: { - change: function( context, event ) { + /** + * @param context + * @param event + */ + change: function( context ) { $.wikiEditor.modules.toc.fn.update( context ); }, - ready: function( context, event ) { + /** + * @param context + * @param event + */ + ready: function( context ) { // Add the TOC to the document $.wikiEditor.modules.toc.fn.build( context ); if ( !context.$content ) { @@ -68,28 +77,32 @@ evt: { $.wikiEditor.modules.toc.fn.improveUI(); $.wikiEditor.modules.toc.evt.resize( context ); }, - resize: function( context, event ) { + /** + * @param context + * @param event + */ + resize: function( context ) { 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' && + 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' && + } 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' && + } 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' && + } 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' ) { + if ( context.modules.toc.$toc.data( 'positionMode' ) === 'goofy' ) { context.modules.toc.$toc.find( 'div' ).autoEllipsis( { 'position': 'right', 'tooltip': true, 'restoreText': true } ); @@ -105,14 +118,18 @@ evt: { // store the width of the view for comparison on next resize context.modules.toc.$toc.data( 'previousWidth', context.$wikitext.width() ); }, - mark: function( context, event ) { + /** + * @param context + * @param event + */ + mark: function( context ) { 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' ) { + if ( tokenArray[i].label !== 'TOC_HEADER' ) { continue; } h++; @@ -134,14 +151,14 @@ evt: { }, onSkip: function( node ) { var marker = $( node ).data( 'marker' ); - if ( $( node ).data( 'section' ) != marker.index ) { + 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 ) { + getAnchor: function( ca1 ) { return $( ca1.parentNode ).is( '.wikiEditor-toc-header' ) ? ca1.parentNode : null; } @@ -154,7 +171,7 @@ evt: { } ); } // 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 ) { + 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 @@ -175,13 +192,13 @@ fn: { * @param {Object} context Context object of editor to create module in * @param {Object} config Configuration object to create module from */ - create: function( context, config ) { + create: function( context ) { 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.$ui.find( '.wikiEditor-ui-left' ).height(); context.modules.toc.$toc = $( '
      ' ) .addClass( 'wikiEditor-ui-toc' ) .data( 'context', context ) @@ -196,14 +213,14 @@ fn: { }, redraw: function( context, fixedWidth ) { fixedWidth = parseFloat( fixedWidth ); - if( context.modules.toc.$toc.data( 'positionMode' ) == 'regular' ) { + 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' ) { + } else if( context.modules.toc.$toc.data( 'positionMode' ) === 'goofy' ) { context.$ui.find( '.wikiEditor-ui-left' ) .css( 'width', fixedWidth ); context.$ui.find( '.wikiEditor-ui-right' ) @@ -212,10 +229,10 @@ fn: { } }, 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' ) + var width; + 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' ); @@ -237,7 +254,7 @@ fn: { 'left' : $.wikiEditor.modules.toc.cfg.rtl ? 0 : 'auto' } ); context.$wikitext .css( 'position', 'relative' ); - } else if ( context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' ) { + } else if ( context.modules.toc.$toc.data( 'positionMode' ) === 'goofy' ) { // store position mode context.modules.toc.$toc.data( 'positionMode', 'regular' ); // set width @@ -260,7 +277,7 @@ fn: { if ( context.modules.toc.$toc.data( 'collapsed' ) ) { context.$ui.find( '.wikiEditor-ui-toc-expandControl' ).hide(); } else { - if( context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' ) { + if( context.modules.toc.$toc.data( 'positionMode' ) === 'goofy' ) { $.wikiEditor.modules.toc.fn.switchLayout( context ); } context.$ui.find( '.wikiEditor-ui-right' ).hide(); @@ -296,7 +313,7 @@ fn: { * * @param {Object} context */ - update: function( context ) { + update: function () { //temporarily commenting this out because it is causing all kinds of cursor //and text jumping issues in IE. WIll get back to this --pdhanda /* @@ -333,10 +350,10 @@ fn: { * * @param {Object} event Event object with context as data */ - collapse: function( event ) { + collapse: function () { var $this = $( this ), context = $this.data( 'context' ); - if( context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' ) { + if ( context.modules.toc.$toc.data( 'positionMode' ) === 'goofy' ) { $.wikiEditor.modules.toc.fn.switchLayout( context ); } var pT = $this.parent().position().top - 1; @@ -366,7 +383,7 @@ fn: { // 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; @@ -377,15 +394,19 @@ fn: { * * @param {Object} event Event object with context as data */ - expand: function( event ) { + expand: function () { 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; + 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; + 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; @@ -407,7 +428,7 @@ fn: { 'top': 'auto' } ); context.fn.trigger( 'tocExpand' ); context.fn.trigger( 'resize' ); - } ); + } ); $.cookie( 'wikiEditor-' + context.instance + '-toc-width', context.modules.toc.$toc.data( 'openWidth' ) ); return false; @@ -432,7 +453,7 @@ fn: { } var sections = []; for ( var i = offset; i < outline.length; i++ ) { - if ( outline[i].nLevel == level ) { + if ( outline[i].nLevel === level ) { var sub = buildStructure( outline, i + 1, level + 1 ); if ( sub.length ) { outline[i].sections = sub; @@ -462,8 +483,9 @@ fn: { .click( function( event ) { var wrapper = context.$content.find( '.wikiEditor-toc-section-' + $( this ).data( 'index' ) ); - if ( wrapper.length === 0 ) + if ( wrapper.length === 0 ) { wrapper = context.$content; + } context.fn.scrollToTop( wrapper, true ); context.$textarea.textSelection( 'setSelection', { 'start': 0, @@ -481,8 +503,9 @@ fn: { event.preventDefault(); } ) .text( structure[i].text ); - if ( structure[i].text === '' ) + if ( structure[i].text === '' ) { div.html( ' ' ); + } var item = $( '
    3. ' ).append( div ); if ( structure[i].sections !== undefined ) { item.append( buildList( structure[i].sections ) ); @@ -546,7 +569,7 @@ fn: { .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 ) { + start: function () { var $this = $( this ); // Toss a transparent cover over our iframe $( '
      ' ) @@ -562,7 +585,7 @@ fn: { .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' ) { + if ( context.modules.toc.$toc.data( 'positionMode' ) === 'goofy' ) { $.wikiEditor.modules.toc.fn.switchLayout( context ); } }, @@ -596,7 +619,7 @@ fn: { 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( '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 @@ -604,12 +627,13 @@ fn: { .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 ) { + 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 ) ) + 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 ); } @@ -664,7 +688,7 @@ fn: { * Extending resizable to allow west resizing without altering the left position attribute */ $.ui.plugin.add( 'resizable', 'preventPositionLeftChange', { - resize: function( event, ui ) { + resize: function () { $( this ).data( 'resizable' ).position.left = 0; } } ); @@ -673,4 +697,4 @@ fn: { }; -} ) ( jQuery ); +} )( jQuery, mediaWiki ); diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js b/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js index d3f7a9d5..cb24bfd5 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js @@ -1,7 +1,8 @@ /** * Configuration of Toolbar module for wikiEditor */ -( function( $ ) { $.wikiEditor.modules.toolbar.config = { +/*jshint camelcase:false, quotmark:false */ +( function ( $, mw ) { $.wikiEditor.modules.toolbar.config = { getDefaultConfig: function() { var fileNamespace = mw.config.get( 'wgFormattedNamespaces' )[6]; @@ -43,6 +44,7 @@ getDefaultConfig: function() { 'eu': 'format-bold-L.png', 'he': 'format-bold-B.png', 'hu': 'format-bold-F.png', + 'hy': 'format-bold-hy.png', 'it': 'format-bold-G.png', 'ka': 'format-bold-ka.png', 'ky': 'format-bold-ru.png', @@ -98,6 +100,7 @@ getDefaultConfig: function() { 'eu': 'format-italic-E.png', 'he': 'format-italic-I.png', 'hu': 'format-italic-D.png', + 'hy': 'format-italic-hy.png', 'it': 'format-italic-C.png', 'ka': 'format-italic-ka.png', 'ky': 'format-italic-K.png', @@ -1452,4 +1455,4 @@ getDefaultConfig: function() { } }; } -}; } ) ( jQuery ); +}; } ) ( jQuery, mediaWiki ); diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.js b/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.js index e1bc6f15..71592b53 100644 --- a/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.js +++ b/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.js @@ -1,6 +1,7 @@ /** * Toolbar module for wikiEditor */ +/*jshint onevar:false */ ( function ( mw, $ ) { $.wikiEditor.modules.toolbar = { /** @@ -17,7 +18,7 @@ api : { 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' ) { + if ( section === 'main' ) { // Section context.modules.toolbar.$toolbar.prepend( $.wikiEditor.modules.toolbar.fn.buildSection( @@ -145,28 +146,28 @@ api : { } }, removeFromToolbar : function( context, data ) { - if ( typeof data.section == 'string' ) { + 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' ) { + if ( typeof data.group === 'string' ) { // Toolbar group target += ' div[rel="' + data.group + '"].group'; - if ( typeof data.tool == 'string' ) { + if ( typeof data.tool === 'string' ) { // Save for later checking if empty group = target; // Tool target += ' a[rel="' + data.tool + '"].tool'; } - } else if ( typeof data.page == 'string' ) { + } 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' ) { + if ( typeof data.character === 'string' ) { // Character target += ' span[rel="' + data.character + '"]'; - } else if ( typeof data.row == 'number' ) { + } else if ( typeof data.row === 'number' ) { // Table row target += ' table tr:not(:has(th)):eq(' + data.row + ')'; } else { @@ -198,7 +199,11 @@ api : { * Event handlers */ evt: { - resize: function( context, event ) { + /** + * @param context + * @param event + */ + resize: function( context ) { context.$ui.find( '.sections' ).height( context.$ui.find( '.sections .section-visible' ).outerHeight() ); }, tocCollapse: function( context, event ) { @@ -235,7 +240,7 @@ fn: { * @param {Object} action * @param {Object} source */ - doAction : function( context, action, source ) { + doAction : function( context, action ) { switch ( action.type ) { case 'replace': case 'encapsulate': @@ -244,7 +249,7 @@ fn: { 'peri' : $.wikiEditor.autoMsg( action.options, 'peri' ), 'post' : $.wikiEditor.autoMsg( action.options, 'post' ) }; - var replace = action.type == 'replace'; + 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 ) ) { @@ -263,7 +268,7 @@ fn: { } break; case 'callback': - if ( typeof action.execute == 'function' ) { + if ( typeof action.execute === 'function' ) { action.execute( context ); } break; @@ -287,7 +292,7 @@ fn: { 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'; + empty = empty && tool.css( 'display' ) === 'none'; $group.append( tool ); } } @@ -447,7 +452,7 @@ fn: { } ); }, buildPage : function( context, id, page ) { - var html; + var html, i; var $page = $( '
      ' ).attr( { 'class' : 'page page-' + id, 'rel' : id @@ -461,7 +466,7 @@ fn: { html += $.wikiEditor.modules.toolbar.fn.buildHeading( context, page.headings ); } if ( 'rows' in page ) { - for ( var i = 0; i < page.rows.length; i++ ) { + for ( i = 0; i < page.rows.length; i++ ) { html += $.wikiEditor.modules.toolbar.fn.buildRow( context, page.rows[i] ); } } @@ -484,7 +489,7 @@ fn: { } if ( 'characters' in page ) { html = ''; - for ( var i = 0; i < page.characters.length; i++ ) { + for ( i = 0; i < page.characters.length; i++ ) { html += $.wikiEditor.modules.toolbar.fn.buildCharacter( page.characters[i], actions ); } $characters @@ -527,7 +532,7 @@ fn: { return html + ''; }, buildCharacter : function( character, actions ) { - if ( typeof character == 'string' ) { + if ( typeof character === 'string' ) { character = { 'label' : character, 'action' : { @@ -564,8 +569,9 @@ fn: { return mw.html.element( 'span', { 'rel': character.label }, character.label ); } } - mw.log( "A character for the toolbar was undefined. This is not supposed to happen. Double check the config." ); - return ""; // bug 31673; also an additional fix for bug 24208... + mw.log( 'A character for the toolbar was undefined. This is not supposed to happen. Double check the config.' ); + // bug 31673; also an additional fix for bug 24208... + return ''; }, buildTab : function( context, id, section ) { var selected = $.cookie( 'wikiEditor-' + context.instance + '-toolbar-section' ); @@ -575,7 +581,7 @@ fn: { } var $link = $( '' ) - .addClass( selected == id ? 'current' : null ) + .addClass( selected === id ? 'current' : null ) .attr( { href: '#', role: 'button', @@ -584,7 +590,7 @@ fn: { } ) .text( $.wikiEditor.autoMsg( section, 'label' ) ) .data( 'context', context ) - .mouseup( function( e ) { + .mouseup( function () { $(this).blur(); } ) .mousedown( function( e ) { @@ -604,7 +610,7 @@ fn: { 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 show = $section.css( 'display' ) === 'none'; $section.parent().find( '.section-visible' ) .css( 'position', 'absolute' ) .attr( 'aria-expanded', 'false' ) @@ -668,7 +674,7 @@ fn: { id: 'wikiEditor-section-' + id } ); var selected = $.cookie( 'wikiEditor-' + context.instance + '-toolbar-section' ); - var show = selected == id; + 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() @@ -724,6 +730,7 @@ fn: { } }, updateBookletSelection : function( context, id, $pages, $index ) { + /*jshint eqnull:true */ var cookie = 'wikiEditor-' + context.instance + '-booklet-' + id + '-page'; var selected = $.cookie( cookie ); // Re-save cookie @@ -747,7 +754,7 @@ fn: { context.modules.toolbar.$toolbar.append( $( '
      ' ).css( 'clear', 'both' ) ); var sectionQueue = []; for ( var section in config ) { - if ( section == 'main' ) { + if ( section === 'main' ) { context.modules.toolbar.$toolbar.prepend( $.wikiEditor.modules.toolbar.fn.buildSection( context, section, config[section] ) ); diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index e9b4f490..820d6093 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -63,7 +63,7 @@ $wgConf = new SiteConfiguration; * MediaWiki version number * @since 1.2 */ -$wgVersion = '1.22.2'; +$wgVersion = '1.22.3'; /** * Name of the site. It must be changed in LocalSettings.php diff --git a/includes/User.php b/includes/User.php index 12912e1c..62324043 100644 --- a/includes/User.php +++ b/includes/User.php @@ -984,7 +984,8 @@ class User { # Get the token from DB/cache and clean it up to remove garbage padding. # This deals with historical problems with bugs and the default column value. $token = rtrim( $proposedUser->getToken( false ) ); // correct token - $passwordCorrect = ( strlen( $token ) && $token === $request->getCookie( 'Token' ) ); + // Make comparison in constant time (bug 61346) + $passwordCorrect = strlen( $token ) && $this->compareSecrets( $token, $request->getCookie( 'Token' ) ); $from = 'cookie'; } else { // No session or persistent login cookie @@ -1003,6 +1004,25 @@ class User { } } + /** + * A comparison of two strings, not vulnerable to timing attacks + * @param string $answer the secret string that you are comparing against. + * @param string $test compare this string to the $answer. + * @return bool True if the strings are the same, false otherwise + */ + protected function compareSecrets( $answer, $test ) { + if ( strlen( $answer ) !== strlen( $test ) ) { + $passwordCorrect = false; + } else { + $result = 0; + for ( $i = 0; $i < strlen( $answer ); $i++ ) { + $result |= ord( $answer{$i} ) ^ ord( $test{$i} ); + } + $passwordCorrect = ( $result == 0 ); + } + return $passwordCorrect; + } + /** * Load user and user_group data from the database. * $this->mId must be set, this is how the user is identified. diff --git a/includes/Wiki.php b/includes/Wiki.php index ae75bf33..074ec1ab 100644 --- a/includes/Wiki.php +++ b/includes/Wiki.php @@ -653,12 +653,19 @@ class MediaWiki { } if ( !wfShellExecDisabled() && is_executable( $wgPhpCli ) ) { - // Start a background process to run some of the jobs. - // This will be asynchronous on *nix though not on Windows. + // Start a background process to run some of the jobs wfProfileIn( __METHOD__ . '-exec' ); $retVal = 1; $cmd = wfShellWikiCmd( "$IP/maintenance/runJobs.php", array( '--maxjobs', $n ) ); - wfShellExec( "$cmd &", $retVal ); + $cmd .= " >" . wfGetNull() . " 2>&1"; // don't hang PHP on pipes + if ( wfIsWindows() ) { + // Using START makes this async and also works around a bug where using + // wfShellExec() with a quoted script name causes a filename syntax error. + $cmd = "START /B \"bg\" $cmd"; + } else { + $cmd = "$cmd &"; + } + wfShellExec( $cmd, $retVal ); wfProfileOut( __METHOD__ . '-exec' ); } else { try { diff --git a/includes/api/ApiFormatBase.php b/includes/api/ApiFormatBase.php index b89fb3a7..70495439 100644 --- a/includes/api/ApiFormatBase.php +++ b/includes/api/ApiFormatBase.php @@ -272,17 +272,33 @@ See the complete documentation, // encode all comments or tags as safe blue strings $text = str_replace( '<', '<', $text ); $text = str_replace( '>', '>', $text ); + // identify requests to api.php - $text = preg_replace( "#api\\.php\\?[^ <\n\t]+#", '\\0', $text ); + $text = preg_replace( '#^(\s*)(api\.php\?[^ <\n\t]+)$#m', '\1\2', $text ); if ( $this->mHelp ) { // make strings inside * bold $text = preg_replace( "#\\*[^<>\n]+\\*#", '\\0', $text ); } + + // Armor links (bug 61362) + $masked = array(); + $text = preg_replace_callback( '##', function ( $matches ) use ( &$masked ) { + $sha = sha1( $matches[0] ); + $masked[$sha] = $matches[0]; + return "<$sha>"; + }, $text ); + // identify URLs $protos = wfUrlProtocolsWithoutProtRel(); // This regex hacks around bug 13218 (" included in the URL) $text = preg_replace( "#(((?i)$protos).*?)(")?([ \\'\"<>\n]|<|>|")#", '\\1\\3\\4', $text ); + // Unarmor links + $text = preg_replace_callback( '#<([0-9a-f]{40})>#', function ( $matches ) use ( &$masked ) { + $sha = $matches[1]; + return isset( $masked[$sha] ) ? $masked[$sha] : $matches[0]; + }, $text ); + /** * Temporary fix for bad links in help messages. As a special case, * XML-escaped metachars are de-escaped one level in the help message diff --git a/includes/db/DatabaseOracle.php b/includes/db/DatabaseOracle.php index 32d4d984..fb2d4359 100644 --- a/includes/db/DatabaseOracle.php +++ b/includes/db/DatabaseOracle.php @@ -551,8 +551,12 @@ class DatabaseOracle extends DatabaseBase { } else { $first = false; } - - $sql .= $this->fieldBindStatement( $table, $col, $val ); + if ( $this->isQuotedIdentifier( $val ) ) { + $sql .= $this->removeIdentifierQuotes( $val ); + unset( $row[$col] ); + } else { + $sql .= $this->fieldBindStatement( $table, $col, $val ); + } } $sql .= ')'; @@ -679,6 +683,30 @@ class DatabaseOracle extends DatabaseBase { return $retval; } + public function upsert( $table, array $rows, array $uniqueIndexes, array $set, + $fname = __METHOD__ + ) { + if ( !count( $rows ) ) { + return true; // nothing to do + } + + if ( !is_array( reset( $rows ) ) ) { + $rows = array( $rows ); + } + + $sequenceData = $this->getSequenceData( $table ); + if ( $sequenceData !== false ) { + // add sequence column to each list of columns, when not set + foreach ( $rows as &$row ) { + if ( !isset( $row[$sequenceData['column']] ) ) { + $row[$sequenceData['column']] = $this->addIdentifierQuotes('GET_SEQUENCE_VALUE(\'' . $sequenceData['sequence'] . '\')'); + } + } + } + + return parent::upsert( $table, $rows, $uniqueIndexes, $set, $fname ); + } + function tableName( $name, $format = 'quoted' ) { /* Replace reserved words with better ones diff --git a/includes/db/DatabasePostgres.php b/includes/db/DatabasePostgres.php index aed35f10..0bd966ba 100644 --- a/includes/db/DatabasePostgres.php +++ b/includes/db/DatabasePostgres.php @@ -729,13 +729,15 @@ __INDEXATTR__; * so causes a DB error. This wrapper checks which tables can be locked and adjusts it accordingly. */ function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array() ) { - $forUpdateKey = array_search( 'FOR UPDATE', $options ); - if ( $forUpdateKey !== false && $join_conds ) { - unset( $options[$forUpdateKey] ); - - foreach ( $join_conds as $table => $join_cond ) { - if ( 0 === preg_match( '/^(?:LEFT|RIGHT|FULL)(?: OUTER)? JOIN$/i', $join_cond[0] ) ) { - $options['FOR UPDATE'][] = $table; + if ( is_array( $options ) ) { + $forUpdateKey = array_search( 'FOR UPDATE', $options ); + if ( $forUpdateKey !== false && $join_conds ) { + unset( $options[$forUpdateKey] ); + + foreach ( $join_conds as $table_cond => $join_cond ) { + if ( 0 === preg_match( '/^(?:LEFT|RIGHT|FULL)(?: OUTER)? JOIN$/i', $join_cond[0] ) ) { + $options['FOR UPDATE'][] = $table_cond; + } } } } diff --git a/includes/installer/WebInstallerPage.php b/includes/installer/WebInstallerPage.php index ad399133..d3b550fe 100644 --- a/includes/installer/WebInstallerPage.php +++ b/includes/installer/WebInstallerPage.php @@ -955,11 +955,16 @@ class WebInstaller_Options extends WebInstallerPage { LinkCache::singleton()->useDatabase( false ); foreach ( $extensions as $ext ) { + if ( isset( $ext['descriptionmsg'] ) ) { + $desc = wfMessage( $ext['descriptionmsg'] )->useDatabase( false )->parse(); + } else { + $desc = ''; + } $extHtml .= $this->parent->getCheckBox( array( 'var' => "ext-{$ext['name']}", 'rawtext' => "{$ext['name']}: " . - wfMessage( $ext['descriptionmsg'] )->useDatabase( false )->parse(), - ) ); + $desc, + ) ); } diff --git a/includes/specials/SpecialPrefixindex.php b/includes/specials/SpecialPrefixindex.php index 28d07ffc..0d065b09 100644 --- a/includes/specials/SpecialPrefixindex.php +++ b/includes/specials/SpecialPrefixindex.php @@ -264,6 +264,7 @@ class SpecialPrefixindex extends SpecialAllpages { 'from' => $s->page_title, 'prefix' => $prefix, 'hideredirects' => $this->hideRedirects, + 'stripprefix' => $this->stripPrefix, ); if ( $namespace || $prefix == '' ) { diff --git a/includes/upload/UploadBase.php b/includes/upload/UploadBase.php index 916ad6c1..c0c37b3f 100644 --- a/includes/upload/UploadBase.php +++ b/includes/upload/UploadBase.php @@ -44,7 +44,7 @@ abstract class UploadBase { protected $mFilteredName, $mFinalExtension; protected $mLocalFile, $mFileSize, $mFileProps; protected $mBlackListedExtensions; - protected $mJavaDetected; + protected $mJavaDetected, $mSVGNSError; protected static $safeXmlEncodings = array( 'UTF-8', 'ISO-8859-1', 'ISO-8859-2', 'UTF-16', 'UTF-32' ); @@ -1162,6 +1162,7 @@ abstract class UploadBase { * @return bool */ protected function detectScriptInSvg( $filename ) { + $this->mSVGNSError = false; $check = new XmlTypeCheck( $filename, array( $this, 'checkSvgScriptCallback' ), @@ -1172,6 +1173,9 @@ abstract class UploadBase { // Invalid xml (bug 58553) return array( 'uploadinvalidxml' ); } elseif ( $check->filterMatch ) { + if ( $this->mSVGNSError ) { + return array( 'uploadscriptednamespace', $this->mSVGNSError ); + } return array( 'uploadscripted' ); } return false; @@ -1198,7 +1202,51 @@ abstract class UploadBase { * @return bool */ public function checkSvgScriptCallback( $element, $attribs ) { - $strippedElement = $this->stripXmlNamespace( $element ); + list( $namespace, $strippedElement ) = $this->splitXmlNamespace( $element ); + + static $validNamespaces = array( + '', + 'adobe:ns:meta/', + 'http://creativecommons.org/ns#', + 'http://inkscape.sourceforge.net/dtd/sodipodi-0.dtd', + 'http://ns.adobe.com/adobeillustrator/10.0/', + 'http://ns.adobe.com/adobesvgviewerextensions/3.0/', + 'http://ns.adobe.com/extensibility/1.0/', + 'http://ns.adobe.com/flows/1.0/', + 'http://ns.adobe.com/illustrator/1.0/', + 'http://ns.adobe.com/imagereplacement/1.0/', + 'http://ns.adobe.com/pdf/1.3/', + 'http://ns.adobe.com/photoshop/1.0/', + 'http://ns.adobe.com/saveforweb/1.0/', + 'http://ns.adobe.com/variables/1.0/', + 'http://ns.adobe.com/xap/1.0/', + 'http://ns.adobe.com/xap/1.0/g/', + 'http://ns.adobe.com/xap/1.0/g/img/', + 'http://ns.adobe.com/xap/1.0/mm/', + 'http://ns.adobe.com/xap/1.0/rights/', + 'http://ns.adobe.com/xap/1.0/stype/dimensions#', + 'http://ns.adobe.com/xap/1.0/stype/font#', + 'http://ns.adobe.com/xap/1.0/stype/manifestitem#', + 'http://ns.adobe.com/xap/1.0/stype/resourceevent#', + 'http://ns.adobe.com/xap/1.0/stype/resourceref#', + 'http://ns.adobe.com/xap/1.0/t/pg/', + 'http://purl.org/dc/elements/1.1/', + 'http://purl.org/dc/elements/1.1', + 'http://schemas.microsoft.com/visio/2003/svgextensions/', + 'http://sodipodi.sourceforge.net/dtd/sodipodi-0.dtd', + 'http://web.resource.org/cc/', + 'http://www.freesoftware.fsf.org/bkchem/cdml', + 'http://www.inkscape.org/namespaces/inkscape', + 'http://www.w3.org/1999/02/22-rdf-syntax-ns#', + 'http://www.w3.org/2000/svg', + ); + + if ( !in_array( $namespace, $validNamespaces ) ) { + wfDebug( __METHOD__ . ": Non-svg namespace '$namespace' in uploaded file.\n" ); + // @TODO return a status object to a closure in XmlTypeCheck, for MW1.21+ + $this->mSVGNSError = $namespace; + return true; + } /* * check for elements that can contain javascript @@ -1220,6 +1268,12 @@ abstract class UploadBase { return true; } + # Block iframes, in case they pass the namespace check + if ( $strippedElement == 'iframe' ) { + wfDebug( __METHOD__ . ": iframe in uploaded file.\n" ); + return true; + } + foreach ( $attribs as $attrib => $value ) { $stripped = $this->stripXmlNamespace( $attrib ); $value = strtolower( $value ); @@ -1293,6 +1347,19 @@ abstract class UploadBase { return false; //No scripts detected } + /** + * Divide the element name passed by the xml parser to the callback into URI and prifix. + * @param $name string + * @return array containing the namespace URI and prefix + */ + private static function splitXmlNamespace( $element ) { + // 'http://www.w3.org/2000/svg:script' -> array( 'http://www.w3.org/2000/svg', 'script' ) + $parts = explode( ':', strtolower( $element ) ); + $name = array_pop( $parts ); + $ns = implode( ':', $parts ); + return array( $ns, $name ); + } + /** * @param $name string * @return string diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php index dca9779d..e0ff25e9 100644 --- a/languages/messages/MessagesEn.php +++ b/languages/messages/MessagesEn.php @@ -2352,6 +2352,7 @@ You should check that file's deletion history before proceeding to re-upload it. 'php-uploaddisabledtext' => 'File uploads are disabled in PHP. Please check the file_uploads setting.', 'uploadscripted' => 'This file contains HTML or script code that may be erroneously interpreted by a web browser.', +'uploadscriptednamespace' => 'This SVG file contains an illegal namespace \'$1\'', 'uploadinvalidxml' => 'The XML in the uploaded file could not be parsed.', 'uploadvirus' => 'The file contains a virus! Details: $1', diff --git a/languages/messages/MessagesQqq.php b/languages/messages/MessagesQqq.php index e770db61..63dc8453 100644 --- a/languages/messages/MessagesQqq.php +++ b/languages/messages/MessagesQqq.php @@ -4065,6 +4065,14 @@ See also: * {{msg-mw|uploadjava}} * {{msg-mw|uploadvirus}}', 'uploadinvalidxml' => 'Error message displayed when the uploaded file contains XML that cannot be properly parsed and checked.', +'uploadscriptednamespace' => 'Used as error message when uploading a file. This error is specific to SVG files, when they include a namespace that has not been whitelisted. + +Parameters: +* $1 - the invalid namespace name +See also: +* {{msg-mw|zip-wrong-format}} +* {{msg-mw|uploadjava}} +* {{msg-mw|uploadvirus}}', 'uploadvirus' => 'Error message displayed when uploaded file contains a virus. Parameters: diff --git a/maintenance/postgres/tables.sql b/maintenance/postgres/tables.sql index bc2428e4..0cc1b3d7 100644 --- a/maintenance/postgres/tables.sql +++ b/maintenance/postgres/tables.sql @@ -228,9 +228,9 @@ CREATE TABLE categorylinks ( CREATE UNIQUE INDEX cl_from ON categorylinks (cl_from, cl_to); CREATE INDEX cl_sortkey ON categorylinks (cl_to, cl_sortkey, cl_from); -CREATE SEQUENCE externallinks_id_seq; +CREATE SEQUENCE externallinks_el_id_seq; CREATE TABLE externallinks ( - el_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('externallinks_id_seq'), + el_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('externallinks_el_id_seq'), el_from INTEGER NOT NULL REFERENCES page(page_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED, el_to TEXT NOT NULL, el_index TEXT NOT NULL -- cgit v1.2.2