Bug 839635, define MAG_NOEDITSECTION
[lhc/web/wiklou.git] / languages / Language.php
index dd00f17..f162d33 100644 (file)
@@ -1,4 +1,28 @@
 <?
+#--------------------------------------------------------------------------
+# 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" => "-"
@@ -8,6 +32,7 @@
 # encapsulates some of the magic-ness.
 #
 /* private */ $wgNamespaceNamesEn = array(
+       -2      => "Media",
        -1      => "Special",
        0       => "",
        1       => "Talk",
@@ -16,7 +41,9 @@
        4       => "Wikipedia",
        5       => "Wikipedia_talk",
        6       => "Image",
-       7       => "Image_talk"
+       7       => "Image_talk",
+       8       => "MediaWiki",
+       9       => "MediaWiki_talk"
 );
 
 /* private */ $wgDefaultUserOptionsEn = array(
@@ -25,7 +52,8 @@
        "contextlines" => 5, "contextchars" => 50,
        "skin" => 0, "math" => 1, "rcdays" => 7, "rclimit" => 50,
        "highlightbroken" => 1, "stubthreshold" => 0,
-       "previewontop" => 1
+       "previewontop" => 1, "editsection"=>1,"editsectiononrightclick"=>0, "showtoc"=>1,
+       "date" => 0
 );
 
 /* private */ $wgQuickbarSettingsEn = array(
@@ -33,7 +61,7 @@
 );
 
 /* private */ $wgSkinNamesEn = array(
-       "Standard", "Nostalgia", "Cologne Blue"
+       "Standard", "Nostalgia", "Cologne Blue", "Paddington", "Montparnasse"
 );
 
 /* private */ $wgMathNamesEn = array(
        "Recommended for modern browsers"
 );
 
+/* private */ $wgDateFormatsEn = array(
+       "No preference",
+       "January 15, 2001",
+       "15 January 2001",
+       "2001 January 15"
+);
+
 /* private */ $wgUserTogglesEn = array(
        "hover"         => "Show hoverbox over wiki links",
        "underline" => "Underline links",
@@ -53,10 +88,13 @@ this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
        "hideminor" => "Hide minor edits in recent changes",
        "usenewrc" => "Enhanced recent changes (not for all browsers)",
        "numberheadings" => "Auto-number headings",
+       "editondblclick" => "Edit pages on double click (JavaScript)",
+       "editsection"=>"Enable section editing via [edit] links",
+       "editsectiononrightclick"=>"Enable section editing by right clicking<br> on section titles (JavaScript)",
+       "showtoc"=>"Show table of contents<br>(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" => "Watch new and modified articles",
+       "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"
@@ -180,7 +218,7 @@ this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
        "sr" => "Srpski",
        "ss"    => "Siswati",
        "st"    => "Sesotho",
-       "su"    => "Sudanese",
+       "su"    => "Sundanese",
        "sv" => "Svenska",
        "sw" => "Kiswahili",
        "ta"    => "Tamil",
@@ -208,6 +246,8 @@ this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
        "yo"    => "Yoruba",
        "za"    => "Zhuang",
        "zh" => "&#20013;&#25991; (Zhongwen)",
+       "zh-cn" => "&#20013;&#25991;(&#31616;&#20307;) (Simplified Chinese)",
+       "zh-tw" => "&#20013;&#25991;(&#32321;&#20307;) (Traditional Chinese)",
        "zu"    => "Zulu"
 );
 
@@ -227,6 +267,25 @@ this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
        "Sep", "Oct", "Nov", "Dec"
 );
 
