summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobody <nobody@localhost>2004-03-03 11:36:41 +0000
committernobody <nobody@localhost>2004-03-03 11:36:41 +0000
commit9e724d9f1110b30ffac50ea6d8c258e9d173ff47 (patch)
tree0e310649f4d8b18bc5563cfe5f8cd652818d6cd6
parent89e1e30e14916bef58341c0785e48bf9bafd0419 (diff)
parentfb121e7a57a98a0db64c26b476c45aed417403b4 (diff)
This commit was manufactured by cvs2svn to create tag 'REL1_2_0rc2'.1.2.0rc2
-rw-r--r--COPYING340
-rw-r--r--INSTALL59
-rw-r--r--RELEASE-NOTES11
-rw-r--r--config/index.php669
-rw-r--r--includes/DefaultSettings.php2
-rwxr-xr-xincludes/MessageCache.php4
-rw-r--r--includes/OutputPage.php19
-rw-r--r--includes/SearchEngine.php6
-rw-r--r--includes/Skin.php6
-rw-r--r--index.php11
-rw-r--r--install.php4
-rw-r--r--irc/rc2irc.php192
-rw-r--r--irc/rcdumper.php102
-rw-r--r--languages/LanguageBn.php1004
-rw-r--r--languages/LanguageCy.php1144
-rwxr-xr-xlanguages/LanguageGa.php403
-rw-r--r--languages/LanguageId.php9
-rwxr-xr-xmaintenance/InitialiseMessages.inc10
-rw-r--r--maintenance/archives/importTests.php10
-rw-r--r--maintenance/archives/importUseModWiki.php6
-rw-r--r--maintenance/archives/upgradeWatchlist.php7
-rw-r--r--stylesheets/sticky.js2
-rw-r--r--stylesheets/wikibits.js32
23 files changed, 3355 insertions, 697 deletions
diff --git a/COPYING b/COPYING
new file mode 100644
index 000000000000..5b6e7c66c276
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 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 Library 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.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+
+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.
+
+ <signature of Ty Coon>, 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 Library General
+Public License instead of this License.
diff --git a/INSTALL b/INSTALL
index 159109a60b32..d0742f1309b7 100644
--- a/INSTALL
+++ b/INSTALL
@@ -1,5 +1,62 @@
+---
+Installing MediaWiki
+---
+
+Starting with MediaWiki 1.2.0, it's possible to install
+and configure the wiki "in-place", as long as you have
+the necessary prerequesites available.
+
+Required software:
+* Web server with PHP 4.1.2 or higher (4.3.x is preferred)
+* PHP must be configured for register_globals = On
+ [Sorry, we know this is inconvenient for some people]
+* A MySQL server. 4.0.x is preferred, but 3.2.x should
+ work as well.
+
+MediaWiki is developed and tested mainly on Unix/Linux
+platforms, but should work on Windows as well.
+
+********************** WARNING **************************
+
+The web-based install is still somewhat experimental. It
+doesn't yet support updating the format of an existing
+MediaWiki database, the maintenance scripts aren't available,
+and there may be all kinds of horrible bugs or security
+problems that haven't been worked out yet.
+
+----
+In-place web install
+----
+
+Decompress the MediaWiki installation archive either on
+your server, or on your local machine and upload the
+directory tree. Rename it from "mediawiki-1.x.x" to
+something nice, like "wiki", since it'll be in your URL.
+
+To run the install script, you'll need to temporarily make
+the 'config' subdirectory writable by the web server. The
+simplest way to do this on a Unix/Linux system is to make
+it world-writable:
+
+ chmod a+w config
+
+Hop into your browser and surf into the wiki directory.
+It'll direct you into the config script. Fill out the form...
+remember you're probably not on an encrypted connection.
+Gaaah! :)
+
+If all goes well, you should soon be told that it's set up
+your wiki database and written a configuration file. There
+should now be a 'LocalSettings.php' in the config directory;
+move it back up to the main wiki directory, and the wiki
+should now be working.
+
+Once the wiki is set up, you should remove the config
+directory, or at least make it not world-writable (though
+it will refuse to config again if the wiki is set up).
+
----
-Installing Wikipedia Phase III Software
+"Classic" install instructions:
----
The Wikipedia software was developed collaboratively by
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index ef93b6300e3a..a07e10c92467 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,6 +1,6 @@
= MediaWiki release notes =
-== Version 1.2.0rc1, 2004-02-28 ==
+== Version 1.2.0rc2, 2004-03-03 ==
This is a RELEASE CANDIDATE for the new production release. It is more or
less in sync with what is running on Wikipedia right now. There may be
@@ -8,6 +8,9 @@ some interesting bugs, it may eat all your data, and documentation may
not be up to date. If you use this on a production site, BE CAREFUL.
New features in 1.2:
+* In-place web-based installation [experimental!]
+ Note that maintenance functionss and database update are not yet
+ available through the web install script.
* Image resizing/thumbnail generation
* Stricter upload file extension blacklist and whitelist options
* More flexible blocking system; time period may be set
@@ -21,11 +24,17 @@ New features in 1.2:
* Editing toolbar to demonstrate wiki syntax to newbies
(off by default in user preferences)
* Support for authenticated SMTP outgoing e-mail (experimental)
+* It's now possible to assign sysop accounts from within the wiki.
+ An account with this ability must be labeled with the "bureaucrat"
+ privilege, such as the 'Developer' account created by the install.
Fixes and tweaks:
* Should work out of the box on MySQL 3.2.x again. On 4.x set
$wgEnablePersistentLC = true; to turn on the link cache table
for a slight rendering speed boost.
+* Should work on PHP 5.0 beta, but there may still be some problems
+* rebuildMessages.php can now selectively update new messages, or
+ overwrite everything.
* Works with short tags disabled.
* Various bug fixes.
* Other stuff we forgot.
diff --git a/config/index.php b/config/index.php
new file mode 100644
index 000000000000..2b6535b815e2
--- /dev/null
+++ b/config/index.php
@@ -0,0 +1,669 @@
+<?php
+# MediaWiki web-based config/installation
+# Copyright (C) 2004 Brion Vibber <brion@pobox.com>
+# http://www.mediawiki.org/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# http://www.gnu.org/copyleft/gpl.html
+
+header( "Content-type: text/html; charset=utf-8" );
+
+?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <meta name="robots" content="noindex,nofollow">
+ <title>MediaWiki installation</title>
+ <style type="text/css">
+ #credit {
+ float: right;
+ width: 200px;
+ font-size: 0.7em;
+ background-color: #eee;
+ color: black;
+ border: solid 1px #444;
+ padding: 8px;
+ margin-left: 8px;
+ }
+
+ dl.setup dd {
+ margin-left: 0;
+ }
+ dl.setup dd label {
+ clear: left;
+ font-weight: bold;
+ width: 12em;
+ float: left;
+ text-align: right;
+ padding-right: 1em;
+ }
+ dl.setup dt {
+ clear: left;
+ font-size: 0.8em;
+ margin-left: 10em;
+ /* margin-right: 200px; */
+ margin-bottom: 2em;
+ }
+ .error {
+ color: red;
+ }
+ </style>
+</head>
+
+<body>
+
+<div id="credit">
+ <center>
+ <a href="http://www.mediawiki.org/"><img
+ src="../images/wiki.png" width="135" height="135" alt="" border="0" /></a>
+ </center>
+
+ <b><a href="http://www.mediawiki.org/">MediaWiki</a></b> is
+ Copyright (C) 2001-2004 by Magnus Manske, Brion Vibber, Lee Daniel Crocker,
+ Tim Starling, Erik M&ouml;ller, and others.</p>
+
+ <ul>
+ <li><a href="../README">Readme</a></li>
+ <li><a href="../RELEASE-NOTES">Release notes</a></li>
+ <li><a href="../docs/">doc/</a></li>
+ <li><a href="http://meta.wikipedia.org/wiki/MediaWiki_User's_Guide">User's Guide</a></li>
+ </ul>
+
+ <p>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.</p>
+
+ <p>This progarm 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.</p>
+
+ <p>You should have received <a href="../COPYING">a copy of the GNU General Public License</a>
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ or <a href="http://www.gnu.org/copyleft/gpl.html">read it online</a></p>
+</div>
+
+<?php
+include( "../includes/DefaultSettings.php" );
+?>
+
+<h1>MediaWiki <?php print $wgVersion ?> installation</h1>
+
+
+<?php
+
+/* Check for existing configurations and bug out! */
+
+if( file_exists( "../LocalSettings.php" ) || file_exists( "../AdminSettings.php" ) ) {
+ dieout( "<h2>Wiki is configured.</h2>
+
+ <p>Already configured... <a href='../index.php'>return to the wiki</a>.</p>
+
+ <p>(You should probably remove this directory for added security.)</p>" );
+}
+
+if( file_exists( "./LocalSettings.php" ) || file_exists( "./AdminSettings.php" ) ) {
+ dieout( "<h2>You're configured!</h2>
+
+ <p>Please move <tt>LocalSettings.php</tt> to the parent directory, then
+ <a href='../index.php'>try out your wiki</a>.
+ (You should remove this config directory for added security once you're done.)</p>" );
+}
+
+if( !is_writable( "." ) ) {
+ dieout( "<h2>Can't write config file, aborting</h2>
+
+ <p>In order to configure the wiki you have to make the <tt>config</tt> subdirectory
+ writable by the web server. Once configuration is done you'll move the created
+ <tt>LocalSettings.php</tt> to the parent directory, and for added safety you can
+ then remove the <tt>config</tt> subdirectory entirely.</p>
+
+ <p>To make the directory writable on a Unix/Linux system:</p>
+
+ <pre>
+ cd <i>/path/to/wiki</i>
+ chmod a+w config
+ </pre>" );
+}
+
+
+include( "../install-utils.inc" );
+class ConfigData {
+ function getEncoded( $data ) {
+ # Hackish
+ global $wgInputEncoding;
+ if( strcasecmp( $wgInputEncoding, "utf-8" ) == 0 ) {
+ return $data;
+ } else {
+ return utf8_decode( $data ); /* to latin1 wikis */
+ }
+ }
+ function getSitename() { return $this->getEncoded( $this->Sitename ); }
+ function getSysopName() { return $this->getEncoded( $this->SysopName ); }
+ function getSysopPass() { return $this->getEncoded( $this->SysopPass ); }
+}
+
+?>
+
+
+<h2>Checking environment...</h2>
+<ul>
+<?php
+
+$conf = new ConfigData;
+
+install_version_checks();
+print "<li>PHP " . phpversion() . " ok</li>\n";
+
+/*
+$conf->zlib = function_exists( "gzencode" );
+$z = $conf->zlib ? "Have" : "No";
+print "<li>$z zlib support</li>\n";
+
+$conf->gd = function_exists( "imagejpeg" );
+if( $conf->gd ) {
+ print "<li>Found GD graphics library built-in</li>\n";
+} else {
+ print "<li>No built-in GD library</li>\n";
+}
+
+if( file_exists( "/usr/bin/convert" ) ) {
+ $conf->ImageMagick = "/usr/bin/convert";
+ print "<li>Found ImageMagick: /usr/bin/convert</li>\n";
+} elseif( file_exists( "/usr/local/bin/convert" ) ) {
+ $conf->ImageMagick = "/usr/local/bin/convert";
+ print "<li>Found ImageMagick: /usr/local/bin/convert</li>\n";
+} else {
+ $conf->ImageMagick = false;
+ print "<li>No ImageMagick.</li>\n";
+}
+*/
+
+# $conf->IP = "/Users/brion/Sites/inplace";
+chdir( ".." );
+$conf->IP = getcwd();
+chdir( "config" );
+print "<li>Installation directory: <tt>" . htmlspecialchars( $conf->IP ) . "</tt></li>\n";
+
+# $conf->ScriptPath = "/~brion/inplace";
+$conf->ScriptPath = preg_replace( '{^(.*)/config.*$}', '$1', $_SERVER["REQUEST_URI"] );
+print "<li>Script URI path: <tt>" . htmlspecialchars( $conf->ScriptPath ) . "</tt></li>\n";
+
+ $conf->posted = ($_SERVER["REQUEST_METHOD"] == "POST");
+
+ $conf->Sitename = ucfirst( importPost( "Sitename", "" ) );
+ $conf->EmergencyContact = importPost( "EmergencyContact", $_SERVER["SERVER_ADMIN"] );
+ $conf->DBserver = importPost( "DBserver", "localhost" );
+ $conf->DBname = importPost( "DBname", "wikidb" );
+ $conf->DBuser = importPost( "DBuser", "wikiuser" );
+ $conf->DBpassword = importPost( "DBpassword" );
+ $conf->DBpassword2 = importPost( "DBpassword2" );
+ $conf->RootPW = importPost( "RootPW" );
+ $conf->LanguageCode = importPost( "LanguageCode", "en-utf8" );
+ $conf->SysopName = importPost( "SysopName", "WikiSysop" );
+ $conf->SysopPass = importPost( "SysopPass" );
+ $conf->SysopPass2 = importPost( "SysopPass2" );
+
+/* Check for validity */
+$errs = array();
+
+if( $conf->Sitename == "" || $conf->Sitename == "MediaWiki" || $conf->Sitename == "Mediawiki" ) {
+ $errs["Sitename"] = "Must not be blank or \"MediaWiki\".";
+}
+if( $conf->DBpassword == "" ) {
+ $errs["DBpassword"] = "Must not be blank";
+}
+if( $conf->DBpassword != $conf->DBpassword2 ) {
+ $errs["DBpassword2"] = "Passwords don't match!";
+}
+
+if( $conf->SysopPass == "" ) {
+ $errs["SysopPass"] = "Must not be blank";
+}
+if( $conf->SysopPass != $conf->SysopPass2 ) {
+ $errs["SysopPass2"] = "Passwords don't match!";
+}
+
+if( $conf->posted && ( 0 == count( $errs ) ) ) {
+ do { /* So we can 'continue' to end prematurely */
+ $conf->Root = ($conf->RootPW != "");
+
+ /* Load up the settings and get installin' */
+ $local = writeLocalSettings( $conf );
+ $wgCommandLineMode = false;
+ eval($local);
+
+ $wgDBadminuser = $wgDBuser;
+ $wgDBadminpassword = $wgDBpassword;
+ $wgCommandLineMode = true;
+ $wgUseDatabaseMessages = false; /* FIXME: For database failure */
+ include_once( "Setup.php" );
+ include_once( "../maintenance/InitialiseMessages.inc" );
+
+ $wgTitle = Title::newFromText( "Installation script" );
+
+ if( $conf->Root ) {
+ $wgDatabase = Database::newFromParams( $wgDBserver, "root", $conf->RootPW, "", 1 );
+ } else {
+ $wgDatabase = Database::newFromParams( $wgDBserver, $wgDBuser, $wgDBpassword, "", 1 );
+ }
+ $wgDatabase->mIgnoreErrors = true;
+
+ if ( !$wgDatabase->isOpen() ) {
+ $errs["DBserver"] = "Couldn't connect to database";
+ continue;
+ }
+
+ @$myver = mysql_get_server_info( $wgDatabase->mConn );
+ if( !$myver ) {
+ print "<li>MySQL error " . ($err = mysql_errno() ) .
+ ": " . htmlspecialchars( mysql_error() );
+ switch( $err ) {
+ case 1045:
+ if( $conf->Root ) {
+ $errs["RootPW"] = "Check password";
+ } else {
+ $errs["DBuser"] = "Check name/pass";
+ $errs["DBpassword"] = "or enter root";
+ $errs["DBpassword2"] = "password below";
+ $errs["RootPW"] = "Got root?";
+ }
+ break;
+ case 2002:
+ case 2003:
+ $errs["DBserver"] = "Connection failed";
+ break;
+ default:
+ $errs["DBserver"] = "Couldn't connect to database";
+ }
+ continue;
+ }
+ print "<li>Connected to database... $myver";
+ if( version_compare( $myver, "4.0.0" ) >= 0 ) {
+ print "; enabling MySQL 4 enhancements";
+ $conf->DBmysql4 = true;
+ $local = writeLocalSettings( $conf );
+ }
+ print "</li>\n";
+
+ @$sel = mysql_select_db( $wgDBname, $wgDatabase->mConn );
+ if( $sel ) {
+ print "<li>Database <tt>" . htmlspecialchars( $wgDBname ) . "</tt> exists</li>\n";
+ } else {
+ $res = $wgDatabase->query( "CREATE DATABASE `$wgDBname`" );
+ if( !$res ) {
+ print "<li>Couldn't create database <tt>" .
+ htmlspecialchars( $wgDBname ) .
+ "</tt>; try with root access or check your username/pass.</li>\n";
+ $errs["RootPW"] = "&lt;- Enter";
+ continue;
+ }
+ print "<li>Created database <tt>" . htmlspecialchars( $wgDBname ) . "</tt></li>\n";
+ }
+
+ $wgDatabase->selectDB( $wgDBname );
+
+ if( $wgDatabase->tableExists( "cur" ) ) {
+ print "<li>There are already MediaWiki tables in this database. Skipping rest of database setup...</li>\n";
+ } else {
+ # FIXME: Check for errors
+ print "<li>Creating tables...";
+ dbsource( "../maintenance/tables.sql", $wgDatabase );
+ dbsource( "../maintenance/interwiki.sql", $wgDatabase );
+ dbsource( "../maintenance/indexes.sql", $wgDatabase );
+ print " done.</li>\n";
+
+ print "<li>Initializing data...";
+ $wgDatabase->query( "INSERT INTO site_stats (ss_row_id,ss_total_views," .
+ "ss_total_edits,ss_good_articles) VALUES (1,0,0,0)" );
+
+ if( $conf->SysopName ) {
+ $u = User::newFromName( $conf->getSysopName() );
+ if ( 0 == $u->idForName() ) {
+ $u->addToDatabase();
+ $u->setPassword( $conf->getSysopPass() );
+ $u->addRight( "sysop" );
+ $u->addRight( "developer" ); /* ?? */
+ $u->saveSettings();
+ print "<li>Created sysop account <tt>" .
+ htmlspecialchars( $conf->SysopName ) . "</tt>.</li>\n";
+ } else {
+ print "<li>Could not create user - already exists!</li>\n";
+ }
+ } else {
+ print "<li>Skipped sysop account creation, no name given.</li>\n";
+ }
+
+ print "<li>Initialising log pages...";
+ $logs = array(
+ "uploadlogpage" => "uploadlogpagetext",
+ "dellogpage" => "dellogpagetext",
+ "protectlogpage" => "protectlogtext",
+ "blocklogpage" => "bloglogtext"
+ );
+ $metaNamespace = Namespace::getWikipedia();
+ $now = wfTimestampNow();
+ $won = wfInvertTimestamp( $now );
+ foreach( $logs as $page => $text ) {
+ $logTitle = wfStrencode( $wgLang->ucfirst( str_replace( " ", "_", wfMsgNoDB( $page ) ) ) );
+ $logText = wfStrencode( wfMsgNoDB( $text ) );
+ $wgDatabase->query( "INSERT INTO cur (cur_namespace,cur_title,cur_text," .
+ "cur_restrictions,cur_timestamp,inverse_timestamp,cur_touched) " .
+ "VALUES ($metaNamespace,'$logTitle','$logText','sysop','$now','$won','$now')" );
+ }
+ print "</li>\n";
+
+ $titleobj = Title::newFromText( wfMsgNoDB( "mainpage" ) );
+ $title = $titleobj->getDBkey();
+ $sql = "INSERT INTO cur (cur_namespace,cur_title,cur_text,cur_timestamp,inverse_timestamp,cur_touched) " .
+ "VALUES (0,'$title','" .
+ wfStrencode( wfMsg( "mainpagetext" ) ) . "','$now','$won','$now')";
+ $wgDatabase->query( $sql, $fname );
+
+ print "<li>";
+ initialiseMessages();
+ print "</li>\n";
+
+ if( $conf->Root ) {
+ # Grant user permissions
+ dbsource( "../maintenance/users.sql", $wgDatabase );
+ }
+ }
+
+ /* Write out the config file now that all is well */
+ print "<p>Creating LocalSettings.php...</p>\n\n";
+ $f = fopen( "LocalSettings.php", "xt" );
+ if( $f == false ) {
+ dieout( "Couldn't write out LocalSettings.php. Check that the directory permissions are correct and that there isn't already a fiel of that name here." );
+ }
+ fwrite( $f, "<" . "?php\n$local\n?" . ">" );
+ fclose( $f );
+
+ print "<p>Success! Move the LocalSettings.php file into the parent directory, then follow
+ <a href='{$conf->ScriptPath}/index.php'>this link</a> to your wiki.</p>\n";
+
+ } while( false );
+}
+?>
+</ul>
+
+
+<?php
+
+if( count( $errs ) ) {
+ /* Display options form */
+
+ if( $conf->posted ) {
+ echo "<p class='error'>Something's not quite right yet; make sure everything below is filled out correctly.</p>\n";
+ }
+?>
+
+<form name="config" method="post">
+
+
+<h2>Site config</h2>
+
+<dl class="setup">
+ <dd>
+ <?php
+ aField( $conf, "Sitename", "Site name:" );
+ ?>
+ </dd>
+ <dt>
+ Your site name should be a relatively short word. It'll appear as the namespace
+ name for 'meta' pages as well as throughout the user interface. Good site names
+ are things like "<a href="http://www.wikipedia.org/">Wikipedia</a>" and
+ "<a href="http://openfacts.berlios.de/">OpenFacts</a>"; avoid punctuation,
+ which may cause problems.
+ </dt>
+
+ <dd>
+ <?php
+ aField( $conf, "EmergencyContact", "Contact e-mail" );
+ ?>
+ </dd>
+ <dt>
+ This will be used as the return address for password reminders and
+ may be displayed in some error conditions so visitors can get in
+ touch with you.
+ </dt>
+
+ <dd>
+ <label for="LanguageCode">Language</label>
+ <select id="LanguageCode" name="LanguageCode">
+ <?php
+ $list = getLanguageList();
+ foreach( $list as $code => $name ) {
+ $sel = ($code == $conf->LanguageCode) ? "selected" : "";
+ echo "\t\t<option value=\"$code\" $sel>$name</option>\n";
+ }
+ ?>
+ </select>
+ </dd>
+ <dt>
+ You may select the language for the user interface of the wiki...
+ Some localizations are less complete than others. This also controls
+ the character encoding; Unicode is more flexible, but Latin-1 may be
+ more compatible with older browsers for some languages. Unicode will
+ be used where not specified otherwise.
+ </dt>
+
+ <dd>
+ <?php aField( $conf, "SysopName", "Sysop account name:", "" ) ?>
+ </dd>
+ <dd>
+ <?php aField( $conf, "SysopPass", "password:", "password" ) ?>
+ </dd>
+ <dd>
+ <?php aField( $conf, "SysopPass2", "again:", "password" ) ?>
+ </dd>
+ <dt>
+ A sysop user account can lock or delete pages, block problematic IP
+ addresses from editing, and other maintenance tasks. If creating a new
+ wiki database, a sysop account will be created with the given name
+ and password.
+ </dt>
+</dl>
+
+<h2>Database config</h2>
+
+<dl class="setup">
+ <dd><?php
+ aField( $conf, "DBserver", "MySQL server" );
+ ?></dd>
+ <dt>
+ If your database server isn't on your web server, enter the name
+ or IP address here.
+ </dt>
+
+ <dd><?php
+ aField( $conf, "DBname", "Database name" );
+ ?></dd>
+ <dd><?php
+ aField( $conf, "DBuser", "DB username" );
+ ?></dd>
+ <dd><?php
+ aField( $conf, "DBpassword", "DB password", "password" );
+ ?></dd>
+ <dd><?php
+ aField( $conf, "DBpassword2", "again", "password" );
+ ?></dd>
+ <dt>
+ If you only have a single user account and database available,
+ enter those here. If you have database root access (see below)
+ you can specify new accounts/databases to be created.
+ </dt>
+
+
+ <dd>
+ <?php
+ aField( $conf, "RootPW", "DB root password", "password" );
+ ?>
+ </dd>
+ <dt>
+ You will only need this if the database and/or user account
+ above don't already exist.
+ Do <em>not</em> type in your machine's root password! MySQL
+ has its own "root" user with a separate password. (It might
+ even be blank, depending on your configuration.)
+ </dt>
+
+ <dd>
+ <label>&nbsp;</label>
+ <input type="submit" value="Install!" />
+ </dd>
+</dl>
+
+
+</form>
+
+<?php
+}
+
+/* -------------------------------------------------------------------------------------- */
+
+function writeAdminSettings( $conf ) {
+ return "
+\$wgDBadminuser = \"{$conf->DBadminuser}\";
+\$wgDBadminpassword = \"{$conf->DBadminpassword}\";
+";
+}
+
+function writeLocalSettings( $conf ) {
+ $conf->DBmysql4 = $conf->DBmysql4 ? 'true' : 'false';
+ $conf->UseImageResize = $conf->UseImageResize ? 'true' : 'false';
+ $conf->DBsqluser = $conf->DBuser;
+ $conf->DBsqlpassword = $conf->DBpassword;
+ $conf->PasswordSender = $conf->EmergencyContact;
+ if( $conf->LanguageCode == "en-utf8" ) {
+ $conf->LanguageCode = "en";
+ $conf->Encoding = "UTF-8";
+ }
+ return "
+# This file was automatically generated. Don't touch unless you
+# know what you're doing; see LocalSettings.sample for an edit-
+# friendly file.
+
+\$IP = \"{$conf->IP}\";
+ini_set( \"include_path\", \"\$IP/includes:\$IP/languages:\" . ini_get(\"include_path\") );
+include_once( \"DefaultSettings.php\" );
+
+if( \$wgCommandLineMode ) {
+ die( \"Can't use command-line utils with in-place install yet, sorry.\" );
+}
+
+\$wgSitename = \"{$conf->Sitename}\";
+
+\$wgScriptPath = \"{$conf->ScriptPath}\";
+\$wgScript = \"\$wgScriptPath/index.php\";
+\$wgRedirectScript = \"\$wgScriptPath/redirect.php\";
+
+\$wgArticlePath = \"\$wgScript?title=\$1\";
+# \$wgArticlePath = \"\$wgScript/\$1\"; # Prettier if you're setup for it
+
+\$wgStyleSheetPath = \"\$wgScriptPath/stylesheets\";
+\$wgStyleSheetDirectory = \"\$IP/stylesheets\";
+
+\$wgUploadPath = \"\$wgScriptPath/images\";
+\$wgUploadDirectory = \"\$IP/images\";
+\$wgLogo = \"\$wgUploadPath/wiki.png\";
+
+\$wgEmergencyContact = \"{$conf->EmergencyContact}\";
+\$wgPasswordSender = \"{$conf->PasswordSender}\";
+
+\$wgDBserver = \"{$conf->DBserver}\";
+\$wgDBname = \"{$conf->DBname}\";
+\$wgDBuser = \"{$conf->DBuser}\";
+\$wgDBpassword = \"{$conf->DBpassword}\";
+\$wgDBsqluser = \"{$conf->DBsqluser}\";
+\$wgDBsqlpassword = \"{$conf->DBsqlpassword}\";
+
+\$wgDBmysql4 = \$wgEnablePersistentLC = {$conf->DBmysql4};
+
+\$wgUseImageResize = {$conf->UseImageResize};
+
+## If you have the appropriate support software installed
+## you can enable inline LaTeX equations:
+# \$wgUseTeX = true;
+# \$wgMathPath = \"{$wgUploadPath}/math\";
+# \$wgMathDirectory = \"{$wgUploadDirectory}/math\";
+# \$wgTmpDirectory = \"{$wgUploadDirectory}/tmp\";
+
+\$wgLocalInterwiki = \$wgSitename;
+
+\$wgLanguageCode = \"{$conf->LanguageCode}\";
+" . ($conf->Encoding ? "\$wgInputEncoding = \$wgOutputEncoding = \"{$conf->Encoding}\";" : "" ) . "
+
+";
+}
+
+function dieout( $text ) {
+ die( $text . "\n\n</body>\n</html>" );
+}
+
+function importPost( $name, $default = "" ) {
+ if( isset( $_POST[$name] ) ) {
+ return $_POST[$name];
+ } else {
+ return $default;
+ }
+}
+
+function aField( &$conf, $field, $text, $type = "" ) {
+ if( $type != "" ) $type = "type=\"$type\"";
+ echo "\t\t<label for=\"$field\">$text</label>\n";
+ echo "\t\t<input $type name=\"$field\" id=\"$field\" value=\"";
+ echo htmlspecialchars( $conf->$field );
+ echo "\" />\n";
+
+ global $errs;
+ if(isset($errs[$field])) echo "<span class='error'>" . $errs[$field] . "</span>\n";
+}
+
+function getLanguageList() {
+ global $wgLanguageNames;
+ if( !isset( $wgLanguageNames ) ) {
+ $wgLanguageCode = "xxx";
+ function wfLocalUrl( $x ) { return $x; }
+ function wfLocalUrlE( $x ) { return $x; }
+ include( "../languages/Language.php" );
+ }
+
+ $codes = array();
+ $latin1 = array( "da", "de", "en", "es", "fr", "nl", "sv" );
+
+ $d = opendir( "../languages" );
+ while( false !== ($f = readdir( $d ) ) ) {
+ if( preg_match( '/Language([A-Z][a-z]+)\.php$/', $f, $m ) ) {
+ $code = strtolower( $m[1] );
+ $codes[$code] = "$code - " . $wgLanguageNames[$code];
+ if( in_array( $code, $latin1 ) ) {
+ $codes[$code] .= " - Latin-1";
+ }
+ }
+ }
+ $codes["en-utf8"] = "en - English - Unicode";
+ closedir( $d );
+ ksort( $codes );
+ return $codes;
+}
+
+?>
+
+</body>
+</html> \ No newline at end of file
diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php
index 50fca9ea93db..189f44a7ef46 100644
--- a/includes/DefaultSettings.php
+++ b/includes/DefaultSettings.php
@@ -6,7 +6,7 @@
# like $wgScriptPath, you must also localize everything that
# depends on it.
-$wgVersion = "1.2.0rc1";
+$wgVersion = "1.2.0rc2";
$wgSitename = "MediaWiki"; # Please customize!
$wgMetaNamespace = FALSE; # will be same as you set $wgSitename
diff --git a/includes/MessageCache.php b/includes/MessageCache.php
index 681078617a41..5dd1516ddf7a 100755
--- a/includes/MessageCache.php
+++ b/includes/MessageCache.php
@@ -200,5 +200,9 @@ class MessageCache
}
return $message;
}
+
+ function disable() { $this->mDisable = true; }
+ function enable() { $this->mDisable = false; }
+
}
?>
diff --git a/includes/OutputPage.php b/includes/OutputPage.php
index d0e3efacf063..fd5c2bee15d4 100644
--- a/includes/OutputPage.php
+++ b/includes/OutputPage.php
@@ -34,7 +34,7 @@ class OutputPage {
function addHeader( $name, $val ) { array_push( $this->mHeaders, "$name: $val" ) ; }
function addCookie( $name, $val ) { array_push( $this->mCookies, array( $name, $val ) ); }
- function redirect( $url ) { $this->mRedirect = $url; }
+ function redirect( $url, $responsecode = '302' ) { $this->mRedirect = $url; $this->mRedirectCode = $responsecode; }
# To add an http-equiv meta tag, precede the name with "http:"
function addMeta( $name, $val ) { array_push( $this->mMetatags, array( $name, $val ) ); }
@@ -229,10 +229,6 @@ class OutputPage {
$sk = $wgUser->getSkin();
- $this->sendCacheControl();
-
- header( "Content-type: text/html; charset={$wgOutputEncoding}" );
- header( "Content-language: {$wgLanguageCode}" );
if ( "" != $this->mRedirect ) {
if( substr( $this->mRedirect, 0, 4 ) != "http" ) {
@@ -240,9 +236,22 @@ class OutputPage {
global $wgServer;
$this->mRedirect = $wgServer . $this->mRedirect;
}
+ if( $this->mRedirectCode == '301') {
+ header("HTTP/1.1 {$this->mRedirectCode} Moved Permanently");
+ $this->mLastModified = gmdate( "D, j M Y H:i:s", wfTimestamp2Unix(
+ max( $timestamp, $wgUser->mTouched ) ) ) . " GMT";
+ }
+
+ $this->sendCacheControl();
+
header( "Location: {$this->mRedirect}" );
return;
}
+
+ $this->sendCacheControl();
+
+ header( "Content-type: text/html; charset={$wgOutputEncoding}" );
+ header( "Content-language: {$wgLanguageCode}" );
$exp = time() + $wgCookieExpiration;
foreach( $this->mCookies as $name => $val ) {
diff --git a/includes/SearchEngine.php b/includes/SearchEngine.php
index 0e182fc74b9a..40bce800c3c5 100644
--- a/includes/SearchEngine.php
+++ b/includes/SearchEngine.php
@@ -471,11 +471,11 @@ class SearchEngine {
foreach( array(NS_MAIN, NS_WP, NS_USER, NS_IMAGE, NS_MEDIAWIKI) as $namespace){
$anyhit |= SearchEngine::doFuzzyTitleSearch( $search, $namespace );
}
- }
+ }
+
if( ! $anyhit ){
- $wgOut->addHTML( wfMsg("notitlematches") );
+ return $this->showResults();
}
- $wgOut->addHTML( wfMsg( "googlesearch", htmlspecialchars( $search ), $GLOBALS['wgInputEncoding'] ) );
}
/* static */ function doFuzzyTitleSearch( $search, $namespace ){
diff --git a/includes/Skin.php b/includes/Skin.php
index d933a110d7a9..7db4dcd0f78f 100644
--- a/includes/Skin.php
+++ b/includes/Skin.php
@@ -2338,17 +2338,17 @@ class Skin {
$image=$wgUploadPath."/".$tool["image"];
$open=$tool["open"];
$close=$tool["close"];
- $sample=$tool["sample"];
+ $sample = addslashes( $tool["sample"] );
// Note that we use the tip both for the ALT tag and the TITLE tag of the image.
// Older browsers show a "speedtip" type message only for ALT.
// Ideally these should be different, realistically they
// probably don't need to be.
- $tip=$tool["tip"];
+ $tip = addslashes( $tool["tip"] );
$toolbar.="addButton('$image','$tip','$open','$close','$sample');\n";
}
- $toolbar.="addInfobox('".wfMsg("infobox")."');\n";
+ $toolbar.="addInfobox('" . addslashes( wfMsg( "infobox" ) ) . "');\n";
$toolbar.="document.writeln(\"</div>\");\n</script>";
return $toolbar;
}
diff --git a/index.php b/index.php
index 34580967802e..61220b18edbc 100644
--- a/index.php
+++ b/index.php
@@ -5,8 +5,15 @@ $wgRequestTime = microtime();
unset( $IP );
ini_set( "allow_url_fopen", 0 ); # For security...
+if(!file_exists("LocalSettings.php")) {
+ die( "You'll have to <a href='config/index.php'>set the wiki up</a> first!" );
+}
include_once( "./LocalSettings.php" );
+if( $wgSitename == "MediaWiki" ) {
+ die( "You must set the site name in \$wgSitename before installation.\n\n" );
+}
+
# Windows requires ';' as separator, ':' for Unix
$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
ini_set( "include_path", "$IP$sep$include_path" );
@@ -49,8 +56,8 @@ if ( "" != $search ) {
$wgTitle = Title::newFromText( wfMsg( "badtitle" ) );
$wgOut->errorpage( "badtitle", "badtitletext" );
} else if ( ( $action == "view" ) && $wgTitle->getPrefixedDBKey() != $title ) {
- /* redirect to canonical url */
- $wgOut->redirect( wfLocalUrl( $wgTitle->getPrefixedURL() ) );
+ /* redirect to canonical url, make it a 301 to allow caching */
+ $wgOut->redirect( wfLocalUrl( $wgTitle->getPrefixedURL() ), '301');
} else if ( Namespace::getSpecial() == $wgTitle->getNamespace() ) {
wfSpecialPage();
} else {
diff --git a/install.php b/install.php
index 9c7163eee9f4..bee1935afb79 100644
--- a/install.php
+++ b/install.php
@@ -208,7 +208,8 @@ function populatedata() {
}
print "Do you want to create a sysop+developer account? A developer\n";
print "can switch the database to read-only mode and run any type of\n";
- print "query through a web interface. [Y/n] ";
+ print "query through a web interface. This account can also assign\n";
+ print "sysop access to other accounts. [Y/n] ";
$response=readconsole();
if(strtolower($response)!="n") {
print "Enter the username [Developer]: ";
@@ -224,6 +225,7 @@ function populatedata() {
$u->setPassword( $developer_password );
$u->addRight( "sysop" );
$u->addRight( "developer" );
+ $u->addRight( "bureaucrat" );
$u->saveSettings();
} else {
print "Could not create user - already exists!\n";
diff --git a/irc/rc2irc.php b/irc/rc2irc.php
deleted file mode 100644
index 41d6b155ed57..000000000000
--- a/irc/rc2irc.php
+++ /dev/null
@@ -1,192 +0,0 @@
-<?
-
-$ircNick = "wikipedia_rc";
-$rooms = array("en" => 1, "fr" => 1, "de" => 1);
-$ircServer = "irc.freenode.net"
-$ircSockName = "tcp://$ircServer";
-$ircPort = 6667;
-$minDelay = 0.5;
-$ircReadTimeout = 200000; # us
-$ircWriteTimeout = 30; # s
-$fmB = chr(2);
-$fmU = chr(31);
-$queueId = 337055475;
-$maxMessageSize = 16384;
-
-#-----------------------------------------------------------------------------
-
-# Get queue
-
-$ircPassword = mt_rand(0xffffffff);
-$hostname = getenv('SERVER_NAME');
-
-$queue = msg_get_queue($queueId);
-
-if ( !$queue ) {
- print "Could not open RC message queue\n";
- exit;
-}
-emptyQueue( $queue );
-
-# Initialise the IRC connection
-$sockIRC = fsockopen( $ircSockName, $ircPort );
-if ( !$sockIRC ) {
- print "Could not open IRC connection\n";
- exit;
-}
-stream_set_timeout($sockIRC, 0, $ircWriteTimeout);
-
-fwrite( $sockIRC,
- "PASS $ircPassword\r\n" .
- "NICK $ircNick\r\n" .
- "USER recentchanges $hostname $ircServer Wikipedia RC->IRC bot\r\n"
-);
-
-foreach ( $rooms as $room => $v ) {
- joinRoom( $sockIRC, $room );
-}
-
-$readObjs = array( $sockIRC, $queue );
-
-# Main input loop
-$die = false;
-while ( !$die ) {
- # RC input
- $msgType = 0;
- $entry = false;
- if (!msg_receive($queue, 0, $msgType, $maxMessageSize, $entry, true, MSG_IPC_NOWAIT)) {
- $entry = false;
- }
- if (is_array( $entry )) {
- $out = getIrcOutput( $sockIRC, $entry );
- fwrite( $sockIRC, $out );
- }
-
- # IRC input
- stream_set_timeout($sockIRC, 0, $ircReadTimeout);
- $line = rtrim(fgets( $sockIRC ));
- stream_set_timeout($sockIRC, 0, $ircWriteTimeout);
- if ( $line ) {
- $die = processIrcInput( $sockIRC, $line );
- }
-}
-exit();
-
-#--------------------------------------------------------------
-function delayMin()
-{
- static $lastTime = 0;
- global $minDelay;
- if ( !$lastTime ) {
- $lastTime = getMicroTime();
- }
- $curTime = getMicroTime();
- $timeDifference = $curTime - $lastTime;
- if ( $timeDifference < $minDelay ) {
- usleep( ($minDelay - $timeDifference) *1000000 );
- }
- $lastTime = $curTime;
-}
-
-function getMicroTime()
-{
- list($usec, $sec) = explode(" ",microtime());
- return ((float)$usec + (float)$sec);
-}
-
-function getIrcOutput( $socket, $in )
-{
- global $rooms;
-
- delayMin();
- $bad = array("\n", "\r");
- $empty = array("", "");
- $comment = $in['comment'];
- $title = $in['prefixedDBkey'];
- $user = $in['userText'];
- $lastid = IntVal($in['lastOldid']);
- $flag = ($in['minor'] ? "M" : "") . ($in['new'] ? "N" : "");
- $lang = $in['lang'];
- if ( $lang == "w" ) {
- $lang = "en";
- }
-
- if ( !array_key_exists( $rooms, $lang ) ) {
- return "";
- }
- $room = "#{$lang}rc.wikipedia";
-
- if ( $in['new'] ) {
- $url = "http://$lang.wikipedia.org/wiki/" . urlencode($title);
- } else {
- $url = "http://$lang.wikipedia.org/w/wiki.phtml?title=" . urlencode($title) .
- "&diff=0&oldid=$lastid";
- }
- $spaceTitle = str_replace("_", " ", $title);
-
- $beep = "";
- if ( $patterns ) {
- foreach ( $patterns as $pattern ) {
- if ( preg_match( $pattern, $comment ) ) {
- $beep = chr(7);
- break;
- }
- }
- }
- if ( $comment !== "" ) {
- $comment = "($comment)";
- }
-
- $fullString = str_replace($bad, $empty,
- "$beep$fmB$spaceTitle$fmB $flag $url $user $comment");
- $fullString = "PRIVMSG $room :$fullString\r\n";
- return $fullString;
-}
-
-function joinRoom( $sock, $room )
-{
- global $rooms;
- $rooms[$room] = 1;
- fwrite( $sock, "JOIN #{$room}rc.wikipedia\r\n" );
-}
-
-function partRoom( $sock, $room )
-{
- global $rooms;
- unset( $rooms[$room] );
- fwrite( $sock, "PART #{$room}rc.wikipedia\r\n" );
-}
-
-function processIrcInput( $sock, $line )
-{
- global $rooms;
-
- $die = false;
- $args = explode( " ", $line );
-
- if ( $args[0] == "PING" ) {
- fwrite( $sock, "PONG {$args[1]}\r\n" );
- } elseif ( $args[0]{0} == ":" ) {
- $name = array_shift( $args );
- $name = substr($name, 1);
- $cmd = array_shift( $args );
- if ( $cmd == "PRIVMSG" ) {
- $msgRoom = array_shift( $args );
- if ( $args[0] == "die" ) {
- $die = true;
- } elseif ( $args[0] == "join" ) {
- joinRoom( $args[1] );
- } elseif ( $args[0] == "part" ) {
- partRoom( $args[1] );
- }
- }
- }
-}
-
-function emptyQueue( $id )
-{
- while ( msg_receive($queue, 0, $msgType, $maxMessageSize, $entry, true, MSG_IPC_NOWAIT));
-}
-
-?>
-
diff --git a/irc/rcdumper.php b/irc/rcdumper.php
deleted file mode 100644
index 0ba026cd799a..000000000000
--- a/irc/rcdumper.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-
-$wgCommandLineMode = true;
-$fmB = chr(2);
-$fmU = chr(31);
-
-$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-if ( $argv[1] ) {
- $lang = $argv[1];
- putenv( "wikilang=$lang");
- $settingsFile = "/apache/htdocs/{$argv[1]}/w/LocalSettings.php";
- $newpath = "/apache/common/php$sep";
-} else {
- $settingsFile = "../LocalSettings.php";
- $newpath = "";
-}
-
-if ( $argv[2] ) {
- $patterns = explode( ",", $argv[2]);
-} else {
- $patterns = false;
-}
-
-if ( ! is_readable( $settingsFile ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "must exist in the source directory.\n";
- exit();
-}
-
-ini_set( "include_path", "$newpath$IP$sep$include_path" );
-
-$wgCommandLineMode = true;
-$DP = "../includes";
-include_once( $settingsFile );
-include_once( "Setup.php" );
-$wgTitle = Title::newFromText( "RC dumper" );
-$wgCommandLineMode = true;
-set_time_limit(0);
-
-sleep(30);
-
-$res = wfQuery( "SELECT rc_timestamp FROM recentchanges ORDER BY rc_timestamp DESC LIMIT 1", DB_READ );
-$row = wfFetchObject( $res );
-$oldTimestamp = $row->rc_timestamp;
-
-while (1) {
- $res = wfQuery( "SELECT * FROM recentchanges WHERE rc_timestamp>'$oldTimestamp' ORDER BY rc_timestamp", DB_READ );
- $rowIndex = 0;
- while ( $row = wfFetchObject( $res ) ) {
- $ns = $wgLang->getNsText( $row->rc_namespace ) ;
- if ( $ns ) {
- $title = "$ns:{$row->rc_title}";
- } else {
- $title = $row->rc_title;
- }
- /*if ( strlen( $row->rc_comment ) > 50 ) {
- $comment = substr( $row->rc_comment, 0, 50 );
- } else {*/
- $comment = $row->rc_comment;
-// }
- $bad = array("\n", "\r");
- $empty = array("", "");
- $comment = str_replace($bad, $empty, $comment);
- $title = str_replace($bad, $empty, $title);
- $user = str_replace($bad, $empty, $row->rc_user_text);
- $lastid = IntVal($row->rc_last_oldid);
- $flag = ($row->rc_minor ? "M" : "") . ($row->rc_new ? "N" : "");
- if ( $row->rc_new ) {
- $url = "http://$lang.wikipedia.org/wiki/" . urlencode($title);
- } else {
- $url = "http://$lang.wikipedia.org/w/wiki.phtml?title=" . urlencode($title) .
- "&diff=0&oldid=$lastid";
- }
- $boldTitle = $fmB . str_replace("_", " ", $title) . $fmB;
-
- if ( $patterns ) {
- foreach ( $patterns as $pattern ) {
- if ( preg_match( $pattern, $comment ) ) {
- print chr(7);
- break;
- }
- }
- }
- if ( $comment !== "" ) {
- $comment = "($comment)";
- }
-
- $fullString = "$boldTitle $flag $url $user $comment\n";
-
- if ( $fullString{0} == "/" ) {
- $fullString = " $fullString";
- }
- print( $fullString );
- $oldTimestamp = $row->rc_timestamp;
- sleep(2);
- }
- sleep(5);
-}
-
-exit();
-
-?>
diff --git a/languages/LanguageBn.php b/languages/LanguageBn.php
new file mode 100644
index 000000000000..3a2eb5f44b90
--- /dev/null
+++ b/languages/LanguageBn.php
@@ -0,0 +1,1004 @@
+<?php
+
+# NOTE: To turn off "Current Events" in the sidebar,
+# set "currentevents" => "-"
+
+# The names of the namespaces can be set here, but the numbers
+# are magical, so don't change or move them! The Namespace class
+# encapsulates some of the magic-ness.
+#
+/* private */ $wgNamespaceNamesBn = array(
+ -1 => "বিশেষ",
+ 0 => "",
+ 1 => "আলাপ",
+ 2 => "ব্যবহারকারী",
+ 3 => "ব্যবহারকারী_আলাপ",
+ 4 => "উইকিপেডিয়া",
+ 5 => "উইকিপেডিয়া_আলাপ",
+ 6 => "চিত্র",
+ 7 => "চিত্র_আলাপ",
+ 8 => "MediaWiki",
+ 9 => "MediaWik i_আলাপ",
+);
+
+/* private */ $wgDefaultUserOptionsBn = array(
+ "quickbar" => 1, "underline" => 1, "hover" => 1,
+ "cols" => 80, "rows" => 25, "searchlimit" => 20,
+ "contextlines" => 5, "contextchars" => 50,
+ "skin" => 0, "math" => 1, "rcdays" => 7, "rclimit" => 50,
+ "highlightbroken" => 1, "stubthreshold" => 0,
+ "previewontop" => 1, "editsection"=>1, "showtoc"=>1,
+ "date" => 0
+);
+
+/* private */ $wgQuickbarSettingsBn = array(
+ "None", "Fixed left", "Fixed right", "Floating left"
+);
+
+/* private */ $wgSkinNamesBn = array(
+ "Standard", "Nostalgia", "Cologne Blue"
+);
+
+/* private */ $wgMathNamesBn = array(
+ "Always render PNG",
+ "HTML if very simple or else PNG",
+ "HTML if possible or else PNG",
+ "Leave it as TeX (for text browsers)",
+ "Recommended for modern browsers"
+);
+
+/* private */ $wgDateFormatsBn = array(
+ "No preference",
+ "January 15, 2001",
+ "15 January 2001",
+ "2001 January 15"
+);
+
+/* private */ $wgUserTogglesBn = array(
+ "hover" => "Show hoverbox over wiki links",
+ "underline" => "Underline links",
+ "highlightbroken" => "Format broken links <a href=\"\" class=\"new\">like
+this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
+ "justify" => "Justify paragraphs",
+ "hideminor" => "Hide minor edits in recent changes",
+ "usenewrc" => "Enhanced recent changes (not for all browsers)",
+ "numberheadings" => "Auto-number headings",
+ "editsection"=>"Show links for editing individual sections",
+ "showtoc"=>"Show table of contents for articles with more than 3 headings",
+ "rememberpassword" => "Remember password across sessions",
+ "editwidth" => "Edit box has full width",
+ "editondblclick" => "Edit pages on double click (JavaScript)",
+ "watchdefault" => "Add pages you edit to your watchlist",
+ "minordefault" => "Mark all edits minor by default",
+ "previewontop" => "Show preview before edit box and not after it",
+ "nocache" => "Disable page caching"
+);
+
+/* private */ $wgBookstoreListBn = array(
+ "AddALL" => "http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN",
+ "PriceSCAN" => "http://www.pricescan.com/books/bookDetail.asp?isbn=$1",
+ "Barnes & Noble" => "http://shop.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1",
+ "Amazon.com" => "http://www.amazon.com/exec/obidos/ISBN=$1"
+);
+
+/* private */ $wgWeekdayNamesBn = array(
+ "রবিবার", "সোমবার", "মঙ্গলবার", "বুধবার", "বৃহস্পতিবার",
+ "শুক্রবার", "শনিবার"
+);
+
+/* private */ $wgMonthNamesBn = array(
+ "জানুয়ারী", "ফেব্রুয়ারী", "মার্চ", "এপ্রিল", "মে", "জুন",
+ "জুলাই", "আগস্ট", "সেপ্টেম্বর", "অক্টোবর", "নভেম্বর",
+ "ডিসেম্বর"
+);
+
+/* private */ $wgMonthAbbreviationsBn = array(
+ "জানু", "ফেব্রু", "মার্চ", "এপ্রিল", "মে", "জুন", "জুলাই", "আগস্ট",
+ "সেপ্টে", "অক্টো", "নভে", "ডিসে"
+);
+
+# All special pages have to be listed here: a description of ""
+# will make them not show up on the "Special Pages" page, which
+# is the right thing for some of them (such as the "targeted" ones).
+#
+/* private */ $wgValidSpecialPagesBn = array(
+ "Userlogin" => "",
+ "Userlogout" => "",
+ "Preferences" => "Set my user preferences",
+ "Watchlist" => "My watchlist",
+ "Recentchanges" => "Recently updated pages",
+ "Upload" => "Upload image files",
+ "Imagelist" => "Image list",
+ "Listusers" => "Registered users",
+ "Statistics" => "Site statistics",
+ "Randompage" => "Random article",
+
+ "Lonelypages" => "Orphaned articles",
+ "Unusedimages" => "Orphaned images",
+ "Popularpages" => "Popular articles",
+ "Wantedpages" => "Most wanted articles",
+ "Shortpages" => "Short articles",
+ "Longpages" => "Long articles",
+ "Newpages" => "Newly created articles",
+ "Ancientpages" => "Oldest articles",
+ "Intl" => "Interlanguage links",
+ "Allpages" => "All pages by title",
+
+ "Ipblocklist" => "Blocked IP addresses",
+ "Maintenance" => "Maintenance page",
+ "Specialpages" => "",
+ "Contributions" => "",
+ "Emailuser" => "",
+ "Whatlinkshere" => "",
+ "Recentchangeslinked" => "",
+ "Movepage" => "",
+ "Booksources" => "External book sources",
+ "Export" => "XML export",
+ "Version" => "Version",
+
+);
+
+/* private */ $wgSysopSpecialPagesBn = array(
+ "Blockip" => "Block an IP address",
+ "Asksql" => "Query the database",
+ "Undelete" => "Restore deleted pages"
+);
+
+/* private */ $wgDeveloperSpecialPagesBn = array(
+ "Lockdb" => "Make database read-only",
+ "Unlockdb" => "Restore DB write access",
+ "Debug" => "Debugging information"
+);
+
+/* private */ $wgAllMessagesBn = array(
+
+# Bits of text used by many pages:
+#
+
+"linktrail" => "/^([a-z]+)(.*)\$/sD",
+"mainpage" => "প্রধান পাতা",
+"mainpagetext" => "Wiki software successfully installed.",
+"about" => "বৃত্তান্ত",
+"aboutwikipedia" => "উইকিপেডিয়ার বৃত্তান্ত",
+"aboutpage" => "উইকিপেডিয়া:বৃত্তান্ত",
+"help" => "সহায়িকা",
+"helppage" => "উইকিপেডিয়া:সহায়িকা",
+"wikititlesuffix" => "উইকিপেডিয়া",
+"bugreports" => "ত্রুটি বিবরণী",
+"bugreportspage" => "উইকিপেডিয়া:ত্রুটি_বিবরণী",
+"faq" => "প্রশ্নোত্তর",
+"faqpage" => "উইকিপেডিয়া:প্রশ্নোত্তর",
+"edithelp" => "সম্পাদনা সহায়িকা",
+"edithelppage" => "উইকিপেডিয়া:কিভাবে_একটি_পৃষ্ঠা_সম্পাদনা_করবেন",
+"cancel" => "বাতিল কর",
+"qbfind" => "খঁুজে দেখ",
+"qbbrowse" => "ঘুরে দেখ",
+"qbedit" => "সম্পাদনা কর",
+"qbpageoptions" => "এ পৃষ্ঠার বিকল্পসমূহ",
+"qbpageinfo" => "পৃষ্ঠা-সংক্রান্ত তথ্য",
+"qbmyoptions" => "আমার পছন্দ",
+"mypage" => "আমার পাতা",
+"mytalk" => "আমার কথাবার্তা",
+"currentevents" => "সমসাময়িক ঘটনা",
+"errorpagetitle" => "ভুল",
+"returnto" => "ফিরে যাও $1.",
+"fromwikipedia" => "উইকিপেডিয়া, মুক্ত বিশ্বকোষ থেকে",
+"whatlinkshere" => "যেসব পাতা থেকে এখানে সংযোগ আছে",
+"help" => "সহায়িকা",
+"search" => "খঁুজে দেখ",
+"go" => "চল",
+"history" => "এ পৃষ্ঠার ইতিহাস",
+"printableversion" => "ছাপার যোগ্য সংস্করণ",
+"editthispage" => "এই পৃষ্ঠাটি সম্পাদনা করুন",
+"deletethispage" => "এই পৃষ্ঠাটি মুছে ফেলুন",
+"protectthispage" => "এই পৃষ্ঠাটি সংরক্ষণ করুন",
+"unprotectthispage" => "এই পৃষ্ঠার সংরক্ষণ ছেড়ে দিন",
+"newpage" => "নতুন পাতা",
+"talkpage" => "এই পৃষ্ঠা নিয়ে আলোচনা করুন",
+"articlepage" => "নিবন্ধ দেখুন",
+"subjectpage" => "বিষয় দেখুন", # For compatibility
+"userpage" => "ব্যাবহারকারীর পাতা দেখুন",
+"wikipediapage" => "মেটা-পাতা দেখুন",
+"imagepage" => "ছবির পাতা দেখুন",
+"viewtalkpage" => "আলোচনা দেখুন",
+"otherlanguages" => "অন্যান্য ভাষা",
+"redirectedfrom" => "($1 থেকে ঘুরে এসেছে)",
+"lastmodified" => "এ পৃষ্ঠায় শেষ পরিবর্তন হয়েছিল $1.",
+"viewcount" => "এ পৃষ্ঠা দেখা হয়েছে $1 বার।",
+"gnunote" => "সব লেখা <a class=internal href='/wiki/GNU_FDL'>GNU Free Documentation License</a> অনুযায়ী বিনামূল্যে এবং মুক্তভাবে সংগ্রহ ও বিতরণযোগ্য",
+"printsubtitle" => "(From http://www.wikipedia.org)",
+"protectedpage" => "সংরক্ষিত পাতা",
+"administrators" => "উইকিপেডিয়া:প্রশাসকবৃন্দ",
+"sysoptitle" => "Sysop এর ক্ষমতা প্রয়োজন",
+"sysoptext" => "এ কাজটি কেবল \"sysop\" ক্ষমতাসম্পন্ন ব্যক্তিই করতে পারেন। $1 দেখুন।",
+"developertitle" => "developer এর ক্ষমতা প্রয়োজন",
+"developertext" => "এ কাজটি কেবল \"developer\" ক্ষমতাসম্পন্ন ব্যক্তিই করতে পারেন। $1 দেখুন।",
+"nbytes" => "$1 বাইট",
+"go" => "চল",
+"ok" => "ঠিক আছে",
+"sitetitle" => "উইকিপেডিয়া",
+"sitesubtitle" => "মুক্ত বিশ্বকোষ ",
+"retrievedfrom" => "\"$1\" থেকে আনীত",
+"newmessages" => "আপনার $1 এসেছে।",
+"newmessageslink" => "নতুন বার্তা",
+"editsection"=>"সম্পাদনা করুন",
+"toc" => "সূচীপত্র",
+"showtoc" => "দেখাও",
+"hidetoc" => "সরিয়ে রাখ",
+
+# Main script and global functions
+#
+"nosuchaction" => "No such action",
+"nosuchactiontext" => "The action specified by the URL is not
+recognized by the Wikipedia software",
+"nosuchspecialpage" => "No such special page",
+"nospecialpagetext" => "You have requested a special page that is not
+recognized by the Wikipedia software.",
+
+# General errors
+#
+"error" => "Error",
+"databaseerror" => "Database error",
+"dberrortext" => "A database query syntax error has occurred.
+This could be because of an illegal search query (see $5),
+or it may indicate a bug in the software.
+The last attempted database query was:
+<blockquote><tt>$1</tt></blockquote>
+from within function \"<tt>$2</tt>\".
+MySQL returned error \"<tt>$3: $4</tt>\".",
+"dberrortextcl" => "A database query syntax error has occurred.
+The last attempted database query was:
+\"$1\"
+from within function \"$2\".
+MySQL returned error \"$3: $4\".\n",
+"noconnect" => "Could not connect to DB on $1",
+"nodb" => "Could not select database $1",
+"readonly" => "Database locked",
+"enterlockreason" => "Enter a reason for the lock, including an estimate
+of when the lock will be released",
+"readonlytext" => "The Wikipedia database is currently locked to new
+entries and other modifications, probably for routine database maintenance,
+after which it will be back to normal.
+The administrator who locked it offered this explanation:
+<p>$1",
+"missingarticle" => "The database did not find the text of a page
+that it should have found, named \"$1\".
+
+<p>This is usually caused by following an outdated diff or history link to a
+page that has been deleted.
+
+<p>If this is not the case, you may have found a bug in the software.
+Please report this to an administrator, making note of the URL.",
+"internalerror" => "Internal error",
+"filecopyerror" => "Could not copy file \"$1\" to \"$2\".",
+"filerenameerror" => "Could not rename file \"$1\" to \"$2\".",
+"filedeleteerror" => "Could not delete file \"$1\".",
+"filenotfound" => "Could not find file \"$1\".",
+"unexpected" => "Unexpected value: \"$1\"=\"$2\".",
+"formerror" => "Error: could not submit form",
+"badarticleerror" => "This action cannot be performed on this page.",
+"cannotdelete" => "Could not delete the page or image specified. (It may have already been deleted by someone else.)",
+"badtitle" => "Bad title",
+"badtitletext" => "The requested page title was invalid, empty, or
+an incorrectly linked inter-language or inter-wiki title.",
+"perfdisabled" => "Sorry! This feature has been temporarily disabled
+because it slows the database down to the point that no one can use
+the wiki.",
+"perfdisabledsub" => "Here's a saved copy from $1:",
+
+# Login and logout pages
+#
+"logouttitle" => "User logout",
+"logouttext" => "You are now logged out.
+You can continue to use Wikipedia anonymously, or you can log in
+again as the same or as a different user.\n",
+
+"welcomecreation" => "<h2>Welcome, $1!</h2><p>Your account has been created.
+Don't forget to personalize your wikipedia preferences.",
+
+"loginpagetitle" => "User login",
+"yourname" => "Your user name",
+"yourpassword" => "Your password",
+"yourpasswordagain" => "Retype password",
+"newusersonly" => " (new users only)",
+"remembermypassword" => "Remember my password across sessions.",
+"loginproblem" => "<b>There has been a problem with your login.</b><br>Try again!",
+"alreadyloggedin" => "<font color=red><b>User $1, you are already logged in!</b></font><br>\n",
+
+"areyounew" => "If you are new to Wikipedia and want to get a user account,
+enter a user name, then type and re-type a password.
+Your e-mail address is optional; if you lose your password you can request
+that it be to the address you give.<br>\n",
+
+"login" => "Log in",
+"userlogin" => "Log in",
+"logout" => "Log out",
+"userlogout" => "Log out",
+"notloggedin" => "Not logged in",
+"createaccount" => "Create new account",
+"badretype" => "The passwords you entered do not match.",
+"userexists" => "The user name you entered is already in use. Please choose a different name.",
+"youremail" => "Your e-mail*",
+"yournick" => "Your nickname (for signatures)",
+"emailforlost" => "* Entering an email address is optional. But it enables people to
+contact you through the website without you having to reveal your
+email address to them, and it also helps you if you forget your
+password.",
+"loginerror" => "Login error",
+"noname" => "You have not specified a valid user name.",
+"loginsuccesstitle" => "Login successful",
+"loginsuccess" => "You are now logged in to Wikipedia as \"$1\".",
+"nosuchuser" => "There is no user by the name \"$1\".
+Check your spelling, or use the form below to create a new user account.",
+"wrongpassword" => "The password you entered is incorrect. Please try again.",
+"mailmypassword" => "Mail me a new password",
+"passwordremindertitle" => "Password reminder from Wikipedia",
+"passwordremindertext" => "Someone (probably you, from IP address $1)
+requested that we send you a new Wikipedia login password.
+The password for user \"$2\" is now \"$3\".
+You should log in and change your password now.",
+"noemail" => "There is no e-mail address recorded for user \"$1\".",
+"passwordsent" => "A new password has been sent to the e-mail address
+registered for \"$1\".
+Please log in again after you receive it.",
+
+# Edit pages
+#
+"summary" => "Summary",
+"minoredit" => "This is a minor edit",
+"watchthis" => "Watch this article",
+"savearticle" => "Save page",
+"preview" => "Preview",
+"showpreview" => "Show preview",
+"blockedtitle" => "User is blocked",
+"blockedtext" => "Your user name or IP address has been blocked by $1.
+The reason given is this:<br>''$2''<p>You may contact $1 or one of the other
+[[Wikipedia:administrators|administrators]] to discuss the block.",
+"newarticle" => "(New)",
+"newarticletext" =>
+"You've followed a link to a page that doesn't exist yet.
+To create the page, start typing in the box below
+(see the [[Wikipedia:Help|help page]] for more info).
+If you are here by mistake, just click your browser's '''back''' button.",
+"anontalkpagetext" => "---- ''This is the discussion page for an anonymous user who has not created an account yet or who does not use it. We therefore have to use the numerical [[IP address]] to identify him/her. Such an IP address can be shared by several users. If you are an anonymous user and feel that irrelevant comments have been directed at you, please [[Special:Userlogin|create an account or log in]] to avoid future confusion with other anonymous users.'' ",
+"noarticletext" => "(There is currently no text in this page)",
+"updated" => "(Updated)",
+"note" => "<strong>Note:</strong> ",
+"previewnote" => "Remember that this is only a preview, and has not yet been saved!",
+"previewconflict" => "This preview reflects the text in the upper
+text editing area as it will appear if you choose to save.",
+"editing" => "Editing $1",
+"sectionedit" => " (section)",
+"editconflict" => "Edit conflict: $1",
+"explainconflict" => "Someone else has changed this page since you
+started editing it.
+The upper text area contains the page text as it currently exists.
+Your changes are shown in the lower text area.
+You will have to merge your changes into the existing text.
+<b>Only</b> the text in the upper text area will be saved when you
+press \"Save page\".\n<p>",
+"yourtext" => "Your text",
+"storedversion" => "Stored version",
+"editingold" => "<strong>WARNING: You are editing an out-of-date
+revision of this page.
+If you save it, any changes made since this revision will be lost.</strong>\n",
+"yourdiff" => "Differences",
+"copyrightwarning" => "Please note that all contributions to Wikipedia are
+considered to be released under the GNU Free Documentation License
+(see $1 for details).
+If you don't want your writing to be edited mercilessly and redistributed
+at will, then don't submit it here.<br>
+You are also promising us that you wrote this yourself, or copied it from a
+public domain or similar free resource.
+<strong>DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!</strong>",
+"longpagewarning" => "WARNING: This page is $1 kilobytes long; some
+browsers may have problems editing pages approaching or longer than 32kb.
+Please consider breaking the page into smaller sections.",
+"readonlywarning" => "WARNING: The database has been locked for maintenance,
+so you will not be able to save your edits right now. You may wish to cut-n-paste
+the text into a text file and save it for later.",
+"protectedpagewarning" => "WARNING: This page has been locked so that only
+users with sysop privileges can edit it. Be sure you are following the
+<a href='/wiki/Wikipedia:Protected_page_guidelines'>protected page
+guidelines</a>.",
+
+# History pages
+#
+"revhistory" => "Revision history",
+"nohistory" => "There is no edit history for this page.",
+"revnotfound" => "Revision not found",
+"revnotfoundtext" => "The old revision of the page you asked for could not be found.
+Please check the URL you used to access this page.\n",
+"loadhist" => "Loading page history",
+"currentrev" => "Current revision",
+"revisionasof" => "Revision as of $1",
+"cur" => "cur",
+"next" => "next",
+"last" => "last",
+"orig" => "orig",
+"histlegend" => "Legend: (cur) = difference with current version,
+(last) = difference with preceding version, M = minor edit",
+
+# Diffs
+#
+"difference" => "(Difference between revisions)",
+"loadingrev" => "loading revision for diff",
+"lineno" => "Line $1:",
+"editcurrent" => "Edit the current version of this page",
+
+# Search results
+#
+"searchresults" => "Search results",
+"searchhelppage" => "Wikipedia:Searching",
+"searchingwikipedia" => "Searching Wikipedia",
+"searchresulttext" => "For more information about searching Wikipedia, see $1.",
+"searchquery" => "For query \"$1\"",
+"badquery" => "Badly formed search query",
+"badquerytext" => "We could not process your query.
+This is probably because you have attempted to search for a
+word fewer than three letters long, which is not yet supported.
+It could also be that you have mistyped the expression, for
+example \"fish and and scales\".
+Please try another query.",
+"matchtotals" => "The query \"$1\" matched $2 article titles
+and the text of $3 articles.",
+"nogomatch" => "No page with this exact title exists, trying full text search.",
+"titlematches" => "Article title matches",
+"notitlematches" => "No article title matches",
+"textmatches" => "Article text matches",
+"notextmatches" => "No article text matches",
+"prevn" => "previous $1",
+"nextn" => "next $1",
+"viewprevnext" => "View ($1) ($2) ($3).",
+"showingresults" => "Showing below <b>$1</b> results starting with #<b>$2</b>.",
+"showingresultsnum" => "Showing below <b>$3</b> results starting with #<b>$2</b>.",
+"nonefound" => "<strong>Note</strong>: unsuccessful searches are
+often caused by searching for common words like \"have\" and \"from\",
+which are not indexed, or by specifying more than one search term (only pages
+containing all of the search terms will appear in the result).",
+"powersearch" => "Search",
+"powersearchtext" => "
+Search in namespaces :<br>
+$1<br>
+$2 List redirects &nbsp; Search for $3 $9",
+
+
+# Preferences page
+#
+"preferences" => "Preferences",
+"prefsnologin" => "Not logged in",
+"prefsnologintext" => "You must be <a href=\"" .
+ wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a>
+to set user preferences.",
+"prefslogintext" => "You are logged in as \"$1\".
+Your internal ID number is $2.
+
+See [[Wikipedia:User preferences help]] for help deciphering the options.",
+"prefsreset" => "Preferences have been reset from storage.",
+"qbsettings" => "Quickbar settings",
+"changepassword" => "Change password",
+"skin" => "Skin",
+"math" => "Rendering math",
+"dateformat" => "Date format",
+"math_failure" => "Failed to parse",
+"math_unknown_error" => "unknown error",
+"math_unknown_function" => "unknown function ",
+"math_lexing_error" => "lexing error",
+"math_syntax_error" => "syntax error",
+"saveprefs" => "Save preferences",
+"resetprefs" => "Reset preferences",
+"oldpassword" => "Old password",
+"newpassword" => "New password",
+"retypenew" => "Retype new password",
+"textboxsize" => "Textbox dimensions",
+"rows" => "Rows",
+"columns" => "Columns",
+"searchresultshead" => "Search result settings",
+"resultsperpage" => "Hits to show per page",
+"contextlines" => "Lines to show per hit",
+"contextchars" => "Characters of context per line",
+"stubthreshold" => "Threshold for stub display",
+"recentchangescount" => "Number of titles in recent changes",
+"savedprefs" => "Your preferences have been saved.",
+"timezonetext" => "Enter number of hours your local time differs
+from server time (UTC).",
+"localtime" => "Local time display",
+"timezoneoffset" => "Offset",
+"servertime" => "Server time is now",
+"guesstimezone" => "Fill in from browser",
+"emailflag" => "Disable e-mail from other users",
+"defaultns" => "Search in these namespaces by default:",
+
+# Recent changes
+#
+"changes" => "changes",
+"recentchanges" => "Recent changes",
+"recentchangestext" => "Track the most recent changes to Wikipedia on this page.
+[[Wikipedia:Welcome,_newcomers|Welcome, newcomers]]!
+Please have a look at these pages: [[wikipedia:FAQ|Wikipedia FAQ]],
+[[Wikipedia:Policies and guidelines|Wikipedia policy]]
+(especially [[wikipedia:Naming conventions|naming conventions]],
+[[wikipedia:Neutral point of view|neutral point of view]]),
+and [[wikipedia:Most common Wikipedia faux pas|most common Wikipedia faux pas]].
+
+If you want to see Wikipedia succeed, it's very important that you don't add
+material restricted by others' [[wikipedia:Copyrights|copyrights]].
+The legal liability could really hurt the project, so please don't do it.
+See also the [http://meta.wikipedia.org/wiki/Special:Recentchanges recent meta discussion].",
+"rcloaderr" => "Loading recent changes",
+"rcnote" => "Below are the last <strong>$1</strong> changes in last <strong>$2</strong> days.",
+"rcnotefrom" => "Below are the changes since <b>$2</b> (up to <b>$1</b> shown).",
+"rclistfrom" => "Show new changes starting from $1",
+# "rclinks" => "Show last $1 changes in last $2 hours / last $3 days",
+# "rclinks" => "Show last $1 changes in last $2 days.",
+"rclinks" => "Show last $1 changes in last $2 days; $3 minor edits",
+"rchide" => "in $4 form; $1 minor edits; $2 secondary namespaces; $3 multiple edits.",
+"rcliu" => "; $1 edits from logged in users",
+"diff" => "diff",
+"hist" => "hist",
+"hide" => "hide",
+"show" => "show",
+"tableform" => "table",
+"listform" => "list",
+"nchanges" => "$1 changes",
+"minoreditletter" => "M",
+"newpageletter" => "N",
+
+# Upload
+#
+"upload" => "Upload file",
+"uploadbtn" => "Upload file",
+"uploadlink" => "Upload images",
+"reupload" => "Re-upload",
+"reuploaddesc" => "Return to the upload form.",
+"uploadnologin" => "Not logged in",
+"uploadnologintext" => "You must be <a href=\"" .
+ wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a>
+to upload files.",
+"uploadfile" => "Upload file",
+"uploaderror" => "Upload error",
+"uploadtext" => "<strong>STOP!</strong> Before you upload here,
+make sure to read and follow Wikipedia's <a href=\"" .
+wfLocalUrlE( "Wikipedia:Image_use_policy" ) . "\">image use policy</a>.
+<p>To view or search previously uploaded images,
+go to the <a href=\"" . wfLocalUrlE( "Special:Imagelist" ) .
+"\">list of uploaded images</a>.
+Uploads and deletions are logged on the <a href=\"" .
+wfLocalUrlE( "Wikipedia:Upload_log" ) . "\">upload log</a>.
+<p>Use the form below to upload new image files for use in
+illustrating your articles.
+On most browsers, you will see a \"Browse...\" button, which will
+bring up your operating system's standard file open dialog.
+Choosing a file will fill the name of that file into the text
+field next to the button.
+You must also check the box affirming that you are not
+violating any copyrights by uploading the file.
+Press the \"Upload\" button to finish the upload.
+This may take some time if you have a slow internet connection.
+<p>The preferred formats are JPEG for photographic images, PNG
+for drawings and other iconic images, and OGG for sounds.
+Please name your files descriptively to avoid confusion.
+To include the image in an article, use a link in the form
+<b>[[image:file.jpg]]</b> or <b>[[image:file.png|alt text]]</b>
+or <b>[[media:file.ogg]]</b> for sounds.
+<p>Please note that as with Wikipedia pages, others may edit or
+delete your uploads if they think it serves the encyclopedia, and
+you may be blocked from uploading if you abuse the system.",
+"uploadlog" => "upload log",
+"uploadlogpage" => "Upload_log",
+"uploadlogpagetext" => "Below is a list of the most recent file uploads.
+All times shown are server time (UTC).
+<ul>
+</ul>
+",
+"filename" => "Filename",
+"filedesc" => "Summary",
+"affirmation" => "I affirm that the copyright holder of this file
+agrees to license it under the terms of the $1.",
+"copyrightpage" => "Wikipedia:Copyrights",
+"copyrightpagename" => "Wikipedia copyright",
+"uploadedfiles" => "Uploaded files",
+"noaffirmation" => "You must affirm that your upload does not violate
+any copyrights.",
+"ignorewarning" => "Ignore warning and save file anyway.",
+"minlength" => "Image names must be at least three letters.",
+"badfilename" => "Image name has been changed to \"$1\".",
+"badfiletype" => "\".$1\" is not a recommended image file format.",
+"largefile" => "It is recommended that images not exceed 100k in size.",
+"successfulupload" => "Successful upload",
+"fileuploaded" => "File \"$1\" uploaded successfully.
+Please follow this link: ($2) to the description page and fill
+in information about the file, such as where it came from, when it was
+created and by whom, and anything else you may know about it.",
+"uploadwarning" => "Upload warning",
+"savefile" => "Save file",
+"uploadedimage" => "uploaded \"$1\"",
+
+# Image list
+#
+"imagelist" => "Image list",
+"imagelisttext" => "Below is a list of $1 images sorted $2.",
+"getimagelist" => "fetching image list",
+"ilshowmatch" => "Show all images with names matching",
+"ilsubmit" => "Search",
+"showlast" => "Show last $1 images sorted $2.",
+"all" => "all",
+"byname" => "by name",
+"bydate" => "by date",
+"bysize" => "by size",
+"imgdelete" => "del",
+"imgdesc" => "desc",
+"imglegend" => "Legend: (desc) = show/edit image description.",
+"imghistory" => "Image history",
+"revertimg" => "rev",
+"deleteimg" => "del",
+"imghistlegend" => "Legend: (cur) = this is the current image, (del) = delete
+this old version, (rev) = revert to this old version.
+<br><i>Click on date to see image uploaded on that date</i>.",
+"imagelinks" => "Image links",
+"linkstoimage" => "The following pages link to this image:",
+"nolinkstoimage" => "There are no pages that link to this image.",
+
+# Statistics
+#
+"statistics" => "Statistics",
+"sitestats" => "Site statistics",
+"userstats" => "User statistics",
+"sitestatstext" => "There are <b>$1</b> total pages in the database.
+This includes \"talk\" pages, pages about Wikipedia, minimal \"stub\"
+pages, redirects, and others that probably don't qualify as articles.
+Excluding those, there are <b>$2</b> pages that are probably legitimate
+articles.<p>
+There have been a total of <b>$3</b> page views, and <b>$4</b> page edits
+since the software was upgraded (July 20, 2002).
+That comes to <b>$5</b> average edits per page, and <b>$6</b> views per edit.",
+"userstatstext" => "There are <b>$1</b> registered users.
+<b>$2</b> of these are administrators (see $3).",
+
+# Maintenance Page
+#
+"maintenance" => "Maintenance page",
+"maintnancepagetext" => "This page includes several handy tools for everyday maintenance. Some of these functions tend to stress the database, so please do not hit reload after every item you fixed ;-)",
+"maintenancebacklink" => "Back to Maintenance Page",
+"disambiguations" => "Disambiguation pages",
+"disambiguationspage" => "Wikipedia:Links_to_disambiguating_pages",
+"disambiguationstext" => "The following articles link to a <i>disambiguation page</i>. They should link to the appropriate topic instead.<br>A page is treated as dismbiguation if it is linked from $1.<br>Links from other namespaces are <i>not</i> listed here.",
+"doubleredirects" => "Double Redirects",
+"doubleredirectstext" => "<b>Attention:</b> This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.<br>\nEach row contains links to the first and second redirect, as well as the first line of the second redirect text, usually giving the \"real\" taget article, which the first redirect should point to.",
+"brokenredirects" => "Broken Redirects",
+"brokenredirectstext" => "The following redirects link to a non-existing article.",
+"selflinks" => "Pages with Self Links",
+"selflinkstext" => "The following pages contain a link to themselves, which they should not.",
+"mispeelings" => "Pages with misspellings",
+"mispeelingstext" => "The following pages contain a common misspelling, which are listed on $1. The correct spelling might be given (like this).",
+"mispeelingspage" => "List of common misspellings",
+"missinglanguagelinks" => "Missing Language Links",
+"missinglanguagelinksbutton" => "Find missing language links for",
+"missinglanguagelinkstext" => "These articles do <i>not</i> link to their counterpart in $1. Redirects and subpages are <i>not</i> shown.",
+
+
+# Miscellaneous special pages
+#
+"orphans" => "Orphaned pages",
+"lonelypages" => "Orphaned pages",
+"unusedimages" => "Unused images",
+"popularpages" => "Popular pages",
+"nviews" => "$1 views",
+"wantedpages" => "Wanted pages",
+"nlinks" => "$1 links",
+"allpages" => "All pages",
+"randompage" => "Random page",
+"shortpages" => "Short pages",
+"longpages" => "Long pages",
+"listusers" => "User list",
+"specialpages" => "Special pages",
+"spheading" => "Special pages",
+"sysopspheading" => "Special pages for sysop use",
+"developerspheading" => "Special pages for developer use",
+"protectpage" => "Protect page",
+"recentchangeslinked" => "Related changes",
+"rclsub" => "(to pages linked from \"$1\")",
+"debug" => "Debug",
+"newpages" => "New pages",
+"ancientpages" => "Oldest articles",
+"intl" => "Interlanguage links",
+"movethispage" => "Move this page",
+"unusedimagestext" => "<p>Please note that other web sites
+such as the international Wikipedias may link to an image with
+a direct URL, and so may still be listed here despite being
+in active use.",
+"booksources" => "Book sources",
+"booksourcetext" => "Below is a list of links to other sites that
+sell new and used books, and may also have further information
+about books you are looking for.
+Wikipedia is not affiliated with any of these businesses, and
+this list should not be construed as an endorsement.",
+"alphaindexline" => "$1 to $2",
+
+# Email this user
+#
+"mailnologin" => "No send address",
+"mailnologintext" => "You must be <a href=\"" .
+ wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a>
+and have a valid e-mail address in your <a href=\"" .
+ wfLocalUrl( "Special:Preferences" ) . "\">preferences</a>
+to send e-mail to other users.",
+"emailuser" => "E-mail this user",
+"emailpage" => "E-mail user",
+"emailpagetext" => "If this user has entered a valid e-mail address in
+his or her user preferences, the form below will send a single message.
+The e-mail address you entered in your user preferences will appear
+as the \"From\" address of the mail, so the recipient will be able
+to reply.",
+"noemailtitle" => "No e-mail address",
+"noemailtext" => "This user has not specified a valid e-mail address,
+or has chosen not to receive e-mail from other users.",
+"emailfrom" => "From",
+"emailto" => "To",
+"emailsubject" => "Subject",
+"emailmessage" => "Message",
+"emailsend" => "Send",
+"emailsent" => "E-mail sent",
+"emailsenttext" => "Your e-mail message has been sent.",
+
+# Watchlist
+#
+"watchlist" => "My watchlist",
+"watchlistsub" => "(for user \"$1\")",
+"nowatchlist" => "You have no items on your watchlist.",
+"watchnologin" => "Not logged in",
+"watchnologintext" => "You must be <a href=\"" .
+ wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a>
+to modify your watchlist.",
+"addedwatch" => "Added to watchlist",
+"addedwatchtext" => "The page \"$1\" has been added to your <a href=\"" .
+ wfLocalUrl( "Special:Watchlist" ) . "\">watchlist</a>.
+Future changes to this page and its associated Talk page will be listed there,
+and the page will appear <b>bolded</b> in the <a href=\"" .
+ wfLocalUrl( "Special:Recentchanges" ) . "\">list of recent changes</a> to
+make it easier to pick out.</p>
+
+<p>If you want to remove the page from your watchlist later, click \"Stop watching\" in the sidebar.",
+"removedwatch" => "Removed from watchlist",
+"removedwatchtext" => "The page \"$1\" has been removed from your watchlist.",
+"watchthispage" => "Watch this page",
+"unwatchthispage" => "Stop watching",
+"notanarticle" => "Not an article",
+
+# Delete/protect/revert
+#
+"deletepage" => "Delete page",
+"confirm" => "Confirm",
+"excontent" => "content was:",
+"exbeforeblank" => "content before blanking was:",
+"exblank" => "page was empty",
+"confirmdelete" => "Confirm delete",
+"deletesub" => "(Deleting \"$1\")",
+"historywarning" => "Warning: The page you are about to delete has a history: ",
+"confirmdeletetext" => "You are about to permanently delete a page
+or image along with all of its history from the database.
+Please confirm that you intend to do this, that you understand the
+consequences, and that you are doing this in accordance with
+[[Wikipedia:Policy]].",
+"confirmcheck" => "Yes, I really want to delete this.",
+"actioncomplete" => "Action complete",
+"deletedtext" => "\"$1\" has been deleted.
+See $2 for a record of recent deletions.",
+"deletedarticle" => "deleted \"$1\"",
+"dellogpage" => "Deletion_log",
+"dellogpagetext" => "Below is a list of the most recent deletions.
+All times shown are server time (UTC).
+<ul>
+</ul>
+",
+"deletionlog" => "deletion log",
+"reverted" => "Reverted to earlier revision",
+"deletecomment" => "Reason for deletion",
+"imagereverted" => "Revert to earlier version was successful.",
+"rollback" => "Roll back edits",
+"rollbacklink" => "rollback",
+"rollbackfailed" => "Rollback failed",
+"cantrollback" => "Cannot revert edit; last contributor is only author of this article.",
+"alreadyrolled" => "Cannot rollback last edit of [[$1]]
+by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already.
+
+Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). ",
+# only shown if there is an edit comment
+"editcomment" => "The edit comment was: \"<i>$1</i>\".",
+"revertpage" => "Reverted to last edit by $1",
+
+# Undelete
+"undelete" => "Restore deleted page",
+"undeletepage" => "View and restore deleted pages",
+"undeletepagetext" => "The following pages have been deleted but are still in the archive and
+can be restored. The archive may be periodically cleaned out.",
+"undeletearticle" => "Restore deleted article",
+"undeleterevisions" => "$1 revisions archived",
+"undeletehistory" => "If you restore the page, all revisions will be restored to the history.
+If a new page with the same name has been created since the deletion, the restored
+revisions will appear in the prior history, and the current revision of the live page
+will not be automatically replaced.",
+"undeleterevision" => "Deleted revision as of $1",
+"undeletebtn" => "Restore!",
+"undeletedarticle" => "restored \"$1\"",
+"undeletedtext" => "The article [[$1]] has been successfully restored.
+See [[Wikipedia:Deletion_log]] for a record of recent deletions and restorations.",
+
+# Contributions
+#
+"contributions" => "User contributions",
+"mycontris" => "My contributions",
+"contribsub" => "For $1",
+"nocontribs" => "No changes were found matching these criteria.",
+"ucnote" => "Below are this user's last <b>$1</b> changes in the last <b>$2</b> days.",
+"uclinks" => "View the last $1 changes; view the last $2 days.",
+"uctop" => " (top)" ,
+
+# What links here
+#
+"whatlinkshere" => "What links here",
+"notargettitle" => "No target",
+"notargettext" => "You have not specified a target page or user
+to perform this function on.",
+"linklistsub" => "(List of links)",
+"linkshere" => "The following pages link to here:",
+"nolinkshere" => "No pages link to here.",
+"isredirect" => "redirect page",
+
+# Block/unblock IP
+#
+"blockip" => "Block IP address",
+"blockiptext" => "Use the form below to block write access
+from a specific IP address.
+This should be done only only to prevent vandalism, and in
+accordance with [[Wikipedia:Policy|Wikipedia policy]].
+Fill in a specific reason below (for example, citing particular
+pages that were vandalized).",
+"ipaddress" => "IP Address",
+"ipbreason" => "Reason",
+"ipbsubmit" => "Block this address",
+"badipaddress" => "The IP address is badly formed.",
+"noblockreason" => "You must supply a reason for the block.",
+"blockipsuccesssub" => "Block succeeded",
+"blockipsuccesstext" => "The IP address \"$1\" has been blocked.
+<br>See [[Special:Ipblocklist|IP block list]] to review blocks.",
+"unblockip" => "Unblock IP address",
+"unblockiptext" => "Use the form below to restore write access
+to a previously blocked IP address.",
+"ipusubmit" => "Unblock this address",
+"ipusuccess" => "IP address \"$1\" unblocked",
+"ipblocklist" => "List of blocked IP addresses",
+"blocklistline" => "$1, $2 blocked $3",
+"blocklink" => "block",
+"unblocklink" => "unblock",
+"contribslink" => "contribs",
+
+# Developer tools
+#
+"lockdb" => "Lock database",
+"unlockdb" => "Unlock database",
+"lockdbtext" => "Locking the database will suspend the ability of all
+users to edit pages, change their preferences, edit their watchlists, and
+other things requiring changes in the database.
+Please confirm that this is what you intend to do, and that you will
+unlock the database when your maintenance is done.",
+"unlockdbtext" => "Unlocking the database will restore the ability of all
+users to edit pages, change their preferences, edit their watchlists, and
+other things requiring changes in the database.
+Please confirm that this is what you intend to do.",
+"lockconfirm" => "Yes, I really want to lock the database.",
+"unlockconfirm" => "Yes, I really want to unlock the database.",
+"lockbtn" => "Lock database",
+"unlockbtn" => "Unlock database",
+"locknoconfirm" => "You did not check the confirmation box.",
+"lockdbsuccesssub" => "Database lock succeeded",
+"unlockdbsuccesssub" => "Database lock removed",
+"lockdbsuccesstext" => "The Wikipedia database has been locked.
+<br>Remember to remove the lock after your maintenance is complete.",
+"unlockdbsuccesstext" => "The Wikipedia database has been unlocked.",
+
+# SQL query
+#
+"asksql" => "SQL query",
+"asksqltext" => "Use the form below to make a direct query of the
+Wikipedia database.
+Use single quotes ('like this') to delimit string literals.
+This can often add considerable load to the server, so please use
+this function sparingly.",
+"sqlislogged" => "Please note that all queries are logged.",
+"sqlquery" => "Enter query",
+"querybtn" => "Submit query",
+"selectonly" => "Queries other than \"SELECT\" are restricted to
+Wikipedia developers.",
+"querysuccessful" => "Query successful",
+
+# Move page
+#
+"movepage" => "Move page",
+"movepagetext" => "Using the form below will rename a page, moving all
+of its history to the new name.
+The old title will become a redirect page to the new title.
+Links to the old page title will not be changed; be sure to
+[[Special:Maintenance|check]] for double or broken redirects.
+You are responsible for making sure that links continue to
+point where they are supposed to go.
+
+Note that the page will '''not''' be moved if there is already
+a page at the new title, unless it is empty or a redirect and has no
+past edit history. This means that you can rename a page back to where
+it was just renamed from if you make a mistake, and you cannot overwrite
+an existing page.
+
+<b>WARNING!</b>
+This can be a drastic and unexpected change for a popular page;
+please be sure you understand the consequences of this before
+proceeding.",
+"movepagetalktext" => "The associated talk page, if any, will be automatically moved along with it '''unless:'''
+*You are moving the page across namespaces,
+*A non-empty talk page already exists under the new name, or
+*You uncheck the box below.
+
+In those cases, you will have to move or merge the page manually if desired.",
+"movearticle" => "Move page",
+"movenologin" => "Not logged in",
+"movenologintext" => "You must be a registered user and <a href=\"" .
+ wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a>
+to move a page.",
+"newtitle" => "To new title",
+"movepagebtn" => "Move page",
+"pagemovedsub" => "Move succeeded",
+"pagemovedtext" => "Page \"[[$1]]\" moved to \"[[$2]]\".",
+"articleexists" => "A page of that name already exists, or the
+name you have chosen is not valid.
+Please choose another name.",
+"talkexists" => "The page itself was moved successfully, but the
+talk page could not be moved because one already exists at the new
+title. Please merge them manually.",
+"movedto" => "moved to",
+"movetalk" => "Move \"talk\" page as well, if applicable.",
+"talkpagemoved" => "The corresponding talk page was also moved.",
+"talkpagenotmoved" => "The corresponding talk page was <strong>not</strong> moved.",
+
+);
+
+include( "LanguageUtf8.php" );
+
+class LanguageBn extends LanguageUtf8 {
+ function getNamespaces() {
+ global $wgNamespaceNamesBn;
+ return $wgNamespaceNamesBn;
+ }
+
+ function getNsText( $index ) {
+ global $wgNamespaceNamesBn;
+ return $wgNamespaceNamesBn[$index];
+ }
+
+ function getNsIndex( $text ) {
+ global $wgNamespaceNamesBn;
+
+ foreach ( $wgNamespaceNamesBn as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ # fallback
+ return Language::getNsIndex( $text );
+ }
+
+ function getMonthName( $key )
+ {
+ global $wgMonthNamesBn;
+ return $wgMonthNamesBn[$key-1];
+ }
+
+ function getMessage( $key )
+ {
+ global $wgAllMessagesBn;
+ if(array_key_exists($key, $wgAllMessagesBn))
+ return $wgAllMessagesBn[$key];
+ else
+ return Language::getMessage($key);
+ }
+
+}
+
+?>
diff --git a/languages/LanguageCy.php b/languages/LanguageCy.php
new file mode 100644
index 000000000000..96762b40ccc7
--- /dev/null
+++ b/languages/LanguageCy.php
@@ -0,0 +1,1144 @@
+<?php
+
+/* Cymraeg - Welsh */
+
+/* private */ $wgNamespaceNamesCy = array(
+ -2 => "Media",
+ -1 => "Arbennig",
+ 0 => "",
+ 1 => "Sgwrs",
+ 2 => "Defnyddiwr",
+ 3 => "Sgwrs_Defnyddiwr",
+ 4 => $wgMetaNamespace,
+ 5 => "Sgwrs_" . $wgMetaNamespace,
+ 6 => "Delwedd",
+ 7 => "Sgwrs_Delwedd",
+ 8 => "MediaWiki",
+ 9 => "Sgwrs_MediaWiki"
+);
+
+/* private */ $wgDefaultUserOptionsCy = array(
+ "quickbar" => 1, "underline" => 1, "hover" => 1,
+ "cols" => 80, "rows" => 25, "searchlimit" => 20,
+ "contextlines" => 5, "contextchars" => 50,
+ "skin" => 0, "math" => 1, "rcdays" => 7, "rclimit" => 50,
+ "highlightbroken" => 1, "stubthreshold" => 0,
+ "previewontop" => 1, "editsection"=>1,"editsectiononrightclick"=>0,
+ "showtoc"=>1,
+ "showtoolbar" =>1,
+ "date" => 0
+);
+
+/* private */ $wgQuickbarSettingsCy = array(
+ "Dim", "Sefydlog chwith", "Sefydlog de", "Arnawf de"
+);
+
+/* private */ $wgSkinNamesCy = array(
+ "Safonol", "Hiraeth", "Glas Cwlen" /* standard, nostalgia, Cologne Blue */
+);
+
+/* private */ $wgMathNamesCy = array(
+ "Rendrwch PNG o hyd",
+ "HTML os yn syml iawn, PNG fel arall",
+ "HTML os bosibl, PNG fel arall",
+ "Gadewch fel TeX (am porwyr testun)",
+ "Cymeradwedig am porwyr modern"
+);
+
+/* private */ $wgDateFormatsCy = array(
+ "Dim dewis",
+ "Ionawr 15, 2001",
+ "15 Ionawr 2001",
+ "2001 Ionawr 15",
+ "2001-01-15"
+);
+
+/* private */ $wgUserTogglesCy = array(
+ "hover" => "Dangos bocs hofren uwchben cysylltiadau wici",
+ "underline" => "Tanllinellu cysylltiadau",
+ "highlightbroken" => "Fformatio cysylltiadau wedi'i dorri <a href=\"\" class=\"new\">fel hyn</a> (dewis arall: fel hyn<a href=\"\" class=\"internal\">?</a>).",
+ "justify" => "Unioni paragraffau",
+ "hideminor" => "Cuddiwch golygiadau bach mewn newidiadau diweddar",
+ "usenewrc" => "Newidiadau diweddar mwyhad (nid am pob porwr)",
+ "numberheadings" => "Rhifwch teiltau yn awtomatig",
+ "showtoolbar"=> "Dangos bar erfynbocs golygu",
+ "editondblclick" => "Golygu tudalennau gyda clic dwbwl (JavaScript)",
+ "editwidth" => "Mae gan bocs golygu lled llon",
+ "editsection" => "Galluogwch golygu adrannau trwy cysylltiadau [golygu]",
+ "editsectiononrightclick" => "Galluogwch golygu adrannau trwy dde-clicio ar teitlau adran (JavaScript)",
+ "showtoc" => "Dangoswch Taflen Cynnwys (am erthyglau gyda mwy na 3 pennawdau",
+ "rememberpassword" => "Cofiwch allweddair dros sesiwnau",
+ "watchdefault" => "Gwiliwch erthyglau newydd ac wedi adnewid",
+ "minordefault" => "Marciwch pob golygiad fel un bach",
+ "previewontop" => "Dangos blaenwelediad cyn y bocs golygu, nid ar ol e",
+ "nocache" => "Anablwch casio tudanlen"
+
+);
+
+/* private */ $wgBookstoreListCy = array(
+ "AddALL" => "http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN",
+ "PriceSCAN" => "http://www.pricescan.com/books/bookDetail.asp?isbn=$1",
+ "Barnes & Noble" => "http://shop.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1",
+ "Amazon.com" => "http://www.amazon.com/exec/obidos/ISBN=$1",
+ "Amazon.co.uk" => "http://www.amazon.co.uk/exec/obidos/ISBN=$1"
+);
+
+/* private */ $wgWeekdayNamesCy = array(
+ "Dydd Sul", "Dydd Llun", "Dydd Mawrth", "Dydd Mercher", "Dydd Iau",
+ "Dydd Gwener", "Dydd Sadwrn"
+);
+
+/* private */ $wgMonthNamesCy = array(
+ "Ionawr", "Chwefror", "Mawrth", "Ebrill", "Mai", "Mehefin",
+ "Gorffenaf", "Awst", "Medi", "Hydref", "Tachwedd",
+ "Rhagfyr"
+);
+
+/* private */ $wgMonthAbbreviationsCy = array(
+ "Ion", "Chwe", "Maw", "Ebr", "Mai", "Meh", "Gor", "Aws",
+ "Med", "Hyd", "Tach", "Rhag"
+);
+
+/* private */ $wgMagicWordsCy = array(
+# ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, "#ail-cyfeirio" ),
+ MAG_NOTOC => array( 0, "__DIMTAFLENCYNNWYS__" ),
+ MAG_NOEDITSECTION => array( 0, "__DIMADRANGOLYGU__" ),
+ MAG_START => array( 0, "__DECHRAU__" ),
+ MAG_CURRENTMONTH => array( 1, "{{MISCYFOES}}" ),
+ MAG_CURRENTMONTHNAME => array( 1, "{{ENWMISCYFOES}}" ),
+ MAG_CURRENTDAY => array( 1, "{{DYDDIADCYFOES}}" ),
+ MAG_CURRENTDAYNAME => array( 1, "{{ENWDYDDCYFOES}}" ),
+ MAG_CURRENTYEAR => array( 1, "{{FLWYDDYNCYFOES}}" ),
+ MAG_CURRENTTIME => array( 1, "{{AMSERCYFOES}}" ),
+ MAG_NUMBEROFARTICLES => array( 1, "{{NIFEROERTHYGLAU}}" ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, "{{GENENWMISCYFOES}}" ),
+ MAG_MSG => array( 1, "{{MSG:$1}}" ),
+ MAG_SUBST => array( 1, "{{SUBST:$1}}" ),
+ MAG_MSGNW => array( 0, "{{MSGNW:$1}}" ),
+ MAG_END => array( 0, "DIWEDD_" ),
+ MAG_IMG_THUMBNAIL => array( 1, "ewin bawd", "bawd" ),
+ MAG_IMG_RIGHT => array( 1, "de" ),
+ MAG_IMG_LEFT => array( 1, "chwith" ),
+ MAG_IMG_NONE => array( 1, "dim" ),
+ MAG_IMG_WIDTH => array( 1, "$1px" ),
+ MAG_IMG_CENTER => array( 1, "canol", "canol" )
+);
+
+# All special pages have to be listed here: a description of ""
+# will make them not show up on the "Special Pages" page, which
+# is the right thing for some of them (such as the "targeted" ones).
+#
+/* private */ $wgValidSpecialPagesCy = array(
+ "Userlogin" => "",
+ "Userlogout" => "",
+ "Preferences" => "Setiwch fy ffafraethau defnyddwr",
+ "Watchlist" => "Rhestr gwylio fi",
+ "Recentchanges" => "Tudalennau wedi adnewid yn diweddar",
+ "Upload" => "Llwytho ffeiliau lluniau",
+ "Imagelist" => "Rhestr lluniau",
+ "Listusers" => "Defnyddwyr cofrestru",
+ "Statistics" => "Ystadegau'r Safle",
+ "Randompage" => "Erthygl hapgyrch",
+ "Lonelypages" => "Erthyglau heb cysylltiadau",
+ "Unusedimages" => "Lluniau heb cysylltiadau",
+ "Popularpages" => "Erthyglau poblogol",
+ "Wantedpages" => "Eisiau erthyglau am...",
+ "Shortpages" => "Erthyglau byr",
+ "Longpages" => "Erthyglau hir",
+ "Newpages" => "Erthyglau newydd",
+ "Ancientpages" => "Erthyglau hynach",
+ "Deadendpages" => "Erthyglau heb cysylltiadau",
+ "Intl" => "Cysylltiadau rhwng-ieithol",
+ "Allpages" => "Pob tudalen gan teitl",
+ "Ipblocklist" => "Cyfeiriadau IP wedi'i blocio",
+ "Maintenance" => "Tudalen arofal",
+ "Specialpages" => "",
+ "Contributions" => "",
+ "Emailuser" => "",
+ "Whatlinkshere" => "",
+ "Recentchangeslinked" => "",
+ "Movepage" => "",
+ "Booksources" => "Ffynnonellau llyfrau allanol",
+ "Categories" => "Categorïau tudalennau",
+ "Export" => "",
+ "Version" => "Dangos fersiwn Mediawiki"
+);
+
+/* private */ $wgSysopSpecialPagesCy = array(
+ "Blockip" => "Blociwch cyfeiriad IP",
+ "Asksql" => "Gofynnwch y databas",
+ "Undelete" => "Gwyliwch ac atgyweirio tundalennau wedi'u dileu",
+ "Makesysop" => "Gwnewch sysop allan o defnyddiwr"
+);
+
+/* private */ $wgDeveloperSpecialPagesCy = array(
+ "Lockdb" => "Databas darllen yn unig",
+ "Unlockdb" => "Gwnewch y databas yn ysgrifennol"
+);
+
+/* private */ $wgAllMessagesCy = array(
+
+# Bits of text used by many pages:
+#
+"categories" => "Categorïau tudalen",
+"category" => "categori",
+"category_header" => "Erthyglau mewn categori \"$1\"",
+"subcategories" => "Is-categorïau",
+"linktrail" => "/^((?:à|á|â|è|é|ê|ì|í|î|ï|ò|ó|ô|û|[a-z])+)(.*)\$/sD",
+"mainpage" => "Prif tudalen",
+"mainpagetext" => "Meddalwedd Wicipedia wedi sefydlu'n llwyddiannus",
+"about" => "Amdano",
+"aboutwikipedia" => "Amdano Wicipedia",
+"aboutpage" => "$wgMetaNamespace:Amdano",
+"help" => "Help",
+"helppage" => "$wgMetaNamespace:Help",
+"wikititlesuffix" => "$wgSitename",
+"bugreports" => "Adroddiadau diffygion",
+"bugreportspage" => "$wgMetaNamespace:Adroddiadau_diffygion",
+"sitesupport" => "Rhoddion",
+"sitesupportpage" => "", # If not set, won't appear. Can be wiki page or URL
+"faq" => "COF",
+"faqpage" => "$wgMetaNamespace:COF",
+"edithelp" => "Help gyda golygu",
+"edithelppage" => "$wgMetaNamespace:Sut_ydy_chi'n_golygu_tudalen",
+"cancel" => "Dirymu",
+"qbfind" => "Cael",
+"qbbrowse" => "Pori",
+"qbedit" => "Golygu",
+"qbpageoptions" => "Dewysiadau tudalen",
+"qbpageinfo" => "Gwybodaeth tudalen",
+"qbmyoptions" => "Fy dewysiadau",
+"qbspecialpages" => "Tudalennau arbennig",
+"moredotdotdot" => "Mwy...",
+"mypage" => "Fy nhudalen",
+"mytalk" => "Sgwrs fi",
+"disclaimers" => "Gwadiadau",
+"disclaimerpage" => "$wgMetaNamespace:Gwadiad_cyffredin",
+"currentevents" => "Digwyddiadau presennol",
+"errorpagetitle" => "Gwall",
+"returnto" => "Ewch yn ôl i $1.",
+"fromwikipedia" => "Oddiwrth Wicipedia, y gwyddoniadur rhad.",
+"whatlinkshere" => "Tudalennau sydd yn cysyllti fan hyn",
+"help" => "Help",
+"search" => "Chwilio",
+"go" => "Mynd",
+"history" => "Hanes y tudalen",
+"printableversion" => "Fersiwn argraffiol",
+"editthispage" => "Golygwch y tudalen hon",
+"deletethispage" => "Dileuwch y tudalen hon",
+"protectthispage" => "Amddiffynwch y tudalen hon",
+"unprotectthispage" => "Di-amddiffynwch y tudalen hon",
+"newpage" => "Tudalen newydd",
+"talkpage" => "Sgwrsio amdano'r tudalen hon",
+"postcomment" => "Postiwch esboniad",
+"articlepage" => "Gwyliwch erthygl",
+"subjectpage" => "Gwyliwch pwnc", # For compatibility
+"userpage" => "Gwyliwch tudalen defnyddiwr",
+"wikipediapage" => "Gwyliwch tudalen meta",
+"imagepage" => "Gwyliwch tudalen llun",
+"viewtalkpage" => "Gwyliwch sgwrs",
+"otherlanguages" => "Ieithoed eraill",
+"redirectedfrom" => "(Ail-cyfeiriad oddiwrth $1)",
+"lastmodified" => "Pryd cafodd ei newid diwethaf $1.",
+"viewcount" => "Mae'r tudalen hyn wedi cael ei gweld $1 o weithiau.",
+"gnunote" => "Mae pob testun ar gael o dan term<a class=internal href='/wiki/GNU_FDL'>Goddefiad dogfennau rhad GNU</a>.",
+"printsubtitle" => "(Oddiwrth http://www.wikipedia.org/)",
+"protectedpage" => "Tudalen amddiffyniol",
+"administrators" => "$wgMetaNamespace:Gweinyddwyr",
+"sysoptitle" => "Mynediad Sysop yn unig",
+"sysoptext" => "Mae'r peth rydych wedi gofyn amdano dim ond yn bosibl i ddefnyddwyr gyda statws \"sysop\".
+Gwelwch $1.",
+"developertitle" => "Mynediad Datblygwr yn unig",
+"developertext" => "Mae'r peth rydych wedi gofyn amdano dim ond yn bosibl i ddefnyddwyr gyda statws \"datblygwr\".
+Gwelwch $1.",
+"bureaucrattitle" => "Mynediad Biwrocrat yn unig",
+"bureaucrattext" => "Mae'r peth rydych wedi gofyn amdano dim ond yn bosibl i ddefnyddwyr gyda statws \"biwrocrat\"",
+"nbytes" => "$1 bytes",
+"go" => "Mynd",
+"ok" => "OK",
+"sitetitle" => "Wicipedia",
+"sitesubtitle" => "Y Gwyddoniadur Rhydd",
+"retrievedfrom" => "Wedi dod o \"$1\"",
+"newmessages" => "Mae gen ti $1.",
+"newmessageslink" => "Neges(eueon) newydd",
+"editsection" => "golygu",
+"toc" => "Taflen Cynnwys",
+"showtoc" => "dangos",
+"hidetoc" => "cuddio",
+"thisisdeleted" => "Edrychwch at, neu atgyweirio $1?",
+"restorelink" => "$1 golygiadau wedi eu dileuo",
+
+# Main script and global functions
+#
+"nosuchaction" => "Does dim gweithred",
+"nosuchactiontext" => "Dydy'r meddalwedd Wicipedia ddim yn deallt y gweithrediad mae'r URL yn gofyn iddo fe gwneud",
+"nosuchspecialpage" => "Does dim tudalen arbennig",
+"nospecialpagetext" => "Yr ydych wedi gofyn am tudalen arbennig dydy'r meddalwedd Wicipedia ddim yn adnabod.",
+
+# General errors
+#
+"error" => "Gwall",
+"databaseerror" => "Databas ar gam",
+"dberrortext" => "Mae gwall cystrawen wedi digwydd ar y databas.
+Wyrach mae hwn wedi digwydd am achos gofyniad chwilio anghyfreithlon (gwelwch $5), neu mae 'ne byg yn y meddalwedd.
+Y gofyniad olaf triodd y databas oedd:
+<blockquote><tt>$1</tt></blockquote>
+oddiwrth ffwythiant \"<tt>$2</tt>\".
+Dwedodd MySQL mae 'ne côd gwall \"<tt>$3: $4</tt>\".",
+"dberrortextcl" => "Mae gwall cystrawen wedi digwydd ar y databas.
+Y gofyniad olaf triodd y databas oedd:
+\"$1\"
+oddiwrth ffwythiant \"$2\".
+Dwedodd MySQL mae 'ne côd gwall \"$3: $4\".\n",
+"noconnect" => "Ddim yn gallu cysylltu i'r databas ar $1",
+"nodb" => "Ddim yn gallu dewis databas $1",
+"cachederror" => "Dyma copi o'r stôr o'r tudalen rydych wedi gofyn, ac efallai dydi hi ddim yn cyfoes.",
+"readonly" => "Databas ar gloi",
+"enterlockreason" => "Rhowch reswm am paham mae'r databas yn cael eu gloi, yn cynnwys amcangyfrif pryd fydd y databas yn cael eu di-gloi",
+"readonlytext" => "Mae'r databas Wicipedia wedi eu cloi yn erbyn erthyglau newydd ac adnewidiadau eraill, yn tebygol am gofalaeth trefn y databas -- fydd y databas yn ôl cyn bo hir.
+Mae'r gweinyddwr wedi dweud yr achos cloi'r databas oedd:
+<p>$1",
+"missingarticle" => "Dydi'r databas ddim wedi dod o hyd i testun tudalen ddyler hi ffindio, sef \"$1\".
+Dydi hwn ddim yn gwall y databas, ond debyg byg yn y meddalwedd.
+Adroddwch hwn i gweinyddwr os gwelwch yn dda, a cofiwch sylwi'r URL.",
+"internalerror" => "Gwall mewnol",
+"filecopyerror" => "Ddim yn gallu copïo ffeil \"$1\" i \"$2\".",
+"filerenameerror" => "Ddim yn gallu ail-enw ffeil \"$1\" i \"$2\".",
+"filedeleteerror" => "Ddim yn gallu dileu ffeil \"$1\".",
+"filenotfound" => "Ddim yn gallu ffeindio ffeil \"$1\".",
+"unexpected" => "Gwerth annisgwyl: \"$1\"=\"$2\".",
+"formerror" => "Gwall: ddim yn medru ymostwng y ffurflen",
+"badarticleerror" => "Mae'n amhosib perfformio'r gweithred hwn ar tudalen hon.",
+"cannotdelete" => "Mae'n amhosib dileu y tudalen neu llun hwn. (Wyrach mae rhywun arall eisoes wedi eu dileu.)",
+"badtitle" => "Teitl drwg",
+"badtitletext" => "Mae'r teitl rydych wedi gofyn yn anilys, gwag, neu cysylltu'n anghywir rhwng ieithoedd neu wicïau.",
+"perfdisabled" => "Sori! Mae'r nodwedd hon wedi cael eu anablo am achosion perfformiadau yn yr amserau brysyrach; dewch yn ôl rhwng 02:00 a 14:00 GMT a triwch eto.",
+"perfdisabledsub" => "Dyma copi rydym wedi cadw ers $1:",
+"wrong_wfQuery_params" => "Incorrect parameters to wfQuery()<br>
+Function: $1<br>
+Query: $2
+",
+"viewsource" => "Gwyliwch y ffynhonnell",
+"protectedtext" => "Mae tudalen hon wedi cael eu gloi i gwahardd golygu'r tudalen. Mae nifer o rheswmau paham mae hwn wedi digwydd, gwelwch y tudalen
+[[$wgMetaNamespace:Protected page]].
+
+Ellwch gweld a copïo'r ffynhonnell y tudalen hon:",
+
+# Login and logout pages
+#
+"logouttitle" => "Allgofnodi'r defnyddwr",
+"logouttext" => "Yr ydych wedi allgofnodi.
+Gallwch chi defnyddio'r Wicipedia yn anhysbys, neu gallwch chi mewngofnodi eto fel yr un defnyddwr neu un arall.\n",
+
+"welcomecreation" => "<h2>Croeso, $1!</h2><p>Mae eich accownt wedi gael eu creu. Peidiwch ac anghofio i personaleiddio eich ffafraethau defnyddwr Wicipedia.",
+"loginpagetitle" => "Mewngofnodi'r defnyddwr",
+"yourname" => "Eich enw defnyddwr",
+"yourpassword" => "Eich allweddair",
+"yourpasswordagain" => "Ail-teipiwch allweddair",
+"newusersonly" => " (defnyddwyr newydd yn unig)",
+"remembermypassword" => "Cofiwch fy allweddair dros mwy nag un sesiwn.",
+"loginproblem" => "<b>Mae problem efo'ch mewngofnodi.</b><br>Triwch eto!",
+"alreadyloggedin" => "<font color=red><b>Defnyddwr $1, yr ydych eisioes wedi mewngofnodi!</b></font><br>\n",
+
+"areyounew" => "Os ydych chi newydd wedi dod i Wicipedia ac yn eisiau cael accownt defnyddwr, teipiwch enw defnyddwr, felly teipiwch ac ail-teipiwch allweddair. Dydy eich cyfeiriad e-bost ddim yn gorfodol; os collwch eich allweddair mae'n bosibl i chi gofyn i gael hi eu anfon at y cyfeiriad e-bost hon.<br>\n",
+
+"login" => "Mewngofnodi",
+"loginprompt" => "Rhaid i chi galluogi cwcis i mewngofnodi i $wgSitename.",
+"userlogin" => "Mewngofnodi",
+"logout" => "Allgofnodi",
+"userlogout" => "Allgofnodi",
+"notloggedin" => "Nid wedi mewngofnodi",
+"createaccount" => "Creuwch accownt newydd",
+"createaccountmail" => "gan e-post",
+"badretype" => "Dydy'r allweddgeiriau ddim yn cymharu.",
+"userexists" => "Mae rhywun arall wedi dewis yr enw defnyddwr. Dewiswch un arall os gwelwch yn dda.",
+"youremail" => "Eich cyfeiriad e-bost",
+"yournick" => "Eich llysenw (am llofnod)",
+"emailforlost" => "Os anghofiwch eich allweddair, cewch cael un newydd postwyd i'ch cyfeiriad e-bost.",
+"loginerror" => "Problem mewngofnodi",
+"nocookiesnew" => "Mae'r accownt defnyddiwr wedi gael eu creu, ond dydwch chi ddim wedi mewngofnodi. Mae $wgSitename yn defnyddio cwcis i mewngofnodi defnyddwyr. Rydych chi wedi anablo cwcis. Galluogwch nhw os welwch yn dda, felly mewngofnodwch gyda'ch enw defnyddiwr a cyfrinair newydd.",
+"nocookieslogin" => "Mae $wgSitename yn defnyddio cwcis i mewngofnodi defnyddwyr. Rydych chi wedi anablo cwcis. Galluogwch nhw os welwch yn dda, a triwch eto.",
+"noname" => "Dydi chi ddim wedi enwi enw defnyddwr dilys.",
+"loginsuccesstitle" => "Mewngofnod llwyddiannus",
+"loginsuccess" => "Yr ydych wedi mewngofnodi i Wicipedia fel \"$1\".",
+"nosuchuser" => "Does dim defnyddwr gyda'r enw \"$1\".
+Sicrhau rydych chi wedi sillafu'n iawn, neu creuwch accownt newydd gyda'r ffurflen isod.",
+"wrongpassword" => "Mae'r allweddair rydych wedi teipio ddim yn cywir. Triwch eto, os gwelwch yn dda.",
+"mailmypassword" => "E-postiwch allweddair newydd i fi",
+"passwordremindertitle" => "Nodyn atgoffa allweddair oddiwrth Wicipedia",
+"passwordremindertext" => "Mae rhywun (chi, yn tebygol, oddiwrth cyfeiriad IP $1) wedi gofyn iddi ni danfon allweddair mewngofnodi newydd Wicipedia.
+Allweddair defnyddwr \"$2\" rwan yw \"$3\". Ddylwch chi mewngofnodi rwan a newid yr allweddair.",
+"noemail" => "Does dim cyfeiriad e-bost wedi cofrestru dros defnyddwr \"$1\".",
+"passwordsent" => "Mae allweddair newydd wedi gael eu ddanfon at y cyfeiriad e-bost cofrestredig am \"$1\". Mewngofnodwch eto, os gwelwch yn dda, ar ol i chi dderbyn yr allweddair.",
+"loginend" => "",
+
+# Edit page toolbar
+"bold_sample" => "Testun cryf",
+"bold_tip" => "Testun cryf",
+"italic_sample" => "Testun italig",
+"italic_tip" => "Testun italig",
+"link_sample" => "Teitl cyswllt",
+"link_tip" => "Cyswllt mewnol",
+"extlink_sample" => "http://www.example.com cyswllt teitl",
+"extlink_tip" => "Cyswllt allanol (cofiwch y rhagddodiad http:// )",
+"headline_sample" => "Testun pennawd",
+"headline_tip" => "Pennawd safon 2",
+"math_sample" => "Mewnosodwch fformwla yma",
+"math_tip" => "Fformwla mathemategol (LaTeX)",
+"nowiki_sample" => "Mewnosodwch testun di-fformatedig yma",
+"nowiki_tip" => "Anwybyddwch fformatiaeth wiki",
+"image_sample" => "Example.jpg",
+"image_tip" => "Delwedd mewnosod",
+"media_sample" => "Example.mp3",
+"media_tip" => "Cyswllt ffeil media",
+"sig_tip" => "Eich llofnod gyda stamp amser",
+"hr_tip" => "Llinell llorweddol (defnyddiwch yn cynnil)",
+"infobox" => "Cliciwch botwm i cael testun enghraifft",
+
+# Edit pages
+#
+"summary" => "Crynodeb",
+"subject" => "Testun/pennawd",
+"minoredit" => "Mae hwn yn golygiad bach",
+"watchthis" => "Gwyliwch erthygl hon",
+"savearticle" => "Cadw tudalen",
+"preview" => "Blaenwelediad",
+"showpreview" => "Gweler blaenwelediad",
+"blockedtitle" => "Mae'r defnyddwr wedi gael eu blocio",
+"blockedtext" => "Mae eich enw defnyddwr neu cyfeiriad IP wedi gael eu blocio gan $1. Y rheswm yw:<br>''$2''<p>Ellwch cysylltu $1 neu un o'r
+[[Wicipedia:administrators|swyddogion]] eraill i trafodi'r bloc.",
+"whitelistedittitle" => "Rhaid mewngofnodi i golygu",
+"whitelistedittext" => "Rhaid i chi [[Special:Userlogin|mewngofnodi]] i olygu erthyglau.",
+"whitelistreadtitle" => "Rhaid mewngofnodi i ddarllen",
+"whitelistreadtext" => "Rhaid i chi [[Special:Userlogin|mewngofnodi]] i ddarllen erthyglau.",
+"whitelistacctitle" => "Ni chaniateir creu accownt",
+"whitelistacctext" => "I gael caniatâd i creu accownt yn y wiki hon, rhaid i chi [[Special:Userlogin|mewngofnodi]] a chael y caniatâd priodol.",
+"accmailtitle" => "Wedi danfon cyfrinair.",
+"accmailtext" => "Mae'r cyfrinair am '$1' wedi danfon i $2.",
+"newarticle" => "(Newydd)",
+"newarticletext" =>
+"Yr ydych wedi dilyn cysylltiad i tudalen sydd ddim wedi gael eu creu eto.
+I creuo'r tudalen, dechreuwch teipio yn y bocs isaf
+(gwelwch y [[Wicipedia:Help|tudalen help]] am mwy o hysbys).
+Os ydych yma trwy camgymeriad, cliciwch eich botwm '''nol'''.",
+"anontalkpagetext" => "---- ''Dyma tudalen sgwrsio am defnyddwr sydd ddim eto wedi creu accownt, neu ddim yn eu defnyddio. Rhaid i ni defnyddio'r [[cyfeiriad IP]] rhifiadol i adnabod fe neu hi. Mae'n posib i llawer o bobl siario'r un cyfeiriad IP. Os ydych chi'n defnyddwr anhysbys ac yn teimlo mae esboniadau amherthynol wedi cael eu gwneud arnach chi, creuwch accownt neu mewngofnodwch i osgoi anhrefn gyda defnyddwyr anhysbys yn y dyfodol.'' ",
+"noarticletext" => "(Does dim testun yn y tudalen hon eto)",
+"updated" => "(Diweddariad)",
+"note" => "<strong>Sylwch:</strong> ",
+"previewnote" => "Cofiwch blaenwelediad ydi hwn, a dydi e ddim wedi cael eu chadw!",
+"previewconflict" => "Mae blaenwelediad hwn yn dangos y testun yn yr ardal golygu uchaf, fel y fydd hi'n edrych os dewyswch chi arbed.",
+"editing" => "Yn golygu $1",
+"sectionedit" => " (rhan)",
+"commentedit" => " (esboniad)",
+"editconflict" => "Croestynnu golygyddol: $1",
+"explainconflict" => "Mae rhywun arall wedi newid y tudalen hon ers i chi dechrau golygu hi. Mae'r ardal testun uchaf yn cynnwys testun y tudalen fel y mae hi rwan. Mae eich newidiadau yn ddangos yn yr ardal testun isaf.
+Fydd rhaid i chi ymsoddi eich newidiadau i mewn i'r testun sydd mewn bod.
+<b>Dim ond</b> y testun yn yr ardal testun uchaf fydd yn cael eu cadw pan rydwch yn gwasgu \"Cadw tudalen\".\n<p>",
+"yourtext" => "Eich testun",
+"storedversion" => "Fersiwn wedi cadw",
+"editingold" => "<strong>RHYBUDD: Rydych yn golygu hen fersiwn y tudalen hon. Os cadwch hi, fydd unrhyw newidiadau hwyrach yn gael eu colli!.</strong>\n",
+"yourdiff" => "Gwahaniaethau",
+"copyrightwarning" => "Sylwch mae pob cyfraniad i Wicipedia yn gael eu rhyddhau o dan termau'r Trwydded Dogfen Rhydd GNU (gwelwch $1 am manylion).
+Os nid ydych chi'n fodlon cael eich ysgrifeniad eu golygu heb trugaredd, a creu copïau dros y wê, peidiwch cyfranu'r ysgrifeniad yma.<br>
+Hefyd, rydych chi'n addo chi yw'r awdur y cyfraniad, neu rydych chi wedi copïo fe oddiwrth y parth cyhoeddus neu rhyw modd rhydd tebyg.
+<strong>PEIDIWCH CYFRANNU GWAITH O DAN HAWLFRAINT HEB CANIATÂD!</strong>",
+"longpagewarning" => "RHYBUDD: Mae hyd y tudalen hon yn $1 kilobyte; mae rhai porwyr yn cael problemau yn golygu tudalennau hirach na 32kb.<br>
+Ystyriwch torri'r tudalen i mewn i ddarnau llai, os gwelwch yn dda.",
+"readonlywarning" => "RHYBUDD: Mae'r databas wedi cloi i gael eu trwsio,
+felly fyddwch chi ddim yn medru cadw eich olygiadau rwan. Efalle fyddwch chi'n eisio tori-a-pastio'r
+testun i mewn i ffeil testun, a cadw hi tan hwyrach.",
+"protectedpagewarning" => "RHYBUDD: Mae tudalen hon wedi eu gloi -- dim ond defnyddwyr
+gyda braintiau 'sysop' sy'n medru eu olygu. Byddwch yn siwr rydych yn dilyn y
+<a href='/wiki/$wgMetaNamespace:Protected_page_guidelines'>gwifrau tywys tudalen amddiffyn</a>.",
+
+# History pages
+#
+"revhistory" => "Hanes cywiriadau",
+"nohistory" => "Does dim hanes cywiriadau am tudalen hon.",
+"revnotfound" => "Cywiriad nid wedi darganfod",
+"revnotfoundtext" => "Ni ellir darganfod yr hen cywiriad y tudalen rydych wedi gofyn amdano. Gwiriwch yr URL rydych wedi defnyddio i darganfod y tudalen hon.\n",
+"loadhist" => "Yn llwytho hanes y tudalen",
+"currentrev" => "Diwygiad cyfoes",
+"revisionasof" => "Diwygiad $1",
+"cur" => "cyf",
+"next" => "nesaf",
+"last" => "olaf",
+"orig" => "gwreidd",
+"histlegend" => "Eglurhad: (cyf) = gwahaniaeth gyda fersiwn cyfoes,
+(olaf) = gwahaniaeth gyda fersiwn gynt, M = golygiad mân",
+
+# Diffs
+#
+"difference" => "(Gwahaniaethau rhwng fersiwnau)",
+"loadingrev" => "yn llwytho diwygiad am wahaniaeth",
+"lineno" => "Llinell $1:",
+"editcurrent" => "Golygwch fersiwn cyfoes tudalen hon",
+
+# Search results
+#
+"searchresults" => "Canlyniadau chwiliad",
+"searchhelppage" => "Wicipedia: Yn chwilio",
+"searchingwikipedia" => "Yn chwilio Wicipedia",
+"searchresulttext" => "Am mwy o hysbys amdano chwilio Wicipedia, gwelwch $1.",
+"searchquery" => "Am gofyniad \"$1\"",
+"badquery" => "Gofyniad chwilio drwg",
+"badquerytext" => "Roedd yn amhosibl i prosesu'ch gofyniad.
+Mae'n tebygol roedd hyn am achos yr ydych wedi trio chwilio a gair gyda llai na tri llythyrau. Hefyd, wyrach rydych wedi cam-teipio'r gofyniad. Triwch gofyniad arall.",
+"matchtotals" => "Mae'r gofyniad \"$1\" wedi cyfatebu $2 teitlau erthyglau, a'r testun oddiwrth $3 erthyglau.",
+"nogomatch" => "Does dim erthygl gyda'r union teitl hon, yn trio chwiliad testun cyfan. ",
+"titlematches" => "Teitlau erthygl yn cyfateb",
+"notitlematches" => "Does dim teitlau erthygl yn cyfateb",
+"textmatches" => "Testun erthygl yn cyfateb",
+"notextmatches" => "Does dim testun erthyglau yn cyfateb",
+"prevn" => "$1 gynt",
+"nextn" => "$1 nesaf",
+"viewprevnext" => "Gweler ($1) ($2) ($3).",
+"showingresults" => "Yn dangos isod y <b>$1</b> canlyniadau yn dechrau gyda #<b>$2</b>.",
+"nonefound" => "<strong>Sylwch</strong>: mae chwiliadau yn aml yn anlwyddiannus am achos mae'r chwiliad yn edrych a geiriau cyffredin fel \"y\" ac \"ac\",
+sydd ddim yn cael eu mynegai.",
+"powersearch" => "Chwilio",
+"powersearchtext" => "
+Edrychwch mewn lle-enw:<br>
+$1<br>
+$2 Rhestrwch ail-cyfeiriadau &nbsp; Chwiliwch am $3 $9",
+"searchdisabled" => "<p>Mae'r peiriant chwilio'r holl databas wedi cael eu troi i ffwrdd i gwneud pethau'n hawddach ar y gwasanaethwr. Gobeithiwn fydd yn bosibl i troi'r peiriant ymlaen cyn bo hir, ond yn y cyfamser mae'n posibl gofyn Google:</p>",
+"googlesearch" => "
+<!--SiteSearch Google -->
+<FORM method=GET action=\"http://www.google.co.uk/search\">
+<TABLE bgcolor=\"#FFFFFF\"><tr><td>
+<A HREF=\"http://www.google.co.uk/\">
+<IMG SRC=\"http://www.google.com/logos/Logo_40wht.gif\"
+border=\"0\" ALT=\"Google\"></A>
+</td>
+<td>
+<INPUT TYPE=text name=q size=31 maxlength=255 value=\"$1\">
+<INPUT type=submit name=btnG VALUE=\"Google Search\">
+<font size=-1>
+<font size=-1>
+<input type=hidden name=domains value=\"{$wgServer}\"><br><input type=radio
+name=sitesearch value=\"\"> WWW <input type=radio name=sitesearch
+value=\"{$wgServer}\" checked> {$wgServer} <br>
+<input type='hidden' name='ie' value='$2'>
+<input type='hidden' name='oe' value='$2'>
+</font>
+</td></tr></TABLE>
+</FORM>
+<!-- SiteSearch Google -->
+",
+"blanknamespace" => "(Prif)",
+
+
+# Preferences page
+#
+"preferences" => "ffafraethau",
+"prefsnologin" => "Nid wedi mewngofnodi",
+"prefsnologintext" => "Rhaid i chi <a href=\"" .
+ wfLocalUrl( "Special:Userlogin" ) . "\">mewngofnodi</a>
+i setio ffafraethau defnyddwr.",
+"prefslogintext" => "Yr ydych wedi mewngofnodi fel \"$1\".
+$2 yw eich rhif hunaniaith mewnol.",
+"prefsreset" => "Mae ffafraethau wedi gael eu ail-setio oddiwrth y storfa.",
+"qbsettings" => "Gosodiadau bar-gyflym",
+"changepassword" => "Newydwch allweddair",
+"skin" => "Croen",
+"math" => "Rendro mathemateg",
+"math_failure" => "wedi methu dosbarthu",
+"math_unknown_error" => "gwall anhysbys",
+"math_unknown_function" => "ffwythiant anhysbys ",
+"math_lexing_error" => "gwall lecsio",
+"math_syntax_error" => "gwall cystrawen",
+"saveprefs" => "Cadw ffafraethau",
+"resetprefs" => "Ail-setio ffafraethau",
+"oldpassword" => "Hen allweddair",
+"newpassword" => "Allweddair newydd",
+"retypenew" => "Ail-teipiwch yr allweddair newydd",
+"textboxsize" => "Maint y bocs testun",
+"rows" => "Rhesi",
+"columns" => "Colofnau",
+"searchresultshead" => "Sefydliadau canlyniadau chwilio",
+"resultsperpage" => "Hitiau i ddangos ar pob tudalen",
+"contextlines" => "Llinellau i ddangos ar pob hit",
+"contextchars" => "Characters of context per line",
+"stubthreshold" => "Threshold for stub display",
+"recentchangescount" => "Nifer o teitlau yn newidiadau diweddar",
+"savedprefs" => "Mae eich ffafraethau wedi cael eu chadw.",
+"timezonetext" => "Teipiwch y nifer o oriau mae eich amsel lleol yn wahân o'r amser y gwasanaethwr (UTC/GMT).",
+"localtime" => "Amser lleol",
+"timezoneoffset" => "Atred",
+"servertime" => "Amser y gwasanaethwr yw",
+"guesstimezone" => "Llenwch oddiwrth y porwr",
+"emailflag" => "Anablo e-bost oddiwrth defnyddwyr eraill",
+"defaultns" => "Gwyliwch yn llefydd-enw rhain:",
+
+# Recent changes
+#
+"changes" => "newidiadau",
+"recentchanges" => "Newidiadau diweddar",
+"recentchangestext" => "Traciwch y newidiadau mor diweddar i'r Wicipedia ac i'r tudalen hon.",
+"rcloaderr" => "Yn llwytho newidiadau diweddar",
+"rcnote" => "Isod yw'r newidiadau <strong>$1</strong> olaf yn y <strong>$2</strong> dyddiau olaf.",
+"rcnotefrom" => "Isod yw'r newidiadau ers <b>$2</b> (dangosir i fynu i <b>$1</b>).",
+"rclistfrom" => "Dangos newidiadau newydd yn dechrau oddiwrth $1",
+# "rclinks" => "Dangos y $1 newidiadau olaf yn y $2 oriau olaf / $3 dyddiau olaf",
+"showhideminor" => "$1 golygiadau bach | $2 botiau | $3 defnyddwyr wedi mewngofnodi ",
+"rclinks" => "Dangos y $1 newidiadau olaf yn y $2 dyddiau olaf.",
+"rchide" => "yn ffurf $4; $1 golygiadon bach; $2 llefydd enw eilaidd; $3 golygiadon lluosrif.",
+"rcliu" => "; $1 golygiadau gan defnyddwyr wedi mewngofnodi",
+"diff" => "gwahan",
+"hist" => "hanes",
+"hide" => "cuddio",
+"show" => "dangos",
+"tableform" => "taflen",
+"listform" => "rhestr",
+"nchanges" => "$1 newidiadau",
+"minoreditletter" => "B",
+"newpageletter" => "N",
+
+# Upload
+#
+"upload" => "Llwytho ffeil i fynu",
+"uploadbtn" => "Llwytho ffeil i fynu",
+"uploadlink" => "Llwytho lluniau i fynu",
+"reupload" => "Ail-llwytho i fynu",
+"reuploaddesc" => "Return to the upload form.",
+"uploadnologin" => "Nid wedi mewngofnodi",
+"uploadnologintext" => "Rhaid i chi bod wedi <a href=\"" .
+ wfLocalUrl( "Special:Userlogin" ) . "\">mewngofnodi</a>
+i lwytho ffeiliau i fynu.",
+"uploadfile" => "Llwytho ffeil i fynu",
+"uploaderror" => "Gwall yn llwytho ffeil i fynu",
+"uploadtext" => "<strong>STOPIWCH!</strong> Cyn iddich chi llwytho lluniau yma, darllenwch a dilynwch <a href=\"" .
+wfLocalUrlE( "Wicipedia:Polisi_defnyddio_lluniau" ) . "\">polisi defnyddio lluniau</a> Wicipedia os gwelwch yn dda.
+<p>I gweld neu chwilio hen lluniau ewch i'r <a href=\"" . wfLocalUrlE( "Arbennig:Imagelist" ) .
+"\">rhestr lluniau wedi llwytho</a>.
+Mae pob llwyth a dileuo ffeil yn cael eu recordio ar y <a href=\"" .
+wfLocalUrlE( "Wicipedia:Upload_log" ) . "\">log llwytho</a>.
+<p>Defnyddwch y ffurflen isod i llwytho ffeil llun newydd i darluno eich erthyglau.
+Ar y mwyafrif o porwyr, fyddwch yn gweld botwm \"Pori/Browse...\" i agor y dialog agor ffeil arferol.
+Fydd dewis ffeil y llenwi enw'r ffeil yn y cae testun nesaf i'r botwm.
+Mae rhaid i chi hefyd ticio'r blaidd i addo rydych chi ddim yn torri hawlfraintiau rhywun arall trwy llwytho'r ffeil.
+Gwasgwch y botwm \"Llwytho/Upload\" i gorffen y llwyth.
+Ellith hwn cymyd dipyn o amser os mae gennych chi cysylltiad rhyngrwyd araf.
+<p>Y fformatiau gwell gennym ni yw JPEG am lluniau ffotograffiaeth, PNG
+am lluniadau a delweddau iconydd eraill, ag OGG am seiniau.
+Enwch eich ffeil yn disgrifiadol i osgoi anhrefn os gwelwch yn dda.
+I cynnwys y llun mewn erthygl, defnyddwch cysylltiad yn y ffurf
+<b>[[llun:ffeil.jpg]]</b> neu <b>[[llun:ffeil.png|testun arall]]</b>
+neu <b>[[media:ffeil.ogg]]</b> am sain.
+<p>Sylwch -- fel efo tudalennau Wicipedia, ellith pobl eraill golygu neu dileu eich ffeil os ydyn nhw'n meddwl fyddynt yn helpu'r gwyddoniadur, ac ellwch chi cael eich gwaharddio os ydych chi'n sarhau'r system.",
+"uploadlog" => "log llwytho i fynu",
+"uploadlogpage" => "log_llwytho_i_fynu",
+"uploadlogpagetext" => "Isod mae rhestr o'r llwythu ffeil diweddarach.
+Pob amser sy'n dangos yw amser y gwasanaethwr (UTC).
+<ul>
+</ul>
+",
+"filename" => "Enw ffeil",
+"filedesc" => "Crynodeb",
+"filestatus" => "Statws hawlfraint",
+"filesource" => "Ffynhonnell",
+"affirmation" => "Rwy'n addo mae'r hawlfraintiwr y ffeil hon wedi cytuno trwyddo'r ffeil o dan termau'r $1.",
+"copyrightpage" => "$wgMetaNamespace:Hawlfraint",
+"copyrightpagename" => "Hawlfraint $wgSitename",
+"uploadedfiles" => "Ffeiliau wedi llwytho i fynu",
+"noaffirmation" => "Rhaid i chi addo dydy'r llwyth i fynu ddim y torri unrhyw hawlfraint.",
+"ignorewarning" => "Anwybyddwch y rhybudd, a chadwch y tudalen beth bynnag.",
+"minlength" => "Rhaid enwau lluniau bod o leia tri llythrennau.",
+"badfilename" => "Mae enw'r llun wedi newid i \"$1\".",
+"badfiletype" => "Nid yw \".$1\" yn fformat ffeil lluniau cymeradwy.",
+"largefile" => "Mae'n cymeradwy dydy lluniau nid mwy na 100k o faint.",
+"successfulupload" => "Llwyth i fynu yn llwyddiannus",
+"fileuploaded" => "Mae ffeil \"$1\" wedi llwytho'n llwyddiannnus.
+Dilynwch y cyswllt hon: ($2) i'r tudalen disgrifiad a llenwch gwybodaeth amdano'r ffeil (ble mae'n dod o, pwy a creu o, beth bynnag arall rydych chi'n gwybod amdano'r ffeil.",
+"uploadwarning" => "Rhybudd llwytho i fynu",
+"savefile" => "Cadw ffeil",
+"uploadedimage" => "\"$1\" wedi llwytho",
+"uploaddisabled" => "Mae ddrwg gennym ni, mae uwchllwytho wedi anablo.",
+
+# Image list
+#
+"imagelist" => "Rhestr delweddau",
+"imagelisttext" => "Isod mae rhestr o $1 delweddau wedi trefnu $2.",
+"getimagelist" => "yn nôl rhestr delweddau",
+"ilshowmatch" => "Dangos pob delwedd gyda enwau yn cyfateb",
+"ilsubmit" => "Chwilio",
+"showlast" => "Dangos y $1 delweddau olaf wedi trefnu $2.",
+"all" => "holl",
+"byname" => "gan enw",
+"bydate" => "gan dyddiad",
+"bysize" => "gan maint",
+"imgdelete" => "difl",
+"imgdesc" => "disg",
+"imglegend" => "Eglurhad: (disg) = dangos/golygu disgrifiad y delwedd.",
+"imghistory" => "Hanes y delwedd",
+"revertimg" => "dych",
+"deleteimg" => "dil",
+"imghistlegend" => "Eglurhad: (cyf) = hon yw'r delwedd cyfoes, (dil) = dilewch yr hen fersiwn hon, (dych) = dychwelio i hen fersiwn hon.
+<br><i>Cliciwch ar dyddiad i weld y delwedd ag oedd llwythiad ar y dyddiad hon</i>.",
+"imagelinks" => "Cysylltiadau delwedd",
+"linkstoimage" => "Mae'r tudalennau isod yn cysylltu i'r delwedd hon: ",
+"nolinkstoimage" => "Does dim tudalen yn cysylltu i'r delwedd hon. ",
+
+# Statistics
+#
+"statistics" => "Ystadegau",
+"sitestats" => "Ystadegau'r seit",
+"userstats" => "Ystadegau defnyddwyr",
+"sitestatstext" => "Mae <b>$1</b> tudalennau ar y databas.
+Mae hyn yn cynnwys tudalennau \"sgwrs\", tudalennau amdano Wicipedia, tudalennau \"stwbyn\" bach, ail-cyfeirnodau, ac eraill sydd dim yn cymwysoli fel erthyglau. Ag eithrio y rheini, mae <b>$2</b> tudalennau yn tebyg yn erthyglau iawn.<p>
+Mae 'ne wedi bod <b>$3</b> golygon o tudalennau, a <b>$4</b> tudalennau wedi golygu ers i'r meddalwedd gael eu sefydliad (12 Gorffennaf 2003).
+Sef <b>$5</b> golygiadau pob tudalen, ar gyfartaledd, a <b>$6</b> golygon o bob golygiad.",
+"userstatstext" => "Mae 'ne <b>$1</b> defnyddwyr wedi cofrestru.
+(Mae <b>$2</b> yn gweinyddwyr (gwelwch $3)).",
+
+# Maintenance Page
+#
+"maintenance" => "Maintenance page",
+"maintnancepagetext" => "This page includes several handy tools for everyday maintenance. Some of these functions tend to stress the database, so please do not hit reload after every item you fixed ;-)",
+"maintenancebacklink" => "Back to Maintenance Page",
+"disambiguations" => "Disambiguation pages",
+"disambiguationspage" => "Wicipedia:Links_to_disambiguating_pages",
+"disambiguationstext" => "The following articles link to a <i>disambiguation page</i>. They should link to the appropriate topic instead.<br>A page is treated as dismbiguation if it is linked from $1.<br>Links from other namespaces are <i>not</i> listed here.",
+"doubleredirects" => "Double Redirects",
+"doubleredirectstext" => "<b>Attention:</b> This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.<br>\nEach row contains links to the first and second redirect, as well as the first line of the second redirect text, usually giving the \"real\" taget article, which the first redirect should point to.",
+"brokenredirects" => "Broken Redirects",
+"brokenredirectstext" => "The following redirects link to a non-existing article.",
+"selflinks" => "Pages with Self Links",
+"selflinkstext" => "The following pages contain a link to themselves, which they should not.",
+"mispeelings" => "Pages with misspellings",
+"mispeelingstext" => "The following pages contain a common misspelling, which are listed on $1. The correct spelling might be given (like this).",
+"mispeelingspage" => "List of common misspellings",
+"missinglanguagelinks" => "Missing Language Links",
+"missinglanguagelinksbutton" => "Find missing language links for",
+"missinglanguagelinkstext" => "These articles do <i>not</i> link to their counterpart in $1. Redirects and subpages are <i>not</i> shown.",
+
+
+# Miscellaneous special pages
+#
+"orphans" => "Erthyglau heb cysylltiadau",
+"lonelypages" => "Erthyglau heb cysylltiadau",
+"unusedimages" => "Lluniau di-defnyddio",
+"popularpages" => "Erthyglau poblogol",
+"nviews" => "$1 golwgfeydd",
+"wantedpages" => "Erthyglau mewn eisiau",
+"nlinks" => "$1 cysylltiadau",
+"allpages" => "Pob tudalennau",
+"randompage" => "Erthygl hapgyrch",
+"shortpages" => "Erthyglau byr",
+"longpages" => "Erthyglau hir",
+"deadendpages" => "Tudalennau heb cysylltiadau",
+"listusers" => "Rhestr defnyddwyr",
+"specialpages" => "Erthyglau arbennig",
+"spheading" => "Erthyglau arbennig",
+"sysopspheading" => "Erthyglau arbennig am defnyddiad y sysop",
+"developerspheading" => "Erthyglau arbennig am defnyddiad y datblygydd",
+"protectpage" => "Sicrhau erthygl",
+"recentchangeslinked" => "Newidiadau perthnasol",
+"rclsub" => "(i erthyglau cysyllt oddiwrth \"$1\")",
+"debug" => "Debug",
+"newpages" => "Erthyglau newydd",
+"ancientpages" => "Erthyglau hynach",
+"intl" => "Cysylltiadau rhwng ieithau",
+"movethispage" => "Symydwch tudalen hon",
+"unusedimagestext" => "<p>Sylwch mae gwefannau eraill, e.e. y Wicipediau Rhwngwladol, yn medru cysylltu at llun gyda URL uniongychol, felly mae'n bosibl dangos enw ffeil yma er gwaethaf mae hi'n dal mewn iws.",
+"booksources" => "Ffynonellau llyfrau",
+"booksourcetext" => "Isod mae rhestr cysylltiadau i gwefannau eraill sydd yn gwerthu llyfrau newydd ac ail-law, ac wyrach mae ganddynt gwybodaeth am y llyfrau rydych yn chwilio amdano.
+Does gan Wicipedia dim cysylltiad gyda unrhyw o'r masnachau, a dydy rhestr hon ddim yn cymeradwyaeth o honnynt.",
+"alphaindexline" => "$1 i $2",
+"version" => "Fersiwn",
+
+# Email this user
+#
+"mailnologin" => "Dim cyfeiriad i anfon",
+"mailnologintext" => "Rhaid i chi wedi <a href=\"" .
+ wfLocalUrl( "Arbennig:Mewngofnodidefnyddwr" ) . "\">mewngofnodi</a>
+a rhoi cyfeiriad e-bost dilyn yn eich <a href=\"" .
+ wfLocalUrl( "Arbennig:Ffafraethau" ) . "\">ffafraethau</a>
+i anfon e-bost i ddefnyddwyr eraill.",
+"emailuser" => "Anfon e-bost i defnyddwr hwn",
+"emailpage" => "Anfon e-bost i defnyddwr",
+"emailpagetext" => "Os yw defnyddwr hwn wedi rhoi cyfeiriad e-bost yn eu ffafraethau, fydd y ffurf isod yn anfon un neges iddo ef. Fydd y cyfeiriad e-bost rydych chi wedi rhoi yn eich ffafraethau yn dangos yn yr \"Oddiwrth\" cyfeiriad yr e-bost, felly fydd y defnyddwr arall yn gallu ateb.",
+"defemailsubject" => "e-post $wgSitename",
+"noemailtitle" => "Dim cyfeiriad e-bost",
+"noemailtext" => "Dydy defnyddwr hwn ddim wedi rhoi cyfeiriad e-bost dilys, neu mae e wedi dewis nid i dderbyn e-bost oddiwrth defnyddwyr eraill.",
+"emailfrom" => "Oddiwrth",
+"emailto" => "I",
+"emailsubject" => "Pwnc",
+"emailmessage" => "Neges",
+"emailsend" => "Anfon",
+"emailsent" => "Neges e-bost wedi danfon",
+"emailsenttext" => "Mae eich neges e-bost wedi gael ei anfon.",
+
+# Watchlist
+#
+"watchlist" => "Fy rhestr gwylio",
+"watchlistsub" => "(am defnyddwr \"$1\")",
+"nowatchlist" => "Does ganddoch chi ddim eitem ar eich rhestr gwylio.",
+"watchnologin" => "Dydych chi ddim wedi mewngofnodi",
+"watchnologintext" => "Rhaid i chi bod wedi <a href=\"" .
+ wfLocalUrl( "Special:Userlogin" ) . "\">mewngofnodi</a>
+i adnewid eich rhestr gwylio.",
+"addedwatch" => "Wedi adio i'ch rhestr gwylio",
+"addedwatchtext" => "Mae tudalen \"$1\" wedi gael eu ychwanegu i eich <a href=\"" .
+ wfLocalUrl( "Arbennig:Rhestr_gwylio" ) . "\">rhestr gwylio</a>.
+Pan fydd y tudalen hon, a'i tudalen Sgwrs, yn newid, fyddynt yn dangos <b>yn cryf</b> yn y <a href=\"" .
+ wfLocalUrl( "Arbennig:Newidiadau_diweddar" ) . "\">rhestr newidiadau diweddar</a>, i bod yn hawsach i gweld.</p>
+
+<p>Os ydych chi'n eisiau cael gwared ar y tudalen yn hwyrach, cliciwch ar \"Stopiwch gwylio\" yn y bar ar y chwith.",
+"removedwatch" => "Wedi diswyddo oddiwrth y rhestr gwylio",
+"removedwatchtext" => "Mae tudalen \"$1\" wedi cael ei diswyddo oddiwrth eich rhestr gwylio.",
+"watchthispage" => "Gwyliwch y tudalen hon",
+"unwatchthispage" => "Stopiwch gwylio",
+"notanarticle" => "Nid erthygl",
+"watchnochange" => "Does dim o'r erthyglau rydych chi'n gwylio wedi golygu yn yr amser sy'n dangos.",
+"watchdetails" => "(Yn gwylio $1 tudalennau, nid yn cyfri tudalennau sgwrs;
+wedi olygu $2 tudalennau ers y toriad;
+$3...
+<a href='$4'>dangos ac olygu y rhestr cyfan</a>.)",
+"watchmethod-recent"=> "gwiriwch golygiadau diweddar am tudalennau gwyliad",
+"watchmethod-list" => "yn gwirio tudalennau gwyliad am olygiadau diweddar",
+"removechecked" => "Dileuwch eitemau sydd gyda tic o'ch rhestr gwylio",
+"watchlistcontains" => "Mae eich rhestr gwylio yn cynnwys $1 tudalennau.",
+"watcheditlist" => "Dyma rhestr wyddorol o'r tudalennau rydych yn wylio.
+Ticiwch blwchau y tudalennau rydych eisiau symud o'ch rhestr gwylio, a cliciwch
+y botwm 'dileu' ar gwaelod y sgrîn.",
+"removingchecked" => "Yn dileu'r eitemau rydych wedi gofyn o'ch rhestr gwylio...",
+"couldntremove" => "Wedi methu dileu eitem '$1'...",
+"iteminvalidname" => "Problem gyda eitem '$1', enw annilys...",
+"wlnote" => "Isod yw'r $1 newidiadau olaf yn y <b>$2</b> oriau diwethaf.",
+"wlshowlast" => "Dangos y $1 oriau $2 dyddiau $3 diwethaf",
+"wlsaved" => "Dyma copi o'ch rhestr gwylio rydym ni wedi cadw.",
+
+# Delete/protect/revert
+#
+"deletepage" => "Dileuwch y tudalen",
+"confirm" => "Cadarnhau",
+"excontent" => "y cynnwys oedd:",
+"exbeforeblank" => "y cynnwys cyn blancio oedd:",
+"exblank" => "y tudalen oedd yn wâg",
+"confirmdelete" => "Cadarnhaewch y dileuad",
+"deletesub" => "(Yn dileuo \"$1\")",
+"historywarning" => "Rhubydd: Mae hanes gan y tudalen yr ydych yn mynd i dileuo: ",
+"confirmdeletetext" => "Rydych chi'n mynd i dileu erthygl neu llun yn parhaol, hefyd gyda'u hanes, oddiwrth y databas.
+Cadarnhaewch yr ydych yn bwriadu gwneud hwn, ac yr ydych yn ddeallt y canlyniad, ac yr ydych yn gwneud hwn yn ôl [[Wicipedia:Polisi]].",
+"confirmcheck" => "Ie, 'Dwi eisio dileu hwn mewn gwirionedd.",
+"actioncomplete" => "Gweithred llwyr",
+"deletedtext" => "Mae \"$1\" wedi eu dileu.
+Gwelwch $2 am cofnod o dileuon diweddar.",
+"deletedarticle" => "wedi dileu \"$1\"",
+"dellogpage" => "Log_dileuo",
+"dellogpagetext" => "Isod mae rhestr o'r dileuon diweddarach.
+<ul>
+</ul>
+",
+"deletionlog" => "Log dileuon",
+"reverted" => "Wedi mynd nôl i fersiwn gynt",
+"deletecomment" => "Achos dileuad",
+"imagereverted" => "Gwrthdroad i fersiwn gynt yn llwyddiannus.",
+"rollback" => "Roliwch golygon yn ôl",
+"rollbacklink" => "rolio nôl",
+"cantrollback" => "Ddim yn gallu gwrthdroi golygiad; y cyfrannwr olaf oedd yr unrhyw awdur yr erthygl hon.",
+"alreadyrolled" => "Amhosib rolio nôl golygiad olaf [[$1]]
+gan [[Defnyddwr:$2|$2]] ([[Sgwrs defnyddwr:$2|Sgwrs]]); mae rhywun arall yn barod wedi olygu neu rolio nôl yr erthygl.
+
+[[Defnyddwr:$3|$3]] ([[Sgwrs defnyddwr:$3|Sgwrs]] gwneuthoedd yr olygiad olaf). ",
+# only shown if there is an edit comment
+"editcomment" => "Crynodeb y golygiad oedd: \"<i>$1</i>\".",
+"revertpage" => "Wedi gwrthdroi i golygiad olaf gan $1",
+"protectlogpage" => "Log_amdiffyno",
+"protectlogtext" => "Isod mae rhestr o cloion/datgloion tudalennau.
+Gwelwch [[$wgMetaNamespace:Tudalen amddiffynol]] am mwy o wybodaeth.",
+"protectedarticle" => "wedi amddiffyno [[$1]]",
+"unprotectedarticle" => "wedi di-amddiffyno [[$1]]",
+
+# Undelete
+"undelete" => "Gwrthdroi tudalen wedi dileuo",
+"undeletepage" => "Gwyliwch ac adferiwch tudalennau wedi dileuo",
+"undeletepagetext" => "Mae'r tudalennau isod wedi cael eu dileuo ond mae nhw'n dal yn yr archif ac maen bosibl adferio nhw. Mae'r archif yn cael eu glanhau o dro i dro.",
+"undeletearticle" => "Adferiwch erthygl wedi dileu",
+"undeleterevisions" => "$1 fersiwnau yn yr archif",
+"undeletehistory" => "Os adferiwch y tudalen, fydd holl y fersiwnau yn gael eu adferio yn yr hanes. Os mae tudalen newydd wedi gael eu creu ers i'r tudalen bod yn dileu, fydd y fersiwnau adferol yn dangos yn yr hanes gynt ond ni fydd y fersiwn cyfoes yn gael eu allosodi.",
+"undeleterevision" => "wedi dileu fersiwn $1",
+"undeletebtn" => "Adferiwch!",
+"undeletedarticle" => "wedi adferio \"$1\"",
+
+"undeletedtext" => "Mae'r erthygl [[$1]] wedi cael eu adferio'n llwyddiannus.
+Gwyliwch [[Wicipedia:Log_dileuon]] am record dileuon ac adferion diweddar.",
+
+# Contributions
+#
+"contributions" => "Cyfraniadau defnyddwr",
+"mycontris" => "Fy nghyfraniadau",
+"contribsub" => "Dros $1",
+"nocontribs" => "Dim wedi dod o hyd i newidiadau gyda criterion hyn.",
+"ucnote" => "Isod mae y <b>$1</b> newidiadau yn y <b>$2</b> dyddiau olaf am defnyddwr hwn.",
+"uclinks" => "Gwelwch y $1 newidiadau olaf; gwelwch y $2 dyddiau olaf.",
+"uctop" => " (top)" ,
+
+# What links here
+#
+"whatlinkshere" => "Beth sy'n cysylltu yma",
+"notargettitle" => "Dim targed",
+"notargettext" => "Dydych chi ddim wedi dewis tudalen targed neu defnyddwr.",
+"linklistsub" => "(Rhestr cysylltiadau)",
+"linkshere" => "Mae'r tudalennau isod yn cysylltu yma:",
+"nolinkshere" => "Does dim tudalennau yn cysylltu yma.",
+"isredirect" => "tudalen ail-cyfeirnod",
+
+# Block/unblock IP
+#
+"blockip" => "Blociwch cyfeiriad IP",
+"blockiptext" => "Defnyddwch y ffurflen isod i blocio mynedfa ysgrifenol oddiwrth cyfeiriad IP cymharol.
+Ddylwch dim ond gwneud hwn i stopio fandaliaeth, yn dilyn a [[Wicipedia:Polisi|polisi Wicipedia]].
+Llenwch rheswm am y bloc, isod (e.e. enwch y tudalennau a oedd wedi fandalo).",
+"ipaddress" => "Cyfeiriad IP",
+"ipbexpiry" => "Diwedd",
+"ipbreason" => "Achos",
+"ipbsubmit" => "Blociwch y cyfeiriad hwn",
+"badipaddress" => "Dydy'r cyfeiriad IP ddim yn ddilys.",
+"noblockreason" => "Rhaid i chi rhoi rheswm am y bloc.",
+"blockipsuccesssub" => "Bloc yn llwyddiannus",
+"blockipsuccesstext" => "Mae cyfeiriad IP \"$1\" wedi cael eu blocio.
+<br>Gwelwch [[Arbennig:Ipblocklist|rhestr bloc IP]] i arolygu blociau.",
+"unblockip" => "Di-blociwch cyfeiriad IP",
+"unblockiptext" => "Defnyddwch y ffurflen isod i di-blocio mynedfa ysgrifenol i cyfeiriad IP sydd wedi cael eu blocio'n gynt.",
+"ipusubmit" => "Di-blociwch y cyfeiriad hwn",
+"ipusuccess" => "Cyfeiriad IP \"$1\" wedi di-blocio",
+"ipblocklist" => "Rhestr cyfeiriadau IP wedi blocio",
+"blocklistline" => "$1, $2 wedi blocio $3",
+"blocklink" => "bloc",
+"unblocklink" => "di-bloc",
+"contribslink" => "cyfraniadau",
+"autoblocker" => "Wedi cloi'n awtomatig am achos rydych chi'n rhannu cyfeiriad IP gyda \"$1\". Rheswm \"$2\".",
+"blocklogpage" => "Log_blociau",
+"blocklogentry" => 'wedi blocio "$1" efo amser diwedd o $2',
+"blocklogtext" => "Dyma log o pryd mae cyfeiriadau wedi cael eu blocio a datblocio. Dydy cyfeiriad
+a sydd wedi blocio'n awtomatig ddim yn cael eu ddangos yma. Gwelwch [[Special:Ipblocklist|rhestr block IP]] am
+y rhestr o blociau a gwaharddiadau sydd yn effeithiol rwan.",
+"unblocklogentry" => 'wedi datblocio "$1"',
+"range_block_disabled" => "Mae gallu sysop i creu dewis o blociau wedi anablo.",
+"ipb_expiry_invalid" => "Amser diwedd ddim yn dilys.",
+"ip_range_invalid" => "Dewis IP annilys.\n",
+
+# Developer tools - left untranslated as the developers would probably
+# prefer them in English!
+#
+"lockdb" => "Lock database",
+"unlockdb" => "Unlock database",
+"lockdbtext" => "Locking the database will suspend the ability of all
+users to edit pages, change their preferences, edit their watchlists, and
+other things requiring changes in the database.
+Please confirm that this is what you intend to do, and that you will
+unlock the database when your maintenance is done.",
+"unlockdbtext" => "Unlocking the database will restore the ability of all
+users to edit pages, change their preferences, edit their watchlists, and
+other things requiring changes in the database.
+Please confirm that this is what you intend to do.",
+"lockconfirm" => "Yes, I really want to lock the database.",
+"unlockconfirm" => "Yes, I really want to unlock the database.",
+"lockbtn" => "Lock database",
+"unlockbtn" => "Unlock database",
+"locknoconfirm" => "You did not check the confirmation box.",
+"lockdbsuccesssub" => "Database lock succeeded",
+"unlockdbsuccesssub" => "Database lock removed",
+"lockdbsuccesstext" => "The database has been locked.
+<br>Remember to remove the lock after your maintenance is complete.",
+"unlockdbsuccesstext" => "The database has been unlocked.",
+
+# SQL query -- left untranslated
+#
+"asksql" => "SQL query",
+"asksqltext" => "Use the form below to make a direct query of the
+Wicipedia database.
+Use single quotes ('like this') to delimit string literals.
+This can often add considerable load to the server, so please use
+this function sparingly.",
+"sqlquery" => "Enter query",
+"querybtn" => "Submit query",
+"selectonly" => "Queries other than \"SELECT\" are restricted to
+Wicipedia developers.",
+"querysuccessful" => "Query successful",
+
+# Make sysop
+"makesysoptitle" => "Gwnewch sysop allan o defnyddiwr",
+"makesysoptext" => "Defnyddiwch y ffurflen hon i troi defnyddiwr cyffredin i gweinyddwr.
+Teipiwch enw'r defnyddiwr yn y blwch a cliciwch y botwm i troi'r defnyddiwr i gweinyddwr",
+"makesysopname" => "Enw'r defnyddiwr:",
+"makesysopsubmit" => "Gwnewch y defnyddiwr hwn yn gweinyddwr",
+"makesysopok" => "<b>Mae defnyddwr '$1' rwan yn gweinyddwr</b>",
+"makesysopfail" => "<b>Wedi methu troi defnyddwr '$1' i gweinyddwr. (Ydych chi wedi sillafu'r enw'n iawn?)</b>",
+"setbureaucratflag" => "Gosod y fflag biwrocrat",
+"bureaucratlog" => "Log_biwrocrat",
+"bureaucratlogentry" => " gosod $1: $2",
+
+# Move page
+#
+"movepage" => "Symud tudalen",
+"movepagetext" => "Fydd defnyddio'r ffurflen isod yn ail-enwi tudalen, symud eu hanes gyfan i'r enw newydd.
+Fydd yr hen teitl yn dod tudalen ail-cyfeiriad i'r teitl newydd.
+Ni fydd cysylltiadau i'r hen teitl yn newid; mae rhaid i chi gwirio mae cysylltau'n dal yn mynd i'r lle mae angen iddyn nhw mynd!
+
+Sylwch fydd y tudalen '''ddim''' yn symud os mae 'ne tudalen efo'r enw newydd yn barod ar y databas (sef os mae hi'n gwâg neu yn ail-cyfeiriad heb unrhyw hanes golygu). Mae'n posibl i chi ail-enwi tudalen yn ôl i lle oedd hi os ydych chi wedi gwneud camgymeriad, ac mae'n amhosibl i ysgrifennu dros tudalen sydd barod yn bodoli.
+
+<b>RHYBUDD!</b>
+Ellith hwn bod newid sydyn a llym i tudalen poblogol; byddwch yn siwr rydych chi'n deallt y canlyniadau cyn iddich chi mynd ymlaen gyda hwn.",
+"movepagetalktext" => "Fydd y tudalen sgwrs , os oes ne un, yn symud gyda tudalen hon '''ac eithrio:'''
+*rydych yn symud y tudalen wrth llefydd-enw,
+*mae tudalen sgwrs di-wâg yn barod efo'r enw newydd, neu
+*rydych chi'n di-ticio'r blwch isod.",
+"movearticle" => "Symud tudalen",
+"movenologin" => "Nid wedi mewngofnodi",
+"movenologintext" => "Rhaid i chi bod defnyddwr cofrestredig ac wedi <a href=\"" .
+ wfLocalUrl( "Arbennig:Userlogin" ) . "\">mewngofnodi</a>
+to move a page.",
+"newtitle" => "i teitl newydd",
+"movepagebtn" => "Symud tudalen",
+"pagemovedsub" => "Symud yn llwyddiannus",
+"pagemovedtext" => "Mae tudalen \"[[$1]]\" wedi symud i \"[[$2]]\".",
+"articleexists" => "Mae tudalen gyda'r enw newydd yn bodoli'n barod, neu mae eich enw newydd ddim yn dilys.
+Dewiswch enw newydd os gwelwch yn dda.",
+"talkexists" => "Mae'r tudalen wedi symud yn llwyddiannus, ond roedd hi'n amhosibl symud y tudalen sgwrs am achos roedd ne un efo'r teitl newydd yn bodoli'n barod. Cysylltwch nhw eich hun, os gwelwch yn dda.",
+"movedto" => "symud i",
+"movetalk" => "Symud tudalen \"sgwrs\" hefyd, os oes un.",
+"talkpagemoved" => "Mae'r tudalen sgwrs hefyd wedi symud.",
+"talkpagenotmoved" => "Dydy'r tudalen sgwrs <strong>ddim</strong> wedi symud.",
+"1movedto2" => "$1 wedi symud i $2",
+
+# Export
+
+"export" => "Export pages",
+"exporttext" => "You can export the text and editing history of a particular
+page or set of pages wrapped in some XML; this can then be imported into another
+wiki running MediaWiki software, transformed, or just kept for your private
+amusement.",
+"exportcuronly" => "Include only the current revision, not the full history",
+
+# Namespace 8 related
+
+"allmessages" => "Holl_negeseuon",
+"allmessagestext" => "Dyma rhestr holl y negeseuon ar gael yn y lle-enw MediaWiki: ",
+
+# Thumbnails
+
+"thumbnail-more" => "Helaethwch"
+
+);
+
+
+include_once( "LanguageUtf8.php" );
+
+class LanguageCy extends LanguageUtf8 {
+
+ function getDefaultUserOptions () {
+ global $wgDefaultUserOptionsCy;
+ return $wgDefaultUserOptionsCy;
+ }
+
+ function getBookstoreList () {
+ global $wgBookstoreListCy;
+ return $wgBookstoreListCy;
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesCy;
+ return $wgNamespaceNamesCy;
+ }
+
+ function getNsText( $index ) {
+ global $wgNamespaceNamesCy;
+ return $wgNamespaceNamesCy[$index];
+ }
+
+ function getNsIndex( $text ) {
+ global $wgNamespaceNamesCy;
+
+ foreach ( $wgNamespaceNamesCy as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ # Fallback to English names for compatibility
+ return Language::getNsIndex( $text );
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsCy;
+ return $wgQuickbarSettingsCy;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesCy;
+ return $wgSkinNamesCy;
+ }
+
+ function getMathNames() {
+ global $wgMathNamesCy;
+ return $wgMathNamesCy;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsCy;
+ return $wgDateFormatsCy;
+ }
+
+ function getUserToggles() {
+ global $wgUserTogglesCy;
+ return $wgUserTogglesCy;
+ }
+
+ function getMonthName( $key )
+ {
+ global $wgMonthNamesCy;
+ return $wgMonthNamesCy[$key-1];
+ }
+
+ function getMonthAbbreviation( $key )
+ {
+ global $wgMonthAbbreviationsCy;
+ return $wgMonthAbbreviationsCy[$key-1];
+ }
+
+ function getWeekdayName( $key )
+ {
+ global $wgWeekdayNamesCy;
+ return $wgWeekdayNamesCy[$key-1];
+ }
+
+ function getValidSpecialPages()
+ {
+ global $wgValidSpecialPagesCy;
+ return $wgValidSpecialPagesCy;
+ }
+
+ function getSysopSpecialPages()
+ {
+ global $wgSysopSpecialPagesCy;
+ return $wgSysopSpecialPagesCy;
+ }
+
+ function getDeveloperSpecialPages()
+ {
+ global $wgDeveloperSpecialPagesCy;
+ return $wgDeveloperSpecialPagesCy;
+ }
+
+ function getMessage( $key )
+ {
+ global $wgAllMessagesCy;
+ return $wgAllMessagesCy[$key];
+ }
+
+ function getAllMessages()
+ {
+ global $wgAllMessagesCy;
+ return $wgAllMessagesCy;
+ }
+
+ function getMagicWords()
+ {
+ global $wgMagicWordsCy;
+ return $wgMagicWordsCy;
+ }
+
+}
+
+?> \ No newline at end of file
diff --git a/languages/LanguageGa.php b/languages/LanguageGa.php
index deadc10f7153..919cb61ae671 100755
--- a/languages/LanguageGa.php
+++ b/languages/LanguageGa.php
@@ -1,36 +1,18 @@
-<?
-#--------------------------------------------------------------------------
-# Constants
-#--------------------------------------------------------------------------
-
-# Magic words
-define("MAG_REDIRECT", 0);
-define("MAG_NOTOC", 1);
-define("MAG_START", 2);
-define("MAG_CURRENTMONTH", 3);
-define("MAG_CURRENTMONTHNAME", 4);
-define("MAG_CURRENTDAY", 5);
-define("MAG_CURRENTDAYNAME", 6);
-define("MAG_CURRENTYEAR", 7);
-define("MAG_CURRENTTIME", 8);
-define("MAG_NUMBEROFARTICLES", 9);
-define("MAG_CURRENTMONTHNAMEGEN", 10);
-define("MAG_MSG", 11);
-define("MAG_SUBST", 12);
-define("MAG_MSGNW", 13);
-define("MAG_NOEDITSECTION", 14);
-
-#--------------------------------------------------------------------------
-# Language-specific text
-#--------------------------------------------------------------------------
-
-# NOTE: To turn off "Current Events" in the sidebar,
-# set "currentevents" => "-"
-
-# The names of the namespaces can be set here, but the numbers
-# are magical, so don't change or move them! The Namespace class
-# encapsulates some of the magic-ness.
-#
+<?php
+
+/* Irish */
+
+/*
+(This version of LanguageGa.php originally dates from the first version of 23:20,
+14th February 2004. It was translated from LanguageEn.php and LanguageEo.php,
+using the standard Ó Dónaill and De Bhaldraithe dictionaries, the Oxford
+minidictionary and Ó Donnáile's computing wordlist. There are small mistakes
+abound here, but corrections should principally be made to the live version on
+Sourceforge (when that gets added.)
+*/
+
+# FIXME: Use $wgSitename, $wgMetaNamespace etc
+
/* private */ $wgNamespaceNamesGa = array(
-2 => "Media",
-1 => "Speisialta",
@@ -110,152 +92,6 @@ define("MAG_NOEDITSECTION", 14);
"Amazon.com" => "http://www.amazon.com/exec/obidos/ISBN=$1"
);
-# Here, when possible, use Irish language names for languages
-
-/* private */ $wgLanguageNamesGa = array(
- "aa" => "Afar",
- "ab" => "Abkhazian",
- "af" => "Afrikaans", # Afracáinis
- "am" => "Amharic",
- "ar" => "&#8238;&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;&#8236; (Araby)", # Araibis
- "as" => "Assamese",
- "ay" => "Aymara",
- "az" => "Azerbaijani",
- "ba" => "Bashkir",
- "be" => "&#1041;&#1077;&#1083;&#1072;&#1088;&#1091;&#1089;&#1082;&#1080;",
- "bh" => "Bihara",
- "bi" => "Bislama",
- "bn" => "Bengali",
- "bo" => "Tibetan", # Tibéadis
- "br" => "Brezhoneg",
- "bs" => "Bosnian",
- "ca" => "Catal&#224;", # Catalóinis
- "ch" => "Chamoru",
- "co" => "Corsican",
- "cs" => "&#268;esk&#225;",
- "cy" => "Cymraeg", # Breatnais
- "da" => "Dansk", # Danmhairgis. Note two different subdomains.
- "dk" => "Dansk", # 'da' is correct for the language.
- "de" => "Deutsch", # Gearmáinis
- "dz" => "Bhutani",
- "el" => "&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940; (Ellenika)",
- "en" => "English", # Béarla
- "eo" => "Esperanto", # Espeirantó
- "es" => "Espa&#241;ol", # Spáinnis
- "et" => "Eesti",
- "eu" => "Euskara",
- "fa" => "&#8238;&#1601;&#1585;&#1587;&#1609;&#8236; (Farsi)",
- "fi" => "Suomi",
- "fj" => "Fijian", # Fidsis? Fiji= An Fhidsí.
- "fo" => "Faeroese",
- "fr" => "Fran&#231;ais", # Fraincis
- "fy" => "Frysk",
- "ga" => "Gaeilge", # Gaeilge
- "gl" => "Galician",
- "gn" => "Guarani",
- "gu" => "&#2711;&#2753;&#2716;&#2736;&#2750;&#2724;&#2752; (Gujarati)",
- "ha" => "Hausa",
- "he" => "&#1506;&#1489;&#1512;&#1497;&#1514; (Ivrit)",
- "hi" => "&#2361;&#2367;&#2344;&#2381;&#2342;&#2368; (Hindi)", # Hiondúis
- "hr" => "Hrvatski",
- "hu" => "Magyar", # Ungáiris
- "hy" => "Armenian", # Airméinis
- "ia" => "Interlingua",
- "id" => "Indonesia", # Indinéisis
- "ik" => "Inupiak",
- "is" => "&#205;slenska",
- "it" => "Italiano", # Iodáilis
- "iu" => "Inuktitut",
- "ja" => "&#26085;&#26412;&#35486; (Nihongo)", # Seapáinis
- "jv" => "Javanese", # Iavais? Java = An Iava.
- "ka" => "&#4325;&#4304;&#4320;&#4311;&#4309;&#4308;&#4314;&#4312; (Kartuli)",
- "kk" => "Kazakh",
- "kl" => "Greenlandic", # Graonlainnis
- "km" => "Cambodian",
- "kn" => "Kannada",
- "ko" => "&#54620;&#44397;&#50612; (Hangukeo)",
- "ks" => "Kashmiri",
- "kw" => "Kernewek",
- "ky" => "Kirghiz",
- "la" => "Latina", # Laidin
- "ln" => "Lingala",
- "lo" => "Laotian",
- "lt" => "Lietuvi&#371;",
- "lv" => "Latvian", # Laitvis
- "mg" => "Malagasy",
- "mi" => "Maori",
- "mk" => "Macedonian", # Macadóinis
- "ml" => "Malayalam",
- "mn" => "Mongolian", # Mongóilis
- "mo" => "Moldavian",
- "mr" => "Marathi",
- "ms" => "Bahasa Melayu",
- "my" => "Burmese", # Burmais? Burma = Burma
- "na" => "Nauru",
- "ne" => "&#2344;&#2375;&#2346;&#2366;&#2354;&#2368; (Nepali)", # Neipealis
- "nl" => "Nederlands", # Ollainnis
- "no" => "Norsk", # Ioruais
- "oc" => "Occitan",
- "om" => "Oromo",
- "or" => "Oriya",
- "pa" => "Punjabi",
- "pl" => "Polski", # Polainnis
- "ps" => "Pashto",
- "pt" => "Portugu&#234;s", # Portaingéilis
- "qu" => "Quechua",
- "rm" => "Rhaeto-Romance",
- "rn" => "Kirundi",
- "ro" => "Rom&#226;n&#259;",
- "ru" => "&#1056;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081; (Russkij)", # Rúisis
- "rw" => "Kinyarwanda",
- "sa" => "&#2360;&#2306;&#2360;&#2381;&#2325;&#2371;&#2340; (Samskrta)",
- "sd" => "Sindhi",
- "sg" => "Sangro",
- "sh" => "Serbocroatian", # ? Serbian = Serbis; Croatian = Cróitis.
- "si" => "Sinhalese",
- "simple" => "Simple English", # Béarla Simplí
- "sk" => "Slovak", # Slóvaicis
- "sl" => "Slovensko",
- "sm" => "Samoan",
- "sn" => "Shona",
- "so" => "Soomaali",
- "sq" => "Shqiptare",
- "sr" => "Srpski",
- "ss" => "Siswati",
- "st" => "Sesotho",
- "su" => "Sundanese",
- "sv" => "Svenska", # Sualainnis
- "sw" => "Kiswahili",
- "ta" => "Tamil",
- "te" => "Telugu",
- "tg" => "Tajik",
- "th" => "Thai",
- "ti" => "Tigrinya",
- "tk" => "Turkmen",
- "tl" => "Tagalog",
- "tn" => "Setswana",
- "to" => "Tonga",
- "tr" => "T&#252;rk&#231;e", # Tuircis
- "ts" => "Tsonga",
- "tt" => "Tatar",
- "tw" => "Twi",
- "ug" => "Uighur",
- "uk" => "&#1059;&#1082;&#1088;&#1072;&#1111;&#1085;&#1089;&#1100;&#1082;&#1072; (Ukrayins`ka)",
- "ur" => "Urdu",
- "uz" => "Uzbek",
- "vi" => "Vietnamese", # Vítneamis
- "vo" => "Volap&#252;k",
- "wo" => "Wolof",
- "xh" => "isiXhosa",
- "yi" => "Yiddish", # Giúdais
- "yo" => "Yoruba",
- "za" => "Zhuang",
- "zh" => "&#20013;&#25991; (Zhongwen)", # Sínis
- "zh-cn" => "&#20013;&#25991;(&#31616;&#20307;) (Simplified Chinese)", # Sínis Simplithe
- "zh-tw" => "&#20013;&#25991;(&#32321;&#20307;) (Traditional Chinese)", # Sínis Traidisiúnta
- "zu" => "Zulu"
-);
-
# Different spellings of days (with Dé) may be needed for some uses
/* private */ $wgWeekdayNamesGa = array(
@@ -274,7 +110,7 @@ define("MAG_NOEDITSECTION", 14);
"Mea", "Dei", "Samh", "Nol"
);
-# Are the following safe to translate?
+# The following exist for the purpose of being translated:
/* private */ $wgMagicWordsGa = array(
# ID CASE SYNONYMS
@@ -332,7 +168,8 @@ define("MAG_NOEDITSECTION", 14);
"Movepage" => "",
"Booksources" => "Leabharfhoinsí seachtraí",
# "Categories" => "Ranganna leathanaigh",
- "Export" => ""
+ "Export" => "XML Export",
+ "Version" => "Version",
);
/* private */ $wgSysopSpecialPagesGa = array(
@@ -1269,11 +1106,9 @@ air, nó is féidir leat é a coinnigh do do siamsa féin.",
"allmessagestext" => "Seo é liosta de na teachtaireachtaí go léir atá le fáil san roinn MediaWiki: ."
);
-#--------------------------------------------------------------------------
-# Internationalisation code
-#--------------------------------------------------------------------------
+include_once( "LanguageUtf8.php" );
-class Language {
+class LanguageGa extends LanguageUtf8 {
function getDefaultUserOptions () {
global $wgDefaultUserOptionsGa ;
@@ -1301,11 +1136,8 @@ class Language {
foreach ( $wgNamespaceNamesGa as $i => $n ) {
if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
}
- return false;
- }
-
- function specialPage( $name ) {
- return $this->getNsText( Namespace::getSpecial() ) . ":" . $name;
+ /* Fallback to English names for compatibility */
+ return Language::getNsIndex( $text );
}
function getQuickbarSettings() {
@@ -1333,31 +1165,11 @@ class Language {
return $wgUserTogglesGa;
}
- function getLanguageNames() {
- global $wgLanguageNamesGa;
- return $wgLanguageNamesGa;
- }
-
- function getLanguageName( $code ) {
- global $wgLanguageNamesGa;
- if ( ! array_key_exists( $code, $wgLanguageNamesGa ) ) {
- return "";
- }
- return $wgLanguageNamesGa[$code];
- }
-
function getMonthName( $key )
{
global $wgMonthNamesGa;
return $wgMonthNamesGa[$key-1];
}
-
- /* by default we just return base form */
- function getMonthNameGen( $key )
- {
- global $wgMonthNamesGa;
- return $wgMonthNamesGa[$key-1];
- }
function getMonthAbbreviation( $key )
{
@@ -1371,75 +1183,6 @@ class Language {
return $wgWeekdayNamesGa[$key-1];
}
- function userAdjust( $ts )
- {
- global $wgUser, $wgLocalTZoffset;
-
- $diff = $wgUser->getOption( "timecorrection" );
- if ( ! is_numeric( $diff ) ) {
- $diff = isset( $wgLocalTZoffset ) ? $wgLocalTZoffset : 0;
- }
- if ( 0 == $diff ) { return $ts; }
-
- $t = mktime( ( (int)substr( $ts, 8, 2) ) + $diff,
- (int)substr( $ts, 10, 2 ), (int)substr( $ts, 12, 2 ),
- (int)substr( $ts, 4, 2 ), (int)substr( $ts, 6, 2 ),
- (int)substr( $ts, 0, 4 ) );
- return date( "YmdHis", $t );
- }
-
- function date( $ts, $adj = false )
- {
- global $wgAmericanDates, $wgUser, $wgUseDynamicDates;
-
- if ( $adj ) { $ts = $this->userAdjust( $ts ); }
-
- if ( $wgUseDynamicDates ) {
- $datePreference = $wgUser->getOption( 'date' );
- if ( $datePreference == 0 ) {
- $datePreference = $wgAmericanDates ? 1 : 2;
- }
- } else {
- $datePreference = $wgAmericanDates ? 1 : 2;
- }
-
- if ( $datePreference == 1 ) {
- # MDY
- $d = $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) .
- " " . (0 + substr( $ts, 6, 2 )) . ", " .
- substr( $ts, 0, 4 );
- } else if ( $datePreference == 2 ) {
- #DMY
- $d = (0 + substr( $ts, 6, 2 )) . " " .
- $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) . " " .
- substr( $ts, 0, 4 );
- } else {
- #YMD
- $d = substr( $ts, 0, 4 ) . " " . $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) .
- " " . (0 + substr( $ts, 6, 2 ));
- }
-
- return $d;
- }
-
- function time( $ts, $adj = false )
- {
- if ( $adj ) { $ts = $this->userAdjust( $ts ); }
-
- $t = substr( $ts, 8, 2 ) . ":" . substr( $ts, 10, 2 );
- return $t;
- }
-
- function timeanddate( $ts, $adj = false )
- {
- return $this->time( $ts, $adj ) . ", " . $this->date( $ts, $adj );
- }
-
- function rfc1123( $ts )
- {
- return date( "D, d M Y H:i:s T", $ts );
- }
-
function getValidSpecialPages()
{
global $wgValidSpecialPagesGa;
@@ -1470,102 +1213,12 @@ class Language {
return $wgAllMessagesGa;
}
- function iconv( $in, $out, $string ) {
- # For most languages, this is a wrapper for iconv
- return iconv( $in, $out, $string );
- }
-
- function ucfirst( $string ) {
- # For most languages, this is a wrapper for ucfirst()
- return ucfirst( $string );
- }
-
- function checkTitleEncoding( $s ) {
- global $wgInputEncoding;
-
- # Check for UTF-8 URLs; Internet Explorer produces these if you
- # type non-ASCII chars in the URL bar or follow unescaped links.
- $ishigh = preg_match( '/[\x80-\xff]/', $s);
- $isutf = ($ishigh ? preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
- '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s ) : true );
-
- if( ($wgInputEncoding != "utf-8") and $ishigh and $isutf )
- return iconv( "UTF-8", $wgInputEncoding, $s );
-
- if( ($wgInputEncoding == "utf-8") and $ishigh and !$isutf )
- return utf8_encode( $s );
-
- # Other languages can safely leave this function, or replace
- # it with one to detect and convert another legacy encoding.
- return $s;
- }
-
- function stripForSearch( $in ) {
- # Some languages have special punctuation to strip out
- # or characters which need to be converted for MySQL's
- # indexing to grok it correctly. Make such changes here.
- return $in;
- }
-
+ function getMagicWords()
+ {
+ global $wgMagicWordsGa;
+ return $wgMagicWordsGa;
+ }
- function setAltEncoding() {
- # Some languages may have an alternate char encoding option
- # (Esperanto X-coding, Japanese furigana conversion, etc)
- # If 'altencoding' is checked in user prefs, this gives a
- # chance to swap out the default encoding settings.
- #global $wgInputEncoding, $wgOutputEncoding, $wgEditEncoding;
- }
-
- function recodeForEdit( $s ) {
- # For some languages we'll want to explicitly specify
- # which characters make it into the edit box raw
- # or are converted in some way or another.
- # Note that if wgOutputEncoding is different from
- # wgInputEncoding, this text will be further converted
- # to wgOutputEncoding.
- global $wgInputEncoding, $wgEditEncoding;
- if( $wgEditEncoding == "" or
- $wgEditEncoding == $wgInputEncoding ) {
- return $s;
- } else {
- return $this->iconv( $wgInputEncoding, $wgEditEncoding, $s );
- }
- }
-
- function recodeInput( $s ) {
- # Take the previous into account.
- global $wgInputEncoding, $wgOutputEncoding, $wgEditEncoding;
- if($wgEditEncoding != "") {
- $enc = $wgEditEncoding;
- } else {
- $enc = $wgOutputEncoding;
- }
- if( $enc == $wgInputEncoding ) {
- return $s;
- } else {
- return $this->iconv( $enc, $wgInputEncoding, $s );
- }
- }
-
- # For right-to-left language support
- function isRTL() { return false; }
-
- function getMagicWords()
- {
- global $wgMagicWordsGa;
- return $wgMagicWordsGa;
- }
-
- # Fill a MagicWord object with data from here
- function getMagic( &$mw )
- {
- $raw = $this->getMagicWords(); # don't worry, it's reference counted not deep copy
- $rawEntry = $raw[$mw->mId];
- $mw->mCaseSensitive = $rawEntry[0];
- $mw->mSynonyms = array_slice( $rawEntry, 1 );
- }
}
-include_once( "Language" . ucfirst( $wgLanguageCode ) . ".php" );
-
-?>
+?> \ No newline at end of file
diff --git a/languages/LanguageId.php b/languages/LanguageId.php
new file mode 100644
index 000000000000..8ac9ed42a495
--- /dev/null
+++ b/languages/LanguageId.php
@@ -0,0 +1,9 @@
+<?php
+
+include_once( "LanguageMs.php" );
+
+class LanguageId extends LanguageMs {
+ /* Inherit everything. */
+}
+
+?> \ No newline at end of file
diff --git a/maintenance/InitialiseMessages.inc b/maintenance/InitialiseMessages.inc
index 6da89df8f564..6c8def52f649 100755
--- a/maintenance/InitialiseMessages.inc
+++ b/maintenance/InitialiseMessages.inc
@@ -6,6 +6,8 @@
function initialiseMessages( $overwrite = false) {
global $wgLang, $wgScript, $wgServer, $wgAllMessagesEn;
global $wgOut, $wgArticle, $wgUser;
+ global $wgMessageCache, $wgMemc, $wgDBname, $wgDatabaseMessages;
+ $wgMessageCache->disable();
$fname = "initialiseMessages";
$ns = NS_MEDIAWIKI;
@@ -131,6 +133,14 @@ function initialiseMessages( $overwrite = false) {
} else {
$wgArticle->insertNewArticle( $navText, '', 0, 0 );
}
+
+ if( $wgDatabaseMessages ) {
+ print "Clearing message cache...";
+ $wgMemc->delete( "$wgDBname:messages" );
+ print "Done.\n";
+ }
+
print "Finished\n";
}
+?> \ No newline at end of file
diff --git a/maintenance/archives/importTests.php b/maintenance/archives/importTests.php
index 2ca290999d47..ef751a759eaf 100644
--- a/maintenance/archives/importTests.php
+++ b/maintenance/archives/importTests.php
@@ -1,4 +1,12 @@
-<html>
+<?php
+
+print "This script is obsolete!";
+print "It is retained in the source here in case some of its
+code might be useful for ad-hoc conversion tasks, but it is
+not maintained and probably won't even work as is.";
+exit();
+
+?><html>
<head>
<title>Unit tests for UseMod-to-PediaWiki import script</title>
<meta http-equiv="Refresh" content="10;URL=importTests.php">
diff --git a/maintenance/archives/importUseModWiki.php b/maintenance/archives/importUseModWiki.php
index 5e033a55aa15..09eb025f5505 100644
--- a/maintenance/archives/importUseModWiki.php
+++ b/maintenance/archives/importUseModWiki.php
@@ -1,5 +1,11 @@
<?php
+print "This script is obsolete!";
+print "It is retained in the source here in case some of its
+code might be useful for ad-hoc conversion tasks, but it is
+not maintained and probably won't even work as is.";
+exit();
+
/*
Import data from a UseModWiki into a PediaWiki wiki
2003-02-09 Brion VIBBER <brion@pobox.com>
diff --git a/maintenance/archives/upgradeWatchlist.php b/maintenance/archives/upgradeWatchlist.php
index 95e8e2f99ce4..1027bb879660 100644
--- a/maintenance/archives/upgradeWatchlist.php
+++ b/maintenance/archives/upgradeWatchlist.php
@@ -1,4 +1,11 @@
<?php
+
+print "This script is obsolete!";
+print "It is retained in the source here in case some of its
+code might be useful for ad-hoc conversion tasks, but it is
+not maintained and probably won't even work as is.";
+exit();
+
# Convert watchlists to new format
global $IP;
diff --git a/stylesheets/sticky.js b/stylesheets/sticky.js
index 56da81e77341..cf248c3e3606 100644
--- a/stylesheets/sticky.js
+++ b/stylesheets/sticky.js
@@ -15,7 +15,7 @@ lastY=10;YOffset=0;staticYOffset=10;refreshMS=25;
function setup(eID){
bw=new checkBrowser;
if(bw.ns4||bw.opera){MM_reloadPage(true);}
- var noFix=bw.ie4||bw.ns4||(bw.ns6&&bw.mac)||(bw.macie50)?true:false;
+ var noFix=bw.ie4||bw.ns4||(bw.macie50)?true:false;
if (window.attachEvent){fix_bind()}
else if(noFix){
if(bw.ns6){document.getElementById(eID).style.position="absolute";}
diff --git a/stylesheets/wikibits.js b/stylesheets/wikibits.js
index d7dcf7acec78..f4dbaa76d2c1 100644
--- a/stylesheets/wikibits.js
+++ b/stylesheets/wikibits.js
@@ -1,5 +1,8 @@
// Wikipedia JavaScript support functions
+// Un-trap us from framesets
+if( window.top != window ) window.top.location = window.location;
+
// for enhanced RecentChanges
function toggleVisibility( _levelId, _otherId, _linkId) {
var thisLevel = document.getElementById( _levelId );
@@ -99,19 +102,29 @@ function addInfobox(infoText) {
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
&& (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
&& (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1)
- && (clientPC.indexOf('khtml')==-1));
+ && (clientPC.indexOf('khtml')==-1) && (clientPC.indexOf('gecko')==-1));
if(!document.selection && !is_nav) {
+ infoText=escapeQuotesHTML(infoText);
document.write("<form name='infoform' id='infoform'>"+
- "<input size=80 id='infobox' name='infobox' value='"+
- infoText+"' READONLY></form>");
+ "<input size=80 id='infobox' name='infobox' value=\""+
+ infoText+"\" READONLY></form>");
}
}
function escapeQuotes(text) {
+ var re=new RegExp("'","g");
+ text=text.replace(re,"\\'");
+ re=new RegExp('"',"g");
+ text=text.replace(re,'&quot;');
+ re=new RegExp("\\n","g");
+ text=text.replace(re,"\\n");
+ return text;
+}
- text=text.replace(/'/g,"\\'");
- text=text.replace(/\n/g,"\\n");
+function escapeQuotesHTML(text) {
+ var re=new RegExp('"',"g");
+ text=text.replace(re,"&quot;");
return text;
}
@@ -132,8 +145,8 @@ function insertTags(tagOpen, tagClose, sampleText) {
} else {
document.selection.createRange().text = tagOpen + theSelection + tagClose;
}
- // Mozilla
- } else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
+ // Mozilla -- disabled because it induces a scrolling bug which makes it virtually unusable
+ } else if(false && txtarea.selectionStart || txtarea.selectionStart == '0') {
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
var myText = (txtarea.value).substring(startPos, endPos);
@@ -153,8 +166,9 @@ function insertTags(tagOpen, tagClose, sampleText) {
// Append at the end: Some people find that annoying
//txtarea.value += tagOpen + sampleText + tagClose;
//txtarea.focus();
- tagOpen=tagOpen.replace(/\n/g,"");
- tagClose=tagClose.replace(/\n/g,"");
+ var re=new RegExp("\\n","g");
+ tagOpen=tagOpen.replace(re,"");
+ tagClose=tagClose.replace(re,"");
document.infoform.infobox.value=tagOpen+sampleText+tagClose;
txtarea.focus();
}