+/* private */ $wgMagicWordsEn = array(
+#   ID                                 CASE  SYNONYMS
+    MAG_REDIRECT             => array( 0,    "#redirect"              ),
+    MAG_NOTOC                => array( 0,    "__NOTOC__"              ),
+    MAG_NOEDITSECTION        => array( 0,    "__NOEDITSECTION__"      ),
+    MAG_START                => array( 0,    "__START__"              ),
+    MAG_CURRENTMONTH         => array( 1,    "{{CURRENTMONTH}}"       ),
+    MAG_CURRENTMONTHNAME     => array( 1,    "{{CURRENTMONTHNAME}}"   ),
+    MAG_CURRENTDAY           => array( 1,    "{{CURRENTDAY}}"         ),   
+    MAG_CURRENTDAYNAME       => array( 1,    "{{CURRENTDAYNAME}}"     ),
+    MAG_CURRENTYEAR          => array( 1,    "{{CURRENTYEAR}}"        ),
+    MAG_CURRENTTIME          => array( 1,    "{{CURRENTTIME}}"        ),
+    MAG_NUMBEROFARTICLES     => array( 1,    "{{NUMBEROFARTICLES}}"   ),
+    MAG_CURRENTMONTHNAMEGEN  => array( 1,    "{{CURRENTMONTHNAMEGEN}}"),
+       MAG_MSG                  => array( 1,    "{{MSG:$1}}"             ),
+       MAG_SUBST                => array( 1,    "{{SUBST:$1}}"           ),
+    MAG_MSGNW                => array( 1,    "{{MSGNW:$1}}"           )
+);
+       
 # 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).
@@ -251,22 +310,24 @@ this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
        "Longpages"             => "Long articles",
        "Newpages"              => "Newly created articles",
        "Ancientpages"  => "Oldest articles",
-       "Intl"          => "Interlanguage links",
+#      "Intl"                => "Interlanguage Links",
        "Allpages"              => "All pages by title",
 
-       "Ipblocklist"   => "Blocked IP addresses",
-       "Maintenance" => "Maintenance page",
+       "Ipblocklist"   => "Blocked users/IP addresses",
+       "Maintenance"   => "Maintenance page",
        "Specialpages"  => "",
        "Contributions" => "",
        "Emailuser"             => "",
        "Whatlinkshere" => "",
        "Recentchangeslinked" => "",
        "Movepage"              => "",
-       "Booksources"   => "External book sources"
+       "Booksources"   => "External book sources",
+#      "Categories"    => "Page categories",
+       "Export"                => ""
 );
 
 /* private */ $wgSysopSpecialPagesEn = array(
-       "Blockip"               => "Block aIP address",
+       "Blockip"               => "Block a user/IP address",
        "Asksql"                => "Query the database",
        "Undelete"              => "Restore deleted pages"
 );
@@ -277,10 +338,22 @@ this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
        "Debug"                 => "Debugging information"
 );
 
+#-------------------------------------------------------------------
+# Default messages
+#-------------------------------------------------------------------
+# Allowed characters in keys are: A-Z, a-z, 0-9, underscore (_) and 
+# hyphen (-). If you need more characters, you may be able to change
+# the regex in MagicWord::initRegex
+
 /* private */ $wgAllMessagesEn = array(
 
 # Bits of text used by many pages:
 #
+"categories" => "Page categories",
+"category" => "category",
+"category_header" => "Articles in category \"$1\"",
+"subcategories" => "Subcategories",
+
 "linktrail"            => "/^([a-z]+)(.*)\$/sD",
 "mainpage"             => "Main Page",
 "mainpagetext" => "Wiki software successfully installed.",
@@ -321,6 +394,7 @@ this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
 "unprotectthispage" => "Unprotect this page",
 "newpage" => "New page",
 "talkpage"             => "Discuss this page",
+"postcomment"   => "Post a comment",
 "articlepage"  => "View article",
 "subjectpage"  => "View subject", # For compatibility
 "userpage" => "View user page",
@@ -329,7 +403,7 @@ this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
 "viewtalkpage" => "View discussion",
 "otherlanguages" => "Other languages",
 "redirectedfrom" => "(Redirected from $1)",
-"lastmodified" => "It was last modified $1.",
+"lastmodified" => "This page was last modified $1.",
 "viewcount"            => "This page has been accessed $1 times.",
 "gnunote" => "All text is available under the terms of the <a class=internal href='/wiki/GNU_FDL'>GNU Free Documentation License</a>.",
 "printsubtitle" => "(From http://www.wikipedia.org)",
@@ -351,6 +425,12 @@ See $1.",
 "retrievedfrom" => "Retrieved from \"$1\"",
 "newmessages" => "You have $1.",
 "newmessageslink" => "new messages",
+"editsection"=>"edit",
+"toc" => "Table of contents",
+"showtoc" => "show",
+"hidetoc" => "hide",
+"thisisdeleted" => "View or restore $1?",
+"restorelink" => "$1 deleted edits",
 
 # Main script and global functions
 #
@@ -377,8 +457,9 @@ 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",
+"noconnect"            => "Sorry! The wiki is experiencing some technical difficulties, and cannot contact the database server.",
 "nodb"                 => "Could not select database $1",
+"cachederror"          => "The following is a cached copy of the requested page, and may not be up to date.",
 "readonly"             => "Database locked",
 "enterlockreason" => "Enter a reason for the lock, including an estimate
 of when the lock will be released",
@@ -411,13 +492,25 @@ an incorrectly linked inter-language or inter-wiki title.",
 because it slows the database down to the point that no one can use
 the wiki.",
 "perfdisabledsub" => "Here's a saved copy from $1:",
+"wrong_wfQuery_params" => "Incorrect parameters to wfQuery()<br>
+Function: $1<br>
+Query: $2
+",
+"viewsource" => "View source",
+"protectedtext" => "This page has been locked to prevent editing; there are
+a number of reasons why this may be so, please see
+[[$wgMetaNamespace:Protected page]].
+
+You can view and copy the source of this page:",
 
 # Login and logout pages
 #
 "logouttitle"  => "User logout",
-"logouttext"   => "You are now logged out.
+"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",
+again as the same or as a different user. Note that some pages may
+continue to be displayed as if you were still logged in, until you clear
+your browser cache\n",
 
 "welcomecreation" => "<h2>Welcome, $1!</h2><p>Your account has been created.
 Don't forget to personalize your wikipedia preferences.",
@@ -442,6 +535,7 @@ that it be to the address you give.<br>\n",
 "userlogout"   => "Log out",
 "notloggedin"  => "Not logged in",
 "createaccount"        => "Create new account",
+"createaccountmail"    => "by eMail",
 "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*",
@@ -471,6 +565,7 @@ Please log in again after you receive it.",
 # Edit pages
 #
 "summary"              => "Summary",
+"subject"              => "Subject/headline",
 "minoredit"            => "This is a minor edit",
 "watchthis"            => "Watch this article",
 "savearticle"  => "Save page",
@@ -479,7 +574,25 @@ Please log in again after you receive it.",
 "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.",
+[[$wgMetaNamespace:Administrators|administrators]] to discuss the block. 
+
+Note that you may not use the \"email this user\" feature unless you have a valid email address registered in your [[Special:Preferences|user preferences]]. 
+
+Your IP address is $3. Please include this address in any queries you make.
+
+==Note to AOL users==
+Due to continuing acts of vandalism by one particular AOL user, Wikipedia often blocks AOL proxies. Unfortunately, a single proxy server may be used by a large number of AOL users, and hence innocent AOL users are often inadvertently blocked. We apologise for any inconvenience caused. 
+
+If this happens to you, please email an administrator, using an AOL email address. Be sure to include the IP address given above.
+",
+"whitelistedittitle" => "Login required to edit",
+"whitelistedittext" => "You have to [[Special:Userlogin|login]] to edit articles.",
+"whitelistreadtitle" => "Login required to read",
+"whitelistreadtext" => "You have to [[Special:Userlogin|login]] to read articles.",
+"whitelistacctitle" => "You are not allowed to create an account",
+"whitelistacctext" => "To be allowed to create accounts in this Wiki you have to [[Special:Userlogin|log]] in and have the appropriate permissions.",
+"accmailtitle" => "Password sent.",
+"accmailtext" => "The Password for '$1' has been sent to $2.",
 "newarticle"   => "(New)",
 "newarticletext" =>
 "You've followed a link to a page that doesn't exist yet.
@@ -494,6 +607,8 @@ If you are here by mistake, just click your browser's '''back''' button.",
 "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)",
+"commentedit"  => " (comment)",
 "editconflict" => "Edit conflict: $1",
 "explainconflict" => "Someone else has changed this page since you
 started editing it.
@@ -586,7 +701,27 @@ containing all of the search terms will appear in the result).",
 Search in namespaces :<br>
 $1<br>
 $2 List redirects &nbsp; Search for $3 $9",
-
+"searchdisabled" => "<p>Sorry! Full text search has been disabled temporarily, for performance reasons. In the meantime, you can use the Google search below, which may be out of date.</p>
+
+<!-- SiteSearch Google -->
+<FORM method=GET action=\"http://www.google.com/search\">
+<TABLE bgcolor=\"#FFFFFF\"><tr><td>
+<A HREF=\"http://www.google.com/\">
+<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=\"\">
+<INPUT type=submit name=btnG VALUE=\"Google Search\">
+<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" => "(Main)",
 
 # Preferences page
 #
@@ -596,12 +731,15 @@ $2 List redirects &nbsp; Search for $3 $9",
   wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a>
 to set user preferences.",
 "prefslogintext" => "You are logged in as \"$1\".
-Your internal ID number is $2.",
+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 ",
@@ -629,12 +767,14 @@ from server time (UTC).",
 "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.
+"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]]
@@ -651,8 +791,10 @@ See also the [http://meta.wikipedia.org/wiki/Special:Recentchanges recent meta d
 "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.",
+"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",
@@ -674,11 +816,15 @@ See also the [http://meta.wikipedia.org/wiki/Special:Recentchanges recent meta d
 "uploadnologintext"    => "You must be <a href=\"" .
   wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a>
 to upload files.",
-"uploadfile"   => "Upload file",
+"uploadfile"   => "Upload images, sounds, documents etc.",
 "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>If a file with the name you are specifying already
+exists on Wikipedia, it'll be replaced without warning.
+So unless you mean to update a file, it's a good idea
+to first check if such a file exists.
 <p>To view or search previously uploaded images,
 go to the <a href=\"" . wfLocalUrlE( "Special:Imagelist" ) .
 "\">list of uploaded images</a>.
@@ -703,6 +849,7 @@ 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.
@@ -712,6 +859,8 @@ All times shown are server time (UTC).
 ",
 "filename"             => "Filename",
 "filedesc"             => "Summary",
+"filestatus" => "Copyright status",
+"filesource" => "Source",
 "affirmation"  => "I affirm that the copyright holder of this file
 agrees to license it under the terms of the $1.",
 "copyrightpage" => "Wikipedia:Copyrights",
@@ -811,9 +960,9 @@ That comes to <b>$5</b> average edits per page, and <b>$6</b> views per edit.",
 "longpages"            => "Long pages",
 "listusers"            => "User list",
 "specialpages" => "Special pages",
-"spheading"            => "Special pages",
-"sysopspheading" => "Special pages for sysop use",
-"developerspheading" => "Special pages for developer use",
+"spheading"            => "Special pages for all users",
+"sysopspheading" => "For sysop use only",
+"developerspheading" => "For developer use only",
 "protectpage"  => "Protect page",
 "recentchangeslinked" => "Related changes",
 "rclsub"               => "(to pages linked from \"$1\")",
@@ -883,13 +1032,38 @@ make it easier to pick out.</p>
 "watchthispage"        => "Watch this page",
 "unwatchthispage" => "Stop watching",
 "notanarticle" => "Not an article",
+"watchnochange" => "None of your watched items were edited in the time period displayed.",
+"watchdetails" => "($1 pages watched not counting talk pages;
+$2 total pages edited since cutoff;
+$3...
+<a href='$4'>show and edit complete list</a>.)",
+"watchmethod-recent" => "checking recent edits for watched pages",
+"watchmethod-list" => "checking watched pages for recent edits",
+"removechecked" => "Remove checked items from watchlist",
+"watchlistcontains" => "Your watchlist contains $1 pages.",
+"watcheditlist" => "Here's an alphabetical list of your
+watched pages. Check the boxes of pages you want to remove
+from your watchlist and click the 'remove checked' button
+at the bottom of the screen.",
+"removingchecked" => "Removing requested items from watchlist...",
+"couldntremove" => "Couldn't remove item '$1'...",
+"iteminvalidname" => "Problem with item '$1', invalid name...",
+"wlnote" => "Below are the last $1 changes in the last <b>$2</b> hours.",
+"wlshowlast" => "Show last ",
+"wlhours"    => " hours",
+"wldays"     => " days",
+                                                                                                                                       
 
 # 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
@@ -912,8 +1086,20 @@ All times shown are server time (UTC).
 "imagereverted" => "Revert to earlier version was successful.",
 "rollback"             => "Roll back edits",
 "rollbacklink" => "rollback",
-"cantrollback" => "Can't revert edit; last contributor is only author of this article.",
+"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",
+"protectlogpage" => "Protection_log",
+"protectlogtext" => "Below is a list of page locks/unlocks.
+See [[$wgMetaNamespace:Protected page]] for more information.",
+"protectedarticle" => "protected [[$1]]",
+"unprotectedarticle" => "unprotected [[$1]]",
 
 # Undelete
 "undelete" => "Restore deleted page",
@@ -955,31 +1141,38 @@ to perform this function on.",
 
 # Block/unblock IP
 #
-"blockip"              => "Block IP address",
+"blockip"              => "Block user",
 "blockiptext"  => "Use the form below to block write access
-from a specific IP address.
+from a specific IP address or username.
 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",
+"ipaddress"            => "IP Address/username",
 "ipbreason"            => "Reason",
-"ipbsubmit"            => "Block this address",
-"badipaddress" => "The IP address is badly formed.",
+"ipbsubmit"            => "Block this user",
+"badipaddress" => "No user exists by that name",
 "noblockreason" => "You must supply a reason for the block.",
 "blockipsuccesssub" => "Block succeeded",
-"blockipsuccesstext" => "The IP address \"$1\" has been blocked.
+"blockipsuccesstext" => "\"$1\" has been blocked.
 <br>See [[Special:Ipblocklist|IP block list]] to review blocks.",
-"unblockip"            => "Unblock IP address",
+"unblockip"            => "Unblock user",
 "unblockiptext"        => "Use the form below to restore write access
-to a previously blocked IP address.",
+to a previously blocked IP address or username.",
 "ipusubmit"            => "Unblock this address",
-"ipusuccess"   => "IP address \"$1\" unblocked",
-"ipblocklist"  => "List of blocked IP addresses",
+"ipusuccess"   => "\"$1\" unblocked",
+"ipblocklist"  => "List of blocked IP addresses and usernames",
 "blocklistline"        => "$1, $2 blocked $3",
 "blocklink"            => "block",
 "unblocklink"  => "unblock",
 "contribslink" => "contribs",
+"autoblocker"  => "Autoblocked because you share an IP address with \"$1\". Reason \"$2\".",
+"blocklogpage" => "Block_log",
+"blocklogentry"        => 'blocked "$1"',
+"blocklogtext" => "This is a log of user blocking and unblocking actions. Automatically 
+blocked IP addresses are not be listed. See the [[Special:Ipblocklist|IP block list]] for
+the list of currently operational bans and blocks.",
+"unblocklogentry"      => 'unblocked "$1"',
 
 # Developer tools
 #
@@ -1013,6 +1206,7 @@ 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
@@ -1066,8 +1260,23 @@ title. Please merge them manually.",
 "talkpagemoved" => "The corresponding talk page was also moved.",
 "talkpagenotmoved" => "The corresponding talk page was <strong>not</strong> moved.",
 
+"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"  => "All_messages",
+"allmessagestext"      => "This is a list of all messages available in the MediaWiki: namespace"
 );
 
+#--------------------------------------------------------------------------
+# Internationalisation code
+#--------------------------------------------------------------------------
+
 class Language {
 
        function getDefaultUserOptions () {
@@ -1117,6 +1326,11 @@ class Language {
                global $wgMathNamesEn;
                return $wgMathNamesEn;
        }
+       
+       function getDateFormats() {
+               global $wgDateFormatsEn;
+               return $wgDateFormatsEn;
+       }
 
        function getUserToggles() {
                global $wgUserTogglesEn;
@@ -1141,13 +1355,19 @@ class Language {
                global $wgMonthNamesEn;
                return $wgMonthNamesEn[$key-1];
        }
-
+       
        /* by default we just return base form */
        function getMonthNameGen( $key )
        {
                global $wgMonthNamesEn;
                return $wgMonthNamesEn[$key-1];
        }
+       
+       function getMonthRegex()
+       {
+               global $wgMonthNamesEn;
+               return implode( "|", $wgMonthNamesEn );
+       }
 
        function getMonthAbbreviation( $key )
        {
@@ -1180,18 +1400,35 @@ class Language {
  
        function date( $ts, $adj = false )
        {
-               global $wgAmericanDates;
-               if ( $adj ) { $ts = $this->userAdjust( $ts ); }
+               global $wgAmericanDates, $wgUser, $wgUseDynamicDates;
 
-               if( $wgAmericanDates ) {
+               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 {
+               } 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;
        }
 
@@ -1205,7 +1442,7 @@ class Language {
 
        function timeanddate( $ts, $adj = false )
        {
-               return $this->time( $ts, $adj ) . " " . $this->date( $ts, $adj );
+               return $this->time( $ts, $adj ) . ", " . $this->date( $ts, $adj );
        }
 
        function rfc1123( $ts )
@@ -1237,6 +1474,12 @@ class Language {
                return $wgAllMessagesEn[$key];
        }
        
+       function getAllMessages()
+       {
+               global $wgAllMessagesEn;
+               return $wgAllMessagesEn;
+       }
+
        function iconv( $in, $out, $string ) {
                # For most languages, this is a wrapper for iconv
                return iconv( $in, $out, $string );
@@ -1314,9 +1557,100 @@ class Language {
                }
        }
 
+       function replaceDates( $text )
+       {
+               global $wgUser, $wgInputEncoding, $wgUseDynamicDates;
+               
+               # Feature can be disabled
+               if ( !$wgUseDynamicDates ) {
+                       return;
+               }
+
+               # Setup
+               
+               $datePreference = $wgUser->getOption( 'date' );
+
+               static $monthNames = "", $rxDM, $rxMD, $rxY, $rxDMY, $rxYDM, $rxMDY, $rxYMD;
+               if ( $monthNames == "" ) {
+                       $monthNames = $this->getMonthRegex();
+                       
+                       # Attempt at UTF-8 support, untested at the moment
+                       if ( $wgInputEncoding == 'UTF-8' ) {
+                               $regexTrail = '(?![a-z])/iu';
+                       } else {
+                               $regexTrail = '(?![a-z])/i';
+                       }
+
+                       # Partial regular expressions
+                       $prxDM = '\[\[(\d{1,2})[ _](' . $monthNames . ')]]';
+                       $prxMD = '\[\[(' . $monthNames . ')[ _](\d{1,2})]]';
+                       $prxY = '\[\[(\d{1,4}([ _]BC|))]]';
+                       
+                       # Real regular expressions
+                       $rxDMY = "/{$prxDM} *,? *{$prxY}{$regexTrail}"; 
+                       $rxYDM = "/{$prxY} *,? *{$prxDM}{$regexTrail}";
+                       $rxMDY = "/{$prxMD} *,? *{$prxY}{$regexTrail}";
+                       $rxYMD = "/{$prxY} *,? *{$prxMD}{$regexTrail}";
+                       $rxDM = "/{$prxDM}{$regexTrail}";
+                       $rxMD = "/{$prxMD}{$regexTrail}";
+                       $rxY = "/{$prxY}{$regexTrail}";
+               }
+               
+               # Do replacements
+               # TODO: month capitalisation?
+               if ( $datePreference == 0 ) { 
+                       # no preference
+                       $text = preg_replace( $rxDMY, '[[$2 $1|$1 $2]] [[$3]]', $text);
+                       $text = preg_replace( $rxYDM, '[[$1]] [[$4 $3]]', $text);
+                       $text = preg_replace( $rxMDY, '[[$1 $2]], [[$3]]', $text);
+                       $text = preg_replace( $rxYMD, '[[$1]] [[$3 $4]]', $text);
+                       $text = preg_replace ( $rxDM, '[[$2 $1|$1 $2]]', $text);
+               } else if ( $datePreference == 1 ) {
+                       # MDY preferred
+                       $text = preg_replace( $rxDMY, '[[$2 $1]], [[$3]]', $text);
+                       $text = preg_replace( $rxYDM, '[[$4 $3]], [[$1]]', $text);
+                       $text = preg_replace( $rxMDY, '[[$1 $2]], [[$3]]', $text);
+                       $text = preg_replace( $rxYMD, '[[$3 $4]], [[$1]]', $text);
+                       $text = preg_replace ( $rxDM, '[[$2 $1]]', $text);
+               } else if ( $datePreference == 2 ) {
+                       # DMY preferred
+                       $text = preg_replace( $rxDMY, '[[$2 $1|$1 $2]] [[$3]]', $text);
+                       $text = preg_replace( $rxYDM, '[[$4 $3|$3 $4]] [[$1]]', $text);
+                       $text = preg_replace( $rxMDY, '[[$1 $2|$2 $1]] [[$3]]', $text);
+                       $text = preg_replace( $rxYMD, '[[$3 $4|$4 $3]] [[$1]]', $text);
+                       $text = preg_replace ( $rxDM, '[[$2 $1|$1 $2]]', $text);
+                       $text = preg_replace ( $rxMD, '[[$1 $2|$2 $1]]', $text);
+               } else if ( $datePreference == 3 ) {
+                       # YMD preferred
+                       $text = preg_replace( $rxDMY, '[[$3]] [[$2 $1]]', $text);
+                       $text = preg_replace( $rxYDM, '[[$1]] [[$4 $3]]', $text);
+                       $text = preg_replace( $rxMDY, '[[$3]] [[$1 $2]]', $text);
+                       $text = preg_replace( $rxYMD, '[[$1]] [[$3 $4]]', $text);
+                       $text = preg_replace ( $rxDM, '[[$2 $1]]', $text);
+               }
+               return $text;
+       }
+
+       # For right-to-left language support
+       function isRTL() { return false; }
+
+       function getMagicWords() 
+       {
+               global $wgMagicWordsEn;
+               return $wgMagicWordsEn;
+       }
+
+       # 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 );
+       }
 }
 
 global $IP;
-@include_once( "{$IP}/Language" . ucfirst( $wgLanguageCode ) . ".php" );
+include_once( "{$IP}/Language" . ucfirst( $wgLanguageCode ) . ".php" );
 
 ?>