From 1d6017272668b85e6944039381854a3851b6ae01 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Sun, 13 Jun 2004 01:15:16 +0000 Subject: Merge 1.3.0beta3 from HEAD --- .cvsignore | 1 + PHPTAL-NP-0.7.0/libs/PHPTAL/OutputControl.php | 4 +- RELEASE-NOTES | 15 +- config/index.php | 67 +- includes/Article.php | 517 +++---- includes/Block.php | 42 +- includes/BlockCache.php | 10 +- includes/CacheManager.php | 30 +- includes/Database.php | 32 +- includes/DatabaseFunctions.php | 20 +- includes/DateFormatter.php | 52 +- includes/DefaultSettings.php | 111 +- includes/DifferenceEngine.php | 44 +- includes/EditPage.php | 26 +- includes/Feed.php | 28 +- includes/GlobalFunctions.php | 260 ++-- includes/LinkCache.php | 37 +- includes/Math.php | 4 +- includes/ObjectCache.php | 56 +- includes/PageHistory.php | 22 +- includes/Parser.php | 966 +++++++------ includes/QueryPage.php | 2 +- includes/RawPage.php | 50 +- includes/SearchEngine.php | 11 +- includes/SearchUpdate.php | 6 +- includes/Setup.php | 136 +- includes/SiteStatsUpdate.php | 6 +- includes/Skin.php | 1088 +++++++------- includes/SkinCologneBlue.php | 7 +- includes/SkinNostalgia.php | 3 + includes/SkinPHPTal.php | 264 ++-- includes/SkinStandard.php | 4 +- includes/SpecialAllpages.php | 4 +- includes/SpecialAncientpages.php | 4 +- includes/SpecialContributions.php | 7 +- includes/SpecialDeadendpages.php | 4 +- includes/SpecialListusers.php | 58 +- includes/SpecialLonelypages.php | 42 +- includes/SpecialPage.php | 12 +- includes/SpecialPreferences.php | 2 + includes/SpecialRandompage.php | 6 +- includes/SpecialShortpages.php | 7 +- includes/SpecialStatistics.php | 7 +- includes/SpecialUnusedimages.php | 2 +- includes/SpecialUpload.php | 5 +- includes/SpecialWatchlist.php | 18 +- includes/Title.php | 77 +- includes/ViewCountUpdate.php | 9 +- includes/WatchedItem.php | 18 +- index.php | 4 + languages/Language.php | 1907 +++++++++++-------------- languages/LanguageAf.php | 3 +- languages/LanguageAr.php | 2 +- languages/LanguageBg.php | 3 +- languages/LanguageBn.php | 3 +- languages/LanguageCa.php | 3 +- languages/LanguageCs.php | 3 +- languages/LanguageCy.php | 3 +- languages/LanguageDa.php | 824 ++++++----- languages/LanguageDe.php | 671 ++++----- languages/LanguageEl.php | 2 +- languages/LanguageEo.php | 4 +- languages/LanguageEs.php | 932 ++++++------ languages/LanguageEt.php | 3 +- languages/LanguageFa.php | 3 +- languages/LanguageFi.php | 3 +- languages/LanguageFr.php | 5 +- languages/LanguageFy.php | 3 +- languages/LanguageGa.php | 3 +- languages/LanguageHe.php | 3 +- languages/LanguageHu.php | 3 +- languages/LanguageIa.php | 3 +- languages/LanguageId.php | 2 +- languages/LanguageIt.php | 35 +- languages/LanguageJa.php | 117 +- languages/LanguageKo.php | 3 +- languages/LanguageLa.php | 3 +- languages/LanguageMs.php | 3 +- languages/LanguageNl.php | 409 +++--- languages/LanguageNo.php | 3 +- languages/LanguageOc.php | 3 +- languages/LanguagePl.php | 3 +- languages/LanguagePt.php | 3 +- languages/LanguageRo.php | 3 +- languages/LanguageRu.php | 3 +- languages/LanguageSk.php | 3 +- languages/LanguageSl.php | 3 +- languages/LanguageSq.php | 3 +- languages/LanguageSv.php | 1211 ++++++++-------- languages/LanguageTa.php | 3 +- languages/LanguageTh.php | 3 +- languages/LanguageUk.php | 2 + languages/LanguageUr.php | 2 +- languages/LanguageUtf8.php | 2 +- languages/LanguageYi.php | 2 +- languages/LanguageZh.php | 3 +- maintenance/DiffLanguage.php | 14 +- maintenance/InitialiseMessages.inc | 34 +- maintenance/archives/moveCustomMessages.inc | 15 +- maintenance/commandLine.inc | 69 +- maintenance/convertLinks.inc | 13 +- maintenance/eval.php | 4 +- stylesheets/common.css | 36 +- stylesheets/commonPrint.css | 4 + stylesheets/monobook/main.css | 78 +- stylesheets/monobook/rtl.css | 2 +- stylesheets/wikibits.js | 47 +- stylesheets/wikiprintable.css | 2 +- templates/xhtml_slim.pt | 70 +- 109 files changed, 5557 insertions(+), 5254 deletions(-) diff --git a/.cvsignore b/.cvsignore index c2bf726ed9af..2bd1d29b8672 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1,2 +1,3 @@ LocalSettings.php AdminSettings.php +*~ diff --git a/PHPTAL-NP-0.7.0/libs/PHPTAL/OutputControl.php b/PHPTAL-NP-0.7.0/libs/PHPTAL/OutputControl.php index ce3c3403d629..a62bf9244f45 100644 --- a/PHPTAL-NP-0.7.0/libs/PHPTAL/OutputControl.php +++ b/PHPTAL-NP-0.7.0/libs/PHPTAL/OutputControl.php @@ -65,7 +65,9 @@ class PHPTAL_OutputControl } else { // $this->_buffer .= htmlentities($str); // support for cyrillic strings thanks to Igor E. Poteryaev - $this->_buffer .= htmlentities($str, $this->_quoteStyle, $this->_encoding); + // **** hacked to htmlspecialchars() to avoid messing with text. + // **** PHP prior to 4.3.7 contains bugs that mess up Greek. + $this->_buffer .= htmlspecialchars($str, $this->_quoteStyle, $this->_encoding); } } diff --git a/RELEASE-NOTES b/RELEASE-NOTES index 6f506edac96d..7d40489565b1 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -1,6 +1,6 @@ = MediaWiki release notes = -== Version 1.3.0beta2, 2004-06-05 == +== Version 1.3.0beta3, 2004-06-12 == **** THIS IS A BETA AND MAY STUNT YOUR GROWTH OR KILL YOUR PETS **** @@ -50,6 +50,8 @@ Code and compatibility: * Most image-related code moved to Image.php * More fixes for PHP 4.1.2 (thanks to Asheesh Laroia) * URL encoding fix for anchors +* All languages now available in UTF-8 mode +* Various other fixes === Caveats === @@ -60,6 +62,17 @@ cases, but this is not recommended on live sites. (This must be set for MathML to display properly in Mozilla.) +== Version 1.2.6, 2004-05-24 == +* Spam blocker ($wgSpamRegex - refuses to save edits that match) +* Updated documentation about $wgWhitelistRead +* Ensure that searchindex table is created as MyISAM +* Interwiki cache timeout (memcached) +* Fix uploads on Windows with magic_quotes_gpc +* Some config fixes for Windows (slashes etc) +* Local interwiki URL redirects +* Fixed obscure deletion problem in squid mode on corrupt entries +* Language files updated to remove more hard-coded "Wikipedia" strings + == Version 1.2.5, 2004-05-01 == * Fixed install problem with blank root password * Fixed Special:Emailuser/Username links diff --git a/config/index.php b/config/index.php index b46428795be8..03f66d57eec4 100644 --- a/config/index.php +++ b/config/index.php @@ -18,7 +18,9 @@ # 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # http://www.gnu.org/copyleft/gpl.html +error_reporting( E_ALL ); header( "Content-type: text/html; charset=utf-8" ); +@ini_set( "display_errors", true ); ?> @@ -109,6 +111,8 @@ $IP = ".."; # Just to suppress notices, not for anything useful define( "MEDIAWIKI", true ); define( "MEDIAWIKI_INSTALL", true ); require( "../includes/DefaultSettings.php" ); +require( "../includes/MagicWord.php" ); +require( "../includes/Namespace.php" ); ?>

MediaWiki installation

@@ -159,11 +163,11 @@ require( "../maintenance/archives/moveCustomMessages.inc" ); class ConfigData { function getEncoded( $data ) { # Hackish - global $wgInputEncoding; - if( strcasecmp( $wgInputEncoding, "utf-8" ) == 0 ) { - return $data; - } else { + global $wgUseLatin1; + if( $wgUseLatin1 ) { return utf8_decode( $data ); /* to latin1 wikis */ + } else { + return $data; } } function getSitename() { return $this->getEncoded( $this->Sitename ); } @@ -204,6 +208,35 @@ default: } print "\n"; +$conf->xml = function_exists( "utf8_encode" ); +if( $conf->xml ) { + print "
  • Have XML / Latin1-UTF-8 conversion support.
  • \n"; +} else { + print "
  • XML / Latin1-UTF-8 conversion is missing! Wiki will probably not work.
  • \n"; +} + +$memlimit = ini_get( "memory_limit" ); +$conf->raiseMemory = false; +if( empty( $memlimit ) ) { + print "
  • PHP is configured with no memory_limit.
  • \n"; +} else { + print "
  • PHP's memory_limit is " . htmlspecialchars( $memlimit ) . ". If this is too low, installation may fail! "; + $n = IntVal( $memlimit ); + if( preg_match( '/^([0-9]+)[Mm]$/', trim( $memlimit ), $m ) ) { + $n = IntVal( $m[1] * (1024*1024) ); + } + if( $n < 20*1024*1024 ) { + print "Attempting to raise limit to 20M... "; + if( false === ini_set( "memory_limit", "20M" ) ) { + print "failed."; + } else { + $conf->raiseMemory = true; + print "ok."; + } + } + print "
  • \n"; +} + $conf->zlib = function_exists( "gzencode" ); if( $conf->zlib ) { print "
  • Have zlib support; enabling output compression.
  • \n"; @@ -254,7 +287,7 @@ print "
  • Script URI path: " . htmlspecialchars( $conf->ScriptPath ) . "DBpassword = importPost( "DBpassword" ); $conf->DBpassword2 = importPost( "DBpassword2" ); $conf->RootPW = importPost( "RootPW" ); - $conf->LanguageCode = importPost( "LanguageCode", "en-utf8" ); + $conf->LanguageCode = importPost( "LanguageCode", "en" ); $conf->SysopName = importPost( "SysopName", "WikiSysop" ); $conf->SysopPass = importPost( "SysopPass" ); $conf->SysopPass2 = importPost( "SysopPass2" ); @@ -689,9 +722,11 @@ function writeLocalSettings( $conf ) { $conf->DBmysql4 = @$conf->DBmysql4 ? 'true' : 'false'; $conf->UseImageResize = $conf->UseImageResize ? 'true' : 'false'; $conf->PasswordSender = $conf->EmergencyContact; - if( $conf->LanguageCode == "en-utf8" ) { - $conf->LanguageCode = "en"; - $conf->Encoding = "UTF-8"; + if( preg_match( '/^([a-z]+)-latin1$/', $conf->LanguageCode, $m ) ) { + $conf->LanguageCode = $m[1]; + $conf->Latin1 = true; + } else { + $conf->Latin1 = false; } $zlib = ($conf->zlib ? "" : "# "); $magic = ($conf->ImageMagick ? "" : "# "); @@ -726,6 +761,9 @@ function writeLocalSettings( $conf ) { ini_set( \"include_path\", \"\$IP/includes$sep\$IP/languages$sep\" . ini_get(\"include_path\") ); include_once( \"DefaultSettings.php\" ); +# If PHP's memory limit is very low, some operations may fail. +" . ($conf->raiseMemory ? '' : '# ' ) . "ini_set( 'memory_limit', '20M' );" . " + if ( \$wgCommandLineMode ) { if ( isset( \$_SERVER ) && array_key_exists( 'REQUEST_METHOD', \$_SERVER ) ) { die( \"This script must be run from the command line\\n\" ); @@ -789,7 +827,7 @@ if ( \$wgCommandLineMode ) { \$wgLocalInterwiki = \$wgSitename; \$wgLanguageCode = \"{$slconf['LanguageCode']}\"; -" . ($conf->Encoding ? "\$wgInputEncoding = \$wgOutputEncoding = \"{$slconf['Encoding']}\";" : "" ) . " +\$wgUseLatin1 = " . ($conf->Latin1 ? 'true' : 'false') . ";\n \$wgProxyKey = \"$proxyKey\"; @@ -866,23 +904,24 @@ function getLanguageList() { $wgLanguageCode = "xxx"; function wfLocalUrl( $x ) { return $x; } function wfLocalUrlE( $x ) { return $x; } - require( "../languages/Language.php" ); + require( "../languages/Names.php" ); } $codes = array(); - $latin1 = array( "da", "de", "en", "es", "nl", "sv" ); + $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[$code] = "$code - " . $wgLanguageNames[$code] . " - Unicode"; + $codes[$code.'-latin1'] = "$code - " . $wgLanguageNames[$code] . " - Latin-1"; + } else { + $codes[$code] = "$code - " . $wgLanguageNames[$code]; } } } - $codes["en-utf8"] = "en - English - Unicode"; closedir( $d ); ksort( $codes ); return $codes; diff --git a/includes/Article.php b/includes/Article.php index c9f773198efa..68d54856e4e4 100644 --- a/includes/Article.php +++ b/includes/Article.php @@ -1,11 +1,13 @@ mContentLoaded = false; $this->mCurID = $this->mUser = $this->mCounter = -1; # Not loaded $this->mRedirectedFrom = $this->mUserText = - $this->mTimestamp = $this->mComment = $this->mFileCache = ""; + $this->mTimestamp = $this->mComment = $this->mFileCache = ''; $this->mCountAdjustment = 0; - $this->mTouched = "19700101000000"; + $this->mTouched = '19700101000000'; } - /* static */ function getRevisionText( $row, $prefix = "old_" ) { + /* static */ function getRevisionText( $row, $prefix = 'old_' ) { # Deal with optional compression of archived pages. # This can be done periodically via maintenance/compressOld.php, and # as pages are saved if $wgCompressRevisions is set. - $text = $prefix . "text"; - $flags = $prefix . "flags"; - if( isset( $row->$flags ) && (false !== strpos( $row->$flags, "gzip" ) ) ) { + $text = $prefix . 'text'; + $flags = $prefix . 'flags'; + if( isset( $row->$flags ) && (false !== strpos( $row->$flags, 'gzip' ) ) ) { return gzinflate( $row->$text ); } if( isset( $row->$text ) ) { @@ -48,14 +50,14 @@ class Article { /* static */ function compressRevisionText( &$text ) { global $wgCompressRevisions; if( !$wgCompressRevisions ) { - return ""; + return ''; } - if( !function_exists( "gzdeflate" ) ) { + if( !function_exists( 'gzdeflate' ) ) { wfDebug( "Article::compressRevisionText() -- no zlib support, not compressing\n" ); - return ""; + return ''; } $text = gzdeflate( $text ); - return "gzip"; + return 'gzip'; } # Note that getContent/loadContent may follow redirects if @@ -70,34 +72,34 @@ class Article { $action = $wgRequest->getText( 'action', 'view' ); $section = $wgRequest->getText( 'section' ); - $fname = "Article::getContent"; + $fname = 'Article::getContent'; wfProfileIn( $fname ); if ( 0 == $this->getID() ) { - if ( "edit" == $action ) { + if ( 'edit' == $action ) { wfProfileOut( $fname ); - return ""; # was "newarticletext", now moved above the box) + return ''; # was "newarticletext", now moved above the box) } wfProfileOut( $fname ); - return wfMsg( "noarticletext" ); + return wfMsg( 'noarticletext' ); } else { $this->loadContent( $noredir ); if( # check if we're displaying a [[User talk:x.x.x.x]] anonymous talk page ( $this->mTitle->getNamespace() == Namespace::getTalk( Namespace::getUser()) ) && - preg_match("/^\d{1,3}\.\d{1,3}.\d{1,3}\.\d{1,3}$/",$this->mTitle->getText()) && - $action=="view" + preg_match('/^\d{1,3}\.\d{1,3}.\d{1,3}\.\d{1,3}$/',$this->mTitle->getText()) && + $action=='view' ) { wfProfileOut( $fname ); - return $this->mContent . "\n" .wfMsg("anontalkpagetext"); } + return $this->mContent . "\n" .wfMsg('anontalkpagetext'); } else { - if($action=="edit") { - if($section!="") { - if($section=="new") { + if($action=='edit') { + if($section!='') { + if($section=='new') { wfProfileOut( $fname ); - return ""; + return ''; } # strip NOWIKI etc. to avoid confusion (true-parameter causes HTML @@ -132,18 +134,18 @@ class Article { # split it up by section $secs = preg_split( - "/(^=+.*?=+|^.*?<\/h[1-6].*?" . ">)/mi", + '/(^=+.*?=+|^.*?<\/h[1-6].*?' . '>)/mi', $striptext, -1, PREG_SPLIT_DELIM_CAPTURE); if($section==0) { $rv=$secs[0]; } else { $headline=$secs[$section*2-1]; - preg_match( "/^(=+).*?=+|^.*?<\/h[1-6].*?" . ">/mi",$headline,$matches); + preg_match( '/^(=+).*?=+|^.*?<\/h[1-6].*?' . '>/mi',$headline,$matches); $hlevel=$matches[1]; # translate wiki heading into level - if(strpos($hlevel,"=")!==false) { + if(strpos($hlevel,'=')!==false) { $hlevel=strlen($hlevel); } @@ -154,9 +156,9 @@ class Article { while(!empty($secs[$count*2-1]) && !$break) { $subheadline=$secs[$count*2-1]; - preg_match( "/^(=+).*?=+|^.*?<\/h[1-6].*?" . ">/mi",$subheadline,$matches); + preg_match( '/^(=+).*?=+|^.*?<\/h[1-6].*?' . '>/mi',$subheadline,$matches); $subhlevel=$matches[1]; - if(strpos($subhlevel,"=")!==false) { + if(strpos($subhlevel,'=')!==false) { $subhlevel=strlen($subhlevel); } if($subhlevel > $hlevel) { @@ -181,14 +183,14 @@ class Article { # Load the revision (including cur_text) into this object function loadContent( $noredir = false ) { - global $wgOut, $wgMwRedir, $wgRequest; + global $wgOut, $wgMwRedir, $wgRequest, $wgIsPg; # Query variables :P $oldid = $wgRequest->getVal( 'oldid' ); $redirect = $wgRequest->getVal( 'redirect' ); if ( $this->mContentLoaded ) return; - $fname = "Article::loadContent"; + $fname = 'Article::loadContent'; # Pre-fill content with error message so that if something # fails we'll have something telling us what we intended. @@ -199,17 +201,17 @@ class Article { $t .= ",oldid={$oldid}"; } if ( isset( $redirect ) ) { - $redirect = ($redirect == "no") ? "no" : "yes"; + $redirect = ($redirect == 'no') ? 'no' : 'yes'; $t .= ",redirect={$redirect}"; } - $this->mContent = wfMsg( "missingarticle", $t ); + $this->mContent = wfMsg( 'missingarticle', $t ); if ( ! $oldid ) { # Retrieve current version $id = $this->getID(); if ( 0 == $id ) return; - $sql = "SELECT " . - "cur_text,cur_timestamp,cur_user,cur_user_text,cur_comment,cur_counter,cur_restrictions,cur_touched " . + $sql = 'SELECT ' . + 'cur_text,cur_timestamp,cur_user,cur_user_text,cur_comment,cur_counter,cur_restrictions,cur_touched ' . "FROM cur WHERE cur_id={$id}"; wfDebug( "$sql\n" ); $res = wfQuery( $sql, DB_READ, $fname ); @@ -220,9 +222,9 @@ class Article { $s = wfFetchObject( $res ); # If we got a redirect, follow it (unless we've been told # not to by either the function parameter or the query - if ( ( "no" != $redirect ) && ( false == $noredir ) && + if ( ( 'no' != $redirect ) && ( false == $noredir ) && ( $wgMwRedir->matchStart( $s->cur_text ) ) ) { - if ( preg_match( "/\\[\\[([^\\]\\|]+)[\\]\\|]/", + if ( preg_match( '/\\[\\[([^\\]\\|]+)[\\]\\|]/', $s->cur_text, $m ) ) { $rt = Title::newFromText( $m[1] ); if( $rt ) { @@ -230,7 +232,7 @@ class Article { # Fill the HTTP response "Location" header and ignore # the rest of the page we're on. - if ( $rt->getInterwiki() != "" ) { + if ( $rt->getInterwiki() != '' ) { $wgOut->redirect( $rt->getFullURL() ) ; return; } @@ -240,7 +242,7 @@ class Article { } $rid = $rt->getArticleID(); if ( 0 != $rid ) { - $sql = "SELECT cur_text,cur_timestamp,cur_user,cur_user_text,cur_comment," . + $sql = 'SELECT cur_text,cur_timestamp,cur_user,cur_user_text,cur_comment,' . "cur_counter,cur_restrictions,cur_touched FROM cur WHERE cur_id={$rid}"; $res = wfQuery( $sql, DB_READ, $fname ); @@ -261,12 +263,14 @@ class Article { $this->mCounter = $s->cur_counter; $this->mTimestamp = $s->cur_timestamp; $this->mTouched = $s->cur_touched; - $this->mTitle->mRestrictions = explode( ",", trim( $s->cur_restrictions ) ); + $this->mTitle->mRestrictions = explode( ',', trim( $s->cur_restrictions ) ); $this->mTitle->mRestrictionsLoaded = true; wfFreeResult( $res ); } else { # oldid set, retrieve historical version - $sql = "SELECT old_namespace,old_title,old_text,old_timestamp,old_user,old_user_text,old_comment,old_flags FROM old " . - "WHERE old_id={$oldid}"; + $oldtable=$wgIsPg?'"old"':'old'; + $sql = "SELECT old_namespace,old_title,old_text,old_timestamp,". + "old_user,old_user_text,old_comment,old_flags FROM old ". + "WHERE old_id={$oldid}"; $res = wfQuery( $sql, DB_READ, $fname ); if ( 0 == wfNumRows( $res ) ) { return; @@ -294,14 +298,14 @@ class Article { # Gets the article text without using so many damn globals # Returns false on error function getContentWithoutUsingSoManyDamnGlobals( $oldid = 0, $noredir = false ) { - global $wgMwRedir; + global $wgMwRedir, $wgIsPg; if ( $this->mContentLoaded ) { return $this->mContent; } $this->mContent = false; - $fname = "Article::loadContent"; + $fname = 'Article::loadContent'; if ( ! $oldid ) { # Retrieve current version $id = $this->getID(); @@ -309,8 +313,8 @@ class Article { return false; } - $sql = "SELECT " . - "cur_text,cur_timestamp,cur_user,cur_counter,cur_restrictions,cur_touched " . + $sql = 'SELECT ' . + 'cur_text,cur_timestamp,cur_user,cur_counter,cur_restrictions,cur_touched ' . "FROM cur WHERE cur_id={$id}"; $res = wfQuery( $sql, DB_READ, $fname ); if ( 0 == wfNumRows( $res ) ) { @@ -321,13 +325,13 @@ class Article { # If we got a redirect, follow it (unless we've been told # not to by either the function parameter or the query if ( !$noredir && $wgMwRedir->matchStart( $s->cur_text ) ) { - if ( preg_match( "/\\[\\[([^\\]\\|]+)[\\]\\|]/", + if ( preg_match( '/\\[\\[([^\\]\\|]+)[\\]\\|]/', $s->cur_text, $m ) ) { $rt = Title::newFromText( $m[1] ); - if( $rt && $rt->getInterwiki() == "" && $rt->getNamespace() != Namespace::getSpecial() ) { + if( $rt && $rt->getInterwiki() == '' && $rt->getNamespace() != Namespace::getSpecial() ) { $rid = $rt->getArticleID(); if ( 0 != $rid ) { - $sql = "SELECT cur_text,cur_timestamp,cur_user," . + $sql = 'SELECT cur_text,cur_timestamp,cur_user,' . "cur_counter,cur_restrictions,cur_touched FROM cur WHERE cur_id={$rid}"; $res = wfQuery( $sql, DB_READ, $fname ); @@ -350,7 +354,8 @@ class Article { $this->mTitle->mRestrictionsLoaded = true; wfFreeResult( $res ); } else { # oldid set, retrieve historical version - $sql = "SELECT old_text,old_timestamp,old_user,old_flags FROM old " . + $oldtable=$wgIsPg?'"old"':'old'; + $sql = "SELECT old_text,old_timestamp,old_user,old_flags FROM $oldtable " . "WHERE old_id={$oldid}"; $res = wfQuery( $sql, DB_READ, $fname ); if ( 0 == wfNumRows( $res ) ) { @@ -380,7 +385,7 @@ class Article { { if ( -1 == $this->mCounter ) { $id = $this->getID(); - $this->mCounter = wfGetSQL( "cur", "cur_counter", "cur_id={$id}" ); + $this->mCounter = wfGetSQL( 'cur', 'cur_counter', "cur_id={$id}" ); } return $this->mCounter; } @@ -394,7 +399,7 @@ class Article { if ( 0 != $this->mTitle->getNamespace() ) { return 0; } if ( $wgMwRedir->matchStart( $text ) ) { return 0; } - $token = ($wgUseCommaCount ? "," : "[[" ); + $token = ($wgUseCommaCount ? ',' : '[[' ); if ( false === strstr( $text, $token ) ) { return 0; } return 1; } @@ -407,10 +412,10 @@ class Article { global $wgOut; if ( -1 != $this->mUser ) return; - $sql = "SELECT cur_user,cur_user_text,cur_timestamp," . - "cur_comment,cur_minor_edit FROM cur WHERE " . - "cur_id=" . $this->getID(); - $res = wfQuery( $sql, DB_READ, "Article::loadLastEdit" ); + $sql = 'SELECT cur_user,cur_user_text,cur_timestamp,' . + 'cur_comment,cur_minor_edit FROM cur WHERE ' . + 'cur_id=' . $this->getID(); + $res = wfQuery( $sql, DB_READ, 'Article::loadLastEdit' ); if ( wfNumRows( $res ) > 0 ) { $s = wfFetchObject( $res ); @@ -454,7 +459,7 @@ class Article { function getContributors($limit = 0, $offset = 0) { - $fname = "Article::getContributors"; + $fname = 'Article::getContributors'; # XXX: this is expensive; cache this info somewhere. @@ -462,19 +467,19 @@ class Article { $contribs = array(); - $sql = "SELECT old.old_user, old.old_user_text, " . - " user.user_real_name, MAX(old.old_timestamp) as timestamp" . - " FROM old, user " . - " WHERE old.old_user = user.user_id " . - " AND old.old_namespace = " . $title->getNamespace() . - " AND old.old_title = \"" . $title->getDBkey() . "\"" . - " AND old.old_user != 0 " . - " AND old.old_user != " . $this->getUser() . - " GROUP BY old.old_user " . - " ORDER BY timestamp DESC "; + $sql = 'SELECT old.old_user, old.old_user_text, ' . + ' user.user_real_name, MAX(old.old_timestamp) as timestamp' . + ' FROM old, user ' . + ' WHERE old.old_user = user.user_id ' . + ' AND old.old_namespace = ' . $title->getNamespace() . + ' AND old.old_title = "' . $title->getDBkey() . '"' . + ' AND old.old_user != 0 ' . + ' AND old.old_user != ' . $this->getUser() . + ' GROUP BY old.old_user ' . + ' ORDER BY timestamp DESC '; if ($limit > 0) { - $sql .= " LIMIT $limit"; + $sql .= ' LIMIT '.$limit; } $res = wfQuery($sql, DB_READ, $fname); @@ -486,11 +491,11 @@ class Article { # Count anonymous users - $res = wfQuery("SELECT COUNT(*) AS cnt " . - " FROM old " . - " WHERE old_namespace = " . $title->getNamespace() . + $res = wfQuery('SELECT COUNT(*) AS cnt ' . + ' FROM old ' . + ' WHERE old_namespace = ' . $title->getNamespace() . " AND old_title = '" . $title->getDBkey() . "'" . - " AND old_user = 0 ", DB_READ, $fname); + ' AND old_user = 0 ', DB_READ, $fname); while ( $line = wfFetchObject( $res ) ) { $contribs[0] = array($line->cnt, 'Anonymous'); @@ -507,7 +512,7 @@ class Article { global $wgUser, $wgOut, $wgLang, $wgRequest; global $wgLinkCache, $IP, $wgEnableParserCache; - $fname = "Article::view"; + $fname = 'Article::view'; wfProfileIn( $fname ); # Get variables from query string :P @@ -515,7 +520,7 @@ class Article { $diff = $wgRequest->getVal( 'diff' ); $wgOut->setArticleFlag( true ); - $wgOut->setRobotpolicy( "index,follow" ); + $wgOut->setRobotpolicy( 'index,follow' ); # If we got diff and oldid in the query, we want to see a # diff page instead of the article. @@ -540,7 +545,7 @@ class Article { } # Should the parser cache be used? - if ( $wgEnableParserCache && intval($wgUser->getOption( "stubthreshold" )) == 0 && empty( $oldid ) ) { + if ( $wgEnableParserCache && intval($wgUser->getOption( 'stubthreshold' )) == 0 && empty( $oldid ) ) { $pcache = true; } else { $pcache = false; @@ -568,13 +573,13 @@ class Article { if ( !empty( $oldid ) ) { $this->setOldSubtitle(); - $wgOut->setRobotpolicy( "noindex,follow" ); + $wgOut->setRobotpolicy( 'noindex,follow' ); } - if ( "" != $this->mRedirectedFrom ) { + if ( '' != $this->mRedirectedFrom ) { $sk = $wgUser->getSkin(); - $redir = $sk->makeKnownLink( $this->mRedirectedFrom, "", - "redirect=no" ); - $s = wfMsg( "redirectedfrom", $redir ); + $redir = $sk->makeKnownLink( $this->mRedirectedFrom, '', + 'redirect=no' ); + $s = wfMsg( 'redirectedfrom', $redir ); $wgOut->setSubtitle( $s ); # Can't cache redirects @@ -587,9 +592,9 @@ class Article { # XXX: use $this->mTitle->usCssJsSubpage() when php is fixed/ a workaround is found if ( $this->mTitle->getNamespace() == Namespace::getUser() && - preg_match("/\\/[\\w]+\\.(css|js)$/", $this->mTitle->getDBkey()) + preg_match('/\\/[\\w]+\\.(css|js)$/', $this->mTitle->getDBkey()) ) { - $wgOut->addWikiText( wfMsg('usercssjs')); + $wgOut->addWikiText( wfMsg('clearyourcache')); $wgOut->addHTML( '
    '.htmlspecialchars($this->mContent)."\n
    " ); } else if ( $pcache ) { $wgOut->addWikiText( $text, true, $this ); @@ -614,9 +619,9 @@ class Article { /* private */ function insertNewArticle( $text, $summary, $isminor, $watchthis ) { global $wgOut, $wgUser, $wgLinkCache, $wgMwRedir; - global $wgUseSquid, $wgDeferredUpdateList, $wgInternalServer; + global $wgUseSquid, $wgDeferredUpdateList, $wgInternalServer, $wgIsPg, $wgIsMySQL; - $fname = "Article::insertNewArticle"; + $fname = 'Article::insertNewArticle'; $this->mCountAdjustment = $this->isCountable( $text ); @@ -629,12 +634,23 @@ class Article { $now = wfTimestampNow(); $won = wfInvertTimestamp( $now ); wfSeedRandom(); - $rand = number_format( mt_rand() / mt_getrandmax(), 12, ".", "" ); + $rand = number_format( mt_rand() / mt_getrandmax(), 12, '.', '' ); + + if ($wgIsPg) { + $cur_id_column="cur_id,"; + $cur_id=wfGetSQL(""," nextval('cur_cur_id_seq')"); + $cur_id_value="{$cur_id},"; + } else { + $cur_id_column=""; + $cur_id=""; + $cur_id_value=""; + } + $isminor = ( $isminor && $wgUser->getID() ) ? 1 : 0; - $sql = "INSERT INTO cur (cur_namespace,cur_title,cur_text," . - "cur_comment,cur_user,cur_timestamp,cur_minor_edit,cur_counter," . - "cur_restrictions,cur_user_text,cur_is_redirect," . - "cur_is_new,cur_random,cur_touched,inverse_timestamp) VALUES ({$ns},'" . wfStrencode( $ttl ) . "', '" . + $sql = "INSERT INTO cur ({$cur_id_column}cur_namespace,cur_title,cur_text," . + 'cur_comment,cur_user,cur_timestamp,cur_minor_edit,cur_counter,' . + 'cur_restrictions,cur_user_text,cur_is_redirect,' . + "cur_is_new,cur_random,cur_touched,inverse_timestamp) VALUES ({$cur_id_value}{$ns},'" . wfStrencode( $ttl ) . "', '" . wfStrencode( $text ) . "', '" . wfStrencode( $summary ) . "', '" . $wgUser->getID() . "', '{$now}', " . @@ -642,7 +658,7 @@ class Article { wfStrencode( $wgUser->getName() ) . "', $redir, 1, $rand, '{$now}', '{$won}')"; $res = wfQuery( $sql, DB_WRITE, $fname ); - $newid = wfInsertId(); + $newid = $wgIsPg?$cur_id:wfInsertId(); $this->mTitle->resetArticleID( $newid ); Article::onArticleCreate( $this->mTitle ); @@ -664,16 +680,16 @@ class Article { # standard deferred updates $this->editUpdates( $text ); - $this->showArticle( $text, wfMsg( "newarticle" ) ); + $this->showArticle( $text, wfMsg( 'newarticle' ) ); } /* Side effects: loads last edit */ - function getTextOfLastEditWithSectionReplacedOrAdded($section, $text, $summary = ""){ + function getTextOfLastEditWithSectionReplacedOrAdded($section, $text, $summary = ''){ $this->loadLastEdit(); $oldtext = $this->getContent( true ); - if ($section != "") { - if($section=="new") { + if ($section != '') { + if($section=='new') { if($summary) $subject="== {$summary} ==\n\n"; $text=$oldtext."\n\n".$subject.$text; } else { @@ -689,7 +705,7 @@ class Article { # split it up # Unfortunately we can't simply do a preg_replace because that might # replace the wrong section, so we have to use the section counter instead - $secs=preg_split("/(^=+.*?=+|^.*?<\/h[1-6].*?" . ">)/mi", + $secs=preg_split('/(^=+.*?=+|^.*?<\/h[1-6].*?' . '>)/mi', $oldtext,-1,PREG_SPLIT_DELIM_CAPTURE); $secs[$section*2]=$text."\n\n"; // replace with edited @@ -701,30 +717,30 @@ class Article { # be erased, as the mother section has been replaced with # the text of all subsections. $headline=$secs[$section*2-1]; - preg_match( "/^(=+).*?=+|^.*?<\/h[1-6].*?" . ">/mi",$headline,$matches); + preg_match( '/^(=+).*?=+|^.*?<\/h[1-6].*?' . '>/mi',$headline,$matches); $hlevel=$matches[1]; # determine headline level for wikimarkup headings - if(strpos($hlevel,"=")!==false) { + if(strpos($hlevel,'=')!==false) { $hlevel=strlen($hlevel); } - $secs[$section*2-1]=""; // erase old headline + $secs[$section*2-1]=''; // erase old headline $count=$section+1; $break=false; while(!empty($secs[$count*2-1]) && !$break) { $subheadline=$secs[$count*2-1]; preg_match( - "/^(=+).*?=+|^.*?<\/h[1-6].*?" . ">/mi",$subheadline,$matches); + '/^(=+).*?=+|^.*?<\/h[1-6].*?' . '>/mi',$subheadline,$matches); $subhlevel=$matches[1]; - if(strpos($subhlevel,"=")!==false) { + if(strpos($subhlevel,'=')!==false) { $subhlevel=strlen($subhlevel); } if($subhlevel > $hlevel) { // erase old subsections - $secs[$count*2-1]=""; - $secs[$count*2]=""; + $secs[$count*2-1]=''; + $secs[$count*2]=''; } if($subhlevel <= $hlevel) { $break=true; @@ -734,7 +750,7 @@ class Article { } } - $text=join("",$secs); + $text=join('',$secs); # reinsert the stuff that we stripped out earlier $text=$parser->unstrip($text,$striparray); $text=$parser->unstripNoWiki($text,$striparray); @@ -744,16 +760,17 @@ class Article { return $text; } - function updateArticle( $text, $summary, $minor, $watchthis, $forceBot = false, $sectionanchor = "" ) + function updateArticle( $text, $summary, $minor, $watchthis, $forceBot = false, $sectionanchor = '' ) { global $wgOut, $wgUser, $wgLinkCache; global $wgDBtransactions, $wgMwRedir; global $wgUseSquid, $wgInternalServer; - $fname = "Article::updateArticle"; + global $wgIsPg; + $fname = 'Article::updateArticle'; if ( $this->mMinorEdit ) { $me1 = 1; } else { $me1 = 0; } if ( $minor && $wgUser->getID() ) { $me2 = 1; } else { $me2 = 0; } - if ( preg_match( "/^((" . $wgMwRedir->getBaseRegex() . ")[^\\n]+)/i", $text, $m ) ) { + if ( preg_match( "/^((" . $wgMwRedir->getBaseRegex() . ')[^\\n]+)/i', $text, $m ) ) { $redir = 1; $text = $m[1] . "\n"; # Remove all content but redirect } @@ -764,7 +781,7 @@ class Article { # Update article, but only if changed. if( $wgDBtransactions ) { - $sql = "BEGIN"; + $sql = 'BEGIN'; wfQuery( $sql, DB_WRITE ); } $oldtext = $this->getContent( true ); @@ -793,9 +810,22 @@ class Article { # This overwrites $oldtext if revision compression is on $flags = Article::compressRevisionText( $oldtext ); - $sql = "INSERT INTO old (old_namespace,old_title,old_text," . - "old_comment,old_user,old_user_text,old_timestamp," . - "old_minor_edit,inverse_timestamp,old_flags) VALUES (" . + $oldtable=$wgIsPg?'"old"':'old'; + if ($wgIsPg) { + $oldtable='"old"'; + $old_id_column='old_id,'; + $old_id=wfGetSQL(""," nextval('old_old_id_seq')"); + $old_id_value=$old_id.','; + } else { + $oldtable='old'; + $old_id_column=''; + $old_id_value=''; + } + + $sql = "INSERT INTO $oldtable ({$old_id_column}old_namespace,old_title,old_text," . + 'old_comment,old_user,old_user_text,old_timestamp,' . + 'old_minor_edit,inverse_timestamp,old_flags) VALUES (' . + $old_id_value. $this->mTitle->getNamespace() . ", '" . wfStrencode( $this->mTitle->getDBkey() ) . "', '" . wfStrencode( $oldtext ) . "', '" . @@ -805,7 +835,8 @@ class Article { $this->getTimestamp() . "', " . $me1 . ", '" . wfInvertTimestamp( $this->getTimestamp() ) . "','$flags')"; $res = wfQuery( $sql, DB_WRITE, $fname ); - $oldid = wfInsertID( $res ); + + $oldid = $wgIsPg?$old_id:wfInsertId( $res ); $bot = (int)($wgUser->isBot() || $forceBot); RecentChange::notifyEdit( $now, $this->mTitle, $me2, $wgUser, $summary, @@ -814,7 +845,7 @@ class Article { } if( $wgDBtransactions ) { - $sql = "COMMIT"; + $sql = 'COMMIT'; wfQuery( $sql, DB_WRITE ); } @@ -849,7 +880,7 @@ class Article { $u->doUpdate(); } - $this->showArticle( $text, wfMsg( "updated" ), $sectionanchor ); + $this->showArticle( $text, wfMsg( 'updated' ), $sectionanchor ); return true; } @@ -872,9 +903,9 @@ class Article { $wgOut->addWikiText( $text ); if( $wgMwRedir->matchStart( $text ) ) - $r = "redirect=no"; + $r = 'redirect=no'; else - $r = ""; + $r = ''; $wgOut->redirect( $this->mTitle->getFullURL( $r ).$sectionanchor ); } @@ -886,7 +917,7 @@ class Article { global $wgDeferredUpdateList; if ( 0 == $wgUser->getID() ) { - $wgOut->errorpage( "watchnologin", "watchnologintext" ); + $wgOut->errorpage( 'watchnologin', 'watchnologintext' ); return; } if ( wfReadOnly() ) { @@ -898,16 +929,16 @@ class Article { else $wgUser->removeWatch( $this->mTitle ); - $wgOut->setPagetitle( wfMsg( $add ? "addedwatch" : "removedwatch" ) ); - $wgOut->setRobotpolicy( "noindex,follow" ); + $wgOut->setPagetitle( wfMsg( $add ? 'addedwatch' : 'removedwatch' ) ); + $wgOut->setRobotpolicy( 'noindex,follow' ); $sk = $wgUser->getSkin() ; $link = $this->mTitle->getPrefixedText(); if($add) - $text = wfMsg( "addedwatchtext", $link ); + $text = wfMsg( 'addedwatchtext', $link ); else - $text = wfMsg( "removedwatchtext", $link ); + $text = wfMsg( 'removedwatchtext', $link ); $wgOut->addWikiText( $text ); $up = new UserUpdate(); @@ -921,7 +952,7 @@ class Article { $this->watch( false ); } - function protect( $limit = "sysop" ) + function protect( $limit = 'sysop' ) { global $wgUser, $wgOut, $wgRequest; @@ -935,7 +966,7 @@ class Article { } $id = $this->mTitle->getArticleID(); if ( 0 == $id ) { - $wgOut->fatalError( wfMsg( "badarticleerror" ) ); + $wgOut->fatalError( wfMsg( 'badarticleerror' ) ); return; } @@ -946,50 +977,50 @@ class Article { $sql = "UPDATE cur SET cur_touched='" . wfTimestampNow() . "'," . "cur_restrictions='{$limit}' WHERE cur_id={$id}"; - wfQuery( $sql, DB_WRITE, "Article::protect" ); + wfQuery( $sql, DB_WRITE, 'Article::protect' ); - $log = new LogPage( wfMsg( "protectlogpage" ), wfMsg( "protectlogtext" ) ); + $log = new LogPage( wfMsg( 'protectlogpage' ), wfMsg( 'protectlogtext' ) ); if ( $limit === "" ) { - $log->addEntry( wfMsg( "unprotectedarticle", $this->mTitle->getPrefixedText() ), $reason ); + $log->addEntry( wfMsg( 'unprotectedarticle', $this->mTitle->getPrefixedText() ), $reason ); } else { - $log->addEntry( wfMsg( "protectedarticle", $this->mTitle->getPrefixedText() ), $reason ); + $log->addEntry( wfMsg( 'protectedarticle', $this->mTitle->getPrefixedText() ), $reason ); } $wgOut->redirect( $this->mTitle->getFullURL() ); return; } else { - $reason = htmlspecialchars( wfMsg( "protectreason" ) ); - return $this->confirmProtect( "", $reason, $limit ); + $reason = htmlspecialchars( wfMsg( 'protectreason' ) ); + return $this->confirmProtect( '', $reason, $limit ); } } # Output protection confirmation dialog - function confirmProtect( $par, $reason, $limit = "sysop" ) + function confirmProtect( $par, $reason, $limit = 'sysop' ) { global $wgOut; wfDebug( "Article::confirmProtect\n" ); $sub = htmlspecialchars( $this->mTitle->getPrefixedText() ); - $wgOut->setRobotpolicy( "noindex,nofollow" ); + $wgOut->setRobotpolicy( 'noindex,nofollow' ); - $check = ""; - $protcom = ""; + $check = ''; + $protcom = ''; - if ( $limit === "" ) { - $wgOut->setSubtitle( wfMsg( "unprotectsub", $sub ) ); - $wgOut->addWikiText( wfMsg( "confirmunprotecttext" ) ); - $check = htmlspecialchars( wfMsg( "confirmunprotect" ) ); - $protcom = htmlspecialchars( wfMsg( "unprotectcomment" ) ); - $formaction = $this->mTitle->escapeLocalURL( "action=unprotect" . $par ); + if ( $limit === '' ) { + $wgOut->setSubtitle( wfMsg( 'unprotectsub', $sub ) ); + $wgOut->addWikiText( wfMsg( 'confirmunprotecttext' ) ); + $check = htmlspecialchars( wfMsg( 'confirmunprotect' ) ); + $protcom = htmlspecialchars( wfMsg( 'unprotectcomment' ) ); + $formaction = $this->mTitle->escapeLocalURL( 'action=unprotect' . $par ); } else { - $wgOut->setSubtitle( wfMsg( "protectsub", $sub ) ); - $wgOut->addWikiText( wfMsg( "confirmprotecttext" ) ); - $check = htmlspecialchars( wfMsg( "confirmprotect" ) ); - $protcom = htmlspecialchars( wfMsg( "protectcomment" ) ); - $formaction = $this->mTitle->escapeLocalURL( "action=protect" . $par ); + $wgOut->setSubtitle( wfMsg( 'protectsub', $sub ) ); + $wgOut->addWikiText( wfMsg( 'confirmprotecttext' ) ); + $check = htmlspecialchars( wfMsg( 'confirmprotect' ) ); + $protcom = htmlspecialchars( wfMsg( 'protectcomment' ) ); + $formaction = $this->mTitle->escapeLocalURL( 'action=protect' . $par ); } - $confirm = htmlspecialchars( wfMsg( "confirm" ) ); + $confirm = htmlspecialchars( wfMsg( 'confirm' ) ); $wgOut->addHTML( "
    @@ -1027,14 +1058,14 @@ class Article { function unprotect() { - return $this->protect( "" ); + return $this->protect( '' ); } # UI entry point for page deletion function delete() { - global $wgUser, $wgOut, $wgMessageCache, $wgRequest; - $fname = "Article::delete"; + global $wgUser, $wgOut, $wgMessageCache, $wgRequest, $wgIsPg; + $fname = 'Article::delete'; $confirm = $wgRequest->getBool( 'wpConfirm' ) && $wgRequest->wasPosted(); $reason = $wgRequest->getText( 'wpReason' ); @@ -1051,10 +1082,10 @@ class Article { } # Better double-check that it hasn't been deleted yet! - $wgOut->setPagetitle( wfMsg( "confirmdelete" ) ); - if ( ( "" == trim( $this->mTitle->getText() ) ) + $wgOut->setPagetitle( wfMsg( 'confirmdelete' ) ); + if ( ( '' == trim( $this->mTitle->getText() ) ) or ( $this->mTitle->getArticleId() == 0 ) ) { - $wgOut->fatalError( wfMsg( "cannotdelete" ) ); + $wgOut->fatalError( wfMsg( 'cannotdelete' ) ); return; } @@ -1069,12 +1100,13 @@ class Article { $ns = $this->mTitle->getNamespace(); $title = $this->mTitle->getDBkey(); $etitle = wfStrencode( $title ); - $sql = "SELECT old_text,old_flags FROM old WHERE old_namespace=$ns and old_title='$etitle' ORDER BY inverse_timestamp LIMIT 1"; + $oldtable=$wgIsPg?'"old"':'old'; + $sql = "SELECT old_text,old_flags FROM $oldtable WHERE old_namespace=$ns and old_title='$etitle' ORDER BY inverse_timestamp LIMIT 1"; $res = wfQuery( $sql, DB_READ, $fname ); if( ($old=wfFetchObject($res)) && !$confirm ) { $skin=$wgUser->getSkin(); - $wgOut->addHTML("".wfMsg("historywarning")); - $wgOut->addHTML( $skin->historyLink() .""); + $wgOut->addHTML(''.wfMsg('historywarning')); + $wgOut->addHTML( $skin->historyLink() .''); } $sql="SELECT cur_text FROM cur WHERE cur_namespace=$ns and cur_title='$etitle'"; @@ -1099,31 +1131,31 @@ class Article { # this should not happen, since it is not possible to store an empty, new # page. Let's insert a standard text in case it does, though - if($length == 0 && $reason === "") { - $reason = wfMsg("exblank"); + if($length == 0 && $reason === '') { + $reason = wfMsg('exblank'); } - if($length < 500 && $reason === "") { + if($length < 500 && $reason === '') { # comment field=255, let's grep the first 150 to have some user # space left $text=substr($text,0,150); # let's strip out newlines and HTML tags - $text=preg_replace("/\"/","'",$text); - $text=preg_replace("/\/",">",$text); - $text=preg_replace("/[\n\r]/","",$text); + $text=preg_replace('/\"/',"'",$text); + $text=preg_replace('/\/','>',$text); + $text=preg_replace("/[\n\r]/",'',$text); if(!$blanked) { - $reason=wfMsg("excontent"). " '".$text; + $reason=wfMsg('excontent'). " '".$text; } else { - $reason=wfMsg("exbeforeblank") . " '".$text; + $reason=wfMsg('exbeforeblank') . " '".$text; } - if($length>150) { $reason .= "..."; } # we've only pasted part of the text + if($length>150) { $reason .= '...'; } # we've only pasted part of the text $reason.="'"; } } - return $this->confirmDelete( "", $reason ); + return $this->confirmDelete( '', $reason ); } # Output deletion confirmation dialog @@ -1134,15 +1166,15 @@ class Article { wfDebug( "Article::confirmDelete\n" ); $sub = htmlspecialchars( $this->mTitle->getPrefixedText() ); - $wgOut->setSubtitle( wfMsg( "deletesub", $sub ) ); - $wgOut->setRobotpolicy( "noindex,nofollow" ); - $wgOut->addWikiText( wfMsg( "confirmdeletetext" ) ); + $wgOut->setSubtitle( wfMsg( 'deletesub', $sub ) ); + $wgOut->setRobotpolicy( 'noindex,nofollow' ); + $wgOut->addWikiText( wfMsg( 'confirmdeletetext' ) ); - $formaction = $this->mTitle->escapeLocalURL( "action=delete" . $par ); + $formaction = $this->mTitle->escapeLocalURL( 'action=delete' . $par ); - $confirm = htmlspecialchars( wfMsg( "confirm" ) ); - $check = htmlspecialchars( wfMsg( "confirmcheck" ) ); - $delcom = htmlspecialchars( wfMsg( "deletecomment" ) ); + $confirm = htmlspecialchars( wfMsg( 'confirm' ) ); + $check = htmlspecialchars( wfMsg( 'confirmcheck' ) ); + $delcom = htmlspecialchars( wfMsg( 'deletecomment' ) ); $wgOut->addHTML( " @@ -1182,26 +1214,26 @@ class Article { function doDelete( $reason ) { global $wgOut, $wgUser, $wgLang; - $fname = "Article::doDelete"; + $fname = 'Article::doDelete'; wfDebug( "$fname\n" ); if ( $this->doDeleteArticle( $reason ) ) { $deleted = $this->mTitle->getPrefixedText(); - $wgOut->setPagetitle( wfMsg( "actioncomplete" ) ); - $wgOut->setRobotpolicy( "noindex,nofollow" ); + $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) ); + $wgOut->setRobotpolicy( 'noindex,nofollow' ); $sk = $wgUser->getSkin(); $loglink = $sk->makeKnownLink( $wgLang->getNsText( Namespace::getWikipedia() ) . - ":" . wfMsg( "dellogpage" ), wfMsg( "deletionlog" ) ); + ':' . wfMsg( 'dellogpage' ), wfMsg( 'deletionlog' ) ); $text = wfMsg( "deletedtext", $deleted, $loglink ); - $wgOut->addHTML( "

    " . $text . "

    \n" ); + $wgOut->addHTML( '

    ' . $text . "

    \n" ); $wgOut->returnToMain( false ); } else { - $wgOut->fatalError( wfMsg( "cannotdelete" ) ); + $wgOut->fatalError( wfMsg( 'cannotdelete' ) ); } } @@ -1213,14 +1245,14 @@ class Article { global $wgUser, $wgLang; global $wgUseSquid, $wgDeferredUpdateList, $wgInternalServer; - $fname = "Article::doDeleteArticle"; - wfDebug( "$fname\n" ); + $fname = 'Article::doDeleteArticle'; + wfDebug( $fname."\n" ); $ns = $this->mTitle->getNamespace(); $t = wfStrencode( $this->mTitle->getDBkey() ); $id = $this->mTitle->getArticleID(); - if ( "" == $t || $id == 0 ) { + if ( '' == $t || $id == 0 ) { return false; } @@ -1233,7 +1265,7 @@ class Article { if ( $wgUseSquid ) { $urls = array( $this->mTitle->getInternalURL(), - $this->mTitle->getInternalURL( "history" ) + $this->mTitle->getInternalURL( 'history' ) ); foreach ( $linksTo as $linkTo ) { $urls[] = $linkTo->getInternalURL(); @@ -1248,17 +1280,17 @@ class Article { Title::touchArray( $linksTo ); # Move article and history to the "archive" table - $sql = "INSERT INTO archive (ar_namespace,ar_title,ar_text," . - "ar_comment,ar_user,ar_user_text,ar_timestamp,ar_minor_edit," . - "ar_flags) SELECT cur_namespace,cur_title,cur_text,cur_comment," . - "cur_user,cur_user_text,cur_timestamp,cur_minor_edit,0 FROM cur " . + $sql = 'INSERT INTO archive (ar_namespace,ar_title,ar_text,' . + 'ar_comment,ar_user,ar_user_text,ar_timestamp,ar_minor_edit,' . + 'ar_flags) SELECT cur_namespace,cur_title,cur_text,cur_comment,' . + 'cur_user,cur_user_text,cur_timestamp,cur_minor_edit,0 FROM cur ' . "WHERE cur_namespace={$ns} AND cur_title='{$t}'"; wfQuery( $sql, DB_WRITE, $fname ); - $sql = "INSERT INTO archive (ar_namespace,ar_title,ar_text," . - "ar_comment,ar_user,ar_user_text,ar_timestamp,ar_minor_edit," . - "ar_flags) SELECT old_namespace,old_title,old_text,old_comment," . - "old_user,old_user_text,old_timestamp,old_minor_edit,old_flags " . + $sql = 'INSERT INTO archive (ar_namespace,ar_title,ar_text,' . + 'ar_comment,ar_user,ar_user_text,ar_timestamp,ar_minor_edit,' . + 'ar_flags) SELECT old_namespace,old_title,old_text,old_comment,' . + 'old_user,old_user_text,old_timestamp,old_minor_edit,old_flags ' . "FROM old WHERE old_namespace={$ns} AND old_title='{$t}'"; wfQuery( $sql, DB_WRITE, $fname ); @@ -1281,11 +1313,11 @@ class Article { Article::onArticleDelete( $this->mTitle ); - $sql = "INSERT INTO brokenlinks (bl_from,bl_to) VALUES "; + $sql = 'INSERT INTO brokenlinks (bl_from,bl_to) VALUES '; $first = true; foreach ( $linksTo as $titleObj ) { - if ( ! $first ) { $sql .= ","; } + if ( ! $first ) { $sql .= ','; } $first = false; # Get article ID. Efficient because it was loaded into the cache by getLinksTo(). $linkID = $titleObj->getArticleID(); @@ -1310,9 +1342,9 @@ class Article { $sql = "DELETE FROM categorylinks WHERE cl_from={$id}"; wfQuery( $sql, DB_WRITE, $fname ); - $log = new LogPage( wfMsg( "dellogpage" ), wfMsg( "dellogpagetext" ) ); + $log = new LogPage( wfMsg( 'dellogpage' ), wfMsg( 'dellogpagetext' ) ); $art = $this->mTitle->getPrefixedText(); - $log->addEntry( wfMsg( "deletedarticle", $art ), $reason ); + $log->addEntry( wfMsg( 'deletedarticle', $art ), $reason ); # Clear the cached article id so the interface doesn't act like we exist $this->mTitle->resetArticleID( 0 ); @@ -1322,7 +1354,7 @@ class Article { function rollback() { - global $wgUser, $wgLang, $wgOut, $wgRequest; + global $wgUser, $wgLang, $wgOut, $wgRequest, $wgIsMySQL, $wgIsPg; if ( ! $wgUser->isSysop() ) { $wgOut->sysopRequired(); @@ -1341,11 +1373,12 @@ class Article { $n = $this->mTitle->getNamespace(); # Get the last editor - $sql = "SELECT cur_id,cur_user,cur_user_text,cur_comment FROM cur WHERE cur_title='{$tt}' AND cur_namespace={$n}"; + $sql = 'SELECT cur_id,cur_user,cur_user_text,cur_comment ' . + "FROM cur WHERE cur_title='{$tt}' AND cur_namespace={$n}"; $res = wfQuery( $sql, DB_READ ); if( ($x = wfNumRows( $res )) != 1 ) { # Something wrong - $wgOut->addHTML( wfMsg( "notanarticle" ) ); + $wgOut->addHTML( wfMsg( 'notanarticle' ) ); return; } $s = wfFetchObject( $res ); @@ -1353,48 +1386,51 @@ class Article { $uid = $s->cur_user; $pid = $s->cur_id; - $from = str_replace( '_', ' ', $wgRequest->getVal( "from" ) ); + $from = str_replace( '_', ' ', $wgRequest->getVal( 'from' ) ); if( $from != $s->cur_user_text ) { - $wgOut->setPageTitle(wfmsg("rollbackfailed")); - $wgOut->addWikiText( wfMsg( "alreadyrolled", + $wgOut->setPageTitle(wfmsg('rollbackfailed')); + $wgOut->addWikiText( wfMsg( 'alreadyrolled', htmlspecialchars( $this->mTitle->getPrefixedText()), htmlspecialchars( $from ), htmlspecialchars( $s->cur_user_text ) ) ); - if($s->cur_comment != "") { + if($s->cur_comment != '') { $wgOut->addHTML( - wfMsg("editcomment", + wfMsg('editcomment', htmlspecialchars( $s->cur_comment ) ) ); } return; } # Get the last edit not by this guy - $sql = "SELECT old_text,old_user,old_user_text,old_timestamp,old_flags - FROM old USE INDEX (name_title_timestamp) - WHERE old_namespace={$n} AND old_title='{$tt}' - AND (old_user <> {$uid} OR old_user_text <> '{$ut}') - ORDER BY inverse_timestamp LIMIT 1"; + + $use_index=$wgIsMySQL?"USE INDEX (name_title_timestamp)":""; + $oldtable=$wgIsPg?'"old"':'old'; + $sql = 'SELECT old_text,old_user,old_user_text,old_timestamp,old_flags ' . + "FROM $oldtable {$use_index}" . + "WHERE old_namespace={$n} AND old_title='{$tt}'" . + "AND (old_user <> {$uid} OR old_user_text <> '{$ut}')" . + 'ORDER BY inverse_timestamp LIMIT 1'; $res = wfQuery( $sql, DB_READ ); if( wfNumRows( $res ) != 1 ) { # Something wrong - $wgOut->setPageTitle(wfMsg("rollbackfailed")); - $wgOut->addHTML( wfMsg( "cantrollback" ) ); + $wgOut->setPageTitle(wfMsg('rollbackfailed')); + $wgOut->addHTML( wfMsg( 'cantrollback' ) ); return; } $s = wfFetchObject( $res ); if ( $bot ) { # Mark all reverted edits as bot - $sql = "UPDATE recentchanges SET rc_bot=1 WHERE - rc_cur_id=$pid AND rc_user=$uid AND rc_timestamp > '{$s->old_timestamp}'"; + $sql = 'UPDATE recentchanges SET rc_bot=1 WHERE' . + "rc_cur_id=$pid AND rc_user=$uid AND rc_timestamp > '{$s->old_timestamp}'"; wfQuery( $sql, DB_WRITE, $fname ); } # Save it! - $newcomment = wfMsg( "revertpage", $s->old_user_text, $from ); - $wgOut->setPagetitle( wfMsg( "actioncomplete" ) ); - $wgOut->setRobotpolicy( "noindex,nofollow" ); - $wgOut->addHTML( "

    " . $newcomment . "

    \n
    \n" ); + $newcomment = wfMsg( 'revertpage', $s->old_user_text, $from ); + $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) ); + $wgOut->setRobotpolicy( 'noindex,nofollow' ); + $wgOut->addHTML( '

    ' . $newcomment . "

    \n
    \n" ); $this->updateArticle( Article::getRevisionText( $s ), $newcomment, 1, $this->mTitle->userIsWatching(), $bot ); Article::onArticleEdit( $this->mTitle ); $wgOut->returnToMain( false ); @@ -1461,7 +1497,7 @@ class Article { global $wgLang, $wgOut; $td = $wgLang->timeanddate( $this->mTimestamp, true ); - $r = wfMsg( "revisionasof", $td ); + $r = wfMsg( 'revisionasof', $td ); $wgOut->setSubtitle( "({$r})" ); } @@ -1488,7 +1524,7 @@ class Article { $called = true; if($this->isFileCacheable()) { $touched = $this->mTouched; - if( $this->mTitle->getPrefixedDBkey() == wfMsg( "mainpage" ) ) { + if( $this->mTitle->getPrefixedDBkey() == wfMsg( 'mainpage' ) ) { # Expire the main page quicker $expire = wfUnix2Timestamp( time() - 3600 ); $touched = max( $expire, $touched ); @@ -1518,7 +1554,7 @@ class Article { and ($wgUser->getId() == 0) and (!$wgUser->getNewtalk()) and ($this->mTitle->getNamespace() != Namespace::getSpecial()) - and ($action == "view") + and ($action == 'view') and (!isset($oldid)) and (!isset($diff)) and (!isset($redirect)) @@ -1529,8 +1565,8 @@ class Article { # Loads cur_touched and returns a value indicating if it should be used function checkTouched() { $id = $this->getID(); - $sql = "SELECT cur_touched,cur_is_redirect FROM cur WHERE cur_id=$id"; - $res = wfQuery( $sql, DB_READ, "Article::checkTouched" ); + $sql = 'SELECT cur_touched,cur_is_redirect FROM cur WHERE cur_id='.$id; + $res = wfQuery( $sql, DB_READ, 'Article::checkTouched' ); if( $s = wfFetchObject( $res ) ) { $this->mTouched = $s->cur_touched; return !$s->cur_is_redirect; @@ -1540,9 +1576,9 @@ class Article { } # Edit an article without doing all that other stuff - function quickEdit( $text, $comment = "", $minor = 0 ) { - global $wgUser, $wgMwRedir; - $fname = "Article::quickEdit"; + function quickEdit( $text, $comment = '', $minor = 0 ) { + global $wgUser, $wgMwRedir, $wgIsPg; + $fname = 'Article::quickEdit'; wfProfileIn( $fname ); $ns = $this->mTitle->getNamespace(); @@ -1551,9 +1587,10 @@ class Article { $timestamp = wfTimestampNow(); # Save to history - $sql = "INSERT INTO old (old_namespace,old_title,old_text,old_comment,old_user,old_user_text,old_timestamp,inverse_timestamp) - SELECT cur_namespace,cur_title,cur_text,cur_comment,cur_user,cur_user_text,cur_timestamp,99999999999999-cur_timestamp - FROM cur WHERE cur_namespace=$ns AND cur_title='$encDbKey'"; + $oldtable=$wgIsPg?'"old"':'old'; + $sql = "INSERT INTO $oldtable (old_namespace,old_title,old_text,old_comment,old_user,old_user_text,old_timestamp,inverse_timestamp)" . + 'SELECT cur_namespace,cur_title,cur_text,cur_comment,cur_user,cur_user_text,cur_timestamp,99999999999999-cur_timestamp' . + "FROM cur WHERE cur_namespace=$ns AND cur_title='$encDbKey'"; wfQuery( $sql, DB_WRITE ); # Use the affected row count to determine if the article is new @@ -1575,14 +1612,14 @@ class Article { if ( $numRows ) { # Update article $fields['cur_is_new'] = 0; - wfUpdateArray( "cur", $fields, array( 'cur_namespace' => $ns, 'cur_title' => $dbkey ), $fname ); + wfUpdateArray( 'cur', $fields, array( 'cur_namespace' => $ns, 'cur_title' => $dbkey ), $fname ); } else { # Insert new article $fields['cur_is_new'] = 1; $fields['cur_namespace'] = $ns; $fields['cur_title'] = $dbkey; - $fields['cur_random'] = $rand = number_format( mt_rand() / mt_getrandmax(), 12, ".", "" ); - wfInsertArray( "cur", $fields, $fname ); + $fields['cur_random'] = $rand = number_format( mt_rand() / mt_getrandmax(), 12, '.', '' ); + wfInsertArray( 'cur', $fields, $fname ); } wfProfileOut( $fname ); } @@ -1593,8 +1630,8 @@ class Article { global $wgHitcounterUpdateFreq; if( $wgHitcounterUpdateFreq <= 1 ){ // - wfQuery("UPDATE cur SET cur_counter = cur_counter + 1 " . - "WHERE cur_id = $id", DB_WRITE); + wfQuery('UPDATE cur SET cur_counter = cur_counter + 1 ' . + 'WHERE cur_id = '.$id, DB_WRITE); return; } @@ -1610,25 +1647,25 @@ class Article { return; } - $res = wfQuery("SELECT COUNT(*) as n FROM hitcounter", DB_WRITE); + $res = wfQuery('SELECT COUNT(*) as n FROM hitcounter', DB_WRITE); $row = wfFetchObject( $res ); $rown = intval( $row->n ); if( $rown >= $wgHitcounterUpdateFreq ){ - wfProfileIn( "Article::incViewCount-collect" ); + wfProfileIn( 'Article::incViewCount-collect' ); $old_user_abort = ignore_user_abort( true ); - wfQuery("LOCK TABLES hitcounter WRITE", DB_WRITE); - wfQuery("CREATE TEMPORARY TABLE acchits TYPE=HEAP ". - "SELECT hc_id,COUNT(*) AS hc_n FROM hitcounter ". - "GROUP BY hc_id", DB_WRITE); - wfQuery("DELETE FROM hitcounter", DB_WRITE); - wfQuery("UNLOCK TABLES", DB_WRITE); - wfQuery("UPDATE cur,acchits SET cur_counter=cur_counter + hc_n ". - "WHERE cur_id = hc_id", DB_WRITE); - wfQuery("DROP TABLE acchits", DB_WRITE); + wfQuery('LOCK TABLES hitcounter WRITE', DB_WRITE); + wfQuery('CREATE TEMPORARY TABLE acchits TYPE=HEAP '. + 'SELECT hc_id,COUNT(*) AS hc_n FROM hitcounter '. + 'GROUP BY hc_id', DB_WRITE); + wfQuery('DELETE FROM hitcounter', DB_WRITE); + wfQuery('UNLOCK TABLES', DB_WRITE); + wfQuery('UPDATE cur,acchits SET cur_counter=cur_counter + hc_n '. + 'WHERE cur_id = hc_id', DB_WRITE); + wfQuery('DROP TABLE acchits', DB_WRITE); ignore_user_abort( $old_user_abort ); - wfProfileOut( "Article::incViewCount-collect" ); + wfProfileOut( 'Article::incViewCount-collect' ); } wfIgnoreSQLErrors( $oldignore ); } diff --git a/includes/Block.php b/includes/Block.php index d98b07baebb7..e8a53e0efdd3 100644 --- a/includes/Block.php +++ b/includes/Block.php @@ -15,8 +15,8 @@ class Block /* public*/ var $mAddress, $mUser, $mBy, $mReason, $mTimestamp, $mAuto, $mId, $mExpiry; /* private */ var $mNetworkBits, $mIntegerAddr; - function Block( $address = "", $user = "", $by = 0, $reason = "", - $timestamp = "" , $auto = 0, $expiry = "" ) + function Block( $address = '', $user = '', $by = 0, $reason = '', + $timestamp = '' , $auto = 0, $expiry = '' ) { $this->mAddress = $address; $this->mUser = $user; @@ -38,18 +38,22 @@ class Block function clear() { - $mAddress = $mReason = $mTimestamp = ""; + $mAddress = $mReason = $mTimestamp = ''; $mUser = $mBy = 0; } # Get a ban from the DB, with either the given address or the given username - function load( $address, $user = 0, $killExpired = true ) + function load( $address = "", $user = 0, $killExpired = true ) { - $fname = "Block::load"; + $fname = 'Block::load'; $ret = false; $killed = false; - if ( 0 == $user ) { + if ( 0 == $user && $address=="" ) { + $sql = "SELECT * from ipblocks"; + } elseif ($address=="") { + $sql = "SELECT * FROM ipblocks WHERE ipb_user={$user}"; + } elseif ($user=="") { $sql = "SELECT * FROM ipblocks WHERE ipb_address='" . wfStrencode( $address ) . "'"; } else { $sql = "SELECT * FROM ipblocks WHERE (ipb_address='" . wfStrencode( $address ) . @@ -109,7 +113,7 @@ class Block function initialiseRange() { if ( $this->mUser == 0 ) { - $rangeParts = explode( "/", $this->mAddress ); + $rangeParts = explode( '/', $this->mAddress ); if ( count( $rangeParts ) == 2 ) { $this->mNetworkBits = $rangeParts[1]; } else { @@ -125,8 +129,8 @@ class Block # Callback with a Block object for every block /*static*/ function enumBlocks( $callback, $tag, $killExpired = true ) { - $sql = "SELECT * FROM ipblocks ORDER BY ipb_timestamp DESC"; - $res = wfQuery( $sql, DB_READ, "Block::enumBans" ); + $sql = 'SELECT * FROM ipblocks ORDER BY ipb_timestamp DESC'; + $res = wfQuery( $sql, DB_READ, 'Block::enumBans' ); $block = new Block(); while ( $row = wfFetchObject( $res ) ) { @@ -144,25 +148,25 @@ class Block function delete() { - $fname = "Block::delete"; + $fname = 'Block::delete'; if ( $this->mAddress == "" ) { $sql = "DELETE FROM ipblocks WHERE ipb_id={$this->mId}"; } else { $sql = "DELETE FROM ipblocks WHERE ipb_address='" . wfStrencode( $this->mAddress ) . "'"; } - wfQuery( $sql, DB_WRITE, "Block::delete" ); + wfQuery( $sql, DB_WRITE, 'Block::delete' ); $this->clearCache(); } function insert() { - $sql = "INSERT INTO ipblocks - (ipb_address, ipb_user, ipb_by, ipb_reason, ipb_timestamp, ipb_auto, ipb_expiry ) - VALUES ('" . wfStrencode( $this->mAddress ) . "', {$this->mUser}, {$this->mBy}, '" . + $sql = 'INSERT INTO ipblocks ' . + '(ipb_address, ipb_user, ipb_by, ipb_reason, ipb_timestamp, ipb_auto, ipb_expiry )' . + "VALUES ('" . wfStrencode( $this->mAddress ) . "', {$this->mUser}, {$this->mBy}, '" . wfStrencode( $this->mReason ) . "','{$this->mTimestamp}', {$this->mAuto}, '{$this->mExpiry}')"; - wfQuery( $sql, DB_WRITE, "Block::insert" ); + wfQuery( $sql, DB_WRITE, 'Block::insert' ); $this->clearCache(); } @@ -188,7 +192,7 @@ class Block function isValid() { - return $this->mAddress != ""; + return $this->mAddress != ''; } function updateTimestamp() @@ -197,10 +201,10 @@ class Block $this->mTimestamp = wfTimestampNow(); $this->mExpiry = Block::getAutoblockExpiry( $this->mTimestamp ); - wfQuery( "UPDATE ipblocks SET " . + wfQuery( 'UPDATE ipblocks SET ' . "ipb_timestamp='" . $this->mTimestamp . "', " . "ipb_expiry='" . $this->mExpiry . "' " . - "WHERE ipb_address='" . wfStrencode( $this->mAddress ) . "'", DB_WRITE, "Block::updateTimestamp" ); + "WHERE ipb_address='" . wfStrencode( $this->mAddress ) . "'", DB_WRITE, 'Block::updateTimestamp' ); $this->clearCache(); } @@ -232,7 +236,7 @@ class Block /* static */ function normaliseRange( $range ) { - $parts = explode( "/", $range ); + $parts = explode( '/', $range ); if ( count( $parts ) == 2 ) { $shift = 32 - $parts[1]; $ipint = ip2long( $parts[0] ); diff --git a/includes/BlockCache.php b/includes/BlockCache.php index 135d206d9bec..8b49a0142c13 100644 --- a/includes/BlockCache.php +++ b/includes/BlockCache.php @@ -7,15 +7,15 @@ class BlockCache { var $mData = false, $mMemcKey; - function BlockCache( $deferLoad = false, $dbName = "" ) + function BlockCache( $deferLoad = false, $dbName = '' ) { global $wgDBname; - if ( $dbName == "" ) { + if ( $dbName == '' ) { $dbName = $wgDBname; } - $this->mMemcKey = "$dbName:ipblocks"; + $this->mMemcKey = $dbName.':ipblocks'; if ( !$deferLoad ) { $this->load(); @@ -39,7 +39,7 @@ class BlockCache if ( !is_array( $this->mData ) ) { # Load from DB $this->mData = array(); - Block::enumBlocks( "wfBlockCacheInsert", "" ); # Calls $this->insert() + Block::enumBlocks( 'wfBlockCacheInsert', '' ); # Calls $this->insert() } if ( $saveMemc ) { @@ -78,7 +78,7 @@ class BlockCache if ( $blocked ) { # Clear low order bits if ( $networkBits != 32 ) { - $ip .= "/$networkBits"; + $ip .= '/'.$networkBits; $ip = Block::normaliseRange( $ip ); } $block = new Block(); diff --git a/includes/CacheManager.php b/includes/CacheManager.php index 5ba6ec7318e4..e85f69d94bc7 100644 --- a/includes/CacheManager.php +++ b/includes/CacheManager.php @@ -11,14 +11,14 @@ # $wgFileCacheDirectory # $wgUseGzip -require_once( "Title.php" ); +require_once( 'Title.php' ); class CacheManager { var $mTitle, $mFileCache; function CacheManager( &$title ) { $this->mTitle =& $title; - $this->mFileCache = ""; + $this->mFileCache = ''; } function fileCacheName() { @@ -27,14 +27,14 @@ class CacheManager { $hash = md5( $key = $this->mTitle->getDbkey() ); if( $this->mTitle->getNamespace() ) $key = $wgLang->getNsText( $this->mTitle->getNamespace() ) . ":" . $key; - $key = str_replace( ".", "%2E", urlencode( $key ) ); + $key = str_replace( '.', '%2E', urlencode( $key ) ); $hash1 = substr( $hash, 0, 1 ); $hash2 = substr( $hash, 0, 2 ); $this->mFileCache = "{$wgFileCacheDirectory}/{$hash1}/{$hash2}/{$key}.html"; if($this->useGzip()) - $this->mFileCache .= ".gz"; + $this->mFileCache .= '.gz'; wfDebug( " fileCacheName() - {$this->mFileCache}\n" ); } @@ -75,7 +75,7 @@ class CacheManager { function fetchPageText() { if( $this->useGzip() ) { /* Why is there no gzfile_get_contents() or gzdecode()? */ - return implode( "", gzfile( $this->fileCacheName() ) ); + return implode( '', gzfile( $this->fileCacheName() ) ); } else { return $this->fetchRawText(); } @@ -91,7 +91,7 @@ class CacheManager { if( $this->useGzip() ) { if( wfClientAcceptsGzip() ) { - header( "Content-Encoding: gzip" ); + header( 'Content-Encoding: gzip' ); } else { /* Send uncompressed */ readgzfile( $filename ); @@ -103,38 +103,38 @@ class CacheManager { function checkCacheDirs() { $filename = $this->fileCacheName(); - $mydir2=substr($filename,0,strrpos($filename,"/")); # subdirectory level 2 - $mydir1=substr($mydir2,0,strrpos($mydir2,"/")); # subdirectory level 1 + $mydir2=substr($filename,0,strrpos($filename,'/')); # subdirectory level 2 + $mydir1=substr($mydir2,0,strrpos($mydir2,'/')); # subdirectory level 1 if(!file_exists($mydir1)) { mkdir($mydir1,0775); } # create if necessary if(!file_exists($mydir2)) { mkdir($mydir2,0775); } } function saveToFileCache( $text ) { - if(strcmp($text,"") == 0) return ""; + if(strcmp($text,'') == 0) return ''; wfDebug(" saveToFileCache()\n", false); $this->checkCacheDirs(); - $f = fopen( $this->fileCacheName(), "w" ); + $f = fopen( $this->fileCacheName(), 'w' ); if($f) { $now = wfTimestampNow(); if( $this->useGzip() ) { - $rawtext = str_replace( "", - "\n", + $rawtext = str_replace( '', + '\n", $text ); $text = gzencode( $rawtext ); } else { - $text = str_replace( "", - "\n", + $text = str_replace( '', + '\n", $text ); } fwrite( $f, $text ); fclose( $f ); if( $this->useGzip() ) { if( wfClientAcceptsGzip() ) { - header( "Content-Encoding: gzip" ); + header( 'Content-Encoding: gzip' ); return $text; } else { return $rawtext; diff --git a/includes/Database.php b/includes/Database.php index a3b4c4512816..d465c5e38d30 100644 --- a/includes/Database.php +++ b/includes/Database.php @@ -1,5 +1,8 @@ mOut, $out ); } + function &setOutputPage( &$out ) { $this->mOut =& $out; } # Boolean, controls output of large amounts of debug information function setDebug( $debug ) { return wfSetVar( $this->mDebug, $debug ); } @@ -206,6 +209,15 @@ class Database { } return $row; } + + function fetchRow( $res ) { + @$row = mysql_fetch_array( $res ); + if (mysql_errno() ) { + wfDebugDieBacktrace( "SQL error: " . htmlspecialchars( mysql_error() ) ); + } + return $row; + } + function numRows( $res ) { @$n = mysql_num_rows( $res ); if( mysql_errno() ) { @@ -450,7 +462,13 @@ class Database { function wfEmergencyAbort( &$conn ) { global $wgTitle, $wgUseFileCache, $title, $wgInputEncoding, $wgSiteNotice, $wgOutputEncoding; - header( "Content-type: text/html; charset=$wgOutputEncoding" ); + if( !headers_sent() ) { + header( "HTTP/1.0 500 Internal Server Error" ); + header( "Content-type: text/html; charset=$wgOutputEncoding" ); + /* Don't cache error pages! They cause no end of trouble... */ + header( "Cache-control: none" ); + header( "Pragma: nocache" ); + } $msg = $wgSiteNotice; if($msg == "") $msg = wfMsgNoDB( "noconnect" ); $text = $msg; @@ -484,9 +502,6 @@ function wfEmergencyAbort( &$conn ) { } } - /* Don't cache error pages! They cause no end of trouble... */ - header( "Cache-control: none" ); - header( "Pragma: nocache" ); echo $text; wfAbruptExit(); } @@ -521,4 +536,9 @@ function wfInvertTimestamp( $ts ) { "9876543210" ); } + +function wfLimitResult( $limit, $offset ) { + return " LIMIT ".(is_numeric($offset)?"{$offset},":"")."{$limit} "; +} + ?> diff --git a/includes/DatabaseFunctions.php b/includes/DatabaseFunctions.php index 90bb40f19370..3b92eaa1eb82 100644 --- a/includes/DatabaseFunctions.php +++ b/includes/DatabaseFunctions.php @@ -1,4 +1,5 @@ fetchObject( $res ); } +function wfFetchRow( $res ) +{ + $db =& wfGetDB(); + return $db->fetchRow ( $res ); +} + function wfNumRows( $res ) { $db =& wfGetDB(); @@ -140,7 +156,7 @@ function wfSetSQL( $table, $var, $value, $cond ) return $db->set( $table, $var, $value, $cond ); } -function wfGetSQL( $table, $var, $cond ) +function wfGetSQL( $table, $var, $cond="" ) { $db =& wfGetDB(); return $db->get( $table, $var, $cond ); diff --git a/includes/DateFormatter.php b/includes/DateFormatter.php index e903f53daa79..45196512f5fe 100755 --- a/includes/DateFormatter.php +++ b/includes/DateFormatter.php @@ -18,7 +18,7 @@ define("DF_LAST", 8); class DateFormatter { var $mSource, $mTarget; - var $monthNames = "", $rxDM, $rxMD, $rxDMY, $rxYDM, $rxMDY, $rxYMD; + var $monthNames = '', $rxDM, $rxMD, $rxDMY, $rxYDM, $rxMDY, $rxYMD; var $regexes, $pDays, $pMonths, $pYears; var $rules, $xMonths; @@ -58,24 +58,24 @@ class DateFormatter # Extraction keys # See the comments in replace() for the meaning of the letters - $this->keys[DF_DMY] = "jFY"; - $this->keys[DF_YDM] = "Y jF"; - $this->keys[DF_MDY] = "FjY"; - $this->keys[DF_YMD] = "Y Fj"; - $this->keys[DF_DM] = "jF"; - $this->keys[DF_MD] = "Fj"; - $this->keys[DF_ISO1] = "ymd"; # y means ISO year - $this->keys[DF_ISO2] = "ymd"; + $this->keys[DF_DMY] = 'jFY'; + $this->keys[DF_YDM] = 'Y jF'; + $this->keys[DF_MDY] = 'FjY'; + $this->keys[DF_YMD] = 'Y Fj'; + $this->keys[DF_DM] = 'jF'; + $this->keys[DF_MD] = 'Fj'; + $this->keys[DF_ISO1] = 'ymd'; # y means ISO year + $this->keys[DF_ISO2] = 'ymd'; # Target date formats - $this->targets[DF_DMY] = "[[F j|j F]] [[Y]]"; - $this->targets[DF_YDM] = "[[Y]], [[F j|j F]]"; - $this->targets[DF_MDY] = "[[F j]], [[Y]]"; - $this->targets[DF_YMD] = "[[Y]] [[F j]]"; - $this->targets[DF_DM] = "[[F j|j F]]"; - $this->targets[DF_MD] = "[[F j]]"; - $this->targets[DF_ISO1] = "[[Y|y]]-[[F j|m-d]]"; - $this->targets[DF_ISO2] = "[[y-m-d]]"; + $this->targets[DF_DMY] = '[[F j|j F]] [[Y]]'; + $this->targets[DF_YDM] = '[[Y]], [[F j|j F]]'; + $this->targets[DF_MDY] = '[[F j]], [[Y]]'; + $this->targets[DF_YMD] = '[[Y]] [[F j]]'; + $this->targets[DF_DM] = '[[F j|j F]]'; + $this->targets[DF_MD] = '[[F j]]'; + $this->targets[DF_ISO1] = '[[Y|y]]-[[F j|m-d]]'; + $this->targets[DF_ISO2] = '[[y-m-d]]'; # Rules # pref source target @@ -103,7 +103,7 @@ class DateFormatter # Default $this->mTarget = $i; } - $text = preg_replace_callback( $this->regexes[$i], "wfMainDateReplace", $text ); + $text = preg_replace_callback( $this->regexes[$i], 'wfMainDateReplace', $text ); } return $text; } @@ -123,7 +123,7 @@ class DateFormatter $format = $this->targets[$this->mTarget]; # Construct new date - $text = ""; + $text = ''; $fail = false; for ( $p=0; $p < strlen( $format ); $p++ ) { @@ -131,7 +131,7 @@ class DateFormatter switch ( $char ) { case 'd': # ISO day of month if ( is_null($bits['d']) ) { - $text .= sprintf( "%02d", $bits['j'] ); + $text .= sprintf( '%02d', $bits['j'] ); } else { $text .= $bits['d']; } @@ -139,7 +139,7 @@ class DateFormatter case 'm': # ISO month if ( is_null($bits['m']) ) { $m = $this->makeIsoMonth( $bits['F'] ); - if ( !$m || $m == "00" ) { + if ( !$m || $m == '00' ) { $fail = true; } else { $text .= $m; @@ -194,14 +194,14 @@ class DateFormatter function getMonthRegex() { global $wgMonthNamesEn; - return implode( "|", $wgMonthNamesEn ); + return implode( '|', $wgMonthNamesEn ); } # Makes an ISO month, e.g. 02, from a month name function makeIsoMonth( $monthName ) { $n = $this->xMonths[strtolower( $monthName )]; - return sprintf( "%02d", $n ); + return sprintf( '%02d', $n ); } function makeIsoYear( $year ) @@ -210,10 +210,10 @@ class DateFormatter if ( substr( $year, -2 ) == 'BC' ) { $num = IntVal(substr( $year, 0, -3 )) - 1; # PHP bug note: sprintf( "%04d", -1 ) fails poorly - $text = sprintf( "-%04d", $num ); + $text = sprintf( '-%04d', $num ); } else { - $text = sprintf( "%04d", $year ); + $text = sprintf( '%04d', $year ); } return $text; } @@ -221,7 +221,7 @@ class DateFormatter function makeNormalYear( $iso ) { if ( $iso{0} == '-' ) { - $text = (IntVal( substr( $iso, 1 ) ) - 1) . " BC"; + $text = (IntVal( substr( $iso, 1 ) ) - 1) . ' BC'; } else { $text = IntVal( $iso ); } diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php index 7f962dfd99ae..3d7f89f138fc 100644 --- a/includes/DefaultSettings.php +++ b/includes/DefaultSettings.php @@ -1,4 +1,5 @@ "; +$wgEmergencyContact = 'wikiadmin@' . getenv( 'SERVER_NAME' ); +$wgPasswordSender = 'Wikipedia Mail '; # For using a direct (authenticated) SMTP server connection. # "host" => 'SMTP domain', "IDHost" => 'domain for MessageID', "port" => "25", "auth" => true/false, "username" => user, "password" => password $wgSMTP = false; -# MySQL settings +# Database settings # -$wgDBserver = "localhost"; -$wgDBname = "wikidb"; -$wgDBconnection = ""; -$wgDBuser = "wikiuser"; +$wgDBserver = 'localhost'; +$wgDBname = 'wikidb'; +$wgDBconnection = ''; +$wgDBuser = 'wikiuser'; +$wgDBtype = "mysql"; # "mysql" for working code and "pgsql" for development/broken code # Sysop SQL queries $wgAllowSysopQueries = false; # Dangerous if not configured properly. -$wgDBsqluser = "sqluser"; -$wgDBsqlpassword = "sqlpass"; -$wgDBpassword = "userpass"; +$wgDBsqluser = 'sqluser'; +$wgDBsqlpassword = 'sqlpass'; +$wgDBpassword = 'userpass'; $wgSqlLogFile = "{$wgUploadDirectory}/sqllog_mFhyRe6"; $wgDBminWordLen = 4; @@ -85,27 +87,28 @@ $wgDBloads = false; # e.g. array(0.6, 0.4); # $wgMemCachedDebug = false; # Will be set to false in Setup.php, if the server isn't working $wgUseMemCached = false; -$wgMemCachedServers = array( "127.0.0.1:11000" ); +$wgMemCachedServers = array( '127.0.0.1:11000' ); $wgMemCachedDebug = false; $wgSessionsInMemcached = false; $wgLinkCacheMemcached = false; # Not fully tested # Language settings # -$wgLanguageCode = "en"; +$wgLanguageCode = 'en'; $wgLanguageFile = false; # Filename of a language file generated by dumpMessages.php $wgInterwikiMagic = true; # Treat language links as magic connectors, not inline links -$wgInputEncoding = "ISO-8859-1"; -$wgOutputEncoding = "ISO-8859-1"; -$wgEditEncoding = ""; -$wgMimeType = "text/html"; -$wgDocType = "-//W3C//DTD XHTML 1.0 Transitional//EN"; -$wgDTD = "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"; +$wgInputEncoding = 'ISO-8859-1'; # LanguageUtf8.php normally overrides this +$wgOutputEncoding = 'ISO-8859-1'; # unless you set the next option to true: +$wgUseLatin1 = false; # Enable ISO-8859-1 compatibility mode +$wgEditEncoding = ''; +$wgMimeType = 'text/html'; +$wgDocType = '-//W3C//DTD XHTML 1.0 Transitional//EN'; +$wgDTD = 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'; $wgUseDynamicDates = false; # Enable to allow rewriting dates in page text # DOES NOT FORMAT CORRECTLY FOR MOST LANGUAGES $wgAmericanDates = false; # Enable for English module to print dates # as eg 'May 12' instead of '12 May' -$wgLocalInterwiki = "w"; +$wgLocalInterwiki = 'w'; $wgShowIPinHeader = true; # For non-logged in users $wgMaxNameChars = 32; # Maximum number of bytes in username $wgInterwikiExpiry = 10800; # Expiry time for cache of interwiki table @@ -115,8 +118,8 @@ $wgInterwikiExpiry = 10800; # Expiry time for cache of interwiki table $wgUseDatabaseMessages = true; $wgMsgCacheExpiry = 86400; -$wgExtraSubtitle = ""; -$wgSiteSupportPage = ""; +$wgExtraSubtitle = ''; +$wgSiteSupportPage = ''; # Miscellaneous configuration settings # @@ -124,7 +127,7 @@ $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR"; # The debug log file should be not be publicly accessible if it is # used, as it may contain private data. -$wgDebugLogFile = ""; +$wgDebugLogFile = ''; $wgDebugRedirects = false; $wgDebugComments = false; @@ -163,24 +166,24 @@ $wgHitcounterUpdateFreq = 1; # User rights $wgWhitelistEdit = false; # true = user must login to edit. $wgWhitelistRead = false; # Pages anonymous user may see, like: = array ( ":Main_Page", "Special:Userlogin", "Wikipedia:Help"); -$wgWhitelistAccount = array ( "user" => 1, "sysop" => 1, "developer" => 1 ); +$wgWhitelistAccount = array ( 'user' => 1, 'sysop' => 1, 'developer' => 1 ); $wgSysopUserBans = false; # Allow sysops to ban logged-in users $wgSysopRangeBans = false; # Allow sysops to ban IP ranges -$wgDefaultBlockExpiry = "24 hours"; # default expiry time +$wgDefaultBlockExpiry = '24 hours'; # default expiry time # strtotime format, or "infinite" for an infinite block $wgAutoblockExpiry = 86400; # Number of seconds before autoblock entries expire $wgBlockOpenProxies = false; # Automatic open proxy test on edit $wgProxyPorts = array( 80, 81, 1080, 3128, 6588, 8000, 8080, 8888, 65506 ); $wgProxyScriptPath = "$IP/proxy_check.php"; $wgProxyMemcExpiry = 86400; -$wgProxyKey = "W1svekXc5u6lZllTZOwnzEk1nbs"; +$wgProxyKey = 'W1svekXc5u6lZllTZOwnzEk1nbs'; # Client-side caching: $wgCachePages = true; # Allow client-side caching of pages # Set this to current time to invalidate all prior cached pages. # Affects both client- and server-side caching. -$wgCacheEpoch = "20030516000000"; +$wgCacheEpoch = '20030516000000'; # Server-side caching: # This will cache static pages for non-logged-in users @@ -210,8 +213,8 @@ $wgCookieExpiration = 2592000; # Set to set an explicit domain on the login cookies # eg, "justthis.domain.org" or ".any.subdomain.net" -$wgCookieDomain = ""; -$wgCookiePath = "/"; +$wgCookieDomain = ''; +$wgCookiePath = '/'; $wgDisableCookieCheck = false; $wgAllowExternalImages = true; @@ -225,18 +228,7 @@ $wgWLCacheTimeout = 3600; # The hour or so mentioned above # convert (ImageMagick) installed and available in the PATH. # Please see math/README for more information. $wgUseTeX = false; -$wgTexvc = "./math/texvc"; # Location of the texvc binary - -# Support for inline hieroglyphs, see http://aoineko.free.fr/ The -# WikiHiero php files must be present in the same directory as the -# rest of the mediawiki code, and WikiHiero must have been configured -# with the correct image locations. -$wgUseWikiHiero = false; - -# Support for inline timelines, see http://members.chello.nl/epzachte/Wikipedia/EasyTimeline/Introduction.htm -# The Timeline php files must be present in the extension directory and you must have the -# ploticus tool available, see http://ploticus.sourceforge.net/ -$wgUseTimeline = false; +$wgTexvc = './math/texvc'; # Location of the texvc binary # Profiling / debugging $wgProfiling = false; # Enable for more detailed by-function times in debug log @@ -258,11 +250,11 @@ $wgDisableAnonTalk = false; # We can serve pages compressed in order to save bandwidth, # but this will increase CPU usage. # Requires zlib support enabled in PHP. -$wgUseGzip = function_exists( "gzencode" ); +$wgUseGzip = function_exists( 'gzencode' ); # Path to the GNU diff3 utility. If the file doesn't exist, # edit conflicts will fall back to the old behaviour (no merging). -$wgDiff3 = "/usr/bin/diff3"; +$wgDiff3 = '/usr/bin/diff3'; # We can also compress text in the old revisions table. If this is set on, # old revisions will be compressed on page save if zlib support is available. @@ -272,18 +264,18 @@ $wgCompressRevisions = false; # This is the list of preferred extensions for uploading files. Uploading # files with extensions not in this list will trigger a warning. -$wgFileExtensions = array( "png", "jpg", "jpeg", "ogg" ); +$wgFileExtensions = array( 'png', 'jpg', 'jpeg', 'ogg' ); # Files with these extensions will never be allowed as uploads. $wgFileBlacklist = array( # HTML may contain cookie-stealing JavaScript and web bugs - "html", "htm", + 'html', 'htm', # PHP scripts may execute arbitrary code on the server - "php", "phtml", "php3", "php4", "phps", + 'php', 'phtml', 'php3', 'php4', 'phps', # Other types that may be interpreted by some servers - "shtml", "jhtml", "pl", "py", + 'shtml', 'jhtml', 'pl', 'py', # May contain harmful executables for Windows victims - "exe", "scr", "dll", "msi", "vbs", "bat", "com", "pif", "cmd", "vxd", "cpl" ); + 'exe', 'scr', 'dll', 'msi', 'vbs', 'bat', 'com', 'pif', 'cmd', 'vxd', 'cpl' ); # This is a flag to determine whether or not to check file extensions on # upload. @@ -293,6 +285,9 @@ $wgCheckFileExtensions = true; # covered by $wgFileExtensions. $wgStrictFileExtensions = true; +# Warn if uploaded files are larger than this +$wgUploadSizeWarning = 150000; + $wgPasswordSalt = true; # For compatibility with old installations set to false # Which namespaces should support subpages? @@ -323,7 +318,7 @@ $wgUseImageResize = false; ## of the builtin functions # $wgUseImageMagick = false; -$wgImageMagickConvertCommand = "/usr/bin/convert"; +$wgImageMagickConvertCommand = '/usr/bin/convert'; # PHPTal is a library for page templates. MediaWiki includes # a recent PHPTal distribution. It is required to use the @@ -393,12 +388,12 @@ $wgTidyConf = $IP.'/extensions/tidy/tidy.conf'; $wgTidyOpts = ''; # See list of skins and their symbolic names in language/Language.php -$wgDefaultSkin = "monobook"; +$wgDefaultSkin = 'monobook'; # Whether or not to allow real name fields. Defaults to true. - $wgAllowRealName = true; # Extensions $wgExtensionFunctions = array(); + ?> diff --git a/includes/DifferenceEngine.php b/includes/DifferenceEngine.php index 4ba5b7713d8d..2e3937ee4802 100644 --- a/includes/DifferenceEngine.php +++ b/includes/DifferenceEngine.php @@ -18,7 +18,9 @@ class DifferenceEngine { function showDiffPage() { global $wgUser, $wgTitle, $wgOut, $wgLang; - + $fname = "DifferenceEngine::showDiffPage"; + wfProfileIn( $fname ); + $t = $wgTitle->getPrefixedText() . " (Diff: {$this->mOldid}, " . "{$this->mNewid})"; $mtext = wfMsg( "missingarticle", $t ); @@ -27,6 +29,7 @@ class DifferenceEngine { if ( ! $this->loadText() ) { $wgOut->setPagetitle( wfMsg( "errorpagetitle" ) ); $wgOut->addHTML( $mtext ); + wfProfileOut( $fname ); return; } $wgOut->suppressQuickbar(); @@ -44,6 +47,7 @@ class DifferenceEngine { if ( !( $this->mOldPage->userCanRead() && $this->mNewPage->userCanRead() ) ) { $wgOut->loginToUse(); $wgOut->output(); + wfProfileOut( $fname ); exit; } @@ -80,6 +84,8 @@ class DifferenceEngine { $oldHeader, $newHeader ); $wgOut->addHTML( "

    {$this->mNewtitle}

    \n" ); $wgOut->addWikiText( $this->mNewtext ); + + wfProfileOut( $fname ); } function showDiff( $otext, $ntext, $otitle, $ntitle ) @@ -112,9 +118,10 @@ cellpadding='0' cellspacing='4px' class='diff'> # function loadText() { - global $wgTitle, $wgOut, $wgLang; + global $wgTitle, $wgOut, $wgLang, $wgIsMySQL, $wgIsPg; $fname = "DifferenceEngine::loadText"; + $oldtable=$wgIsPg?'"old"':'old'; if ( 0 == $this->mNewid || 0 == $this->mOldid ) { $wgOut->setArticleFlag( true ); $this->mNewtitle = wfMsg( "currentrev" ); @@ -130,7 +137,7 @@ cellpadding='0' cellspacing='4px' class='diff'> $this->mNewUser = $s->cur_user_text; $this->mNewComment = $s->cur_comment; } else { - $sql = "SELECT old_namespace,old_title,old_timestamp,old_text,old_flags,old_user_text,old_comment FROM old WHERE " . + $sql = "SELECT old_namespace,old_title,old_timestamp,old_text,old_flags,old_user_text,old_comment FROM $oldtable WHERE " . "old_id={$this->mNewid}"; $res = wfQuery( $sql, DB_READ, $fname ); @@ -146,14 +153,15 @@ cellpadding='0' cellspacing='4px' class='diff'> $this->mNewComment = $s->old_comment; } if ( 0 == $this->mOldid ) { + $use_index=$wgIsMySQL?"USE INDEX (name_title_timestamp)":""; $sql = "SELECT old_namespace,old_title,old_timestamp,old_text,old_flags,old_user_text,old_comment " . - "FROM old USE INDEX (name_title_timestamp) WHERE " . + "FROM $oldtable $use_index WHERE " . "old_namespace=" . $this->mNewPage->getNamespace() . " AND " . "old_title='" . wfStrencode( $this->mNewPage->getDBkey() ) . "' ORDER BY inverse_timestamp LIMIT 1"; $res = wfQuery( $sql, DB_READ, $fname ); } else { - $sql = "SELECT old_namespace,old_title,old_timestamp,old_text,old_flags,old_user_text,old_comment FROM old WHERE " . + $sql = "SELECT old_namespace,old_title,old_timestamp,old_text,old_flags,old_user_text,old_comment FROM $oldtable WHERE " . "old_id={$this->mOldid}"; $res = wfQuery( $sql, DB_READ, $fname ); } @@ -1015,7 +1023,7 @@ class _HWLDF_WordAccumulator { function _flushGroup ($new_tag) { if ($this->_group !== '') { if ($this->_tag == 'mark') - $this->_line .= "$this->_group"; + $this->_line .= ''.$this->_group.''; else $this->_line .= $this->_group; } @@ -1116,8 +1124,8 @@ class TableDiffFormatter extends DiffFormatter $l1 = wfMsg( "lineno", $xbeg ); $l2 = wfMsg( "lineno", $ybeg ); - $r = "{$l1}\n" . - "{$l2}\n"; + $r = ''.$l1."\n" . + ''.$l2."\n"; return $r; } @@ -1133,27 +1141,27 @@ class TableDiffFormatter extends DiffFormatter } function addedLine( $line ) { - return "+" . - "{$line}"; + return '+' . + $line.''; } function deletedLine( $line ) { - return "-" . - "{$line}"; + return '-' . + $line.''; } function emptyLine() { - return " "; + return ' '; } function contextLine( $line ) { - return " {$line}"; + return ' '.$line.''; } function _added($lines) { global $wgOut; foreach ($lines as $line) { - $wgOut->addHTML( "" . $this->emptyLine() . + $wgOut->addHTML( '' . $this->emptyLine() . $this->addedLine( $line ) . "\n" ); } } @@ -1161,7 +1169,7 @@ class TableDiffFormatter extends DiffFormatter function _deleted($lines) { global $wgOut; foreach ($lines as $line) { - $wgOut->addHTML( "" . $this->deletedLine( $line ) . + $wgOut->addHTML( '' . $this->deletedLine( $line ) . $this->emptyLine() . "\n" ); } } @@ -1169,7 +1177,7 @@ class TableDiffFormatter extends DiffFormatter function _context( $lines ) { global $wgOut; foreach ($lines as $line) { - $wgOut->addHTML( "" . $this->contextLine( $line ) . + $wgOut->addHTML( '' . $this->contextLine( $line ) . $this->contextLine( $line ) . "\n" ); } } @@ -1182,7 +1190,7 @@ class TableDiffFormatter extends DiffFormatter while ( $line = array_shift( $del ) ) { $aline = array_shift( $add ); - $wgOut->addHTML( "" . $this->deletedLine( $line ) . + $wgOut->addHTML( '' . $this->deletedLine( $line ) . $this->addedLine( $aline ) . "\n" ); } $this->_added( $add ); # If any leftovers diff --git a/includes/EditPage.php b/includes/EditPage.php index 06910ecee24e..b168b6c29a84 100644 --- a/includes/EditPage.php +++ b/includes/EditPage.php @@ -62,6 +62,7 @@ class EditPage { } function importFormData( &$request ) { + global $wgIsMySQL, $wgIsPg; # These fields need to be checked for encoding. # Also remove trailing whitespace, but don't remove _initial_ # whitespace from the text boxes. This may be significant formatting. @@ -70,7 +71,12 @@ class EditPage { $this->summary = trim( $request->getText( "wpSummary" ) ); $this->edittime = $request->getVal( 'wpEdittime' ); - if( !preg_match( '/^\d{14}$/', $this->edittime ) ) $this->edittime = ""; + if ($wgIsMySQL) + if( !preg_match( '/^\d{14}$/', $this->edittime )) $this->edittime = ""; + if ($wgIsPg) + if ( !preg_match( '/^\d{4}-\d\d-\d\d \d\d:\d\d:\d\d$/', + $this->edittime )) + $this->edittime = ""; $this->preview = $request->getCheck( 'wpPreview' ); $this->save = $request->wasPosted() && !$this->preview; @@ -313,10 +319,10 @@ class EditPage { $cancel = $sk->makeKnownLink( $this->mTitle->getPrefixedText(), wfMsg( "cancel" ) ); - $edithelpurl = $sk->makeUrl( wfMsg( "edithelppage" )); - $edithelp = ''. - wfMsg( "edithelp" ).''; + $edithelpurl = $sk->makeUrl( wfMsg( 'edithelppage' )); + $edithelp = ''. + htmlspecialchars( wfMsg( 'edithelp' ) ).' '. + htmlspecialchars( wfMsg( 'newwindow' ) ); $copywarn = wfMsg( "copyrightwarning", $sk->makeKnownLink( wfMsg( "copyrightpage" ) ) ); @@ -420,9 +426,9 @@ htmlspecialchars( $wgLang->recodeForEdit( $this->textbox1 ) ) .
    {$editsummary} {$checkboxhtml} - - {$cancel} | {$edithelp}

    {$copywarn} @@ -435,7 +441,7 @@ htmlspecialchars( $wgLang->recodeForEdit( $this->textbox1 ) ) . wfMsg( "yourtext" ), wfMsg( "storedversion" ) ); $wgOut->addHTML( "

    " . wfMsg( "yourtext" ) . "

    -" ); @@ -538,6 +544,7 @@ htmlspecialchars( $wgLang->recodeForEdit( $this->textbox1 ) ) . } /* private */ function mergeChangesInto( &$text ){ + global $wgIsPg; $oldDate = $this->edittime; $res = wfQuery("SELECT cur_text FROM cur WHERE cur_id=" . $this->mTitle->getArticleID() . " FOR UPDATE", DB_WRITE); @@ -546,7 +553,8 @@ htmlspecialchars( $wgLang->recodeForEdit( $this->textbox1 ) ) . $yourtext = $obj->cur_text; $ns = $this->mTitle->getNamespace(); $title = wfStrencode( $this->mTitle->getDBkey() ); - $res = wfQuery("SELECT old_text,old_flags FROM old WHERE old_namespace = $ns AND ". + $oldtable=$wgIsPg?'"old"':'old'; + $res = wfQuery("SELECT old_text,old_flags FROM $oldtable WHERE old_namespace = $ns AND ". "old_title = '{$title}' AND old_timestamp = '{$oldDate}'", DB_WRITE); $obj = wfFetchObject($res); $oldText = Article::getRevisionText( $obj ); diff --git a/includes/Feed.php b/includes/Feed.php index 0be93e8a7017..b0d208b251e1 100644 --- a/includes/Feed.php +++ b/includes/Feed.php @@ -20,18 +20,18 @@ # http://www.gnu.org/copyleft/gpl.html $wgFeedClasses = array( - "rss" => "RSSFeed", - "atom" => "AtomFeed", + 'rss' => 'RSSFeed', + 'atom' => 'AtomFeed', ); class FeedItem { - var $Title = "Wiki"; - var $Description = ""; - var $Url = ""; - var $Date = ""; - var $Author = ""; + var $Title = 'Wiki'; + var $Description = ''; + var $Url = ''; + var $Date = ''; + var $Author = ''; - function FeedItem( $Title, $Description, $Url, $Date = "", $Author = "", $Comments = "" ) { + function FeedItem( $Title, $Description, $Url, $Date = '', $Author = '', $Comments = '' ) { $this->Title = $Title; $this->Description = $Description; $this->Url = $Url; @@ -44,8 +44,8 @@ class FeedItem { function xmlEncode( $string ) { global $wgInputEncoding, $wgLang; $string = str_replace( "\r\n", "\n", $string ); - if( strcasecmp( $wgInputEncoding, "utf-8" ) != 0 ) { - $string = $wgLang->iconv( $wgInputEncoding, "utf-8", $string ); + if( strcasecmp( $wgInputEncoding, 'utf-8' ) != 0 ) { + $string = $wgLang->iconv( $wgInputEncoding, 'utf-8', $string ); } return htmlspecialchars( $string ); } @@ -85,7 +85,7 @@ class ChannelFeed extends FeedItem { # print ""; } - function outXmlHeader( $mimetype="application/xml" ) { + function outXmlHeader( $mimetype='application/xml' ) { global $wgServer, $wgStylePath, $wgOut; # We take over from $wgOut, excepting its cache header info @@ -102,7 +102,7 @@ class ChannelFeed extends FeedItem { class RSSFeed extends ChannelFeed { function formatTime( $ts ) { - return gmdate( "D, d M Y H:i:s \G\M\T", wfTimestamp2Unix( $ts ) ); + return gmdate( 'D, d M Y H:i:s \G\M\T', wfTimestamp2Unix( $ts ) ); } function outHeader() { @@ -143,7 +143,7 @@ class RSSFeed extends ChannelFeed { class AtomFeed extends ChannelFeed { function formatTime( $ts ) { // need to use RFC 822 time format at least for rss2.0 - return gmdate( "Y-m-d\TH:i:s", wfTimestamp2Unix( $ts ) ); + return gmdate( 'Y-m-d\TH:i:s', wfTimestamp2Unix( $ts ) ); } function outHeader() { @@ -186,4 +186,4 @@ class AtomFeed extends ChannelFeed { } } -?> \ No newline at end of file +?> diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php index 719b61515d54..27f126933a7a 100644 --- a/includes/GlobalFunctions.php +++ b/includes/GlobalFunctions.php @@ -5,9 +5,9 @@ $wgNumberOfArticles = -1; # Unset $wgTotalViews = -1; $wgTotalEdits = -1; -require_once( "DatabaseFunctions.php" ); -require_once( "UpdateClasses.php" ); -require_once( "LogPage.php" ); +require_once( 'DatabaseFunctions.php' ); +require_once( 'UpdateClasses.php' ); +require_once( 'LogPage.php' ); /* * Compatibility functions @@ -23,8 +23,8 @@ if( !function_exists('iconv') ) { # This will *not* work in all circumstances. function iconv( $from, $to, $string ) { if(strcasecmp( $from, $to ) == 0) return $string; - if(strcasecmp( $from, "utf-8" ) == 0) return utf8_decode( $string ); - if(strcasecmp( $to, "utf-8" ) == 0) return utf8_encode( $string ); + if(strcasecmp( $from, 'utf-8' ) == 0) return utf8_decode( $string ); + if(strcasecmp( $to, 'utf-8' ) == 0) return utf8_encode( $string ); return $string; } } @@ -32,7 +32,7 @@ if( !function_exists('iconv') ) { if( !function_exists('file_get_contents') ) { # Exists in PHP 4.3.0+ function file_get_contents( $filename ) { - return implode( "", file( $filename ) ); + return implode( '', file( $filename ) ); } } @@ -47,15 +47,15 @@ if( !function_exists('is_a') ) { # html_entity_decode exists in PHP 4.3.0+ but is FATALLY BROKEN even then, # with no UTF-8 support. -function do_html_entity_decode( $string, $quote_style=ENT_COMPAT, $charset="ISO-8859-1" ) { +function do_html_entity_decode( $string, $quote_style=ENT_COMPAT, $charset='ISO-8859-1' ) { static $trans; if( !isset( $trans ) ) { $trans = array_flip( get_html_translation_table( HTML_ENTITIES, $quote_style ) ); # Assumes $charset will always be the same through a run, and only understands # utf-8 or default. Note - mixing latin1 named entities and unicode numbered # ones will result in a bad link. - if( strcasecmp( "utf-8", $charset ) == 0 ) { - $trans = array_map( "utf8_encode", $trans ); + if( strcasecmp( 'utf-8', $charset ) == 0 ) { + $trans = array_map( 'utf8_encode', $trans ); } } return strtr( $string, $trans ); @@ -77,19 +77,19 @@ function wfSeedRandom() # Generates a URL from a URL-encoded title and a query string # Title::getLocalURL() is preferred in most cases # -function wfLocalUrl( $a, $q = "" ) +function wfLocalUrl( $a, $q = '' ) { global $wgServer, $wgScript, $wgArticlePath; - $a = str_replace( " ", "_", $a ); + $a = str_replace( ' ', '_', $a ); - if ( "" == $a ) { - if( "" == $q ) { + if ( '' == $a ) { + if( '' == $q ) { $a = $wgScript; } else { $a = "{$wgScript}?{$q}"; } - } else if ( "" == $q ) { + } else if ( '' == $q ) { $a = str_replace( "$1", $a, $wgArticlePath ); } else if ($wgScript != '' ) { $a = "{$wgScript}?title={$a}&{$q}"; @@ -99,18 +99,18 @@ function wfLocalUrl( $a, $q = "" ) return $a; } -function wfLocalUrlE( $a, $q = "" ) +function wfLocalUrlE( $a, $q = '' ) { return wfEscapeHTML( wfLocalUrl( $a, $q ) ); # die( "Call to obsolete function wfLocalUrlE()" ); } -function wfFullUrl( $a, $q = "" ) { - wfDebugDieBacktrace( "Call to obsolete function wfFullUrl(); use Title::getFullURL" ); +function wfFullUrl( $a, $q = '' ) { + wfDebugDieBacktrace( 'Call to obsolete function wfFullUrl(); use Title::getFullURL' ); } -function wfFullUrlE( $a, $q = "" ) { - wfDebugDieBacktrace( "Call to obsolete function wfFullUrlE(); use Title::getFullUrlE" ); +function wfFullUrlE( $a, $q = '' ) { + wfDebugDieBacktrace( 'Call to obsolete function wfFullUrlE(); use Title::getFullUrlE' ); } @@ -143,8 +143,8 @@ function wfImageArchiveUrl( $name ) function wfUrlencode ( $s ) { $s = urlencode( $s ); - $s = preg_replace( "/%3[Aa]/", ":", $s ); - $s = preg_replace( "/%2[Ff]/", "/", $s ); + $s = preg_replace( '/%3[Aa]/', ':', $s ); + $s = preg_replace( '/%2[Ff]/', '/', $s ); return $s; } @@ -164,6 +164,7 @@ function wfUtf8Sequence($codepoint) { return "&#$codepoint;"; } +# Converts numeric character entities to UTF-8 function wfMungeToUtf8($string) { global $wgInputEncoding; # This is debatable #$string = iconv($wgInputEncoding, "UTF-8", $string); @@ -189,7 +190,7 @@ function wfUtf8Entity( $matches ) { } if ( $length != strlen( $char ) ) { - return ""; + return ''; } if ( $length == 1 ) { return $char; @@ -237,21 +238,21 @@ function logProfilingData() $elapsed = $now - $start; if ( $wgProfiling ) { $prof = wfGetProfilingOutput( $start, $elapsed ); - $forward = ""; + $forward = ''; if( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) - $forward = " forwarded for " . $_SERVER['HTTP_X_FORWARDED_FOR']; + $forward = ' forwarded for ' . $_SERVER['HTTP_X_FORWARDED_FOR']; if( !empty( $_SERVER['HTTP_CLIENT_IP'] ) ) - $forward .= " client IP " . $_SERVER['HTTP_CLIENT_IP']; + $forward .= ' client IP ' . $_SERVER['HTTP_CLIENT_IP']; if( !empty( $_SERVER['HTTP_FROM'] ) ) - $forward .= " from " . $_SERVER['HTTP_FROM']; + $forward .= ' from ' . $_SERVER['HTTP_FROM']; if( $forward ) $forward = "\t(proxied via {$_SERVER['REMOTE_ADDR']}{$forward})"; if($wgUser->getId() == 0) - $forward .= " anon"; + $forward .= ' anon'; $log = sprintf( "%s\t%04.3f\t%s\n", - gmdate( "YmdHis" ), $elapsed, + gmdate( 'YmdHis' ), $elapsed, urldecode( $_SERVER['REQUEST_URI'] . $forward ) ); - if ( "" != $wgDebugLogFile ) { + if ( '' != $wgDebugLogFile ) { error_log( $log . $prof, 3, $wgDebugLogFile ); } } @@ -290,7 +291,7 @@ function wfMsgNoDB( $key ) { function wfMsgReal( $key, $args, $useDB ) { global $wgReplacementKeys, $wgMessageCache, $wgLang; - $fname = "wfMsg"; + $fname = 'wfMsg'; wfProfileIn( $fname ); if ( $wgMessageCache ) { $message = $wgMessageCache->get( $key, $useDB ); @@ -311,28 +312,28 @@ function wfMsgReal( $key, $args, $useDB ) { function wfCleanFormFields( $fields ) { - wfDebugDieBacktrace( "Call to obsolete wfCleanFormFields(). Use wgRequest instead..." ); + wfDebugDieBacktrace( 'Call to obsolete wfCleanFormFields(). Use wgRequest instead...' ); } function wfMungeQuotes( $in ) { - $out = str_replace( "%", "%25", $in ); - $out = str_replace( "'", "%27", $out ); - $out = str_replace( "\"", "%22", $out ); + $out = str_replace( '%', '%25', $in ); + $out = str_replace( "'", '%27', $out ); + $out = str_replace( '"', '%22', $out ); return $out; } function wfDemungeQuotes( $in ) { - $out = str_replace( "%22", "\"", $in ); - $out = str_replace( "%27", "'", $out ); - $out = str_replace( "%25", "%", $out ); + $out = str_replace( '%22', '"', $in ); + $out = str_replace( '%27', "'", $out ); + $out = str_replace( '%25', '%', $out ); return $out; } function wfCleanQueryVar( $var ) { - wfDebugDieBacktrace( "Call to obsolete function wfCleanQueryVar(); use wgRequest instead" ); + wfDebugDieBacktrace( 'Call to obsolete function wfCleanQueryVar(); use wgRequest instead' ); } function wfSearch( $s ) @@ -355,27 +356,27 @@ function wfAbruptExit(){ } $called = true; - if( function_exists( "debug_backtrace" ) ){ // PHP >= 4.3 + if( function_exists( 'debug_backtrace' ) ){ // PHP >= 4.3 $bt = debug_backtrace(); for($i = 0; $i < count($bt) ; $i++){ - $file = $bt[$i]["file"]; - $line = $bt[$i]["line"]; + $file = $bt[$i]['file']; + $line = $bt[$i]['line']; wfDebug("WARNING: Abrupt exit in $file at line $line\n"); } } else { - wfDebug("WARNING: Abrupt exit\n"); + wfDebug('WARNING: Abrupt exit\n'); } exit(); } -function wfDebugDieBacktrace( $msg = "" ) { +function wfDebugDieBacktrace( $msg = '' ) { $msg .= "\n

    Backtrace:

    \n
      \n"; $backtrace = debug_backtrace(); foreach( $backtrace as $call ) { $f = explode( DIRECTORY_SEPARATOR, $call['file'] ); $file = $f[count($f)-1]; - $msg .= "
    • " . $file . " line " . $call['line'] . ", in "; - if( !empty( $call['class'] ) ) $msg .= $call['class'] . "::"; + $msg .= '
    • ' . $file . " line " . $call['line'] . ', in '; + if( !empty( $call['class'] ) ) $msg .= $call['class'] . '::'; $msg .= $call['function'] . "()
    • \n"; } die( $msg ); @@ -394,9 +395,9 @@ function wfNumberOfArticles() global $wgNumberOfArticles, $wgTotalViews, $wgTotalEdits; if ( -1 != $wgNumberOfArticles ) return; - $sql = "SELECT ss_total_views, ss_total_edits, ss_good_articles " . - "FROM site_stats WHERE ss_row_id=1"; - $res = wfQuery( $sql, DB_READ, "wfLoadSiteStats" ); + $sql = 'SELECT ss_total_views, ss_total_edits, ss_good_articles ' . + 'FROM site_stats WHERE ss_row_id=1'; + $res = wfQuery( $sql, DB_READ, 'wfLoadSiteStats' ); if ( 0 == wfNumRows( $res ) ) { return; } else { @@ -410,24 +411,24 @@ function wfNumberOfArticles() function wfEscapeHTML( $in ) { return str_replace( - array( "&", "\"", ">", "<" ), - array( "&", """, ">", "<" ), + array( '&', '"', '>', '<' ), + array( '&', '"', '>', '<' ), $in ); } function wfEscapeHTMLTagsOnly( $in ) { return str_replace( - array( "\"", ">", "<" ), - array( """, ">", "<" ), + array( '"', '>', '<' ), + array( '"', '>', '<' ), $in ); } function wfUnescapeHTML( $in ) { - $in = str_replace( "<", "<", $in ); - $in = str_replace( ">", ">", $in ); - $in = str_replace( """, "\"", $in ); - $in = str_replace( "&", "&", $in ); + $in = str_replace( '<', '<', $in ); + $in = str_replace( '>', '>', $in ); + $in = str_replace( '"', '"', $in ); + $in = str_replace( '&', '&', $in ); return $in; } @@ -437,21 +438,21 @@ function wfImageDir( $fname ) $hash = md5( $fname ); $oldumask = umask(0); - $dest = $wgUploadDirectory . "/" . $hash{0}; + $dest = $wgUploadDirectory . '/' . $hash{0}; if ( ! is_dir( $dest ) ) { mkdir( $dest, 0777 ); } - $dest .= "/" . substr( $hash, 0, 2 ); + $dest .= '/' . substr( $hash, 0, 2 ); if ( ! is_dir( $dest ) ) { mkdir( $dest, 0777 ); } umask( $oldumask ); return $dest; } -function wfImageThumbDir( $fname , $subdir="thumb") +function wfImageThumbDir( $fname , $subdir='thumb') { return wfImageArchiveDir( $fname, $subdir ); } -function wfImageArchiveDir( $fname , $subdir="archive") +function wfImageArchiveDir( $fname , $subdir='archive') { global $wgUploadDirectory; @@ -462,9 +463,9 @@ function wfImageArchiveDir( $fname , $subdir="archive") # be written we'll worry about it then. $archive = "{$wgUploadDirectory}/{$subdir}"; if ( ! is_dir( $archive ) ) { @mkdir( $archive, 0777 ); } - $archive .= "/" . $hash{0}; + $archive .= '/' . $hash{0}; if ( ! is_dir( $archive ) ) { @mkdir( $archive, 0777 ); } - $archive .= "/" . substr( $hash, 0, 2 ); + $archive .= '/' . substr( $hash, 0, 2 ); if ( ! is_dir( $archive ) ) { @mkdir( $archive, 0777 ); } umask( $oldumask ); @@ -476,9 +477,9 @@ function wfRecordUpload( $name, $oldver, $size, $desc, $copyStatus = "", $source global $wgUser, $wgLang, $wgTitle, $wgOut, $wgDeferredUpdateList; global $wgUseCopyrightUpload; - $fname = "wfRecordUpload"; + $fname = 'wfRecordUpload'; - $sql = "SELECT img_name,img_size,img_timestamp,img_description,img_user," . + $sql = 'SELECT img_name,img_size,img_timestamp,img_description,img_user,' . "img_user_text FROM image WHERE img_name='" . wfStrencode( $name ) . "'"; $res = wfQuery( $sql, DB_READ, $fname ); @@ -488,9 +489,9 @@ function wfRecordUpload( $name, $oldver, $size, $desc, $copyStatus = "", $source if ( $wgUseCopyrightUpload ) { - $textdesc = "== " . wfMsg ( "filedesc" ) . " ==\n" . $desc . "\n" . - "== " . wfMsg ( "filestatus" ) . " ==\n" . $copyStatus . "\n" . - "== " . wfMsg ( "filesource" ) . " ==\n" . $source ; + $textdesc = '== ' . wfMsg ( 'filedesc' ) . " ==\n" . $desc . "\n" . + '== ' . wfMsg ( 'filestatus' ) . " ==\n" . $copyStatus . "\n" . + '== ' . wfMsg ( 'filesource' ) . " ==\n" . $source ; } else $textdesc = $desc ; @@ -498,14 +499,14 @@ function wfRecordUpload( $name, $oldver, $size, $desc, $copyStatus = "", $source $won = wfInvertTimestamp( $now ); if ( 0 == wfNumRows( $res ) ) { - $sql = "INSERT INTO image (img_name,img_size,img_timestamp," . + $sql = 'INSERT INTO image (img_name,img_size,img_timestamp,' . "img_description,img_user,img_user_text) VALUES ('" . wfStrencode( $name ) . "',$size,'{$now}','" . wfStrencode( $desc ) . "', '" . $wgUser->getID() . "', '" . wfStrencode( $wgUser->getName() ) . "')"; wfQuery( $sql, DB_WRITE, $fname ); - $sql = "SELECT cur_id,cur_text FROM cur WHERE cur_namespace=" . + $sql = 'SELECT cur_id,cur_text FROM cur WHERE cur_namespace=' . Namespace::getImage() . " AND cur_title='" . wfStrencode( $name ) . "'"; $res = wfQuery( $sql, DB_READ, $fname ); @@ -516,9 +517,9 @@ function wfRecordUpload( $name, $oldver, $size, $desc, $copyStatus = "", $source wfStrencode( $desc ) . "','" . $wgUser->getID() . "','" . wfStrencode( $wgUser->getName() ) . "','" . $now . "',1"; - $sql = "INSERT INTO cur (cur_namespace,cur_title," . - "cur_comment,cur_user,cur_user_text,cur_timestamp,cur_is_new," . - "cur_text,inverse_timestamp,cur_touched) VALUES (" . + $sql = 'INSERT INTO cur (cur_namespace,cur_title,' . + 'cur_comment,cur_user,cur_user_text,cur_timestamp,cur_is_new,' . + 'cur_text,inverse_timestamp,cur_touched) VALUES (' . $common . ",'" . wfStrencode( $textdesc ) . "','{$won}','{$now}')"; wfQuery( $sql, DB_WRITE, $fname ); @@ -533,7 +534,7 @@ function wfRecordUpload( $name, $oldver, $size, $desc, $copyStatus = "", $source } else { $s = wfFetchObject( $res ); - $sql = "INSERT INTO oldimage (oi_name,oi_archive_name,oi_size," . + $sql = 'INSERT INTO oldimage (oi_name,oi_archive_name,oi_size,' . "oi_timestamp,oi_description,oi_user,oi_user_text) VALUES ('" . wfStrencode( $s->img_name ) . "','" . wfStrencode( $oldver ) . @@ -557,10 +558,10 @@ function wfRecordUpload( $name, $oldver, $size, $desc, $copyStatus = "", $source wfQuery( $sql, DB_WRITE, $fname ); } - $log = new LogPage( wfMsg( "uploadlogpage" ), wfMsg( "uploadlogpagetext" ) ); - $da = wfMsg( "uploadedimage", "[[:" . $wgLang->getNsText( + $log = new LogPage( wfMsg( 'uploadlogpage' ), wfMsg( 'uploadlogpagetext' ) ); + $da = wfMsg( 'uploadedimage', '[[:' . $wgLang->getNsText( Namespace::getImage() ) . ":{$name}|{$name}]]" ); - $ta = wfMsg( "uploadedimage", $name ); + $ta = wfMsg( 'uploadedimage', $name ); $log->addEntry( $da, $desc, $ta ); } @@ -570,21 +571,21 @@ function wfRecordUpload( $name, $oldver, $size, $desc, $copyStatus = "", $source function wfShowingResults( $offset, $limit ) { global $wgLang; - return wfMsg( "showingresults", $wgLang->formatNum( $limit ), $wgLang->formatNum( $offset+1 ) ); + return wfMsg( 'showingresults', $wgLang->formatNum( $limit ), $wgLang->formatNum( $offset+1 ) ); } function wfShowingResultsNum( $offset, $limit, $num ) { global $wgLang; - return wfMsg( "showingresultsnum", $wgLang->formatNum( $limit ), $wgLang->formatNum( $offset+1 ), $wgLang->formatNum( $num ) ); + return wfMsg( 'showingresultsnum', $wgLang->formatNum( $limit ), $wgLang->formatNum( $offset+1 ), $wgLang->formatNum( $num ) ); } -function wfViewPrevNext( $offset, $limit, $link, $query = "", $atend = false ) +function wfViewPrevNext( $offset, $limit, $link, $query = '', $atend = false ) { global $wgUser, $wgLang; $fmtLimit = $wgLang->formatNum( $limit ); - $prev = wfMsg( "prevn", $fmtLimit ); - $next = wfMsg( "nextn", $fmtLimit ); + $prev = wfMsg( 'prevn', $fmtLimit ); + $next = wfMsg( 'nextn', $fmtLimit ); $link = wfUrlencode( $link ); $sk = $wgUser->getSkin(); @@ -592,8 +593,8 @@ function wfViewPrevNext( $offset, $limit, $link, $query = "", $atend = false ) $po = $offset - $limit; if ( $po < 0 ) { $po = 0; } $q = "limit={$limit}&offset={$po}"; - if ( "" != $query ) { $q .= "&{$query}"; } - $plink = "{$prev}"; + if ( '' != $query ) { $q .= "&{$query}"; } + $plink = '{$prev}"; } else { $plink = $prev; } $no = $offset + $limit; @@ -603,26 +604,26 @@ function wfViewPrevNext( $offset, $limit, $link, $query = "", $atend = false ) if ( $atend ) { $nlink = $next; } else { - $nlink = "{$next}"; + $nlink = '{$next}"; } - $nums = wfNumLink( $offset, 20, $link , $query ) . " | " . - wfNumLink( $offset, 50, $link, $query ) . " | " . - wfNumLink( $offset, 100, $link, $query ) . " | " . - wfNumLink( $offset, 250, $link, $query ) . " | " . + $nums = wfNumLink( $offset, 20, $link , $query ) . ' | ' . + wfNumLink( $offset, 50, $link, $query ) . ' | ' . + wfNumLink( $offset, 100, $link, $query ) . ' | ' . + wfNumLink( $offset, 250, $link, $query ) . ' | ' . wfNumLink( $offset, 500, $link, $query ); - return wfMsg( "viewprevnext", $plink, $nlink, $nums ); + return wfMsg( 'viewprevnext', $plink, $nlink, $nums ); } -function wfNumLink( $offset, $limit, $link, $query = "" ) +function wfNumLink( $offset, $limit, $link, $query = '' ) { global $wgUser, $wgLang; - if ( "" == $query ) { $q = ""; } + if ( '' == $query ) { $q = ''; } else { $q = "{$query}&"; } $q .= "limit={$limit}&offset={$offset}"; $fmtLimit = $wgLang->formatNum( $limit ); - $s = "{$fmtLimit}"; + $s = '{$fmtLimit}"; return $s; } @@ -632,9 +633,9 @@ function wfClientAcceptsGzip() { # FIXME: we may want to blacklist some broken browsers if( preg_match( '/\bgzip(?:;(q)=([0-9]+(?:\.[0-9]+)))?\b/', - $_SERVER["HTTP_ACCEPT_ENCODING"], + $_SERVER['HTTP_ACCEPT_ENCODING'], $m ) ) { - if( ( $m[1] == "q" ) && ( $m[2] == 0 ) ) return false; + if( ( $m[1] == 'q' ) && ( $m[2] == 0 ) ) return false; wfDebug( " accepts gzip\n" ); return true; } @@ -643,12 +644,12 @@ function wfClientAcceptsGzip() { } # Yay, more global functions! -function wfCheckLimits( $deflimit = 50, $optionname = "rclimit" ) { +function wfCheckLimits( $deflimit = 50, $optionname = 'rclimit' ) { global $wgUser, $wgRequest; $limit = $wgRequest->getInt( 'limit', 0 ); if( $limit < 0 ) $limit = 0; - if( ( $limit == 0 ) && ( $optionname != "" ) ) { + if( ( $limit == 0 ) && ( $optionname != '' ) ) { $limit = (int)$wgUser->getOption( $optionname ); } if( $limit <= 0 ) $limit = $deflimit; @@ -676,7 +677,7 @@ function wfEscapeWikiText( $text ) return $text; } -function wfQuotedPrintable( $string, $charset = "" ) +function wfQuotedPrintable( $string, $charset = '' ) { # Probably incomplete; see RFC 2045 if( empty( $charset ) ) { @@ -684,19 +685,19 @@ function wfQuotedPrintable( $string, $charset = "" ) $charset = $wgInputEncoding; } $charset = strtoupper( $charset ); - $charset = str_replace( "ISO-8859", "ISO8859", $charset ); // ? + $charset = str_replace( 'ISO-8859', 'ISO8859', $charset ); // ? $illegal = '\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\xff='; $replace = $illegal . '\t ?_'; if( !preg_match( "/[$illegal]/", $string ) ) return $string; $out = "=?$charset?Q?"; $out .= preg_replace( "/([$replace])/e", 'sprintf("=%02X",ord("$1"))', $string ); - $out .= "?="; + $out .= '?='; return $out; } function wfTime(){ - $st = explode( " ", microtime() ); + $st = explode( ' ', microtime() ); return (float)$st[0] + (float)$st[1]; } @@ -716,11 +717,10 @@ function wfSetVar( &$dest, $source ) } # Sets dest to a reference to source and returns the original dest +# Pity that doesn't work in PHP function &wfSetRef( &$dest, &$source ) { - $temp =& $dest; - $dest =& $source; - return $temp; + die( "You can't rebind a variable in the caller's scope" ); } # This function takes two arrays as input, and returns a CGI-style string, e.g. @@ -732,11 +732,11 @@ function wfArrayToCGI( $array1, $array2 = NULL ) $array1 = $array1 + $array2; } - $cgi = ""; + $cgi = ''; foreach ( $array1 as $key => $value ) { - if ( "" !== $value ) { - if ( "" != $cgi ) { - $cgi .= "&"; + if ( '' !== $value ) { + if ( '' != $cgi ) { + $cgi .= '&'; } $cgi .= "{$key}={$value}"; } @@ -754,15 +754,15 @@ function wfEscapeShellArg( ) { $args = func_get_args(); $first = true; - $retVal = ""; + $retVal = ''; foreach ( $args as $arg ) { if ( !$first ) { - $retVal .= " "; + $retVal .= ' '; } else { $first = false; } - if (substr(php_uname(), 0, 7) == "Windows") { + if ( wfIsWindows() ) { $retVal .= '"' . str_replace( '"','\"', $arg ) . '"'; } else { $retVal .= escapeshellarg( $arg ); @@ -784,21 +784,21 @@ function wfMerge( $old, $mine, $yours, &$result ){ } # Make temporary files - $td = "/tmp/"; - $oldtextFile = fopen( $oldtextName = tempnam( $td, "merge-old-" ), "w" ); - $mytextFile = fopen( $mytextName = tempnam( $td, "merge-mine-" ), "w" ); - $yourtextFile = fopen( $yourtextName = tempnam( $td, "merge-your-" ), "w" ); + $td = '/tmp/'; + $oldtextFile = fopen( $oldtextName = tempnam( $td, 'merge-old-' ), 'w' ); + $mytextFile = fopen( $mytextName = tempnam( $td, 'merge-mine-' ), 'w' ); + $yourtextFile = fopen( $yourtextName = tempnam( $td, 'merge-your-' ), 'w' ); fwrite( $oldtextFile, $old ); fclose( $oldtextFile ); fwrite( $mytextFile, $mine ); fclose( $mytextFile ); fwrite( $yourtextFile, $yours ); fclose( $yourtextFile ); # Check for a conflict - $cmd = wfEscapeShellArg( $wgDiff3 ) . " -a --overlap-only " . - wfEscapeShellArg( $mytextName ) . " " . - wfEscapeShellArg( $oldtextName ) . " " . + $cmd = wfEscapeShellArg( $wgDiff3 ) . ' -a --overlap-only ' . + wfEscapeShellArg( $mytextName ) . ' ' . + wfEscapeShellArg( $oldtextName ) . ' ' . wfEscapeShellArg( $yourtextName ); - $handle = popen( $cmd, "r" ); + $handle = popen( $cmd, 'r' ); if( fgets( $handle ) ){ $conflict = true; @@ -808,10 +808,10 @@ function wfMerge( $old, $mine, $yours, &$result ){ pclose( $handle ); # Merge differences - $cmd = wfEscapeShellArg( $wgDiff3 ) . " -a -e --merge " . + $cmd = wfEscapeShellArg( $wgDiff3 ) . ' -a -e --merge ' . wfEscapeShellArg( $mytextName, $oldtextName, $yourtextName ); - $handle = popen( $cmd, "r" ); - $result = ""; + $handle = popen( $cmd, 'r' ); + $result = ''; do { $data = fread( $handle, 8192 ); if ( strlen( $data ) == 0 ) { @@ -845,13 +845,13 @@ function wfHttpError( $code, $label, $desc ) { # Don't send content if it's a HEAD request. if( $_SERVER['REQUEST_METHOD'] == 'HEAD' ) { - header( "Content-type: text/plain" ); + header( 'Content-type: text/plain' ); print "$desc\n"; } } # Converts an Accept-* header into an array mapping string values to quality factors -function wfAcceptToPrefs( $accept, $def = "*/*" ) { +function wfAcceptToPrefs( $accept, $def = '*/*' ) { # No arg means accept anything (per HTTP spec) if( !$accept ) { return array( $def => 1 ); @@ -859,11 +859,11 @@ function wfAcceptToPrefs( $accept, $def = "*/*" ) { $prefs = array(); - $parts = explode( ",", $accept ); + $parts = explode( ',', $accept ); foreach( $parts as $part ) { # FIXME: doesn't deal with params like 'text/html; level=1' - @list( $value, $qpart ) = explode( ";", $part ); + @list( $value, $qpart ) = explode( ';', $part ); if( !isset( $qpart ) ) { $prefs[$value] = 1; } elseif( preg_match( '/q\s*=\s*(\d*\.\d+)/', $qpart, $match ) ) { @@ -935,4 +935,14 @@ function wfArrayLookup( $a, $b ) return array_flip( array_intersect( array_flip( $a ), array_keys( $b ) ) ); } +# Since Windows is so different to any of the other popular OSes, it seems appropriate +# to have a simple way to test for its presence +function wfIsWindows() { + if (substr(php_uname(), 0, 7) == 'Windows') { + return true; + } else { + return false; + } +} + ?> diff --git a/includes/LinkCache.php b/includes/LinkCache.php index d2e188003cf2..4f7b03a227fa 100644 --- a/includes/LinkCache.php +++ b/includes/LinkCache.php @@ -302,34 +302,51 @@ class LinkCache { } /* private */ function saveToLinkscc( $pid ){ - global $wgCompressedPersistentLC; + global $wgCompressedPersistentLC, $wgIsMySQL; if( $wgCompressedPersistentLC and function_exists( "gzcompress" ) ) { $ser = wfStrencode( gzcompress( serialize( $this ), 3 )); } else { $ser = wfStrencode( serialize( $this ) ); } - wfQuery("REPLACE INTO linkscc(lcc_pageid,lcc_cacheobj) " . - "VALUES({$pid}, '{$ser}')", DB_WRITE); + if ($wgIsMySQL) { + wfQuery("REPLACE INTO linkscc(lcc_pageid,lcc_cacheobj) " . + "VALUES({$pid}, '{$ser}')", DB_WRITE); + } else { + wfQuery("DELETE FROM linkscc WHERE lcc_pageid={$pid}",DB_WRITE); + wfQuery("INSERT INTO linkscc(lcc_pageid,lcc_cacheobj) " . + "VALUES({$pid}, '{$ser}')", DB_WRITE); + } } # $pid is a page id /* static */ function linksccClearLinksTo( $pid ){ - global $wgEnablePersistentLC; + global $wgEnablePersistentLC, $wgIsMySQL; if ( $wgEnablePersistentLC ) { $pid = intval( $pid ); - wfQuery("DELETE linkscc FROM linkscc,links ". - "WHERE lcc_pageid=links.l_from AND l_to={$pid}", DB_WRITE); - wfQuery("DELETE FROM linkscc WHERE lcc_pageid='{$pid}'", DB_WRITE); + if ($wgIsMySQL) { + wfQuery("DELETE linkscc FROM linkscc,links ". + "WHERE lcc_pageid=links.l_from AND l_to={$pid}", DB_WRITE); + } else { + wfQuery("DELETE FROM linkscc WHERE lcc_pageid IN ". + "(SELECT l_from FROM links WHERE l_to={$pid}", DB_WRITE); + } + wfQuery("DELETE FROM linkscc WHERE lcc_pageid='{$pid}')", DB_WRITE); } } # $title is a prefixed db title, for example like Title->getPrefixedDBkey() returns. /* static */ function linksccClearBrokenLinksTo( $title ){ - global $wgEnablePersistentLC; + global $wgEnablePersistentLC,$wgIsMySQL; if ( $wgEnablePersistentLC ) { $title = wfStrencode( $title ); - wfQuery("DELETE linkscc FROM linkscc,brokenlinks ". - "WHERE lcc_pageid=bl_from AND bl_to='{$title}'", DB_WRITE); + if ($wgIsMySQL) { + wfQuery("DELETE linkscc FROM linkscc,brokenlinks ". + "WHERE lcc_pageid=bl_from AND bl_to='{$title}'", DB_WRITE); + } else { + wfQuery("DELETE FROM linkscc WHERE lcc_pageid IN ". + "(SELECT bl_from FROM brokenlinks ". + "WHERE bl_to='{$title}')",DB_WRITE); + } } } diff --git a/includes/Math.php b/includes/Math.php index 5946061fb48f..8b03af6adcbb 100644 --- a/includes/Math.php +++ b/includes/Math.php @@ -30,7 +30,7 @@ class MathRenderer { if( $this->mode == MW_MATH_SOURCE ) { # No need to render or parse anything more! - return ('$ '.htmlspecialchars( $tex ).' $'); + return ('$ '.htmlspecialchars( $this->tex ).' $'); } if( !$this->_recall() ) { @@ -182,7 +182,7 @@ class MathRenderer { (($this->mode == MW_MATH_MODERN || $this->mode == MW_MATH_MATHML) && ($this->conservativeness == 0))) { return $this->_linkToMathImage(); } else { - return $this->html; + return ''.$this->html.''; } } diff --git a/includes/ObjectCache.php b/includes/ObjectCache.php index 00864c6b16b1..ce511ff37b10 100644 --- a/includes/ObjectCache.php +++ b/includes/ObjectCache.php @@ -1,4 +1,6 @@ # http://www.mediawiki.org/ # @@ -69,8 +71,10 @@ class /* abstract */ BagOStuff { } function add($key, $value, $exptime=0) { - if( $this->get($key) === false ) + if( $this->get($key) == false ) { $this->set($key, $value, $exptime); + return true; + } } function add_multi($hash, $exptime=0) { @@ -114,7 +118,7 @@ class /* abstract */ BagOStuff { function _debug($text) { if($this->debugmode) - echo "\ndebug: $text\n"; + wfDebug("BagOStuff debug: $text\n"); } } @@ -187,9 +191,9 @@ class /* abstract */ SqlBagOStuff extends BagOStuff { $this->_debug("get: ** error: " . $this->_dberror($res) . " **"); return false; } - if($arr = $this->_fetchrow($res)) { - $this->_debug("get: retrieved data; exp time is " . $arr['exptime']); - return unserialize($arr['value']); + if($row=$this->_fetchobject($res)) { + $this->_debug("get: retrieved data; exp time is " . $row->exptime); + return unserialize($row->value); } else { $this->_debug("get: no matching rows"); } @@ -208,8 +212,8 @@ class /* abstract */ SqlBagOStuff extends BagOStuff { } $this->delete( $key ); $this->_query( - "INSERT INTO $0 (keyname,value,exptime) VALUES('$1','$2',$exp)", - $key, serialize(&$value)); + "INSERT INTO $0 (keyname,value,exptime) VALUES('$1','$2','$exp')", + $key, serialize($value)); return true; /* ? */ } @@ -230,7 +234,7 @@ class /* abstract */ SqlBagOStuff extends BagOStuff { $sql); } $res = $this->_doquery($sql); - if($res === false) { + if($res == false) { $this->_debug("query failed: " . $this->_dberror($res)); } return $res; @@ -269,7 +273,8 @@ class /* abstract */ SqlBagOStuff extends BagOStuff { function expireall() { /* Remove any items that have expired */ - $this->_query( "DELETE FROM $0 WHERE exptime<=NOW()" ); + $now=$this->_fromunixtime(time()); + $this->_query( "DELETE FROM $0 WHERE exptime<'$now'" ); } function deleteall() { @@ -278,42 +283,27 @@ class /* abstract */ SqlBagOStuff extends BagOStuff { } } -class MysqlBagOStuff extends SqlBagOStuff { +class MediaWikiBagOStuff extends SqlBagOStuff { function _doquery($sql) { - return mysql_query($sql); + return wfQuery($sql, DB_READ, "MediaWikiBagOStuff:_doquery"); } - function _fetchrow($result) { - return mysql_fetch_array($result); + function _fetchobject($result) { + return wfFetchObject($result); } function _freeresult($result) { - return mysql_free_result($result); + return wfFreeResult($result); } function _dberror($result) { - if($result) - return mysql_error($result); - else - return mysql_error(); + return wfLastError(); } - function _maxdatetime() { - return "'9999-12-31 12:59:59'"; + return "9999-12-31 12:59:59"; } - function _fromunixtime($ts) { - return "FROM_UNIXTIME($ts)"; + return gmdate( "Y-m-d H:i:s", $ts ); } - function _strencode($s) { - return mysql_escape_string($s); - } -} - -class MediaWikiBagOStuff extends MysqlBagOStuff { - function _doquery($sql) { - return wfQuery($sql, DB_READ, "MediaWikiBagOStuff:_doquery"); - } - function _freeresult($result) { - return wfFreeResult($result); + return wfStrEncode($s); } } diff --git a/includes/PageHistory.php b/includes/PageHistory.php index 34c6856dd092..56f673fa744d 100644 --- a/includes/PageHistory.php +++ b/includes/PageHistory.php @@ -17,7 +17,7 @@ class PageHistory { function history() { - global $wgUser, $wgOut, $wgLang; + global $wgUser, $wgOut, $wgLang, $wgIsMySQL, $wgIsPg; # If page hasn't changed, client can cache this @@ -54,12 +54,14 @@ class PageHistory { $namespace = $this->mTitle->getNamespace(); $title = $this->mTitle->getText(); + $use_index=$wgIsMySQL?"USE INDEX (name_title_timestamp)":""; + $oldtable=$wgIsPg?'"old"':'old'; $sql = "SELECT old_id,old_user," . "old_comment,old_user_text,old_timestamp,old_minor_edit ". - "FROM old USE INDEX (name_title_timestamp) " . + "FROM $oldtable $use_index " . "WHERE old_namespace={$namespace} AND " . "old_title='" . wfStrencode( $this->mTitle->getDBkey() ) . "' " . - "ORDER BY inverse_timestamp LIMIT $rawoffset, $limitplus"; + "ORDER BY inverse_timestamp".wfLimitResult($limitplus,$rawoffset); $res = wfQuery( $sql, DB_READ, $fname ); $revs = wfNumRows( $res ); @@ -77,10 +79,12 @@ class PageHistory { $this->mTitle->getPrefixedText(), "action=history", $atend ); $s = $numbar; - $this->submitbuttonhtml = ( $this->linesonpage > 1) ? '" : - ''; + if($this->linesonpage > 0) { + $submitpart1 = 'submitbuttonhtml1 = $submitpart1 . ' />'; + $this->submitbuttonhtml2 = $submitpart1 . ' id="historysubmit" />'; + } $s .= $this->beginHistoryList(); $counter = 1; if( $offset == 0 ){ @@ -116,7 +120,7 @@ class PageHistory { $s = "\n

      " . wfMsg( "histlegend" ).'

      '; $s .="\nescapeLocalURL( '-' ) . "\" method=\"get\">"; $s .= "getPrefixedDbKey())."\"/>\n"; - $s .= !empty($this->submitbuttonhtml) ? $this->submitbuttonhtml."\n":''; + $s .= !empty($this->submitbuttonhtml1) ? $this->submitbuttonhtml1."\n":''; $s .= "" . "\n
        "; return $s; } @@ -127,7 +131,7 @@ class PageHistory { $s = $skip ? "" : preg_replace( "/!OLDID![0-9]+!/", $last, $this->lastline ); $s .= "
      "; - $s .= !empty($this->submitbuttonhtml) ? $this->submitbuttonhtml."\n":''; + $s .= !empty($this->submitbuttonhtml2) ? $this->submitbuttonhtml2."\n":''; $s .= "\n"; return $s; } diff --git a/includes/Parser.php b/includes/Parser.php index 9be150ff544a..5d6a7c7bcc94 100644 --- a/includes/Parser.php +++ b/includes/Parser.php @@ -2,13 +2,6 @@ // require_once('Tokenizer.php'); -if( $GLOBALS['wgUseWikiHiero'] ){ - require_once('extensions/wikihiero/wikihiero.php'); -} -if( $GLOBALS['wgUseTimeline'] ){ - require_once('extensions/timeline/Timeline.php'); -} - # PHP Parser # # Processes wiki markup @@ -55,6 +48,9 @@ define( "UNIQ_PREFIX", "NaodW29"); class Parser { + # Persistent: + var $mTagHooks; + # Cleared with clearState(): var $mOutput, $mAutonumber, $mDTopen, $mStripState = array(); var $mVariables, $mIncludeCount, $mArgStack, $mLastSection, $mInPre; @@ -62,13 +58,12 @@ class Parser # Temporary: var $mOptions, $mTitle, $mOutputType; - function Parser() - { + function Parser() { + $this->mTagHooks = array(); $this->clearState(); } - function clearState() - { + function clearState() { $this->mOutput = new ParserOutput; $this->mAutonumber = 0; $this->mLastSection = ""; @@ -85,8 +80,7 @@ class Parser # # Returns a ParserOutput # - function parse( $text, &$title, $options, $linestart = true, $clearState = true ) - { + function parse( $text, &$title, $options, $linestart = true, $clearState = true ) { global $wgUseTidy; $fname = "Parser::parse"; wfProfileIn( $fname ); @@ -108,13 +102,13 @@ class Parser $fixtags = array( # french spaces, last one Guillemet-left # only if there is something before the space - "/(.) (\\?|:|!|\\302\\273)/i"=>"\\1 \\2", + '/(.) (\\?|:|!|\\302\\273)/i' => '\\1 \\2', # french spaces, Guillemet-right "/(\\302\\253) /i"=>"\\1 ", - "/
      /i" => '
      ', - "/
      /i" => '
      ', - "/
      /i"=>'
      ', - "/<\\/center *>/i" => '
      ', + '/
      /i' => '
      ', + '/
      /i' => '
      ', + '/
      /i' => '
      ', + '/<\\/center *>/i' => '
      ', # Clean up spare ampersands; note that we probably ought to be # more careful about named entities. '/&(?!:amp;|#[Xx][0-9A-fa-f]+;|#[0-9]+;|[a-zA-Z0-9]+;)/' => '&' @@ -123,11 +117,11 @@ class Parser } else { $fixtags = array( # french spaces, last one Guillemet-left - "/ (\\?|:|!|\\302\\273)/i"=>" \\1", + '/ (\\?|:|!|\\302\\273)/i' => ' \\1', # french spaces, Guillemet-right - "/(\\302\\253) /i"=>"\\1 ", - "/
      /i"=>'
      ', - "/<\\/center *>/i" => '
      ' + '/(\\302\\253) /i' => '\\1 ', + '/
      /i' => '
      ', + '/<\\/center *>/i' => '
      ' ); $text = preg_replace( array_keys($fixtags), array_values($fixtags), $text ); } @@ -142,8 +136,7 @@ class Parser return $this->mOutput; } - /* static */ function getRandomString() - { + /* static */ function getRandomString() { return dechex(mt_rand(0, 0x7fffffff)) . dechex(mt_rand(0, 0x7fffffff)); } @@ -163,24 +156,24 @@ class Parser $content = array( ); } $n = 1; - $stripped = ""; + $stripped = ''; - while ( "" != $text ) { + while ( '' != $text ) { if($tag==STRIP_COMMENTS) { - $p = preg_split( "//i", $p[1], 2 ); + $q = preg_split( '/-->/i', $p[1], 2 ); } else { $q = preg_split( "/<\\/\\s*$tag\\s*>/i", $p[1], 2 ); } - $marker = $rnd . sprintf("%08X", $n++); + $marker = $rnd . sprintf('%08X', $n++); $content[$marker] = $q[0]; $stripped .= $marker; $text = $q[1]; @@ -198,21 +191,21 @@ class Parser # will be stripped in addition to other tags. This is important # for section editing, where these comments cause confusion when # counting the sections in the wikisource - function strip( $text, &$state, $stripcomments = false ) - { + function strip( $text, &$state, $stripcomments = false ) { $render = ($this->mOutputType == OT_HTML); $nowiki_content = array(); - $hiero_content = array(); - $timeline_content = array(); $math_content = array(); $pre_content = array(); $comment_content = array(); - + $ext_content = array(); + # Replace any instances of the placeholders $uniq_prefix = UNIQ_PREFIX; #$text = str_replace( $uniq_prefix, wfHtmlEscapeFirst( $uniq_prefix ), $text ); - $text = Parser::extractTags("nowiki", $text, $nowiki_content, $uniq_prefix); + + # nowiki + $text = Parser::extractTags('nowiki', $text, $nowiki_content, $uniq_prefix); foreach( $nowiki_content as $marker => $content ){ if( $render ){ $nowiki_content[$marker] = wfEscapeHTMLTagsOnly( $content ); @@ -221,25 +214,8 @@ class Parser } } - $text = Parser::extractTags("hiero", $text, $hiero_content, $uniq_prefix); - foreach( $hiero_content as $marker => $content ){ - if( $render && $GLOBALS['wgUseWikiHiero']){ - $hiero_content[$marker] = WikiHiero( $content, WH_MODE_HTML); - } else { - $hiero_content[$marker] = "$content"; - } - } - - $text = Parser::extractTags("timeline", $text, $timeline_content, $uniq_prefix); - foreach( $timeline_content as $marker => $content ){ - if( $render && $GLOBALS['wgUseTimeline']){ - $timeline_content[$marker] = renderTimeline( $content ); - } else { - $timeline_content[$marker] = "$content"; - } - } - - $text = Parser::extractTags("math", $text, $math_content, $uniq_prefix); + # math + $text = Parser::extractTags('math', $text, $math_content, $uniq_prefix); foreach( $math_content as $marker => $content ){ if( $render ) { if( $this->mOptions->getUseTeX() ) { @@ -252,14 +228,17 @@ class Parser } } - $text = Parser::extractTags("pre", $text, $pre_content, $uniq_prefix); + # pre + $text = Parser::extractTags('pre', $text, $pre_content, $uniq_prefix); foreach( $pre_content as $marker => $content ){ if( $render ){ - $pre_content[$marker] = "
      " . wfEscapeHTMLTagsOnly( $content ) . "
      "; + $pre_content[$marker] = '
      ' . wfEscapeHTMLTagsOnly( $content ) . '
      '; } else { $pre_content[$marker] = "
      $content
      "; } } + + # Comments if($stripcomments) { $text = Parser::extractTags(STRIP_COMMENTS, $text, $comment_content, $uniq_prefix); foreach( $comment_content as $marker => $content ){ @@ -267,30 +246,44 @@ class Parser } } + # Extensions + foreach ( $this->mTagHooks as $tag => $callback ) { + $ext_contents[$tag] = array(); + $text = Parser::extractTags( $tag, $text, $ext_content[$tag], $uniq_prefix ); + foreach( $ext_content[$tag] as $marker => $content ) { + if ( $render ) { + $ext_content[$tag][$marker] = $callback( $content ); + } else { + $ext_content[$tag][$marker] = "<$tag>$content"; + } + } + } + # Merge state with the pre-existing state, if there is one if ( $state ) { $state['nowiki'] = $state['nowiki'] + $nowiki_content; - $state['hiero'] = $state['hiero'] + $hiero_content; - $state['timeline'] = $state['timeline'] + $timeline_content; $state['math'] = $state['math'] + $math_content; $state['pre'] = $state['pre'] + $pre_content; $state['comment'] = $state['comment'] + $comment_content; + + foreach( $ext_content as $tag => $array ) { + if ( array_key_exists( $tag, $state ) ) { + $state[$tag] = $state[$tag] + $array; + } + } } else { $state = array( 'nowiki' => $nowiki_content, - 'hiero' => $hiero_content, - 'timeline' => $timeline_content, 'math' => $math_content, 'pre' => $pre_content, - 'comment' => $comment_content - ); + 'comment' => $comment_content, + ) + $ext_content; } return $text; } # always call unstripNoWiki() after this one - function unstrip( $text, &$state ) - { + function unstrip( $text, &$state ) { # Must expand in reverse order, otherwise nested tags will be corrupted $contentDict = end( $state ); for ( $contentDict = end( $state ); $contentDict !== false; $contentDict = prev( $state ) ) { @@ -304,8 +297,7 @@ class Parser return $text; } # always call this after unstrip() to preserve the order - function unstripNoWiki( $text, &$state ) - { + function unstripNoWiki( $text, &$state ) { # Must expand in reverse order, otherwise nested tags will be corrupted for ( $content = end($state['nowiki']); $content !== false; $content = prev( $state['nowiki'] ) ) { $text = str_replace( key( $state['nowiki'] ), $content, $text ); @@ -318,13 +310,11 @@ class Parser # Returns the unique tag which must be inserted into the stripped text # The tag will be replaced with the original text in unstrip() - function insertStripItem( $text, &$state ) - { + function insertStripItem( $text, &$state ) { $rnd = UNIQ_PREFIX . '-item' . Parser::getRandomString(); if ( !$state ) { $state = array( 'nowiki' => array(), - 'hiero' => array(), 'math' => array(), 'pre' => array() ); @@ -333,9 +323,24 @@ class Parser return $rnd; } + # categoryMagic + # generate a list of subcategories and pages for a category + # depending on wfMsg("usenewcategorypage") it either calls the new + # or the old code. The new code will not work properly for some + # languages due to sorting issues, so they might want to turn it + # off. + function categoryMagic() { + $msg = wfMsg('usenewcategorypage'); + if ( '0' == @$msg[0] ) + { + return $this->oldCategoryMagic(); + } else { + return $this->newCategoryMagic(); + } + } + # This method generates the list of subcategories and pages for a category - function categoryMagic () - { + function oldCategoryMagic () { global $wgLang , $wgUser ; if ( !$this->mOptions->getUseCategoryMagic() ) return ; # Doesn't use categories at all @@ -375,16 +380,194 @@ class Parser # Showing subcategories if ( count ( $children ) > 0 ) { - $r .= "

      ".wfMsg("subcategories")."

      \n" ; - $r .= implode ( ", " , $children ) ; + $r .= '

      '.wfMsg('subcategories')."

      \n" ; + $r .= implode ( ', ' , $children ) ; } # Showing pages in this category if ( count ( $articles ) > 0 ) { $ti = $this->mTitle->getText() ; - $h = wfMsg( "category_header", $ti ); + $h = wfMsg( 'category_header', $ti ); $r .= "

      {$h}

      \n" ; - $r .= implode ( ", " , $articles ) ; + $r .= implode ( ', ' , $articles ) ; + } + + + return $r ; + } + + + + function newCategoryMagic () { + global $wgLang , $wgUser ; + if ( !$this->mOptions->getUseCategoryMagic() ) return ; # Doesn't use categories at all + + $cns = Namespace::getCategory() ; + if ( $this->mTitle->getNamespace() != $cns ) return '' ; # This ain't a category page + + $r = "
      \n"; + + + $sk =& $wgUser->getSkin() ; + + $articles = array() ; + $articles_start_char = array(); + $children = array() ; + $children_start_char = array(); + $data = array () ; + $id = $this->mTitle->getArticleID() ; + + # FIXME: add limits + $t = wfStrencode( $this->mTitle->getDBKey() ); + $sql = "SELECT DISTINCT cur_title,cur_namespace,cl_sortkey FROM +cur,categorylinks WHERE cl_to='$t' AND cl_from=cur_id ORDER BY +cl_sortkey" ; + $res = wfQuery ( $sql, DB_READ ) ; + while ( $x = wfFetchObject ( $res ) ) + { + $t = $ns = $wgLang->getNsText ( $x->cur_namespace ) ; + if ( $t != '' ) $t .= ':' ; + $t .= $x->cur_title ; + + if ( $x->cur_namespace == $cns ) { + $ctitle = str_replace( '_',' ',$x->cur_title ); + array_push ( $children, $sk->makeKnownLink ( $t, $ctitle ) ) ; # Subcategory + + // If there's a link from Category:A to Category:B, the sortkey of the resulting + // entry in the categorylinks table is Category:A, not A, which it SHOULD be. + // Workaround: If sortkey == "Category:".$title, than use $title for sorting, + // else use sortkey... + if ( ($ns.":".$ctitle) == $x->cl_sortkey ) { + array_push ( $children_start_char, $wgLang->firstChar( $x->cur_title ) ); + } else { + array_push ( $children_start_char, $wgLang->firstChar( $x->cl_sortkey ) ) ; + } + } else { + array_push ( $articles , $sk->makeLink ( $t ) ) ; # Page in this category + array_push ( $articles_start_char, $wgLang->firstChar( $x->cl_sortkey ) ) ; + } + } + wfFreeResult ( $res ) ; + + $ti = $this->mTitle->getText() ; + + # Don't show subcategories section if there are none. + if ( count ( $children ) > 0 ) + { + # Showing subcategories + $r .= '

      ' . wfMsg( 'subcategories' ) . "

      \n" + . wfMsg( 'subcategorycount', count( $children ) ); + if ( count ( $children ) > 6 ) { + + // divide list into three equal chunks + $chunk = (int) (count ( $children ) / 3); + + // get and display header + $r .= ''; + + $startChunk = 0; + $endChunk = $chunk; + + // loop through the chunks + for($startChunk = 0, $endChunk = $chunk, $chunkIndex = 0; + $chunkIndex < 3; + $chunkIndex++, $startChunk = $endChunk, $endChunk += $chunk + 1) + { + + $r .= ''; + + + } + $r .= '
        '; + // output all subcategories to category + for ($index = $startChunk ; + $index < $endChunk && $index < count($children); + $index++ ) + { + // check for change of starting letter or begging of chunk + if ( ($children_start_char[$index] != $children_start_char[$index - 1]) + || ($index == $startChunk) ) + { + $r .= "

      {$children_start_char[$index]}

      \n
        "; + } + + $r .= "
      • {$children[$index]}
      • "; + } + $r .= '
      '; + } else { + // for short lists of subcategories to category. + + $r .= "

      {$children_start_char[0]}

      \n"; + $r .= '
      • '.$children[0].'
      • '; + for ($index = 1; $index < count($children); $index++ ) + { + if ($children_start_char[$index] != $children_start_char[$index - 1]) + { + $r .= "

      {$children_start_char[$index]}

      \n
        "; + } + + $r .= "
      • {$children[$index]}
      • "; + } + $r .= '
      '; + } + } # END of if ( count($children) > 0 ) + + $r .= '

      ' . wfMsg( 'category_header', $ti ) . "

      \n" . + wfMsg( 'categoryarticlecount', count( $articles ) ); + + # Showing articles in this category + if ( count ( $articles ) > 6) { + $ti = $this->mTitle->getText() ; + + // divide list into three equal chunks + $chunk = (int) (count ( $articles ) / 3); + + // get and display header + $r .= ''; + + // loop through the chunks + for($startChunk = 0, $endChunk = $chunk, $chunkIndex = 0; + $chunkIndex < 3; + $chunkIndex++, $startChunk = $endChunk, $endChunk += $chunk + 1) + { + + $r .= ''; + + + } + $r .= '
        '; + + // output all articles in category + for ($index = $startChunk ; + $index < $endChunk && $index < count($articles); + $index++ ) + { + // check for change of starting letter or begging of chunk + if ( ($articles_start_char[$index] != $articles_start_char[$index - 1]) + || ($index == $startChunk) ) + { + $r .= "

      {$articles_start_char[$index]}

      \n
        "; + } + + $r .= "
      • {$articles[$index]}
      • "; + } + $r .= '
      '; + } elseif ( count ( $articles ) > 0) { + // for short lists of articles in categories. + $ti = $this->mTitle->getText() ; + + $r .= '

      '.$articles_start_char[0]."

      \n"; + $r .= '
      • '.$articles[0].'
      • '; + for ($index = 1; $index < count($articles); $index++ ) + { + if ($articles_start_char[$index] != $articles_start_char[$index - 1]) + { + $r .= "

      {$articles_start_char[$index]}

      \n
        "; + } + + $r .= "
      • {$articles[$index]}
      • "; + } + $r .= '
      '; } @@ -392,42 +575,40 @@ class Parser } # Return allowed HTML attributes - function getHTMLattrs () - { + function getHTMLattrs () { $htmlattrs = array( # Allowed attributes--no scripting, etc. - "title", "align", "lang", "dir", "width", "height", - "bgcolor", "clear", /* BR */ "noshade", /* HR */ - "cite", /* BLOCKQUOTE, Q */ "size", "face", "color", - /* FONT */ "type", "start", "value", "compact", + 'title', 'align', 'lang', 'dir', 'width', 'height', + 'bgcolor', 'clear', /* BR */ 'noshade', /* HR */ + 'cite', /* BLOCKQUOTE, Q */ 'size', 'face', 'color', + /* FONT */ 'type', 'start', 'value', 'compact', /* For various lists, mostly deprecated but safe */ - "summary", "width", "border", "frame", "rules", - "cellspacing", "cellpadding", "valign", "char", - "charoff", "colgroup", "col", "span", "abbr", "axis", - "headers", "scope", "rowspan", "colspan", /* Tables */ - "id", "class", "name", "style" /* For CSS */ + 'summary', 'width', 'border', 'frame', 'rules', + 'cellspacing', 'cellpadding', 'valign', 'char', + 'charoff', 'colgroup', 'col', 'span', 'abbr', 'axis', + 'headers', 'scope', 'rowspan', 'colspan', /* Tables */ + 'id', 'class', 'name', 'style' /* For CSS */ ); return $htmlattrs ; } # Remove non approved attributes and javascript in css - function fixTagAttributes ( $t ) - { - if ( trim ( $t ) == "" ) return "" ; # Saves runtime ;-) + function fixTagAttributes ( $t ) { + if ( trim ( $t ) == '' ) return '' ; # Saves runtime ;-) $htmlattrs = $this->getHTMLattrs() ; # Strip non-approved attributes from the tag $t = preg_replace( - "/(\\w+)(\\s*=\\s*([^\\s\">]+|\"[^\">]*\"))?/e", + '/(\\w+)(\\s*=\\s*([^\\s\">]+|\"[^\">]*\"))?/e', "(in_array(strtolower(\"\$1\"),\$htmlattrs)?(\"\$1\".((\"x\$3\" != \"x\")?\"=\$3\":'')):'')", $t); # Strip javascript "expression" from stylesheets. Brute force approach: # If anythin offensive is found, all attributes of the HTML tag are dropped if( preg_match( - "/style\\s*=.*(expression|tps*:\/\/|url\\s*\().*/is", + '/style\\s*=.*(expression|tps*:\/\/|url\\s*\().*/is', wfMungeToUtf8( $t ) ) ) { - $t=""; + $t=''; } return trim ( $t ) ; @@ -437,7 +618,7 @@ class Parser function tidy ( $text ) { global $wgTidyConf, $wgTidyBin, $wgTidyOpts; global $wgInputEncoding, $wgOutputEncoding; - $fname = "Parser::tidy"; + $fname = 'Parser::tidy'; wfProfileIn( $fname ); $cleansource = ''; @@ -456,9 +637,9 @@ class Parser ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'. 'test'.$text.''; $descriptorspec = array( - 0 => array("pipe", "r"), - 1 => array("pipe", "w"), - 2 => array("file", "/dev/null", "a") + 0 => array('pipe', 'r'), + 1 => array('pipe', 'w'), + 2 => array('file', '/dev/null', 'a') ); $process = proc_open("$wgTidyBin -config $wgTidyConf $wgTidyOpts", $descriptorspec, $pipes); if (is_resource($process)) { @@ -482,8 +663,7 @@ class Parser } # parse the wiki syntax used to render tables - function doTableStuff ( $t ) - { + function doTableStuff ( $t ) { $t = explode ( "\n" , $t ) ; $td = array () ; # Is currently a td tag open? $ltd = array () ; # Was it TD or TH? @@ -493,20 +673,20 @@ class Parser { $x = trim ( $x ) ; $fc = substr ( $x , 0 , 1 ) ; - if ( "{|" == substr ( $x , 0 , 2 ) ) + if ( '{|' == substr ( $x , 0 , 2 ) ) { - $t[$k] = "\nfixTagAttributes ( substr ( $x , 3 ) ) . ">" ; + $t[$k] = "\n
      fixTagAttributes ( substr ( $x , 3 ) ) . '>' ; array_push ( $td , false ) ; - array_push ( $ltd , "" ) ; + array_push ( $ltd , '' ) ; array_push ( $tr , false ) ; - array_push ( $ltr , "" ) ; + array_push ( $ltr , '' ) ; } else if ( count ( $td ) == 0 ) { } # Don't do any of the following - else if ( "|}" == substr ( $x , 0 , 2 ) ) + else if ( '|}' == substr ( $x , 0 , 2 ) ) { $z = "
      \n" ; $l = array_pop ( $ltd ) ; - if ( array_pop ( $tr ) ) $z = "" . $z ; + if ( array_pop ( $tr ) ) $z = '' . $z ; if ( array_pop ( $td ) ) $z = "" . $z ; array_pop ( $ltr ) ; $t[$k] = $z ; @@ -516,51 +696,51 @@ class Parser $z = trim ( substr ( $x , 2 ) ) ; $t[$k] = "{$z}\n" ; }*/ - else if ( "|-" == substr ( $x , 0 , 2 ) ) # Allows for |--------------- + else if ( '|-' == substr ( $x , 0 , 2 ) ) # Allows for |--------------- { $x = substr ( $x , 1 ) ; - while ( $x != "" && substr ( $x , 0 , 1 ) == '-' ) $x = substr ( $x , 1 ) ; - $z = "" ; + while ( $x != '' && substr ( $x , 0 , 1 ) == '-' ) $x = substr ( $x , 1 ) ; + $z = '' ; $l = array_pop ( $ltd ) ; - if ( array_pop ( $tr ) ) $z = "" . $z ; + if ( array_pop ( $tr ) ) $z = '' . $z ; if ( array_pop ( $td ) ) $z = "" . $z ; array_pop ( $ltr ) ; $t[$k] = $z ; array_push ( $tr , false ) ; array_push ( $td , false ) ; - array_push ( $ltd , "" ) ; + array_push ( $ltd , '' ) ; array_push ( $ltr , $this->fixTagAttributes ( $x ) ) ; } - else if ( "|" == $fc || "!" == $fc || "|+" == substr ( $x , 0 , 2 ) ) # Caption + else if ( '|' == $fc || '!' == $fc || '|+' == substr ( $x , 0 , 2 ) ) # Caption { - if ( "|+" == substr ( $x , 0 , 2 ) ) + if ( '|+' == substr ( $x , 0 , 2 ) ) { - $fc = "+" ; + $fc = '+' ; $x = substr ( $x , 1 ) ; } $after = substr ( $x , 1 ) ; - if ( $fc == "!" ) $after = str_replace ( "!!" , "||" , $after ) ; - $after = explode ( "||" , $after ) ; - $t[$k] = "" ; + if ( $fc == '!' ) $after = str_replace ( '!!' , '||' , $after ) ; + $after = explode ( '||' , $after ) ; + $t[$k] = '' ; foreach ( $after AS $theline ) { - $z = "" ; - if ( $fc != "+" ) + $z = '' ; + if ( $fc != '+' ) { $tra = array_pop ( $ltr ) ; if ( !array_pop ( $tr ) ) $z = "\n" ; array_push ( $tr , true ) ; - array_push ( $ltr , "" ) ; + array_push ( $ltr , '' ) ; } $l = array_pop ( $ltd ) ; if ( array_pop ( $td ) ) $z = "" . $z ; - if ( $fc == "|" ) $l = "td" ; - else if ( $fc == "!" ) $l = "th" ; - else if ( $fc == "+" ) $l = "caption" ; - else $l = "" ; + if ( $fc == '|' ) $l = 'td' ; + else if ( $fc == '!' ) $l = 'th' ; + else if ( $fc == '+' ) $l = 'caption' ; + else $l = '' ; array_push ( $ltd , $l ) ; - $y = explode ( "|" , $theline , 2 ) ; + $y = explode ( '|' , $theline , 2 ) ; if ( count ( $y ) == 1 ) $y = "{$z}<{$l}>{$y[0]}" ; else $y = $y = "{$z}<{$l} ".$this->fixTagAttributes($y[0]).">{$y[1]}" ; $t[$k] .= $y ; @@ -572,9 +752,9 @@ class Parser # Closing open td, tr && table while ( count ( $td ) > 0 ) { - if ( array_pop ( $td ) ) $t[] = "" ; - if ( array_pop ( $tr ) ) $t[] = "" ; - $t[] = "" ; + if ( array_pop ( $td ) ) $t[] = '' ; + if ( array_pop ( $tr ) ) $t[] = '' ; + $t[] = '' ; } $t = implode ( "\n" , $t ) ; @@ -591,15 +771,14 @@ class Parser return $newline.$this->insertStripItem( $text, $this->mStripState ); } - function internalParse( $text, $linestart, $args = array(), $isMain=true ) - { - $fname = "Parser::internalParse"; + function internalParse( $text, $linestart, $args = array(), $isMain=true ) { + $fname = 'Parser::internalParse'; wfProfileIn( $fname ); $text = $this->removeHTMLtags( $text ); $text = $this->replaceVariables( $text, $args ); - $text = preg_replace( "/(^|\n)-----*/", "\\1
      ", $text ); + $text = preg_replace( '/(^|\n)-----*/', '\\1
      ', $text ); $text = $this->doHeadings( $text ); if($this->mOptions->getUseDynamicDates()) { @@ -628,12 +807,11 @@ class Parser } # Parse headers and return html - /* private */ function doHeadings( $text ) - { - $fname = "Parser::doHeadings"; + /* private */ function doHeadings( $text ) { + $fname = 'Parser::doHeadings'; wfProfileIn( $fname ); for ( $i = 6; $i >= 1; --$i ) { - $h = substr( "======", 0, $i ); + $h = substr( '======', 0, $i ); $text = preg_replace( "/^{$h}(.+){$h}(\\s|$)/m", "\\1\\2", $text ); } @@ -641,64 +819,62 @@ class Parser return $text; } - /* private */ function doAllQuotes( $text ) - { - $fname = "Parser::doAllQuotes"; + /* private */ function doAllQuotes( $text ) { + $fname = 'Parser::doAllQuotes'; wfProfileIn( $fname ); - $outtext = ""; + $outtext = ''; $lines = explode( "\n", $text ); foreach ( $lines as $line ) { - $outtext .= $this->doQuotes ( "", $line, "" ) . "\n"; + $outtext .= $this->doQuotes ( '', $line, '' ) . "\n"; } $outtext = substr($outtext, 0,-1); wfProfileOut( $fname ); return $outtext; } - /* private */ function doQuotes( $pre, $text, $mode ) - { + /* private */ function doQuotes( $pre, $text, $mode ) { if ( preg_match( "/^(.*)''(.*)$/sU", $text, $m ) ) { $m1_strong = ($m[1] == "") ? "" : "{$m[1]}"; $m1_em = ($m[1] == "") ? "" : "{$m[1]}"; - if ( substr ($m[2], 0, 1) == "'" ) { + if ( substr ($m[2], 0, 1) == '\'' ) { $m[2] = substr ($m[2], 1); - if ($mode == "em") { - return $this->doQuotes ( $m[1], $m[2], ($m[1] == "") ? "both" : "emstrong" ); - } else if ($mode == "strong") { - return $m1_strong . $this->doQuotes ( "", $m[2], "" ); - } else if (($mode == "emstrong") || ($mode == "both")) { - return $this->doQuotes ( "", $pre.$m1_strong.$m[2], "em" ); - } else if ($mode == "strongem") { - return "{$pre}{$m1_em}" . $this->doQuotes ( "", $m[2], "em" ); + if ($mode == 'em') { + return $this->doQuotes ( $m[1], $m[2], ($m[1] == '') ? 'both' : 'emstrong' ); + } else if ($mode == 'strong') { + return $m1_strong . $this->doQuotes ( '', $m[2], '' ); + } else if (($mode == 'emstrong') || ($mode == 'both')) { + return $this->doQuotes ( '', $pre.$m1_strong.$m[2], 'em' ); + } else if ($mode == 'strongem') { + return "{$pre}{$m1_em}" . $this->doQuotes ( '', $m[2], 'em' ); } else { - return $m[1] . $this->doQuotes ( "", $m[2], "strong" ); + return $m[1] . $this->doQuotes ( '', $m[2], 'strong' ); } } else { - if ($mode == "strong") { - return $this->doQuotes ( $m[1], $m[2], ($m[1] == "") ? "both" : "strongem" ); - } else if ($mode == "em") { - return $m1_em . $this->doQuotes ( "", $m[2], "" ); - } else if ($mode == "emstrong") { - return "{$pre}{$m1_strong}" . $this->doQuotes ( "", $m[2], "strong" ); - } else if (($mode == "strongem") || ($mode == "both")) { - return $this->doQuotes ( "", $pre.$m1_em.$m[2], "strong" ); + if ($mode == 'strong') { + return $this->doQuotes ( $m[1], $m[2], ($m[1] == '') ? 'both' : 'strongem' ); + } else if ($mode == 'em') { + return $m1_em . $this->doQuotes ( '', $m[2], '' ); + } else if ($mode == 'emstrong') { + return "{$pre}{$m1_strong}" . $this->doQuotes ( '', $m[2], 'strong' ); + } else if (($mode == 'strongem') || ($mode == 'both')) { + return $this->doQuotes ( '', $pre.$m1_em.$m[2], 'strong' ); } else { - return $m[1] . $this->doQuotes ( "", $m[2], "em" ); + return $m[1] . $this->doQuotes ( '', $m[2], 'em' ); } } } else { - $text_strong = ($text == "") ? "" : "{$text}"; - $text_em = ($text == "") ? "" : "{$text}"; - if ($mode == "") { + $text_strong = ($text == '') ? '' : "{$text}"; + $text_em = ($text == '') ? '' : "{$text}"; + if ($mode == '') { return $pre . $text; - } else if ($mode == "em") { + } else if ($mode == 'em') { return $pre . $text_em; - } else if ($mode == "strong") { + } else if ($mode == 'strong') { return $pre . $text_strong; - } else if ($mode == "strongem") { - return (($pre == "") && ($text == "")) ? "" : "{$pre}{$text_em}"; + } else if ($mode == 'strongem') { + return (($pre == '') && ($text == '')) ? '' : "{$pre}{$text_em}"; } else { - return (($pre == "") && ($text == "")) ? "" : "{$pre}{$text_strong}"; + return (($pre == '') && ($text == '')) ? '' : "{$pre}{$text_strong}"; } } } @@ -707,24 +883,22 @@ class Parser # and otherwise take great care in the order of things here, so # that we don't end up interpreting some URLs twice. - /* private */ function replaceExternalLinks( $text ) - { - $fname = "Parser::replaceExternalLinks"; + /* private */ function replaceExternalLinks( $text ) { + $fname = 'Parser::replaceExternalLinks'; wfProfileIn( $fname ); - $text = $this->subReplaceExternalLinks( $text, "http", true ); - $text = $this->subReplaceExternalLinks( $text, "https", true ); - $text = $this->subReplaceExternalLinks( $text, "ftp", false ); - $text = $this->subReplaceExternalLinks( $text, "irc", false ); - $text = $this->subReplaceExternalLinks( $text, "gopher", false ); - $text = $this->subReplaceExternalLinks( $text, "news", false ); - $text = $this->subReplaceExternalLinks( $text, "mailto", false ); + $text = $this->subReplaceExternalLinks( $text, 'http', true ); + $text = $this->subReplaceExternalLinks( $text, 'https', true ); + $text = $this->subReplaceExternalLinks( $text, 'ftp', false ); + $text = $this->subReplaceExternalLinks( $text, 'irc', false ); + $text = $this->subReplaceExternalLinks( $text, 'gopher', false ); + $text = $this->subReplaceExternalLinks( $text, 'news', false ); + $text = $this->subReplaceExternalLinks( $text, 'mailto', false ); wfProfileOut( $fname ); return $text; } - /* private */ function subReplaceExternalLinks( $s, $protocol, $autonumber ) - { - $unique = "4jzAfzB8hNvf4sqyO9Edd8pSmk9rE2in0Tgw3"; + /* private */ function subReplaceExternalLinks( $s, $protocol, $autonumber ) { + $unique = '4jzAfzB8hNvf4sqyO9Edd8pSmk9rE2in0Tgw3'; $uc = "A-Za-z0-9_\\/~%\\-+&*#?!=()@\\x80-\\xFF"; # this is the list of separators that should be ignored if they @@ -733,8 +907,8 @@ class Parser # in this case, the last comma should not become part of the URL, # but in "www.foo.com/123,2342,32.htm" it should. $sep = ",;\.:"; - $fnc = "A-Za-z0-9_.,~%\\-+&;#*?!=()@\\x80-\\xFF"; - $images = "gif|png|jpg|jpeg"; + $fnc = 'A-Za-z0-9_.,~%\\-+&;#*?!=()@\\x80-\\xFF'; + $images = 'gif|png|jpg|jpeg'; # PLEASE NOTE: The curly braces { } are not part of the regex, # they are interpreted as part of the string (used to tell PHP @@ -746,13 +920,13 @@ class Parser $sk =& $this->mOptions->getSkin(); if ( $autonumber and $this->mOptions->getAllowExternalImages() ) { # Use img tags only for HTTP urls - $s = preg_replace( $e1, "\\1" . $sk->makeImage( "{$unique}:\\3" . - "/\\4.\\5", "\\4.\\5" ) . "\\6", $s ); + $s = preg_replace( $e1, '\\1' . $sk->makeImage( "{$unique}:\\3" . + '/\\4.\\5', '\\4.\\5' ) . '\\6', $s ); } - $s = preg_replace( $e2, "\\1" . "getExternalLinkAttributes( "{$unique}:\\3", wfEscapeHTML( "{$unique}:\\3" ) ) . ">" . wfEscapeHTML( "{$unique}:\\3" ) . - "\\5", $s ); + '\\5', $s ); $s = str_replace( $unique, $protocol, $s ); $a = explode( "[{$protocol}:", " " . $s ); @@ -777,7 +951,7 @@ class Parser continue; } if( $link == $text || preg_match( "!$protocol://" . preg_quote( $text, "/" ) . "/?$!", $link ) ) { - $paren = ""; + $paren = ''; } else { # Expand the URL for printable version $paren = " (" . htmlspecialchars ( $link ) . ")"; @@ -790,20 +964,19 @@ class Parser } - /* private */ function replaceInternalLinks( $s ) - { + /* private */ function replaceInternalLinks( $s ) { global $wgLang, $wgLinkCache; global $wgNamespacesWithSubpages, $wgLanguageCode; - static $fname = "Parser::replaceInternalLinks" ; + static $fname = 'Parser::replaceInternalLinks' ; wfProfileIn( $fname ); - wfProfileIn( "$fname-setup" ); + wfProfileIn( $fname.'-setup' ); static $tc = FALSE; # the % is needed to support urlencoded titles as well - if ( !$tc ) { $tc = Title::legalChars() . "#%"; } + if ( !$tc ) { $tc = Title::legalChars() . '#%'; } $sk =& $this->mOptions->getSkin(); - $a = explode( "[[", " " . $s ); + $a = explode( '[[', ' ' . $s ); $s = array_shift( $a ); $s = substr( $s, 1 ); @@ -838,10 +1011,10 @@ class Parser $prefix = ''; } - wfProfileOut( "$fname-setup" ); + wfProfileOut( $fname.'-setup' ); foreach ( $a as $line ) { - wfProfileIn( "$fname-prefixhandling" ); + wfProfileIn( $fname.'-prefixhandling' ); if ( $useLinkPrefixExtension ) { if ( preg_match( $e2, $s, $m ) ) { $prefix = $m[2]; @@ -855,15 +1028,15 @@ class Parser $first_prefix = false; } } - wfProfileOut( "$fname-prefixhandling" ); + wfProfileOut( $fname.'-prefixhandling' ); if ( preg_match( $e1, $line, $m ) ) { # page with normal text or alt $text = $m[2]; # fix up urlencoded title texts - if(preg_match("/%/", $m[1] )) $m[1] = urldecode($m[1]); + if(preg_match('/%/', $m[1] )) $m[1] = urldecode($m[1]); $trail = $m[3]; } else { # Invalid form; output directly - $s .= $prefix . "[[" . $line ; + $s .= $prefix . '[[' . $line ; continue; } @@ -874,17 +1047,17 @@ class Parser /Foobar/ -- convert to CurrentPage/Foobar, strip the initial / from text */ $c = substr($m[1],0,1); - $noforce = ($c != ":"); - if( $c == "/" ) { # subpage - if(substr($m[1],-1,1)=="/") { # / at end means we don't want the slash to be shown + $noforce = ($c != ':'); + if( $c == '/' ) { # subpage + if(substr($m[1],-1,1)=='/') { # / at end means we don't want the slash to be shown $m[1]=substr($m[1],1,strlen($m[1])-2); $noslash=$m[1]; } else { $noslash=substr($m[1],1); } if(!empty($wgNamespacesWithSubpages[$this->mTitle->getNamespace()])) { # subpages allowed here - $link = $this->mTitle->getPrefixedText(). "/" . trim($noslash); - if( "" == $text ) { + $link = $this->mTitle->getPrefixedText(). '/' . trim($noslash); + if( '' == $text ) { $text= $m[1]; } # this might be changed for ugliness reasons } else { @@ -895,13 +1068,13 @@ class Parser } else { $link = substr( $m[1], 1 ); } - $wasblank = ( "" == $text ); + $wasblank = ( '' == $text ); if( $wasblank ) $text = $link; $nt = Title::newFromText( $link ); if( !$nt ) { - $s .= $prefix . "[[" . $line; + $s .= $prefix . '[[' . $line; continue; } $ns = $nt->getNamespace(); @@ -923,7 +1096,7 @@ class Parser $nnt = Title::newFromText ( Namespace::getCanonicalName($category).":".$t ) ; $wgLinkCache->suspend(); # Don't save in links/brokenlinks - $t = $sk->makeLinkObj( $nnt, $t, "", "" , $prefix ); + $t = $sk->makeLinkObj( $nnt, $t, '', '' , $prefix ); $wgLinkCache->resume(); $sortkey = $wasblank ? $this->mTitle->getPrefixedText() : $text; @@ -934,9 +1107,9 @@ class Parser } } if( ( $nt->getPrefixedText() == $this->mTitle->getPrefixedText() ) && - ( strpos( $link, "#" ) == FALSE ) ) { + ( strpos( $link, '#' ) == FALSE ) ) { # Self-links are handled specially; generally de-link and change to bold. - $s .= $prefix . $sk->makeSelfLinkObj( $nt, $text, "", $trail ); + $s .= $prefix . $sk->makeSelfLinkObj( $nt, $text, '', $trail ); continue; } @@ -945,10 +1118,10 @@ class Parser $wgLinkCache->addImageLinkObj( $nt ); continue; } elseif( $ns == $special ) { - $s .= $prefix . $sk->makeKnownLinkObj( $nt, $text, "", $trail ); + $s .= $prefix . $sk->makeKnownLinkObj( $nt, $text, '', $trail ); continue; } - $s .= $sk->makeLinkObj( $nt, $text, "", $trail, $prefix ); + $s .= $sk->makeLinkObj( $nt, $text, '', $trail, $prefix ); } wfProfileOut( $fname ); return $s; @@ -956,21 +1129,19 @@ class Parser # Some functions here used by doBlockLevels() # - /* private */ function closeParagraph() - { - $result = ""; + /* private */ function closeParagraph() { + $result = ''; if ( '' != $this->mLastSection ) { - $result = "mLastSection . ">\n"; + $result = 'mLastSection . ">\n"; } $this->mInPre = false; - $this->mLastSection = ""; + $this->mLastSection = ''; return $result; } # getCommon() returns the length of the longest common substring # of both arguments, starting at the beginning of both. # - /* private */ function getCommon( $st1, $st2 ) - { + /* private */ function getCommon( $st1, $st2 ) { $fl = strlen( $st1 ); $shorter = strlen( $st2 ); if ( $fl < $shorter ) { $shorter = $fl; } @@ -987,53 +1158,51 @@ class Parser { $result = $this->closeParagraph(); - if ( "*" == $char ) { $result .= "
      • "; } - else if ( "#" == $char ) { $result .= "
        1. "; } - else if ( ":" == $char ) { $result .= "
          "; } - else if ( ";" == $char ) { - $result .= "
          "; + if ( '*' == $char ) { $result .= '
          • '; } + else if ( '#' == $char ) { $result .= '
            1. '; } + else if ( ':' == $char ) { $result .= '
              '; } + else if ( ';' == $char ) { + $result .= '
              '; $this->mDTopen = true; } - else { $result = ""; } + else { $result = ''; } return $result; } - /* private */ function nextItem( $char ) - { - if ( "*" == $char || "#" == $char ) { return "
            2. "; } - else if ( ":" == $char || ";" == $char ) { + /* private */ function nextItem( $char ) { + if ( '*' == $char || '#' == $char ) { return '
            3. '; } + else if ( ':' == $char || ';' == $char ) { $close = "
          "; - if ( $this->mDTopen ) { $close = ""; } - if ( ";" == $char ) { + if ( $this->mDTopen ) { $close = ''; } + if ( ';' == $char ) { $this->mDTopen = true; - return $close . "
          "; + return $close . '
          '; } else { $this->mDTopen = false; - return $close . "
          "; + return $close . '
          '; } } - return ""; + return ''; } - /* private */function closeList( $char ) - { - if ( "*" == $char ) { $text = "
      "; } - else if ( "#" == $char ) { $text = ""; } - else if ( ":" == $char ) { + /* private */function closeList( $char ) { + if ( '*' == $char ) { $text = '
    '; } + else if ( '#' == $char ) { $text = '
  • '; } + else if ( ':' == $char ) { if ( $this->mDTopen ) { $this->mDTopen = false; - $text = ""; + $text = ''; } else { - $text = ""; + $text = ''; } } - else { return ""; } + else { return ''; } return $text."\n"; } /* private */ function doBlockLevels( $text, $linestart ) { - $fname = "Parser::doBlockLevels"; + $fname = 'Parser::doBlockLevels'; wfProfileIn( $fname ); # Parsing through the text line by line. The main thing @@ -1059,11 +1228,11 @@ class Parser } if ( !$this->mInPre ) { # Multiple prefixes may abut each other for nested lists. - $prefixLength = strspn( $oLine, "*#:;" ); + $prefixLength = strspn( $oLine, '*#:;' ); $pref = substr( $oLine, 0, $prefixLength ); # eh? - $pref2 = str_replace( ";", ":", $pref ); + $pref2 = str_replace( ';', ':', $pref ); $t = substr( $oLine, $prefixLength ); } else { # Don't interpret any other prefixes in preformatted text @@ -1086,7 +1255,7 @@ class Parser # FIXME: This is not foolproof. Something better in Tokenizer might help. if( preg_match( '/^(.*?(?:\s| )):(.*)$/', $t, $match ) ) { $term = $match[1]; - $output .= $term . $this->nextItem( ":" ); + $output .= $term . $this->nextItem( ':' ); $t = $match[2]; } } @@ -1106,7 +1275,7 @@ class Parser $char = substr( $pref, $commonPrefixLength, 1 ); $output .= $this->openList( $char ); - if ( ";" == $char ) { + if ( ';' == $char ) { # FIXME: This is dupe of code above if( preg_match( '/^(.*?(?:\s| )):(.*)$/', $t, $match ) ) { $term = $match[1]; @@ -1122,10 +1291,10 @@ class Parser # No prefix (not in list)--go to paragraph mode $uniq_prefix = UNIQ_PREFIX; // XXX: use a stack for nestable elements like span, table and div - $openmatch = preg_match("/(closeParagraph(); @@ -1156,7 +1325,7 @@ class Parser if ($this->mLastSection != 'p' ) { $output .= $this->closeParagraph(); $this->mLastSection = ''; - $paragraphStack = "

    "; + $paragraphStack = '

    '; } else { $paragraphStack = '

    '; } @@ -1182,9 +1351,9 @@ class Parser $output .= $this->closeList( $pref2{$prefixLength-1} ); --$prefixLength; } - if ( "" != $this->mLastSection ) { - $output .= "mLastSection . ">"; - $this->mLastSection = ""; + if ( '' != $this->mLastSection ) { + $output .= 'mLastSection . '>'; + $this->mLastSection = ''; } wfProfileOut( $fname ); @@ -1197,22 +1366,22 @@ class Parser switch ( $index ) { case MAG_CURRENTMONTH: - return date( "m" ); + return date( 'm' ); case MAG_CURRENTMONTHNAME: - return $wgLang->getMonthName( date("n") ); + return $wgLang->getMonthName( date('n') ); case MAG_CURRENTMONTHNAMEGEN: - return $wgLang->getMonthNameGen( date("n") ); + return $wgLang->getMonthNameGen( date('n') ); case MAG_CURRENTDAY: - return date("j"); + return date('j'); case MAG_PAGENAME: return $this->mTitle->getText(); case MAG_NAMESPACE: # return Namespace::getCanonicalName($this->mTitle->getNamespace()); return $wgLang->getNsText($this->mTitle->getNamespace()); // Patch by Dori case MAG_CURRENTDAYNAME: - return $wgLang->getWeekdayName( date("w")+1 ); + return $wgLang->getWeekdayName( date('w')+1 ); case MAG_CURRENTYEAR: - return date( "Y" ); + return date( 'Y' ); case MAG_CURRENTTIME: return $wgLang->time( wfTimestampNow(), false ); case MAG_NUMBEROFARTICLES: @@ -1227,8 +1396,7 @@ class Parser } # initialise the magic variables (like CURRENTMONTHNAME) - function initialiseVariables() - { + function initialiseVariables() { global $wgVariableIDs; $this->mVariables = array(); foreach ( $wgVariableIDs as $id ) { @@ -1237,11 +1405,10 @@ class Parser } } - /* private */ function replaceVariables( $text, $args = array() ) - { + /* private */ function replaceVariables( $text, $args = array() ) { global $wgLang, $wgScript, $wgArticlePath; - $fname = "Parser::replaceVariables"; + $fname = 'Parser::replaceVariables'; wfProfileIn( $fname ); $bail = false; @@ -1249,7 +1416,7 @@ class Parser $this->initialiseVariables(); } $titleChars = Title::legalChars(); - $nonBraceChars = str_replace( array( "{", "}" ), array( "", "" ), $titleChars ); + $nonBraceChars = str_replace( array( '{', '}' ), array( '', '' ), $titleChars ); # This function is called recursively. To keep track of arguments we need a stack: array_push( $this->mArgStack, $args ); @@ -1260,14 +1427,14 @@ class Parser if ( $this->mOutputType == OT_HTML ) { # Variable substitution - $text = preg_replace_callback( "/{{([$nonBraceChars]*?)}}/", "wfVariableSubstitution", $text ); + $text = preg_replace_callback( "/{{([$nonBraceChars]*?)}}/", 'wfVariableSubstitution', $text ); # Argument substitution - $text = preg_replace_callback( "/(\\n?){{{([$titleChars]*?)}}}/", "wfArgSubstitution", $text ); + $text = preg_replace_callback( "/(\\n?){{{([$titleChars]*?)}}}/", 'wfArgSubstitution', $text ); } # Template substitution - $regex = "/(\\n?){{([$nonBraceChars]*)(\\|.*?|)}}/s"; - $text = preg_replace_callback( $regex, "wfBraceSubstitution", $text ); + $regex = '/(\\n?){{(['.$nonBraceChars.']*)(\\|.*?|)}}/s'; + $text = preg_replace_callback( $regex, 'wfBraceSubstitution', $text ); array_pop( $this->mArgStack ); @@ -1275,8 +1442,7 @@ class Parser return $text; } - function variableSubstitution( $matches ) - { + function variableSubstitution( $matches ) { if ( array_key_exists( $matches[1], $this->mVariables ) ) { $text = $this->mVariables[$matches[1]]; $this->mOutput->mContainsOldMagic = true; @@ -1286,10 +1452,9 @@ class Parser return $text; } - function braceSubstitution( $matches ) - { + function braceSubstitution( $matches ) { global $wgLinkCache, $wgLang; - $fname = "Parser::braceSubstitution"; + $fname = 'Parser::braceSubstitution'; $found = false; $nowiki = false; $noparse = false; @@ -1303,15 +1468,15 @@ class Parser $newline = $matches[1]; $part1 = $matches[2]; # If the third subpattern matched anything, it will start with | - if ( $matches[3] !== "" ) { - $args = explode( "|", substr( $matches[3], 1 ) ); + if ( $matches[3] !== '' ) { + $args = explode( '|', substr( $matches[3], 1 ) ); } else { $args = array(); } $argc = count( $args ); # {{{}}} - if ( strpos( $matches[0], "{{{" ) !== false ) { + if ( strpos( $matches[0], '{{{' ) !== false ) { $text = $matches[0]; $found = true; $noparse = true; @@ -1350,7 +1515,7 @@ class Parser # Check if it is an internal message $mwInt =& MagicWord::get( MAG_INT ); if ( $mwInt->matchStartAndRemove( $part1 ) ) { - if ( $this->incrementIncludeCount( "int:$part1" ) ) { + if ( $this->incrementIncludeCount( 'int:'.$part1 ) ) { $text = wfMsgReal( $part1, $args, true ); $found = true; } @@ -1433,7 +1598,7 @@ class Parser # If the title is valid but undisplayable, make a link to it if ( $this->mOutputType == OT_HTML && !$found ) { - $text = "[[" . $title->getPrefixedText() . "]]"; + $text = '[[' . $title->getPrefixedText() . ']]'; $found = true; } } @@ -1448,14 +1613,14 @@ class Parser $assocArgs = array(); $index = 1; foreach( $args as $arg ) { - $eqpos = strpos( $arg, "=" ); + $eqpos = strpos( $arg, '=' ); if ( $eqpos === false ) { $assocArgs[$index++] = $arg; } else { $name = trim( substr( $arg, 0, $eqpos ) ); $value = trim( substr( $arg, $eqpos+1 ) ); if ( $value === false ) { - $value = ""; + $value = ''; } if ( $name !== false ) { $assocArgs[$name] = $value; @@ -1486,8 +1651,7 @@ class Parser } # Triple brace replacement -- used for template arguments - function argSubstitution( $matches ) - { + function argSubstitution( $matches ) { $newline = $matches[1]; $arg = trim( $matches[2] ); $text = $matches[0]; @@ -1501,8 +1665,7 @@ class Parser } # Returns true if the function is allowed to include this entity - function incrementIncludeCount( $dbk ) - { + function incrementIncludeCount( $dbk ) { if ( !array_key_exists( $dbk, $this->mIncludeCount ) ) { $this->mIncludeCount[$dbk] = 0; } @@ -1515,29 +1678,28 @@ class Parser # Cleans up HTML, removes dangerous tags and attributes - /* private */ function removeHTMLtags( $text ) - { + /* private */ function removeHTMLtags( $text ) { global $wgUseTidy, $wgUserHtml; - $fname = "Parser::removeHTMLtags"; + $fname = 'Parser::removeHTMLtags'; wfProfileIn( $fname ); if( $wgUserHtml ) { $htmlpairs = array( # Tags that must be closed - "b", "del", "i", "ins", "u", "font", "big", "small", "sub", "sup", "h1", - "h2", "h3", "h4", "h5", "h6", "cite", "code", "em", "s", - "strike", "strong", "tt", "var", "div", "center", - "blockquote", "ol", "ul", "dl", "table", "caption", "pre", - "ruby", "rt" , "rb" , "rp", "p" + 'b', 'del', 'i', 'ins', 'u', 'font', 'big', 'small', 'sub', 'sup', 'h1', + 'h2', 'h3', 'h4', 'h5', 'h6', 'cite', 'code', 'em', 's', + 'strike', 'strong', 'tt', 'var', 'div', 'center', + 'blockquote', 'ol', 'ul', 'dl', 'table', 'caption', 'pre', + 'ruby', 'rt' , 'rb' , 'rp', 'p' ); $htmlsingle = array( - "br", "hr", "li", "dt", "dd" + 'br', 'hr', 'li', 'dt', 'dd' ); $htmlnest = array( # Tags that can be nested--?? - "table", "tr", "td", "th", "div", "blockquote", "ol", "ul", - "dl", "font", "big", "small", "sub", "sup" + 'table', 'tr', 'td', 'th', 'div', 'blockquote', 'ol', 'ul', + 'dl', 'font', 'big', 'small', 'sub', 'sup' ); $tabletags = array( # Can only appear inside table - "td", "th", "tr" + 'td', 'th', 'tr' ); } else { $htmlpairs = array(); @@ -1552,15 +1714,15 @@ class Parser $htmlattrs = $this->getHTMLattrs () ; # Remove HTML comments - $text = preg_replace( "/(\\n * *(?=\\n)|)/sU", "$2", $text ); + $text = preg_replace( '/(\\n * *(?=\\n)|)/sU', '$2', $text ); - $bits = explode( "<", $text ); + $bits = explode( '<', $text ); $text = array_shift( $bits ); if(!$wgUseTidy) { $tagstack = array(); $tablestack = array(); foreach ( $bits as $x ) { $prev = error_reporting( E_ALL & ~( E_NOTICE | E_WARNING ) ); - preg_match( "/^(\\/?)(\\w+)([^>]*)(\\/{0,1}>)([^<]*)$/", + preg_match( '/^(\\/?)(\\w+)([^>]*)(\\/{0,1}>)([^<]*)$/', $x, $regs ); list( $qbar, $slash, $t, $params, $brace, $rest ) = $regs; error_reporting( $prev ); @@ -1575,21 +1737,21 @@ class Parser @array_push( $tagstack, $ot ); $badtag = 1; } else { - if ( $t == "table" ) { + if ( $t == 'table' ) { $tagstack = array_pop( $tablestack ); } - $newparams = ""; + $newparams = ''; } } else { # Keep track for later if ( in_array( $t, $tabletags ) && - ! in_array( "table", $tagstack ) ) { + ! in_array( 'table', $tagstack ) ) { $badtag = 1; } else if ( in_array( $t, $tagstack ) && ! in_array ( $t , $htmlnest ) ) { $badtag = 1 ; } else if ( ! in_array( $t, $htmlsingle ) ) { - if ( $t == "table" ) { + if ( $t == 'table' ) { array_push( $tablestack, $tagstack ); $tagstack = array(); } @@ -1600,30 +1762,30 @@ class Parser } if ( ! $badtag ) { - $rest = str_replace( ">", ">", $rest ); + $rest = str_replace( '>', '>', $rest ); $text .= "<$slash$t $newparams$brace$rest"; continue; } } - $text .= "<" . str_replace( ">", ">", $x); + $text .= '<' . str_replace( '>', '>', $x); } # Close off any remaining tags while ( is_array( $tagstack ) && ($t = array_pop( $tagstack )) ) { $text .= "\n"; - if ( $t == "table" ) { $tagstack = array_pop( $tablestack ); } + if ( $t == 'table' ) { $tagstack = array_pop( $tablestack ); } } } else { # this might be possible using tidy itself foreach ( $bits as $x ) { - preg_match( "/^(\\/?)(\\w+)([^>]*)(\\/{0,1}>)([^<]*)$/", + preg_match( '/^(\\/?)(\\w+)([^>]*)(\\/{0,1}>)([^<]*)$/', $x, $regs ); @list( $qbar, $slash, $t, $params, $brace, $rest ) = $regs; if ( in_array( $t = strtolower( $t ), $htmlelements ) ) { $newparams = $this->fixTagAttributes($params); - $rest = str_replace( ">", ">", $rest ); + $rest = str_replace( '>', '>', $rest ); $text .= "<$slash$t $newparams$brace$rest"; } else { - $text .= "<" . str_replace( ">", ">", $x); + $text .= '<' . str_replace( '>', '>', $x); } } } @@ -1645,8 +1807,7 @@ class Parser * */ - /* private */ function formatHeadings( $text, $isMain=true ) - { + /* private */ function formatHeadings( $text, $isMain=true ) { global $wgInputEncoding; $doNumberHeadings = $this->mOptions->getNumberHeadings(); @@ -1673,13 +1834,13 @@ class Parser # never add the TOC to the Main Page. This is an entry page that should not # be more than 1-2 screens large anyway - if( $this->mTitle->getPrefixedText() == wfMsg("mainpage") ) { + if( $this->mTitle->getPrefixedText() == wfMsg('mainpage') ) { $doShowToc = 0; } # Get all headlines for numbering them and adding funky stuff like [edit] # links - this is for later, but we need the number of headlines right now - $numMatches = preg_match_all( "/)(.*?)<\/H[1-6]>/i", $text, $matches ); + $numMatches = preg_match_all( '/)(.*?)<\/H[1-6]>/i', $text, $matches ); # if there are fewer than 4 headlines in the article, do not show TOC if( $numMatches < 4 ) { @@ -1703,14 +1864,14 @@ class Parser # Ugh .. the TOC should have neat indentation levels which can be # passed to the skin functions. These are determined here $toclevel = 0; - $toc = ""; - $full = ""; + $toc = ''; + $full = ''; $head = array(); $sublevelCount = array(); $level = 0; $prevlevel = 0; foreach( $matches[3] as $headline ) { - $numbering = ""; + $numbering = ''; if( $level ) { $prevlevel = $level; } @@ -1734,7 +1895,7 @@ class Parser for( $i = 1; $i <= $level; $i++ ) { if( !empty( $sublevelCount[$i] ) ) { if( $dot ) { - $numbering .= "."; + $numbering .= '.'; } $numbering .= $sublevelCount[$i]; $dot = 1; @@ -1748,7 +1909,7 @@ class Parser $canonized_headline = $this->unstripNoWiki( $headline, $this->mStripState ); # strip out HTML - $canonized_headline = preg_replace( "/<.*?" . ">/","",$canonized_headline ); + $canonized_headline = preg_replace( '/<.*?' . '>/','',$canonized_headline ); $tocline = trim( $canonized_headline ); $canonized_headline = urlencode( do_html_entity_decode( str_replace(' ', '_', $tocline), ENT_COMPAT, $wgInputEncoding ) ); $replacearray = array( @@ -1765,26 +1926,26 @@ class Parser # Prepend the number to the heading text if( $doNumberHeadings || $doShowToc ) { - $tocline = $numbering . " " . $tocline; + $tocline = $numbering . ' ' . $tocline; # Don't number the heading if it is the only one (looks silly) if( $doNumberHeadings && count( $matches[3] ) > 1) { # the two are different if the line contains a link - $headline=$numbering . " " . $headline; + $headline=$numbering . ' ' . $headline; } } # Create the anchor for linking from the TOC to the section $anchor = $canonized_headline; if($refcount[$headlineCount] > 1 ) { - $anchor .= "_" . $refcount[$headlineCount]; + $anchor .= '_' . $refcount[$headlineCount]; } if( $doShowToc ) { $toc .= $sk->tocLine($anchor,$tocline,$toclevel); } if( $showEditLink ) { if ( empty( $head[$headlineCount] ) ) { - $head[$headlineCount] = ""; + $head[$headlineCount] = ''; } $head[$headlineCount] .= $sk->editSectionLink($headlineCount+1); } @@ -1808,7 +1969,7 @@ class Parser # split up and insert constructed headlines - $blocks = preg_split( "/.*?<\/H[1-6]>/i", $text ); + $blocks = preg_split( '/.*?<\/H[1-6]>/i', $text ); $i = 0; foreach( $blocks as $block ) { @@ -1836,33 +1997,32 @@ class Parser } # Return an HTML link for the "ISBN 123456" text - /* private */ function magicISBN( $text ) - { + /* private */ function magicISBN( $text ) { global $wgLang; - $a = split( "ISBN ", " $text" ); + $a = split( 'ISBN ', " $text" ); if ( count ( $a ) < 2 ) return $text; $text = substr( array_shift( $a ), 1); - $valid = "0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ"; + $valid = '0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ'; foreach ( $a as $x ) { - $isbn = $blank = "" ; - while ( " " == $x{0} ) { - $blank .= " "; + $isbn = $blank = '' ; + while ( ' ' == $x{0} ) { + $blank .= ' '; $x = substr( $x, 1 ); } while ( strstr( $valid, $x{0} ) != false ) { $isbn .= $x{0}; $x = substr( $x, 1 ); } - $num = str_replace( "-", "", $isbn ); - $num = str_replace( " ", "", $num ); + $num = str_replace( '-', '', $isbn ); + $num = str_replace( ' ', '', $num ); - if ( "" == $num ) { + if ( '' == $num ) { $text .= "ISBN $blank$x"; } else { - $titleObj = Title::makeTitle( NS_SPECIAL, "Booksources" ); - $text .= "escapeLocalUrl( "isbn={$num}" ) . "\" class=\"internal\">ISBN $isbn"; $text .= $x; @@ -1872,19 +2032,18 @@ class Parser } # Return an HTML link for the "RFC 1234" text - /* private */ function magicRFC( $text ) - { + /* private */ function magicRFC( $text ) { global $wgLang; - $a = split( "RFC ", " $text" ); + $a = split( 'RFC ', ' '.$text ); if ( count ( $a ) < 2 ) return $text; $text = substr( array_shift( $a ), 1); - $valid = "0123456789"; + $valid = '0123456789'; foreach ( $a as $x ) { - $rfc = $blank = "" ; - while ( " " == $x{0} ) { - $blank .= " "; + $rfc = $blank = '' ; + while ( ' ' == $x{0} ) { + $blank .= ' '; $x = substr( $x, 1 ); } while ( strstr( $valid, $x{0} ) != false ) { @@ -1892,11 +2051,11 @@ class Parser $x = substr( $x, 1 ); } - if ( "" == $rfc ) { + if ( '' == $rfc ) { $text .= "RFC $blank$x"; } else { - $url = wfmsg( "rfcurl" ); - $url = str_replace( "$1", $rfc, $url); + $url = wfmsg( 'rfcurl' ); + $url = str_replace( '$1', $rfc, $url); $sk =& $this->mOptions->getSkin(); $la = $sk->getExternalLinkAttributes( $url, "RFC {$rfc}" ); $text .= "RFC {$rfc}{$x}"; @@ -1905,8 +2064,7 @@ class Parser return $text; } - function preSaveTransform( $text, &$title, &$user, $options, $clearState = true ) - { + function preSaveTransform( $text, &$title, &$user, $options, $clearState = true ) { $this->mOptions = $options; $this->mTitle =& $title; $this->mOutputType = OT_WIKI; @@ -1935,8 +2093,7 @@ class Parser return $text; } - /* private */ function pstPass2( $text, &$user ) - { + /* private */ function pstPass2( $text, &$user ) { global $wgLang, $wgLocaltimezone, $wgCurParser; # Variable replacement @@ -1946,20 +2103,20 @@ class Parser # Signatures # $n = $user->getName(); - $k = $user->getOption( "nickname" ); - if ( "" == $k ) { $k = $n; } + $k = $user->getOption( 'nickname' ); + if ( '' == $k ) { $k = $n; } if(isset($wgLocaltimezone)) { - $oldtz = getenv("TZ"); putenv("TZ=$wgLocaltimezone"); + $oldtz = getenv('TZ'); putenv('TZ='.$wgLocaltimezone); } /* Note: this is an ugly timezone hack for the European wikis */ - $d = $wgLang->timeanddate( date( "YmdHis" ), false ) . - " (" . date( "T" ) . ")"; - if(isset($wgLocaltimezone)) putenv("TZ=$oldtz"); + $d = $wgLang->timeanddate( date( 'YmdHis' ), false ) . + ' (' . date( 'T' ) . ')'; + if(isset($wgLocaltimezone)) putenv('TZ='.$oldtzs); - $text = preg_replace( "/~~~~~/", $d, $text ); - $text = preg_replace( "/~~~~/", "[[" . $wgLang->getNsText( + $text = preg_replace( '/~~~~~/', $d, $text ); + $text = preg_replace( '/~~~~/', '[[' . $wgLang->getNsText( Namespace::getUser() ) . ":$n|$k]] $d", $text ); - $text = preg_replace( "/~~~/", "[[" . $wgLang->getNsText( + $text = preg_replace( '/~~~/', '[[' . $wgLang->getNsText( Namespace::getUser() ) . ":$n|$k]]", $text ); # Context links: [[|name]] and [[name (context)|]] @@ -1979,12 +2136,12 @@ class Parser if ( preg_match( $conpat, $t, $m ) ) { $context = $m[2]; } - $text = preg_replace( $p4, "[[\\1:\\2 (\\3)|\\2]]", $text ); - $text = preg_replace( $p1, "[[\\1 (\\2)|\\1]]", $text ); - $text = preg_replace( $p3, "[[\\1:\\2|\\2]]", $text ); + $text = preg_replace( $p4, '[[\\1:\\2 (\\3)|\\2]]', $text ); + $text = preg_replace( $p1, '[[\\1 (\\2)|\\1]]', $text ); + $text = preg_replace( $p3, '[[\\1:\\2|\\2]]', $text ); - if ( "" == $context ) { - $text = preg_replace( $p2, "[[\\1]]", $text ); + if ( '' == $context ) { + $text = preg_replace( $p2, '[[\\1]]', $text ); } else { $text = preg_replace( $p2, "[[\\1 ({$context})|\\1]]", $text ); } @@ -2008,8 +2165,7 @@ class Parser # Set up some variables which are usually set up in parse() # so that an external function can call some class members with confidence - function startExternalParse( &$title, $options, $outputType, $clearState = true ) - { + function startExternalParse( &$title, $options, $outputType, $clearState = true ) { $this->mTitle =& $title; $this->mOptions = $options; $this->mOutputType = $outputType; @@ -2037,6 +2193,15 @@ class Parser $executing = false; return $text; } + + # Create an HTML-style tag, e.g. special text + # Callback will be called with the text within + # Transform and return the text within + function setHook( $tag, $callback ) { + $oldVal = @$this->mTagHooks[$tag]; + $this->mTagHooks[$tag] = $callback; + return $oldVal; + } } class ParserOutput @@ -2088,39 +2253,38 @@ class ParserOptions var $mNumberHeadings; # Automatically number headings var $mShowToc; # Show table of contents - function getUseTeX() { return $this->mUseTeX; } - function getUseCategoryMagic() { return $this->mUseCategoryMagic; } - function getUseDynamicDates() { return $this->mUseDynamicDates; } - function getInterwikiMagic() { return $this->mInterwikiMagic; } - function getAllowExternalImages() { return $this->mAllowExternalImages; } - function getSkin() { return $this->mSkin; } - function getDateFormat() { return $this->mDateFormat; } - function getEditSection() { return $this->mEditSection; } - function getEditSectionOnRightClick() { return $this->mEditSectionOnRightClick; } - function getNumberHeadings() { return $this->mNumberHeadings; } - function getShowToc() { return $this->mShowToc; } - - function setUseTeX( $x ) { return wfSetVar( $this->mUseTeX, $x ); } - function setUseCategoryMagic( $x ) { return wfSetVar( $this->mUseCategoryMagic, $x ); } - function setUseDynamicDates( $x ) { return wfSetVar( $this->mUseDynamicDates, $x ); } - function setInterwikiMagic( $x ) { return wfSetVar( $this->mInterwikiMagic, $x ); } - function setAllowExternalImages( $x ) { return wfSetVar( $this->mAllowExternalImages, $x ); } - function setSkin( $x ) { return wfSetRef( $this->mSkin, $x ); } - function setDateFormat( $x ) { return wfSetVar( $this->mDateFormat, $x ); } - function setEditSection( $x ) { return wfSetVar( $this->mEditSection, $x ); } - function setEditSectionOnRightClick( $x ) { return wfSetVar( $this->mEditSectionOnRightClick, $x ); } - function setNumberHeadings( $x ) { return wfSetVar( $this->mNumberHeadings, $x ); } - function setShowToc( $x ) { return wfSetVar( $this->mShowToc, $x ); } - - /* static */ function newFromUser( &$user ) - { + function getUseTeX() { return $this->mUseTeX; } + function getUseCategoryMagic() { return $this->mUseCategoryMagic; } + function getUseDynamicDates() { return $this->mUseDynamicDates; } + function getInterwikiMagic() { return $this->mInterwikiMagic; } + function getAllowExternalImages() { return $this->mAllowExternalImages; } + function getSkin() { return $this->mSkin; } + function getDateFormat() { return $this->mDateFormat; } + function getEditSection() { return $this->mEditSection; } + function getEditSectionOnRightClick() { return $this->mEditSectionOnRightClick; } + function getNumberHeadings() { return $this->mNumberHeadings; } + function getShowToc() { return $this->mShowToc; } + + function setUseTeX( $x ) { return wfSetVar( $this->mUseTeX, $x ); } + function setUseCategoryMagic( $x ) { return wfSetVar( $this->mUseCategoryMagic, $x ); } + function setUseDynamicDates( $x ) { return wfSetVar( $this->mUseDynamicDates, $x ); } + function setInterwikiMagic( $x ) { return wfSetVar( $this->mInterwikiMagic, $x ); } + function setAllowExternalImages( $x ) { return wfSetVar( $this->mAllowExternalImages, $x ); } + function setDateFormat( $x ) { return wfSetVar( $this->mDateFormat, $x ); } + function setEditSection( $x ) { return wfSetVar( $this->mEditSection, $x ); } + function setEditSectionOnRightClick( $x ) { return wfSetVar( $this->mEditSectionOnRightClick, $x ); } + function setNumberHeadings( $x ) { return wfSetVar( $this->mNumberHeadings, $x ); } + function setShowToc( $x ) { return wfSetVar( $this->mShowToc, $x ); } + + function setSkin( &$x ) { $this->mSkin =& $x; } + + /* static */ function newFromUser( &$user ) { $popts = new ParserOptions; $popts->initialiseFromUser( $user ); return $popts; } - function initialiseFromUser( &$userInput ) - { + function initialiseFromUser( &$userInput ) { global $wgUseTeX, $wgUseCategoryMagic, $wgUseDynamicDates, $wgInterwikiMagic, $wgAllowExternalImages; if ( !$userInput ) { @@ -2136,11 +2300,11 @@ class ParserOptions $this->mInterwikiMagic = $wgInterwikiMagic; $this->mAllowExternalImages = $wgAllowExternalImages; $this->mSkin =& $user->getSkin(); - $this->mDateFormat = $user->getOption( "date" ); - $this->mEditSection = $user->getOption( "editsection" ); - $this->mEditSectionOnRightClick = $user->getOption( "editsectiononrightclick" ); - $this->mNumberHeadings = $user->getOption( "numberheadings" ); - $this->mShowToc = $user->getOption( "showtoc" ); + $this->mDateFormat = $user->getOption( 'date' ); + $this->mEditSection = $user->getOption( 'editsection' ); + $this->mEditSectionOnRightClick = $user->getOption( 'editsectiononrightclick' ); + $this->mNumberHeadings = $user->getOption( 'numberheadings' ); + $this->mShowToc = $user->getOption( 'showtoc' ); } diff --git a/includes/QueryPage.php b/includes/QueryPage.php index 6ffd11662326..43804cee26e8 100644 --- a/includes/QueryPage.php +++ b/includes/QueryPage.php @@ -37,7 +37,7 @@ class QueryPage { function getOrderLimit( $offset, $limit ) { return " ORDER BY value " . ($this->sortDescending() ? "DESC" : "") - . " LIMIT {$offset}, {$limit}"; + . wfLimitResult($limit,$offset); } # Is this query expensive (for some definition of expensive)? Then we diff --git a/includes/RawPage.php b/includes/RawPage.php index d0b029750e5c..4116f005667c 100644 --- a/includes/RawPage.php +++ b/includes/RawPage.php @@ -8,33 +8,59 @@ class RawPage { function RawPage( $article ) { - global $wgRequest, $wgInputEncoding; + global $wgRequest, $wgInputEncoding, $wgSquidMaxage; $allowedCTypes = array('text/x-wiki', 'text/javascript', 'text/css', 'application/x-zope-edit'); $this->mArticle =& $article; $this->mTitle =& $article->mTitle; + $ctype = $wgRequest->getText( 'ctype' ); + $charset = $wgRequest->getText( 'charset' ); + $smaxage = $wgRequest->getText( 'smaxage' ); + $maxage = $wgRequest->getText( 'maxage' ); + $this->mOldId = $wgRequest->getInt( 'oldid' ); + # special case for 'generated' raw things: user css/js + $gen = $wgRequest->getText( 'gen' ); + if($gen == 'css') { + $this->mGen = $gen; + if($smaxage == '') $smaxage = $wgSquidMaxage; + if($ctype == '') $ctype = 'text/css'; + } else if ($gen == 'js') { + $this->mGen = $gen; + if($smaxage == '') $smaxage = $wgSquidMaxage; + if($ctype == '') $ctype = 'text/javascript'; + } else { + $this->mGen = false; + } + $this->mCharset = !empty($charset) ? $charset : $wgInputEncoding; + $this->mSmaxage = ($smaxage != '') ? $smaxage : 0; + $this->mMaxage = ($maxage != '') ? $maxage : 86400; if(empty($ctype) or !in_array($ctype, $allowedCTypes)) { $this->mContentType = 'text/x-wiki'; } else { $this->mContentType = $ctype; } - - $charset = $wgRequest->getText( 'charset' ); - $this->mCharset = !empty($charset) ? $charset : $wgInputEncoding; - $smaxage = $wgRequest->getText( 'smaxage' ); - $this->mSmaxage = !empty($smaxage) ? $smaxage : 0; - $this->mOldId = $wgRequest->getInt( 'oldid' ); } function view() { + global $wgUser, $wgOut; header( "Content-type: ".$this->mContentType.'; charset='.$this->mCharset ); # allow the client to cache this for 24 hours - header( 'Cache-Control: s-maxage='.$this->mSmaxage.', max-age=86400' ); - echo $this->getrawtext(); + header( 'Cache-Control: s-maxage='.$this->mSmaxage.', max-age='.$this->mMaxage ); + if($this->mGen) { + $sk = $wgUser->getSkin(); + $sk->initPage($wgOut); + if($this->mGen == 'css') { + echo $sk->getUserStylesheet(); + } else if($this->mGen == 'js') { + echo $sk->getUserJs(); + } + } else { + echo $this->getrawtext(); + } wfAbruptExit(); } function getrawtext () { - global $wgInputEncoding, $wgLang; + global $wgInputEncoding, $wgLang, $wgIsPg; if( !$this->mTitle ) return ''; $t = wfStrencode( $this->mTitle->getDBKey() ); $ns = $this->mTitle->getNamespace(); @@ -47,7 +73,9 @@ class RawPage { } # else get it from the DB if(!empty($this->mOldId)) { - $sql = "SELECT old_text as text,old_timestamp as timestamp,old_user as user,old_flags as flags FROM old " . + $oldtable=$wgIsPg?'"old"':'old'; + $sql = "SELECT old_text AS text,old_timestamp AS timestamp,". + "old_user AS user,old_flags AS flags FROM $oldtable " . "WHERE old_id={$this->mOldId}"; } else { $sql = "SELECT cur_id as id,cur_timestamp as timestamp,cur_user as user,cur_user_text as user_text," . diff --git a/includes/SearchEngine.php b/includes/SearchEngine.php index 19a081b302f7..53d9e691591b 100644 --- a/includes/SearchEngine.php +++ b/includes/SearchEngine.php @@ -296,6 +296,8 @@ class SearchEngine { # Use cleaner boolean search if available return $this->parseQuery4(); } + # on non mysql4 database: get list of words we don't want to search for + require_once( "FulltextStoplist.php" ); $lc = SearchEngine::legalSearchChars() . "()"; $q = preg_replace( "/([()])/", " \\1 ", $this->mUsertext ); @@ -485,8 +487,13 @@ class SearchEngine { $wgOut->redirect( $t->getFullURL( "action=edit" ) ); return; } - - $wgOut->addHTML( "

    " . wfMsg("nogomatch", $t->escapeLocalURL( "action=edit" ) ) . "

    \n" ); + + if( $t ) { + $editurl = $t->escapeLocalURL( "action=edit" ); + } else { + $editurl = ""; # ?? + } + $wgOut->addHTML( "

    " . wfMsg("nogomatch", $editurl ) . "

    \n" ); # Try a fuzzy title search $anyhit = false; diff --git a/includes/SearchUpdate.php b/includes/SearchUpdate.php index 08f66eab88ed..adad91bde47b 100644 --- a/includes/SearchUpdate.php +++ b/includes/SearchUpdate.php @@ -1,4 +1,5 @@ mId ) { return false; @@ -32,7 +33,8 @@ class SearchUpdate { $lc = SearchEngine::legalSearchChars() . "&#;"; if( $this->mText == false ) { # Just update the title - $sql = "UPDATE LOW_PRIORITY searchindex SET si_title='" . + $lowpri=$wgIsMySQL?"LOW_PRIORITY":""; + $sql = "UPDATE $lowpri searchindex SET si_title='" . wfStrencode( Title::indexTitle( $this->mNamespace, $this->mTitle ) ) . "' WHERE si_page={$this->mId}"; wfQuery( $sql, DB_WRITE, "SearchUpdate::doUpdate" ); diff --git a/includes/Setup.php b/includes/Setup.php index 7ac48f9d994d..d9b34040d299 100644 --- a/includes/Setup.php +++ b/includes/Setup.php @@ -11,61 +11,60 @@ if( !isset( $wgProfiling ) ) $wgProfiling = false; if ( $wgProfiling and (0 == rand() % $wgProfileSampleRate ) ) { - require_once( "Profiling.php" ); + require_once( 'Profiling.php' ); } else { - function wfProfileIn( $fn ) {} - function wfProfileOut( $fn = "" ) {} + function wfProfileIn( $fn = '' ) {} + function wfProfileOut( $fn = '' ) {} function wfGetProfilingOutput( $s, $e ) {} function wfProfileClose() {} } /* collect the originating ips */ -if( $wgUseSquid && isset( $_SERVER["HTTP_X_FORWARDED_FOR"] ) ) { +if( $wgUseSquid && isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { # If the web server is behind a reverse proxy, we need to find # out where our requests are really coming from. - $hopips = array_map( "trim", explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] ) ); + $hopips = array_map( 'trim', explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] ) ); while(in_array(trim(end($hopips)), $wgSquidServers)){ array_pop($hopips); } $wgIP = trim(end($hopips)); } else { - $wgIP = getenv("REMOTE_ADDR"); + $wgIP = getenv('REMOTE_ADDR'); } -$fname = "Setup.php"; +$fname = 'Setup.php'; wfProfileIn( $fname ); global $wgUseDynamicDates; -wfProfileIn( "$fname-includes" ); - -require_once( "GlobalFunctions.php" ); -require_once( "Namespace.php" ); -require_once( "RecentChange.php" ); -require_once( "Skin.php" ); -require_once( "OutputPage.php" ); -require_once( "User.php" ); -require_once( "LinkCache.php" ); -require_once( "Title.php" ); -require_once( "Article.php" ); -require_once( "MagicWord.php" ); -require_once( "memcached-client.php" ); -require_once( "Block.php" ); -require_once( "SearchEngine.php" ); -require_once( "DifferenceEngine.php" ); -require_once( "MessageCache.php" ); -require_once( "BlockCache.php" ); -require_once( "Parser.php" ); -require_once( "ParserCache.php" ); -require_once( "WebRequest.php" ); -require_once( "SpecialPage.php" ); +wfProfileIn( $fname.'-includes' ); + +require_once( 'GlobalFunctions.php' ); +require_once( 'Namespace.php' ); +require_once( 'RecentChange.php' ); +require_once( 'Skin.php' ); +require_once( 'OutputPage.php' ); +require_once( 'User.php' ); +require_once( 'LinkCache.php' ); +require_once( 'Title.php' ); +require_once( 'Article.php' ); +require_once( 'MagicWord.php' ); +require_once( 'memcached-client.php' ); +require_once( 'Block.php' ); +require_once( 'SearchEngine.php' ); +require_once( 'DifferenceEngine.php' ); +require_once( 'MessageCache.php' ); +require_once( 'BlockCache.php' ); +require_once( 'Parser.php' ); +require_once( 'ParserCache.php' ); +require_once( 'WebRequest.php' ); $wgRequest = new WebRequest(); -wfProfileOut( "$fname-includes" ); -wfProfileIn( "$fname-memcached" ); +wfProfileOut( $fname.'-includes' ); +wfProfileIn( $fname.'-memcached' ); global $wgUser, $wgLang, $wgOut, $wgTitle; global $wgArticle, $wgDeferredUpdateList, $wgLinkCache; global $wgMemc, $wgMagicWords, $wgMwRedir, $wgDebugLogFile; @@ -76,7 +75,7 @@ global $wgBlockCache, $wgParserCache, $wgParser, $wgDontTrustMemcachedWithImport # Useful debug output if ( $wgCommandLineMode ) { # wfDebug( '"' . implode( '" "', $argv ) . '"' ); -} elseif ( function_exists( "getallheaders" ) ) { +} elseif ( function_exists( 'getallheaders' ) ) { wfDebug( "\nStart request\n" ); wfDebug( $_SERVER['REQUEST_METHOD'] . ' ' . $_SERVER['REQUEST_URI'] . "\n" ); $headers = getallheaders(); @@ -126,7 +125,7 @@ if( $wgUseMemCached ) { # Test it to see if it's working # This is necessary because otherwise wfMsg would be extremely inefficient - if ( !$wgMemc->set( "test", "", 0 ) ) { + if ( !$wgMemc->set( 'test', '', 0 ) ) { wfDebug( "Memcached failed setup test - connection error?\n" ); $wgUseMemCached = false; $wgMemc = new FakeMemCachedClient(); @@ -137,60 +136,69 @@ if( $wgUseMemCached ) { # Give the message cache a separate cache in the DB. # This is a speedup over separately querying every message used - require_once( "ObjectCache.php" ); - $messageMemc = new MediaWikiBagOStuff("objectcache"); + require_once( 'ObjectCache.php' ); + $messageMemc = new MediaWikiBagOStuff('objectcache'); } -wfProfileOut( "$fname-memcached" ); -wfProfileIn( "$fname-language" ); -require_once( "languages/Language.php" ); +wfProfileOut( $fname.'-memcached' ); +wfProfileIn( $fname.'-language' ); +require_once( 'languages/Language.php' ); $wgMessageCache = new MessageCache; -$wgLangClass = "Language" . ucfirst( $wgLanguageCode ); -if( ! class_exists( $wgLangClass ) || ($wgLanguageCode == "en" && strcasecmp( $wgInputEncoding, "utf-8" ) == 0 ) ) { - require_once( "languages/LanguageUtf8.php" ); - $wgLangClass = "LanguageUtf8"; +$wgLangClass = 'Language' . ucfirst( $wgLanguageCode ); +if( ! class_exists( $wgLangClass ) || ($wgLanguageCode == 'en' && !$wgUseLatin1) ) { + # Default to English/UTF-8 + require_once( 'languages/LanguageUtf8.php' ); + $wgLangClass = 'LanguageUtf8'; } $wgLang = new $wgLangClass(); if ( !is_object($wgLang) ) { print "No language class ($wgLang)\N"; } -wfProfileOut( "$fname-Language" ); -wfProfileIn( "$fname-MessageCache" ); + +if( $wgUseLatin1 && $wgLanguageCode != 'en' ) { + # For non-UTF-8 non-English. + require_once( 'languages/LanguageLatin1.php' ); + $xxx = new LanguageLatin1( $wgLang ); + unset( $wgLang ); + $wgLang = $xxx; +} +wfProfileOut( $fname.'-language' ); +wfProfileIn( $fname.'-MessageCache' ); $wgMessageCache->initialise( $messageMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry, $wgDBname ); -wfProfileOut( "$fname-MessageCache" ); -wfProfileIn( "$fname-OutputPage" ); +wfProfileOut( $fname.'-MessageCache' ); +wfProfileIn( $fname.'-OutputPage' ); $wgOut = new OutputPage(); wfDebug( "\n\n" ); -wfProfileOut( "$fname-OutputPage" ); -wfProfileIn( "$fname-DateFormatter" ); +wfProfileOut( $fname.'-OutputPage' ); +wfProfileIn( $fname.'-DateFormatter' ); if ( $wgUseDynamicDates ) { - require_once( "DateFormatter.php" ); + require_once( 'DateFormatter.php' ); global $wgDateFormatter; $wgDateFormatter = new DateFormatter; } -wfProfileOut( "$fname-DateFormatter" ); -wfProfileIn( "$fname-SetupSession" ); +wfProfileOut( $fname.'-DateFormatter' ); +wfProfileIn( $fname.'-SetupSession' ); -if( !$wgCommandLineMode && ( isset( $_COOKIE[ini_get("session.name")] ) || isset( $_COOKIE["{$wgDBname}Password"] ) ) ) { +if( !$wgCommandLineMode && ( isset( $_COOKIE[ini_get('session.name')] ) || isset( $_COOKIE[$wgDBname.'Password'] ) ) ) { User::SetupSession(); } -wfProfileOut( "$fname-SetupSession" ); -wfProfileIn( "$fname-BlockCache" ); +wfProfileOut( $fname.'-SetupSession' ); +wfProfileIn( $fname.'-BlockCache' ); $wgBlockCache = new BlockCache( true ); -wfProfileOut( "$fname-BlockCache" ); -wfProfileIn( "$fname-User" ); +wfProfileOut( $fname.'-BlockCache' ); +wfProfileIn( $fname.'-User' ); if( $wgCommandLineMode ) { # Used for some maintenance scripts; user session cookies can screw things up @@ -200,8 +208,8 @@ if( $wgCommandLineMode ) { $wgUser = User::loadFromSession(); } -wfProfileOut( "$fname-User" ); -wfProfileIn( "$fname-misc" ); +wfProfileOut( $fname.'-User' ); +wfProfileIn( $fname.'-misc' ); $wgDeferredUpdateList = array(); $wgLinkCache = new LinkCache(); @@ -211,16 +219,12 @@ $wgParserCache = new ParserCache(); $wgParser = new Parser(); $wgOut->setParserOptions( ParserOptions::newFromUser( $wgUser ) ); -if ( !$wgAllowSysopQueries ) { - SpecialPage::removePage( "Asksql" ); -} - # Placeholders in case of DB error -$wgTitle = Title::newFromText( wfMsg( "badtitle" ) ); +$wgTitle = Title::newFromText( wfMsg( 'badtitle' ) ); $wgArticle = new Article($wgTitle); -wfProfileOut( "$fname-misc" ); -wfProfileIn( "$fname-extensions" ); +wfProfileOut( $fname.'-misc' ); +wfProfileIn( $fname.'-extensions' ); # Extension setup functions # Entries should be added to this variable during the inclusion @@ -230,7 +234,7 @@ foreach ( $wgExtensionFunctions as $func ) { $func(); } -wfProfileOut( "$fname-extensions" ); +wfProfileOut( $fname.'-extensions' ); wfProfileOut( $fname ); diff --git a/includes/SiteStatsUpdate.php b/includes/SiteStatsUpdate.php index 4c4b32cde084..900956b6398d 100644 --- a/includes/SiteStatsUpdate.php +++ b/includes/SiteStatsUpdate.php @@ -1,4 +1,5 @@ mViews < 0 ) { $m = "-1"; } @@ -30,8 +32,8 @@ class SiteStatsUpdate { else if ( $this->mGood > 0 ) { $m = "+1"; } else $m = ""; array_push( $a, "ss_good_articles=(ss_good_articles$m)" ); - - $sql = "UPDATE LOW_PRIORITY site_stats SET " . implode ( ",", $a ) . + $lowpri=$wgIsMySQL?"LOW_PRIORITY":""; + $sql = "UPDATE $lowpri site_stats SET " . implode ( ",", $a ) . " WHERE ss_row_id=1"; wfQuery( $sql, DB_WRITE, "SiteStatsUpdate::doUpdate" ); } diff --git a/includes/Skin.php b/includes/Skin.php index 0e76bfd860cf..bc460590f5d2 100644 --- a/includes/Skin.php +++ b/includes/Skin.php @@ -1,7 +1,7 @@ "Standard", - 'nostalgia' => "Nostalgia", - 'cologneblue' => "CologneBlue" + 'standard' => 'Standard', + 'nostalgia' => 'Nostalgia', + 'cologneblue' => 'CologneBlue' ); if( $wgUsePHPTal ) { - #$wgValidSkinNames[] = "PHPTal"; - #$wgValidSkinNames['davinci'] = "DaVinci"; - #$wgValidSkinNames['mono'] = "Mono"; - $wgValidSkinNames['monobook'] = "MonoBook"; - #$wgValidSkinNames['monobookminimal'] = "MonoBookMinimal"; + #$wgValidSkinNames[] = 'PHPTal'; + #$wgValidSkinNames['davinci'] = 'DaVinci'; + #$wgValidSkinNames['mono'] = 'Mono'; + $wgValidSkinNames['monobook'] = 'MonoBook'; + $wgValidSkinNames['myskin'] = 'MySkin'; + #$wgValidSkinNames['monobookminimal'] = 'MonoBookMinimal'; } -require_once( "RecentChange.php" ); +require_once( 'RecentChange.php' ); class RCCacheEntry extends RecentChange { @@ -49,7 +50,7 @@ class Skin { function Skin() { - $this->linktrail = wfMsg("linktrail"); + $this->linktrail = wfMsg('linktrail'); } function getSkinNames() @@ -60,7 +61,10 @@ class Skin { function getStylesheet() { - return "wikistandard.css"; + return 'wikistandard.css'; + } + function getSkinName() { + return "standard"; } function qbSetting() @@ -68,17 +72,17 @@ class Skin { global $wgOut, $wgUser; if ( $wgOut->isQuickbarSuppressed() ) { return 0; } - $q = $wgUser->getOption( "quickbar" ); - if ( "" == $q ) { $q = 0; } + $q = $wgUser->getOption( 'quickbar' ); + if ( '' == $q ) { $q = 0; } return $q; } function initPage( &$out ) { - $fname = "Skin::initPage"; + $fname = 'Skin::initPage'; wfProfileIn( $fname ); - $out->addLink( array( "rel" => "shortcut icon", "href" => "/favicon.ico" ) ); + $out->addLink( array( 'rel' => 'shortcut icon', 'href' => '/favicon.ico' ) ); $this->addMetadataLinks($out); @@ -95,16 +99,16 @@ class Skin { $out->addMetadataLink( array( 'title' => 'Creative Commons', 'type' => 'application/rdf+xml', - 'href' => $wgTitle->getLocalURL( "action=creativecommons") ) ); + 'href' => $wgTitle->getLocalURL( 'action=creativecommons') ) ); } if( $wgEnableDublinCoreRdf ) { $out->addMetadataLink( array( 'title' => 'Dublin Core', 'type' => 'application/rdf+xml', - 'href' => $wgTitle->getLocalURL( "action=dublincore" ) ) ); + 'href' => $wgTitle->getLocalURL( 'action=dublincore' ) ) ); } } - $copyright = ""; + $copyright = ''; if( $wgRightsPage ) { $copy = Title::newFromText( $wgRightsPage ); if( $copy ) { @@ -116,15 +120,15 @@ class Skin { } if( $copyright ) { $out->addLink( array( - "rel" => "copyright", - "href" => $copyright ) ); + 'rel' => 'copyright', + 'href' => $copyright ) ); } } function outputPage( &$out ) { global $wgDebugComments; - wfProfileIn( "Skin::outputPage" ); + wfProfileIn( 'Skin::outputPage' ); $this->initPage( $out ); $out->out( $out->headElement() ); @@ -151,20 +155,45 @@ class Skin { } function getHeadScripts() { - global $wgStylePath; + global $wgStylePath, $wgUser, $wgLang; $r = "\n"; + if( $wgUser->getID() != 0 ) { # logged in + $userpage = $wgLang->getNsText( Namespace::getUser() ) . ":" . $wgUser->getName(); + $userjs = htmlspecialchars($this->makeUrl($userpage.'/'.$this->getSkinName().'.js', 'action=raw&ctype=text/javascript')); + $r .= '\n"; + } return $r; } + # get the user/site-specific stylesheet, SkinPHPTal called from RawPage.php (settings are cached that way) + function getUserStylesheet() { + global $wgOut, $wgStylePath, $wgLang, $wgUser, $wgRequest, $wgTitle; + $sheet = $this->getStylesheet(); + $action = $wgRequest->getText('action'); + $s = "@import \"$wgStylePath/$sheet\";\n"; + if($wgLang->isRTL()) $s .= "@import \"$wgStylePath/common_rtl.css\";\n"; + if( $wgUser->getID() != 0 ) { # logged in + if($wgTitle->isCssSubpage() and $action == 'submit' and $wgTitle->userCanEditCssJsSubpage()) { + $s .= $wgRequest->getText('wpTextbox1'); + } else { + $userpage = $wgLang->getNsText( Namespace::getUser() ) . ":" . $wgUser->getName(); + $s.= '@import "'.$this->makeUrl($userpage.'/'.$this->getSkinName(), 'action=raw&ctype=text/css').'";'."\n"; + } + } + $s .= $this->doGetUserStyles(); + return $s."\n"; + } + # placeholder, returns generated js in monobook + function getUserJs() { + return; + } + function getUserStyles() { global $wgOut, $wgStylePath, $wgLang; - $sheet = $this->getStylesheet(); $s = "\n"; return $s; @@ -174,19 +203,19 @@ class Skin { { global $wgUser; - $s = ""; - if ( 1 == $wgUser->getOption( "underline" ) ) { + $s = ''; + if ( 1 == $wgUser->getOption( 'underline' ) ) { # Don't override browser settings } else { # CHECK MERGE @@@ # Force no underline - $s .= "a { " . + $s .= 'a { ' . "text-decoration: none; }\n"; } - if ( 1 == $wgUser->getOption( "highlightbroken" ) ) { + if ( 1 == $wgUser->getOption( 'highlightbroken' ) ) { $s .= "a.new, #quickbar a.new { color: #CC2200; }\n"; } - if ( 1 == $wgUser->getOption( "justify" ) ) { + if ( 1 == $wgUser->getOption( 'justify' ) ) { $s .= "#article { text-align: justify; }\n"; } return $s; @@ -199,13 +228,13 @@ class Skin { extract( $wgRequest->getValues( 'oldid', 'redirect', 'diff' ) ); if ( 0 != $wgTitle->getNamespace() ) { - $a = array( "bgcolor" => "#ffffec" ); + $a = array( 'bgcolor' => '#ffffec' ); } - else $a = array( "bgcolor" => "#FFFFFF" ); - if($wgOut->isArticle() && $wgUser->getOption("editondblclick") && + else $a = array( 'bgcolor' => '#FFFFFF' ); + if($wgOut->isArticle() && $wgUser->getOption('editondblclick') && (!$wgTitle->isProtected() || $wgUser->isSysop()) ) { - $t = wfMsg( "editthispage" ); - $oid = $red = ""; + $t = wfMsg( 'editthispage' ); + $oid = $red = ''; if ( !empty($redirect) ) { $red = "&redirect={$redirect}"; } @@ -213,8 +242,8 @@ class Skin { $oid = "&oldid={$oldid}"; } $s = $wgTitle->getFullURL( "action=edit{$oid}{$red}" ); - $s = "document.location = \"" .$s ."\";"; - $a += array ("ondblclick" => $s); + $s = 'document.location = "' .$s .'";'; + $a += array ('ondblclick' => $s); } $a['onload'] = $wgOut->getOnloadHandler(); @@ -227,12 +256,12 @@ class Skin { $link = urldecode( $link ); $link = $wgLang->checkTitleEncoding( $link ); - $link = str_replace( "_", " ", $link ); + $link = str_replace( '_', ' ', $link ); $link = wfEscapeHTML( $link ); $r = ($class != '') ? " class='$class'" : " class='external'"; - if ( 1 == $wgUser->getOption( "hover" ) ) { + if ( 1 == $wgUser->getOption( 'hover' ) ) { $r .= " title=\"{$link}\""; } return $r; @@ -243,18 +272,18 @@ class Skin { global $wgUser, $wgOut; $link = urldecode( $link ); - $link = str_replace( "_", " ", $link ); + $link = str_replace( '_', ' ', $link ); $link = wfEscapeHTML( $link ); - if ( $broken == "stub" ) { - $r = " class='stub'"; - } else if ( $broken == "yes" ) { - $r = " class='new'"; + if ( $broken == 'stub' ) { + $r = ' class="stub"'; + } else if ( $broken == 'yes' ) { + $r = ' class="new"'; } else { - $r = ""; + $r = ''; } - if ( 1 == $wgUser->getOption( "hover" ) ) { + if ( 1 == $wgUser->getOption( 'hover' ) ) { $r .= " title=\"{$link}\""; } return $r; @@ -264,15 +293,15 @@ class Skin { { global $wgUser, $wgOut; - if ( $broken == "stub" ) { - $r = " class='stub'"; - } else if ( $broken == "yes" ) { - $r = " class='new'"; + if ( $broken == 'stub' ) { + $r = ' class="stub"'; + } else if ( $broken == 'yes' ) { + $r = ' class="new"'; } else { - $r = ""; + $r = ''; } - if ( 1 == $wgUser->getOption( "hover" ) ) { + if ( 1 == $wgUser->getOption( 'hover' ) ) { $r .= ' title ="' . $nt->getEscapedText() . '"'; } return $r; @@ -294,7 +323,7 @@ class Skin { if( $wgSiteNotice ) { $note = "\n
    $wgSiteNotice
    \n"; } else { - $note = ""; + $note = ''; } return $this->doBeforeContent() . $note; } @@ -302,19 +331,19 @@ class Skin { function doBeforeContent() { global $wgUser, $wgOut, $wgTitle, $wgLang; - $fname = "Skin::doBeforeContent"; + $fname = 'Skin::doBeforeContent'; wfProfileIn( $fname ); - $s = ""; + $s = ''; $qb = $this->qbSetting(); if( $langlinks = $this->otherLanguages() ) { $rows = 2; - $borderhack = ""; + $borderhack = ''; } else { $rows = 1; $langlinks = false; - $borderhack = "class='top'"; + $borderhack = 'class="top"'; } $s .= "\n
    \n
    \n" . @@ -326,11 +355,11 @@ class Skin { if ( !$shove ) { $s .= "\n" . - $this->logoText() . ""; + $this->logoText() . ''; } elseif( $left ) { $s .= $this->getQuickbarCompensator( $rows ); } - $l = $wgLang->isRTL() ? "right" : "left"; + $l = $wgLang->isRTL() ? 'right' : 'left'; $s .= "\n"; $s .= $this->topLinks() ; @@ -361,23 +390,19 @@ class Skin { function getCategoryLinks () { global $wgOut, $wgTitle, $wgUser, $wgParser; global $wgUseCategoryMagic, $wgUseCategoryBrowser, $wgLang; - if( !$wgUseCategoryMagic ) return "" ; - if( count( $wgOut->mCategoryLinks ) == 0 ) return ""; - if( !$wgOut->isArticle() ) return ""; + if( !$wgUseCategoryMagic ) return '' ; + if( count( $wgOut->mCategoryLinks ) == 0 ) return ''; + if( !$wgOut->isArticle() ) return ''; - $t = implode ( " | " , $wgOut->mCategoryLinks ) ; - $s = $this->makeKnownLink( "Special:Categories", - wfMsg( "categories" ), "article=" . urlencode( $wgTitle->getPrefixedDBkey() ) ) - . ": " . $t; + $t = implode ( ' | ' , $wgOut->mCategoryLinks ) ; + $s = $this->makeKnownLink( 'Special:Categories', + wfMsg( 'categories' ), 'article=' . urlencode( $wgTitle->getPrefixedDBkey() ) ) + . ': ' . $t; if($wgUseCategoryBrowser) { - $s .= "

    "; + $s .= '

    '; $catstack = array(); - $wgTitle->getAllParentCategories(&$catstack); - foreach ($catstack as $key => $cat) - { - $s .= $this->makeLink($wgLang->getNSText( Namespace::getCategory() ).":".$key, $key )." > ".$cat."
    \n"; - } + $s.= $wgTitle->getAllParentCategories($catstack); } return $s; @@ -416,16 +441,16 @@ class Skin { function doAfterContent() { global $wgUser, $wgOut, $wgLang; - $fname = "Skin::doAfterContent"; + $fname = 'Skin::doAfterContent'; wfProfileIn( $fname ); - wfProfileIn( "$fname-1" ); + wfProfileIn( $fname.'-1' ); $s = "\n

    \n"; $s .= "\n\n
    \n"; - wfProfileOut( "$fname-3" ); - wfProfileIn( "$fname-4" ); + wfProfileOut( $fname.'-3' ); + wfProfileIn( $fname.'-4' ); if ( 0 != $qb ) { $s .= $this->quickBar(); } - wfProfileOut( "$fname-4" ); + wfProfileOut( $fname.'-4' ); wfProfileOut( $fname ); return $s; } @@ -469,7 +494,7 @@ class Skin { $action = $wgRequest->getText( 'action' ); $s = $this->printableLink(); - if ( wfMsg ( "disclaimers" ) != "-" ) $s .= " | " . $this->makeKnownLink( wfMsg( "disclaimerpage" ), wfMsg( "disclaimers" ) ) ; + if ( wfMsg ( 'disclaimers' ) != '-' ) $s .= ' | ' . $this->makeKnownLink( wfMsg( 'disclaimerpage' ), wfMsg( 'disclaimers' ) ) ; if ( $wgOut->isArticleRelated() ) { if ( $wgTitle->getNamespace() == Namespace::getImage() ) { @@ -482,16 +507,16 @@ class Skin { if ( isset ( $wgUseApproval ) && $wgUseApproval ) { $t = $wgTitle->getDBkey(); - $name = "Approve this article" ; + $name = 'Approve this article' ; $link = "http://test.wikipedia.org/w/magnus/wiki.phtml?title={$t}&action=submit&doit=1" ; #wfEscapeHTML( wfImageUrl( $name ) ); $style = $this->getExternalLinkAttributes( $link, $name ); $s .= " | {$name}" ; } } - if ( "history" == $action || isset( $diff ) || isset( $oldid ) ) { - $s .= " | " . $this->makeKnownLink( $wgTitle->getPrefixedText(), - wfMsg( "currentrev" ) ); + if ( 'history' == $action || isset( $diff ) || isset( $oldid ) ) { + $s .= ' | ' . $this->makeKnownLink( $wgTitle->getPrefixedText(), + wfMsg( 'currentrev' ) ); } if ( $wgUser->getNewtalk() ) { @@ -503,14 +528,14 @@ class Skin { $n =$wgUser->getName(); $tl = $this->makeKnownLink( $wgLang->getNsText( Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}", - wfMsg("newmessageslink") ); - $s.=" | ". wfMsg( "newmessages", $tl ) . ""; + wfMsg('newmessageslink') ); + $s.= ' | '. wfMsg( 'newmessages', $tl ) . ''; } } $undelete = $this->getUndeleteLink(); if( !empty( $undelete ) ) { - $s .= " | $undelete"; + $s .= ' | '.$undelete; } return $s; } @@ -520,12 +545,12 @@ class Skin { if( $wgUser->isSysop() && (($wgTitle->getArticleId() == 0) || ($action == "history")) && ($n = $wgTitle->isDeleted() ) ) { - return wfMsg( "thisisdeleted", + return wfMsg( 'thisisdeleted', $this->makeKnownLink( - $wgLang->SpecialPage( "Undelete/" . $wgTitle->getPrefixedDBkey() ), - wfMsg( "restorelink", $n ) ) ); + $wgLang->SpecialPage( 'Undelete/' . $wgTitle->getPrefixedDBkey() ), + wfMsg( 'restorelink', $n ) ) ); } - return ""; + return ''; } function printableLink() @@ -533,15 +558,15 @@ class Skin { global $wgOut, $wgFeedClasses, $wgRequest; $baseurl = $_SERVER['REQUEST_URI']; - if( strpos( "?", $baseurl ) == false ) { - $baseurl .= "?"; + if( strpos( '?', $baseurl ) == false ) { + $baseurl .= '?'; } else { - $baseurl .= "&"; + $baseurl .= '&'; } $baseurl = htmlspecialchars( $baseurl ); - $printurl = $wgRequest->escapeAppendQuery( "printable=yes" ); + $printurl = $wgRequest->escapeAppendQuery( 'printable=yes' ); - $s = "" . wfMsg( "printableversion" ) . ""; + $s = "" . wfMsg( 'printableversion' ) . ''; if( $wgOut->isSyndicated() ) { foreach( $wgFeedClasses as $format => $class ) { $feedurl = $wgRequest->escapeAppendQuery( "feed=$format" ); @@ -555,8 +580,8 @@ class Skin { { global $wgOut, $wgTitle, $wgUser; - $s = "

    " . htmlspecialchars( $wgOut->getPageTitle() ) . "

    "; - if($wgUser->getOption("editsectiononrightclick") && $wgTitle->userCanEdit()) { $s=$this->editSectionScript(0,$s);} + $s = '

    ' . htmlspecialchars( $wgOut->getPageTitle() ) . '

    '; + if($wgUser->getOption( 'editsectiononrightclick' ) && $wgTitle->userCanEdit()) { $s=$this->editSectionScript(0,$s);} return $s; } @@ -565,9 +590,9 @@ class Skin { global $wgOut; $sub = $wgOut->getSubtitle(); - if ( "" == $sub ) { + if ( '' == $sub ) { global $wgExtraSubtitle; - $sub = wfMsg( "fromwikipedia" ) . $wgExtraSubtitle; + $sub = wfMsg( 'fromwikipedia' ) . $wgExtraSubtitle; } $subpages = $this->subPageSubtitle(); $sub .= !empty($subpages)?"

    $subpages":''; @@ -581,23 +606,23 @@ class Skin { $subpages = ''; if($wgOut->isArticle() && !empty($wgNamespacesWithSubpages[$wgTitle->getNamespace()])) { $ptext=$wgTitle->getPrefixedText(); - if(preg_match("/\//",$ptext)) { - $links=explode("/",$ptext); - $c=0; - $growinglink=""; + if(preg_match('/\//',$ptext)) { + $links = explode('/',$ptext); + $c = 0; + $growinglink = ''; foreach($links as $link) { $c++; if ($cmakeLink( $growinglink, $link ); - if(preg_match("/class='new'/i",$getlink)) { break; } # this is a hack, but it saves time + if(preg_match('/class="new"/i',$getlink)) { break; } # this is a hack, but it saves time if ($c>1) { - $subpages .= " | "; + $subpages .= ' | '; } else { - $subpages .="< "; + $subpages .= '< '; } $subpages .= $getlink; - $growinglink.="/"; + $growinglink .= '/'; } } } @@ -609,30 +634,30 @@ class Skin { { global $wgUser, $wgTitle, $wgLang, $wgShowIPinHeader, $wgIP; - $li = $wgLang->specialPage( "Userlogin" ); - $lo = $wgLang->specialPage( "Userlogout" ); + $li = $wgLang->specialPage( 'Userlogin' ); + $lo = $wgLang->specialPage( 'Userlogout' ); - $s = ""; + $s = ''; if ( 0 == $wgUser->getID() ) { - if( $wgShowIPinHeader && isset( $_COOKIE[ini_get("session.name")] ) ) { + if( $wgShowIPinHeader && isset( $_COOKIE[ini_get('session.name')] ) ) { $n = $wgIP; $tl = $this->makeKnownLink( $wgLang->getNsText( Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}", $wgLang->getNsText( Namespace::getTalk( 0 ) ) ); - $s .= $n . " (".$tl.")"; + $s .= $n . ' ('.$tl.')'; } else { - $s .= wfMsg("notloggedin"); + $s .= wfMsg('notloggedin'); } $rt = $wgTitle->getPrefixedURL(); if ( 0 == strcasecmp( urlencode( $lo ), $rt ) ) { - $q = ""; + $q = ''; } else { $q = "returnto={$rt}"; } $s .= "\n
    " . $this->makeKnownLink( $li, - wfMsg( "login" ), $q ); + wfMsg( 'login' ), $q ); } else { $n = $wgUser->getName(); $rt = $wgTitle->getPrefixedURL(); @@ -644,18 +669,18 @@ class Skin { $s .= $this->makeKnownLink( $wgLang->getNsText( Namespace::getUser() ) . ":{$n}", $n ) . "{$tl}
    " . - $this->makeKnownLink( $lo, wfMsg( "logout" ), - "returnto={$rt}" ) . " | " . - $this->specialLink( "preferences" ); + $this->makeKnownLink( $lo, wfMsg( 'logout' ), + "returnto={$rt}" ) . ' | ' . + $this->specialLink( 'preferences' ); } - $s .= " | " . $this->makeKnownLink( wfMsg( "helppage" ), - wfMsg( "help" ) ); + $s .= ' | ' . $this->makeKnownLink( wfMsg( 'helppage' ), + wfMsg( 'help' ) ); return $s; } function getSearchLink() { - $searchPage =& Title::makeTitle( NS_SPECIAL, "Search" ); + $searchPage =& Title::makeTitle( NS_SPECIAL, 'Search' ); return $searchPage->getLocalURL(); } @@ -668,12 +693,12 @@ class Skin { global $wgRequest; $search = $wgRequest->getText( 'search' ); - $s = "

    escapeSearchLink() . "\">\n" - . "\n" - . " " - . "\n
    "; + . ' ' + . '\n"; return $s; } @@ -684,7 +709,7 @@ class Skin { $sep = " |\n"; $s = $this->mainPageLink() . $sep - . $this->specialLink( "recentchanges" ); + . $this->specialLink( 'recentchanges' ); if ( $wgOut->isArticleRelated() ) { $s .= $sep . $this->editThisPage() @@ -701,9 +726,9 @@ class Skin { global $wgOut, $wgUser, $wgTitle; $sep = " |\n"; - $s = ""; + $s = ''; if ( $wgOut->isArticleRelated() ) { - $s .= "" . $this->editThisPage() . ""; + $s .= '' . $this->editThisPage() . ''; if ( 0 != $wgUser->getID() ) { $s .= $sep . $this->watchThisPage(); } @@ -744,21 +769,21 @@ class Skin { global $wgDisableCounters; extract( $wgRequest->getValues( 'oldid', 'diff' ) ); - if ( ! $wgOut->isArticle() ) { return ""; } - if ( isset( $oldid ) || isset( $diff ) ) { return ""; } - if ( 0 == $wgArticle->getID() ) { return ""; } + if ( ! $wgOut->isArticle() ) { return ''; } + if ( isset( $oldid ) || isset( $diff ) ) { return ''; } + if ( 0 == $wgArticle->getID() ) { return ''; } - $s = ""; + $s = ''; if ( !$wgDisableCounters ) { $count = $wgLang->formatNum( $wgArticle->getCount() ); if ( $count ) { - $s = wfMsg( "viewcount", $count ); + $s = wfMsg( 'viewcount', $count ); } } - $s .= " " . $this->getCredits(); + $s .= ' ' . $this->getCredits(); - return $s . " " . $this->getCopyright(); + return $s . ' ' . $this->getCopyright(); } function getCredits() { @@ -771,7 +796,7 @@ class Skin { } else { $s = $this->getAuthorCredits(); if ($wgMaxCredits > 1) { - $s .= " " . $this->getContributorCredits(); + $s .= ' ' . $this->getContributorCredits(); } } @@ -784,13 +809,13 @@ class Skin { $last_author = $wgArticle->getUser(); if ($last_author == 0) { - $author_credit = wfMsg("anonymous"); + $author_credit = wfMsg('anonymous'); } else { $real_name = User::whoIsReal($last_author); if (!empty($real_name)) { $author_credit = $real_name; } else { - $author_credit = wfMsg("siteuser", User::whoIs($last_author)); + $author_credit = wfMsg('siteuser', User::whoIs($last_author)); } } @@ -798,9 +823,9 @@ class Skin { if ( $timestamp ) { $d = $wgLang->timeanddate( $wgArticle->getTimestamp(), true ); } else { - $d = ""; + $d = ''; } - return wfMsg("lastmodifiedby", $d, $author_credit); + return wfMsg('lastmodifiedby', $d, $author_credit); } function getContributorCredits() { @@ -830,23 +855,23 @@ class Skin { $user = $wgLang->listToText(array_values($user_names)); if (!empty($user)) { - $user = wfMsg("siteusers", $user); + $user = wfMsg('siteusers', $user); } if ($contributors[0] && $contributors[0][0] > 0) { - $anon = wfMsg("anonymous"); + $anon = wfMsg('anonymous'); } else { $anon = ''; } $creds = $wgLang->listToText(array($real, $user, $anon)); - return wfMsg("othercontribs", $creds); + return wfMsg('othercontribs', $creds); } function getCopyright() { global $wgRightsPage, $wgRightsUrl, $wgRightsText; - $out = ""; + $out = ''; if( $wgRightsPage ) { $link = $this->makeKnownLink( $wgRightsPage, $wgRightsText ); } elseif( $wgRightsUrl ) { @@ -855,23 +880,23 @@ class Skin { # Give up now return $out; } - $out .= wfMsg( "copyright", $link ); + $out .= wfMsg( 'copyright', $link ); return $out; } function getCopyrightIcon() { global $wgRightsPage, $wgRightsUrl, $wgRightsText, $wgRightsIcon; - $out = ""; + $out = ''; if( $wgRightsIcon ) { $icon = htmlspecialchars( $wgRightsIcon ); if( $wgRightsUrl ) { $url = htmlspecialchars( $wgRightsUrl ); - $out .= ""; + $out .= ''; } $text = htmlspecialchars( $wgRightsText ); $out .= "$text"; if( $wgRightsUrl ) { - $out .= ""; + $out .= ''; } } return $out; @@ -880,7 +905,7 @@ class Skin { function getPoweredBy() { global $wgStylePath; $url = htmlspecialchars( "$wgStylePath/images/poweredby_mediawiki_88x31.png" ); - $img = "MediaWiki"; + $img = 'MediaWiki'; return $img; } @@ -891,23 +916,23 @@ class Skin { $timestamp = $wgArticle->getTimestamp(); if ( $timestamp ) { $d = $wgLang->timeanddate( $wgArticle->getTimestamp(), true ); - $s = " " . wfMsg( "lastmodified", $d ); + $s = ' ' . wfMsg( 'lastmodified', $d ); } else { - $s = ""; + $s = ''; } return $s; } - function logoText( $align = "" ) + function logoText( $align = '' ) { - if ( "" != $align ) { $a = " align='{$align}'"; } - else { $a = ""; } + if ( '' != $align ) { $a = ' align="'.$align.'"'; } + else { $a = ''; } - $mp = wfMsg( "mainpage" ); + $mp = wfMsg( 'mainpage' ); $titleObj = Title::newFromText( $mp ); - $s = "escapeLocalURL() - . "\">getLogo() . "\" alt=\"" . "[{$mp}]\" />"; + $s = '"; return $s; } @@ -916,7 +941,7 @@ class Skin { global $wgOut, $wgTitle, $wgUser, $wgRequest, $wgLang; global $wgDisableUploads, $wgRemoteUploads; - $fname = "Skin::quickBar"; + $fname = 'Skin::quickBar'; wfProfileIn( $fname ); $action = $wgRequest->getText( 'action' ); @@ -928,69 +953,69 @@ class Skin { $sep = "\n
    "; $s .= $this->mainPageLink() - . $sep . $this->specialLink( "recentchanges" ) - . $sep . $this->specialLink( "randompage" ); + . $sep . $this->specialLink( 'recentchanges' ) + . $sep . $this->specialLink( 'randompage' ); if ($wgUser->getID()) { - $s.= $sep . $this->specialLink( "watchlist" ) ; - $s .= $sep .$this->makeKnownLink( $wgLang->specialPage( "Contributions" ), - wfMsg( "mycontris" ), "target=" . wfUrlencode($wgUser->getName() ) ); + $s.= $sep . $this->specialLink( 'watchlist' ) ; + $s .= $sep .$this->makeKnownLink( $wgLang->specialPage( 'Contributions' ), + wfMsg( 'mycontris' ), 'target=' . wfUrlencode($wgUser->getName() ) ); } // only show watchlist link if logged in - if ( wfMsg ( "currentevents" ) != "-" ) $s .= $sep . $this->makeKnownLink( wfMsg( "currentevents" ), "" ) ; + if ( wfMsg ( 'currentevents' ) != '-' ) $s .= $sep . $this->makeKnownLink( wfMsg( 'currentevents' ), '' ) ; $s .= "\n

    "; $articleExists = $wgTitle->getArticleId(); - if ( $wgOut->isArticle() || $action =="edit" || $action =="history" || $wpPreview) { + if ( $wgOut->isArticle() || $action =='edit' || $action =='history' || $wpPreview) { if($wgOut->isArticle()) { - $s .= "" . $this->editThisPage() . ""; + $s .= '' . $this->editThisPage() . ''; } else { # backlink to the article in edit or history mode if($articleExists){ # no backlink if no article switch($tns) { case 0: - $text = wfMsg("articlepage"); + $text = wfMsg('articlepage'); break; case 1: - $text = wfMsg("viewtalkpage"); + $text = wfMsg('viewtalkpage'); break; case 2: - $text = wfMsg("userpage"); + $text = wfMsg('userpage'); break; case 3: - $text = wfMsg("viewtalkpage"); + $text = wfMsg('viewtalkpage'); break; case 4: - $text = wfMsg("wikipediapage"); + $text = wfMsg('wikipediapage'); break; case 5: - $text = wfMsg("viewtalkpage"); + $text = wfMsg('viewtalkpage'); break; case 6: - $text = wfMsg("imagepage"); + $text = wfMsg('imagepage'); break; case 7: - $text = wfMsg("viewtalkpage"); + $text = wfMsg('viewtalkpage'); break; default: - $text= wfMsg("articlepage"); + $text= wfMsg('articlepage'); } $link = $wgTitle->getText(); if ($nstext = $wgLang->getNsText($tns) ) { # add namespace if necessary - $link = $nstext . ":" . $link ; + $link = $nstext . ':' . $link ; } $s .= $this->makeLink( $link, $text ); } elseif( $wgTitle->getNamespace() != Namespace::getSpecial() ) { # we just throw in a "New page" text to tell the user that he's in edit mode, # and to avoid messing with the separator that is prepended to the next item - $s .= "" . wfMsg("newpage") . ""; + $s .= '' . wfMsg('newpage') . ''; } } - if( $tns%2 && $action!="edit" && !$wpPreview) { - $s.="
    ".$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg("postcomment"),"action=edit§ion=new"); + if( $tns%2 && $action!='edit' && !$wpPreview) { + $s.= '
    '.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit§ion=new'); } /* @@ -1000,7 +1025,7 @@ class Skin { unwatched. Therefore we do not show the "Watch this page" link in edit mode */ if ( 0 != $wgUser->getID() && $articleExists) { - if($action!="edit" && $action != "submit" ) + if($action!='edit' && $action != 'submit' ) { $s .= $sep . $this->watchThisPage(); } @@ -1012,7 +1037,7 @@ class Skin { $sep . $this->protectThisPage(); } $s .= $sep . $this->talkLink(); - if ($articleExists && $action !="history") { + if ($articleExists && $action !='history') { $s .= $sep . $this->historyLink(); } $s.=$sep . $this->whatLinksHere(); @@ -1041,15 +1066,15 @@ class Skin { } if ( 0 != $wgUser->getID() && ( !$wgDisableUploads || $wgRemoteUploads ) ) { - $s .= $this->specialLink( "upload" ) . $sep; + $s .= $this->specialLink( 'upload' ) . $sep; } - $s .= $this->specialLink( "specialpages" ) + $s .= $this->specialLink( 'specialpages' ) . $sep . $this->bugReportsLink(); global $wgSiteSupportPage; if( $wgSiteSupportPage ) { $s .= "\n
    " . wfMsg( "sitesupport" ) . ""; + '" class="internal">' . wfMsg( 'sitesupport' ) . ''; } $s .= "\n
    \n"; @@ -1063,27 +1088,27 @@ class Skin { $a = array(); $pages = SpecialPage::getPages(); - foreach ( $pages[""] as $name => $page ) { + foreach ( $pages[''] as $name => $page ) { $a[$name] = $page->getDescription(); } if ( $wgUser->isSysop() ) { - foreach ( $pages["sysop"] as $name => $page ) { + foreach ( $pages['sysop'] as $name => $page ) { $a[$name] = $page->getDescription(); } } if ( $wgUser->isDeveloper() ) { - foreach ( $pages["developer"] as $name => $page ) { + foreach ( $pages['developer'] as $name => $page ) { $a[$name] = $page->getDescription() ; } } - $go = wfMsg( "go" ); - $sp = wfMsg( "specialpages" ); - $spp = $wgLang->specialPage( "Specialpages" ); + $go = wfMsg( 'go' ); + $sp = wfMsg( 'specialpages' ); + $spp = $wgLang->specialPage( 'Specialpages' ); - $s = "
    \n"; + $s = '\n"; $s .= " {$qbs[$i]}\n" ); } + $wgOut->addHtml('
    '.wfMsg('qbsettingsnote').'
    '); $wgOut->addHtml( "\n\n" ); # Skin setting diff --git a/includes/SpecialRandompage.php b/includes/SpecialRandompage.php index a442623f1b18..bf6a7fa9a03e 100644 --- a/includes/SpecialRandompage.php +++ b/includes/SpecialRandompage.php @@ -1,16 +1,18 @@ $randstr ORDER BY cur_random diff --git a/includes/SpecialShortpages.php b/includes/SpecialShortpages.php index 560b02b8c1af..c3eafc41187f 100644 --- a/includes/SpecialShortpages.php +++ b/includes/SpecialShortpages.php @@ -1,4 +1,8 @@ addHTML( "

    " . wfMsg( "sitestats" ) . "

    \n" ); @@ -31,12 +31,13 @@ function wfSpecialStatistics() $wgOut->addWikiText( $text ); $wgOut->addHTML( "

    " . wfMsg( "userstats" ) . "

    \n" ); - $sql = "SELECT COUNT(user_id) AS total FROM user"; + $usertable=$wgIsPg?'"user"':'user'; + $sql = "SELECT COUNT(user_id) AS total FROM $usertable"; $res = wfQuery( $sql, DB_READ, $fname ); $row = wfFetchObject( $res ); $total = $row->total; - $sql = "SELECT COUNT(user_id) AS total FROM user " . + $sql = "SELECT COUNT(user_id) AS total FROM $usertable " . "WHERE user_rights LIKE '%sysop%'"; $res = wfQuery( $sql, DB_READ, $fname ); $row = wfFetchObject( $res ); diff --git a/includes/SpecialUnusedimages.php b/includes/SpecialUnusedimages.php index 09075f5be1e2..4bc8d7bbf886 100644 --- a/includes/SpecialUnusedimages.php +++ b/includes/SpecialUnusedimages.php @@ -8,7 +8,7 @@ function wfSpecialUnusedimages() { $sql = "SELECT img_name,img_user,img_user_text,img_timestamp,img_description " . "FROM image LEFT JOIN imagelinks ON img_name=il_to WHERE il_to IS NULL " . - "ORDER BY img_timestamp LIMIT {$offset}, {$limit}"; + "ORDER BY img_timestamp ".wfLimitResult($limit,$offset); $res = wfQuery( $sql, DB_READ, $fname ); $sk = $wgUser->getSkin(); diff --git a/includes/SpecialUpload.php b/includes/SpecialUpload.php index eeff3989881d..ef70a19a83fa 100644 --- a/includes/SpecialUpload.php +++ b/includes/SpecialUpload.php @@ -75,7 +75,7 @@ class UploadForm { global $wgSavedFile, $wgUploadOldVersion; global $wgUseCopyrightUpload; global $wgCheckFileExtensions, $wgStrictFileExtensions; - global $wgFileExtensions, $wgFileBlacklist; + global $wgFileExtensions, $wgFileBlacklist, $wgUploadSizeWarning; if ( $wgUseCopyrightUpload ) { $this->mUploadAffirm = 1; @@ -126,7 +126,8 @@ class UploadForm { return $this->uploadWarning( wfMsg( "badfiletype", $ext ) ); } } - if ( ( ! $this->mIgnoreWarning ) && ( $this->mUploadSize > 150000 ) ) { + if ( $wgUploadSizeWarning && ( ! $this->mIgnoreWarning ) && + ( $this->mUploadSize > $wgUploadSizeWarning ) ) { return $this->uploadWarning( wfMsg( "largefile" ) ); } } diff --git a/includes/SpecialWatchlist.php b/includes/SpecialWatchlist.php index 619dc38445f9..806eff0e9673 100644 --- a/includes/SpecialWatchlist.php +++ b/includes/SpecialWatchlist.php @@ -5,7 +5,7 @@ require_once( "WatchedItem.php" ); function wfSpecialWatchlist() { global $wgUser, $wgOut, $wgLang, $wgTitle, $wgMemc; - global $wgUseWatchlistCache, $wgWLCacheTimeout, $wgDBname; + global $wgUseWatchlistCache, $wgWLCacheTimeout, $wgDBname, $wgIsMySQL; global $days, $limit, $target; # From query string $fname = "wfSpecialWatchlist"; @@ -102,10 +102,14 @@ function wfSpecialWatchlist() $sk = $wgUser->getSkin(); while( $s = wfFetchObject( $res ) ) { $t = Title::makeTitle( $s->wl_namespace, $s->wl_title ); - $t = $t->getPrefixedText(); - $wgOut->addHTML( "
  • " . - $sk->makeKnownLink( $t, $t ) . - "
  • \n" ); + if( is_null( $t ) ) { + $wgOut->addHTML( '\n" ); + } else { + $t = $t->getPrefixedText(); + $wgOut->addHTML( "
  • " . + $sk->makeKnownLink( $t, $t ) . + "
  • \n" ); + } } $wgOut->addHTML( "\n" . " Astronomy > Encyclopedia function getAllParentCategories(&$stack) { - global $wgUser; - $sk =& $wgUser->getSkin() ; - + global $wgUser,$wgLang; + $result = ''; + # getting parents $parents = $this->getParentCategories( ); - - foreach($parents as $parent) + + if($parents == '') { - # create a title object for the parent - $tpar = Title::newFromID($parent->cur_id); - - if(isset($stack[$this->getText()])) + # The current element has no more parent so we dump the stack + # and make a clean line of categories + $sk =& $wgUser->getSkin() ; + + foreach ( array_reverse($stack) as $child => $parent ) { - $stack[$tpar->getText()] = $sk->makeLink( $this->getPrefixedDBkey(), $this->getText() ); - $stack[$tpar->getText()] .= " > ".$stack[$this->getText()]; - } else { - # don't make a link for current page - $stack[$tpar->getText()] = $this->getText(); + # make a link of that parent + $result .= $sk->makeLink($wgLang->getNSText ( Namespace::getCategory() ).":".$parent,$parent); + $result .= ' > '; + $lastchild = $child; } + # append the last child. + # TODO : We should have a last child unless there is an error in the + # "categorylinks" table. + if(isset($lastchild)) { $result .= $lastchild; } + + $result .= "
    \n"; + + # now we can empty the stack + $stack = array(); - unset( $stack[$this->getText()] ); - $tpar->getAllParentCategories(&$stack); + } else { + # look at parents of current category + foreach($parents as $parent) + { + # create a title object for the parent + $tpar = Title::newFromID($parent->cur_id); + # add it to the stack + $stack[$this->getText()] = $tpar->getText(); + # grab its parents + $result .= $tpar->getAllParentCategories($stack); + } } + + if(isset($result)) { return $result; } + else { return ''; }; } diff --git a/includes/ViewCountUpdate.php b/includes/ViewCountUpdate.php index 84a03991f8ce..16976f11b0f2 100644 --- a/includes/ViewCountUpdate.php +++ b/includes/ViewCountUpdate.php @@ -1,6 +1,6 @@ mPageID}"; $res = wfQuery( $sql, DB_WRITE, "ViewCountUpdate::doUpdate" ); } } - ?> diff --git a/includes/WatchedItem.php b/includes/WatchedItem.php index 74371be4bf25..23ad2804e1de 100644 --- a/includes/WatchedItem.php +++ b/includes/WatchedItem.php @@ -36,10 +36,22 @@ class WatchedItem { function addWatch() { + global $wgIsMySQL; # REPLACE instead of INSERT because occasionally someone # accidentally reloads a watch-add operation. - $sql = "REPLACE INTO watchlist (wl_user, wl_namespace,wl_title) VALUES ($this->id,$this->ns,'$this->eti')"; - $res = wfQuery( $sql, DB_WRITE ); + if ($wgIsMySQL) { + $sql = "REPLACE INTO watchlist (wl_user, wl_namespace,wl_title) ". + "VALUES ($this->id,$this->ns,'$this->eti')"; + $res = wfQuery( $sql, DB_WRITE ); + } else { + $sql = "DELETE FROM watchlist WHERE wl_user=$this->id AND + wl_namespace=$this->ns AND wl_title='$this->eti'"; + wfQuery( $sql, DB_WRITE); + $sql = "INSERT INTO watchlist (wl_user, wl_namespace,wl_title) ". + "VALUES ($this->id,$this->ns,'$this->eti')"; + $res = wfQuery( $sql, DB_WRITE ); + } + if( $res === false ) return false; global $wgMemc; @@ -49,7 +61,7 @@ class WatchedItem { function removeWatch() { - $sql = "DELETE FROM watchlist WHERE wl_user=$this->id AND wl_namespace=$this->ns AND wl_title='$this->eti' LIMIT 1"; + $sql = "DELETE FROM watchlist WHERE wl_user=$this->id AND wl_namespace=$this->ns AND wl_title='$this->eti'"; $res = wfQuery( $sql, DB_WRITE ); if( $res === false ) return false; diff --git a/index.php b/index.php index 97a7f1237e28..3eb25720a69c 100644 --- a/index.php +++ b/index.php @@ -77,6 +77,9 @@ if ( $search = $wgRequest->getText( 'search' ) ) { /* redirect to canonical url, make it a 301 to allow caching */ $wgOut->redirect( $wgTitle->getFullURL(), '301'); } else if ( Namespace::getSpecial() == $wgTitle->getNamespace() ) { + # actions that need to be made when we have a special pages + require_once( 'includes/SpecialPage.php' ); + if ( !$wgAllowSysopQueries ) {SpecialPage::removePage( 'Asksql' ); } SpecialPage::executePath( $wgTitle ); } else { if ( Namespace::getMedia() == $wgTitle->getNamespace() ) { @@ -151,6 +154,7 @@ if ( $search = $wgRequest->getText( 'search' ) ) { case "purge": wfPurgeSquidServers(array($wgTitle->getInternalURL())); $wgOut->setSquidMaxage( $wgSquidMaxage ); + $wgTitle->invalidateCache(); $wgArticle->view(); break; default: diff --git a/languages/Language.php b/languages/Language.php index d6959d26dc3a..88975f1283da 100644 --- a/languages/Language.php +++ b/languages/Language.php @@ -21,51 +21,52 @@ # if($wgMetaNamespace === FALSE) - $wgMetaNamespace = str_replace( " ", "_", $wgSitename ); + $wgMetaNamespace = str_replace( ' ', '_', $wgSitename ); /* private */ $wgNamespaceNamesEn = array( - NS_MEDIA => "Media", - NS_SPECIAL => "Special", - NS_MAIN => "", - NS_TALK => "Talk", - NS_USER => "User", - NS_USER_TALK => "User_talk", + NS_MEDIA => 'Media', + NS_SPECIAL => 'Special', + NS_MAIN => '', + NS_TALK => 'Talk', + NS_USER => 'User', + NS_USER_TALK => 'User_talk', NS_WIKIPEDIA => $wgMetaNamespace, - NS_WIKIPEDIA_TALK => $wgMetaNamespace . "_talk", - NS_IMAGE => "Image", - NS_IMAGE_TALK => "Image_talk", - NS_MEDIAWIKI => "MediaWiki", - NS_MEDIAWIKI_TALK => "MediaWiki_talk", - NS_TEMPLATE => "Template", - NS_TEMPLATE_TALK => "Template_talk", - NS_HELP => "Help", - NS_HELP_TALK => "Help_talk", - NS_CATEGORY => "Category", - NS_CATEGORY_TALK => "Category_talk" + NS_WIKIPEDIA_TALK => $wgMetaNamespace . '_talk', + NS_IMAGE => 'Image', + NS_IMAGE_TALK => 'Image_talk', + NS_MEDIAWIKI => 'MediaWiki', + NS_MEDIAWIKI_TALK => 'MediaWiki_talk', + NS_TEMPLATE => 'Template', + NS_TEMPLATE_TALK => 'Template_talk', + NS_HELP => 'Help', + NS_HELP_TALK => 'Help_talk', + NS_CATEGORY => 'Category', + NS_CATEGORY_TALK => 'Category_talk' ); /* private */ $wgDefaultUserOptionsEn = array( - "quickbar" => 1, "underline" => 1, "hover" => 1, - "cols" => 80, "rows" => 25, "searchlimit" => 20, - "contextlines" => 5, "contextchars" => 50, - "skin" => $wgDefaultSkin, "math" => 1, "rcdays" => 7, "rclimit" => 50, - "highlightbroken" => 1, "stubthreshold" => 0, - "previewontop" => 1, "editsection"=>1,"editsectiononrightclick"=>0, "showtoc"=>1, - "showtoolbar" =>1, - "date" => 0 + 'quickbar' => 1, 'underline' => 1, 'hover' => 1, + 'cols' => 80, 'rows' => 25, 'searchlimit' => 20, + 'contextlines' => 5, 'contextchars' => 50, + 'skin' => $wgDefaultSkin, 'math' => 1, 'rcdays' => 7, 'rclimit' => 50, + 'highlightbroken' => 1, 'stubthreshold' => 0, + 'previewontop' => 1, 'editsection'=>1,'editsectiononrightclick'=>0, 'showtoc'=>1, + 'showtoolbar' =>1, + 'date' => 0 ); /* private */ $wgQuickbarSettingsEn = array( - "None", "Fixed left", "Fixed right", "Floating left" + 'None', 'Fixed left', 'Fixed right', 'Floating left' ); /* private */ $wgSkinNamesEn = array( - 'standard' => "Standard", - 'nostalgia' => "Nostalgia", - 'cologneblue' => "Cologne Blue", - 'davinci' => "DaVinci", - 'mono' => "Mono", - 'monobook' => "MonoBook" + 'standard' => 'Standard', + 'nostalgia' => 'Nostalgia', + 'cologneblue' => 'Cologne Blue', + 'davinci' => 'DaVinci', + 'mono' => 'Mono', + 'monobook' => 'MonoBook', + 'myskin' => 'MySkin' ); define( "MW_MATH_PNG", 0 ); @@ -76,42 +77,42 @@ define( "MW_MATH_MODERN", 4 ); define( "MW_MATH_MATHML", 5 ); /* private */ $wgMathNamesEn = array( - MW_MATH_PNG => "Always render PNG", - MW_MATH_SIMPLE => "HTML if very simple or else PNG", - MW_MATH_HTML => "HTML if possible or else PNG", - MW_MATH_SOURCE => "Leave it as TeX (for text browsers)", - MW_MATH_MODERN => "Recommended for modern browsers", - MW_MATH_MATHML => "MathML if possible (experimental)", + MW_MATH_PNG => 'Always render PNG', + MW_MATH_SIMPLE => 'HTML if very simple or else PNG', + MW_MATH_HTML => 'HTML if possible or else PNG', + MW_MATH_SOURCE => 'Leave it as TeX (for text browsers)', + MW_MATH_MODERN => 'Recommended for modern browsers', + MW_MATH_MATHML => 'MathML if possible (experimental)', ); /* private */ $wgDateFormatsEn = array( - "No preference", - "January 15, 2001", - "15 January 2001", - "2001 January 15", - "2001-01-15" + 'No preference', + 'January 15, 2001', + '15 January 2001', + '2001 January 15', + '2001-01-15' ); /* private */ $wgUserTogglesEn = array( - "hover" => "Show hoverbox over wiki links", - "underline" => "Underline links", - "highlightbroken" => "Format broken links like -this (alternative: like this?).", - "justify" => "Justify paragraphs", - "hideminor" => "Hide minor edits in recent changes", - "usenewrc" => "Enhanced recent changes (not for all browsers)", - "numberheadings" => "Auto-number headings", - "showtoolbar"=>"Show edit toolbar", - "editondblclick" => "Edit pages on double click (JavaScript)", - "editsection"=>"Enable section editing via [edit] links", - "editsectiononrightclick"=>"Enable section editing by right clicking
    on section titles (JavaScript)", - "showtoc"=>"Show table of contents
    (for pages with more than 3 headings)", - "rememberpassword" => "Remember password across sessions", - "editwidth" => "Edit box has full width", - "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" + 'hover' => 'Show hoverbox over wiki links', + 'underline' => 'Underline links', + 'highlightbroken' => 'Format broken links like +this (alternative: like this?).', + 'justify' => 'Justify paragraphs', + 'hideminor' => 'Hide minor edits in recent changes', + 'usenewrc' => 'Enhanced recent changes (not for all browsers)', + 'numberheadings' => 'Auto-number headings', + 'showtoolbar'=>'Show edit toolbar', + 'editondblclick' => 'Edit pages on double click (JavaScript)', + 'editsection'=>'Enable section editing via [edit] links', + 'editsectiononrightclick'=>'Enable section editing by right clicking
    on section titles (JavaScript)', + 'showtoc'=>'Show table of contents
    (for pages with more than 3 headings)', + 'rememberpassword' => 'Remember password across sessions', + 'editwidth' => 'Edit box has full width', + '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 */ $wgBookstoreListEn = array( @@ -121,228 +122,27 @@ this (alternative: like this?).", "Amazon.com" => "http://www.amazon.com/exec/obidos/ISBN=$1" ); -/* The following list is in native languages, not in English */ +# Read language names global $wgLanguageNames; -/* private */ $wgLanguageNames = array( - "aa" => "Afar", # Afar - "ab" => "Abkhazian", # Abkhazian - FIXME - "af" => "Afrikaans", # Afrikaans - "ak" => "Akana", # Akan - "an" => "Aragonés", # Aragonese - "als" => "Elsässisch", # Alsatian - "am" => "አማርኛ", # Amharic - "ar" => "العربية", # Arabic - "arc" => "ܕܥܒܪܸܝܛ", # Aramaic - "as" => "অসমীয়া", # Assamese - "ast" => "Asturleonés", # Asturian - "av" => "Авар", # Avar - "ay" => "Aymar", # Aymara - "az" => "Azərbaycan", # Azerbaijani - "ba" => "Башҡорт", # Bashkir - "be" => "Беларуская", # Belarusian ''or'' Byelarussian - "bg" => "Български", # Bulgarian - "bh" => "भोजपुरी", # Bihara - "bi" => "Bislama", # Bislama - "bn" => "বাংলা - (Bangla)", # Bengali - "bm" => "Bambara", - "bo" => "Bod skad", # Tibetan - "br" => "Brezhoneg", # Breton - "bs" => "Bosanski", # Bosnian - "ca" => "Català", # Catalan - "ce" => "Нохчийн", # Chechen - "ch" => "Chamoru", # Chamorro - "chr" => "ᏣᎳᎩ", # Cherokee - "chy" => "Tsetsêhestâhese", # Cheyenne - "co" => "Corsu", # Corsican - "cr" => "Nehiyaw", # Cree - "cs" => "Česky", # Czech - "csb" => "Kaszëbscziej", # Cassubian - FIXME - "cv" => "Чӑваш - (Ĉăvaŝ)", # Chuvash - "cy" => "Cymraeg", # Welsh - "da" => "Dansk", # Danish - "de" => "Deutsch", # German - "dk" => "Dansk", # 'da' is correct for the language. - "dv" => "Dhivehi", # Dhivehi - "dz" => "Dzongkha", # Bhutani - "ee" => "Eve", # Eve - "el" => "Ελληνικά", # Greek - "en" => "English", # English - "eo" => "Esperanto", # Esperanto - "es" => "Español", # Spanish - "et" => "Eesti", # Estonian - "eu" => "Euskara", # Basque - "fa" => "فارسی", # Persian - "ff" => "Fulfulde", # Fulfulde - "fi" => "Suomi", # Finnish - "fj" => "Na Vosa Vakaviti", # Fijian - "fo" => "Føroyskt", # Faroese - "fr" => "Français", # French - "fy" => "Frysk", # Frisian - "ga" => "Gaeilge", # Irish - "gd" => "Gàidhlig", # Scots Gaelic - "gl" => "Galego", # Gallegan - "gn" => "Avañe'ẽ", # Guarani - "gu" => "ગુજરાતી", # Gujarati - "gv" => "Gaelg", # Manx - "ha" => "هَوُسَ", # Hausa - "haw" => "Hawai`i", # Hawaiian - "he" => "עברית", # Hebrew - "hi" => "हिन्दी", # Hindi - "ho" => "Hiri Motu", - "hr" => "Hrvatski", # Croatian - "ht" => "Haitian", # Haitian (FIXME!) - "hu" => "Magyar", # Hungarian - "hy" => "Հայերեն", # Armenian - "hz" => "Otsiherero", # Herero - "ia" => "Interlingua", # Interlingua (IALA) - "id" => "Bahasa Indonesia", # Indonesian - "ie" => "Interlingue", # Interlingue (Occidental) - "ig" => "Igbo", # Igbo - "ii" => "Yi", # Sichuan Yi (FIXME!) - "ik" => "Iñupiak", # Inupiak - "io" => "Ido", # Ido - "is" => "Íslensk", # Icelandic - "it" => "Italiano", # Italian - "iu" => "ᐃᓄᒃᑎᑐᑦ", # Inuktitut - "ja" => "日本語", # Japanese - "jv" => "Bahasa Jawa", # Javanese - "ka" => "ქართული", # Georgian - "kg" => "Kongo", # Kongo (FIXME!) - "ki" => "Kikuyu", # Kikuyu (FIXME!) - "kj" => "Kuanyama", # Kuanyama (FIXME!) - "kk" => "қазақша", # Kazakh - "kl" => "Kalaallisut", # Greenlandic - "km" => "ភាសាខ្មែរ", # Cambodian - "kn" => "ಕನ್ನಡ", # Kannada - "ko" => "한국어", # Korean - "kr" => "Kanuri", - "ks" => "कश्मीरी - (كشميري)", # Kashmiri - "ku" => "Kurdî", # Kurdish - "kv" => "Komi", - "kw" => "Kernewek", # Cornish - "ky" => "Kırgızca", # Kirghiz - "la" => "Latina", # Latin - "lb" => "Lëtzebuergesch", # Luxemburguish - "lg" => "Luganda", # Ganda - "li" => "Limburgs", # Limburgian - "ln" => "Lingala", # Lingala - "lo" => "Pha xa lao", # Laotian - "lt" => "Lietuvių", # Lithuanian - "lv" => "Latviešu", # Latvian - "mg" => "Malagasy", # Malagasy - FIXME - "mh" => "Ebon", # Marshallese - "mi" => "Māori", # Maori - "mk" => "Македонски", # Macedonian - "ml" => "മലയാളം", # Malayalam - "mn" => "Монгол", # Mongoloian - "mo" => "Moldoveana", # Moldovan - "mr" => "मराठी", # Marathi - "ms" => "Bahasa Melayu", # Malay - "mt" => "bil-Malti", # Maltese - "my" => "Myanmasa", # Burmese - "na" => "Nauru", # Nauruan - "nb" => "Bokmål", # Norwegian (Bokmal) - "nah" => "Nahuatl", - "nds" => "Platdüütsch", # Low German ''or'' Low Saxon - "ne" => "नेपाली", # Nepali - "ng" => "Ndonga", - "nl" => "Nederlands", # Dutch - "nb" => "Norsk", # Norwegian [currently using old '''no''' code] - "ne" => "नेपाली", # Nepali - "nn" => "Nynorsk" , # (Norwegian) Nynorsk - "no" => "Norsk", # Norwegian - "nv" => "Diné bizaad", # Navajo - "ny" => "Chi-Chewa", # Chichewa - "oc" => "Occitan", # Occitan - "om" => "Oromoo", # Oromo - "or" => "Oriya", # Oriya - FIXME - "pa" => "पंजाबी / ਪਜਾਬੀ / پنجابي", # Punjabi - "pi" => "पािऴ", # Pali - "pl" => "Polski", # Polish - "ps" => "پښتو", # Pashto - "pt" => "Português", # Portuguese - "qu" => "Runa Simi", # Quechua - "rm" => "Rumantsch", # Raeto-Romance - "rn" => "Kirundi", # Kirundi - "ro" => "Română", # Romanian - "roa-rup" => "Armâneashti", # Aromanian - "ru" => "Русский", # Russian - "rw" => "Kinyarwanda", - "sa" => "संस्कृत", # Sanskrit - "sc" => "Sardu", # Sardinian - "sd" => "सिनधि", # Sindhi - "se" => "Sámegiella", # (Northern) Sami - "sg" => "Sangro", -# "sh" => "Српскохрватски (Srbskohrvatski)", ## Serbocroatian -- Obsolete - "si" => "Simhala", # Sinhalese - "simple" => "Simple English", - "sk" => "Slovenčina", # Slovak - "sl" => "Slovenščina", # Slovenian - "sm" => "Gagana Samoa", # Samoan - "sn" => "chiShona", # Shona - "so" => "Soomaaliga", # Somali - "sq" => "Shqip", # Albanian - "sr" => "Српски / Srpski", # Serbian - "ss" => "SiSwati", # Swati - "st" => "seSotho", # (Southern) Sotho - "su" => "Bahasa Sunda", # Sundanese - "sv" => "Svenska", # Swedish - "sw" => "Kiswahili", # Swahili - "ta" => "தமிழ்", # Tamil - "te" => "తెలుగు", # Telugu - "tg" => "Тоҷикӣ", # Tajik - "th" => "ไทย", # Thai - "ti" => "Tigrinya", # Tigrinya - FIXME - "tk" => "تركمن / Туркмен", # Turkmen - "tl" => "Tagalog", # Tagalog (Filipino) - #"tlh" => "tlhIngan-Hol", # Klingon - no interlanguage links allowed - "tn" => "Setswana", # Setswana - "to" => "Tonga", # Tonga - FIXME - "tokipona" => "Toki Pona", # Toki Pona - "tp" => "Toki Pona", # Toki Pona - non-standard language code - "tpi" => "Tok Pisin", # Tok Pisin - "tr" => "Türkçe", # Turkish - "ts" => "Xitsonga", # Tsonga - "tt" => "Tatar", # Tatar - "tw" => "Twi", # Twi -- FIXME - "ty" => "Reo Mā`ohi", # Tahitian - "ug" => "Oyghurque", # Uyghur - "uk" => "Українська", # Ukrainian - "ur" => "اردو", # Urdu - "uz" => "Ўзбек", # Uzbek - "ve" => "Venda", # Venda - "vi" => "Tiếng Việt", # Vietnamese - "vo" => "Volapük", # Volapük - "wa" => "Walon", # Walloon - "wo" => "Wollof", # Wolof - "xh" => "isiXhosa", # Xhosan - "yi" => "ייִדיש", # Yiddish - "yo" => "Yorùbá", # Yoruba - "za" => "(Cuengh)", # Zhuang - "zh" => "中文", # (Zhōng Wén) - Chinese - "zh-cfr" => "閩南語", # Min-nan - "zh-cn" => "中文(简体)", # Simplified - "zh-tw" => "中文(繁体)", # Traditional - "zu" => "isiZulu", # Zulu -); +require_once( "Names.php" ); $wgLanguageNamesEn =& $wgLanguageNames; /* private */ $wgWeekdayNamesEn = array( - "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", - "Friday", "Saturday" + 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', + 'Friday', 'Saturday' ); /* private */ $wgMonthNamesEn = array( - "January", "February", "March", "April", "May", "June", - "July", "August", "September", "October", "November", - "December" + 'January', 'February', 'March', 'April', 'May', 'June', + 'July', 'August', 'September', 'October', 'November', + 'December' ); /* private */ $wgMonthAbbreviationsEn = array( - "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", - "Sep", "Oct", "Nov", "Dec" + 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', + 'Sep', 'Oct', 'Nov', 'Dec' ); # Note to translators: @@ -351,38 +151,38 @@ $wgLanguageNamesEn =& $wgLanguageNames; # /* private */ $wgMagicWordsEn = array( # ID CASE SYNONYMS - MAG_REDIRECT => array( 0, "#redirect" ), - MAG_NOTOC => array( 0, "__NOTOC__" ), - MAG_FORCETOC => array( 0, "__FORCETOC__" ), - 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_PAGENAME => array( 1, "PAGENAME" ), - MAG_NAMESPACE => array( 1, "NAMESPACE" ), - MAG_MSG => array( 0, "MSG:" ), - MAG_SUBST => array( 0, "SUBST:" ), - MAG_MSGNW => array( 0, "MSGNW:" ), - MAG_END => array( 0, "__END__" ), - MAG_IMG_THUMBNAIL => array( 1, "thumbnail", "thumb" ), - MAG_IMG_RIGHT => array( 1, "right" ), - MAG_IMG_LEFT => array( 1, "left" ), - MAG_IMG_NONE => array( 1, "none" ), - MAG_IMG_WIDTH => array( 1, "$1px" ), - MAG_IMG_CENTER => array( 1, "center", "centre" ), - MAG_IMG_FRAMED => array( 1, "framed", "enframed", "frame" ), - MAG_INT => array( 0, "INT:" ), - MAG_SITENAME => array( 1, "SITENAME" ), - MAG_NS => array( 0, "NS:" ), - MAG_LOCALURL => array( 0, "LOCALURL:" ), - MAG_LOCALURLE => array( 0, "LOCALURLE:" ), - MAG_SERVER => array( 0, "SERVER" ) + MAG_REDIRECT => array( 0, '#redirect' ), + MAG_NOTOC => array( 0, '__NOTOC__' ), + MAG_FORCETOC => array( 0, '__FORCETOC__' ), + 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_PAGENAME => array( 1, 'PAGENAME' ), + MAG_NAMESPACE => array( 1, 'NAMESPACE' ), + MAG_MSG => array( 0, 'MSG:' ), + MAG_SUBST => array( 0, 'SUBST:' ), + MAG_MSGNW => array( 0, 'MSGNW:' ), + MAG_END => array( 0, '__END__' ), + MAG_IMG_THUMBNAIL => array( 1, 'thumbnail', 'thumb' ), + MAG_IMG_RIGHT => array( 1, 'right' ), + MAG_IMG_LEFT => array( 1, 'left' ), + MAG_IMG_NONE => array( 1, 'none' ), + MAG_IMG_WIDTH => array( 1, '$1px' ), + MAG_IMG_CENTER => array( 1, 'center', 'centre' ), + MAG_IMG_FRAMED => array( 1, 'framed', 'enframed', 'frame' ), + MAG_INT => array( 0, 'INT:' ), + MAG_SITENAME => array( 1, 'SITENAME' ), + MAG_NS => array( 0, 'NS:' ), + MAG_LOCALURL => array( 0, 'LOCALURL:' ), + MAG_LOCALURLE => array( 0, 'LOCALURLE:' ), + MAG_SERVER => array( 0, 'SERVER' ) ); #------------------------------------------------------------------- @@ -406,117 +206,118 @@ $wgLanguageNamesEn =& $wgLanguageNames; # Bits of text used by many pages: # -"categories" => "Categories", -"category" => "category", -"category_header" => "Articles in category \"$1\"", -"subcategories" => "Subcategories", +'categories' => 'Categories', +'category' => 'category', +'category_header' => 'Articles in category "$1"', +'subcategories' => 'Subcategories', -"linktrail" => "/^([a-z]+)(.*)\$/sD", -"mainpage" => "Main Page", -"mainpagetext" => "Wiki software successfully installed.", +'linktrail' => '/^([a-z]+)(.*)\$/sD', +'mainpage' => 'Main Page', +'mainpagetext' => 'Wiki software successfully installed.', "mainpagedocfooter" => "Please see [http://meta.wikipedia.org/wiki/MediaWiki_i18n documentation on customizing the interface] and the [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide User's Guide] for usage and configuration help.", 'portal' => 'Community portal', 'portal-url' => '{{ns:4}}:Community Portal', -"about" => "About", +'about' => 'About', "aboutwikipedia" => "About {{SITENAME}}", "aboutpage" => "{{ns:4}}:About", 'article' => 'Content page', -"help" => "Help", +'help' => 'Help', "helppage" => "{{ns:12}}:Contents", "wikititlesuffix" => "{{SITENAME}}", "bugreports" => "Bug reports", "bugreportspage" => "{{ns:4}}:Bug_reports", -"sitesupport" => "Donations", # Set a URL in $wgSiteSupportPage in LocalSettings.php -"faq" => "FAQ", +'sitesupport' => 'Donations', # Set a URL in $wgSiteSupportPage in LocalSettings.php +'faq' => 'FAQ', "faqpage" => "{{ns:4}}:FAQ", "edithelp" => "Editing help", +"newwindow" => "(opens in new window)", "edithelppage" => "{{ns:12}}:Editing", -"cancel" => "Cancel", -"qbfind" => "Find", -"qbbrowse" => "Browse", -"qbedit" => "Edit", -"qbpageoptions" => "This page", -"qbpageinfo" => "Context", -"qbmyoptions" => "My pages", -"qbspecialpages" => "Special pages", -"moredotdotdot" => "More...", -"mypage" => "My page", -"mytalk" => "My talk", -"anontalk" => "Talk for this IP", +'cancel' => 'Cancel', +'qbfind' => 'Find', +'qbbrowse' => 'Browse', +'qbedit' => 'Edit', +'qbpageoptions' => 'This page', +'qbpageinfo' => 'Context', +'qbmyoptions' => 'My pages', +'qbspecialpages' => 'Special pages', +'moredotdotdot' => 'More...', +'mypage' => 'My page', +'mytalk' => 'My talk', +'anontalk' => 'Talk for this IP', 'navigation' => 'Navigation', -"currentevents" => "Current events", -"disclaimers" => "Disclaimers", +'currentevents' => 'Current events', +'disclaimers' => 'Disclaimers', "disclaimerpage" => "{{ns:4}}:General_disclaimer", "errorpagetitle" => "Error", "returnto" => "Return to $1.", "fromwikipedia" => "From {{SITENAME}}", -"whatlinkshere" => "Pages that link here", -"help" => "Help", -"search" => "Search", -"go" => "Go", -"history" => "Page history", +'whatlinkshere' => 'Pages that link here', +'help' => 'Help', +'search' => 'Search', +'go' => 'Go', +"history" => 'Page history', 'history_short' => 'History', -"printableversion" => "Printable version", +'printableversion' => 'Printable version', 'edit' => 'Edit', -"editthispage" => "Edit this page", +'editthispage' => 'Edit this page', 'delete' => 'Delete', "deletethispage" => "Delete this page", "undelete_short" => "Undelete $1 edits", 'protect' => 'Protect', -"protectthispage" => "Protect this page", +'protectthispage' => 'Protect this page', 'unprotect' => 'Unprotect', -"unprotectthispage" => "Unprotect this page", -"newpage" => "New page", -"talkpage" => "Discuss this page", +'unprotectthispage' => 'Unprotect this page', +'newpage' => 'New page', +'talkpage' => 'Discuss this page', 'specialpage' => 'Special Page', 'personaltools' => 'Personal tools', -"postcomment" => "Post a comment", -"addsection" => "+", -"articlepage" => "View content page", -"subjectpage" => "View subject", # For compatibility +'postcomment' => 'Post a comment', +'addsection' => '+', +'articlepage' => 'View content page', +'subjectpage' => 'View subject', # For compatibility 'talk' => 'Discussion', 'toolbox' => 'Toolbox', -"userpage" => "View user page", -"wikipediapage" => "View project page", -"imagepage" => "View image page", -"viewtalkpage" => "View discussion", -"otherlanguages" => "Other languages", -"redirectedfrom" => "(Redirected from $1)", -"lastmodified" => "This page was last modified $1.", -"viewcount" => "This page has been accessed $1 times.", -"copyright" => "Content is available under $1.", -"poweredby" => "{{SITENAME}} is powered by [http://www.mediawiki.org/ MediaWiki], an open source wiki engine.", -"printsubtitle" => "(From {{SERVER}})", -"protectedpage" => "Protected page", -"administrators" => "{{ns:4}}:Administrators", -"sysoptitle" => "Sysop access required", -"sysoptext" => "The action you have requested can only be +'userpage' => 'View user page', +'wikipediapage' => 'View project page', +'imagepage' => 'View image page', +'viewtalkpage' => 'View discussion', +'otherlanguages' => 'Other languages', +'redirectedfrom' => "(Redirected from $1)", +'lastmodified' => "This page was last modified $1.", +'viewcount' => "This page has been accessed $1 times.", +'copyright' => "Content is available under $1.", +'poweredby' => "{{SITENAME}} is powered by [http://www.mediawiki.org/ MediaWiki], an open source wiki engine.", +'printsubtitle' => "(From {{SERVER}})", +'protectedpage' => 'Protected page', +'administrators' => "{{ns:4}}:Administrators", +'sysoptitle' => 'Sysop access required', +'sysoptext' => "The action you have requested can only be performed by users with \"sysop\" status. See $1.", -"developertitle" => "Developer access required", +'developertitle' => 'Developer access required', "developertext" => "The action you have requested can only be performed by users with \"developer\" status. See $1.", -"bureaucrattitle" => "Bureaucrat access required", +'bureaucrattitle' => 'Bureaucrat access required', "bureaucrattext" => "The action you have requested can only be performed by sysops with \"bureaucrat\" status.", -"nbytes" => "$1 bytes", -"go" => "Go", -"ok" => "OK", -"sitetitle" => "{{SITENAME}}", -"pagetitle" => "$1 - {{SITENAME}}", -"sitesubtitle" => "The Free Encyclopedia", # FIXME -"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", +'nbytes' => "$1 bytes", +'go' => 'Go', +'ok' => 'OK', +'sitetitle' => "{{SITENAME}}", +'pagetitle' => "$1 - {{SITENAME}}", +'sitesubtitle' => 'The Free Encyclopedia', # FIXME +'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", 'feedlinks' => 'Feed:', # Short words for each namespace, by default used in the 'article' tab in monobook @@ -533,41 +334,41 @@ performed by sysops with \"bureaucrat\" status.", # Main script and global functions # -"nosuchaction" => "No such action", -"nosuchactiontext" => "The action specified by the URL is not -recognized by the wiki", -"nosuchspecialpage" => "No such special page", -"nospecialpagetext" => "You have requested a special page that is not -recognized by the wiki.", +'nosuchaction' => 'No such action', +'nosuchactiontext' => 'The action specified by the URL is not +recognized by the wiki', +'nosuchspecialpage' => 'No such special page', +'nospecialpagetext' => 'You have requested a special page that is not +recognized by the wiki.', # General errors # -"error" => "Error", -"databaseerror" => "Database error", -"dberrortext" => "A database query syntax error has occurred. +'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:
    $1
    from within function \"$2\". MySQL returned error \"$3: $4\".", -"dberrortextcl" => "A database query syntax error has occurred. +'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" => "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", -"readonlytext" => "The database is currently locked to new +'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', +'readonlytext' => "The database is currently locked to new entries and other modifications, probably for routine database maintenance, after which it will be back to normal. The administrator who locked it offered this explanation:

    $1", -"missingarticle" => "The database did not find the text of a page +'missingarticle' => "The database did not find the text of a page that it should have found, named \"$1\".

    This is usually caused by following an outdated diff or history link to a @@ -575,29 +376,29 @@ page that has been deleted.

    If this is not the case, you may have found a bug in the software. Please report this to an administrator, making note of the URL.", -"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 +'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 +'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:", # obsolete? -"perfcached" => "The following data is cached and may not be completely up to date:", -"wrong_wfQuery_params" => "Incorrect parameters to wfQuery()
    +the wiki.', +'perfdisabledsub' => "Here's a saved copy from $1:", # obsolete? +'perfcached' => 'The following data is cached and may not be completely up to date:', +'wrong_wfQuery_params' => "Incorrect parameters to wfQuery()
    Function: $1
    Query: $2 ", -"viewsource" => "View source", -"protectedtext" => "This page has been locked to prevent editing; there are +'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 [[{{ns:4}}:Protected page]]. @@ -606,101 +407,101 @@ You can view and copy the source of this page:", # Login and logout pages # -"logouttitle" => "User logout", +"logouttitle" => 'User logout', "logouttext" => "You are now logged out. You can continue to use {{SITENAME}} anonymously, or you can log in again as the same or as a different user. Note that some pages may continue to be displayed as if you were still logged in, until you clear your browser cache\n", -"welcomecreation" => "

    Welcome, $1!

    Your account has been created. +'welcomecreation' => "

    Welcome, $1!

    Your account has been created. Don't forget to change your {{SITENAME}} 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" => "There has been a problem with your login.
    Try again!", -"alreadyloggedin" => "User $1, you are already logged in!
    \n", - -"login" => "Log in", -"loginprompt" => "You must have cookies enabled to log in to {{SITENAME}}.", -"userlogin" => "Log in", -"logout" => "Log out", -"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 email*", -"yourrealname" => "Your real name*", -"yournick" => "Your nickname (for signatures)", -"emailforlost" => "Fields marked with a star (*) are optional. Storing an email address enables people to contact you through the website without you having to reveal your +'loginpagetitle' => 'User login', +'yourname' => 'Your user name', +'yourpassword' => 'Your password', +'yourpasswordagain' => 'Retype password', +'newusersonly' => ' (new users only)', +'remembermypassword' => 'Remember my password across sessions.', +'loginproblem' => 'There has been a problem with your login.
    Try again!', +'alreadyloggedin' => "User $1, you are already logged in!
    \n", + +'login' => 'Log in', +'loginprompt' => "You must have cookies enabled to log in to {{SITENAME}}.", +'userlogin' => 'Log in', +'logout' => 'Log out', +'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 email*', +'yourrealname' => 'Your real name*', +'yournick' => 'Your nickname (for signatures)', +'emailforlost' => "Fields marked with a star (*) are optional. Storing an email address enables people to contact you through the website without you having to reveal your email address to them, and it can be used to send you a new password if you forget it.

    Your real name, if you choose to provide it, will be used for giving you attribution for your work.", 'prefs-help-userdata' => '* Real name (optional): if you choose to provide it this will be used for giving you attribution for your work.
    * Email (optional): Enables people to contact you through the website without you having to reveal your email address to them, and it can be used to send you a new password if you forget it.', -"loginerror" => "Login error", -"nocookiesnew" => "The user account was created, but you are not logged in. {{SITENAME}} uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.", +'loginerror' => 'Login error', +'nocookiesnew' => "The user account was created, but you are not logged in. {{SITENAME}} uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.", "nocookieslogin" => "{{SITENAME}} uses cookies to log in users. You have cookies disabled. Please enable them and try again.", -"noname" => "You have not specified a valid user name.", -"loginsuccesstitle" => "Login successful", -"loginsuccess" => "You are now logged in to {{SITENAME}} as \"$1\".", -"nosuchuser" => "There is no user by the name \"$1\". +'noname' => 'You have not specified a valid user name.', +'loginsuccesstitle' => 'Login successful', +'loginsuccess' => "You are now logged in to {{SITENAME}} 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 {{SITENAME}}", -"passwordremindertext" => "Someone (probably you, from IP address $1) +'wrongpassword' => 'The password you entered is incorrect. Please try again.', +'mailmypassword' => 'Mail me a new password', +'passwordremindertitle' => "Password reminder from {{SITENAME}}", +'passwordremindertext' => "Someone (probably you, from IP address $1) requested that we send you a new {{SITENAME}} 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 +'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.", -"loginend" => " ", -"mailerror" => "Error sending mail: $1", +'loginend' => ' ', +'mailerror' => "Error sending mail: $1", # Edit page toolbar -"bold_sample"=>"Bold text", -"bold_tip"=>"Bold text", -"italic_sample"=>"Italic text", -"italic_tip"=>"Italic text", -"link_sample"=>"Link title", -"link_tip"=>"Internal link", -"extlink_sample"=>"http://www.example.com link title", -"extlink_tip"=>"External link (remember http:// prefix)", -"headline_sample"=>"Headline text", -"headline_tip"=>"Level 2 headline", -"math_sample"=>"Insert formula here", -"math_tip"=>"Mathematical formula (LaTeX)", -"nowiki_sample"=>"Insert non-formatted text here", -"nowiki_tip"=>"Ignore wiki formatting", -"image_sample"=>"Example.jpg", -"image_tip"=>"Embedded image", -"media_sample"=>"Example.mp3", -"media_tip"=>"Media file link", -"sig_tip"=>"Your signature with timestamp", -"hr_tip"=>"Horizontal line (use sparingly)", -"infobox"=>"Click a button to get an example text", +'bold_sample'=>'Bold text', +'bold_tip'=>'Bold text', +'italic_sample'=>'Italic text', +'italic_tip'=>'Italic text', +'link_sample'=>'Link title', +'link_tip'=>'Internal link', +'extlink_sample'=>'http://www.example.com link title', +'extlink_tip'=>'External link (remember http:// prefix)', +'headline_sample'=>'Headline text', +'headline_tip'=>'Level 2 headline', +'math_sample'=>'Insert formula here', +'math_tip'=>'Mathematical formula (LaTeX)', +'nowiki_sample'=>'Insert non-formatted text here', +'nowiki_tip'=>'Ignore wiki formatting', +'image_sample'=>'Example.jpg', +'image_tip'=>'Embedded image', +'media_sample'=>'Example.mp3', +'media_tip'=>'Media file link', +'sig_tip'=>'Your signature with timestamp', +'hr_tip'=>'Horizontal line (use sparingly)', +'infobox'=>'Click a button to get an example text', # alert box shown in browsers where text selection does not work, test e.g. with mozilla or konqueror -"infobox_alert"=>"Please enter the text you want to be formatted.\\n It will be shown in the infobox for copy and pasting.\\nExample:\\n$1\\nwill become:\\n$2", +'infobox_alert'=>"Please enter the text you want to be formatted.\\n It will be shown in the infobox for copy and pasting.\\nExample:\\n$1\\nwill become:\\n$2", # Edit pages # -"summary" => "Summary", -"subject" => "Subject/headline", -"minoredit" => "This is a minor edit", -"watchthis" => "Watch this page", -"savearticle" => "Save page", -"preview" => "Preview", -"showpreview" => "Show preview", -"blockedtitle" => "User is blocked", -"blockedtext" => "Your user name or IP address has been blocked by $1. +'summary' => 'Summary', +'subject' => 'Subject/headline', +'minoredit' => 'This is a minor edit', +'watchthis' => 'Watch this page', +'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:
    ''$2''

    You may contact $1 or one of the other [[{{ns:4}}:Administrators|administrators]] to discuss the block. @@ -708,53 +509,53 @@ Note that you may not use the \"email this user\" feature unless you have a vali Your IP address is $3. Please include this address in any queries you make. ", -"whitelistedittitle" => "Login required to edit", -"whitelistedittext" => "You have to [[Special:Userlogin|login]] to edit pages.", -"whitelistreadtitle" => "Login required to read", -"whitelistreadtext" => "You have to [[Special:Userlogin|login]] to read pages.", -"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.", -"loginreqtitle" => "Login Required", -"loginreqtext" => "You must [[special:Userlogin|login]] to view other pages.", -"accmailtitle" => "Password sent.", -"accmailtext" => "The Password for '$1' has been sent to $2.", -"newarticle" => "(New)", -"newarticletext" => +'whitelistedittitle' => 'Login required to edit', +'whitelistedittext' => 'You have to [[Special:Userlogin|login]] to edit pages.', +'whitelistreadtitle' => 'Login required to read', +'whitelistreadtext' => 'You have to [[Special:Userlogin|login]] to read pages.', +'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.', +'loginreqtitle' => 'Login Required', +'loginreqtext' => 'You must [[special:Userlogin|login]] to view other pages.', +'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. To create the page, start typing in the box below (see the [[{{ns:4}}:Help|help page]] for more info). If you are here by mistake, just click your browser's '''back''' button.", -"talkpagetext" => "", -"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)", -'usercssjs' => "'''Note:''' After saving, you have to tell your bowser to get the new version: '''Mozilla:''' click ''reload''(or ''ctrl-r''), '''IE / Opera:''' ''ctrl-f5'', '''Safari:''' ''cmd-r'', '''Konqueror''' ''ctrl-r''.", +'talkpagetext' => '', +'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)', +'clearyourcache' => "'''Note:''' After saving, you have to clear your browser cache to see the changes: '''Mozilla:''' click ''reload''(or ''ctrl-r''), '''IE / Opera:''' ''ctrl-f5'', '''Safari:''' ''cmd-r'', '''Konqueror''' ''ctrl-r''.", 'usercssjsyoucanpreview' => "Tip: Use the 'Show preview' button to test your new css/js before saving.", 'usercsspreview' => "'''Remember that you are only previewing your user css, it has not yet been saved!'''", 'userjspreview' => "'''Remember that you are only testing/previewing your user javascript, it has not yet been saved!'''", -"updated" => "(Updated)", -"note" => "Note: ", -"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", +'updated' => '(Updated)', +'note' => 'Note: ', +'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)", -"commentedit" => " (comment)", -"editconflict" => "Edit conflict: $1", -"explainconflict" => "Someone else has changed this page since you +'commentedit' => ' (comment)', +'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. Only the text in the upper text area will be saved when you press \"Save page\".\n

    ", -"yourtext" => "Your text", -"storedversion" => "Stored version", -"editingold" => "WARNING: You are editing an out-of-date +'yourtext' => 'Your text', +'storedversion' => 'Stored version', +'editingold' => '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.\n", -"yourdiff" => "Differences", +If you save it, any changes made since this revision will be lost.\n', +'yourdiff' => 'Differences', # FIXME: This is inappropriate for third-party use! -"copyrightwarning" => "Please note that all contributions to {{SITENAME}} are +'copyrightwarning' => "Please note that all contributions to {{SITENAME}} 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 @@ -762,82 +563,82 @@ at will, then don't submit it here.
    You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!", -"longpagewarning" => "WARNING: This page is $1 kilobytes long; some +'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, +'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 +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 protected page guidelines.", # 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. +'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" => "Diff selection: mark the radio boxes of the versions to compare and hit enter or the button at the bottom.
    +'loadhist' => 'Loading page history', +'currentrev' => 'Current revision', +'revisionasof' => "Revision as of $1", +'cur' => 'cur', +'next' => 'next', +'last' => 'last', +'orig' => 'orig', +'histlegend' => 'Diff selection: mark the radio boxes of the versions to compare and hit enter or the button at the bottom.
    Legend: (cur) = difference with current version, -(last) = difference with preceding version, M = minor edit.", +(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", +'difference' => '(Difference between revisions)', +'loadingrev' => 'loading revision for diff', +'lineno' => "Line $1:", +'editcurrent' => 'Edit the current version of this page', 'selectnewerversionfordiff' => 'Select a newer version for comparison', 'selectolderversionfordiff' => 'Select an older version for comparison', 'compareselectedversions' => 'Compare selected versions', # Search results # -"searchresults" => "Search results", -"searchhelppage" => "{{ns:4}}:Searching", -"searchingwikipedia" => "Searching {{SITENAME}}", -"searchresulttext" => "For more information about searching {{SITENAME}}, see $1.", -"searchquery" => "For query \"$1\"", -"badquery" => "Badly formed search query", -"badquerytext" => "We could not process your query. +'searchresults' => 'Search results', +'searchhelppage' => "{{ns:4}}:Searching", +'searchingwikipedia' => "Searching {{SITENAME}}", +'searchresulttext' => "For more information about searching {{SITENAME}}, 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 page titles +example "fish and and scales". +Please try another query.', +'matchtotals' => "The query \"$1\" matched $2 page titles and the text of $3 pages.", -"nogomatch" => "No page with this exact title exists, trying full text search.", -"titlematches" => "Article title matches", -"notitlematches" => "No page title matches", -"textmatches" => "Page text matches", -"notextmatches" => "No page text matches", -"prevn" => "previous $1", -"nextn" => "next $1", -"viewprevnext" => "View ($1) ($2) ($3).", -"showingresults" => "Showing below $1 results starting with #$2.", -"showingresultsnum" => "Showing below $3 results starting with #$2.", -"nonefound" => "Note: unsuccessful searches are +'nogomatch' => 'No page with this exact title exists, trying full text search.', +'titlematches' => 'Article title matches', +'notitlematches' => 'No page title matches', +'textmatches' => 'Page text matches', +'notextmatches' => 'No page text matches', +'prevn' => "previous $1", +'nextn' => "next $1", +'viewprevnext' => "View ($1) ($2) ($3).", +'showingresults' => "Showing below $1 results starting with #$2.", +'showingresultsnum' => "Showing below $3 results starting with #$2.", +'nonefound' => "Note: 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" => " +'powersearch' => 'Search', +'powersearchtext' => " Search in namespaces :
    $1
    $2 List redirects   Search for $3 $9", "searchdisabled" => "

    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.

    ", -"googlesearch" => " +'googlesearch' => "
    @@ -856,99 +657,100 @@ border=\"0\" ALT=\"Google\">
    ", -"blanknamespace" => "(Main)", +'blanknamespace' => '(Main)', # Preferences page # -"preferences" => "Preferences", -"prefsnologin" => "Not logged in", -"prefsnologintext" => "You must be logged in +'preferences' => 'Preferences', +'prefsnologin' => 'Not logged in', +'prefsnologintext' => "You must be logged in to set user preferences.", -"prefslogintext" => "You are logged in as \"$1\". +'prefslogintext' => "You are logged in as \"$1\". Your internal ID number is $2. See [[{{ns:4}}: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", -"math_image_error" => "PNG conversion failed; check for correct installation of latex, dvips, gs, and convert", -"math_bad_tmpdir" => "Can't write to or create math temp directory", -"math_bad_output" => "Can't write to or create math output directory", -"math_notexvc" => "Missing texvc executable; please see math/README to configure.", +'prefsreset' => 'Preferences have been reset from storage.', +'qbsettings' => 'Quickbar settings', +'qbsettingsnote' => 'This preference only works in the \'Standard\' and the \'CologneBlue\' skin.', +'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', +'math_image_error' => 'PNG conversion failed; check for correct installation of latex, dvips, gs, and convert', +'math_bad_tmpdir' => 'Can\'t write to or create math temp directory', +'math_bad_output' => 'Can\'t write to or create math output directory', +'math_notexvc' => 'Missing texvc executable; please see math/README to configure.', 'prefs-personal' => 'User data', 'prefs-rc' => 'Recent changes and stub display', 'prefs-misc' => 'Misc settings', -"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.", -"timezonelegend" => "Time zone", -"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:", +'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.', +'timezonelegend' => 'Time zone', +'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 the wiki on this page.", -"rcloaderr" => "Loading recent changes", -"rcnote" => "Below are the last $1 changes in last $2 days.", -"rcnotefrom" => "Below are the changes since $2 (up to $1 shown).", -"rclistfrom" => "Show new changes starting from $1", +'changes' => 'changes', +'recentchanges' => 'Recent changes', +'recentchangestext' => 'Track the most recent changes to the wiki on this page.', +'rcloaderr' => 'Loading recent changes', +'rcnote' => "Below are the last $1 changes in last $2 days.", +'rcnotefrom' => "Below are the changes since $2 (up to $1 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.", -"showhideminor" => "$1 minor edits | $2 bots | $3 logged in users ", -"rclinks" => "Show last $1 changes in last $2 days
    $3", -"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", +'showhideminor' => "$1 minor edits | $2 bots | $3 logged in users ", +'rclinks' => "Show last $1 changes in last $2 days
    $3", +'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 logged in +'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 logged in to upload files.", -"uploadfile" => "Upload images, sounds, documents etc.", -"uploaderror" => "Upload error", -"uploadtext" => "STOP! Before you upload here, +'uploadfile' => 'Upload images, sounds, documents etc.', +'uploaderror' => 'Upload error', +'uploadtext' => "STOP! Before you upload here, make sure to read and follow the image use policy.

    If a file with the name you are specifying already exists on the wiki, it'll be replaced without warning. @@ -978,70 +780,69 @@ or [[{{ns:-2}}:file.ogg]] for sounds. delete your uploads if they think it serves the project, 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. +'uploadlog' => 'upload log', +'uploadlogpage' => 'Upload_log', +'uploadlogpagetext' => 'Below is a list of the most recent file uploads. 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 +', +'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" => "{{ns:4}}:Copyrights", -"copyrightpagename" => "{{SITENAME}} 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. +'copyrightpage' => "{{ns:4}}:Copyrights", +'copyrightpagename' => "{{SITENAME}} 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\"", -"uploaddisabled" => "Sorry, uploading is disabled.", +'uploadwarning' => 'Upload warning', +'savefile' => 'Save file', +'uploadedimage' => "uploaded \"$1\"", +'uploaddisabled' => 'Sorry, uploading is disabled.', # 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 +'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. -
    Click on date to see image uploaded on that date.", -"imagelinks" => "Image links", -"linkstoimage" => "The following pages link to this image:", -"nolinkstoimage" => "There are no pages that link to this image.", +
    Click on date to see image uploaded on that date.', +'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 '''$1''' total pages in the database. +'statistics' => 'Statistics', +'sitestats' => 'Site statistics', +'userstats' => 'User statistics', +'sitestatstext' => "There are '''$1''' total pages in the database. This includes \"talk\" pages, pages about {{SITENAME}}, minimal \"stub\" pages, redirects, and others that probably don't qualify as content pages. Excluding those, there are '''$2''' pages that are probably legitimate @@ -1050,339 +851,340 @@ content pages. There have been a total of '''$3''' page views, and '''$4''' page edits since the wiki was setup. That comes to '''$5''' average edits per page, and '''$6''' views per edit.", -"userstatstext" => "There are '''$1''' registered users. +'userstatstext' => "There are '''$1''' registered users. '''$2''' 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" => "{{ns:4}}:Links_to_disambiguating_pages", -"disambiguationstext" => "The following pages link to a disambiguation page. They should link to the appropriate topic instead.
    A page is treated as dismbiguation if it is linked from $1.
    Links from other namespaces are not listed here.", -"doubleredirects" => "Double Redirects", -"doubleredirectstext" => "Attention: This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.
    \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\" target page, which the first redirect should point to.", -"brokenredirects" => "Broken Redirects", -"brokenredirectstext" => "The following redirects link to a non-existing pages.", -"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 pages do not link to their counterpart in $1. Redirects and subpages are not shown.", +'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' => "{{ns:4}}:Links_to_disambiguating_pages", +'disambiguationstext' => "The following pages link to a disambiguation page. They should link to the appropriate topic instead.
    A page is treated as dismbiguation if it is linked from $1.
    Links from other namespaces are not listed here.", +'doubleredirects' => 'Double Redirects', +'doubleredirectstext' => "Attention: This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.
    \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\" target page, which the first redirect should point to.", +'brokenredirects' => 'Broken Redirects', +'brokenredirectstext' => 'The following redirects link to a non-existing pages.', +'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 pages do not link to their counterpart in $1. Redirects and subpages are not 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", -"deadendpages" => "Dead-end pages", -"listusers" => "User list", -"specialpages" => "Special pages", -"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\")", -"debug" => "Debug", -"newpages" => "New pages", -"ancientpages" => "Oldest pages", -"intl" => "Interlanguage links", +'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', +'deadendpages' => 'Dead-end pages', +'listusers' => 'User list', +'listadmins' => 'Admins list', +'specialpages' => 'Special pages', +'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\")", +'debug' => 'Debug', +'newpages' => 'New pages', +'ancientpages' => 'Oldest pages', +'intl' => 'Interlanguage links', 'move' => 'Move', -"movethispage" => "Move this page", -"unusedimagestext" => "

    Please note that other web sites may link to an image with +'movethispage' => 'Move this page', +'unusedimagestext' => '

    Please note that other web sites may link to an image with a direct URL, and so may still be listed here despite being -in active use.", -"booksources" => "Book sources", +in active use.', +'booksources' => 'Book sources', # FIXME: Other sites, of course, may have affiliate relations with the booksellers list -"booksourcetext" => "Below is a list of links to other sites that +'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. {{SITENAME}} is not affiliated with any of these businesses, and this list should not be construed as an endorsement.", -"isbn" => "ISBN", -"rfcurl" => "http://www.faqs.org/rfcs/rfc$1.html", -"alphaindexline" => "$1 to $2", -"version" => "Version", +'isbn' => 'ISBN', +'rfcurl' => "http://www.faqs.org/rfcs/rfc$1.html", +'alphaindexline' => "$1 to $2", +'version' => 'Version', # Email this user # -"mailnologin" => "No send address", -"mailnologintext" => "You must be logged in +'mailnologin' => 'No send address', +'mailnologintext' => "You must be logged in and have a valid e-mail address in your preferences 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 +'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.", -"usermailererror" => "Mail object returned error: ", -"defemailsubject" => "{{SITENAME}} e-mail", -"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.", +as the "From" address of the mail, so the recipient will be able +to reply.', +'usermailererror' => 'Mail object returned error: ', +'defemailsubject' => "{{SITENAME}} e-mail", +'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 logged in +'watchlist' => 'My watchlist', +'watchlistsub' => "(for user \"$1\")", +'nowatchlist' => 'You have no items on your watchlist.', +'watchnologin' => 'Not logged in', +'watchnologintext' => "You must be logged in to modify your watchlist.", -"addedwatch" => "Added to watchlist", -"addedwatchtext" => "The page \"$1\" has been added to your [[{{ns:-1}}:Watchlist|watchlist]]. +'addedwatch' => 'Added to watchlist', +'addedwatchtext' => "The page \"$1\" has been added to your [[{{ns:-1}}:Watchlist|watchlist]]. Future changes to this page and its associated Talk page will be listed there, and the page will appear '''bolded''' in the [[Special:Recentchanges|list of recent changes]] to make it easier to pick out.

    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.", +'removedwatch' => 'Removed from watchlist', +'removedwatchtext' => "The page \"$1\" has been removed from your watchlist.", 'watch' => 'Watch', -"watchthispage" => "Watch this page", +'watchthispage' => 'Watch this page', 'unwatch' => 'Unwatch', -"unwatchthispage" => "Stop watching", -"notanarticle" => "Not a content page", -"watchnochange" => "None of your watched items were edited in the time period displayed.", -"watchdetails" => "($1 pages watched not counting talk pages; +'unwatchthispage' => 'Stop watching', +'notanarticle' => 'Not a content page', +'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... show and edit complete list.)", -"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 +'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 $2 hours.", -"wlshowlast" => "Show last $1 hours $2 days $3", -"wlsaved" => "This is a saved version of your watchlist.", +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 $2 hours.", +'wlshowlast' => "Show last $1 hours $2 days $3", +'wlsaved' => 'This is a saved version of your watchlist.', # 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 +'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 [[{{ns:4}}:Policy]].", -"confirmcheck" => "Yes, I really want to delete this.", -"actioncomplete" => "Action complete", -"deletedtext" => "\"$1\" has been deleted. +'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. +'deletedarticle' => "deleted \"$1\"", +'dellogpage' => 'Deletion_log', +'dellogpagetext' => 'Below is a list of the most recent deletions. All times shown are server time (UTC).

    -", -"deletionlog" => "deletion log", -"reverted" => "Reverted to earlier revision", -"deletecomment" => "Reason for deletion", -"imagereverted" => "Revert to earlier version was successful.", -"rollback" => "Roll back edits", +', +'deletionlog' => 'deletion log', +'reverted' => 'Reverted to earlier revision', +'deletecomment' => 'Reason for deletion', +'imagereverted' => 'Revert to earlier version was successful.', +'rollback' => 'Roll back edits', 'rollback_short' => 'Rollback', -"rollbacklink" => "rollback", -"rollbackfailed" => "Rollback failed", -"cantrollback" => "Cannot revert edit; last contributor is only author of this page.", -"alreadyrolled" => "Cannot rollback last edit of [[$1]] +'rollbacklink' => 'rollback', +'rollbackfailed' => 'Rollback failed', +'cantrollback' => 'Cannot revert edit; last contributor is only author of this page.', +'alreadyrolled' => "Cannot rollback last edit of [[$1]] by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the page 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: \"$1\".", -"revertpage" => "Reverted edit of $2, changed back to last version by $1", -"protectlogpage" => "Protection_log", -"protectlogtext" => "Below is a list of page locks/unlocks. +'editcomment' => "The edit comment was: \"$1\".", +'revertpage' => "Reverted edit of $2, changed back to last version by $1", +'protectlogpage' => 'Protection_log', +'protectlogtext' => "Below is a list of page locks/unlocks. See [[{{ns:4}}:Protected page]] for more information.", -"protectedarticle" => "protected [[$1]]", -"unprotectedarticle" => "unprotected [[$1]]", -"protectsub" =>"(Protecting \"$1\")", -"confirmprotecttext" => "Do you really want to protect this page?", -"confirmprotect" => "Confirm protection", -"protectcomment" => "Reason for protecting", -"unprotectsub" =>"(Unprotecting \"$1\")", -"confirmunprotecttext" => "Do you really want to unprotect this page?", -"confirmunprotect" => "Confirm unprotection", -"unprotectcomment" => "Reason for unprotecting", -"protectreason" => "(give a reason)", +'protectedarticle' => "protected [[$1]]", +'unprotectedarticle' => "unprotected [[$1]]", +'protectsub' =>"(Protecting \"$1\")", +'confirmprotecttext' => 'Do you really want to protect this page?', +'confirmprotect' => 'Confirm protection', +'protectcomment' => 'Reason for protecting', +'unprotectsub' =>"(Unprotecting \"$1\")", +'confirmunprotecttext' => 'Do you really want to unprotect this page?', +'confirmunprotect' => 'Confirm unprotection', +'unprotectcomment' => 'Reason for unprotecting', +'protectreason' => '(give a reason)', # 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 page", -"undeleterevisions" => "$1 revisions archived", -"undeletehistory" => "If you restore the page, all revisions will be restored to the history. +'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 page', +'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" => "[[$1]] has been successfully restored. +will not be automatically replaced.', +'undeleterevision' => "Deleted revision as of $1", +'undeletebtn' => 'Restore!', +'undeletedarticle' => "restored \"$1\"", +'undeletedtext' => "[[$1]] has been successfully restored. See [[{{ns:4}}: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 $1 changes in the last $2 days.", -"uclinks" => "View the last $1 changes; view the last $2 days.", -"uctop" => " (top)" , +'contributions' => 'User contributions', +'mycontris' => 'My contributions', +'contribsub' => "For $1", +'nocontribs' => 'No changes were found matching these criteria.', +'ucnote' => "Below are this user's last $1 changes in the last $2 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", +'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 user", -"blockiptext" => "Use the form below to block write access +'blockip' => 'Block user', +'blockiptext' => "Use the form below to block write access from a specific IP address or username. This should be done only only to prevent vandalism, and in accordance with [[{{ns:4}}:Policy|policy]]. Fill in a specific reason below (for example, citing particular pages that were vandalized).", -"ipaddress" => "IP Address/username", -"ipbexpiry" => "Expiry", -"ipbreason" => "Reason", -"ipbsubmit" => "Block this user", -"badipaddress" => "Invalid IP address", -"noblockreason" => "You must supply a reason for the block.", -"blockipsuccesssub" => "Block succeeded", -"blockipsuccesstext" => "\"$1\" has been blocked. +'ipaddress' => 'IP Address/username', +'ipbexpiry' => 'Expiry', +'ipbreason' => 'Reason', +'ipbsubmit' => 'Block this user', +'badipaddress' => 'Invalid IP address', +'noblockreason' => 'You must supply a reason for the block.', +'blockipsuccesssub' => 'Block succeeded', +'blockipsuccesstext' => "\"$1\" has been blocked.
    See [[Special:Ipblocklist|IP block list]] to review blocks.", -"unblockip" => "Unblock user", -"unblockiptext" => "Use the form below to restore write access -to a previously blocked IP address or username.", -"ipusubmit" => "Unblock this address", -"ipusuccess" => "\"$1\" unblocked", -"ipblocklist" => "List of blocked IP addresses and usernames", -"blocklistline" => "$1, $2 blocked $3 (expires $4)", -"blocklink" => "block", -"unblocklink" => "unblock", -"contribslink" => "contribs", -"autoblocker" => "Autoblocked because you share an IP address with \"$1\". Reason \"$2\".", -"blocklogpage" => "Block_log", -"blocklogentry" => 'blocked "$1" with an expiry time of $2', -"blocklogtext" => "This is a log of user blocking and unblocking actions. Automatically +'unblockip' => 'Unblock user', +'unblockiptext' => 'Use the form below to restore write access +to a previously blocked IP address or username.', +'ipusubmit' => 'Unblock this address', +'ipusuccess' => "\"$1\" unblocked", +'ipblocklist' => 'List of blocked IP addresses and usernames', +'blocklistline' => "$1, $2 blocked $3 (expires $4)", +'blocklink' => 'block', +'unblocklink' => 'unblock', +'contribslink' => 'contribs', +'autoblocker' => "Autoblocked because you share an IP address with \"$1\". Reason \"$2\".", +'blocklogpage' => 'Block_log', +'blocklogentry' => 'blocked "$1" with an expiry time of $2', +'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"', -"range_block_disabled" => "The sysop ability to create range blocks is disabled.", -"ipb_expiry_invalid" => "Expiry time invalid.", -"ip_range_invalid" => "Invalid IP range.\n", -"proxyblocker" => "Proxy blocker", -"proxyblockreason" => "Your IP address has been blocked because it is an open proxy. Please contact your Internet service provider or tech support and inform them of this serious security problem.", -"proxyblocksuccess" => "Done.\n", +the list of currently operational bans and blocks.', +'unblocklogentry' => 'unblocked "$1"', +'range_block_disabled' => 'The sysop ability to create range blocks is disabled.', +'ipb_expiry_invalid' => 'Expiry time invalid.', +'ip_range_invalid' => "Invalid IP range.\n", +'proxyblocker' => 'Proxy blocker', +'proxyblockreason' => 'Your IP address has been blocked because it is an open proxy. Please contact your Internet service provider or tech support and inform them of this serious security problem.', +'proxyblocksuccess' => "Done.\n", # Developer tools # -"lockdb" => "Lock database", -"unlockdb" => "Unlock database", -"lockdbtext" => "Locking the database will suspend the ability of all +'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 +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. -
    Remember to remove the lock after your maintenance is complete.", -"unlockdbsuccesstext" => "The database has been unlocked.", +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. +
    Remember to remove the lock after your maintenance is complete.', +'unlockdbsuccesstext' => 'The database has been unlocked.', # SQL query # -"asksql" => "SQL query", -"asksqltext" => "Use the form below to make a direct query of the +'asksql' => 'SQL query', +'asksqltext' => "Use the form below to make a direct query of the 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" => "Only read-only queries are allowed.", -"querysuccessful" => "Query successful", +'sqlislogged' => 'Please note that all queries are logged.', +'sqlquery' => 'Enter query', +'querybtn' => 'Submit query', +'selectonly' => 'Only read-only queries are allowed.', +'querysuccessful' => 'Query successful', # Make sysop -"makesysoptitle" => "Make a user into a sysop", -"makesysoptext" => "This form is used by bureaucrats to turn ordinary users into administrators. -Type the name of the user in the box and press the button to make the user an administrator", -"makesysopname" => "Name of the user:", -"makesysopsubmit" => "Make this user into a sysop", -"makesysopok" => "User \"$1\" is now a sysop", -"makesysopfail" => "User \"$1\" could not be made into a sysop. (Did you enter the name correctly?)", -"setbureaucratflag" => "Set bureaucrat flag", -"bureaucratlog" => "Bureaucrat_log", -"bureaucratlogentry" => "Rights for user \"$1\" set \"$2\"", -"rights" => "Rights:", -"set_user_rights" => "Set user rights", -"user_rights_set" => "User rights for \"$1\" updated", -"set_rights_fail" => "User rights for \"$1\" could not be set. (Did you enter the name correctly?)", -"makesysop" => "Make a user into a sysop", +'makesysoptitle' => 'Make a user into a sysop', +'makesysoptext' => 'This form is used by bureaucrats to turn ordinary users into administrators. +Type the name of the user in the box and press the button to make the user an administrator', +'makesysopname' => 'Name of the user:', +'makesysopsubmit' => 'Make this user into a sysop', +'makesysopok' => "User \"$1\" is now a sysop", +'makesysopfail' => "User \"$1\" could not be made into a sysop. (Did you enter the name correctly?)", +'setbureaucratflag' => 'Set bureaucrat flag', +'bureaucratlog' => 'Bureaucrat_log', +'bureaucratlogentry' => "Rights for user \"$1\" set \"$2\"", +'rights' => 'Rights:', +'set_user_rights' => 'Set user rights', +'user_rights_set' => "User rights for \"$1\" updated", +'set_rights_fail' => "User rights for \"$1\" could not be set. (Did you enter the name correctly?)", +'makesysop' => 'Make a user into a sysop', # Move page # -"movepage" => "Move page", -"movepagetext" => "Using the form below will rename a page, moving all +'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 @@ -1390,7 +1192,7 @@ Links to the old page title will not be changed; be sure to 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 +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 @@ -1399,145 +1201,72 @@ an existing page. WARNING! 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:''' +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 logged in +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 logged in 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 +'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 +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 not moved.", -"1movedto2" => "$1 moved to $2", +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 not moved.', +'1movedto2' => "$1 moved to $2", # Export -"export" => "Export pages", -"exporttext" => "You can export the text and editing history of a particular +'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", +amusement.', +'exportcuronly' => 'Include only the current revision, not the full history', # Namespace 8 related -"allmessages" => "All system messages", -"allmessagestext" => "This is a list of all system messages available in the MediaWiki: namespace.", +'allmessages' => 'All system messages', +'allmessagestext' => 'This is a list of all system messages available in the MediaWiki: namespace.', # Thumbnails -"thumbnail-more" => "Enlarge", -"missingimage" => "Missing image
    $1\n", +'thumbnail-more' => 'Enlarge', +'missingimage' => "Missing image
    $1\n", # Special:Import -"import" => "Import pages", -"importtext" => "Please export the file from the source wiki using the Special:Export utility, save it to your disk and upload it here.", -"importfailed" => "Import failed: $1", -"importnotext" => "Empty or no text", -"importsuccess" => "Import succeeded!", -"importhistoryconflict" => "Conflicting history revision exists (may have imported this page before)", +'import' => 'Import pages', +'importtext' => 'Please export the file from the source wiki using the Special:Export utility, save it to your disk and upload it here.', +'importfailed' => "Import failed: $1", +'importnotext' => 'Empty or no text', +'importsuccess' => 'Import succeeded!', +'importhistoryconflict' => 'Conflicting history revision exists (may have imported this page before)', # Keyboard access keys for power users -'accesskey-article' => 'a', -'accesskey-talk' => 't', -'accesskey-edit' => 'e', -'accesskey-addsection' => '+', -'accesskey-viewsource' => 'e', -'accesskey-history' => 'h', -'accesskey-protect' => '=', -'accesskey-delete' => 'd', -'accesskey-undelete' => 'd', -'accesskey-move' => 'm', -'accesskey-watch' => 'w', -'accesskey-unwatch' => 'w', -'accesskey-watchlist' => 'l', -'accesskey-userpage' => '.', -'accesskey-anonuserpage' => '.', -'accesskey-mytalk' => 'n', -'accesskey-anontalk' => 'n', -'accesskey-preferences' => '', -'accesskey-mycontris' => 'y', -'accesskey-login' => 'o', -'accesskey-logout' => 'o', 'accesskey-search' => 'f', -'accesskey-mainpage' => 'z', -'accesskey-portal' => '', -'accesskey-randompage' => 'x', -'accesskey-currentevents' => '', -'accesskey-sitesupport' => '', -'accesskey-help' => '', -'accesskey-recentchanges' => 'r', -'accesskey-recentchangeslinked' => 'c', -'accesskey-whatlinkshere' => 'b', -'accesskey-specialpages' => 'q', -'accesskey-specialpage' => '', -'accesskey-upload' => 'u', 'accesskey-minoredit' => 'i', 'accesskey-save' => 's', 'accesskey-preview' => 'p', -'accesskey-contributions' => '', -'accesskey-emailuser' => '', 'accesskey-compareselectedversions' => 'v', -# tooltip help for the main actions -'tooltip-atom' => 'Atom feed for this page', -'tooltip-article' => 'View the content page [alt-a]', -'tooltip-talk' => 'Discussion about the content page [alt-t]', -'tooltip-edit' => 'You can edit this page. Please use the preview button before saving. [alt-e]', -'tooltip-addsection' => 'Add a comment to this page. [alt-+]', -'tooltip-viewsource' => 'This page is protected. You can view its source. [alt-e]', -'tooltip-history' => 'Past versions of this page, [alt-h]', -'tooltip-protect' => 'Protect this page [alt-=]', -'tooltip-delete' => 'Delete this page [alt-d]', -'tooltip-undelete' => "Restore the $1 edits done to this page before it was deleted [alt-d]", -'tooltip-move' => 'Move this page [alt-m]', -'tooltip-nomove' => 'You don\'t have the permissions to move this page', -'tooltip-watch' => 'Add this page to your watchlist [alt-w]', -'tooltip-unwatch' => 'Remove this page from your watchlist [alt-w]', -'tooltip-watchlist' => 'The list of pages you\'re monitoring for changes. [alt-l]', -'tooltip-userpage' => 'My user page [alt-.]', -'tooltip-anonuserpage' => 'The user page for the ip you\'re editing as [alt-.]', -'tooltip-mytalk' => 'My talk page [alt-n]', -'tooltip-anontalk' => 'Discussion about edits from this ip address [alt-n]', -'tooltip-preferences' => 'My preferences', -'tooltip-mycontris' => 'List of my contributions [alt-y]', -'tooltip-login' => 'You are encouraged to log in, it is not mandatory however. [alt-o]', -'tooltip-logout' => 'Log out [alt-o]', +# tooltip help for some actions, most are in Monobook.js 'tooltip-search' => 'Search this wiki [alt-f]', -'tooltip-mainpage' => 'Visit the Main Page [alt-z]', -'tooltip-portal' => 'About the project, what you can do, where to find things', -'tooltip-randompage' => 'Load a random page [alt-x]', -'tooltip-currentevents' => 'Find background information on current events', -'tooltip-sitesupport' => 'Support {{SITENAME}}', -'tooltip-help' => 'The place to find out.', -'tooltip-recentchanges' => 'The list of recent changes in the wiki. [alt-r]', -'tooltip-recentchangeslinked' => 'Recent changes in pages linking to this page [alt-c]', -'tooltip-whatlinkshere' => 'List of all wiki pages that link here [alt-b]', -'tooltip-specialpages' => 'List of all special pages [alt-q]', -'tooltip-upload' => 'Upload images or media files [alt-u]', -'tooltip-specialpage' => 'This is a special page, you can\'t edit the page itself.', 'tooltip-minoredit' => 'Mark this as a minor edit [alt-i]', 'tooltip-save' => 'Save your changes [alt-s]', 'tooltip-preview' => 'Preview your changes, please use this before saving! [alt-p]', -'tooltip-contributions' => 'View the list of contributions of this user', -'tooltip-emailuser' => 'Send a mail to this user', -'tooltip-rss' => 'RSS feed for this page', 'tooltip-compareselectedversions' => 'See the differences between the two selected versions of this page. [alt-v]', # stylesheets @@ -1546,22 +1275,80 @@ amusement.", #'Monobook.js' => '/* edit this file to change js things in the monobook skin */', # Metadata -"nodublincore" => "Dublin Core RDF metadata disabled for this server.", -"nocreativecommons" => "Creative Commons RDF metadata disabled for this server.", -"notacceptable" => "The wiki server can't provide data in a format your client can read.", +'nodublincore' => 'Dublin Core RDF metadata disabled for this server.', +'nocreativecommons' => 'Creative Commons RDF metadata disabled for this server.', +'notacceptable' => 'The wiki server can\'t provide data in a format your client can read.', # Attribution -"anonymous" => "Anonymous user(s) of $wgSitename", -"siteuser" => "$wgSitename user $1", -"lastmodifiedby" => "This page was last modified $1 by $2.", -"and" => "and", -"othercontribs" => "Based on work by $1.", -"siteusers" => "$wgSitename user(s) $1", -"spamprotectiontitle" => "Spam protection filter", -"spamprotectiontext" => "The page you wanted to save was blocked by the spam filter. This is probably caused by a link to an external site. - -You might want to check the following regular expression for patterns that are currently blocked:" +'anonymous' => "Anonymous user(s) of $wgSitename", +'siteuser' => "$wgSitename user $1", +'lastmodifiedby' => "This page was last modified $1 by $2.", +'and' => 'and', +'othercontribs' => "Based on work by $1.", +'siteusers' => "$wgSitename user(s) $1", +'spamprotectiontitle' => 'Spam protection filter', +'spamprotectiontext' => 'The page you wanted to save was blocked by the spam filter. This is probably caused by a link to an external site. + +You might want to check the following regular expression for patterns that are currently blocked:', +'subcategorycount' => "There are $1 subcategories to this category.", +'categoryarticlecount' => "There are $1 articles in this category.", +'usenewcategorypage' => "1\n\nSet first character to \"0\" to disable the new category page layout.", + +# Monobook.js: tooltips and access keys for monobook +'Monobook.js' => '/* tooltips and access keys */ +ta = new Object(); +ta[\'pt-userpage\'] = new Array(\'.\',\'My user page\'); +ta[\'pt-anonuserpage\'] = new Array(\'.\',\'The user page for the ip you\\\'re editing as\'); +ta[\'pt-mytalk\'] = new Array(\'n\',\'My talk page\'); +ta[\'pt-anontalk\'] = new Array(\'n\',\'Discussion about edits from this ip address\'); +ta[\'pt-preferences\'] = new Array(\'\',\'My preferences\'); +ta[\'pt-watchlist\'] = new Array(\'l\',\'The list of pages you\\\'re monitoring for changes.\'); +ta[\'pt-mycontris\'] = new Array(\'y\',\'List of my contributions\'); +ta[\'pt-login\'] = new Array(\'o\',\'You are encouraged to log in, it is not mandatory however.\'); +ta[\'pt-anonlogin\'] = new Array(\'o\',\'You are encouraged to log in, it is not mandatory however.\'); +ta[\'pt-logout\'] = new Array(\'o\',\'Log out\'); +ta[\'ca-article\'] = new Array(\'a\',\'View the content page\'); +ta[\'ca-talk\'] = new Array(\'t\',\'Discussion about the content page\'); +ta[\'ca-edit\'] = new Array(\'e\',\'You can edit this page. Please use the preview button before saving.\'); +ta[\'ca-addsection\'] = new Array(\'+\',\'Add a comment to this discussion.\'); +ta[\'ca-viewsource\'] = new Array(\'e\',\'This page is protected. You can view its source.\'); +ta[\'ca-history\'] = new Array(\'h\',\'Past versions of this page.\'); +ta[\'ca-protect\'] = new Array(\'=\',\'Protect this page\'); +ta[\'ca-delete\'] = new Array(\'d\',\'Delete this page\'); +ta[\'ca-undelete\'] = new Array(\'d\',\'Restore the edits done to this page before it was deleted\'); +ta[\'ca-move\'] = new Array(\'m\',\'Move this page\'); +ta[\'ca-nomove\'] = new Array(\'\',\'You don\\\'t have the permissions to move this page\'); +ta[\'ca-watch\'] = new Array(\'w\',\'Add this page to your watchlist\'); +ta[\'ca-unwatch\'] = new Array(\'w\',\'Remove this page from your watchlist\'); +ta[\'search\'] = new Array(\'f\',\'Search this wiki\'); +ta[\'p-logo\'] = new Array(\'\',\'Main Page\'); +ta[\'n-mainpage\'] = new Array(\'z\',\'Visit the Main Page\'); +ta[\'n-portal\'] = new Array(\'\',\'About the project, what you can do, where to find things\'); +ta[\'n-currentevents\'] = new Array(\'\',\'Find background information on current events\'); +ta[\'n-recentchanges\'] = new Array(\'r\',\'The list of recent changes in the wiki.\'); +ta[\'n-randompage\'] = new Array(\'x\',\'Load a random page\'); +ta[\'n-help\'] = new Array(\'\',\'The place to find out.\'); +ta[\'n-sitesupport\'] = new Array(\'\',\'Support us\'); +ta[\'t-whatlinkshere\'] = new Array(\'j\',\'List of all wiki pages that link here\'); +ta[\'t-recentchangeslinked\'] = new Array(\'k\',\'Recent changes in pages linking to this page\'); +ta[\'feed-rss\'] = new Array(\'\',\'RSS feed for this page\'); +ta[\'feed-atom\'] = new Array(\'\',\'Atom feed for this page\'); +ta[\'t-contributions\'] = new Array(\'\',\'View the list of contributions of this user\'); +ta[\'t-emailuser\'] = new Array(\'\',\'Send a mail to this user\'); +ta[\'t-upload\'] = new Array(\'u\',\'Upload images or media files\'); +ta[\'t-specialpages\'] = new Array(\'q\',\'List of all special pages\'); +ta[\'ca-nstab-main\'] = new Array(\'c\',\'View the content page\'); +ta[\'ca-nstab-user\'] = new Array(\'c\',\'View the user page\'); +ta[\'ca-nstab-media\'] = new Array(\'c\',\'View the media page\'); +ta[\'ca-nstab-special\'] = new Array(\'\',\'This is a special page, you can\\\'t edit the page itself.\'); +ta[\'ca-nstab-wp\'] = new Array(\'a\',\'View the project page\'); +ta[\'ca-nstab-image\'] = new Array(\'c\',\'View the image page\'); +ta[\'ca-nstab-mediawiki\'] = new Array(\'c\',\'View the system message\'); +ta[\'ca-nstab-template\'] = new Array(\'c\',\'View the template\'); +ta[\'ca-nstab-help\'] = new Array(\'c\',\'View the help page\'); +ta[\'ca-nstab-category\'] = new Array(\'c\',\'View the category page\'); +' ); @@ -1573,9 +1360,9 @@ You might want to check the following regular expression for patterns that are c class Language { function Language(){ # Copies any missing values in the specified arrays from En to the current language - $fillin = array( "wgSysopSpecialPages", "wgValidSpecialPages", "wgDeveloperSpecialPages" ); + $fillin = array( 'wgSysopSpecialPages', 'wgValidSpecialPages', 'wgDeveloperSpecialPages' ); $name = get_class( $this ); - if( strpos( $name, "language" ) == 0){ + if( strpos( $name, 'language' ) == 0){ $lang = ucfirst( substr( $name, 8 ) ); foreach( $fillin as $arrname ){ $langver = "{$arrname}{$lang}"; @@ -1620,7 +1407,7 @@ class Language { } function specialPage( $name ) { - return $this->getNsText( Namespace::getSpecial() ) . ":" . $name; + return $this->getNsText( Namespace::getSpecial() ) . ':' . $name; } function getQuickbarSettings() { @@ -1694,8 +1481,8 @@ class Language { { global $wgUser, $wgLocalTZoffset; - $tz = $wgUser->getOption( "timecorrection" ); - if ( $tz === "" ) { + $tz = $wgUser->getOption( 'timecorrection' ); + if ( $tz === '' ) { $hrDiff = isset( $wgLocalTZoffset ) ? $wgLocalTZoffset : 0; $minDiff = 0; } elseif ( strpos( $tz, ":" ) !== false ) { @@ -1714,7 +1501,7 @@ class Language { (int)substr( $ts, 4, 2 ), # Month (int)substr( $ts, 6, 2 ), # Day (int)substr( $ts, 0, 4 ) ); #Year - return date( "YmdHis", $t ); + return date( 'YmdHis', $t ); } function date( $ts, $adj = false ) @@ -1747,21 +1534,21 @@ class Language { { if ( $adj ) { $ts = $this->userAdjust( $ts ); } - $t = substr( $ts, 8, 2 ) . ":" . substr( $ts, 10, 2 ); + $t = substr( $ts, 8, 2 ) . ':' . substr( $ts, 10, 2 ); if ( $seconds ) { - $t .= ":" . substr( $ts, 12, 2 ); + $t .= ':' . substr( $ts, 12, 2 ); } return $this->formatNum( $t ); } 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 ) { - return date( "D, d M Y H:i:s T", $ts ); + return date( 'D, d M Y H:i:s T', $ts ); } function getValidSpecialPages() @@ -1817,10 +1604,10 @@ class Language { $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 @iconv( 'UTF-8', $wgInputEncoding, $s ); - if( ($wgInputEncoding == "utf-8") and $ishigh and !$isutf ) + if( ($wgInputEncoding == 'utf-8') and $ishigh and !$isutf ) return utf8_encode( $s ); # Other languages can safely leave this function, or replace @@ -1858,7 +1645,7 @@ class Language { # wgInputEncoding, this text will be further converted # to wgOutputEncoding. global $wgInputEncoding, $wgEditEncoding; - if( $wgEditEncoding == "" or + if( $wgEditEncoding == '' or $wgEditEncoding == $wgInputEncoding ) { return $s; } else { @@ -1910,7 +1697,7 @@ class Language { # Italic is unsuitable for some languages function emphasize( $text ) { - return "$text"; + return ''.$text.''; } @@ -1922,15 +1709,15 @@ class Language { } function listToText( $l ) { - $s = ""; + $s = ''; $m = count($l) - 1; for ($i = $m; $i >= 0; $i--) { if ($i == $m) { $s = $l[$i]; } else if ($i == $m - 1) { - $s = $l[$i] . " " . $this->getMessage("and") . " " . $s; + $s = $l[$i] . ' ' . $this->getMessage('and') . ' ' . $s; } else { - $s = $l[$i] . ", " . $s; + $s = $l[$i] . ', ' . $s; } } return $s; @@ -1938,5 +1725,5 @@ class Language { } # This should fail gracefully if there's not a localization available -@include_once( "Language" . ucfirst( $wgLanguageCode ) . ".php" ); +@include_once( 'Language' . ucfirst( $wgLanguageCode ) . '.php' ); ?> diff --git a/languages/LanguageAf.php b/languages/LanguageAf.php index 4f5a7774c366..0475e995d2f2 100644 --- a/languages/LanguageAf.php +++ b/languages/LanguageAf.php @@ -36,7 +36,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesAf = array( diff --git a/languages/LanguageAr.php b/languages/LanguageAr.php index 95706cf9da84..a031c7091950 100644 --- a/languages/LanguageAr.php +++ b/languages/LanguageAr.php @@ -1125,7 +1125,7 @@ require_once("LanguageUtf8.php"); 'tooltip-upload' => 'Upload images or media files [alt-u]', 'tooltip-specialpage' => 'This is a special page, you can\'t edit the page itself.', 'tooltip-minoredit' => 'Mark this as a minor edit [alt-i]', - 'tooltip-save' => 'Save you changes [alt-s]', + 'tooltip-save' => 'Save your changes [alt-s]', 'tooltip-preview' => 'Preview your changes, please use this before saving! [alt-p]', 'tooltip-contributions' => 'View the list of contributions of this user', 'tooltip-emailuser' => 'Send a mail to this user', diff --git a/languages/LanguageBg.php b/languages/LanguageBg.php index f7660213d4b1..1f3781046b3b 100644 --- a/languages/LanguageBg.php +++ b/languages/LanguageBg.php @@ -41,7 +41,8 @@ 'montparnasse' => 'Монпарнас', 'davinci' => 'ДаВинчи', 'mono' => 'Mono', - 'monobook' => 'MonoBook' + 'monobook' => 'MonoBook', + "myskin" => "MySkin" ); /* private */ $wgMathNamesBg = array( diff --git a/languages/LanguageBn.php b/languages/LanguageBn.php index 5f546e8cfcd8..b0448691f3cc 100644 --- a/languages/LanguageBn.php +++ b/languages/LanguageBn.php @@ -36,7 +36,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesBn = array( diff --git a/languages/LanguageCa.php b/languages/LanguageCa.php index 8c351ee2739f..4b6c2747610c 100644 --- a/languages/LanguageCa.php +++ b/languages/LanguageCa.php @@ -37,7 +37,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesCa = array( diff --git a/languages/LanguageCs.php b/languages/LanguageCs.php index fc1f781a268d..ba16ec1d2c31 100644 --- a/languages/LanguageCs.php +++ b/languages/LanguageCs.php @@ -38,7 +38,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgUserTogglesCs = array( diff --git a/languages/LanguageCy.php b/languages/LanguageCy.php index 5c773e55d0ba..43baf50a5a52 100644 --- a/languages/LanguageCy.php +++ b/languages/LanguageCy.php @@ -32,7 +32,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesCy = array( diff --git a/languages/LanguageDa.php b/languages/LanguageDa.php index 886481d86ad5..4e1b041b7879 100644 --- a/languages/LanguageDa.php +++ b/languages/LanguageDa.php @@ -1,4 +1,13 @@ "MediaWiki_diskussion", 10 => "Skabelon", 11 => "Skabelon_diskussion", - 12 => "Hjlp", - 13 => "Hjlp_diskussion", + 12 => "Hjælp", + 13 => "Hjælp_diskussion", 14 => "Kategori", 15 => "Kategori_diskussion" ); /* private */ $wgQuickbarSettingsDa = array( - "Ingen", "Fast venstre", "Fast hjre", "Flydende venstre" + "Ingen", "Fast venstre", "Fast højre", "Flydende venstre" ); /* private */ $wgSkinNamesDa = array( 'standard' => "Standard", 'nostalgia' => "Nostalgi", - 'cologneblue' => "Cologne-bl", + 'cologneblue' => "Cologne-blå", 'smarty' => "Paddington", 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesDa = array( MW_MATH_PNG => "Vis altid som PNG", MW_MATH_SIMPLE => "HTML hvis meget simpel ellers PNG", MW_MATH_HTML => "HTML hvis muligt ellers PNG", - MW_MATH_SOURCE => "Lad vre som TeX (for tekstbrowsere)", + MW_MATH_SOURCE => "Lad være som TeX (for tekstbrowsere)", MW_MATH_MODERN => "Anbefalet til moderne browsere", MW_MATH_MATHML => "MathML hvis muligt", ); @@ -63,24 +73,24 @@ ); /* private */ $wgUserTogglesDa = array( - "hover" => "Vis svvende tekst over wikihenvisninger", + "hover" => "Vis svævende tekst over wikihenvisninger", "underline" => "Understreg henvisninger", - "highlightbroken" => "Brug rde henvisninger til tomme sider", - "justify" => "Justr afsnit", - "hideminor" => "Skjul mindre ndringer i seneste ndringer listen", - "usenewrc" => "Udvidet seneste ndringer liste
    (ikke for alle browsere)", + "highlightbroken" => "Brug røde henvisninger til tomme sider", + "justify" => "Justér afsnit", + "hideminor" => "Skjul mindre ændringer i seneste ændringer listen", + "usenewrc" => "Udvidet seneste ændringer liste
    (ikke for alle browsere)", "numberheadings" => "Automatisk nummerering af overskrifter", - "showtoolbar" => "Vis vrktjslinje til redigering", - "editondblclick" => "Redigr sider med dobbeltklik (JavaScript)", - "editsection"=>"Redigr afsnit ved hjlp af [redigr]-henvisning", - "editsectiononrightclick"=>"Redigr afsnit ved at hjreklikke
    p afsnittets titel (JavaScript)", + "showtoolbar" => "Vis værktøjslinje til redigering", + "editondblclick" => "Redigér sider med dobbeltklik (JavaScript)", + "editsection"=>"Redigér afsnit ved hjælp af [redigér]-henvisning", + "editsectiononrightclick"=>"Redigér afsnit ved at højreklikke
    på afsnittets titel (JavaScript)", "showtoc"=>"Vis indholdsfortegnelse
    (for artikler med mere end tre afsnit)", - "rememberpassword" => "Husk adgangskode til nste besg", + "rememberpassword" => "Husk adgangskode til næste besøg", "editwidth" => "Redigeringsboksen har fuld bredde", - "watchdefault" => "Overvg nye og ndrede artikler", - "minordefault" => "Markr som standard alle ndringer som mindre", - "previewontop" => "Vis forhndsvisning fr redigeringsboksen", - "nocache" => "Husk ikke siderne til nste besg" + "watchdefault" => "Overvåg nye og ændrede artikler", + "minordefault" => "Markér som standard alle ændringer som mindre", + "previewontop" => "Vis forhåndsvisning før redigeringsboksen", + "nocache" => "Husk ikke siderne til næste besøg" ); /* private */ $wgBookstoreListDa = array( @@ -93,8 +103,8 @@ ); /* private */ $wgWeekdayNamesDa = array( - "sndag", "mandag", "tirsdag", "onsdag", "torsdag", - "fredag", "lrdag" + "søndag", "mandag", "tirsdag", "onsdag", "torsdag", + "fredag", "lørdag" ); /* private */ $wgMonthNamesDa = array( @@ -116,22 +126,22 @@ "Userlogin" => "", "Userlogout" => "", "Preferences" => "Mine brugerindstillinger", - "Watchlist" => "Min overvgningsliste", - "Recentchanges" => "Seneste ndringer", - "Upload" => "Lg filer op", + "Watchlist" => "Min overvågningsliste", + "Recentchanges" => "Seneste ændringer", + "Upload" => "Læg filer op", "Imagelist" => "Billedliste", "Listusers" => "Registrerede brugere", "Statistics" => "Statistik om siden", - "Randompage" => "Tilfldig artikel", + "Randompage" => "Tilfældig artikel", - "Lonelypages" => "Forldrelse artikler", - "Unusedimages" => "Forldrelse filer", - "Popularpages" => "Populre artikler", - "Wantedpages" => "Mest nskede artikler", + "Lonelypages" => "Forældreløse artikler", + "Unusedimages" => "Forældreløse filer", + "Popularpages" => "Populære artikler", + "Wantedpages" => "Mest ønskede artikler", "Shortpages" => "Korte artikler", "Longpages" => "Lange artikler", "Newpages" => "Nyeste artikler", - "Ancientpages" => "ldste artikler", + "Ancientpages" => "Ældste artikler", "Deadendpages" => "Blindgydesider", # "Intl" => "Sproghenvisninger", "Allpages" => "Alle sider efter titel", @@ -146,13 +156,13 @@ "Movepage" => "", "Booksources" => "Eksterne bogkilder", "Categories" => "Kategorier", - "Export" => "Eksportr sider i XML format", + "Export" => "Eksportér sider i XML format", "Version" => "Vis MediaWiki version", ); /* private */ $wgSysopSpecialPagesDa = array( "Blockip" => "Bloker en IP-adresse", - "Asksql" => "Lav en foresprgsel i databasen", + "Asksql" => "Lav en forespørgsel i databasen", "Undelete" => "Se og gendan slettede sider", "Makesysop" => "Lav en bruger til administrator" ); @@ -188,14 +198,14 @@ "category_header" => "Artikler i kategorien \"$1\"", "subcategories" => "Underkategorier", -"linktrail" => "/^([a-z|||]+)(.*)\$/sD", +"linktrail" => "/^((?:[a-z]|æ|ø|å)+)(.*)\$/sD", "mainpage" => "Forside", "mainpagetext" => "Wiki-software er nu installeret.", "about" => "Om", "aboutwikipedia" => "Om Wikipedia", "aboutpage" => "Wikipedia:Om", -"help" => "Hjlp", -"helppage" => "Wikipedia:Hjlp", +"help" => "Hjælp", +"helppage" => "Wikipedia:Hjælp", "wikititlesuffix" => "Wikipedia", "bugreports" => "Fejlrapporter", "bugreportspage" => "Wikipedia:Fejlrapporter", @@ -203,12 +213,12 @@ "sitesupportpage" => "Wikipedia:Donation", # If not set, won't appear. Can be wiki page or URL "faq" => "OSS", "faqpage" => "Wikipedia:OSS", -"edithelp" => "Hjlp til redigering", +"edithelp" => "Hjælp til redigering", "edithelppage" => "Wikipedia:Hvordan_redigerer_jeg_en_side", "cancel" => "Afbryd", "qbfind" => "Find", "qbbrowse" => "Gennemse", -"qbedit" => "Redigr", +"qbedit" => "Redigér", "qbpageoptions" => "Indstillinger for side", "qbpageinfo" => "Information om side", "qbmyoptions" => "Mine indstillinger", @@ -217,20 +227,20 @@ "currentevents" => "Aktuelle begivenheder", "errorpagetitle" => "Fejl", "returnto" => "Tilbage til $1.", -"fromwikipedia" => "Fra Wikipedia, den frie encyklopdi", +"fromwikipedia" => "Fra Wikipedia, den frie encyklopædi", "whatlinkshere" => "Sider med en henvisning hertil", -"help" => "Hjlp", -"search" => "Sg", -"go" => "Udfr", +"help" => "Hjælp", +"search" => "Søg", +"go" => "Udfør", "history" => "Historie", "printableversion" => "Printervenlig version", -"editthispage" => "Redigr side", +"editthispage" => "Redigér side", "deletethispage" => "Slet side", "protectthispage" => "Beskyt side", "unprotectthispage" => "Fjern beskyttelse af side", "newpage" => "Ny side", "talkpage" => "Diskussionssiden", -"postcomment" => "Tilfj en kommentar", +"postcomment" => "Tilføj en kommentar", "articlepage" => "Se artiklen", "subjectpage" => "Se emnesiden", "userpage" => "Se brugersiden", @@ -239,39 +249,39 @@ "viewtalkpage" => "Se diskussion", "otherlanguages" => "Andre sprog", "redirectedfrom" => "(Omdirigeret fra $1)", -"lastmodified" => "Sidst ndret den $1.", +"lastmodified" => "Sidst ændret den $1.", "viewcount" => "Siden er vist i alt $1 gange.", "gnunote" => "Denne side er udgivet under GNU FDL.", "printsubtitle" => "(Fra http://da.wikipedia.org)", "protectedpage" => "Beskyttet side", "administrators" => "Wikipedia:Administratorer", -"sysoptitle" => "Sysop-adgang pkrvet", +"sysoptitle" => "Sysop-adgang påkrævet", "sysoptext" => "Den funktion du har bedt om kan kun -udfres af brugere med \"sysop\"-status. Se $1.", -"developertitle" => "Developer-adgang pkrvet", +udføres af brugere med \"sysop\"-status. Se $1.", +"developertitle" => "Developer-adgang påkrævet", "developertext" => "Den funktion du har bedt om, kan kun -udfres af brugere med \"developer\"-status. Se $1.", +udføres af brugere med \"developer\"-status. Se $1.", "nbytes" => "$1 bytes", -"go" => "Udfr", +"go" => "Udfør", "ok" => "OK", "sitetitle" => "Wikipedia", -"sitesubtitle" => "Den frie encyklopdi", +"sitesubtitle" => "Den frie encyklopædi", "retrievedfrom" => "Hentet fra \"$1\"", "newmessages" => "Du har $1.", "newmessageslink" => "nye beskeder", -"editsection"=>"redigr", +"editsection"=>"redigér", "toc" => "Indholdsfortegnelse", "showtoc" => "vis", "hidetoc" => "skjul", "thisisdeleted" => "Se eller gendan $1?", -"restorelink" => "$1 slettede ndringer", +"restorelink" => "$1 slettede ændringer", # Main script and global functions # "nosuchaction" => "Funktionen findes ikke", "nosuchactiontext" => "Funktion specificeret i URL'en kan ikke genkendes af Wikipediasoftwaren", -"nosuchspecialpage" => "En sdan specialside findes ikke", +"nosuchspecialpage" => "En sådan specialside findes ikke", "nospecialpagetext" => "Du har bedt om en specialside, der ikke kan genkendes af Wikipediasoftwaren.", @@ -279,181 +289,181 @@ kan genkendes af Wikipediasoftwaren.", # "error" => "Fejl", "databaseerror" => "Databasefejl", -"dberrortext" => "Der er sket en syntaksfejl i en databaseforesprgsel. -Dette kan vre p grund af en illegal foresprgsel (se $5), +"dberrortext" => "Der er sket en syntaksfejl i en databaseforespørgsel. +Dette kan være på grund af en illegal forespørgsel (se $5), eller det kan betyde en fejl i softwaren. -Den sidst forsgte databaseforesprgsel var: +Den sidst forsøgte databaseforespørgsel var:
    $1
    fra funktionen \"$2\". MySQL returnerede fejlen \"$3: $4\".", -"dberrortextcl" => "Der er sket en syntaksfejl i en databaseforesprgsel. -Den sidst forsgte databaseforesprgsel var: +"dberrortextcl" => "Der er sket en syntaksfejl i en databaseforespørgsel. +Den sidst forsøgte databaseforespørgsel var: \"$1\" fra funktionen \"$2\". MySQL returnerede fejlen \"$3: $4\".\n", -"noconnect" => "Kunne ikke forbinde til databasen p $1", -"nodb" => "Kunne ikke vlge databasen $1", -"cachederror" => "Det flgende er en gemt kopi af den nskede side, og er mske ikke helt opdateret.", +"noconnect" => "Kunne ikke forbinde til databasen på $1", +"nodb" => "Kunne ikke vælge databasen $1", +"cachederror" => "Det følgende er en gemt kopi af den ønskede side, og er måske ikke helt opdateret.", "readonly" => "Databasen er skrivebeskyttet", "enterlockreason" => "Skriv en begrundelse for skrivebeskyttelsen, inklusive -et estimat p hvornr skrivebeskyttelsen vil blive ophvet igen", -"readonlytext" => "Wikipediadatabasen er for jeblikket skrivebeskyttet for -nye sider og andre modifikationer, sandsynligvis p grund af rutinemssig databasevedligeholdelse, hvorefter den vil returnere til normaldrift. +et estimat på hvornår skrivebeskyttelsen vil blive ophævet igen", +"readonlytext" => "Wikipediadatabasen er for øjeblikket skrivebeskyttet for +nye sider og andre modifikationer, sandsynligvis på grund af rutinemæssig databasevedligeholdelse, hvorefter den vil returnere til normaldrift. Den administrator der skrivebeskyttede den har denne forklaring:

    $1", -"missingarticle" => "Databasen fandt ikke teksten p en side, +"missingarticle" => "Databasen fandt ikke teksten på en side, som den skulle have fundet, med navnet \"$1\".

    Dette er ikke en databasefejl, men sandsynligvis en fejl i softwaren.

    Send venligst en rapport om dette til en administrator, -hvor du ogs nvner URL'en.", +hvor du også nævner URL'en.", "internalerror" => "Intern fejl", "filecopyerror" => "Kunne ikke kopiere filen \"$1\" til \"$2\".", -"filerenameerror" => "Kunne ikke omdbe filen \"$1\" til \"$2\".", +"filerenameerror" => "Kunne ikke omdøbe filen \"$1\" til \"$2\".", "filedeleteerror" => "Kunne ikke slette filen \"$1\".", "filenotfound" => "Kunne ikke finde filen \"$1\".", -"unexpected" => "Uventet vrdi: \"$1\"=\"$2\".", +"unexpected" => "Uventet værdi: \"$1\"=\"$2\".", "formerror" => "Fejl: kunne ikke afsende form", -"badarticleerror" => "Denne funktion kan ikke udfres p denne side.", +"badarticleerror" => "Denne funktion kan ikke udføres på denne side.", "cannotdelete" => "Kunne ikke slette siden eller filen der blev specificeret.", "badtitle" => "Forkert titel", -"badtitletext" => "Den nskede sides titel var ikke tilladt, tom eller siden -er forkert henvist fra en Wikipedia p et andet sprog.", -"perfdisabled" => "Desvrre! Denne funktion er midlertidigt afbrudt, -fordi den belaster databasen meget hrdt og i en sdan grad, at siden -bliver meget langsom. Funktionen bliver forhbentlig omskrevet i den -nrmeste fremtid (mske af dig, det er jo open source!!).", +"badtitletext" => "Den ønskede sides titel var ikke tilladt, tom eller siden +er forkert henvist fra en Wikipedia på et andet sprog.", +"perfdisabled" => "Desværre! Denne funktion er midlertidigt afbrudt, +fordi den belaster databasen meget hårdt og i en sådan grad, at siden +bliver meget langsom. Funktionen bliver forhåbentlig omskrevet i den +nærmeste fremtid (måske af dig, det er jo open source!!).", "perfdisabledsub" => "Her er en gemt kopi fra $1:", # Login and logout pages # "logouttitle" => "Bruger-log-af", "logouttext" => "Du er nu logget af. -Du kan fortstte med at bruge Wikipedia anonymt, eller du kan logge p +Du kan fortsætte med at bruge Wikipedia anonymt, eller du kan logge på igen som den samme eller en anden bruger.\n", "welcomecreation" => "

    Velkommen, $1!

    Din konto er blevet -oprettet. Glem ikke at personliggre dine Wikipedia-indstillinger.", +oprettet. Glem ikke at personliggøre dine Wikipedia-indstillinger.", -"loginpagetitle" => "Bruger log p", +"loginpagetitle" => "Bruger log på", "yourname" => "Dit brugernavn", "yourpassword" => "Din adgangskode", "yourpasswordagain" => "Gentag adgangskode", "newusersonly" => " (kun nye brugere)", -"remembermypassword" => "Husk min adgangskode til nste gang.", -"loginproblem" => "Der har vret et problem med at f dig logget -p.
    Prv igen!", +"remembermypassword" => "Husk min adgangskode til næste gang.", +"loginproblem" => "Der har været et problem med at få dig logget +på.
    Prøv igen!", "alreadyloggedin" => "Bruger $1, du er allerede logget -p!
    \n", +på!
    \n", -"login" => "Log p", -"userlogin" => "Log p", +"login" => "Log på", +"userlogin" => "Log på", "logout" => "Log af", "userlogout" => "Log af", -"notloggedin" => "Ikke logget p", +"notloggedin" => "Ikke logget på", "createaccount" => "Opret en ny konto", "badretype" => "De indtastede adgangskoder er ikke ens.", -"userexists" => "Det brugernavn du har valgt er allerede i brug. Vlg +"userexists" => "Det brugernavn du har valgt er allerede i brug. Vælg venligst et andet brugernavn.", "youremail" => "Din e-mailadresse *", "yournick" => "Dit kaldenavn (til signaturer)", "emailforlost" => "* Det er valgfrit om du vil oplyse din e-mailadresse. -Men det gr andre brugere i stand til at sende dig en e-mail, uden at -du behver offentliggre din e-mailadresse. Samtidig gr det muligt, at du kan f en +Men det gør andre brugere i stand til at sende dig en e-mail, uden at +du behøver offentliggøre din e-mailadresse. Samtidig gør det muligt, at du kan få en ny adgangskode sendt til din e-mailadresse.", -"loginerror" => "Fejl med at logge p", +"loginerror" => "Fejl med at logge på", "noname" => "Du har ikke angivet et gyldigt brugernavn.", -"loginsuccesstitle" => "Logget p med succes", -"loginsuccess" => "Du er nu logget p Wikipedia som \"$1\".", +"loginsuccesstitle" => "Logget på med succes", +"loginsuccess" => "Du er nu logget på Wikipedia som \"$1\".", "nosuchuser" => "Der er ingen bruger med navnet \"$1\". -Kontrollr stavemden igen, eller brug formularen herunder til at oprette en ny brugerkonto.", -"wrongpassword" => "Den indtastede adgangskode var forkert. Prv igen.", +Kontrollér stavemåden igen, eller brug formularen herunder til at oprette en ny brugerkonto.", +"wrongpassword" => "Den indtastede adgangskode var forkert. Prøv igen.", "mailmypassword" => "Send mig en ny adgangskode til min e-mailadresse", "passwordremindertitle" => "Ny adgangskode fra Wikipedia", "passwordremindertext" => "Nogen (sandsynligvis dig, fra IP-adressen $1) -har bedt om at vi sender dig en ny adgangskode til at logge p Wikipedia. +har bedt om at vi sender dig en ny adgangskode til at logge på Wikipedia. Den nye adgangskode for bruger \"$2\" er nu \"$3\". -Du br logge p nu og ndre din adgangskode.", +Du bør logge på nu og ændre din adgangskode.", "noemail" => "Der er ikke oplyst nogen e-mailadresse for bruger \"$1\".", "passwordsent" => "En ny adgangskode er sendt til e-mailadressen, som er registreret for \"$1\". -Du br logge p og ndre din adgangskode straks efter, du har modtaget den.", +Du bør logge på og ændre din adgangskode straks efter, du har modtaget den.", # Edit pages # "summary" => "Beskrivelse", "subject" => "Emne/overskrift", -"minoredit" => "Dette er en mindre ndring.", -"watchthis" => "Overvg denne artikel", +"minoredit" => "Dette er en mindre ændring.", +"watchthis" => "Overvåg denne artikel", "savearticle" => "Gem side", -"preview" => "Forhndsvisning", -"showpreview" => "Forhndsvisning", +"preview" => "Forhåndsvisning", +"showpreview" => "Forhåndsvisning", "blockedtitle" => "Brugeren er blokeret", "blockedtext" => "Dit brugernavn eller din IP-adresse er blevet blokeret af $1. Begrundelsen er denne:
    $2

    Du kan kontakte $1 eller en af de andre [[Wikipedia:Administratorer|administratorer]] for at diskutere blokeringen. Din IP-adresse er $3. -Srg venligst for at inkludere dette nummer i alle henvendelser til en administrator. +Sørg venligst for at inkludere dette nummer i alle henvendelser til en administrator. ", "newarticle" => "(Ny)", -"newarticletext" => "Der er p nuvrende tidspunkt ingen tekst p denne side.
    +"newarticletext" => "Der er på nuværende tidspunkt ingen tekst på denne side.
    Du kan begynde en artikel ved at skrive i boksen herunder. -(se [[Wikipedia:Hjlp|hjlpen]] for yderligere information).
    -Hvis det ikke var din mening, s tryk p '''Tilbage''' eller '''Back''' knappen.", +(se [[Wikipedia:Hjælp|hjælpen]] for yderligere information).
    +Hvis det ikke var din mening, så tryk på '''Tilbage''' eller '''Back''' knappen.", "anontalkpagetext" => "---- ''Dette er en diskussionsside for en anonym bruger der -ikke har oprettet en konto endnu eller ikke bruger den. Vi er derfor ndt til at +ikke har oprettet en konto endnu eller ikke bruger den. Vi er derfor nødt til at bruge den nummeriske [[IP-adresse]] til at identificere ham eller hende. -En IP-adresse kan vre delt mellem flere brugere. Hvis du er en anonym bruger -og syntes, at du har fet irrelevante kommentarer p sdan en side, s vr -venlig, at oprette en brugerkonto og [[Speciel:Userlogin|logge p]], s vi undgr fremtidige +En IP-adresse kan være delt mellem flere brugere. Hvis du er en anonym bruger +og syntes, at du har fået irrelevante kommentarer på sådan en side, så vær +venlig, at oprette en brugerkonto og [[Speciel:Userlogin|logge på]], så vi undgår fremtidige forvekslinger med andre anonyme brugere.'' ", -"noarticletext" => "(Der er p nuvrende tidspunkt ingen tekst p denne +"noarticletext" => "(Der er på nuværende tidspunkt ingen tekst på denne side)", "updated" => "(Opdateret)", "note" => "Note: ", -"previewnote" => "Husk at dette er kun en forhndsvisning, siden er ikke +"previewnote" => "Husk at dette er kun en forhåndsvisning, siden er ikke gemt endnu!", -"previewconflict" => "Denne forhndsvisning er resultatet af den -redigrbare tekst ovenfor, -sdan vil det komme til at se ud hvis du vlger at gemme teksten.", +"previewconflict" => "Denne forhåndsvisning er resultatet af den +redigérbare tekst ovenfor, +sådan vil det komme til at se ud hvis du vælger at gemme teksten.", "editing" => "Redigerer $1", "sectionedit" => " (afsnit)", "commentedit" => " (kommentar)", "editconflict" => "Redigeringskonflikt: $1", -"explainconflict" => "Nogen har ndret denne side, efter du -startede p at redigere den. -Den verste tekstboks indeholder den nuvrende tekst. -Dine ndringer er vist i den nederste tekstboks. -Du er ndt til at sammenflette dine ndringer med den eksisterende tekst. -Kun teksten i den verste tekstboks vil blive gemt nr du +"explainconflict" => "Nogen har ændret denne side, efter du +startede på at redigere den. +Den øverste tekstboks indeholder den nuværende tekst. +Dine ændringer er vist i den nederste tekstboks. +Du er nødt til at sammenflette dine ændringer med den eksisterende tekst. +Kun teksten i den øverste tekstboks vil blive gemt når du trykker \"Gem side\".\n

    ", "yourtext" => "Din tekst", "storedversion" => "Den gemte version", "editingold" => "ADVARSEL: Du redigerer en gammel version af denne side. -Hvis du gemmer den, vil alle ndringer foretaget siden denne revision blive +Hvis du gemmer den, vil alle ændringer foretaget siden denne revision blive overskrevet.\n", "yourdiff" => "Forskelle", -"copyrightwarning" => "Lg mrke til at alle bidrag til Wikipedia er +"copyrightwarning" => "Læg mærke til at alle bidrag til Wikipedia er at betragte som udgivet under GNU Free Documentation License (se $1 for detaljer). -Hvis du ikke vil have din tekst redigeret uden nde og kopieret efter -forgodtbefindene, s skal du ikke lgge det her.
    -Du lover os ogs, at du skrev teksten selv, kopierede fra en +Hvis du ikke vil have din tekst redigeret uden nåde og kopieret efter +forgodtbefindene, så skal du ikke lægge det her.
    +Du lover os også, at du skrev teksten selv, kopierede fra en public domain eller lignende fri ressource. -LG ALDRIG MATERIALE HER SOM ER BESKYTTET AF ANDRES OPHAVSRET UDEN +LÆG ALDRIG MATERIALE HER SOM ER BESKYTTET AF ANDRES OPHAVSRET UDEN DERES TILLADELSE!", "longpagewarning" => "ADVARSEL: Denne side er $1 kilobytes lang; nogle -browsere kan have problemer med at redigerer sider der nrmer sig eller -er lngere end 32kb. Overvej om ikke siden kan deles op i mindre dele.", -"readonlywarning" => "ADVARSEL: Databasen er lst p grund af vedligeholdelse, -s du kan ikke gemme dine ndringer lige nu. Det kan godt vre en god ide at -kopiere din tekst til en tekstfil, s du kan gemme den til senere.", -"protectedpagewarning" => "ADVARSEL: Denne side er lst, s kun administratorer -kan redigere den. Srg for at du flger +browsere kan have problemer med at redigerer sider der nærmer sig eller +er længere end 32kb. Overvej om ikke siden kan deles op i mindre dele.", +"readonlywarning" => "ADVARSEL: Databasen er låst på grund af vedligeholdelse, +så du kan ikke gemme dine ændringer lige nu. Det kan godt være en god ide at +kopiere din tekst til en tekstfil, så du kan gemme den til senere.", +"protectedpagewarning" => "ADVARSEL: Denne side er låst, så kun administratorer +kan redigere den. Sørg for at du følger politiken for beskyttede sider.", @@ -463,64 +473,64 @@ beskyttede sider.", "nohistory" => "Der er ingen versionshistorik for denne side.", "revnotfound" => "Versionen er ikke fundet", "revnotfoundtext" => "Den gamle version af den side du spurgte efter kan -ikke findes. Kontrollr den URL du brugte til at f adgang til denne side.\n", -"loadhist" => "Indlser sidens historik", -"currentrev" => "Nuvrende version", +ikke findes. Kontrollér den URL du brugte til at få adgang til denne side.\n", +"loadhist" => "Indlæser sidens historik", +"currentrev" => "Nuværende version", "revisionasof" => "Versionen fra $1", -"cur" => "nuvrende", -"next" => "nste", +"cur" => "nuværende", +"next" => "næste", "last" => "forrige", "orig" => "originale", -"histlegend" => "Forklaring: (nuvrende) = forskel til den nuvrende -version, (forrige) = forskel til den forrige version, M = mindre ndring", +"histlegend" => "Forklaring: (nuværende) = forskel til den nuværende +version, (forrige) = forskel til den forrige version, M = mindre ændring", # Diffs # "difference" => "(Forskelle mellem versioner)", -"loadingrev" => "indlser version for at se forskelle", +"loadingrev" => "indlæser version for at se forskelle", "lineno" => "Linje $1:", -"editcurrent" => "Redigr den nuvrende version af denne side", +"editcurrent" => "Redigér den nuværende version af denne side", # Search results # -"searchresults" => "Sgeresultater", -"searchhelppage" => "Wikipedia:Sgning", -"searchingwikipedia" => "Sgning p Wikipedia", -"searchresulttext" => "For mere information om sgning p Wikipedia, se $1.", -"searchquery" => "For foresprgsel \"$1\"", -"badquery" => "Forkert udformet foresprgsel", -"badquerytext" => "Vi kunne ikke udfre din foresprgsel. -Det er sandsynligvis fordi du har forsgt at sge efter et ord med -frre end tre bogstaver, hvilket ikke understttes endnu. -Det kan ogs vre du har skrevet forkert, for +"searchresults" => "Søgeresultater", +"searchhelppage" => "Wikipedia:Søgning", +"searchingwikipedia" => "Søgning på Wikipedia", +"searchresulttext" => "For mere information om søgning på Wikipedia, se $1.", +"searchquery" => "For forespørgsel \"$1\"", +"badquery" => "Forkert udformet forespørgsel", +"badquerytext" => "Vi kunne ikke udføre din forespørgsel. +Det er sandsynligvis fordi du har forsøgt at søge efter et ord med +færre end tre bogstaver, hvilket ikke understøttes endnu. +Det kan også være du har skrevet forkert, for eksempel \"fisk og og skaldyr\". -Prv en anden foresprgsel.", -"matchtotals" => "Foresprgslen \"$1\" matchede $2 artikeltitler +Prøv en anden forespørgsel.", +"matchtotals" => "Forespørgslen \"$1\" matchede $2 artikeltitler og teksten i $3 artikler.", -"nogomatch" => "Ingen sider med prcis denne titel eksisterer, prver -fuldtekstsgning i stedet for. ", -"titlematches" => "Artikeltitler der matchede foresprgslen", -"notitlematches" => "Ingen artikeltitler matchede foresprgslen", -"textmatches" => "Artikeltekster der matchede foresprgslen", -"notextmatches" => "Ingen artikeltekster matchede foresprgslen", +"nogomatch" => "Ingen sider med præcis denne titel eksisterer, prøver +fuldtekstsøgning i stedet for. ", +"titlematches" => "Artikeltitler der matchede forespørgslen", +"notitlematches" => "Ingen artikeltitler matchede forespørgslen", +"textmatches" => "Artikeltekster der matchede forespørgslen", +"notextmatches" => "Ingen artikeltekster matchede forespørgslen", "prevn" => "forrige $1", -"nextn" => "nste $1", +"nextn" => "næste $1", "viewprevnext" => "Vis ($1) ($2) ($3).", "showingresults" => "Nedenfor vises $1 resultater startende med nummer $2.", "showingresultsnum" => "Herunder vises $3 resultater startende med nummer $2.", -"nonefound" => "Note: sgning uden resultat skyldes, -at man sger efter almindelige ord som \"har\" og \"fra\", -der ikke er indekseret, eller ved at specificere mere end et sgeord (da kun -sider der indeholder alle sgeordene vil blive fundet).", -"powersearch" => "Sg", +"nonefound" => "Note: søgning uden resultat skyldes, +at man søger efter almindelige ord som \"har\" og \"fra\", +der ikke er indekseret, eller ved at specificere mere end et søgeord (da kun +sider der indeholder alle søgeordene vil blive fundet).", +"powersearch" => "Søg", "powersearchtext" => " -Sg i navnerum :
    +Søg i navnerum :
    $1
    -$2 List omdirigeringer   Sg efter $3 $9", -"searchdisabled" => "

    Sgefunktionen er midlertidigt afbrudt p grund af -for stort pres p serveren; vi hber vi kan stte den p igen nr vi har -opgraderet softwaren. I mellemtiden kan du sge via google:

    +$2 List omdirigeringer   Søg efter $3 $9", +"searchdisabled" => "

    Søgefunktionen er midlertidigt afbrudt på grund af +for stort pres på serveren; vi håber vi kan sætte den på igen når vi har +opgraderet softwaren. I mellemtiden kan du søge via google:

    ", "googlesearch" => " @@ -549,14 +559,14 @@ value=\"{$wgServer}\" checked> {$wgServer}
    # Preferences page # "preferences" => "Indstillinger", -"prefsnologin" => "Ikke logget p", -"prefsnologintext" => "Du skal vre logget p -for at ndre brugerindstillinger.", -"prefslogintext" => "Du logget p som \"$1\". +"prefsnologin" => "Ikke logget på", +"prefsnologintext" => "Du skal være logget på +for at ændre brugerindstillinger.", +"prefslogintext" => "Du logget på som \"$1\". Dit interne ID-nummer er $2. -Se [[Wikipedia:Hvordan stter jeg mine indstillinger]] for en forklaring p de forskellige indstillinger.", +Se [[Wikipedia:Hvordan sætter jeg mine indstillinger]] for en forklaring på de forskellige indstillinger.", "prefsreset" => "Indstillingerne er blevet gendannet fra lageret.", "qbsettings" => "Indstillinger for hurtigmenu", "changepassword" => "Skift adgangskode", @@ -573,96 +583,96 @@ Se [[Wikipedia:Hvordan s "oldpassword" => "Gammel adgangskode", "newpassword" => "Ny adgangskode", "retypenew" => "Gentag ny adgangskode", -"textboxsize" => "Tekstboks-strrelse", -"rows" => "Rkker", +"textboxsize" => "Tekstboks-størrelse", +"rows" => "Rækker", "columns" => "Kolonner", -"searchresultshead" => "Indstillinger for sgeresultater", +"searchresultshead" => "Indstillinger for søgeresultater", "resultsperpage" => "Resultater pr. side", "contextlines" => "Linjer pr. resultat", "contextchars" => "Tegn pr. linje i resultatet", -"stubthreshold" => "Grnse for visning af stubs", -"recentchangescount" => "Antallet af titler p siden \"seneste ndringer\"", +"stubthreshold" => "Grænse for visning af stubs", +"recentchangescount" => "Antallet af titler på siden \"seneste ændringer\"", "savedprefs" => "Dine indstillinger er blevet gemt.", "timezonetext" => "Indtast antal timer din lokale tid er forskellig fra serverens tid (UTC). Der bliver automatisk tilpasset til dansk tid, ellers skulle man for eksempel for dansk vintertid, indtaste \"1\" -(og \"2\" nr vi er p sommertid).", +(og \"2\" når vi er på sommertid).", "localtime" => "Lokaltid", "timezoneoffset" => "Forskel", "servertime" => "Serverens tid er nu", "guesstimezone" => "Hent tidszone fra browseren", -"emailflag" => "Fravlg muligheden for at f e-mail fra andre brugere", -"defaultns" => "Sg som standard i disse navnerum:", +"emailflag" => "Fravælg muligheden for at få e-mail fra andre brugere", +"defaultns" => "Søg som standard i disse navnerum:", # Recent changes # -"changes" => "ndringer", -"recentchanges" => "Seneste ndringer", +"changes" => "ændringer", +"recentchanges" => "Seneste ændringer", # This is the default text, and can be overriden by editing [[Wikipedia::Recentchanges]] -"recentchangestext" => "Se de senest ndrede sider i Wikipedia p denne side.", -"rcloaderr" => "Indlser seneste ndrede sider", -"rcnote" => "Nedenfor er de seneste $1 ndringer i de +"recentchangestext" => "Se de senest ændrede sider i Wikipedia på denne side.", +"rcloaderr" => "Indlæser seneste ændrede sider", +"rcnote" => "Nedenfor er de seneste $1 ændringer i de sidste $2 dage.", -"rcnotefrom" => "Nedenfor er ndringerne fra $2 indtil $1 vist.", -"rclistfrom" => "Vis nye ndringer startende fra $1", -"rclinks" => "Vis seneste $1 ndringer i de sidste $2 dage; $3 mindre ndringer.", -"rchide" => "i $4 form; $1 mindre ndringer; $2 andre navnerum; $3 mere end en redigering.", -"rcliu" => "; $1 redigeringer fra brugere der er logget p", +"rcnotefrom" => "Nedenfor er ændringerne fra $2 indtil $1 vist.", +"rclistfrom" => "Vis nye ændringer startende fra $1", +"rclinks" => "Vis seneste $1 ændringer i de sidste $2 dage; $3 mindre ændringer.", +"rchide" => "i $4 form; $1 mindre ændringer; $2 andre navnerum; $3 mere end en redigering.", +"rcliu" => "; $1 redigeringer fra brugere der er logget på", "diff" => "forskel", "hist" => "historik", "hide" => "skjul", "show" => "vis", "tableform" => "tabel", "listform" => "liste", -"nchanges" => "$1 ndringer", +"nchanges" => "$1 ændringer", "minoreditletter" => "M", "newpageletter" => "N", # Upload # -"upload" => "Lg en fil op", -"uploadbtn" => "Lg en fil op", -"uploadlink" => "Lg en fil op", -"reupload" => "Lg en fil op igen", -"reuploaddesc" => "Tilbage til formularen til at lgge filer op.", -"uploadnologin" => "Ikke logget p", -"uploadnologintext" => "Du skal vre logget p -for at kunne lgge filer op.", -"uploadfile" => "Lg filen op", -"uploaderror" => "Fejl under oplgning af fil", -"uploadtext" => "STOP! Fr du lgger filer op her, -s vr sikker p du har lst og flger Wikipedias "Læg en fil op", +"uploadbtn" => "Læg en fil op", +"uploadlink" => "Læg en fil op", +"reupload" => "Læg en fil op igen", +"reuploaddesc" => "Tilbage til formularen til at lægge filer op.", +"uploadnologin" => "Ikke logget på", +"uploadnologintext" => "Du skal være logget på +for at kunne lægge filer op.", +"uploadfile" => "Læg filen op", +"uploaderror" => "Fejl under oplægning af fil", +"uploadtext" => "STOP! Før du lægger filer op her, +så vær sikker på du har læst og følger Wikipedias politik om brug af billeder. -

    For at se eller sge i billeder, som tidligere er lagt op, -g til For at se eller søge i billeder, som tidligere er lagt op, +gå til listen over billeder. -Oplgning og sletninger er registreret i log over oplagte filer. -

    Brug formularen herunder til at lgge nye billeder op, der kan bruges +

    Brug formularen herunder til at lægge nye billeder op, der kan bruges som illustration i dine artikler. -P de fleste browsere vil du se en \"Browse...\" knap eller en +På de fleste browsere vil du se en \"Browse...\" knap eller en \"Gennemse...\" knap, som vil -bringe dig til dit styresystemets standard-dialog til bning af filer. -Nr du vlger en fil, vil navnet p filen dukke op i tekstfeltet +bringe dig til dit styresystemets standard-dialog til åbning af filer. +Når du vælger en fil, vil navnet på filen dukke op i tekstfeltet ved siden af knappen. -Du skal ogs verificere, at du ikke er ved at bryde nogens ophavsret. -Det gr du ved at stte et mrke i checkboksen. -Tryk p \"Lg op\"-knappen for at lgge filen op. +Du skal også verificere, at du ikke er ved at bryde nogens ophavsret. +Det gør du ved at sætte et mærke i checkboksen. +Tryk på \"Læg op\"-knappen for at lægge filen op. Dette kan godt tage lidt tid hvis du har en langsom internetforbindelse.

    De foretrukne formater er JPEG til fotografiske billeder, PNG -til tegninger og andre sm billeder, og OGG til lyd. -Srg for at navngive din fil med et beskrivende navn for at undg +til tegninger og andre små billeder, og OGG til lyd. +Sørg for at navngive din fil med et beskrivende navn for at undgå forvirring om indholdet. -For at bruge billedet i en artikel, s brug et link af denne slags +For at bruge billedet i en artikel, så brug et link af denne slags [[billede:fil.jpg]] eller [[billede:fil.png|alternativ tekst]] eller [[media:fil.ogg]] for lyd. -

    Lg mrke til at prcis som med Wikipedia-sider, s kan og m andre gerne +

    Læg mærke til at præcis som med Wikipedia-sider, så kan og må andre gerne redigere eller -slette de filer, du har lagt op, hvis de mener det hjlper encyklopdien, og -du kan blive blokeret fra at lgge op hvis du misbruger systemet.", -"uploadlog" => "oplgningslog", +slette de filer, du har lagt op, hvis de mener det hjælper encyklopædien, og +du kan blive blokeret fra at lægge op hvis du misbruger systemet.", +"uploadlog" => "oplægningslog", "uploadlogpage" => "Upload_log", "uploadlogpagetext" => "Herunder er der en liste med de filer, som er lagt op senest. Alle de viste tider er serverens tid (UTC). @@ -671,27 +681,27 @@ op senest. Alle de viste tider er serverens tid (UTC). ", "filename" => "Filnavn", "filedesc" => "Beskrivelse", -"affirmation" => "Jeg bekrfter, at ophavsretshaveren til denne fil +"affirmation" => "Jeg bekræfter, at ophavsretshaveren til denne fil er enig i, at filen udgives under betingelserne for $1.", "copyrightpage" => "Wikipedia:Ophavsret", "copyrightpagename" => "Wikipedia ophavsret", "uploadedfiles" => "Filer som er lagt op", -"noaffirmation" => "Du skal bekrfte, at du ikke bryder nogens ophavsret -ved at lgge denne fil op.", -"ignorewarning" => "Ignorr advarslen og gem filen alligevel.", -"minlength" => "Navnet p filen skal vre p mindst tre bogstaver.", -"badfilename" => "Navnet p filen er blevet ndret til \"$1\".", +"noaffirmation" => "Du skal bekræfte, at du ikke bryder nogens ophavsret +ved at lægge denne fil op.", +"ignorewarning" => "Ignorér advarslen og gem filen alligevel.", +"minlength" => "Navnet på filen skal være på mindst tre bogstaver.", +"badfilename" => "Navnet på filen er blevet ændret til \"$1\".", "badfiletype" => "\".$1\" er ikke et af de anbefalede filformater.", "largefile" => "Det anbefales, at filer ikke fylder mere end 100kb.", -"successfulupload" => "Oplgning er gennemfrt med success", +"successfulupload" => "Oplægning er gennemført med success", "fileuploaded" => "Filen \"$1\" er lagt op med success. -Flg dette link: ($2) til siden med beskrivelse og udfyld -information omkring filen, ssom hvor den kom fra, hvornr den er lavet +Følg dette link: ($2) til siden med beskrivelse og udfyld +information omkring filen, såsom hvor den kom fra, hvornår den er lavet og af hvem, og andre ting du ved om filen.", -"uploadwarning" => "Oplgningsadvarsel", +"uploadwarning" => "Oplægningsadvarsel", "savefile" => "Gem fil", "uploadedimage" => "Lagde \"$1\" op", -"uploaddisabled" => "Desvrre er funktionen til at lgge billeder op afbrudt p denne server.", +"uploaddisabled" => "Desværre er funktionen til at lægge billeder op afbrudt på denne server.", # Image list # @@ -699,23 +709,23 @@ og af hvem, og andre ting du ved om filen.", "imagelisttext" => "Herunder er en liste med $1 billeder sorteret $2.", "getimagelist" => "henter billedliste", "ilshowmatch" => "Vis alle billeder med navne der matcher", -"ilsubmit" => "Sg", +"ilsubmit" => "Søg", "showlast" => "Vis de sidste $1 billeder sorteret $2.", "all" => "alle", "byname" => "efter navn", "bydate" => "efter dato", -"bysize" => "efter strrelse", +"bysize" => "efter størrelse", "imgdelete" => "slet", "imgdesc" => "beskrivelse", -"imglegend" => "Forklaring: (beskrivelse) = vis/redigr billedebeskrivelse.", +"imglegend" => "Forklaring: (beskrivelse) = vis/redigér billedebeskrivelse.", "imghistory" => "Billedhistorik", "revertimg" => "gendan", "deleteimg" => "slet", -"imghistlegend" => "Forklaring: (nuvrende) = dette er det nuvrende billede, +"imghistlegend" => "Forklaring: (nuværende) = dette er det nuværende billede, (slet) = slet denne gamle version, (gendan) = gendan en gammel version. -
    Klik p en dato for at se billedet, som er lagt op den dag.", +
    Klik på en dato for at se billedet, som er lagt op den dag.", "imagelinks" => "Billedehenvisninger", -"linkstoimage" => "De flgende sider henviser til dette billede:", +"linkstoimage" => "De følgende sider henviser til dette billede:", "nolinkstoimage" => "Der er ingen sider der henviser til dette billede.", # Statistics @@ -727,11 +737,11 @@ og af hvem, og andre ting du ved om filen.", Dette er inklusiv \"diskussion\"-sider, sider om Wikipedia, omdirigeringssider, og andre der sikkert ikke kan kvalificeres som artikler. -Hvis man ekskludere disse, s er der $2 sider som sandsynligvis er +Hvis man ekskludere disse, så er der $2 sider som sandsynligvis er rigtige artikler.

    -Der har ialt vret $3 viste sider, og $4 redigeringer af sider +Der har ialt været $3 viste sider, og $4 redigeringer af sider siden softwaren blev opdateret (25. september 2002). -Det vil sige, der har vret $5 gennemsnitlige redigeringer pr. side, +Det vil sige, der har været $5 gennemsnitlige redigeringer pr. side, og $6 visninger pr. redigering.", "userstatstext" => "Der er $1 registrerede brugere. $2 af disse er administratorer (se $3).", @@ -739,34 +749,34 @@ og $6 visninger pr. redigering.", # Maintenance Page # "maintenance" => "Vedligeholdelsesside", -"maintnancepagetext" => "P denne side er der forskellige smarte -vrktjer til at vedligeholde Wikipedia. Nogle af disse funktioner er ret -hrde for databasen (de tager lang tid), s lad vre med at opdatere siden +"maintnancepagetext" => "På denne side er der forskellige smarte +værktøjer til at vedligeholde Wikipedia. Nogle af disse funktioner er ret +hårde for databasen (de tager lang tid), så lad være med at opdatere siden hver gang du har rettet en enkelt ting ;-)", "maintenancebacklink" => "Tilbage til vedligeholdelsessiden", "disambiguations" => "Artikler med flertydige titler", "disambiguationspage" => "Wikipedia:Henvisninger til artikler med flertydige titler", -"disambiguationstext" => "De flgende artikler henviser til +"disambiguationstext" => "De følgende artikler henviser til artikler med flertydige titler. De skulle henvise til en ikke-flertydig titel i stedet for.
    En artikel bliver behandlet som flertydig, hvis den er henvist fra $1.
    Henvisninger fra andre navnerum er ikke listet her.", "doubleredirects" => "Dobbelte omdirigeringer", -"doubleredirectstext" => "Bemrk: Denne liste kan indeholde forkerte +"doubleredirectstext" => "Bemærk: Denne liste kan indeholde forkerte resultater. Det er som regel, fordi siden indeholder ekstra tekst under den -frste #REDIRECT.
    \nHver linje indeholder henvisninger til den frste og den -anden omdirigering, og den frste linje fra den anden omdirigeringstekst, -det giver som regel den \"rigtige\" mlartikel, som den frste omdirigering -skulle have peget p.", -"brokenredirects" => "Drlige omdirigeringer", -"brokenredirectstext" => "De flgende omdirigeringer peger p en side der +første #REDIRECT.
    \nHver linje indeholder henvisninger til den første og den +anden omdirigering, og den første linje fra den anden omdirigeringstekst, +det giver som regel den \"rigtige\" målartikel, som den første omdirigering +skulle have peget på.", +"brokenredirects" => "Dårlige omdirigeringer", +"brokenredirectstext" => "De følgende omdirigeringer peger på en side der ikke eksisterer.", "selflinks" => "Sider der henviser til sig selv", -"selflinkstext" => "De flgende sider indeholder henvisninger til sig selv, +"selflinkstext" => "De følgende sider indeholder henvisninger til sig selv, men det burde de ikke.", "mispeelings" => "Sider med stavefejl", -"mispeelingstext" => "De flgende sider indeholder en af de -almindelig stavefejl, som er listet p $1. Den korrekte stavemde kan -angives i paranteser efter den fejlagtige stavemde (sdan her).", +"mispeelingstext" => "De følgende sider indeholder en af de +almindelig stavefejl, som er listet på $1. Den korrekte stavemåde kan +angives i paranteser efter den fejlagtige stavemåde (sådan her).", "mispeelingspage" => "Liste af almindelige stavefejl", "missinglanguagelinks" => "Manglende sproghenvisninger", "missinglanguagelinksbutton" => "Find manglende sproghenvisninger for", @@ -777,15 +787,15 @@ henvisning til den samme artikel i $1. Omdirigeringer og underartikler er # Miscellaneous special pages # -"orphans" => "Forldrelse artikler", -"lonelypages" => "Forldrelse artikler", +"orphans" => "Forældreløse artikler", +"lonelypages" => "Forældreløse artikler", "unusedimages" => "Ubrugte billeder", -"popularpages" => "Populre artikler", +"popularpages" => "Populære artikler", "nviews" => "$1 visninger", -"wantedpages" => "nskede artikler", +"wantedpages" => "Ønskede artikler", "nlinks" => "$1 henvisninger", "allpages" => "Alle artikler", -"randompage" => "Tilfldig artikel", +"randompage" => "Tilfældig artikel", "shortpages" => "Korte artikler", "longpages" => "Lange artikler", "listusers" => "Brugerliste", @@ -794,21 +804,21 @@ henvisning til den samme artikel i $1. Omdirigeringer og underartikler er "sysopspheading" => "Specielle sider til sysop-brug", "developerspheading" => "Specielle sider til developer-brug", "protectpage" => "Beskyt side", -"recentchangeslinked" => "Relaterede ndringer", +"recentchangeslinked" => "Relaterede ændringer", "rclsub" => "(til sider henvist fra \"$1\")", "debug" => "Aflus", "newpages" => "Nyeste artikler", -"ancientpages" => "ldste artikler", +"ancientpages" => "Ældste artikler", "intl" => "Sproghenvisninger", "movethispage" => "Flyt side", -"unusedimagestext" => "

    Lg mrke til, at andre websider -ssom de andre internationale Wikipediaer mske henviser til et billede med -en direkte URL, s det kan stadig vre listet her, selvom det er +"unusedimagestext" => "

    Læg mærke til, at andre websider +såsom de andre internationale Wikipediaer måske henviser til et billede med +en direkte URL, så det kan stadig være listet her, selvom det er i aktivt brug.", "booksources" => "Bogkilder", "booksourcetext" => "Herunder er en liste af henvisninger til steder der -udlner og/eller slger nye og brugte bger, og som mske ogs har -yderligere information om bger du leder efter. +udlåner og/eller sælger nye og brugte bøger, og som måske også har +yderligere information om bøger du leder efter. Wikipedia er ikke associeret med nogen af disse steder, og denne liste skal ikke ses som en anbefaling af disse.", "alphaindexline" => "$1 til $2", @@ -816,18 +826,18 @@ og denne liste skal ikke ses som en anbefaling af disse.", # Email this user # "mailnologin" => "Ingen afsenderadresse", -"mailnologintext" => "Du skal vre logget p +"mailnologintext" => "Du skal være logget på og have en gyldig e-mailadresse sat i dine indstillinger for at sende e-mail til andre brugere.", "emailuser" => "E-mail til denne bruger", "emailpage" => "E-mail bruger", "emailpagetext" => "Hvis denne bruger har sat en gyldig e-mailadresse i -sine brugerindstillinger, s vil formularen herunder sende en enkelt +sine brugerindstillinger, så vil formularen herunder sende en enkelt besked. Den e-mailadresse, du har sat i dine brugerindstillinger, vil dukke op -i \"Fra\" feltet p denne mail, s modtageren er i stand til at svare.", +i \"Fra\" feltet på denne mail, så modtageren er i stand til at svare.", "noemailtitle" => "Ingen e-mailadresse", "noemailtext" => "Denne bruger har ikke angivet en gyldig e-mailadresse, eller har valgt ikke at modtage e-mail fra andre brugere.", @@ -841,65 +851,65 @@ eller har valgt ikke at modtage e-mail fra andre brugere.", # Watchlist # -"watchlist" => "Overvgningsliste", +"watchlist" => "Overvågningsliste", "watchlistsub" => "(for bruger \"$1\")", -"nowatchlist" => "Du har ingenting i din overvgningsliste.", -"watchnologin" => "Ikke logget p", -"watchnologintext" => "Du skal vre logget p -for at kunne ndre din overvgningsliste.", -"addedwatch" => "Tilfjet til din overvgningsliste", -"addedwatchtext" => "Siden \"$1\" er blevet tilfjet til din overvgningsliste. -Fremtidige ndringer til denne side og den tilhrende diskussionsside vil -blive listet her, og siden vil fremst fremhvet i "Du har ingenting i din overvågningsliste.", +"watchnologin" => "Ikke logget på", +"watchnologintext" => "Du skal være logget på +for at kunne ændre din overvågningsliste.", +"addedwatch" => "Tilføjet til din overvågningsliste", +"addedwatchtext" => "Siden \"$1\" er blevet tilføjet til din overvågningsliste. +Fremtidige ændringer til denne side og den tilhørende diskussionsside vil +blive listet her, og siden vil fremstå fremhævet i listen med de seneste -ndringer for at gre det lettere at finde den.

    +ændringer for at gøre det lettere at finde den.

    -

    Hvis du senere vil fjerne siden fra din overvgningsliste, s klik -\"Fjern overvgning\" ude i siden.", -"removedwatch" => "Fjernet fra overvgningsliste", +

    Hvis du senere vil fjerne siden fra din overvågningsliste, så klik +\"Fjern overvågning\" ude i siden.", +"removedwatch" => "Fjernet fra overvågningsliste", "removedwatchtext" => "Siden \"$1\" er blevet fjernet fra din -overvgningsliste.", -"watchthispage" => "Overvg side", -"unwatchthispage" => "Fjern overvgning", +overvågningsliste.", +"watchthispage" => "Overvåg side", +"unwatchthispage" => "Fjern overvågning", "notanarticle" => "Ikke en artikel", -"watchnochange" => "Ingen af siderne i din overvgningsliste er ndret i den valgte periode.", -"watchdetails" => "($1 sider i din overvgningsliste, fratrukket alle diskussionssiderne; -$2 totalt antal sider ndret i den valgte periode; +"watchnochange" => "Ingen af siderne i din overvågningsliste er ændret i den valgte periode.", +"watchdetails" => "($1 sider i din overvågningsliste, fratrukket alle diskussionssiderne; +$2 totalt antal sider ændret i den valgte periode; $3... -vis og redigr den komplette liste.)", -"watchmethod-recent" => "tjekker seneste ndringer for sider i din overvgningsliste", -"watchmethod-list" => "tjekker seneste ndringer for sider i din overvgningsliste", -"removechecked" => "Fjern valgte sider fra min overvgningsliste", -"watchlistcontains" => "Din overvgningsliste indeholder $1 sider.", -"watcheditlist" => "Her er en alfabetisk liste over siderne i din overvgningsliste. -Vlg de sider du vil fjerne fra din overvgningsliste -og klik p 'fjern valgte sider fra min overvgningsliste' knappen -i bunden af skrmen.", -"removingchecked" => "Fjerner de valgte sider fra din overvgningsliste...", +vis og redigér den komplette liste.)", +"watchmethod-recent" => "tjekker seneste ændringer for sider i din overvågningsliste", +"watchmethod-list" => "tjekker seneste ændringer for sider i din overvågningsliste", +"removechecked" => "Fjern valgte sider fra min overvågningsliste", +"watchlistcontains" => "Din overvågningsliste indeholder $1 sider.", +"watcheditlist" => "Her er en alfabetisk liste over siderne i din overvågningsliste. +Vælg de sider du vil fjerne fra din overvågningsliste +og klik på 'fjern valgte sider fra min overvågningsliste' knappen +i bunden af skærmen.", +"removingchecked" => "Fjerner de valgte sider fra din overvågningsliste...", "couldntremove" => "Kunne ikke fjerne '$1'...", "iteminvalidname" => "Problem med '$1', ugyldigt navn...", -"wlnote" => "Nedenfor er de seneste $1 ndringer i de sidste $2 timer.", +"wlnote" => "Nedenfor er de seneste $1 ændringer i de sidste $2 timer.", # Delete/protect/revert # "deletepage" => "Slet side", -"confirm" => "Bekrft", +"confirm" => "Bekræft", "excontent" => "indholdet var:", -"exbeforeblank" => "indholdet fr siden blev tmt var:", +"exbeforeblank" => "indholdet før siden blev tømt var:", "exblank" => "siden var tom", -"confirmdelete" => "Bekrft sletning", +"confirmdelete" => "Bekræft sletning", "deletesub" => "(Sletter \"$1\")", "historywarning" => "Advarsel: Siden du er ved at slette har en historie: ", "confirmdeletetext" => "Du er ved permanent at slette en side -eller et billede sammen med hele den tilhrende historie fra databasen. -Bekrft venligst at du virkelig vil gre dette, at du forstr -konsekvenserne, og at du gr dette i overensstemmelse med +eller et billede sammen med hele den tilhørende historie fra databasen. +Bekræft venligst at du virkelig vil gøre dette, at du forstår +konsekvenserne, og at du gør dette i overensstemmelse med [[Wikipedia:Politik]].", "confirmcheck" => "Ja, jeg vil virkelig slette den her.", -"actioncomplete" => "Gennemfrt", +"actioncomplete" => "Gennemført", "deletedtext" => "\"$1\" er slettet. Se $2 for en fortegnelse over de nyeste sletninger.", "deletedarticle" => "slettet \"$1\"", @@ -912,7 +922,7 @@ Alle tider er serverens tid (UTC). "deletionlog" => "sletningslog", "reverted" => "Gendannet en tidligere version", "deletecomment" => "Begrundelse for sletning", -"imagereverted" => "Gendannelse af en tidligere version gennemfrt med +"imagereverted" => "Gendannelse af en tidligere version gennemført med success.", "rollback" => "Fjern redigeringer", "rollbacklink" => "fjern redigering", @@ -928,7 +938,7 @@ Den seneste redigering er foretaget af [[Bruger:$3|$3]] ([[Bruger diskussion:$3| "editcomment" => "Kommentaren til redigeringen var: \"$1\".", "revertpage" => "Gendannet siden til tidligere version redigeret af $1", "protectlogpage" => "Liste_over_beskyttede_sider", -"protectlogtext" => "Herunder er en liste over sider der er blevet beskyttet/har fet fjernet beskyttelsen. +"protectlogtext" => "Herunder er en liste over sider der er blevet beskyttet/har fået fjernet beskyttelsen. Se [[Wikipedia:Beskyttet side]] for mere information.", "protectedarticle" => "beskyttet [[$1]]", "unprotectedarticle" => "fjernet beskyttelse [[$1]]", @@ -936,15 +946,15 @@ Se [[Wikipedia:Beskyttet side]] for mere information.", # Undelete "undelete" => "Gendan en slettet side", "undeletepage" => "Se og gendan slettede sider", -"undeletepagetext" => "De flgende sider er slettede, men de findes +"undeletepagetext" => "De følgende sider er slettede, men de findes stadig i arkivet og kan gendannes. Arkivet blivet periodevis slettet.", "undeletearticle" => "Gendan slettet artikel", "undeleterevisions" => "$1 revisioner arkiveret", "undeletehistory" => "Hvis du gendanner siden, vil alle de historiske -revisioner ogs blive gendannet. Hvis en ny side med det samme navn -er oprettet siden denne blev slettet, s vil de gendannede revisioner +revisioner også blive gendannet. Hvis en ny side med det samme navn +er oprettet siden denne blev slettet, så vil de gendannede revisioner dukke op i den tidligere historie, og den nyeste revision vil forblive -p siden.", +på siden.", "undeleterevision" => "Slettet version fra $1", "undeletebtn" => "Gendan!", "undeletedarticle" => "gendannet \"$1\"", @@ -957,20 +967,20 @@ sletninger og gendannelser.", "contributions" => "Brugerbidrag", "mycontris" => "Mine bidrag", "contribsub" => "For $1", -"nocontribs" => "Ingen ndringer er fundet som matcher disse kriterier.", -"ucnote" => "Herunder er denne brugers sidste $1 ndringer i de +"nocontribs" => "Ingen ændringer er fundet som matcher disse kriterier.", +"ucnote" => "Herunder er denne brugers sidste $1 ændringer i de sidste $2 dage.", -"uclinks" => "Vis de sidste $1 ndringer; vis de sidste $2 dage.", +"uclinks" => "Vis de sidste $1 ændringer; vis de sidste $2 dage.", "uctop" => " (top)" , # What links here # "whatlinkshere" => "Hvad henviser hertil", -"notargettitle" => "Intet ml", -"notargettext" => "Du har ikke specificeret en mlside eller bruger -at udfre denne funktion p.", +"notargettitle" => "Intet mål", +"notargettext" => "Du har ikke specificeret en målside eller bruger +at udføre denne funktion på.", "linklistsub" => "(Liste over henvisninger)", -"linkshere" => "De flgende sider henviser her til:", +"linkshere" => "De følgende sider henviser her til:", "nolinkshere" => "Ingen sider henviser her til.", "isredirect" => "omdirigeringsside", @@ -979,119 +989,119 @@ at udf "blockip" => "Bloker bruger", "blockiptext" => "Brug formularen herunder til at blokere for skriveadgangen fra en specifik IP-adresse eller et brugernavn. -Dette m kun gres for at forhindre vandalisme, og i +Dette må kun gøres for at forhindre vandalisme, og i overensstemmelse med [[Wikipedia:Politik|Wikipedia politik]]. Udfyld en speciel begrundelse herunder (for eksempel med et citat fra -sider der har vret udsat for vandalisme).", +sider der har været udsat for vandalisme).", "ipaddress" => "IP-Adresse/brugernavn", "ipbreason" => "Begrundelse", "ipbsubmit" => "Bloker denne bruger", "badipaddress" => "IP-adressen/brugernavnet er udformet forkert eller eksistere ikke.", "noblockreason" => "Du skal angive en begrundelse for denne blokering.", -"blockipsuccesssub" => "Blokering udfrt med success", +"blockipsuccesssub" => "Blokering udført med success", "blockipsuccesstext" => "\"$1\" er blevet blokeret.
    Se [[Speciel:Ipblocklist|IP blokeringslisten]] for alle blokeringer.", -"unblockip" => "Ophv blokering af bruger", +"unblockip" => "Ophæv blokering af bruger", "unblockiptext" => "Brug formularen herunder for at gendanne skriveadgangen for en tidligere blokeret IP-adresse eller bruger.", -"ipusubmit" => "Ophv blokeringen af denne adresse", -"ipusuccess" => "\"$1\" har fet ophvet blokeringen", +"ipusubmit" => "Ophæv blokeringen af denne adresse", +"ipusuccess" => "\"$1\" har fået ophævet blokeringen", "ipblocklist" => "Liste af blokerede IP-adresser og brugernavne", "blocklistline" => "$1, $2 blokerede $3", "blocklink" => "bloker", -"unblocklink" => "ophv blokering", +"unblocklink" => "ophæv blokering", "contribslink" => "bidrag", "autoblocker" => "Automatisk blokeret fordi du deler IP-adresse med \"$1\". Begrundelse \"$2\".", # Developer tools # -"lockdb" => "Ls database", -"unlockdb" => "Ls database op", -"lockdbtext" => "At lse databasen vil afbryde alle brugere fra at kunne -redigere sider, ndre deres indstillinger, redigere deres -overvgningsliste, og andre ting der krver ndringer i databasen. -Bekrft venligst at du har til hensigt at gre dette, og at du vil -lse databasen op, nr din vedligeholdelse er overstet.", -"unlockdbtext" => "At lse databasen op vil gre, at alle brugere igen -kan redigere sider, ndre deres indstillinger, redigere deres -overvgningsliste, og andre ting der krver ndringer i databasen. -Bekrft venligst at du har til hensigt at gre dette.", -"lockconfirm" => "Ja, jeg vil virkelig lse databasen.", -"unlockconfirm" => "Ja, jeg vil virkelig lse databasen op.", -"lockbtn" => "Ls databasen", -"unlockbtn" => "Ls databasen op", -"locknoconfirm" => "Du har ikke bekrftet handlingen.", -"lockdbsuccesssub" => "Databasen er nu lst", -"unlockdbsuccesssub" => "Databasen er nu lst op", -"lockdbsuccesstext" => "Wikipediadatabasen er lst. -
    Husk at fjerne lsen nr du er frdig med din vedligeholdelse.", -"unlockdbsuccesstext" => "Wikipediadatabasen er lst op.", +"lockdb" => "Lås database", +"unlockdb" => "Lås database op", +"lockdbtext" => "At låse databasen vil afbryde alle brugere fra at kunne +redigere sider, ændre deres indstillinger, redigere deres +overvågningsliste, og andre ting der kræver ændringer i databasen. +Bekræft venligst at du har til hensigt at gøre dette, og at du vil +låse databasen op, når din vedligeholdelse er overstået.", +"unlockdbtext" => "At låse databasen op vil gøre, at alle brugere igen +kan redigere sider, ændre deres indstillinger, redigere deres +overvågningsliste, og andre ting der kræver ændringer i databasen. +Bekræft venligst at du har til hensigt at gøre dette.", +"lockconfirm" => "Ja, jeg vil virkelig låse databasen.", +"unlockconfirm" => "Ja, jeg vil virkelig låse databasen op.", +"lockbtn" => "Lås databasen", +"unlockbtn" => "Lås databasen op", +"locknoconfirm" => "Du har ikke bekræftet handlingen.", +"lockdbsuccesssub" => "Databasen er nu låst", +"unlockdbsuccesssub" => "Databasen er nu låst op", +"lockdbsuccesstext" => "Wikipediadatabasen er låst. +
    Husk at fjerne låsen når du er færdig med din vedligeholdelse.", +"unlockdbsuccesstext" => "Wikipediadatabasen er låst op.", # SQL query # -"asksql" => "SQL-foresprgsel", -"asksqltext" => "Brug formularen herunder til at lave direkte foresprgsler +"asksql" => "SQL-forespørgsel", +"asksqltext" => "Brug formularen herunder til at lave direkte forespørgsler i Wikipediadatabasen. -Brug enkelte anfrselstegn ('sdan her') for at adskille strenge. -Dette kan ofte belaste serveren kraftigt, s brug venligst denne funktion +Brug enkelte anførselstegn ('sådan her') for at adskille strenge. +Dette kan ofte belaste serveren kraftigt, så brug venligst denne funktion med omtanke.", -"sqlislogged" => "Vr opmrksom p at alle SQL-foresprgsler gemmes i en logfil.", -"sqlquery" => "Indtast foresprgsel", -"querybtn" => "Afsend foresprgsel", -"selectonly" => "Foresprgsler andre end \"SELECT\" er forbeholdt +"sqlislogged" => "Vær opmærksom på at alle SQL-forespørgsler gemmes i en logfil.", +"sqlquery" => "Indtast forespørgsel", +"querybtn" => "Afsend forespørgsel", +"selectonly" => "Forespørgsler andre end \"SELECT\" er forbeholdt Wikipediaudviklere.", -"querysuccessful" => "Foresprgsel gennemfrt med success", +"querysuccessful" => "Forespørgsel gennemført med success", # Move page # "movepage" => "Flyt side", -"movepagetext" => "Nr du bruger formularen herunder vil du f omdbt en +"movepagetext" => "Når du bruger formularen herunder vil du få omdøbt en side og flyttet hele sidens historie til det nye navn. Den gamle titel vil blive en omdirigeringsside til den nye titel. -Henvisninger til den gamle titel vil ikke blive ndret. Srg for at -[[Speciel:Maintenance|tjekke]] for dobbelte eller drlige omdirigeringer. +Henvisninger til den gamle titel vil ikke blive ændret. Sørg for at +[[Speciel:Maintenance|tjekke]] for dobbelte eller dårlige omdirigeringer. Du er ansvarlig for, at alle henvisninger stadig peger derhen, hvor det er meningen de skal pege. -Bemrk at siden '''ikke''' kan flyttes hvis der allerede er en side +Bemærk at siden '''ikke''' kan flyttes hvis der allerede er en side med den nye titel, medmindre den side er tom eller er en omdirigering uden nogen historie. Det betyder at du kan flytte en side tilbage hvor den kom fra, hvis du kommer til at lave en fejl. ADVARSEL! -Dette kan vre en drastisk og uventet ndring for en populr side; -vr sikker p, at du forstr konsekvenserne af dette fr du -fortstter.", -"movepagetalktext" => "Den tilhrende diskussionsside, hvis der er en, +Dette kan være en drastisk og uventet ændring for en populær side; +vær sikker på, at du forstår konsekvenserne af dette før du +fortsætter.", +"movepagetalktext" => "Den tilhørende diskussionsside, hvis der er en, vil automatisk blive flyttet med siden '''medmindre:''' *Du flytter siden til et andet navnerum, *En ikke-tom diskussionsside allerede eksisterer under det nye navn, eller *Du fjerner markeringen i boksen nedenunder. -I disse tilflde er du ndt til at flytte eller sammenflette siden manuelt.", +I disse tilfælde er du nødt til at flytte eller sammenflette siden manuelt.", "movearticle" => "Flyt side", -"movenologin" => "Ikke logget p", -"movenologintext" => "Du skal vre registreret bruger og vre logget p +"movenologin" => "Ikke logget på", +"movenologintext" => "Du skal være registreret bruger og være logget på for at flytte en side.", "newtitle" => "Til ny titel", "movepagebtn" => "Flyt side", -"pagemovedsub" => "Flytning gennemfrt", +"pagemovedsub" => "Flytning gennemført", "pagemovedtext" => "Siden \"[[$1]]\" er flyttet til \"[[$2]]\".", "articleexists" => "En side med det navn eksisterer allerede, eller det -navn du har valgt er ikke gyldigt. Vlg et andet navn.", -"talkexists" => "Siden blev flyttet korrekt, men den tilhrende +navn du har valgt er ikke gyldigt. Vælg et andet navn.", +"talkexists" => "Siden blev flyttet korrekt, men den tilhørende diskussionsside kunne ikke flyttes, fordi der allerede eksisterer en -med den nye titel. Du er ndt til at flette dem sammen manuelt.", +med den nye titel. Du er nødt til at flette dem sammen manuelt.", "movedto" => "flyttet til", -"movetalk" => "Flyt ogs \"diskussion\"ssiden, hvis den eksisterer.", -"talkpagemoved" => "Den tilhrende diskussionsside blev ogs flyttet.", -"talkpagenotmoved" => "Den tilhrende diskussionsside blev +"movetalk" => "Flyt også \"diskussion\"ssiden, hvis den eksisterer.", +"talkpagemoved" => "Den tilhørende diskussionsside blev også flyttet.", +"talkpagenotmoved" => "Den tilhørende diskussionsside blev ikke flyttet.", ); -class LanguageDa extends Language { +class LanguageDa extends LanguageUtf8 { function getDefaultUserOptions () { $opt = Language::getDefaultUserOptions(); @@ -1151,35 +1161,30 @@ class LanguageDa extends Language { return $wgUserTogglesDa; } - function getMonthName( $key ) - { + function getMonthName( $key ) { global $wgMonthNamesDa; return $wgMonthNamesDa[$key-1]; } /* by default we just return base form */ - function getMonthNameGen( $key ) - { + function getMonthNameGen( $key ) { global $wgMonthNamesDa; return $wgMonthNamesDa[$key-1]; } - function getMonthAbbreviation( $key ) - { + function getMonthAbbreviation( $key ) { global $wgMonthAbbreviationsDa; return $wgMonthAbbreviationsDa[$key-1]; } - function getWeekdayName( $key ) - { + function getWeekdayName( $key ) { global $wgWeekdayNamesDa; return $wgWeekdayNamesDa[$key-1]; } # Inherit userAdjust() - function date( $ts, $adj = false ) - { + function date( $ts, $adj = false ) { if ( $adj ) { $ts = $this->userAdjust( $ts ); } $d = (0 + substr( $ts, 6, 2 )) . ". " . @@ -1188,46 +1193,39 @@ class LanguageDa extends Language { return $d; } - function time( $ts, $adj = false ) - { + 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 ) - { + function timeanddate( $ts, $adj = false ) { return $this->date( $ts, $adj ) . " kl. " . $this->time( $ts, $adj ); } # Inherit rfc1123() - function getValidSpecialPages() - { + function getValidSpecialPages() { global $wgValidSpecialPagesDa; return $wgValidSpecialPagesDa; } - function getSysopSpecialPages() - { + function getSysopSpecialPages() { global $wgSysopSpecialPagesDa; return $wgSysopSpecialPagesDa; } - function getDeveloperSpecialPages() - { + function getDeveloperSpecialPages() { global $wgDeveloperSpecialPagesDa; return $wgDeveloperSpecialPagesDa; } - function getMessage( $key ) - { - global $wgAllMessagesDa, $wgAllMessagesEn; - $m = $wgAllMessagesDa[$key]; - - if ( "" == $m ) { return $wgAllMessagesEn[$key]; } - else return $m; + function getMessage( $key ) { + global $wgAllMessagesDa; + if( isset( $wgAllMessagesDa[$key] ) ) + return $wgAllMessagesDa[$key]; + return ""; } # Inherit iconv() diff --git a/languages/LanguageDe.php b/languages/LanguageDe.php index 251b9435e2b7..1f6cd5f595cf 100644 --- a/languages/LanguageDe.php +++ b/languages/LanguageDe.php @@ -1,4 +1,13 @@ "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesDe = array( "Immer als PNG darstellen", "Einfaches TeX als HTML darstellen, sonst PNG", - "Wenn mglich als HTML darstellen, sonst PNG", - "Als TeX belassen (fr Textbrowser)", - "Empfehlenswert fr moderne Browser" + "Wenn möglich als HTML darstellen, sonst PNG", + "Als TeX belassen (für Textbrowser)", + "Empfehlenswert für moderne Browser" ); /* private */ $wgUserTogglesDe = array( - "hover" => "Hinweis ber interne Verweise", + "hover" => "Hinweis über interne Verweise", "underline" => "Verweise unterstreichen", "highlightbroken" => "Verweise auf leere Themen hervorheben", "justify" => "Text als Blocksatz", - "hideminor" => "Keine kleinen nderungen in Letzte nderungen anzeigen", - "usenewrc" => "Erweiterte letzte nderungen (nicht fr alle Browser geeignet)", - "numberheadings" => "berschriften automatisch numerieren", + "hideminor" => "Keine kleinen Änderungen in Letzte Änderungen anzeigen", + "usenewrc" => "Erweiterte letzte Änderungen (nicht für alle Browser geeignet)", + "numberheadings" => "Überschriften automatisch numerieren", "showtoolbar" => "Editier-Werkzeugleiste anzeigen", "editondblclick" => "Seiten mit Doppelklick bearbeiten (JavaScript)", - "editsection" => "Links zum Bearbeiten einzelner Abstze anzeigen", - "editsectiononrightclick" => "Einzelne Abstze per Rechtsklick bearbeiten (Javascript)", - "showtoc" => "Anzeigen eines Inhaltsverzeichnisses bei Artikeln mit mehr als 3 berschriften", + "editsection" => "Links zum Bearbeiten einzelner Absätze anzeigen", + "editsectiononrightclick" => "Einzelne Absätze per Rechtsklick bearbeiten (Javascript)", + "showtoc" => "Anzeigen eines Inhaltsverzeichnisses bei Artikeln mit mehr als 3 Überschriften", "rememberpassword" => "Dauerhaftes Einloggen", "editwidth" => "Text-Eingabefeld mit voller Breite", "editondblclick" => "Seiten mit Doppelklick bearbeiten (JavaScript)", - "watchdefault" => "Neue und genderte Seiten beobachten", - "minordefault" => "Alle nderungen als geringfgig markieren", + "watchdefault" => "Neue und geänderte Seiten beobachten", + "minordefault" => "Alle Änderungen als geringfügig markieren", "previewontop" => "Vorschau vor dem Editierfenster anzeigen", "nocache" => "Seitencache deaktivieren" ); @@ -84,13 +94,13 @@ if($wgMetaNamespace === FALSE) ); /* private */ $wgMonthNamesDe = array( - "Januar", "Februar", "Mrz", "April", "Mai", "Juni", + "Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" ); /* private */ $wgMonthAbbreviationsDe = array( - "Jan", "Feb", "Mr", "Apr", "Mai", "Jun", "Jul", "Aug", + "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez" ); @@ -99,21 +109,21 @@ if($wgMetaNamespace === FALSE) "Userlogout" => "", "Preferences" => "Meine Benutzereinstellungen", "Watchlist" => "Meine Beobachtungsliste", - "Recentchanges" => "Letzte nderungen", + "Recentchanges" => "Letzte Änderungen", "Upload" => "Dateien hochladen", "Imagelist" => "Hochgeladene Dateien", "Listusers" => "Registrierte Benutzer", "Statistics" => "Seitenstatistik", - "Randompage" => "Zuflliger Artikel", + "Randompage" => "Zufälliger Artikel", "Lonelypages" => "Verwaiste Artikel", "Unusedimages" => "Verwaiste Dateien", "Popularpages" => "Beliebte Artikel", - "Wantedpages" => "Gewnschte Artikel", + "Wantedpages" => "Gewünschte Artikel", "Shortpages" => "Kurze Artikel", "Longpages" => "Lange Artikel", "Newpages" => "Neue Artikel", - "Ancientpages" => "lteste Artikel", + "Ancientpages" => "Älteste Artikel", /* "Intl" => "Interlanguage Links", */ "Allpages" => "Alle Artikel (alphabetisch)", @@ -134,7 +144,7 @@ if($wgMetaNamespace === FALSE) /* private */ $wgSysopSpecialPagesDe = array( "Blockip" => "Blockiere eine IP-Adresse", "Asksql" => "Datenbank-Abfrage", - "Undelete" => "Gelschte Seiten wiederherstellen" + "Undelete" => "Gelöschte Seiten wiederherstellen" ); /* private */ $wgDeveloperSpecialPagesDe = array( @@ -150,16 +160,16 @@ if($wgMetaNamespace === FALSE) "category" => "Kategorie", "category_header" => "Artikel in der Kategorie \"$1\"", "subcategories" => "Unterkategorien", -"linktrail" => "/^([||||a-z]+)(.*)\$/sD", +"linktrail" => "/^([ä|ö|ü|ß|a-z]+)(.*)\$/sD", "mainpage" => "Hauptseite", "mainpagetext" => "Die Wiki Software wurde erfolgreich installiert.", -"mainpagedocfooter" => "Siehe die [http://meta.wikipedia.org/wiki/MediaWiki_i18n Dokumentation zur Anpassung der Benutzeroberflche] -und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzerhandbuch] fr Hilfe zur Benutzung und Konfiguration.", +"mainpagedocfooter" => "Siehe die [http://meta.wikipedia.org/wiki/MediaWiki_i18n Dokumentation zur Anpassung der Benutzeroberfläche] +und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzerhandbuch] für Hilfe zur Benutzung und Konfiguration.", "portal" => "Wikipedia-Portal", "portal-url" => "{{ns:4}}:Portal", -"about" => "ber", -"aboutwikipedia" => "ber {$wgSitename}", -"aboutpage" => "{$wgMetaNamespace}:ber_{$wgSitename}", +"about" => "Über", +"aboutwikipedia" => "Über {$wgSitename}", +"aboutpage" => "{$wgMetaNamespace}:Über_{$wgSitename}", "article" => "Artikel", "help" => "Hilfe", "helppage" => "{$wgMetaNamespace}:Hilfe", @@ -168,13 +178,13 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzerhandbuc "bugreportspage" => "{$wgMetaNamespace}:Kontakt", "sitesupport" => "Spenden", "faq" => "FAQ", -"faqpage" => "{$wgSitename}:Hufig_gestellte_Fragen", +"faqpage" => "{$wgSitename}:Häufig_gestellte_Fragen", "edithelp" => "Bearbeitungshilfe", "edithelppage" => "{$wgSitename}:Editierhilfe", "cancel" => "Abbruch", "qbfind" => "Finden", -"qbbrowse" => "Blttern", -"qbedit" => "ndern", +"qbbrowse" => "Blättern", +"qbedit" => "Ändern", "qbpageoptions" => "Seitenoptionen", "qbpageinfo" => "Seitendaten", "qbmyoptions" => "Einstellungen", @@ -188,7 +198,7 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzerhandbuc "disclaimers" => "Lizenzbestimmungen", "disclaimerpage" => "{{ns:4}}:Lizenzbestimmungen", "errorpagetitle" => "Fehler", -"returnto" => "Zurck zu $1.", +"returnto" => "Zurück zu $1.", "fromwikipedia" => "aus {$wgSitename}, der freien Wissensdatenbank", "whatlinkshere" => "Was zeigt hierhin", "help" => "Hilfe", @@ -197,18 +207,18 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzerhandbuc "history_short" => "Versionen", "printableversion" => "Druckversion", "editthispage" => "Seite bearbeiten", -"delete" => "lschen", -"deletethispage" => "Diese Seite lschen", +"delete" => "löschen", +"deletethispage" => "Diese Seite löschen", "undelete_short" => "Wiederherstellen", -"protect" => "Schtzen", -"protectthispage" => "Artikel schtzen", +"protect" => "Schützen", +"protectthispage" => "Artikel schützen", "unprotect" => "Freigeben", "unprotectthispage" => "Schutz aufheben", "newpage" => "Neue Seite", "talkpage" => "Diskussion", "specialpage" => "Spezialseite", -"personaltools" => "'Persnliche Werkzeuge", -"postcomment" => "Kommentar hinzufgen", +"personaltools" => "'Persönliche Werkzeuge", +"postcomment" => "Kommentar hinzufügen", "addsection" => "+", "articlepage" => "Artikel", "toolbox" => "Werkzeuge", @@ -218,25 +228,25 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzerhandbuc "viewtalkpage" => "Diskussion", "otherlanguages" => "Andere Sprachen", "redirectedfrom" => "(Weitergeleitet von $1)", -"lastmodified" => "Diese Seite wurde zuletzt gendert um $1.", +"lastmodified" => "Diese Seite wurde zuletzt geändert um $1.", "viewcount" => "Diese Seite wurde bisher $1 mal abgerufen.", -"copyright" => "Inhalt ist verfgbar unter der $1.", +"copyright" => "Inhalt ist verfügbar unter der $1.", "poweredby" => "{{SITENAME}} benutzt [http://www.mediawiki.org/ MediaWiki], eine Open Source Wiki-Engine.", "printsubtitle" => "(Von {{SERVER}})", -"gnunote" => "Diese Seite ist unter der GNU FDL verfgbar.", -"protectedpage" => "Geschtzte Seite", +"gnunote" => "Diese Seite ist unter der GNU FDL verfügbar.", +"protectedpage" => "Geschützte Seite", "administrators" => "{$wgMetaNamespace}:Administratoren", "sysoptitle" => "Sysop-Zugang notwendig", -"sysoptext" => "Dieser Vorgang kann aus Sicherheitsgrnden nur von Benutzern mit \"Sysop\"-Status durchgefhrt werden. Siehe auch $1.", +"sysoptext" => "Dieser Vorgang kann aus Sicherheitsgründen nur von Benutzern mit \"Sysop\"-Status durchgeführt werden. Siehe auch $1.", "developertitle" => "Entwickler-Zugang notwendig", -"developertext" => "Dieser Vorgang kann aus Sicherheitsgrnden nur von Benutzern mit \"Entwickler\"-Status durchgefhrt werden. Siehe auch $1.", -"bureaucrattitle" => "Brokraten-Rechte notwendig", -"bureaucrattext" => "Dieser Vorgang kann nur von Benutzern mit \"Brokrat\"-Status durchgefhrt werden.", +"developertext" => "Dieser Vorgang kann aus Sicherheitsgründen nur von Benutzern mit \"Entwickler\"-Status durchgeführt werden. Siehe auch $1.", +"bureaucrattitle" => "Bürokraten-Rechte notwendig", +"bureaucrattext" => "Dieser Vorgang kann nur von Benutzern mit \"Bürokrat\"-Status durchgeführt werden.", "nbytes" => "$1 Byte", "go" => "Los", "ok" => "OK", "sitetitle" => "{$wgSitename}", -"sitesubtitle" => "Die freie Enzyklopdie", +"sitesubtitle" => "Die freie Enzyklopädie", "pagetitle" => "$1 - {{SITENAME}}", "sitesubtitle" => "Die freie Wissensdatenbank", "retrievedfrom" => "Von \"$1\"", @@ -247,10 +257,10 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzerhandbuc "showtoc" => "Anzeigen", "hidetoc" => "Verbergen", "thisisdeleted" => "Ansehen oder wiederherstellen von $1?", -"restorelink" => "$1 gelschte Bearbeitungsvorgnge", +"restorelink" => "$1 gelöschte Bearbeitungsvorgänge", "feedlinks" => "Feed:", -# Kurzworte fr jeden Namespace, u.a. von MonoBook verwendet +# Kurzworte für jeden Namespace, u.a. von MonoBook verwendet 'nstab-main' => 'Artikel', 'nstab-user' => 'Benutzerseite', 'nstab-media' => 'Media', @@ -268,11 +278,11 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzerhandbuc "link_tip"=>"Interner Link", "extlink_sample"=>"http://www.beispiel.de Link-Text", "extlink_tip"=>"Externer Link (http:// beachten)", -"headline_sample"=>"Ebene 2 berschrift", -"headline_tip"=>"Ebene 2 berschrift", -"math_sample"=>"Formel hier einfgen", +"headline_sample"=>"Ebene 2 Überschrift", +"headline_tip"=>"Ebene 2 Überschrift", +"math_sample"=>"Formel hier einfügen", "math_tip"=>"Mathematische Formel (LaTeX)", -"nowiki_sample"=>"Unformatierten Text hier einfgen", +"nowiki_sample"=>"Unformatierten Text hier einfügen", "nowiki_tip"=>"Unformatierter Text", "image_sample"=>"Beispiel.jpg", "image_tip"=>"Bild-Verweis", @@ -284,16 +294,16 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzerhandbuc # Main script and global functions # "nosuchaction" => "Diese Aktion gibt es nicht", -"nosuchactiontext" => "Diese Aktion wird von der MediaWiki-Software nicht untersttzt", +"nosuchactiontext" => "Diese Aktion wird von der MediaWiki-Software nicht unterstützt", "nosuchspecialpage" => "Diese Spezialseite gibt es nicht", -"nospecialpagetext" => "Diese Spezialseite wird von der MediaWiki-Software nicht untersttzt", +"nospecialpagetext" => "Diese Spezialseite wird von der MediaWiki-Software nicht unterstützt", # General errors # "error" => "Fehler", "databaseerror" => "Fehler in der Datenbank", "dberrortext" => "Es gab einen Syntaxfehler in der Datenbankabfrage. -Das knnte eine illegale Suchanfrage sein (siehe $5), +Das könnte eine illegale Suchanfrage sein (siehe $5), oder ein Softwarefehler. Die letzte Datenbankabfrage lautete:

    $1
    aus der Funktion \"$2\". @@ -302,35 +312,35 @@ MySQL meldete den Fehler \"$3: $4\".", Die letzte Datenbankabfrage lautete: \"$1\" aus der Funktion \"$2\". MySQL meldete den Fehler: \"$3: $4\".\n", "noconnect" => "Konnte keine Verbindung zur Datenbank auf $1 herstellen", -"nodb" => "Konnte Datenbank $1 nicht auswhlen", -"cachederror" => "Das folgende ist eine Kopie aus dem Cache und mglicherweise nicht aktuell.", +"nodb" => "Konnte Datenbank $1 nicht auswählen", +"cachederror" => "Das folgende ist eine Kopie aus dem Cache und möglicherweise nicht aktuell.", "readonly" => "Datenbank ist gesperrt", "enterlockreason" => "Bitte geben Sie einen Grund ein, warum die Datenbank -gesperrt werden soll und eine Abschtzung ber die Dauer der Sperrung", -"readonlytext" => "Die {$wgSitename}-Datenbank ist vorbergehend gesperrt, z.B. fr Wartungsarbeiten. Bitte versuchen Sie es spter noch einmal.\n", -"missingarticle" => "Der Text fr den Artikel \"$1\" wurde nicht in der Datenbank gefunden. Das ist wahrscheinlich ein Fehler in der Software. Bitte melden Sie dies einem Administrator, und geben sie den Artikelnamen an.", +gesperrt werden soll und eine Abschätzung über die Dauer der Sperrung", +"readonlytext" => "Die {$wgSitename}-Datenbank ist vorübergehend gesperrt, z.B. für Wartungsarbeiten. Bitte versuchen Sie es später noch einmal.\n", +"missingarticle" => "Der Text für den Artikel \"$1\" wurde nicht in der Datenbank gefunden. Das ist wahrscheinlich ein Fehler in der Software. Bitte melden Sie dies einem Administrator, und geben sie den Artikelnamen an.", "internalerror" => "Interner Fehler", "filecopyerror" => "Konnte Datei \"$1\" nicht nach \"$2\" kopieren.", "filerenameerror" => "Konnte Datei \"$1\" nicht nach \"$2\" umbenennen.", -"filedeleteerror" => "Konnte Datei \"$1\" nicht lschen.", +"filedeleteerror" => "Konnte Datei \"$1\" nicht löschen.", "filenotfound" => "Konnte Datei \"$1\" nicht finden.", "unexpected" => "Unerwarteter Wert: \"$1\"=\"$2\".", "formerror" => "Fehler: Konnte Formular nicht verarbeiten", "badarticleerror" => "Diese Aktion kann auf diesen Artikel nicht angewendet werden.", -"cannotdelete" => "Kann spezifizierte Seite oder Artikel nicht lschen. (Wurde mglicherweise schon von jemand anderem gelscht.)", -"badtitle" => "Ungltiger Titel", -"badtitletext" => "Der Titel der angeforderten Seite war ungltig, leer, oder ein ungltiger Sprachlink von einem anderen Wiki.", -"perfdisabled" => "Diese Funktion wurde wegen berlastung des Servers vorbergehend deaktiviert. Versuchen Sie es bitte zwischen 02:00 und 14:00 UTC noch einmal
    (Aktuelle Serverzeit : ".date("H:i:s")." UTC).", +"cannotdelete" => "Kann spezifizierte Seite oder Artikel nicht löschen. (Wurde möglicherweise schon von jemand anderem gelöscht.)", +"badtitle" => "Ungültiger Titel", +"badtitletext" => "Der Titel der angeforderten Seite war ungültig, leer, oder ein ungültiger Sprachlink von einem anderen Wiki.", +"perfdisabled" => "Diese Funktion wurde wegen Überlastung des Servers vorübergehend deaktiviert. Versuchen Sie es bitte zwischen 02:00 und 14:00 UTC noch einmal
    (Aktuelle Serverzeit : ".date("H:i:s")." UTC).", "perfdisabledsub" => "Hier ist eine gespeicherte Kopie von $1:", -"perfcached" => "Die folgenden Daten stammen aus dem Cache und sind mglicherweise nicht aktuell:", -"wrong_wfQuery_params" => "Falsche Parameter fr wfQuery()
    +"perfcached" => "Die folgenden Daten stammen aus dem Cache und sind möglicherweise nicht aktuell:", +"wrong_wfQuery_params" => "Falsche Parameter für wfQuery()
    Funktion: $1
    Query: $2 ", "viewsource" => "Quelltext betrachten", -"protectedtext" => "Diese Seite ist fr das Bearbeiten gesperrt, dafr kann es diverse Grnde geben, siehe [[{[ns:4}}:Geschtzte Seiten]]. +"protectedtext" => "Diese Seite ist für das Bearbeiten gesperrt, dafür kann es diverse Gründe geben, siehe [[{[ns:4}}:Geschützte Seiten]]. -Sie knnen den Quelltext dieser Seite betrachten und kopieren:", +Sie können den Quelltext dieser Seite betrachten und kopieren:", 'seriousxhtmlerrors' => 'Tidy entdeckte schwere Fehler im XHTML-Markup.', @@ -338,7 +348,7 @@ Sie k # "logouttitle" => "Benutzer-Abmeldung", "logouttext" => "Sie sind nun abgemeldet. -Sie knnen {$wgSitename} jetzt anonym weiterbenutzen, oder sich unter dem selben oder einem anderen Benutzernamen wieder anmelden.\n", +Sie können {$wgSitename} jetzt anonym weiterbenutzen, oder sich unter dem selben oder einem anderen Benutzernamen wieder anmelden.\n", "welcomecreation" => "

    Willkommen, $1!

    Ihr Benutzerkonto wurde eingerichtet. Vergessen Sie nicht, Ihre Einstellungen anzupassen.", @@ -347,38 +357,38 @@ Vergessen Sie nicht, Ihre Einstellungen anzupassen.", "yourname" => "Ihr Benutzername", "yourpassword" => "Ihr Passwort", "yourpasswordagain" => "Passwort wiederholen", -"newusersonly" => " (nur fr neue Mitglieder)", +"newusersonly" => " (nur für neue Mitglieder)", "remembermypassword" => "Dauerhaftes einloggen", "loginproblem" => "Es gab ein Problem mit Ihrer Anmeldung.
    Bitte versuchen Sie es nochmal!", "alreadyloggedin" => "Benutzer $1, Sie sind bereits angemeldet!
    \n", "login" => "Anmelden", -"loginprompt" => "Um sich bei {{SITENAME}} anmelden zu knnen, mssen Cookies aktiviert sein.", +"loginprompt" => "Um sich bei {{SITENAME}} anmelden zu können, müssen Cookies aktiviert sein.", "userlogin" => "Anmelden", "logout" => "Abmelden", "userlogout" => "Abmelden", "notloggedin" => "Nicht angemeldet", "createaccount" => "Neues Benutzerkonto anlegen", -"createaccountmail" => "ber eMail", -"badretype" => "Die beiden Passwrter stimmen nicht berein.", -"userexists" => "Dieser Benutzername ist schon vergeben. Bitte whlen Sie einen anderen.", +"createaccountmail" => "über eMail", +"badretype" => "Die beiden Passwörter stimmen nicht überein.", +"userexists" => "Dieser Benutzername ist schon vergeben. Bitte wählen Sie einen anderen.", "youremail" => "Ihre E-Mail", "yournick" => "Ihr \"Spitzname\" (zum \"Unterschreiben\")", "yourrealname" => "Ihr echter Name (keine Pflicht)", "emailforlost" => "Falls Sie Ihr Passwort vergessen haben, kann Ihnen ein neues an Ihre E-Mail-Adresse gesendet werden.", "loginerror" => "Fehler bei der Anmeldung", -"noname" => "Sie mssen einen Benutzernamen angeben.", +"noname" => "Sie müssen einen Benutzernamen angeben.", "loginsuccesstitle" => "Anmeldung erfolgreich", "loginsuccess" => "Sie sind jetzt als \"$1\" bei {$wgSitename} angemeldet.", "nosuchuser" => "Der Benutzername \"$1\" existiert nicht. -berprfen Sie die Schreibweise, oder melden Sie sich als neuer Benutzer an.", +Überprüfen Sie die Schreibweise, oder melden Sie sich als neuer Benutzer an.", "wrongpassword" => "Das Passwort ist falsch. Bitte versuchen Sie es erneut.", "mailmypassword" => "Ein neues Passwort schicken", "passwordremindertitle" => "{$wgSitename} Passwort", "passwordremindertext" => "Jemand (IP-Adresse $1) -hat um ein neues Passwort fr die Anmeldung bei {$wgSitename} gebeten. -Das Passwort fr Benutzer \"$2\" lautet nun \"$3\". -Sie sollten sich jetzt anmelden und Ihr Passwort ndern.", +hat um ein neues Passwort für die Anmeldung bei {$wgSitename} gebeten. +Das Passwort für Benutzer \"$2\" lautet nun \"$3\". +Sie sollten sich jetzt anmelden und Ihr Passwort ändern.", "noemail" => "Benutzer \"$1\" hat keine E-Mail-Adresse angegeben.", "passwordsent" => "Ein neues Passwort wurde an die E-Mail-Adresse von Benutzer \"$1\" gesendet. Bitte melden Sie sich an, sobald Sie es erhalten.", @@ -390,36 +400,36 @@ Bitte melden Sie sich an, sobald Sie es erhalten.", "summary" => "Zusammenfassung", #"subject" => "Betreff/Schlagzeile", "subject" => "Betreff", -"minoredit" => "Nur Kleinigkeiten wurden verndert.", +"minoredit" => "Nur Kleinigkeiten wurden verändert.", "watchthis" => "Diesen Artikel beobachten", "savearticle" => "Artikel speichern", "preview" => "Vorschau", "showpreview" => "Vorschau zeigen", "blockedtitle" => "Benutzer ist blockiert", "blockedtext" => "Ihr Benutzername oder Ihre IP-Adresse wurde von $1 blockiert. -Als Grund wurde angegeben:
    $2

    Bitte kontaktieren Sie den Administrator, um ber die Blockierung zu sprechen.", +Als Grund wurde angegeben:
    $2

    Bitte kontaktieren Sie den Administrator, um über die Blockierung zu sprechen.", "whitelistedittitle" => "Zum Bearbeiten ist es erforderlich angemeldet zu sein", -"whitelistedittext" => "Sie mssen sich [[Spezial:Userlogin|hier anmelden]] um Artikel bearbeiten zu knnen.", +"whitelistedittext" => "Sie müssen sich [[Spezial:Userlogin|hier anmelden]] um Artikel bearbeiten zu können.", "whitelistreadtitle" => "Zum Lesen ist es erforderlich angemeldet zu sein", -"whitelistreadtext" => "Sie mssen sich [[Spezial:Userlogin|hier anmelden]] um Artikel lesen zu knnen.", +"whitelistreadtext" => "Sie müssen sich [[Spezial:Userlogin|hier anmelden]] um Artikel lesen zu können.", "whitelistacctitle" => "Sie sind nicht berechtigt einen Account zu erzeugen", -"whitelistacctext" => "Um in diesem Wiki Accounts anlegen zu drfen mssen Sie sich [[Spezial:Userlogin|hier anmelden]] und die ntigen Berechtigungen haben.", +"whitelistacctext" => "Um in diesem Wiki Accounts anlegen zu dürfen müssen Sie sich [[Spezial:Userlogin|hier anmelden]] und die nötigen Berechtigungen haben.", "loginreqtitle" => "Anmeldung erforderlich", -"loginreqtext" => "Sie mssen sich [[Spezial:Userlogin|anmelden]], um andere Seiten betrachten zu knnen.", +"loginreqtext" => "Sie müssen sich [[Spezial:Userlogin|anmelden]], um andere Seiten betrachten zu können.", "accmailtitle" => "Passwort wurde verschickt.", "accmailtext" => "Das Passwort von $1 wurde an $2 geschickt.", "newarticle" => "(Neu)", -"newarticletext" => "Hier den Text des neuen Artikels eintragen.\nBitte nur in ganzen Stzen schreiben und keine urheberrechtsgeschtzten Texte anderer kopieren.", -"anontalkpagetext" => "---- ''Dies ist die Diskussions-Seite eines nicht angemeldeten Benutzers. Wir mssen hier die numerische [[IP-Adresse]] zur Identifizierung verwenden. Eine solche Adresse kann nacheinander von mehreren Benutzern verwendet werden. Wenn Sie ein anonymer Benutzer sind und denken, dass irrelevante Kommentare an Sie gerichtet wurden, [[Spezial:Userlogin|melden Sie sich bitte - an]], um zuknftige Verwirrung zu vermeiden. ''", -"noarticletext" => "(Dieser Artikel enthlt momentan keinen Text)", -'usercssjs' => "'''Beachten Sie:''' Nach dem Speichern mssen Sie ihrem Browser sagen, die neue Version zu laden: '''Mozilla:''' Klick auf ''Neu laden''(oder ''Strg-R''), '''IE / Opera:''' ''Strg-F5'', '''Safari:''' ''Cmd-r'', '''Konqueror''' ''Strg-R''.", +"newarticletext" => "Hier den Text des neuen Artikels eintragen.\nBitte nur in ganzen Sätzen schreiben und keine urheberrechtsgeschützten Texte anderer kopieren.", +"anontalkpagetext" => "---- ''Dies ist die Diskussions-Seite eines nicht angemeldeten Benutzers. Wir müssen hier die numerische [[IP-Adresse]] zur Identifizierung verwenden. Eine solche Adresse kann nacheinander von mehreren Benutzern verwendet werden. Wenn Sie ein anonymer Benutzer sind und denken, dass irrelevante Kommentare an Sie gerichtet wurden, [[Spezial:Userlogin|melden Sie sich bitte + an]], um zukünftige Verwirrung zu vermeiden. ''", +"noarticletext" => "(Dieser Artikel enthält momentan keinen Text)", +'usercssjs' => "'''Beachten Sie:''' Nach dem Speichern müssen Sie ihrem Browser sagen, die neue Version zu laden: '''Mozilla:''' Klick auf ''Neu laden''(oder ''Strg-R''), '''IE / Opera:''' ''Strg-F5'', '''Safari:''' ''Cmd-r'', '''Konqueror''' ''Strg-R''.", 'usercsspreview' => "== Vorschau ihres Benutzer-CSS. == -'''Beachten Sie:''' Nach dem Speichern mssen Sie ihrem Browser sagen, die neue Version zu laden: '''Mozilla:''' Klick auf ''Neu laden''(oder ''Strg-R''), '''IE / Opera:''' ''Strg-F5'', '''Safari:''' ''Cmd-r'', '''Konqueror''' ''Strg-R''.", +'''Beachten Sie:''' Nach dem Speichern müssen Sie ihrem Browser sagen, die neue Version zu laden: '''Mozilla:''' Klick auf ''Neu laden''(oder ''Strg-R''), '''IE / Opera:''' ''Strg-F5'', '''Safari:''' ''Cmd-r'', '''Konqueror''' ''Strg-R''.", 'userjspreview' => "== Vorschau Ihres Benutzer-Javascript. == -'''Beachten Sie:''' Nach dem Speichern mssen Sie ihrem Browser sagen, die neue Version zu laden: '''Mozilla:''' Klick auf ''Neu laden''(oder ''Strg-R''), '''IE / Opera:''' ''Strg-F5'', '''Safari:''' ''Cmd-r'', '''Konqueror''' ''Strg-R''.", +'''Beachten Sie:''' Nach dem Speichern müssen Sie ihrem Browser sagen, die neue Version zu laden: '''Mozilla:''' Klick auf ''Neu laden''(oder ''Strg-R''), '''IE / Opera:''' ''Strg-F5'', '''Safari:''' ''Cmd-r'', '''Konqueror''' ''Strg-R''.", 'usercssjsyoucanpreview' => "Tipp: Benutzen Sie den Vorschau-Button, um Ihr neues css/js vor dem Speichern zu testen.", -"updated" => "(Gendert)", +"updated" => "(Geändert)", "note" => "Hinweis: ", "previewnote" => "Dies ist nur eine Vorschau, der Artikel wurde noch nicht gespeichert!", "previewconflict" => "Diese Vorschau gibt den Inhalt des oberen Textfeldes wieder; so wird der Artikel aussehen, wenn Sie jetzt speichern.", @@ -427,49 +437,49 @@ Als Grund wurde angegeben:
    $2

    Bitte kontaktieren Sie den Administrator, um "sectionedit" => " (Absatz)", "commentedit" => " (Kommentar)", "editconflict" => "Bearbeitungs-Konflikt: $1", -"explainconflict" => "Jemand anders hat diesen Artikel gendert, nachdem Sie angefangen haben, ihn zu bearbeiten. -Das obere Textfeld enthlt den aktuellen Artikel. -Das untere Textfeld enthlt Ihre nderungen. -Bitte fgen Sie Ihre nderungen in das obere Textfeld ein. +"explainconflict" => "Jemand anders hat diesen Artikel geändert, nachdem Sie angefangen haben, ihn zu bearbeiten. +Das obere Textfeld enthält den aktuellen Artikel. +Das untere Textfeld enthält Ihre Änderungen. +Bitte fügen Sie Ihre Änderungen in das obere Textfeld ein. Nur der Inhalt des oberen Textfeldes wird gespeichert, wenn Sie auf \"Speichern\" klicken!\n

    ", "yourtext" => "Ihr Text", "storedversion" => "Gespeicherte Version", "editingold" => "ACHTUNG: Sie bearbeiten eine alte Version dieses Artikels. -Wenn Sie speichern, werden alle neueren Versionen berschrieben.\n", +Wenn Sie speichern, werden alle neueren Versionen überschrieben.\n", "yourdiff" => "Unterschiede", "copyrightwarning" => " -Bitte kopieren Sie keine Webseiten, die nicht Ihre eigenen sind, benutzen Sie keine urheberrechtlich geschtzten Werke ohne Erlaubnis des Copyright-Inhabers! -

    Sie geben uns hiermit ihre Zusage, dass Sie den Text selbst verfasst haben, dass der Text Allgemeingut (public domain) ist, oder dass der Copyright-Inhaber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders verffentlicht wurde, weisen Sie bitte auf der 'Diskussion:'-Seite darauf hin. -

    Bitte beachten Sie, dass alle {$wgSitename}-Beitrge automatisch unter der \"GNU Freie Dokumentationslizenz\" stehen. Falls Sie nicht mchten, dass Ihre Arbeit hier von anderen verndert und verbreitet wird, dann drcken Sie nicht auf \"Speichern\".", -"longpagewarning" => "WARNUNG: Diese Seite ist $1KB gro; einige Browser knnten Probleme haben, Seiten zu bearbeiten, die grer als 32KB sind. -berlegen Sie bitte, ob eine Aufteilung der Seite in kleinere Abschnitte mglich ist.", -"readonlywarning" => "WARNUNG: Die Datenbank wurde whrend dem ndern der -Seite fr Wartungsarbeiten gesperrt, so dass Sie die Seite im Moment nicht -speichern knnen. Sichern Sie sich den Text und versuchen Sie die nderungen -spter einzuspielen.", +Bitte kopieren Sie keine Webseiten, die nicht Ihre eigenen sind, benutzen Sie keine urheberrechtlich geschützten Werke ohne Erlaubnis des Copyright-Inhabers! +

    Sie geben uns hiermit ihre Zusage, dass Sie den Text selbst verfasst haben, dass der Text Allgemeingut (public domain) ist, oder dass der Copyright-Inhaber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weisen Sie bitte auf der 'Diskussion:'-Seite darauf hin. +

    Bitte beachten Sie, dass alle {$wgSitename}-Beiträge automatisch unter der \"GNU Freie Dokumentationslizenz\" stehen. Falls Sie nicht möchten, dass Ihre Arbeit hier von anderen verändert und verbreitet wird, dann drücken Sie nicht auf \"Speichern\".", +"longpagewarning" => "WARNUNG: Diese Seite ist $1KB groß; einige Browser könnten Probleme haben, Seiten zu bearbeiten, die größer als 32KB sind. +Überlegen Sie bitte, ob eine Aufteilung der Seite in kleinere Abschnitte möglich ist.", +"readonlywarning" => "WARNUNG: Die Datenbank wurde während dem Ändern der +Seite für Wartungsarbeiten gesperrt, so dass Sie die Seite im Moment nicht +speichern können. Sichern Sie sich den Text und versuchen Sie die Änderungen +später einzuspielen.", "protectedpagewarning" => "WARNUNG: Diese Seite wurde gesperrt, so dass sie nur Benutzer mit Sysop-Rechten bearbeitet werden kann. Beachten Sie bitte die -Regeln fr geschtzte Seiten.", +Regeln für geschützte Seiten.", # History pages # -"revhistory" => "Frhere Versionen", -"nohistory" => "Es gibt keine frheren Versionen von diesem Artikel.", -"revnotfound" => "Keine frheren Versionen gefunden", -"revnotfoundtext" => "Die Version dieses Artikels, nach der Sie suchen, konnte nicht gefunden werden. Bitte berprfen Sie die URL dieser Seite.\n", -"loadhist" => "Lade Liste mit frheren Versionen", +"revhistory" => "Frühere Versionen", +"nohistory" => "Es gibt keine früheren Versionen von diesem Artikel.", +"revnotfound" => "Keine früheren Versionen gefunden", +"revnotfoundtext" => "Die Version dieses Artikels, nach der Sie suchen, konnte nicht gefunden werden. Bitte überprüfen Sie die URL dieser Seite.\n", +"loadhist" => "Lade Liste mit früheren Versionen", "currentrev" => "Aktuelle Version", "revisionasof" => "Version vom $1", "cur" => "Aktuell", -"next" => "Nchste", +"next" => "Nächste", "last" => "Letzte", "orig" => "Original", -"histlegend" => "Diff Auswahl: Die Boxen der gewnschten -Versionen markieren und 'Enter' drcken oder den Button unten klicken/alt-v.
    +"histlegend" => "Diff Auswahl: Die Boxen der gewünschten +Versionen markieren und 'Enter' drücken oder den Button unten klicken/alt-v.
    Legende: (Aktuell) = Unterschied zur aktuellen Version, (Letzte) = Unterschied zur vorherigen Version, -M = Kleine nderung", +M = Kleine Änderung", # Diffs # @@ -477,45 +487,45 @@ M = Kleine "loadingrev" => "lage Versionen zur Unterscheidung", "lineno" => "Zeile $1:", "editcurrent" => "Die aktuelle Version dieses Artikels bearbeiten", -'selectnewerversionfordiff' => 'Eine neuere Version zum Vergleich auswhlen', -'selectolderversionfordiff' => 'Eine ltere Version zum Vergleich auswhlen', -'compareselectedversions' => 'Gewhlte Versionen vergleichen', +'selectnewerversionfordiff' => 'Eine neuere Version zum Vergleich auswählen', +'selectolderversionfordiff' => 'Eine ältere Version zum Vergleich auswählen', +'compareselectedversions' => 'Gewählte Versionen vergleichen', # Search results # "searchresults" => "Suchergebnisse", "searchhelppage" => "{$wgMetaNamespace}:Suche", "searchingwikipedia" => "{$wgSitename} durchsuchen", -"searchresulttext" => "Fr mehr Information ber {$wgSitename}, siehe $1.", -"searchquery" => "Fr die Suchanfrage \"$1\"", +"searchresulttext" => "Für mehr Information über {$wgSitename}, siehe $1.", +"searchquery" => "Für die Suchanfrage \"$1\"", "badquery" => "Falsche Suchanfrage", "badquerytext" => "Wir konnten Ihre Suchanfrage nicht verarbeiten. -Vermutlich haben Sie versucht, ein Wort zu suchen, das krzer als zwei Buchstaben ist. +Vermutlich haben Sie versucht, ein Wort zu suchen, das kürzer als zwei Buchstaben ist. Dies funktioniert im Moment noch nicht. -Mglicherweise haben Sie auch die Anfrage falsch formuliert, z.B. +Möglicherweise haben Sie auch die Anfrage falsch formuliert, z.B. \"Lohn und und Steuern\". Bitte versuchen Sie eine anders formulierte Anfrage.", -"matchtotals" => "Die Anfrage \"$1\" stimmt mit $2 Artikelberschriften -und dem Text von $3 Artikeln berein.", +"matchtotals" => "Die Anfrage \"$1\" stimmt mit $2 Artikelüberschriften +und dem Text von $3 Artikeln überein.", "nogomatch" => "Es existiert kein Artikel mit diesem Namen. Bitte versuchen Sie die Volltextsuche oder legen Sie den Artikel neu an. ", -"titlematches" => "bereinstimmungen mit berschriften", -"notitlematches" => "Keine bereinstimmungen", -"textmatches" => "bereinstimmungen mit Texten", -"notextmatches" => "Keine bereinstimmungen", +"titlematches" => "Übereinstimmungen mit Überschriften", +"notitlematches" => "Keine Übereinstimmungen", +"textmatches" => "Übereinstimmungen mit Texten", +"notextmatches" => "Keine Übereinstimmungen", "prevn" => "vorherige $1", -"nextn" => "nchste $1", +"nextn" => "nächste $1", "viewprevnext" => "Zeige ($1) ($2) ($3).", "showingresults" => "Hier sind $1 Ergebnisse, beginnend mit #$2.", "showingresultsnum" => "Hier sind $3 Ergebnisse, beginnend mit #$2.", "nonefound" => "Hinweis: -Erfolglose Suchanfragen werden hufig verursacht durch den Versuch, nach 'gewhnlichen' Worten zu suchen; diese sind nicht indiziert.", +Erfolglose Suchanfragen werden häufig verursacht durch den Versuch, nach 'gewöhnlichen' Worten zu suchen; diese sind nicht indiziert.", "powersearch" => "Suche", "powersearchtext" => " -Suche in Namensrumen :
    +Suche in Namensräumen :
    $1
    $2 Zeige auch REDIRECTs   Suche nach $3 $9", -"searchdisabled" => "

    Entschuldigung! Die Volltextsuche wurde wegen berlastung temporr deaktiviert. Derweil knnen Sie die folgende Google Suche verwenden, die allerdings nicht den aktuellen Stand wiederspiegelt.

    +"searchdisabled" => "

    Entschuldigung! Die Volltextsuche wurde wegen Überlastung temporär deaktiviert. Derweil können Sie die folgende Google Suche verwenden, die allerdings nicht den aktuellen Stand wiederspiegelt.

    ", "googlesearch" => " @@ -544,14 +554,14 @@ border=\"0\" ALT=\"Google\"> # "preferences" => "Einstellungen", "prefsnologin" => "Nicht angemeldet", -"prefsnologintext" => "Sie mssen "Sie müssen angemeldet -sein, um Ihre Einstellungen zu ndern.", +sein, um Ihre Einstellungen zu ändern.", "prefslogintext" => "Sie sind angemeldet als \"$1\". Ihre interne ID-Nummer ist $2.", -"prefsreset" => "Einstellungen wuden auf Standard zurckgesetzt.", +"prefsreset" => "Einstellungen wuden auf Standard zurückgesetzt.", "qbsettings" => "Seitenleiste", -"changepassword" => "Passwort ndern", +"changepassword" => "Passwort ändern", "skin" => "Skin", "math" => "TeX", "dateformat" => "Datumsformat", @@ -561,11 +571,11 @@ Ihre interne ID-Nummer ist $2.", "math_lexing_error" => "'Lexing'-Fehler", "math_syntax_error" => "Syntaxfehler", "saveprefs" => "Einstellungen speichern", -"resetprefs" => "Einstellungen zurcksetzen", +"resetprefs" => "Einstellungen zurücksetzen", "oldpassword" => "Altes Passwort", "newpassword" => "Neues Passwort", "retypenew" => "Neues Passwort (nochmal)", -"textboxsize" => "Textfeld-Grsse", +"textboxsize" => "Textfeld-Grösse", "rows" => "Zeilen", "columns" => "Spalten", "searchresultshead" => "Suchergebnisse", @@ -573,37 +583,37 @@ Ihre interne ID-Nummer ist $2.", "contextlines" => "Zeilen pro Treffer", "contextchars" => "Zeichen pro Zeile", "stubthreshold" => "Kurze Artikel markieren bis", -"recentchangescount" => "Anzahl \"Letzte nderungen\"", +"recentchangescount" => "Anzahl \"Letzte Änderungen\"", "savedprefs" => "Ihre Einstellungen wurden gespeichert.", "timezonelegend" => "Zeitzone", "timezonetext" => "Geben Sie die Anzahl der Stunden ein, die zwischen Ihrer Zeitzone und UTC liegen.", "localtime" => "Ortszeit", "timezoneoffset" => "Unterschied", "servertime" => "Aktuelle Zeit auf dem Server", -"guesstimezone" => "Einfgen aus dem Browser", +"guesstimezone" => "Einfügen aus dem Browser", "emailflag" => "Keine E-Mail von anderen Benutzern erhalten", -"defaultns" => "In diesen Namensrumen soll standardmig gesucht werden:", +"defaultns" => "In diesen Namensräumen soll standardmäßig gesucht werden:", # Recent changes # "changes" => "Änderungen", -"recentchanges" => "Letzte nderungen", +"recentchanges" => "Letzte Änderungen", "recentchangestext" => " Diese Seite wird beim Laden automatisch aktualisiert. Angezeigt werden Seiten, die zuletzt bearbeitet wurden, sowie die Zeit und der Name des Autors.
    Falls Sie neu bei {$wgSitename} sind, lesen Sie bitte die [[{$wgMetaNamespace}:Willkommen|Willkommensseite]] und [[{$wgMetaNamespace}:Erste Schritte|Erste Schritte]].
    -Wenn Sie mchten, dass {$wgSitename} zu einem Erfolg wird, dann fgen Sie bitte keine Texte hinzu, die dem [[{$wgMetaNamespace}:Urheberrechte beachten|Urheberrecht]] anderer unterliegen. Dies knnte dem Projekt sonst schweren Schaden zufgen.", -"rcloaderr" => "Lade Letzte nderungen", -"rcnote" => "Hier sind die letzten $1 nderungen der letzten $2 Tage. (N - Neuer Artikel; M - kleine nderung)", -"rcnotefrom" => "Dies sind die nderungen seit $2 (bis zu $1 gezeigt).", -"rclistfrom" => "Zeige neue nderungen seit $1", -"rclinks" => "Zeige die letzten $1 nderungen; zeige die letzten $2 Tage.", +Wenn Sie möchten, dass {$wgSitename} zu einem Erfolg wird, dann fügen Sie bitte keine Texte hinzu, die dem [[{$wgMetaNamespace}:Urheberrechte beachten|Urheberrecht]] anderer unterliegen. Dies könnte dem Projekt sonst schweren Schaden zufügen.", +"rcloaderr" => "Lade Letzte Änderungen", +"rcnote" => "Hier sind die letzten $1 Änderungen der letzten $2 Tage. (N - Neuer Artikel; M - kleine Änderung)", +"rcnotefrom" => "Dies sind die Änderungen seit $2 (bis zu $1 gezeigt).", +"rclistfrom" => "Zeige neue Änderungen seit $1", +"rclinks" => "Zeige die letzten $1 Änderungen; zeige die letzten $2 Tage.", "diff" => "Unterschied", "hist" => "Versionen", "hide" => "Ausblenden", "show" => "Einblenden", "tableform" => "Tabelle", "listform" => "Liste", -"nchanges" => "$1 nderungen", +"nchanges" => "$1 Änderungen", "minoreditletter" => "M", "newpageletter" => "N", @@ -614,11 +624,11 @@ Wenn Sie m "uploadbtn" => "Dateien hochladen", "uploadlink" => "Bilder hochladen", "reupload" => "Erneut hochladen", -"reuploaddesc" => "Zurck zur Hochladen-Seite.", +"reuploaddesc" => "Zurück zur Hochladen-Seite.", "uploadnologin" => "Nicht angemeldet", -"uploadnologintext" => "Sie mssen "Sie müssen angemeldet sein -um Dateien hochladen zu knnen.", +um Dateien hochladen zu können.", "uploadfile" => "Datei hochladen", "uploaderror" => "Fehler beim Hochladen", "uploadtext" => " @@ -628,15 +638,15 @@ gehen Sie zu der Benutzen Sie das Formular, um neue Bilder hochzuladen und sie in Artikeln zu verwenden. In den meisten Browsern werden Sie ein \"Durchsuchen\"-Feld sehen, -das einen Standard-Dateidialog ffnet. +das einen Standard-Dateidialog öffnet. Suchen Sie sich eine Datei aus. Die Datei wird dann im Textfeld angezeigt. -Besttigen Sie dann die Copyright-Vereinbarung. -Schlielich drcken Sie den \"Hochladen\"-Knopf. +Bestätigen Sie dann die Copyright-Vereinbarung. +Schließlich drücken Sie den \"Hochladen\"-Knopf. Dies kann eine Weile dauern, besonders bei einer langsamen Internet-Verbindung. -

    Fr Photos wird das JPEG-Format, fr Zeichnungen und Symbole das PNG-Format bevorzugt. +

    Für Photos wird das JPEG-Format, für Zeichnungen und Symbole das PNG-Format bevorzugt. Um ein Bild in einem Artikel zu verwenden, schreiben Sie an Stelle des Bildes [[bild:datei.jpg]] oder [[bild:datei.jpg|Beschreibung]]. -

    Bitte beachten Sie, dass, genau wie bei den Artikeln, andere Benutzer Ihre Dateien lschen oder verndern knnen.", +

    Bitte beachten Sie, dass, genau wie bei den Artikeln, andere Benutzer Ihre Dateien löschen oder verändern können.", "uploadlog" => "Datei-Logbuch", "uploadlogpage" => "Datei-Logbuch", "uploadlogpagetext" => "Hier ist die Liste der letzten hochgeladenen Dateien. @@ -644,25 +654,25 @@ Alle Zeiten sind UTC.

    ", -"uploadlogtext" => "Hochgeladene und gelschte Dateien werden im $1 verzeichnet.", +"uploadlogtext" => "Hochgeladene und gelöschte Dateien werden im $1 verzeichnet.", "filename" => "Dateiname", "filedesc" => "Beschreibung", "filestatus" => "Copyright-Status", "filesource" => "Quelle", -"affirmation" => "Hiermit besttige ich, dass ich das Copyright dieser Datei habe, und diese hiermit unter $1 verffentliche, bzw. dass die Datei 'Public Domain' ist.", +"affirmation" => "Hiermit bestätige ich, dass ich das Copyright dieser Datei habe, und diese hiermit unter $1 veröffentliche, bzw. dass die Datei 'Public Domain' ist.", "copyrightpage" => "{$wgMetaNamespace}:Copyright", "copyrightpagename" => "{$wgSitename} copyright", "uploadedfiles" => "Hochgeladene Dateien", -"noaffirmation" => "Sie mssen besttigen, dass das Hochladen der Datei keine Copyright-Verletzung darstellt.", +"noaffirmation" => "Sie müssen bestätigen, dass das Hochladen der Datei keine Copyright-Verletzung darstellt.", "ignorewarning" => "Warnung ignorieren und Datei trotzdem speichern.", -"minlength" => "Bilddateien mssen mindestens drei Buchstaben haben.", -"badfilename" => "Der Bildname wurde in \"$1\" gendert.", +"minlength" => "Bilddateien müssen mindestens drei Buchstaben haben.", +"badfilename" => "Der Bildname wurde in \"$1\" geändert.", "badfiletype" => "\".$1\" ist kein empfohlenes Dateiformat.", -"largefile" => "Bitte keine Bilder ber 100 KByte hochladen.", +"largefile" => "Bitte keine Bilder über 100 KByte hochladen.", "successfulupload" => "Erfolgreich hochgeladen", "fileuploaded" => "Die Datei \"$1\" wurde erfolgreich hochgeladen. Bitte -verwenden Sie diesen ($2) Link zur Beschreibungsseite und fllen Sie die -Informationen ber die Datei aus, insbesondere seine Herkunft, von wem und wann es +verwenden Sie diesen ($2) Link zur Beschreibungsseite und füllen Sie die +Informationen über die Datei aus, insbesondere seine Herkunft, von wem und wann es gemacht wurde und besondere Angaben zum Copyright, falls notwendig.", "uploadwarning" => "Warnung", "savefile" => "Datei speichern", @@ -679,15 +689,15 @@ gemacht wurde und besondere Angaben zum Copyright, falls notwendig.", "all" => "alle", "byname" => "nach Name", "bydate" => "nach Datum", -"bysize" => "nach Grsse", -"imgdelete" => "Lschen", +"bysize" => "nach Grösse", +"imgdelete" => "Löschen", "imgdesc" => "Beschreibung", "imglegend" => "Legende: (Beschreibung) = Zeige/Bearbeite Bildbeschreibung.", "imghistory" => "Bild-Versionen", -"revertimg" => "Zurcksetzen", -"deleteimg" => "Lschen", -"imghistlegend" => "Legende: (cur) = Dies ist das aktuelle Bild, (Lschen) = lsche -diese alte Version, (Zurcksetzen) = verwende wieder diese alte Version.", +"revertimg" => "Zurücksetzen", +"deleteimg" => "Löschen", +"imghistlegend" => "Legende: (cur) = Dies ist das aktuelle Bild, (Löschen) = lösche +diese alte Version, (Zurücksetzen) = verwende wieder diese alte Version.", "imagelinks" => "Bildverweise", "linkstoimage" => "Die folgenden Artikel benutzen dieses Bild:", "nolinkstoimage" => "Kein Artikel benutzt dieses Bild.", @@ -698,8 +708,8 @@ diese alte Version, (Zur "sitestats" => "Seitenstatistik", "userstats" => "Benutzerstatistik", "sitestatstext" => "Es gibt insgesamt $1 Seiten in der Datenbank. -Das schliesst \"Diskussion\"-Seiten, Seiten ber {$wgSitename}, extrem kurze Artikel, Weiterleitungen und andere Seiten ein, die nicht als Artikel gelten knnen. -Diese ausgenommen, gibt es $2 Seiten, die als Artikel gelten knnen.

    +Das schliesst \"Diskussion\"-Seiten, Seiten über {$wgSitename}, extrem kurze Artikel, Weiterleitungen und andere Seiten ein, die nicht als Artikel gelten können. +Diese ausgenommen, gibt es $2 Seiten, die als Artikel gelten können.

    Es wurden insgesamt $3× Seiten aufgerufen, und $4× Seiten bearbeitet. Daraus ergeben sich $5 Bearbeitungen pro Seite, und $6 Betrachtungen pro Bearbeitung.", "userstatstext" => "Es gibt $1 registrierte Benutzer. @@ -708,23 +718,23 @@ Davon haben $2 Administrator-Rechte (siehe $3).", # Maintenance Page # "maintenance" => "Wartungsseite", -"maintnancepagetext" => "Diese Seite enthlt mehrere praktische Funktionen zur tglichen Wartung von {$wgSitename}. Einige dieser Funktionen knnen die Datenbank stark beanspruchen, also bitte nicht nach jeder nderung neu laden ;-)", -"maintenancebacklink" => "Zurck zur Wartungsseite", -"disambiguations" => "Begriffsklrungsseiten", -"disambiguationspage" => "{$wgMetaNamespace}:Begriffsklrung", -"disambiguationstext" => "Die folgenden Artikel verweisen auf eine Seite zur Begriffsklrung. Sie sollten statt dessen auf die eigentlich gemeinte Seite verweisen.
    Eine Seite wird als Begriffsklrungsseite behandelt, wenn $1 auf sie verweist.
    Verweise aus Namensrumen werden hier nicht aufgelistet.", +"maintnancepagetext" => "Diese Seite enthält mehrere praktische Funktionen zur täglichen Wartung von {$wgSitename}. Einige dieser Funktionen können die Datenbank stark beanspruchen, also bitte nicht nach jeder Änderung neu laden ;-)", +"maintenancebacklink" => "Zurück zur Wartungsseite", +"disambiguations" => "Begriffsklärungsseiten", +"disambiguationspage" => "{$wgMetaNamespace}:Begriffsklärung", +"disambiguationstext" => "Die folgenden Artikel verweisen auf eine Seite zur Begriffsklärung. Sie sollten statt dessen auf die eigentlich gemeinte Seite verweisen.
    Eine Seite wird als Begriffsklärungsseite behandelt, wenn $1 auf sie verweist.
    Verweise aus Namensräumen werden hier nicht aufgelistet.", "doubleredirects" => "Doppelte Redirects", -"doubleredirectstext" => "Achtung: Diese Liste kann \"falsche Positive\" enthalten. Das ist dann der Fall, wenn ein Redirect auer dem Redirect-Verweis noch weiteren Text mit anderen Verweisen enthlt. Letztere sollten dann entfernt werden.", +"doubleredirectstext" => "Achtung: Diese Liste kann \"falsche Positive\" enthalten. Das ist dann der Fall, wenn ein Redirect außer dem Redirect-Verweis noch weiteren Text mit anderen Verweisen enthält. Letztere sollten dann entfernt werden.", "brokenredirects" => "Kaputte Redirects", "brokenredirectstext" => "Die folgenden Redirects leiten zu einem nicht existierenden Artikel weiter", "selflinks" => "Seiten, die auf sich selbst verweisen", "selflinkstext" => "Die folgenden Artikel verweisen auf sich selbst, was sie nicht sollten.", "mispeelings" => "Seiten mit falsch geschriebenen Worten", -"mispeelingstext" => "Die folgenden Seiten enthalten falsch geschriebene Worte, wie sie auf $1 definiert sind. In Klammern angegebene Worte geben die korrekte Schreibweise wieder.

    Zitate, Buchtitel u.. bitte im Originalzustand belassen, also ggf. in alter Rechtschreibung und mit Rechtschreibfehlern!", +"mispeelingstext" => "Die folgenden Seiten enthalten falsch geschriebene Worte, wie sie auf $1 definiert sind. In Klammern angegebene Worte geben die korrekte Schreibweise wieder.

    Zitate, Buchtitel u.ä. bitte im Originalzustand belassen, also ggf. in alter Rechtschreibung und mit Rechtschreibfehlern!", "mispeelingspage" => "Liste von Tippfehlern", "missinglanguagelinks" => "Fehlende Sprachverweise", "missinglanguagelinksbutton" => "Zeige fehlende Sprachverweise nach", -"missinglanguagelinkstext" => "Diese Artikel haben keinen Verweis zu ihrem Gegenstck in $1. Redirects und Unterseiten werden nicht angezeigt.", +"missinglanguagelinkstext" => "Diese Artikel haben keinen Verweis zu ihrem Gegenstück in $1. Redirects und Unterseiten werden nicht angezeigt.", # Miscellaneous special pages @@ -734,42 +744,42 @@ Davon haben $2 Administrator-Rechte (siehe $3).", "unusedimages" => "Verwaiste Bilder", "popularpages" => "Beliebte Seiten", "nviews" => "$1 Abfragen", -"wantedpages" => "Gewnschte Seiten", +"wantedpages" => "Gewünschte Seiten", "nlinks" => "$1 Verweise", "allpages" => "Alle Artikel", -"randompage" => "Zuflliger Artikel", +"randompage" => "Zufälliger Artikel", "shortpages" => "Kurze Artikel", "longpages" => "Lange Artikel", "listusers" => "Benutzerverzeichnis", "specialpages" => "Spezialseiten", "spheading" => "Spezialseiten", -"sysopspheading" => "Spezialseiten fr Sysops", -"developerspheading" => "Spezialseiten fr Entwickler", -"protectpage" => "Artikel schtzen", +"sysopspheading" => "Spezialseiten für Sysops", +"developerspheading" => "Spezialseiten für Entwickler", +"protectpage" => "Artikel schützen", "recentchangeslinked" => "Verlinkte Seiten", "rclsub" => "(auf Artikel von \"$1\")", "debug" => "Debug", "newpages" => "Neue Artikel", -"ancientpages" => "lteste Artikel", +"ancientpages" => "Älteste Artikel", "movethispage" => "Artikel verschieben", -"unusedimagestext" => "

    Bitte beachten Sie, dass andere Wikis mglicherweise einige dieser Bilder benutzen.", +"unusedimagestext" => "

    Bitte beachten Sie, dass andere Wikis möglicherweise einige dieser Bilder benutzen.", "booksources" => "Buchhandlungen", -"booksourcetext" => "Dies ist eine Liste mit Links zu Internetseiten, die neue und gebrauchte Bcher verkaufen. Dort kann es auch weitere Informationen ber die Bcher geben, die Sie interessieren. {$wgSitename} ist mit keinem dieser Anbieter geschftlich verbunden.", +"booksourcetext" => "Dies ist eine Liste mit Links zu Internetseiten, die neue und gebrauchte Bücher verkaufen. Dort kann es auch weitere Informationen über die Bücher geben, die Sie interessieren. {$wgSitename} ist mit keinem dieser Anbieter geschäftlich verbunden.", "alphaindexline" => "$1 bis $2", # Email this user # "mailnologin" => "Sie sind nicht angemeldet.", -"mailnologintext" => "Sie mssen "Sie müssen angemeldet sein -und eine gltige E-Mail-Adresse haben, um anderen Benutzern E-Mail zu schicken.", +und eine gültige E-Mail-Adresse haben, um anderen Benutzern E-Mail zu schicken.", "emailuser" => "E-Mail an diesen Benutzer", "emailpage" => "E-Mail an Benutzer", -"emailpagetext" => "Wenn dieser Benutzer eine gltige E-Mail-Adresse angegeben hat, knnen Sie ihm mit dem untenstehenden Formular eine E-Mail senden. Als Absender wird die E-Mail-Adresse aus Ihren Einstellungen eingetragen, damit der Benutzer Ihnen antworten kann.", -"usermailererror" => "Das Mail-Objekt gab einen Fehler zurck: ", +"emailpagetext" => "Wenn dieser Benutzer eine gültige E-Mail-Adresse angegeben hat, können Sie ihm mit dem untenstehenden Formular eine E-Mail senden. Als Absender wird die E-Mail-Adresse aus Ihren Einstellungen eingetragen, damit der Benutzer Ihnen antworten kann.", +"usermailererror" => "Das Mail-Objekt gab einen Fehler zurück: ", "defemailsubject" => "{{SITENAME}} e-mail", "noemailtitle" => "Keine E-Mail-Adresse", -"noemailtext" => "Dieser Benutzer hat keine gltige E-Mail-Adresse angegeben, oder mchte keine E-Mail von anderen Benutzern empfangen.", +"noemailtext" => "Dieser Benutzer hat keine gültige E-Mail-Adresse angegeben, oder möchte keine E-Mail von anderen Benutzern empfangen.", "emailfrom" => "Von", "emailto" => "An", "emailsubject" => "Betreff", @@ -782,18 +792,18 @@ und eine g # Beobachtungsliste # "watchlist" => "Beobachtungsliste", -"watchlistsub" => "(fr Benutzer \"$1\")", -"nowatchlist" => "Sie haben keine Eintrge auf Ihrer Beobachtungsliste.", +"watchlistsub" => "(für Benutzer \"$1\")", +"nowatchlist" => "Sie haben keine Einträge auf Ihrer Beobachtungsliste.", "watchnologin" => "Sie sind nicht angemeldet", -"watchnologintext" => "Sie mssen "Sie müssen angemeldet sein, um Ihre Beobachtungsliste zu bearbeiten.", -"addedwatch" => "Zur Beobachtungsliste hinzugefgt", +"addedwatch" => "Zur Beobachtungsliste hinzugefügt", "addedwatchtext" => "Der Artikel \"$1\" wurde zu Ihrer Beobachtungsliste hinzugefgt. -Sptere nderungen an diesem Artikel und der zugehrigen Diskussions-Seite +wfLocalUrl( "Spezial:Watchlist" ) . "\">Beobachtungsliste hinzugefügt. +Spätere Änderungen an diesem Artikel und der zugehörigen Diskussions-Seite werden dort gelistet und der Artikel wird in der Liste der letzten nderungen +"Spezial:Recentchanges" ) . "\">Liste der letzten Änderungen fett angezeigt.

    Wenn Sie den Artikel wieder von ihrer Beobachtungsliste entfernen wollen, klicken Sie auf \"Nicht mehr beobachten\" am Ende des Artikels.", @@ -802,89 +812,89 @@ am Ende des Artikels.", "watchthispage" => "Seite beobachten", "unwatchthispage" => "Nicht mehr beobachten", "notanarticle" => "Kein Artikel", -"watchnochange" => "Keine Ihrer beobachteten Artikel wurde whrend des angezeigten Zeitraums bearbeitet.", +"watchnochange" => "Keine Ihrer beobachteten Artikel wurde während des angezeigten Zeitraums bearbeitet.", "watchdetails" => "($1 Artikel werden beobachtet (ohne Diskussionsseiten); $2 Artikel im eingestellten Zeitraum bearbeitet; $3... komplette Liste zeigen und bearbeiten.)", -"watchmethod-recent" => "berprfen der letzten Bearbeitungen fr die Beobachtungsliste", -"watchmethod-list" => "berprfen der Beobachtungsliste nach letzten Bearbeitungen", -"removechecked" => "Markierte Eintrge lschen", -"watchlistcontains" => "Ihre Beobachtungsliste enthlt $1 Seiten.", -"watcheditlist" => "Hier ist eine alphabetische Liste der von Ihnen beobachteten Seiten. Markieren Sie die Seiten die Sie von der Beobachtungsliste lschen wollen und bettigen Sie den 'markierte Eintrge lschen' Knopf am Ende der Seite.", -"removingchecked" => "Wunschgem werden die Eintrge aus der Beobachtungsliste entfernt...", -"couldntremove" => "Der Eintrag '$1' kann nicht gelscht werden...", -"iteminvalidname" => "Ploblem mit dem Eintrag '$1', ungltiger Name...", -"wlnote" => "Es folgen die letzten $1 nderungen der letzten $2 Stunden.", +"watchmethod-recent" => "überprüfen der letzten Bearbeitungen für die Beobachtungsliste", +"watchmethod-list" => "überprüfen der Beobachtungsliste nach letzten Bearbeitungen", +"removechecked" => "Markierte Einträge löschen", +"watchlistcontains" => "Ihre Beobachtungsliste enthält $1 Seiten.", +"watcheditlist" => "Hier ist eine alphabetische Liste der von Ihnen beobachteten Seiten. Markieren Sie die Seiten die Sie von der Beobachtungsliste löschen wollen und betätigen Sie den 'markierte Einträge löschen' Knopf am Ende der Seite.", +"removingchecked" => "Wunschgemäß werden die Einträge aus der Beobachtungsliste entfernt...", +"couldntremove" => "Der Eintrag '$1' kann nicht gelöscht werden...", +"iteminvalidname" => "Ploblem mit dem Eintrag '$1', ungültiger Name...", +"wlnote" => "Es folgen die letzten $1 Änderungen der letzten $2 Stunden.", "wlshowlast" => "Zeige die letzen $1 Stunden $2 Tage $3", "wlsaved" => "Dies ist eine gespeicherte Version Ihrer Beobachtungsliste.", # Delete/protect/revert # -"deletepage" => "Seite lschen", -"confirm" => "Besttigen", +"deletepage" => "Seite löschen", +"confirm" => "Bestätigen", "excontent" => "Alter Inhalt:", "exbeforeblank" => "Inhalt vor dem Leeren der Seite:", "exblank" => "Seite war leer", -"confirmdelete" => "Lschung besttigen", -"deletesub" => "(Lsche \"$1\")", -"historywarning" => "WARNUNG: Die Seite die Sie zu lschen gedenken hat +"confirmdelete" => "Löschung bestätigen", +"deletesub" => "(Lösche \"$1\")", +"historywarning" => "WARNUNG: Die Seite die Sie zu löschen gedenken hat eine Versionsgeschichte: ", -"confirmdeletetext" => "Sie sind dabei, einen Artikel oder ein Bild und alle lteren Versionen permanent aus der Datenbank zu lschen. -Bitte besttigen Sie Ihre Absicht, dies zu tun, dass Sie sich der Konsequenzen bewusst sind, und dass Sie in bereinstimmung mit unseren [[{$wgMetaNamespace}:Leitlinien|Leitlinien]] handeln.", -"confirmcheck" => "Ja, ich mchte den Lschvorgang fortsetzen.", +"confirmdeletetext" => "Sie sind dabei, einen Artikel oder ein Bild und alle älteren Versionen permanent aus der Datenbank zu löschen. +Bitte bestätigen Sie Ihre Absicht, dies zu tun, dass Sie sich der Konsequenzen bewusst sind, und dass Sie in Übereinstimmung mit unseren [[{$wgMetaNamespace}:Leitlinien|Leitlinien]] handeln.", +"confirmcheck" => "Ja, ich möchte den Löschvorgang fortsetzen.", "actioncomplete" => "Aktion beendet", -"deletedtext" => "\"$1\" wurde gelscht. -Im $2 finden Sie eine Liste der letzten Lschungen.", -"deletedarticle" => "\"$1\" gelscht", -"dellogpage" => "Lsch-Logbuch", -"dellogpagetext" => "Hier ist eine Liste der letzten Lschungen (UTC). +"deletedtext" => "\"$1\" wurde gelöscht. +Im $2 finden Sie eine Liste der letzten Löschungen.", +"deletedarticle" => "\"$1\" gelöscht", +"dellogpage" => "Lösch-Logbuch", +"dellogpagetext" => "Hier ist eine Liste der letzten Löschungen (UTC).

    ", -"deletionlog" => "Lsch-Logbuch", -"reverted" => "Auf eine alte Version zurckgesetzt", -"deletecomment" => "Grund der Lschung", -"imagereverted" => "Auf eine alte Version zurckgesetzt.", -"rollback" => "Zurcknahme der nderungen", +"deletionlog" => "Lösch-Logbuch", +"reverted" => "Auf eine alte Version zurückgesetzt", +"deletecomment" => "Grund der Löschung", +"imagereverted" => "Auf eine alte Version zurückgesetzt.", +"rollback" => "Zurücknahme der Änderungen", 'rollback_short' => 'Rollback', "rollbacklink" => "Rollback", -"rollbackfailed" => "Zurcknahme gescheitert", -"cantrollback" => "Die nderung kann nicht zurckgenommen werden; der +"rollbackfailed" => "Zurücknahme gescheitert", +"cantrollback" => "Die Änderung kann nicht zurückgenommen werden; der letzte Autor ist der einzige.", -"alreadyrolled" => "Die Zurcknahme des Artikels [[$1]] von [[Benutzer:$2|$2]] -([[Benutzer Diskussion:$2|Diskussion]]) ist nicht mglich, da eine andere -nderung oder Rcknahme erfolgt ist. +"alreadyrolled" => "Die Zurücknahme des Artikels [[$1]] von [[Benutzer:$2|$2]] +([[Benutzer Diskussion:$2|Diskussion]]) ist nicht möglich, da eine andere +Änderung oder Rücknahme erfolgt ist. -Die letzte nderung ist von [[Benutzer:$3|$3]] +Die letzte Änderung ist von [[Benutzer:$3|$3]] ([[Benutzer Diskussion:$3|Diskussion]])", # only shown if there is an edit comment -"editcomment" => "Der nderungskommentar war: \"$1\".", -"revertpage" => "Wiederhergestellt zur letzten nderung von $1", +"editcomment" => "Der Änderungskommentar war: \"$1\".", +"revertpage" => "Wiederhergestellt zur letzten Änderung von $1", # Undelete -"undelete" => "Gelschte Seite wiederherstellen", -"undeletepage" => "Gelschte Seiten wiederherstellen", -"undeletepagetext" => "Die folgenden Seiten wurden gelscht, sind aber immer noch -gespeichert und knnen wiederhergestellt werden.", -"undeletearticle" => "Gelschten Artikel wiederherstellen", +"undelete" => "Gelöschte Seite wiederherstellen", +"undeletepage" => "Gelöschte Seiten wiederherstellen", +"undeletepagetext" => "Die folgenden Seiten wurden gelöscht, sind aber immer noch +gespeichert und können wiederhergestellt werden.", +"undeletearticle" => "Gelöschten Artikel wiederherstellen", "undeleterevisions" => "$1 Versionen archiviert", "undeletehistory" => "Wenn Sie diese Seite wiederherstellen, werden auch alle alten -Versionen wiederhergestellt. Wenn seit der Lschung ein neuer Artikel gleichen +Versionen wiederhergestellt. Wenn seit der Löschung ein neuer Artikel gleichen Namens erstellt wurde, werden die wiederhergestellten Versionen als alte Versionen dieses Artikels erscheinen.", -"undeleterevision" => "Gelschte Version vom $1", +"undeleterevision" => "Gelöschte Version vom $1", "undeletebtn" => "Wiederherstellen!", "undeletedarticle" => "\"$1\" wiederhergestellt", "undeletedtext" => "Der Artikel [[$1]] wurde erfolgreich wiederhergestellt.", # Contributions # -"contributions" => "Benutzerbeitrge", -"mycontris" => "Meine Beitrge", -"contribsub" => "Fr $1", -"nocontribs" => "Es wurden keine nderungen fr diese Kriterien gefunden.", -"ucnote" => "Dies sind die letzten $1 Beitrge des Benutzers in den letzten $2 Tagen.", -"uclinks" => "Zeige die letzten $1 Beitrge; zeige die letzten $2 Tage.", +"contributions" => "Benutzerbeiträge", +"mycontris" => "Meine Beiträge", +"contribsub" => "Für $1", +"nocontribs" => "Es wurden keine Änderungen für diese Kriterien gefunden.", +"ucnote" => "Dies sind die letzten $1 Beiträge des Benutzers in den letzten $2 Tagen.", +"uclinks" => "Zeige die letzten $1 Beiträge; zeige die letzten $2 Tage.", "uctop" => " (top)" , # What links here @@ -901,13 +911,13 @@ dieses Artikels erscheinen.", # "blockip" => "IP-Adresse blockieren", "blockiptext" => "Benutzen Sie das Formular, um eine IP-Adresse zu blockieren. -Dies sollte nur erfolgen, um Vandalismus zu verhindern, in bereinstimmung mit unseren [[{$wgMetaNamespace}:Leitlinien|Leitlinien]]. -Bitte tragen Sie den Grund fr die Blockade ein.", +Dies sollte nur erfolgen, um Vandalismus zu verhindern, in Übereinstimmung mit unseren [[{$wgMetaNamespace}:Leitlinien|Leitlinien]]. +Bitte tragen Sie den Grund für die Blockade ein.", "ipaddress" => "IP-Adresse", "ipbreason" => "Grund", "ipbsubmit" => "Adresse blockieren", "badipaddress" => "Die IP-Adresse hat ein falsches Format.", -"noblockreason" => "Sie mssen einen Grund fr die Blockade angeben.", +"noblockreason" => "Sie müssen einen Grund für die Blockade angeben.", "blockipsuccesssub" => "Blockade erfolgreich", "blockipsuccesstext" => "Die IP-Adresse \"$1\" wurde blockiert.
    Auf [[Spezial:Ipblocklist|IP block list]] ist eine Liste der Blockaden.", @@ -919,20 +929,20 @@ Bitte tragen Sie den Grund f "blocklistline" => "$1, $2 blockierte $3", "blocklink" => "blockieren", "unblocklink" => "freigeben", -"contribslink" => "Beitrge", +"contribslink" => "Beiträge", "autoblocker" => "Automatische Blockierung, da Sie eine IP-Adresse benutzen mit \"$1\". Grund: \"$2\".", # Developer tools # "lockdb" => "Datenbank sperren", "unlockdb" => "Datenbank freigeben", -"lockdbtext" => "Mit dem Sperren der Datenbank werden alle nderungen an Benutzereinstellungen, watchlisten, Artikeln usw. verhindert. Bitte besttigen Sie Ihre Absicht, die Datenbank zu sperren.", -"unlockdbtext" => "Das Aufheben der Datenbank-Sperre wird alle nderungen wieder zulassen. Bitte besttigen Sie Ihre Absicht, die Sperrung aufzuheben.", -"lockconfirm" => "Ja, ich mchte die Datenbank sperren.", -"unlockconfirm" => "Ja, ich mchte die Datenbank freigeben.", +"lockdbtext" => "Mit dem Sperren der Datenbank werden alle Änderungen an Benutzereinstellungen, watchlisten, Artikeln usw. verhindert. Bitte bestätigen Sie Ihre Absicht, die Datenbank zu sperren.", +"unlockdbtext" => "Das Aufheben der Datenbank-Sperre wird alle Änderungen wieder zulassen. Bitte bestätigen Sie Ihre Absicht, die Sperrung aufzuheben.", +"lockconfirm" => "Ja, ich möchte die Datenbank sperren.", +"unlockconfirm" => "Ja, ich möchte die Datenbank freigeben.", "lockbtn" => "Datenbank sperren", "unlockbtn" => "Datenbank freigeben", -"locknoconfirm" => "Sie haben das Besttigungsfeld nicht markiert.", +"locknoconfirm" => "Sie haben das Bestätigungsfeld nicht markiert.", "lockdbsuccesssub" => "Datenbank wurde erfolgreich gesperrt", "unlockdbsuccesssub" => "Datenbank wurde erfolgreich freigegeben", "lockdbsuccesstext" => "Die {$wgSitename}-Datenbank wurde gesperrt. @@ -942,30 +952,30 @@ Bitte tragen Sie den Grund f # SQL query # "asksql" => "SQL-Abfrage", -"asksqltext" => "Benutzen Sie das Formular fr eine direkte +"asksqltext" => "Benutzen Sie das Formular für eine direkte Datenbank-Abfrage. Benutze einzelne Hochkommata ('so'), um Text zu begrenzen. -Bitte diese Funktion vorsichtig benutzen! Das abschlieende ';' wird -automatisch ergnzt.", +Bitte diese Funktion vorsichtig benutzen! Das abschließende ';' wird +automatisch ergänzt.", "sqlislogged" => "Bitte beachten Sie das alle SQL-Abfrage mitprotokolliert werden.", "sqlquery" => "Abfrage eingeben", "querybtn" => "Abfrage starten", -"selectonly" => "Andere Abfragen als \"SELECT\" knnen nur von Entwicklern benutzt werden.", +"selectonly" => "Andere Abfragen als \"SELECT\" können nur von Entwicklern benutzt werden.", "querysuccessful" => "Abfrage erfolgreich", # Move page # "movepage" => "Artikel verschieben", -"movepagetext" => "Mit diesem Formular knnen Sie einen Artikel umbenennen, mitsamt allen Versionen. Der alte Titel wird zum neuen weiterleiten. Verweise auf den alten Titel werden nicht gendert, und die Diskussionsseite wird auch nicht mitverschoben.", -"movepagetalktext" => "Die dazugehrige Diskussionsseite wird, sofern vorhanden, mitverschoben, '''es sei denn:''' +"movepagetext" => "Mit diesem Formular können Sie einen Artikel umbenennen, mitsamt allen Versionen. Der alte Titel wird zum neuen weiterleiten. Verweise auf den alten Titel werden nicht geändert, und die Diskussionsseite wird auch nicht mitverschoben.", +"movepagetalktext" => "Die dazugehörige Diskussionsseite wird, sofern vorhanden, mitverschoben, '''es sei denn:''' *Sie verschieben die Seite in einen anderen Namensraum, oder *Es existiert bereits eine Diskussionsseite mit diesem Namen, oder -*Sie whlen die untenstehende Option ab +*Sie wählen die untenstehende Option ab -In diesen Fllen mssen Sie die Seite, falls gewnscht, von Hand verschieben.", +In diesen Fällen müssen Sie die Seite, falls gewünscht, von Hand verschieben.", "movearticle" => "Artikel verschieben", "movenologin" => "Sie sind nicht angemeldet", -"movenologintext" => "Sie mssen ein registrierter Benutzer und +"movenologintext" => "Sie müssen ein registrierter Benutzer und angemeldet sein, um eine Seite zu verschieben.", "newtitle" => "Zu neuem Titel", @@ -973,63 +983,63 @@ um eine Seite zu verschieben.", "pagemovedsub" => "Verschiebung erfolgreich", "pagemovedtext" => "Artikel \"[[$1]]\" wurde nach \"[[$2]]\" verschoben.", "articleexists" => "Unter diesem Namen existiert bereits ein Artikel. -Bitte whlen Sie einen anderen Namen.", +Bitte wählen Sie einen anderen Namen.", "talkexists" => "Die Seite selbst wurde erfolgreich verschoben, aber die Diskussions-Seite nicht, da schon eine mit dem neuen Titel existiert. Bitte gleichen Sie die Inhalte von Hand ab.", "movedto" => "verschoben nach", -"movetalk" => "Die \"Diskussions\"-Seite mitverschieben, wenn mglich.", +"movetalk" => "Die \"Diskussions\"-Seite mitverschieben, wenn möglich.", "talkpagemoved" => "Die \"Diskussions\"-Seite wurde ebenfalls verschoben.", "talkpagenotmoved" => "Die \"Diskussions\"-Seite wurde nicht verschoben.", "export" => "Seiten exportieren", -"exporttext" => "Sie knnen den Text und die Bearbeitungshistorie einer bestimmten oder einer Auswahl von Seiten nach XML exportieren. Das Ergebnis kann in ein anderes Wiki mit WikiMedia Software eingespielt werden, bearbeitet oder archiviert werden.", +"exporttext" => "Sie können den Text und die Bearbeitungshistorie einer bestimmten oder einer Auswahl von Seiten nach XML exportieren. Das Ergebnis kann in ein anderes Wiki mit WikiMedia Software eingespielt werden, bearbeitet oder archiviert werden.", "exportcuronly" => "Nur die aktuelle Version der Seite exportieren", "missingimage" => "Fehlendes Bild
    $1\n", #Tooltips: 'tooltip-atom' => 'Atom-Feed von dieser Seite', -'tooltip-addsection' => 'Einen Kommentar zu dieser Seite hinzufgen. [alt-+]', +'tooltip-addsection' => 'Einen Kommentar zu dieser Seite hinzufügen. [alt-+]', 'tooltip-article' => 'Artikel betrachten [alt-a]', 'tooltip-talk' => 'Diesen Artikel diskutieren [alt-t]', -'tooltip-edit' => 'Sie knnen diesen Artikel bearbeiten. Benutzen Sie die Vorschau, bevor Sie die Seite speichern. [alt-e]', -'tooltip-viewsource' => 'Diese Seite ist geschtzt. Sie knnen ihren Quelltext betrachten. [alt-e]', -'tooltip-history' => 'ltere Versionen dieser Seite. [alt-h]', -'tooltip-protect' => 'Diese Seite schtzen [alt--]', -'tooltip-delete' => 'Diese Seite lschen [alt-d]', +'tooltip-edit' => 'Sie können diesen Artikel bearbeiten. Benutzen Sie die Vorschau, bevor Sie die Seite speichern. [alt-e]', +'tooltip-viewsource' => 'Diese Seite ist geschützt. Sie können ihren Quelltext betrachten. [alt-e]', +'tooltip-history' => 'Ältere Versionen dieser Seite. [alt-h]', +'tooltip-protect' => 'Diese Seite schützen [alt--]', +'tooltip-delete' => 'Diese Seite löschen [alt-d]', 'tooltip-undelete' => "$1 Versionen diese Artikels wieder herstellen. [alt-d]", 'tooltip-move' => 'Diese Seite verschieben. [alt-m]', -'tooltip-nomove' => 'Sie knnen diese Seite nicht verschieben', +'tooltip-nomove' => 'Sie können diese Seite nicht verschieben', 'tooltip-watch' => 'Diese Seite beobachten. [alt-w]', 'tooltip-unwatch' => 'Diese Seite nicht mehr beobachten. [alt-w]', -'tooltip-watchlist' => 'Die Liste der Artikel, die Sie auf nderungen beobachten. [alt-l]', +'tooltip-watchlist' => 'Die Liste der Artikel, die Sie auf Änderungen beobachten. [alt-l]', 'tooltip-userpage' => 'Meine Benutzerseite [alt-.]', 'tooltip-anonuserpage' => 'Die Benutzerseite Ihrer IP-Adresse [alt-.]', 'tooltip-mytalk' => 'Meine Benutzerdiskussion [alt-n]', 'tooltip-anontalk' => 'Diskussionen zu Bearbeitungen, die von dieser IP-Adresse gemacht wurden. [alt-n]', 'tooltip-preferences' => 'Meine Einstellungen', -'tooltip-mycontris' => 'Liste meiner Beitrge [alt-y]', -'tooltip-login' => 'Sie knnen sich gerne anmelden, es ist aber nicht notwendig, um Artikel zu bearbeiten. [alt-o]', +'tooltip-mycontris' => 'Liste meiner Beiträge [alt-y]', +'tooltip-login' => 'Sie können sich gerne anmelden, es ist aber nicht notwendig, um Artikel zu bearbeiten. [alt-o]', 'tooltip-logout' => 'The start button [alt-o]', 'tooltip-search' => 'Suchen [alt-f]', 'tooltip-mainpage' => 'Zur Hauptseite [alt-z]', -'tooltip-portal' => 'ber das Projekt, was Sie tun knnen, wo Sie Dinge finden knnen', -'tooltip-randompage' => 'Zuflliger Artikel [alt-x]', -'tooltip-currentevents' => 'Hintergrnde zu aktuellen Ereignissen finden', -'tooltip-sitesupport' => 'Untersttzen Sie {{SITENAME}}', +'tooltip-portal' => 'Über das Projekt, was Sie tun können, wo Sie Dinge finden können', +'tooltip-randompage' => 'Zufälliger Artikel [alt-x]', +'tooltip-currentevents' => 'Hintergründe zu aktuellen Ereignissen finden', +'tooltip-sitesupport' => 'Unterstützen Sie {{SITENAME}}', 'tooltip-help' => 'Hier bekommen Sie Hilfe.', -'tooltip-recentchanges' => 'Die letzten nderungen in diesem Wiki. [alt-r]', -'tooltip-recentchangeslinked' => 'Die letzten nderungen an Seiten, die von dieser Seite verlinkt wurden. [alt-c]', +'tooltip-recentchanges' => 'Die letzten Änderungen in diesem Wiki. [alt-r]', +'tooltip-recentchangeslinked' => 'Die letzten Änderungen an Seiten, die von dieser Seite verlinkt wurden. [alt-c]', 'tooltip-whatlinkshere' => 'Liste aller Seiten, die auf diese verweisen [alt-b]', 'tooltip-specialpages' => 'Liste aller Spezialseiten [alt-q]', 'tooltip-upload' => 'Bilder oder andere Medien hochladen [alt-u]', 'tooltip-specialpage' => 'Dies ist eine Spezialseite, die nicht bearbeitet werden kann.', -'tooltip-minoredit' => 'Diese nderung als klein markieren. [alt-i]', -'tooltip-save' => 'nderungen speichern [alt-s]', -'tooltip-preview' => 'Vorschau der nderungen an dieser Seite. Benutzen Sie dies vor dem Speichern! [alt-p]', -'tooltip-contributions' => 'Liste der beitrge dieses Benutzers.', +'tooltip-minoredit' => 'Diese Änderung als klein markieren. [alt-i]', +'tooltip-save' => 'Änderungen speichern [alt-s]', +'tooltip-preview' => 'Vorschau der Änderungen an dieser Seite. Benutzen Sie dies vor dem Speichern! [alt-p]', +'tooltip-contributions' => 'Liste der beiträge dieses Benutzers.', 'tooltip-emailuser' => 'Senden Sie eine Mail an diesen Benutzer', 'tooltip-rss' => 'RSS-Feed von dieser Seite.', -'tooltip-compareselectedversions' => 'Unterschiede zwischen zwei ausgewhlten Versionen dieser Seite vergleichen. [alt-v]', +'tooltip-compareselectedversions' => 'Unterschiede zwischen zwei ausgewählten Versionen dieser Seite vergleichen. [alt-v]', #Tastatur-Shortcuts 'accesskey-article' => 'a', @@ -1074,66 +1084,66 @@ Diskussions-Seite nicht, da schon eine mit dem neuen Titel existiert. Bitte glei 'accesskey-compareselectedversions' => 'v', "makesysoptitle" => "Mache einen Benutzer zum Administrator", -"makesysoptext" => "Diese Maske wird von Brokraten benutzt, um normale Benutzer zu Administratoren zu machen.", +"makesysoptext" => "Diese Maske wird von Bürokraten benutzt, um normale Benutzer zu Administratoren zu machen.", "makesysopname" => "Name des Benutzers:", "makesysopsubmit" => "Mache diesen Benutzer zu einem Administrator", "makesysopok" => "Benutzer \"$1\" ist nun ein Administrator.", "makesysopfail" => "Benutzer \"$1\" konnte nicht zu einem Administrator gemacht werden. (Haben Sie den Namen richtig geschrieben?)", "makesysop" => "Mache einen Benutzer zum Administrator", -"bureaucratlogentry" => "Rechte fr Benutzer \"$1\" auf \"$2\" gesetzt", +"bureaucratlogentry" => "Rechte für Benutzer \"$1\" auf \"$2\" gesetzt", "rights" => "Rechte:", "set_user_rights" => "Benutzerrechte setzen", -"user_rights_set" => "Benutzerrechte fr \"$1\" aktualisiert", -"set_rights_fail" => "Benutzerrechte fr \"$1\" konnten nicht gesetzt werden. (Haben Sie den Namen korrekt eingegeben?)", +"user_rights_set" => "Benutzerrechte für \"$1\" aktualisiert", +"set_rights_fail" => "Benutzerrechte für \"$1\" konnten nicht gesetzt werden. (Haben Sie den Namen korrekt eingegeben?)", "1movedto2" => "$1 wurde nach $2 verschoben", "allmessages" => "Alle MediaWiki-Meldungen", -"allmessagestext" => "Dies ist eine Liste aller mglichen Meldungen im MediaWiki-Namensraum.", -"thumbnail-more" => "vergrern", +"allmessagestext" => "Dies ist eine Liste aller möglichen Meldungen im MediaWiki-Namensraum.", +"thumbnail-more" => "vergrößern", "and" => "und", -"rchide" => "in $4 form; $1 kleine nderungen; $2 sekundre Namensrume; $3 mehrfache nderungen.", -"showhideminor" => "kleine nderungen $1", -"rcliu" => "$1 nderungen durch eingeloggte Benutzer", +"rchide" => "in $4 form; $1 kleine Änderungen; $2 sekundäre Namensräume; $3 mehrfache Änderungen.", +"showhideminor" => "kleine Änderungen $1", +"rcliu" => "$1 Änderungen durch eingeloggte Benutzer", "uploaddisabled" => "Entschuldigung, das Hochladen ist deaktiviert.", "deadendpages" => "Sackgassenartikel", "intl" => "InterWikiLinks", "version" => "Version", "protectlogpage" => "Seitenschutz-Logbuch", -"protectlogtext" => "Dies ist eine Liste der blockierten Seiten. Siehe [[Wikipedia:Geschtzte Seiten]] fr mehr Informationen.", -"protectedarticle" => "Artikel [[$1]] geschtzt", +"protectlogtext" => "Dies ist eine Liste der blockierten Seiten. Siehe [[Wikipedia:Geschützte Seiten]] für mehr Informationen.", +"protectedarticle" => "Artikel [[$1]] geschützt", "unprotectedarticle" => "Artikel [[$1]] freigegeben", "protectsub" =>"(Sperren von \"$1\")", -"confirmprotecttext" => "Soll diese Seite wirklich geschtzt werden?", +"confirmprotecttext" => "Soll diese Seite wirklich geschützt werden?", "ipbexpiry" => "Ablaufzeit", "blocklogpage" => "Benutzerblockaden-Logbuch", -"blocklogentry" => "blockiert [[Benutzer:$1]] - ([[Spezial:Contributions/$1|Beitrge]]) fr einen Zeitraum von: $2", -"blocklogtext" => "Dies ist ein Log ber Sperrungen und Entsperrungen von Benutzern. Automatisch geblockte IP-Adressen werden nicht erfasst. Siehe [[Special:Ipblocklist|IP block list]] fr eine Liste der gesperrten Benutzern.", +"blocklogentry" => "blockiert [[Benutzer:$1]] - ([[Spezial:Contributions/$1|Beiträge]]) für einen Zeitraum von: $2", +"blocklogtext" => "Dies ist ein Log über Sperrungen und Entsperrungen von Benutzern. Automatisch geblockte IP-Adressen werden nicht erfasst. Siehe [[Special:Ipblocklist|IP block list]] für eine Liste der gesperrten Benutzern.", "unblocklogentry" => "Blockade von [[Benutzer:$1]] aufgehoben", -"range_block_disabled" => "Die Mglichkeit, ganze Adressrume zu sperren, ist nicht aktiviert.", -"ipb_expiry_invalid" => "Die angegebeben Ablaufzeit ist ungltig.", -"ip_range_invalid" => "Ungltiger IP-Addressbereich.", -"confirmprotect" => "Sperrung besttigen", +"range_block_disabled" => "Die Möglichkeit, ganze Adressräume zu sperren, ist nicht aktiviert.", +"ipb_expiry_invalid" => "Die angegebeben Ablaufzeit ist ungültig.", +"ip_range_invalid" => "Ungültiger IP-Addressbereich.", +"confirmprotect" => "Sperrung bestätigen", "protectcomment" => "Grund der Sperrung", "unprotectsub" => "(Aufhebung der Sperrung von \"$1\")", "confirmunprotecttext" => "Wollen Sie wirklich die Sperrung dieser Seite aufheben?", -"confirmunprotect" => "Aufhebung der Sperrung besttigen", -"unprotectcomment" => "Grund fr das Aufheben der Sperrung", +"confirmunprotect" => "Aufhebung der Sperrung bestätigen", +"unprotectcomment" => "Grund für das Aufheben der Sperrung", "protectreason" => "(Bitte Grund der Sperrung angeben)", "proxyblocker" => "Proxyblocker", -"proxyblockreason" => "Ihre IP-Adresse wurde gesperrt, da sie ein offener Proxy ist. Bitte kontaktieren Sie Ihren Provider oder Ihre Systemtechnik und informieren Sie sie ber dieses mgliche Sicherheitsproblem.", +"proxyblockreason" => "Ihre IP-Adresse wurde gesperrt, da sie ein offener Proxy ist. Bitte kontaktieren Sie Ihren Provider oder Ihre Systemtechnik und informieren Sie sie über dieses mögliche Sicherheitsproblem.", "proxyblocksuccess" => "Fertig.\n", "math_image_error" => "die PNG-Konvertierung schlug fehl.", -"math_bad_tmpdir" => "Kann das Temporrverzeichnis fr mathematische Formeln nicht anlegen oder beschreiben.", -"math_bad_output" => "Kann das Zielverzeichnis fr mathematische Formeln nicht anlegen oder beschreiben.", +"math_bad_tmpdir" => "Kann das Temporärverzeichnis für mathematische Formeln nicht anlegen oder beschreiben.", +"math_bad_output" => "Kann das Zielverzeichnis für mathematische Formeln nicht anlegen oder beschreiben.", "math_notexvc" => "Das texvc-Programm kann nicht gefunden werden. Bitte beachten Sie math/README.", 'prefs-personal' => 'Benutzerdaten', -'prefs-rc' => 'Letzte nderungen und Anzeige kurzer Artikel', +'prefs-rc' => 'Letzte Änderungen und Anzeige kurzer Artikel', 'prefs-misc' => 'Verschiedene Einstellungen', "import" => "Seiten importieren", -"importtext" => "Bitte exportieren Sie die Seite vom Quellwiki mittels Spezial:Export und laden Sie die Datei dann ber diese Seite wieder hoch.", +"importtext" => "Bitte exportieren Sie die Seite vom Quellwiki mittels Spezial:Export und laden Sie die Datei dann über diese Seite wieder hoch.", "importfailed" => "Import fehlgeschlagen: $1", "importnotext" => "Leer oder kein Text", "importsuccess" => "Import erfolgreich!", -"importhistoryconflict" => "Es existieren bereits ltere Versionen, die mit diesen kollidieren. (Mglicherweise wurde die Seite bereits vorher importiert)", +"importhistoryconflict" => "Es existieren bereits ältere Versionen, die mit diesen kollidieren. (Möglicherweise wurde die Seite bereits vorher importiert)", "isbn" => "ISBN", "rfcurl" => "http://www.faqs.org/rfcs/rfc$1.html", "siteuser" => "{$wgSitename}-Benutzer $1", @@ -1144,15 +1154,15 @@ Diskussions-Seite nicht, da schon eine mit dem neuen Titel existiert. Bitte glei 'edit' => 'bearbeiten', 'talk' => 'Diskussion', "infobox" => "Klicken Sie einen Button, um einen Beispieltext zu erhalten.", -"infobox_alert" => "Bitte geben Sie den Text ein, den Sie formatiert haben mchten.\\nEr wird dann zum Kopieren in der Infobox angezeigt.\\nBeispiel:\\n$1\\nwird zu\\n$2", -"nocookiesnew" => "Der Benutzerzugang wurde erstellt, aber Sie sind nicht eingeloggt. {{SITENAME}} bentigt fr diese Funktion Cookies, bitte aktivieren Sie diese und loggen sich dann mit Ihrem neuen Benutzernamen und dem Passwort ein.", +"infobox_alert" => "Bitte geben Sie den Text ein, den Sie formatiert haben möchten.\\nEr wird dann zum Kopieren in der Infobox angezeigt.\\nBeispiel:\\n$1\\nwird zu\\n$2", +"nocookiesnew" => "Der Benutzerzugang wurde erstellt, aber Sie sind nicht eingeloggt. {{SITENAME}} benötigt für diese Funktion Cookies, bitte aktivieren Sie diese und loggen sich dann mit Ihrem neuen Benutzernamen und dem Passwort ein.", "nocookieslogin" => "{{SITENAME}} benutzt Cookies zum Einloggen der Benutzer. Sie haben Cookies deaktiviert, bitte aktivieren Sie diese und versuchen es erneut.", - - +"subcategorycount" => "Diese Kategorie hat $1 Unterkategorien.", +"categoryarticlecount" => "Dieser Kategorie gehören $1 Artikel an." ); -class LanguageDe extends Language { +class LanguageDe extends LanguageUtf8 { function getDefaultUserOptions () { $opt = Language::getDefaultUserOptions(); @@ -1271,11 +1281,12 @@ class LanguageDe extends Language { function getMessage( $key ) { - global $wgAllMessagesDe, $wgAllMessagesEn; - $m = $wgAllMessagesDe[$key]; - - if ( "" == $m ) { return $wgAllMessagesEn[$key]; } - else return $m; + global $wgAllMessagesDe; + if( isset( $wgAllMessagesDe[$key] ) ) { + return $wgAllMessagesDe[$key]; + } else { + return ""; + } } diff --git a/languages/LanguageEl.php b/languages/LanguageEl.php index ef89ebf78b12..c10bb6cb2298 100644 --- a/languages/LanguageEl.php +++ b/languages/LanguageEl.php @@ -8,4 +8,4 @@ class LanguageEl extends LanguageUtf8 { } } -?> \ No newline at end of file +?> diff --git a/languages/LanguageEo.php b/languages/LanguageEo.php index 9e38848fb14b..d06cd0616695 100644 --- a/languages/LanguageEo.php +++ b/languages/LanguageEo.php @@ -44,7 +44,8 @@ $wgEditEncoding = "x"; 'cologneblue' => "Kolonja Bluo", 'davinci' => "DaVinci", 'mono' => "Senkolora", - 'monobook' => "Librejo" + 'monobook' => "Librejo", + "myskin" => "MySkin" ); /* private */ $wgMathNamesEo = array( @@ -181,6 +182,7 @@ $wgEditEncoding = "x"; "faq" => "Oftaj demandoj", "faqpage" => "{{ns:4}}:Oftaj demandoj", "edithelp" => "Helpo pri redaktado", +"newwindow" => "(en nova fenestro)", "edithelppage" => "{{ns:4}}:Kiel_redakti_paĝon", #FIXME: Kontrolu "cancel" => "Nuligu", "qbfind" => "Trovu", diff --git a/languages/LanguageEs.php b/languages/LanguageEs.php index c8e0fd398681..65a91f8f3d80 100644 --- a/languages/LanguageEs.php +++ b/languages/LanguageEs.php @@ -1,25 +1,37 @@ "Media", - -1 => "Especial", - 0 => "", - 1 => "Discusin", - 2 => "Usuario", - 3 => "Usuario_Discusin", - 4 => $wgMetaNamespace, - 5 => "{$wgMetaNamespace}_Discusin", - 6 => "Imagen", - 7 => "Imagen_Discusin", - 8 => "MediaWiki", - 9 => "MediaWiki_Discusin", - 10 => "Template", - 11 => "Template_talk" - + NS_MEDIA => "Media", + NS_SPECIAL => "Especial", + NS_MAIN => "", + NS_TALK => "Discusión", + NS_USER => "Usuario", + NS_USER_TALK => "Usuario_Discusión", + NS_WIKIPEDIA => $wgMetaNamespace, + NS_WIKIPEDIA_TALK => "{$wgMetaNamespace}_Discusión", + NS_IMAGE => "Imagen", + NS_IMAGE_TALK => "Imagen_Discusión", + NS_MEDIAWIKI => "MediaWiki", + NS_MEDIAWIKI_TALK => "MediaWiki_Discusión", + NS_TEMPLATE => "Template", + NS_TEMPLATE_TALK => "Template_talk", + NS_HELP => "Ayuda", + NS_HELP_TALK => "Ayuda_Discusión", + NS_CATEGORY => "Category", + NS_CATEGORY_TALK => "Category_talk", ); /* private */ $wgQuickbarSettingsEs = array( @@ -31,14 +43,15 @@ ); /* private */ $wgSkinNamesEs = array( - 'standard' => "Estndar", + 'standard' => "Estándar", 'nostalgia' => "Nostalgia", 'cologneblue' => "Cologne Blue", 'smarty' => "Paddington", 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesEs = array( @@ -58,22 +71,22 @@ /* private */ $wgUserTogglesEs = array( "hover" => "Mostrar caja flotante sobre los enlaces wiki", "underline" => "Subrayar enlaces", - "highlightbroken" => "Destacar enlaces a artculos vacos como este (alternativa: como ste?).", - "justify" => "Ajustar prrafos", + "highlightbroken" => "Destacar enlaces a artículos vacíos como este (alternativa: como éste?).", + "justify" => "Ajustar párrafos", "hideminor" => "Esconder ediciones menores en Cambios Recientes", "usenewrc" => "Cambios Recientes realzados (no para todos los navegadores)", "numberheadings" => "Auto-numerar encabezados", "showtoolbar" => "Show edit toolbar", - "rememberpassword" => "Recordar la contrasea entre sesiones", - "editwidth" => "La caja de edicin tiene el ancho mximo", - "editondblclick" => "Editar pginas con doble click (JavaScript)", + "rememberpassword" => "Recordar la contraseña entre sesiones", + "editwidth" => "La caja de edición tiene el ancho máximo", + "editondblclick" => "Editar páginas con doble click (JavaScript)", "editsection"=>"Habilitar la edicion de secciones usando el enlace [editar]", -"editsectiononrightclick"=>"Habilitar la edicin de secciones presionando el boton de la derecha
    en los titulos de secciones (JavaScript)", +"editsectiononrightclick"=>"Habilitar la edición de secciones presionando el boton de la derecha
    en los titulos de secciones (JavaScript)", "showtoc"=>"Mostrar la tabla de contenidos
    (para paginas con mas de 3 encabezados)", - "watchdefault" => "Vigilar artculos nuevos y modificados", + "watchdefault" => "Vigilar artículos nuevos y modificados", "minordefault" => "Marcar todas las ediciones como menores por defecto", - "previewontop" => "Mostrar la previsualizacin antes de la caja de edicin en lugar de despus", + "previewontop" => "Mostrar la previsualización antes de la caja de edición en lugar de después", "nocache"=> "Inhabilitar el ''cache'' de paginas" ); @@ -87,7 +100,7 @@ ); /* private */ $wgWeekdayNamesEs = array( -"Domingo", "Lunes", "Martes", "Mircoles", "Jueves", "Viernes", "Sbado" +"Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado" ); /* private */ $wgMonthNamesEs = array( @@ -112,25 +125,25 @@ "Watchlist" => "Mi lista de seguimiento", "Recentchanges" => "Cambios Recientes", "Upload" => "Subir una imagen", - "Imagelist" => "Lista de imgenes", + "Imagelist" => "Lista de imágenes", "Listusers" => "Usuarios registrados", - "Statistics" => "Estadsticas del sitio", - "Randompage" => "Artculo aleatorio", + "Statistics" => "Estadísticas del sitio", + "Randompage" => "Artículo aleatorio", - "Lonelypages" => "Artculos hurfanos", - "Unusedimages" => "Imgenes hurfanas", - "Popularpages" => "Artculos populares", - "Wantedpages" => "Artculos ms solicitados", - "Shortpages" => "Artculos cortos", + "Lonelypages" => "Artículos huérfanos", + "Unusedimages" => "Imágenes huérfanas", + "Popularpages" => "Artículos populares", + "Wantedpages" => "Artículos más solicitados", + "Shortpages" => "Artículos cortos", - "Longpages" => "Artculos largos", - "Newpages" => "Artculos nuevos", + "Longpages" => "Artículos largos", + "Newpages" => "Artículos nuevos", "Ancientpages" => "Articulos mas antiguos", # "Intl" => "Enlaces Interlenguaje", - "Allpages" => "Todas las pginas (alfabtico)", + "Allpages" => "Todas las páginas (alfabético)", "Ipblocklist" => "Direcciones IP bloqueadas", - "Maintenance" => "Pgina de mantenimiento", + "Maintenance" => "Página de mantenimiento", "Specialpages" => "", "Contributions" => "", @@ -144,9 +157,9 @@ ); /* private */ $wgSysopSpecialPagesEs = array( - "Blockip" => "Bloquear una direccin IP", - "Asksql" => "Bsqueda en la base de datos", - "Undelete" => "Ver y restaurar pginas borradas" + "Blockip" => "Bloquear una dirección IP", + "Asksql" => "Búsqueda en la base de datos", + "Undelete" => "Ver y restaurar páginas borradas" ); /* private */ $wgDeveloperSpecialPagesEs = array( @@ -158,9 +171,9 @@ # Bits of text used by many pages: # -"linktrail" => "/^([a-z]+)(.*)\$/sD", +"linktrail" => "/^((?:[a-z]|á|é|í|ó|ú|ñ)+)(.*)\$/sD", "mainpage" => "Portada", -"mainpagetext" => "Software wiki instalado con xito.", +"mainpagetext" => "Software wiki instalado con éxito.", "about" => "Acerca de", "aboutwikipedia" => "Acerca de $wgSitename", "aboutpage" => "$wgMetaNamespace:Acerca de", @@ -172,55 +185,55 @@ "faq" => "FAQ", "faqpage" => "$wgMetaNamespace:FAQ", -"edithelp" => "Ayuda de edicin", -"edithelppage" => "$wgMetaNamespace:Cmo_se_edita_una_pgina", +"edithelp" => "Ayuda de edición", +"edithelppage" => "$wgMetaNamespace:Cómo_se_edita_una_página", "cancel" => "Cancelar", "qbfind" => "Encontrar", "qbbrowse" => "Hojear", "qbedit" => "Editar", -"qbpageoptions" => "Opciones de pgina", -"qbpageinfo" => "Informacin de pgina", +"qbpageoptions" => "Opciones de página", +"qbpageinfo" => "Información de página", "qbmyoptions" => "Mis opciones", -"mypage" => "Mi pgina", -"mytalk" => "Mi discusin", +"mypage" => "Mi página", +"mytalk" => "Mi discusión", "currentevents" => "Actualidad", "errorpagetitle" => "Error", "returnto" => "Regresa a $1.", "fromwikipedia" => "De $wgSitename, la enciclopedia libre.", -"whatlinkshere" => "Pginas que enlazan aqu", +"whatlinkshere" => "Páginas que enlazan aquí", "help" => "Ayuda", "search" => "Buscar", "go" => "Ir", "history" => "Historia", -"printableversion" => "Versin para imprimir", -"editthispage" => "Edita esta pgina", -"deletethispage" => "Borra esta pgina", -"protectthispage" => "Protege esta pgina", -"unprotectthispage" => "Desprotege esta pgina", - -"newpage" => "Pgina nueva", -"talkpage" => "Discute esta pgina", +"printableversion" => "Versión para imprimir", +"editthispage" => "Edita esta página", +"deletethispage" => "Borra esta página", +"protectthispage" => "Protege esta página", +"unprotectthispage" => "Desprotege esta página", + +"newpage" => "Página nueva", +"talkpage" => "Discute esta página", "postcomment" => "Pon un comentario", -"articlepage" => "Ver artculo", -"subjectpage" => "Artculo", -"userpage" => "Ver pgina de usuario", -"wikipediapage" => "Ver pgina meta", -"imagepage" => "Ver pgina de imagen", -"viewtalkpage" => "Ver discusin", +"articlepage" => "Ver artículo", +"subjectpage" => "Artículo", +"userpage" => "Ver página de usuario", +"wikipediapage" => "Ver página meta", +"imagepage" => "Ver página de imagen", +"viewtalkpage" => "Ver discusión", "otherlanguages" => "Otros idiomas", "redirectedfrom" => "(Redirigido desde $1)", -"lastmodified" => "Esta pgina fue modificada por ltima vez el $1.", -"viewcount" => "Esta pgina ha sido visitada $1 veces.", -"gnunote" => "Todo el texto se hace disponible bajo los trminos de la Licencia de Documentacin Libre GNU (GNU FDL)", +"lastmodified" => "Esta página fue modificada por última vez el $1.", +"viewcount" => "Esta página ha sido visitada $1 veces.", +"gnunote" => "Todo el texto se hace disponible bajo los términos de la Licencia de Documentación Libre GNU (GNU FDL)", "printsubtitle" => "(De http://es.wikipedia.org)", -"protectedpage" => "Pgina protegida", +"protectedpage" => "Página protegida", "administrators" => "$wgMetaNamespace:Administradores", "sysoptitle" => "Acceso de Administrador requerido", -"sysoptext" => "La accin que has requerido slo puede ser llevada a cabo +"sysoptext" => "La acción que has requerido sólo puede ser llevada a cabo por usuarios con status de administrador. Ver $1.", "developertitle" => "Acceso de developer requerido", -"developertext" => "La accin que has requerido slo puede ser llevada a cabo +"developertext" => "La acción que has requerido sólo puede ser llevada a cabo por usuarios con status de \"developer\". Ver $1.", "nbytes" => "$1 bytes", @@ -241,11 +254,11 @@ Ver $1.", # Main script and global functions # -"nosuchaction" => "No existe tal accin", -"nosuchactiontext" => "La accin especificada por el URL no es +"nosuchaction" => "No existe tal acción", +"nosuchactiontext" => "La acción especificada por el URL no es reconocida por el software de $wgSitename", -"nosuchspecialpage" => "No existe esa pgina especial", -"nospecialpagetext" => "Has requerido una pgina especial que no es +"nosuchspecialpage" => "No existe esa página especial", +"nospecialpagetext" => "Has requerido una página especial que no es reconocida por el software de $wgSitename.", # General errors @@ -254,31 +267,31 @@ Ver $1.", "databaseerror" => "Error de la base de datos", "dberrortext" => "Ha ocurrido un error de sintaxis en una consulta a la base de datos. -Esto puede ser debido a una bsqueda ilegal (ver $5), +Esto puede ser debido a una búsqueda ilegal (ver $5), o puede indicar un error en el software. -La ltima consulta que se intent fue: +La última consulta que se intentó fue:
    $1
    El error de retorno de MySQL fue\"$3: $4\".", "dberrortextcl" => "Ha ocurrido un error de sintaxis en una consulta a la base de datos. -La ltima consulta que se intent fue: +La última consulta que se intentó fue: \"$1\" -desde la funcin \"$2\". -MySQL retorn el error \"$3: $4\".\n", +desde la función \"$2\". +MySQL retornó el error \"$3: $4\".\n", "noconnect" => "No se pudo conectar a la base de datos en $1", "nodb" => "No se pudo seleccionar la base de datos $1", "readonly" => "Base de datos bloqueada", -"cachederror" => "Esta es una copia guardada en el cache de la pgina requerida, y puede no estar actualizada.", -"enterlockreason" => "Explica el motivo del bloqueo, incluyendo una estimacin de cundo se producir el desbloqueo", -"readonlytext" => "La base de datos de $wgSitename est temporalmente +"cachederror" => "Esta es una copia guardada en el cache de la página requerida, y puede no estar actualizada.", +"enterlockreason" => "Explica el motivo del bloqueo, incluyendo una estimación de cuándo se producirá el desbloqueo", +"readonlytext" => "La base de datos de $wgSitename está temporalmente bloqueada para nuevas entradas u otras modificaciones, probablemente -para mantenimiento de rutina, despus de lo cual volver a la normalidad. -El administrador que la bloque ofreci esta explicacin: +para mantenimiento de rutina, después de lo cual volverá a la normalidad. +El administrador que la bloqueó ofreció esta explicación:

    $1", -"missingarticle" => "La base de datos no encontr el texto de una -pgina que debera haber encontrado, llamada \"$1\". +"missingarticle" => "La base de datos no encontró el texto de una +página que debería haber encontrado, llamada \"$1\". -

    Esto es causado usualmente por seguir un enlace a una diferencia de pginas o historia obsoleta a una pgina que ha sido borrada. +

    Esto es causado usualmente por seguir un enlace a una diferencia de páginas o historia obsoleta a una página que ha sido borrada.

    Si esta no es la causa, puedes haber encontrado un error en el software. Por favor, informa esto a un administrador, notando el URL.", @@ -290,30 +303,30 @@ notando el URL.", "filenotfound" => "No se pudo encontrar el archivo \"$1\".", "unexpected" => "Valor no esperado: \"$1\"=\"$2\".", "formerror" => "Error: no se pudo submitir la forma", -"badarticleerror" => "Esta accin no se puede llevar a cabo en esta pgina.", -"cannotdelete" => "No se pudo borrar la pgina o imagen especificada. (Puede haber sido borrada por alguien antes)", -"badtitle" => "Ttulo incorrecto", -"badtitletext" => "El ttulo de la pgina requerida era incorrecto, vaco, o un enlace interleguaje o interwiki incorrecto.", +"badarticleerror" => "Esta acción no se puede llevar a cabo en esta página.", +"cannotdelete" => "No se pudo borrar la página o imagen especificada. (Puede haber sido borrada por alguien antes)", +"badtitle" => "Título incorrecto", +"badtitletext" => "El título de la página requerida era incorrecto, vacío, o un enlace interleguaje o interwiki incorrecto.", -"perfdisabled" => "Lo siento, esta funcin est temporalmente desactivada porque enlentece la base de datos a tal punto que nadie puede usar el wiki. Ser reescrita para mayor eficiencia en el futuro) probablemente por ti!", +"perfdisabled" => "Lo siento, esta función está temporalmente desactivada porque enlentece la base de datos a tal punto que nadie puede usar el wiki. Será reescrita para mayor eficiencia en el futuro) probablemente por ti!", "perfdisabledsub" => "Aqui hay una copia grabada de $1:", -# Login and logout pagestulo -"logouttitle" => "Fin de sesin", -"logouttext" => "Has terminado tu sesin. -Puedes continuar usando $wgSitename en forma annima, o puedes -iniciar sesin otra vez como el mismo u otro usuario.\n", +# Login and logout pagesítulo +"logouttitle" => "Fin de sesión", +"logouttext" => "Has terminado tu sesión. +Puedes continuar usando $wgSitename en forma anónima, o puedes +iniciar sesión otra vez como el mismo u otro usuario.\n", "welcomecreation" => "

    Bienvenido(a), $1!

    Tu cuenta ha sido creada. No olvides perzonalizar tus preferencia de $wgSitename.", "loginpagetitle" => "Registrarse/Entrar", "yourname" => "Tu nombre de usuario", -"yourpassword" => "Tu contrasea", -"yourpasswordagain" => "Repite tu contrasea", -"newusersonly" => " (slo usuarios nuevos)", -"remembermypassword" => "Quiero que recuerden mi contrasea entre sesiones.", -"loginproblem" => "Hubo un problema con tu entrada.
    Intntalo otra vez!", +"yourpassword" => "Tu contraseña", +"yourpasswordagain" => "Repite tu contraseña", +"newusersonly" => " (sólo usuarios nuevos)", +"remembermypassword" => "Quiero que recuerden mi contraseña entre sesiones.", +"loginproblem" => "Hubo un problema con tu entrada.
    ¡Inténtalo otra vez!", "alreadyloggedin" => "Usuario $1, ya entraste!
    \n", "login" => "Registrarse/Entrar", @@ -322,145 +335,145 @@ No olvides perzonalizar tus preferencia de $wgSitename.", "userlogout" => "Salir", "notloggedin" => "No has entrado", "createaccount" => "Crea una nueva cuenta", -"badretype" => "Las contraseas que ingresaste no concuerdan.", -"userexists" => "El nombre que entraste ya est en uso. Por favor, elije un nombre diferente.", -"youremail" => "Tu direccin electrnica (e-mail)", +"badretype" => "Las contraseñas que ingresaste no concuerdan.", +"userexists" => "El nombre que entraste ya está en uso. Por favor, elije un nombre diferente.", +"youremail" => "Tu dirección electrónica (e-mail)", "yournick" => "Tu apodo (para firmas)", -"emailforlost" => "Ingresar una direccin electrnica es opcional, pero permite a los dems usuarios contactarse contigo a travs del sitio web sin tener que revelarles tu direccin electrnica. Adems, si pierdes u olvidas tu contrasea, puedes pedir que se enve una nueva a tu direccin electrnica.", -"loginerror" => "Error de inicio de sesin", -"noname" => "No has especificado un nombre de usuario vlido.", -"loginsuccesstitle" => "Inicio de sesin exitoso", -"loginsuccess" => "Has iniciado tu sesin en $wgSitename como \"$1\".", +"emailforlost" => "Ingresar una dirección electrónica es opcional, pero permite a los demás usuarios contactarse contigo a través del sitio web sin tener que revelarles tu dirección electrónica. Además, si pierdes u olvidas tu contraseña, puedes pedir que se envíe una nueva a tu dirección electrónica.", +"loginerror" => "Error de inicio de sesión", +"noname" => "No has especificado un nombre de usuario válido.", +"loginsuccesstitle" => "Inicio de sesión exitoso", +"loginsuccess" => "Has iniciado tu sesión en $wgSitename como \"$1\".", "nosuchuser" => "No existe usuario alguno llamado \"$1\". Revisa tu deletreo, o usa la forma abajo para crear una nueva cuenta de usuario.", -"wrongpassword" => "La contrasea que ingresaste es incorrecta. Por favor intntalo de nuevo.", -"mailmypassword" => "Envame una nueva contrasea por correo electrnico", -"passwordremindertitle" => "Recordatorio de contrasea de $wgSitename", -"passwordremindertext" => "Alguien (probablemente t, desde la direccion IP $1) -solicit que te enviaramos una nueva contrasea para iniciar sesin en $wgSitename. -La contrasea para el usuario \"$2\" es ahora \"$3\". -Ahora deberas iniciar sesion y cambiar tu contrasea.", -"noemail" => "No hay direccin electrnica (e-mail) registrada para el(la) usuario(a) \"$1\".", -"passwordsent" => "Una nueva contrasea ha sido enviada a la direccin electrnica registrada para \"$1\". -Por favor entra otra vez despus de que la recibas.", +"wrongpassword" => "La contraseña que ingresaste es incorrecta. Por favor inténtalo de nuevo.", +"mailmypassword" => "Envíame una nueva contraseña por correo electrónico", +"passwordremindertitle" => "Recordatorio de contraseña de $wgSitename", +"passwordremindertext" => "Alguien (probablemente tú, desde la direccion IP $1) +solicitó que te enviaramos una nueva contraseña para iniciar sesión en $wgSitename. +La contraseña para el usuario \"$2\" es ahora \"$3\". +Ahora deberías iniciar sesion y cambiar tu contraseña.", +"noemail" => "No hay dirección electrónica (e-mail) registrada para el(la) usuario(a) \"$1\".", +"passwordsent" => "Una nueva contraseña ha sido enviada a la dirección electrónica registrada para \"$1\". +Por favor entra otra vez después de que la recibas.", # Edit pages # "summary" => "Resumen", -"subject" => "Tema/ttulo", -"minoredit" => "Esta es una edicin menor.", -"watchthis" => "Vigila este artculo.", -"savearticle" => "Grabar la pgina", +"subject" => "Tema/título", +"minoredit" => "Esta es una edición menor.", +"watchthis" => "Vigila este artículo.", +"savearticle" => "Grabar la página", "preview" => "Previsualizar", -"showpreview" => "Mostrar previsualizacin", -"blockedtitle" => "El usuario est bloqueado", -"blockedtext" => "Tu nombre de usuario o direccin IP ha sido bloqueada por $1. -La razn dada es la que sigue:
    $2

    Puedes contactar a $1 o a otro de los [[$wgMetaNamespace:Administradores|administradores]] para +"showpreview" => "Mostrar previsualización", +"blockedtitle" => "El usuario está bloqueado", +"blockedtext" => "Tu nombre de usuario o dirección IP ha sido bloqueada por $1. +La razón dada es la que sigue:
    $2

    Puedes contactar a $1 o a otro de los [[$wgMetaNamespace:Administradores|administradores]] para discutir el bloqueo.", "newarticle" => "(Nuevo)", -"newarticletext" => "$wgSitename es una enciclopedia en desarrollo, y esta pgina an no existe. Puedes pedir informacin en [[$wgMetaNamespace:Consultas]], pero no esperes una respuesta pronta. Si lo que quieres es crear esta pgina, empieza a escribir en la caja que sigue. Si llegaste aqu por error, presiona la tecla para volver a la pgina anterior de tu navegador.", -"anontalkpagetext" => "---- ''Esta es la pgina de discusin para un usuario annimo que an no ha creado una cuenta, o no la usa. Por lo tanto, tenemos que usar su [[direccin IP]] numrica para adentificarlo. Una direccin IP puede ser compartida por varios usuarios. Si eres un usuario annimo y sientes que comentarios irreleventes han sido dirigidos a ti, por favor [[Especial:Userlogin|crea una cuenta o entra]] para evitar confusiones futuras con otros usuarios annimos.'' ", -"noarticletext" => "(En este momento no hay texto en esta pgina)", +"newarticletext" => "$wgSitename es una enciclopedia en desarrollo, y esta página aún no existe. Puedes pedir información en [[$wgMetaNamespace:Consultas]], pero no esperes una respuesta pronta. Si lo que quieres es crear esta página, empieza a escribir en la caja que sigue. Si llegaste aquí por error, presiona la tecla para volver a la página anterior de tu navegador.", +"anontalkpagetext" => "---- ''Esta es la página de discusión para un usuario anónimo que aún no ha creado una cuenta, o no la usa. Por lo tanto, tenemos que usar su [[dirección IP]] numérica para adentificarlo. Una dirección IP puede ser compartida por varios usuarios. Si eres un usuario anónimo y sientes que comentarios irreleventes han sido dirigidos a ti, por favor [[Especial:Userlogin|crea una cuenta o entra]] para evitar confusiones futuras con otros usuarios anónimos.'' ", +"noarticletext" => "(En este momento no hay texto en esta página)", "updated" => "(Actualizado)", "note" => "Nota: ", -"previewnote" => "Recuerda que esto es slo una previsualizacin, y no ha sido grabada todava!", -"previewconflict" => "Esta previsualizacin refleja el texto en el rea -de edicin superior como aparecer si eliges grabar.", +"previewnote" => "Recuerda que esto es sólo una previsualización, y no ha sido grabada todavía!", +"previewconflict" => "Esta previsualización refleja el texto en el área +de edición superior como aparecerá si eliges grabar.", "editing" => "Editando $1", -"sectionedit" => " (seccin)", +"sectionedit" => " (sección)", "commentedit" => " (comentario)", -"editconflict" => "Conflicto de edicin: $1", -"explainconflict" => "Alguien ms ha cambiado esta pgina desde que empezaste +"editconflict" => "Conflicto de edición: $1", +"explainconflict" => "Alguien más ha cambiado esta página desde que empezaste a editarla. -El rea de texto superior contiene el texto de la pgina como existe -actualmente. Tus cambios se muestran en el rea de texto inferior. +El área de texto superior contiene el texto de la página como existe +actualmente. Tus cambios se muestran en el área de texto inferior. Vas a tener que incorporar tus cambios en el texto existente. -Slo el texto en el rea de texto superior ser grabado cuando presiones - \"Grabar pgina\".\n

    ", +Sólo el texto en el área de texto superior será grabado cuando presiones + \"Grabar página\".\n

    ", "yourtext" => "Tu texto", -"storedversion" => "Versin almacenada", -"editingold" => "ADVERTENCIA: Ests editando una versin antigua - de esta pgina. -Si la grabas, los cambios hechos desde esa revisin se perdern.\n", +"storedversion" => "Versión almacenada", +"editingold" => "ADVERTENCIA: Estás editando una versión antigua + de esta página. +Si la grabas, los cambios hechos desde esa revisión se perderán.\n", "yourdiff" => "Diferencias", -"copyrightwarning" => "Ayuda de edicin, caracteres especiales:

    Nota por favor que todas las contribuciones a $wgSitename -se consideran hechas pblicas bajo la Licencia de Documentacin Libre GNU +"copyrightwarning" => "Ayuda de edición, caracteres especiales: á é í ó ú Á É Í Ó Ú ü Ü ñ Ñ ¡ ¿

    Nota por favor que todas las contribuciones a $wgSitename +se consideran hechas públicas bajo la Licencia de Documentación Libre GNU (ver detalles en $1). Si no deseas que la gente corrija tus escritos sin piedad -y los distribuya libremente, entonces no los pongas aqu.
    -Tambin t nos aseguras que escribiste esto t mismo y -eres dueo de los derechos de autor, o lo copiaste desde el dominio pblico +y los distribuya libremente, entonces no los pongas aquí.
    +También tú nos aseguras que escribiste esto tú mismo y +eres dueño de los derechos de autor, o lo copiaste desde el dominio público u otra fuente libre. - NO USES ESCRITOS CON COPYRIGHT SIN PERMISO!
    ", -"longpagewarning" => "ADVERTENCIA: Esta pgina tiene un tamao de $1 kilobytes; algunos navegadores pueden tener problemas editando pginas de 32kb o ms. -Por favor considera la posibilidad de descomponer esta pgina en secciones ms pequeas.", -"readonlywarning" => "ADVERTENCIA: La base de datos ha sido bloqueada para mantenimiento, as que no podrs grabar tus modificaciones en este momento. + ¡NO USES ESCRITOS CON COPYRIGHT SIN PERMISO!
    ", +"longpagewarning" => "ADVERTENCIA: Esta página tiene un tamaño de $1 kilobytes; algunos navegadores pueden tener problemas editando páginas de 32kb o más. +Por favor considera la posibilidad de descomponer esta página en secciones más pequeñas.", +"readonlywarning" => "ADVERTENCIA: La base de datos ha sido bloqueada para mantenimiento, así que no podrás grabar tus modificaciones en este momento. Puedes \"cortar y pegar\" a un archivo de texto en tu computador, y grabarlo para -intentarlo despus.", -"protectedpagewarning" => "ADVERTENCIA: Esta pgina ha sido bloqueda de manera que s&ocute;lo usuarios con privilegios de administrador pueden editarla. Asegrate de que ests siguiendo las -
    guas para pginas protegidas.", +intentarlo después.", +"protectedpagewarning" => "ADVERTENCIA: Esta página ha sido bloqueda de manera que s&ocute;lo usuarios con privilegios de administrador pueden editarla. Asegúrate de que estás siguiendo las +guías para páginas protegidas.", # History pages # "revhistory" => "Historia de revisiones", -"nohistory" => "No hay una historia de ediciones para esta pgina.", -"revnotfound" => "Revisin no encontrada", -"revnotfoundtext" => "La revisin antigua de la pgina por la que preguntaste no se pudo encontrar. -Por favor revisa el URL que usaste para acceder a esta pgina.\n", -"loadhist" => "Recuperando la historia de la pgina", -"currentrev" => "Revisin actual", -"revisionasof" => "Revisin de $1", +"nohistory" => "No hay una historia de ediciones para esta página.", +"revnotfound" => "Revisión no encontrada", +"revnotfoundtext" => "La revisión antigua de la página por la que preguntaste no se pudo encontrar. +Por favor revisa el URL que usaste para acceder a esta página.\n", +"loadhist" => "Recuperando la historia de la página", +"currentrev" => "Revisión actual", +"revisionasof" => "Revisión de $1", "cur" => "act", "next" => "sig", "last" => "prev", "orig" => "orig", -"histlegend" => "Simbologa: (act) = diferencia con la versin actual, -(prev) = diferencia con la versin previa, M = edicin menor", +"histlegend" => "Simbología: (act) = diferencia con la versión actual, +(prev) = diferencia con la versión previa, M = edición menor", # Diffs # "difference" => "(Diferencia entre revisiones)", -"loadingrev" => "recuperando revisin para diff", -"lineno" => "Lnea $1:", -"editcurrent" => "Edita la versin actual de esta pgina", +"loadingrev" => "recuperando revisión para diff", +"lineno" => "Línea $1:", +"editcurrent" => "Edita la versión actual de esta página", # Search results # -"searchresults" => "Resultados de bsqueda", -"searchhelppage" => "$wgMetaNamespace:Bsqueda", +"searchresults" => "Resultados de búsqueda", +"searchhelppage" => "$wgMetaNamespace:Búsqueda", "searchingwikipedia" => "Buscando en $wgSitename", -"searchresulttext" => "Para ms informacin acerca de bsquedas en $wgSitename, ve a $1.", +"searchresulttext" => "Para más información acerca de búsquedas en $wgSitename, ve a $1.", "searchquery" => "Para consulta \"$1\"", -"badquery" => "Consulta de bsqueda formateada en forma incorrecta", -"badquerytext" => "No pudimos procesar tu bsqueda. -Esto es probablemente porque intentaste buscar una palabra de menos de tres letras, lo que todava no es posible. -Tambin puede ser que hayas cometido un error de escritura en la expresin. -Por favor, intenta una bsqueda diferente.", -"matchtotals" => "La consulta \"$1\" coincidi con $2 ttulos de artculos -y el texto de $3 artculos.", -"nogomatch" => "No existe ninguna pgina con exactamente este ttulo, estamos intentando una bsqueda en todo el texto.", -"titlematches" => "Coincidencias de ttulo de artculo", -"notitlematches" => "No hay coincidencias de ttulo de artculo", -"textmatches" => "Coincidencias de texto de artculo", -"notextmatches" => "No hay coincidencias de texto de artculo", +"badquery" => "Consulta de búsqueda formateada en forma incorrecta", +"badquerytext" => "No pudimos procesar tu búsqueda. +Esto es probablemente porque intentaste buscar una palabra de menos de tres letras, lo que todavía no es posible. +También puede ser que hayas cometido un error de escritura en la expresión. +Por favor, intenta una búsqueda diferente.", +"matchtotals" => "La consulta \"$1\" coincidió con $2 títulos de artículos +y el texto de $3 artículos.", +"nogomatch" => "No existe ninguna página con exactamente este título, estamos intentando una búsqueda en todo el texto.", +"titlematches" => "Coincidencias de título de artículo", +"notitlematches" => "No hay coincidencias de título de artículo", +"textmatches" => "Coincidencias de texto de artículo", +"notextmatches" => "No hay coincidencias de texto de artículo", "prevn" => "$1 previos", "nextn" => "$1 siguientes", "viewprevnext" => "Ver ($1) ($2) ($3).", "showingresults" => "Mostrando abajo $1 resultados empezando con #$2.", "showingresultsnum" => "Mostrando abajo $3 resultados comenzando con #$2.", -"nonefound" => "Nota: bsquedas no exitosas son causadas a menudo -por bsquedas de palabras comunes como \"la\" o \"de\", -que no estn en el ndice, o por especificar ms de una palabra para buscar (slo las pginas -que contengan todos los trminos de una bsqueda aparecern en el resultado).", -"powersearch" => "Bsqueda", +"nonefound" => "Nota: búsquedas no exitosas son causadas a menudo +por búsquedas de palabras comunes como \"la\" o \"de\", +que no están en el índice, o por especificar más de una palabra para buscar (sólo las páginas +que contengan todos los términos de una búsqueda aparecerán en el resultado).", +"powersearch" => "Búsqueda", "powersearchtext" => " Buscar en espacios de nombre :
    $1
    $2 Listar redirecciones Buscar $3 $9", -"searchdisabled" => "

    Bsqueda en todo el texto ha sido desactivada temporalmente +"searchdisabled" => "

    Búsqueda en todo el texto ha sido desactivada temporalmente debido a carga alta del servidor; esperamos tenerla otra vez en linea despues de algunas actualizaciones de -soporte fsico prximas. Mientras tanto, puedes hacer una busqueda va google:

    +soporte físico próximas. Mientras tanto, puedes hacer una busqueda vía google:

    @@ -493,65 +506,65 @@ value=\"{$wgServer}\" checked> {$wgServer}
    wfLocalUrl( "Especial:Userlogin" ) . "\">entrar para seleccionar preferencias de usuario.", "prefslogintext" => "Has entrado con el nombre \"$1\". -Tu nmero de identificacin interno es $2.", +Tu número de identificación interno es $2.", "prefsreset" => "Las preferencias han sido repuestas desde almacenaje.", "qbsettings" => "Preferencias de \"Quickbar\"", -"changepassword" => "Cambia contrasea", +"changepassword" => "Cambia contraseña", "skin" => "Piel", -"math" => "Cmo se muestran las frmulas", +"math" => "Cómo se muestran las fórmulas", "dateformat" => "Formato de fecha", "math_failure" => "No se pudo entender", "math_unknown_error" => "error desconocido", -"math_unknown_function" => "funcin desconocida", -"math_lexing_error" => "error de lxico", +"math_unknown_function" => "función desconocida", +"math_lexing_error" => "error de léxico", "math_syntax_error" => "error de sintaxis", "saveprefs" => "Grabar preferencias", "resetprefs" => "Volver a preferencias por defecto", -"oldpassword" => "Contrasea antigua", -"newpassword" => "Contrasea nueva", -"retypenew" => "Reescriba la nueva contrasea", -"textboxsize" => "Dimensiones del rea de texto", +"oldpassword" => "Contraseña antigua", +"newpassword" => "Contraseña nueva", +"retypenew" => "Reescriba la nueva contraseña", +"textboxsize" => "Dimensiones del área de texto", "rows" => "Filas", "columns" => "Columnas", -"searchresultshead" => "Preferencias de resultado de bsqueda", -"resultsperpage" => "Resultados para mostrar por pgina", -"contextlines" => "Lneas para mostrar por resultado", -"contextchars" => "Caracteres de contexto por lnea", -"stubthreshold" => "Umbral de artculo mnimo" , -"recentchangescount" => "Nmero de ttulos en cambios recientes", +"searchresultshead" => "Preferencias de resultado de búsqueda", +"resultsperpage" => "Resultados para mostrar por página", +"contextlines" => "Líneas para mostrar por resultado", +"contextchars" => "Caracteres de contexto por línea", +"stubthreshold" => "Umbral de artículo mínimo" , +"recentchangescount" => "Número de títulos en cambios recientes", "savedprefs" => "Tus preferencias han sido grabadas.", -"timezonetext" => "Entra el nmero de horas de diferencia entre tu hora local +"timezonetext" => "Entra el número de horas de diferencia entre tu hora local y la hora del servidor (UTC).", "localtime" => "Hora local", "timezoneoffset" => "Diferencia", "servertime" => "La hora en el servidor es", "guesstimezone" => "Obtener la hora del navegador", -"emailflag" => "No quiero recibir correo electrnico de otros usuarios", +"emailflag" => "No quiero recibir correo electrónico de otros usuarios", "defaultns" => "Buscar en estos espacios de nombres por defecto:", # Recent changes # "changes" => "cambios", "recentchanges" => "Cambios Recientes", -"recentchangestext" => "Sigue los cambios ms recientes a $wgSitename en esta pgina. +"recentchangestext" => "Sigue los cambios más recientes a $wgSitename en esta página. [[$wgMetaNamespace:Bienvenidos|Bienvenidos]]! -Por favor, mira estas pginas: [[$wgMetaNamespace:FAQ|$wgSitename FAQ]], -[[$wgMetaNamespace:Polticas y guas|polticas de $wgSitename]] -(especialmente [[$wgMetaNamespace:Convenciones de nombres|las convenciones para nombrar artculos]] y +Por favor, mira estas páginas: [[$wgMetaNamespace:FAQ|$wgSitename FAQ]], +[[$wgMetaNamespace:Políticas y guías|políticas de $wgSitename]] +(especialmente [[$wgMetaNamespace:Convenciones de nombres|las convenciones para nombrar artículos]] y [[$wgMetaNamespace:Punto de vista neutral|punto de vista neutral]]). -Si quieres que $wgSitename tenga xito, es muy importante que no agregues +Si quieres que $wgSitename tenga éxito, es muy importante que no agregues material restringido por [[$wgMetaNamespace:Copyrights|derechos de autor]]. -La responsabilidad legal realmente podra daar el proyecto, as que por favor no lo hagas. +La responsabilidad legal realmente podría dañar el proyecto, así que por favor no lo hagas. -Ve tambin [http://meta.wikipedia.org/wiki/Special:Recentchanges discusin reciente en Meta (multilinge)].", +Ve también [http://meta.wikipedia.org/wiki/Special:Recentchanges discusión reciente en Meta (multilingüe)].", "rcloaderr" => "cargando cambios recientes", -"rcnote" => "Abajo estn los ltimos $1 cambios en los ltimos $2 das.", +"rcnote" => "Abajo están los últimos $1 cambios en los últimos $2 días.", "rclistfrom" => "Mostrar cambios nuevos desde $1", -"rcnotefrom" => "Abajo estn los cambios desde $2 (se muestran hasta $1).", -"rclinks" => "Ver los ltimos $1 cambios en los ltimos $2 das.", -"rchide" => "en forma $4 ; $1 ediciones menores; $2 espacios de nombre secundarios; $3 ediciones mltiples.", +"rcnotefrom" => "Abajo están los cambios desde $2 (se muestran hasta $1).", +"rclinks" => "Ver los últimos $1 cambios en los últimos $2 días.", +"rchide" => "en forma $4 ; $1 ediciones menores; $2 espacios de nombre secundarios; $3 ediciones múltiples.", "rcliu" => "; $1 ediciones de usuarios en sesion", "diff" => "dif", "hist" => "hist", @@ -567,284 +580,284 @@ Ve tambi # "upload" => "Subir", "uploadbtn" => "Subir un archivo", -"uploadlink" => "Subir imgenes", +"uploadlink" => "Subir imágenes", "reupload" => "Subir otra vez", "reuploaddesc" => "Regresar al formulario para subir.", -"uploadnologin" => "No has iniciado sesin", -"uploadnologintext" => "T debes iniciar sesin +"uploadnologin" => "No has iniciado sesión", +"uploadnologintext" => "Tú debes iniciar sesión para subir archivos.", "uploadfile" => "Subir archivo", "uploaderror" => "Error tratando de subir", -"uploadtext" => "Para ver o buscar imgenes que se hayan subido +"uploadtext" => "Para ver o buscar imágenes que se hayan subido previamente, ve a la lista de imgenes subidas. +"\">lista de imágenes subidas. Los archivos subidos y borrados son registrados en el registro de subidas. -Consulta tambin la poltica de uso de imgenes. -

    Usa el formulario siguiente para subir nuevos archivos de imgenes que -vas a usar para ilustrar tus artculos. -En la mayora de los navegadores, vers un botn \"Browse...\", que -abrir el dilogo de seleccin de archivos estndar de tu sistema operativo. -Cuando hayas elegido un archivo, su nombre aparecer en el campo de texto -al lado del botn \"Examinar...\". -Tambin debes marcar la caja afirmando que no ests -violando ningn copyright al subir el archivo. +Consulta también la política de uso de imágenes. +

    Usa el formulario siguiente para subir nuevos archivos de imágenes que +vas a usar para ilustrar tus artículos. +En la mayoría de los navegadores, verás un botón \"Browse...\", que +abrirá el diálogo de selección de archivos estándar de tu sistema operativo. +Cuando hayas elegido un archivo, su nombre aparecerá en el campo de texto +al lado del botón \"Examinar...\". +También debes marcar la caja afirmando que no estás +violando ningún copyright al subir el archivo. Presiona el boton \"Subir\" para completar la subida. -Esto puede tomar algn tiempo si tienes una conexin a internet lenta. -

    Los formatos preferidos son JPEG para imgenes fotogrficas, PNG +Esto puede tomar algún tiempo si tienes una conexión a internet lenta. +

    Los formatos preferidos son JPEG para imágenes fotográficas, PNG para dibujos y diagramas, y OGG para sonidos. Por favor, dale a tus archivos nombres descriptivos para evitar confusiones. -Para incluir la imagen en un artculo, usa un enlace de la forma +Para incluir la imagen en un artículo, usa un enlace de la forma [[imagen:archivo.jpg]] o [[imagen:archivo.png|alt text]] o [[media:archivo.ogg]] para sonidos. -

    Por favor recuerda que, al igual que con las pginas $wgSitename, otros pueden +

    Por favor recuerda que, al igual que con las páginas $wgSitename, otros pueden editar o borrar los archivos que has subido si piensan que es bueno para -la enciclopedia, y se te puede bloquear, impidindote subir ms archivos si abusas del sistema.", +la enciclopedia, y se te puede bloquear, impidiéndote subir más archivos si abusas del sistema.", "uploadlog" => "registro de subidas", "uploadlogpage" => "Registro_de_subidas", "uploadlogpagetext" => "Abajo hay una lista de los archivos que se han -subido ms recientemente. Todas las horas son del servidor (UTC). +subido más recientemente. Todas las horas son del servidor (UTC).

    ", "filename" => "Nombre del archivo", "filedesc" => "Sumario", -"affirmation" => "Afirmo que el dueo del copyright de este archivo -est de acuerdo en licenciarlo bajo los trminos de $1.", +"affirmation" => "Afirmo que el dueño del copyright de este archivo +está de acuerdo en licenciarlo bajo los términos de $1.", "copyrightpage" => "$wgMetaNamespace:Copyrights", "copyrightpagename" => "$wgSitename copyright", "uploadedfiles" => "Archivos subidos", -"noaffirmation" => "T debes afirmar que tus subidas de archivos no violan ningn copyright.", +"noaffirmation" => "Tú debes afirmar que tus subidas de archivos no violan ningún copyright.", "ignorewarning" => "Ignora la advertencia y graba el archivo de todos modos.", -"minlength" => "Los nombres de imgenes deben ser al menos de tres letras.", +"minlength" => "Los nombres de imágenes deben ser al menos de tres letras.", "badfilename" => "El nombre de la imagen se ha cambiado a \"$1\".", "badfiletype" => "\".$1\" no es un formato de imagen recomendado.", -"largefile" => "Se recomienda que las imgenes no excedan 100k de tamao.", +"largefile" => "Se recomienda que las imágenes no excedan 100k de tamaño.", "successfulupload" => "Subida exitosa", -"fileuploaded" => "El archivo \"$1\" se subi en forma exitosa. -Por favor sigue este enlace: ($2) a la pgina de descripcin y escribe -la informacin acerca del archivo, tal como de dnde viene, cundo fue -creado y por quin, y cualquier otra cosa que puedas saber al respecto.", +"fileuploaded" => "El archivo \"$1\" se subió en forma exitosa. +Por favor sigue este enlace: ($2) a la página de descripción y escribe +la información acerca del archivo, tal como de dónde viene, cuándo fue +creado y por quién, y cualquier otra cosa que puedas saber al respecto.", "uploadwarning" => "Advertencia de subida de archivo", "savefile" => "Grabar archivo", "uploadedimage" => "\"$1\" subido.", "uploaddisabled" => "Lo sentimos, subir archivos ha sido desactivado en este servidor.", # Image list # -"imagelist" => "Lista de imgenes", -"imagelisttext" => "Abajo hay una lista de $1 imgenes ordenadas $2.", -"getimagelist" => " obteniendo la lista de imgenes", -"ilshowmatch" => "Muestra todas las imgenes con nombres que coincidan con", +"imagelist" => "Lista de imágenes", +"imagelisttext" => "Abajo hay una lista de $1 imágenes ordenadas $2.", +"getimagelist" => " obteniendo la lista de imágenes", +"ilshowmatch" => "Muestra todas las imágenes con nombres que coincidan con", -"ilsubmit" => "Bsqueda", -"showlast" => "Mostrar las ltimas $1 imgenes ordenadas $2.", +"ilsubmit" => "Búsqueda", +"showlast" => "Mostrar las últimas $1 imágenes ordenadas $2.", "all" => "todas", "byname" => "por nombre", "bydate" => "por fecha", -"bysize" => "por tamao", +"bysize" => "por tamaño", "imgdelete" => "borr", "imgdesc" => "desc", -"imglegend" => "Simbologa: (desc) = mostrar/editar la descripcin de la imagen.", +"imglegend" => "Simbología: (desc) = mostrar/editar la descripción de la imagen.", "imghistory" => "Historia de la imagen", "revertimg" => "rev", "deleteimg" => "borr", -"imghistlegend" => "Simbologa: (act) = esta es la imagen actual, (borr) = borrar -esta versin antigua, (rev) = revertir a esta versin antigua. +"imghistlegend" => "Simbología: (act) = esta es la imagen actual, (borr) = borrar +esta versión antigua, (rev) = revertir a esta versión antigua.
    Click en la fecha para ver imagen subida en esa fecha.", "imagelinks" => "Enlaces a la imagen", -"linkstoimage" => "Las siguientes pginas enlazan a esta imagen:", -"nolinkstoimage" => "No hay pginas que enlacen a esta imagen.", +"linkstoimage" => "Las siguientes páginas enlazan a esta imagen:", +"nolinkstoimage" => "No hay páginas que enlacen a esta imagen.", # Statistics # -"statistics" => "Estadsticas", -"sitestats" => "Estadsticas del sitio", -"userstats" => "Estadsticas de usuario", -"sitestatstext" => "Hay un total de $1 pginas en la base de datos. -Esto incluye pginas de discusin, pginas acerca de $wgSitename, pginas mnimas, -redirecciones, y otras que probablemente no puedan calificarse como artculos. -Excluyndolas, hay $2 pginas que probablemente son artculos legtimos.

    -Ha habido un total de $3 visitas a pginas, y $4 ediciones de pgina +"statistics" => "Estadísticas", +"sitestats" => "Estadísticas del sitio", +"userstats" => "Estadísticas de usuario", +"sitestatstext" => "Hay un total de $1 páginas en la base de datos. +Esto incluye páginas de discusión, páginas acerca de $wgSitename, páginas mínimas, +redirecciones, y otras que probablemente no puedan calificarse como artículos. +Excluyéndolas, hay $2 páginas que probablemente son artículos legítimos.

    +Ha habido un total de $3 visitas a páginas, y $4 ediciones de página desde que el software fue actualizado (Octubre 2002). -Esto resulta en un promedio de $5 ediciones por pgina, -y $6 visitas por edicin.", +Esto resulta en un promedio de $5 ediciones por página, +y $6 visitas por edición.", "userstatstext" => "Hay $1 usuarios registrados. de los cuales $2 son administradores (ver $3).", # Maintenance Page # -"maintenance" => "Pgina de mantenimiento", -"maintnancepagetext" => "Esta pgina incluye varias herramientas tiles para el mantenimiento diario de la enciclopedia. Algunas de estas funciones tienden a sobrecargar la base de datos, asi que, por favor, no vuelvas a cargar la pgina despus de cada tem que arregles ;-)", -"maintenancebacklink" => "Volver a la Pgina de Mantenimiento", -"disambiguations" => "Pginas de desambiguacin", -"disambiguationspage" => "$wgMetaNamespace:Enlaces a pginas de desambiguacin", -"disambiguationstext" => "Los siguientes artculos enlazan a una pgina de desambiguacin. Deberan enlazar al artculo apropiado.
    Una pgina es considerada de desambiguacin si est enlazada desde $1.
    Enlaces desde otros espacios de nombre (Como $wgMetaNamespace: o usuario:) no son listados aqu.", +"maintenance" => "Página de mantenimiento", +"maintnancepagetext" => "Esta página incluye varias herramientas útiles para el mantenimiento diario de la enciclopedia. Algunas de estas funciones tienden a sobrecargar la base de datos, asi que, por favor, no vuelvas a cargar la página después de cada ítem que arregles ;-)", +"maintenancebacklink" => "Volver a la Página de Mantenimiento", +"disambiguations" => "Páginas de desambiguación", +"disambiguationspage" => "$wgMetaNamespace:Enlaces a páginas de desambiguación", +"disambiguationstext" => "Los siguientes artículos enlazan a una página de desambiguación. Deberían enlazar al artículo apropiado.
    Una página es considerada de desambiguación si está enlazada desde $1.
    Enlaces desde otros espacios de nombre (Como $wgMetaNamespace: o usuario:) no son listados aquí.", "doubleredirects" => "Redirecciones Dobles", -"doubleredirectstext" => "Atencin: Esta lista puede contener falsos positivos. Eso significa usualmente que hay texto adicional con enlaces bajo el primer #REDIRECT.
    \nCada fila contiene enlaces al segundo y tercer redirect, as como la primera lnea del segundo redirect, en la que usualmente se encontrar el artculo \"real\" al que el primer redirect debera apuntar.", +"doubleredirectstext" => "Atención: Esta lista puede contener falsos positivos. Eso significa usualmente que hay texto adicional con enlaces bajo el primer #REDIRECT.
    \nCada fila contiene enlaces al segundo y tercer redirect, así como la primera línea del segundo redirect, en la que usualmente se encontrará el artículo \"real\" al que el primer redirect debería apuntar.", "brokenredirects" => "Redirecciones incorrectas", -"brokenredirectstext" => "Las redirecciones siguientes enlazan a un artculo que no existe.", -"selflinks" => "Pginas con autoenlaces", -"selflinkstext" => "Las siguientes pginas contienen un enlace a s mismas, lo que no se recomienda.", -"mispeelings" => "Pginas con faltas de ortografa", -"mispeelingstext" => "Las siguientes pginas contienen una falta de ortografa comn de las listadas en $1. La escritura correcta se indica entre parntesis.", -"mispeelingspage" => "Lista de faltas de ortografa comunes", +"brokenredirectstext" => "Las redirecciones siguientes enlazan a un artículo que no existe.", +"selflinks" => "Páginas con autoenlaces", +"selflinkstext" => "Las siguientes páginas contienen un enlace a sí mismas, lo que no se recomienda.", +"mispeelings" => "Páginas con faltas de ortografía", +"mispeelingstext" => "Las siguientes páginas contienen una falta de ortografía común de las listadas en $1. La escritura correcta se indica entre paréntesis.", +"mispeelingspage" => "Lista de faltas de ortografía comunes", "missinglanguagelinks" => "Enlaces Interleguaje Faltantes", "missinglanguagelinksbutton" => "Encontrar los enlaces interlenguaje que faltan para", -"missinglanguagelinkstext" => "Estos artculos no enlazan a sus correspondientes en $1. No se muestran redirecciones ni subpginas.", +"missinglanguagelinkstext" => "Estos artículos no enlazan a sus correspondientes en $1. No se muestran redirecciones ni subpáginas.", # Miscellaneous special pages # -"orphans" => "Pginas hurfanas", -"lonelypages" => "Pginas hurfanas", -"unusedimages" => "Imgenes sin uso", -"popularpages" => "Pginas populares", +"orphans" => "Páginas huérfanas", +"lonelypages" => "Páginas huérfanas", +"unusedimages" => "Imágenes sin uso", +"popularpages" => "Páginas populares", "nviews" => "$1 visitas", -"wantedpages" => "Pginas requeridas", +"wantedpages" => "Páginas requeridas", "nlinks" => "$1 enlaces", -"allpages" => "Todas las pginas", +"allpages" => "Todas las páginas", -"randompage" => "Pgina aleatoria", -"shortpages" => "Pginas cortas", -"longpages" => "Pginas largas", +"randompage" => "Página aleatoria", +"shortpages" => "Páginas cortas", +"longpages" => "Páginas largas", "listusers" => "Lista de usuarios", -"specialpages" => "Pginas especiales", -"spheading" => "Pginas especiales", -"sysopspheading" => "Pginas especiales para uso de sysops", -"developerspheading" => "Pginas especiales para uso de developers", -"protectpage" => "Pginas protegidas", +"specialpages" => "Páginas especiales", +"spheading" => "Páginas especiales", +"sysopspheading" => "Páginas especiales para uso de sysops", +"developerspheading" => "Páginas especiales para uso de developers", +"protectpage" => "Páginas protegidas", "recentchangeslinked" => "Seguimiento de enlaces", -"rclsub" => "(a pginas enlazadas desde \"$1\")", +"rclsub" => "(a páginas enlazadas desde \"$1\")", "debug" => "Debug", -"newpages" => "Pginas nuevas", -"ancientpages" => "Artculos ms antiguos", +"newpages" => "Páginas nuevas", +"ancientpages" => "Artículos más antiguos", "intl" => "Enlaces interlenguaje", -"movethispage" => "Trasladar esta pgina", +"movethispage" => "Trasladar esta página", "unusedimagestext" => "

    Por favor note que otros sitios web tales como otras wikipedias pueden enlazar a una imagen -con un URL directo, y de esa manera todava estar listada aqu +con un URL directo, y de esa manera todavía estar listada aquí a pesar de estar en uso activo.", "booksources" => "Fuentes de libros", -"booksourcetext" => "A continuacin hay una lista de enlaces a otros sitios que venden libros nuevos y usados, y tambin pueden contener informacin adicional acerca de los libros que ests buscando. -$wgSitename no est relacionada con ninguno de estos negocios, y esta lista no debe ser considerada un patrocinio de los mismos.", +"booksourcetext" => "A continuación hay una lista de enlaces a otros sitios que venden libros nuevos y usados, y también pueden contener información adicional acerca de los libros que estás buscando. +$wgSitename no está relacionada con ninguno de estos negocios, y esta lista no debe ser considerada un patrocinio de los mismos.", "alphaindexline" => "$1 a $2", # Email this user # -"mailnologin" => "No enviar direccin", +"mailnologin" => "No enviar dirección", "mailnologintext" => "Debes inciar sesin -y tener una direccin electrnica vlida en tus inciar sesión +y tener una dirección electrónica válida en tus preferencias -para enviar un correo electrnico a otros usuarios.", -"emailuser" => "Enva correo electrnico a este usuario", -"emailpage" => "Correo electrnico a usuario", -"emailpagetext" => "Si este usuario ha registrado una direccin electrnica vlida en sus preferencias de usuario, el siguiente formulario sirve para enviarle un mensaje. -La direccin electrnica que indicaste en tus preferencias de usuario aparecer en el remitente para que el destinatario te pueda responder.", -"noemailtitle" => "No hay direccin electrnica", -"noemailtext" => "Este usuario no ha especificado una direccin electrnica vlida, o ha elegido no recibir correo electrnico de otros usuarios.", +para enviar un correo electrónico a otros usuarios.", +"emailuser" => "Envía correo electrónico a este usuario", +"emailpage" => "Correo electrónico a usuario", +"emailpagetext" => "Si este usuario ha registrado una dirección electrónica válida en sus preferencias de usuario, el siguiente formulario sirve para enviarle un mensaje. +La dirección electrónica que indicaste en tus preferencias de usuario aparecerá en el remitente para que el destinatario te pueda responder.", +"noemailtitle" => "No hay dirección electrónica", +"noemailtext" => "Este usuario no ha especificado una dirección electrónica válida, o ha elegido no recibir correo electrónico de otros usuarios.", "emailfrom" => "De", "emailto" => "Para", "emailsubject" => "Tema", "emailmessage" => "Mensaje", "emailsend" => "Enviar", -"emailsent" => "Correo electrnico enviado", -"emailsenttext" => "Tu correo electrnico ha sido enviado.", +"emailsent" => "Correo electrónico enviado", +"emailsenttext" => "Tu correo electrónico ha sido enviado.", # Watchlist # "watchlist" => "Lista de seguimiento", "watchlistsub" => "(para el usuario \"$1\")", -"nowatchlist" => "No tienes ninguna pgina en tu lista de seguimiento.", -"watchnologin" => "No has iniciado sesin", +"nowatchlist" => "No tienes ninguna página en tu lista de seguimiento.", +"watchnologin" => "No has iniciado sesión", "watchnologintext" => "Debes iniciar sesin + wfLocalUrl( "Especial:Userlogin" ) . "\">iniciar sesión para modificar tu lista de seguimiento.", -"addedwatch" => "Aadido a la lista de seguimiento", -"addedwatchtext" => "La pgina \"$1\" ha sido aadida a tu "Añadido a la lista de seguimiento", +"addedwatchtext" => "La página \"$1\" ha sido añadida a tu lista se seguimiento. -Cambios futuros en esta pgina y su pgina de discusin asociada se indicarn ah, y la pgina aparecer en negritas en la lista de cambios recientes para hacerla ms fcil de detectar.

    +Cambios futuros en esta página y su página de discusión asociada se indicarán ahí, y la página aparecerá en negritas en la lista de cambios recientes para hacerla más fácil de detectar.

    -

    Cuando quieras eliminar la pgina de tu lista de seguimiento, presiona \"Dejar de vigilar\" en el men.", +

    Cuando quieras eliminar la página de tu lista de seguimiento, presiona \"Dejar de vigilar\" en el menú.", "removedwatch" => "Eliminada de la lista de seguimiento", -"removedwatchtext" => "La pgina \"$1\" ha sido eliminada de tu lista de seguimiento.", -"watchthispage" => "Vigilar esta pgina", +"removedwatchtext" => "La página \"$1\" ha sido eliminada de tu lista de seguimiento.", +"watchthispage" => "Vigilar esta página", "unwatchthispage" => "Dejar de vigilar", -"notanarticle" => "No es un artculo", +"notanarticle" => "No es un artículo", "watchnochange" => "Ninguno de los articulos en tu lista de seguimiento fue editado en el periodo de tiempo mostrado.", -"watchdetails" => "($1 pginas en tu lista de seguimiento, sin contar las de discusin; -$2 pginas editadas en total desde el cutoff; +"watchdetails" => "($1 páginas en tu lista de seguimiento, sin contar las de discusión; +$2 páginas editadas en total desde el cutoff; $3... mostrar y editar la lista completa.)", "watchmethod-recent" => "chequeando ediciones recentes en la lista de seguimiento", "watchmethod-list" => "buscando ediciones recentes en la lista de seguimiento", -"removechecked" => "Borrar artculos seleccionados de la lista de seguimiento", -"watchlistcontains" => "Tu lista de seguimiento posee $1 pginas.", -"watcheditlist" => "Aqu est un listado alfabtico de tu lista de seguimiento. -Selecciona los artculos que deseas remover de tu lista de seguimiento y -click el botn 'remover seleccionados' en el fin de la pantalla.", -"removingchecked" => "Removiendo los artculos solicitados de la lista de seguimiento...", -"couldntremove" => "No se pudo remover el artculo '$1'...", -"iteminvalidname" => "Problema con el artculo '$1', nombre invlido...", -"wlnote" => "Abajo estan los ltimos $1 cambios en las ltimas $2 horas.", +"removechecked" => "Borrar artículos seleccionados de la lista de seguimiento", +"watchlistcontains" => "Tu lista de seguimiento posee $1 páginas.", +"watcheditlist" => "Aquí está un listado alfabético de tu lista de seguimiento. +Selecciona los artículos que deseas remover de tu lista de seguimiento y +click el botón 'remover seleccionados' en el fin de la pantalla.", +"removingchecked" => "Removiendo los artículos solicitados de la lista de seguimiento...", +"couldntremove" => "No se pudo remover el artículo '$1'...", +"iteminvalidname" => "Problema con el artículo '$1', nombre inválido...", +"wlnote" => "Abajo estan los últimos $1 cambios en las últimas $2 horas.", # Delete/protect/revert # -"deletepage" => "Borrar esta pgina", +"deletepage" => "Borrar esta página", "confirm" => "Confirma", "excontent" => "contenido era:", "exbeforeblank" => "contenido antes de borrar era:", -"exblank" => "pgina estaba vaca", +"exblank" => "página estaba vacía", "confirmdelete" => "Confirma el borrado", "deletesub" => "(Borrando \"$1\")", -"historywarning" => "Atencin: La pgina que ests por borrar tiene una historia: ", -"confirmdeletetext" => "Ests a punto de borrar una pgina o imagen +"historywarning" => "Atención: La página que estás por borrar tiene una historia: ", +"confirmdeletetext" => "Estás a punto de borrar una página o imagen en forma permanente, -as como toda su historia, de la base de datos. +así como toda su historia, de la base de datos. Por favor, confirma que realmente quieres hacer eso, que entiendes las -consecuencias, y que lo ests haciendo de acuerdo con [[$wgMetaNamespace:Polticas]].", -"confirmcheck" => "S, realmente quiero borrar esto.", -"actioncomplete" => "Accin completa", +consecuencias, y que lo estás haciendo de acuerdo con [[$wgMetaNamespace:Políticas]].", +"confirmcheck" => "Sí, realmente quiero borrar esto.", +"actioncomplete" => "Acción completa", "deletedtext" => "\"$1\" ha sido borrado. -Ve $2 para un registro de los borrados ms recientes.", +Ve $2 para un registro de los borrados más recientes.", "deletedarticle" => "borrado \"$1\"", "dellogpage" => "Registro_de_borrados", -"dellogpagetext" => "Abajo hay una lista de los borrados ms recientes. +"dellogpagetext" => "Abajo hay una lista de los borrados más recientes. Todos los tiempos se muestran en hora del servidor (UTC).

    ", "deletionlog" => "registro de borrados", -"reverted" => "Recuperar una revisin anterior", -"deletecomment" => "Razn para el borrado", -"imagereverted" => "Revertido a una versin anterior tuvo xito.", +"reverted" => "Recuperar una revisión anterior", +"deletecomment" => "Razón para el borrado", +"imagereverted" => "Revertido a una versión anterior tuvo éxito.", "rollback" => "Revertir ediciones", "rollbacklink" => "Revertir", -"rollbackfailed" => "Reversin fallida", -"cantrollback" => "No se pueden revertir las ediciones; el ltimo colaborador es el nico autor de este artculo.", -"alreadyrolled" => "No se puede revertir la ltima edicin de [[$1]] -por [[Colaborador:$2|$2]] ([[Colaborador Discusin:$2|Discusin]]); alguien ms ya ha editado o revertido esa pgina. +"rollbackfailed" => "Reversión fallida", +"cantrollback" => "No se pueden revertir las ediciones; el último colaborador es el único autor de este artículo.", +"alreadyrolled" => "No se puede revertir la última edición de [[$1]] +por [[Colaborador:$2|$2]] ([[Colaborador Discusión:$2|Discusión]]); alguien más ya ha editado o revertido esa página. -La ltima edicin fue hecha por [[Colaborador:$3|$3]] ([[Colaborador Discusin:$3|DiscusinTalk]]). ", +La última edición fue hecha por [[Colaborador:$3|$3]] ([[Colaborador Discusión:$3|DiscusiónTalk]]). ", # only shown if there is an edit comment -"editcomment" => "El resumen de la edicin fue: \"$1\".", -"revertpage" => "Revertida a la ltima edicin por $1", +"editcomment" => "El resumen de la edición fue: \"$1\".", +"revertpage" => "Revertida a la última edición por $1", # Undelete -"undelete" => "Restaura una pgina borrada", -"undeletepage" => "Ve y restaura pginas borradas", -"undeletepagetext" => "Las siguientes pginas han sido borradas pero an estn en el archivo y pueden ser restauradas. El archivo puede ser limpiado peridicamente.", -"undeletearticle" => "Restaurar artculo borrado", +"undelete" => "Restaura una página borrada", +"undeletepage" => "Ve y restaura páginas borradas", +"undeletepagetext" => "Las siguientes páginas han sido borradas pero aún están en el archivo y pueden ser restauradas. El archivo puede ser limpiado periódicamente.", +"undeletearticle" => "Restaurar artículo borrado", "undeleterevisions" => "$1 revisiones archivadas", -"undeletehistory" => "Si t restauras una pgina, todas las revisiones sern restauradas a la historia. -Si una nueva pgina con el mismo nombre ha sido creada desde el borrado, las versiones restauradas aparecern como historia anterior, y la revisin actual de la pgina \"viva\" no ser automticamente reemplazada.", -"undeleterevision" => "Revisin borrada al $1", +"undeletehistory" => "Si tú restauras una página, todas las revisiones serán restauradas a la historia. +Si una nueva página con el mismo nombre ha sido creada desde el borrado, las versiones restauradas aparecerán como historia anterior, y la revisión actual de la página \"viva\" no será automáticamente reemplazada.", +"undeleterevision" => "Revisión borrada al $1", "undeletebtn" => "Restaurar!", "undeletedarticle" => "restaurado \"$1\"", -"undeletedtext" => "El artculo [[$1]] ha sido restaurado con xito. +"undeletedtext" => "El artículo [[$1]] ha sido restaurado con éxito. Ve [[$wgMetaNamespace:Registro_de_borrados]] para una lista de borrados y restauraciones recientes.", # Contributions @@ -853,44 +866,44 @@ Ve [[$wgMetaNamespace:Registro_de_borrados]] para una lista de borrados y restau "mycontris"=>"Mis contribuciones", "contribsub" => "$1", "nocontribs" => "No se encontraron cambios que cumplieran estos criterios.", -"ucnote" => "Abajo estn los ltimos $1 cambios de este usuario en los ltimos $2 das.", -"uclinks" => "Ver los ltimos $1 cambios; ver los ltimos $2 das.", -"uctop" => " (ltima modificacin)" , +"ucnote" => "Abajo están los últimos $1 cambios de este usuario en los últimos $2 días.", +"uclinks" => "Ver los últimos $1 cambios; ver los últimos $2 días.", +"uctop" => " (última modificación)" , # What links here # -"whatlinkshere" => "Lo que enlaza aqu", -"notargettitle" => "No hay pgina blanco", -"notargettext" => "No has especificado en qu pgina -llevar a cabo esta funcin.", +"whatlinkshere" => "Lo que enlaza aquí", +"notargettitle" => "No hay página blanco", +"notargettext" => "No has especificado en qué página +llevar a cabo esta función.", "linklistsub" => "(Lista de enlaces)", -"linkshere" => "Las siguientes pginas enlazan aqu:", -"nolinkshere" => "Ninguna pgina enlaza aqu.", +"linkshere" => "Las siguientes páginas enlazan aquí:", +"nolinkshere" => "Ninguna página enlaza aquí.", "isredirect" => "pagina redirigida", # Block/unblock IP # "blockip" => "Bloqueo de direcciones IP", "blockiptext" => "Usa el formulario siguiente para bloquear el -acceso de escritura desde una direccin IP especfica. -Esto debera hacerse slo para prevenir vandalismo, y de -acuerdo a las [[$wgMetaNamespace:Polticas| polticas de $wgSitename]]. -Explica la razn especfica del bloqueo (por ejemplo, citando -ls pginas en particular que han sido objeto de vandalismo desde la direccin IP a bloquear).", -"ipaddress" => "Direccin IP", -"ipbreason" => "Razn", -"ipbsubmit" => "Bloquear esta direccin", -"badipaddress" => "La direccin IP no tiene el formato correcto.", - -"noblockreason" => "Debes dar una razn para el bloqueo.", +acceso de escritura desde una dirección IP específica. +Esto debería hacerse sólo para prevenir vandalismo, y de +acuerdo a las [[$wgMetaNamespace:Políticas| políticas de $wgSitename]]. +Explica la razón específica del bloqueo (por ejemplo, citando +ls páginas en particular que han sido objeto de vandalismo desde la dirección IP a bloquear).", +"ipaddress" => "Dirección IP", +"ipbreason" => "Razón", +"ipbsubmit" => "Bloquear esta dirección", +"badipaddress" => "La dirección IP no tiene el formato correcto.", + +"noblockreason" => "Debes dar una razón para el bloqueo.", "blockipsuccesssub" => "Bloqueo exitoso", "blockipsuccesstext" => "La direccion IP \"$1\" ha sido bloqueada.
    Ver [[Especial:Ipblocklist|lista de IP bloqueadas]] para revisar bloqueos.", -"unblockip" => "Desbloquear direccin IP", +"unblockip" => "Desbloquear dirección IP", "unblockiptext" => "Usa el formulario que sigue para restaurar el -acceso de escritura a una direccin IP previamente bloqueada.", -"ipusubmit" => "Desbloquea esta direccin", -"ipusuccess" => "Direccin IP \"$1\" desbloqueada", +acceso de escritura a una dirección IP previamente bloqueada.", +"ipusubmit" => "Desbloquea esta dirección", +"ipusuccess" => "Dirección IP \"$1\" desbloqueada", "ipblocklist" => "Lista de direcciones IP bloqueadas", "blocklistline" => "$1, $2 bloquea $3", "blocklink" => "bloquear", @@ -903,17 +916,17 @@ acceso de escritura a una direcci "lockdb" => "Bloquear la base de datos", "unlockdb" => "Desbloquear la base de datos", -"lockdbtext" => "El bloqueo de la base de datos impedir a todos los usuarios editar pginas, cambiar sus preferencias, modificar sus listas de seguimiento y cualquier otra funcin que requiera realizar cambios en la base de datos. Por favor, confirma que sto es precisamente lo que quieres hacer y que desbloquears la base de datos tan pronto hayas finalizado las operaciones de mantenimiento.", -"unlockdbtext" => "El desbloqueo de la base de datos permitir a todos los usuarios editar pginas, cambiar sus preferencias, modificar sus listas de seguimiento y cualesquiera otras funciones que impliquen modificar la base de datos. Por favor, confirma que sto es precisamente lo que quieres hacer.", -"lockconfirm" => "S, realmente quiero bloquear la base de datos.", -"unlockconfirm" => "S, realmente quiero desbloquear la base de datos.", +"lockdbtext" => "El bloqueo de la base de datos impedirá a todos los usuarios editar páginas, cambiar sus preferencias, modificar sus listas de seguimiento y cualquier otra función que requiera realizar cambios en la base de datos. Por favor, confirma que ésto es precisamente lo que quieres hacer y que desbloquearás la base de datos tan pronto hayas finalizado las operaciones de mantenimiento.", +"unlockdbtext" => "El desbloqueo de la base de datos permitirá a todos los usuarios editar páginas, cambiar sus preferencias, modificar sus listas de seguimiento y cualesquiera otras funciones que impliquen modificar la base de datos. Por favor, confirma que ésto es precisamente lo que quieres hacer.", +"lockconfirm" => "Sí, realmente quiero bloquear la base de datos.", +"unlockconfirm" => "Sí, realmente quiero desbloquear la base de datos.", "lockbtn" => "Bloquear la base de datos", "unlockbtn" => "Desbloquear la base de datos", "locknoconfirm" => "No has confirmado lo que deseas hacer.", -"lockdbsuccesssub" => "El bloqueo se ha realizado con xito", -"unlockdbsuccesssub" => "El desbloqueo se ha realizado con xito", +"lockdbsuccesssub" => "El bloqueo se ha realizado con éxito", +"unlockdbsuccesssub" => "El desbloqueo se ha realizado con éxito", "lockdbsuccesstext" => "La base de datos de $wgSitename ha sido bloqueada. -
    Recuerda retirar el bloqueo despus de completar las tareas de mantenimiento.", +
    Recuerda retirar el bloqueo después de completar las tareas de mantenimiento.", "unlockdbsuccesstext" => "La base de datos de $wgSitename ha sido desbloqueada.", # SQL query @@ -922,69 +935,58 @@ acceso de escritura a una direcci "asksqltext" => "Usa el formulario que sigue para hacer una consulta directa a la base de datos de $wgSitename. Usa comillas simples ('como estas') para delimitar cadenas de caracteres literales. -Esto puede aadir una carga considerable al servidor, as que -por favor usa esta funcin lo menos possible.", +Esto puede añadir una carga considerable al servidor, así que +por favor usa esta función lo menos possible.", "sqlislogged" => "Por favor nota que todas las consultas son grabadas.", "sqlquery" => "Entra la consulta", -"querybtn" => "Enva la consulta", -"selectonly" => "Consultas diferentes a \"SELECT\" estn restringidas slo +"querybtn" => "Envía la consulta", +"selectonly" => "Consultas diferentes a \"SELECT\" están restringidas sólo a $wgSitename developers.", "querysuccessful" => "Consulta exitosa", # Move page # -"movepage" => "Renombrar pgina", -"movepagetext" => "Usando el formulario que sigue renombrar una pgina, +"movepage" => "Renombrar página", +"movepagetext" => "Usando el formulario que sigue renombrará una página, moviendo toda su historia al nombre nuevo. -El ttulo anterior se convertir en un redireccionamiento al nuevo ttulo. -Enlaces al antiguo ttulo de la pgina no se cambiarn. Asegrate de [[Especial:Maintenance|verificar]] no dejar redirecciones dobles o rotas. -T eres responsable de hacer que los enlaces sigan apuntando adonde se supone que lo deberan hacer. +El título anterior se convertirá en un redireccionamiento al nuevo título. +Enlaces al antiguo título de la página no se cambiarán. Asegúrate de [[Especial:Maintenance|verificar]] no dejar redirecciones dobles o rotas. +Tú eres responsable de hacer que los enlaces sigan apuntando adonde se supone que lo deberían hacer. -Recuerda que la pgina '''no''' ser renombrada si ya existe una pgina con el nuevo ttulo, a no ser que sea una pgina vaca o un ''redirect'' sin historia. -Esto significa que podrs renombrar una pgina a su ttulo original si cometes un error de escritura en el nuevo ttulo, pero que no podrs sobreescribir una pgina existente. +Recuerda que la página '''no''' será renombrada si ya existe una página con el nuevo título, a no ser que sea una página vacía o un ''redirect'' sin historia. +Esto significa que podrás renombrar una página a su título original si cometes un error de escritura en el nuevo título, pero que no podrás sobreescribir una página existente. ADVERTENCIA! -Este puede ser un cambio drstico e inesperado para una pgina popular; -por favor, asegurate de entender las consecuencias que acarrear +Este puede ser un cambio drástico e inesperado para una página popular; +por favor, asegurate de entender las consecuencias que acarreará antes de seguir adelante.", -"movepagetalktext" => "La pgina de discusin asociada, si existe, ser renombrada automticamente '''a menos que:''' -*Ests moviendo la pgina entre espacios de nombre diferentes, -*Una pgina de discusin no vaca ya existe con el nombre nuevo, o -*Desactivaste la opcin \"Renombrar la pgina de discusin tambin\". +"movepagetalktext" => "La página de discusión asociada, si existe, será renombrada automáticamente '''a menos que:''' +*Estés moviendo la página entre espacios de nombre diferentes, +*Una página de discusión no vacía ya existe con el nombre nuevo, o +*Desactivaste la opción \"Renombrar la página de discusión también\". -En estos casos, debers trasladar manualmente el contenido de la pgina de discusin.", -"movearticle" => "Renombrar pgina", +En estos casos, deberás trasladar manualmente el contenido de la página de discusión.", +"movearticle" => "Renombrar página", "movenologin" => "No has iniciado sesion", "movenologintext" => "Es necesario ser usuario registrado y haber iniciado sesin -para renombrar una pgina.", -"newtitle" => "A ttulo nuevo", -"movepagebtn" => "Renombrar pgina", + wfLocalUrl( "Especial:Userlogin" ) . "\">haber iniciado sesión +para renombrar una página.", +"newtitle" => "A título nuevo", +"movepagebtn" => "Renombrar página", "pagemovedsub" => "Renombramiento exitoso", -"pagemovedtext" => "Pgina \"[[$1]]\" renombrada a \"[[$2]]\".", -"articleexists" => "Ya existe una pgina con ese nombre, o el nombre que has -escogido no es vlido. +"pagemovedtext" => "Página \"[[$1]]\" renombrada a \"[[$2]]\".", +"articleexists" => "Ya existe una página con ese nombre, o el nombre que has +escogido no es válido. Por favor, elije otro nombre.", -"talkexists" => "La pgina fue renombrada con xito, pero la pgina de discusin no se pudo mover porque ya existe una en el ttulo nuevo. Por favor incorpora su contenido manualmente.", +"talkexists" => "La página fue renombrada con éxito, pero la página de discusión no se pudo mover porque ya existe una en el título nuevo. Por favor incorpora su contenido manualmente.", "movedto" => "renombrado a", -"movetalk" => "Renombrar la pgina de discusin tambin, si es aplicable.", -"talkpagemoved" => "La pgina de discusin correspondiente tambin fue renombrada.", -"talkpagenotmoved" => "La pgina de discusin correspondiente no fue renombrada.", +"movetalk" => "Renombrar la página de discusión también, si es aplicable.", +"talkpagemoved" => "La página de discusión correspondiente también fue renombrada.", +"talkpagenotmoved" => "La página de discusión correspondiente no fue renombrada.", ); -class LanguageEs extends Language { - - # Inherent default user options unless customization is desired - function getDefaultUserOptions () { - $opt = Language::getDefaultUserOptions(); - return $opt; - } - - function getBookstoreList () { - global $wgBookstoreListEn ; - return $wgBookstoreListEn ; - } +class LanguageEs extends LanguageUtf8 { function getNamespaces() { global $wgNamespaceNamesEs; @@ -1004,9 +1006,6 @@ class LanguageEs extends Language { } return false; } - #function specialPage( $name ) { - # return $this->getNsText( Namespace::getSpecial() ) . ":" . $name; - #} function getQuickbarSettings() { global $wgQuickbarSettingsEs; @@ -1030,28 +1029,24 @@ class LanguageEs extends Language { } - function getMonthName( $key ) - { + function getMonthName( $key ) { global $wgMonthNamesEs; return $wgMonthNamesEs[$key-1]; } - function getMonthAbbreviation( $key ) - { + function getMonthAbbreviation( $key ) { global $wgMonthAbbreviationsEs; return $wgMonthAbbreviationsEs[$key-1]; } - function getWeekdayName( $key ) - { + function getWeekdayName( $key ) { global $wgWeekdayNamesEs; return $wgWeekdayNamesEs[$key-1]; } # Inherit userAdjust() - function shortdate( $ts, $adj = false ) - { + function shortdate( $ts, $adj = false ) { if ( $adj ) { $ts = $this->userAdjust( $ts ); } $d = (0 + substr( $ts, 6, 2 )) . " " .$this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) . ", " . @@ -1059,8 +1054,7 @@ class LanguageEs extends Language { return $d; } - function date( $ts, $adj = false ) - { + function date( $ts, $adj = false ) { if ( $adj ) { $ts = $this->userAdjust( $ts ); } $d = (0 + substr( $ts, 6, 2 )) . " de " .$this->getMonthName( substr( $ts, 4, 2 ) ) . ", " . @@ -1068,45 +1062,37 @@ class LanguageEs extends Language { return $d; } - function time( $ts, $adj = false ) - { + 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 ) - { + function timeanddate( $ts, $adj = false ) { return $this->time( $ts, $adj ) . " " . $this->shortdate( $ts, $adj ); } - function getValidSpecialPages() - { + function getValidSpecialPages() { global $wgValidSpecialPagesEs; return $wgValidSpecialPagesEs; } - function getSysopSpecialPages() - - { + function getSysopSpecialPages() { global $wgSysopSpecialPagesEs; return $wgSysopSpecialPagesEs; } - function getDeveloperSpecialPages() - { + function getDeveloperSpecialPages() { global $wgDeveloperSpecialPagesEs; return $wgDeveloperSpecialPagesEs; } - function getMessage( $key ) - { - global $wgAllMessagesEs, $wgAllMessagesEn; - $m = $wgAllMessagesEs[$key]; - - if ( "" == $m ) { return $wgAllMessagesEn[$key]; } - else return $m; + function getMessage( $key ) { + global $wgAllMessagesEs; + if( isset( $wgAllMessagesEs[$key] ) ) + return $wgAllMessagesEs[$key]; + return ""; } } ?> diff --git a/languages/LanguageEt.php b/languages/LanguageEt.php index 9153f5b5b158..b74988697991 100644 --- a/languages/LanguageEt.php +++ b/languages/LanguageEt.php @@ -36,7 +36,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesEt = array( diff --git a/languages/LanguageFa.php b/languages/LanguageFa.php index 00cc74ebc9f3..695c5ed355b5 100644 --- a/languages/LanguageFa.php +++ b/languages/LanguageFa.php @@ -49,7 +49,8 @@ require_once("LanguageUtf8.php"); 'montparnasse' => "مون‌پارناس", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesFa = array( diff --git a/languages/LanguageFi.php b/languages/LanguageFi.php index b10be1660cf3..9b8899727b20 100644 --- a/languages/LanguageFi.php +++ b/languages/LanguageFi.php @@ -41,7 +41,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesFi = array( diff --git a/languages/LanguageFr.php b/languages/LanguageFr.php index e6a2ec83ea60..21abd3fd1b9e 100644 --- a/languages/LanguageFr.php +++ b/languages/LanguageFr.php @@ -40,7 +40,8 @@ require_once( "LanguageUtf8.php" ); 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesFr = array( @@ -1290,6 +1291,8 @@ class LanguageFr extends LanguageUtf8 return $wgAllMessagesEn[$key]; } } + + function isRTL() { return false; } } ?> diff --git a/languages/LanguageFy.php b/languages/LanguageFy.php index 96b56ef6b75a..46c39a93540e 100644 --- a/languages/LanguageFy.php +++ b/languages/LanguageFy.php @@ -43,7 +43,8 @@ if($wgMetaNamespace === FALSE) 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesFy = array( diff --git a/languages/LanguageGa.php b/languages/LanguageGa.php index 886732c806c8..e959252c41a6 100755 --- a/languages/LanguageGa.php +++ b/languages/LanguageGa.php @@ -53,7 +53,8 @@ Sourceforge (when that gets added.) 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesGa = array( diff --git a/languages/LanguageHe.php b/languages/LanguageHe.php index c3ce75dfcdaa..5694abe98f0c 100644 --- a/languages/LanguageHe.php +++ b/languages/LanguageHe.php @@ -43,7 +43,8 @@ require_once("LanguageUtf8.php"); 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesHe = array( diff --git a/languages/LanguageHu.php b/languages/LanguageHu.php index f90cee02ff31..6c8dfc0c70e8 100644 --- a/languages/LanguageHu.php +++ b/languages/LanguageHu.php @@ -42,7 +42,8 @@ require_once("LanguageUtf8.php"); 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesHu = array( diff --git a/languages/LanguageIa.php b/languages/LanguageIa.php index d12914928786..44b3646e1d20 100644 --- a/languages/LanguageIa.php +++ b/languages/LanguageIa.php @@ -38,7 +38,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesIa = array( diff --git a/languages/LanguageId.php b/languages/LanguageId.php index 1fbb3cc82b07..18a0049ff9e6 100644 --- a/languages/LanguageId.php +++ b/languages/LanguageId.php @@ -6,4 +6,4 @@ class LanguageId extends LanguageMs { /* Inherit everything. */ } -?> \ No newline at end of file +?> diff --git a/languages/LanguageIt.php b/languages/LanguageIt.php index 7db0bbb9ea18..e35312a77aea 100644 --- a/languages/LanguageIt.php +++ b/languages/LanguageIt.php @@ -8,20 +8,24 @@ # encapsulates some of the magic-ness. # /* private */ $wgNamespaceNamesIt = array( - -2 => "Media", - -1 => "Speciale", - 0 => "", - 1 => "Discussione", - 2 => "Utente", - 3 => "Discussioni_utente", - 4 => "Wikipedia", - 5 => "Discussioni_Wikipedia", - 6 => "Immagine", - 7 => "Discussioni_immagine", - 8 => "MediaWiki", - 9 => "Discussione_MediaWiki", - 10 => "Template", - 11 => "Template_talk" + NS_MEDIA => "Media", + NS_SPECIAL => "Speciale", + NS_MAIN => "", + NS_TALK => "Discussione", + NS_USER => "Utente", + NS_USER_TALK => "Discussioni_utente", + NS_WIKIPEDIA => "Wikipedia", + NS_WIKIPEDIA_TALK => "Discussioni_Wikipedia", + NS_IMAGE => "Immagine", + NS_IMAGE_TALK => "Discussioni_immagine", + NS_MEDIAWIKI => "MediaWiki", + NS_MEDIAWIKI_TALK => "Discussioni_MediaWiki", + NS_TEMPLATE => "Template", + NS_TEMPLATE_TALK => "Discussioni_template", + NS_HELP => "Aiuto", + NS_HELP_TALK => "Discussioni_aiuto", + NS_CATEGORY => "Categoria", + NS_CATEGORY_TALK => "Discussioni_categoria" ); @@ -37,7 +41,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgUserTogglesIt = array( diff --git a/languages/LanguageJa.php b/languages/LanguageJa.php index adbdeafd1223..2b5fda16bc99 100644 --- a/languages/LanguageJa.php +++ b/languages/LanguageJa.php @@ -16,8 +16,8 @@ require_once( "LanguageUtf8.php" ); 1 => "ノート" /* "Talk" */, 2 => "利用者" /* "User" */, 3 => "利用者‐会話" /* "User_talk" */, - 4 => "Wikipedia" /* "Wikipedia" */, - 5 => "Wikipedia‐ノート" /* "Wikipedia_talk" */, + 4 => $wgMetaNamespace /* "Wikipedia" */, + 5 => "{$wgMetaNamespace}‐ノート" /* "Wikipedia_talk" */, 6 => "画像" /* "Image" */, 7 => "画像‐ノート" /* "Image_talk" */, 8 => "MediaWiki", @@ -39,7 +39,8 @@ require_once( "LanguageUtf8.php" ); 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgUserTogglesJa = array( @@ -133,17 +134,17 @@ require_once( "LanguageUtf8.php" ); # "mainpage" => "メインページ", "about" => "About", -"aboutwikipedia" => "Wikipediaについて", -"aboutpage" => "Wikipedia:About", +"aboutwikipedia" => "{{SITENAME}}について", +"aboutpage" => "{{ns:4}}:About", "help" => "ヘルプ", -"helppage" => "Wikipedia:Help", -"wikititlesuffix" => "Wikipedia", +"helppage" => "{{ns:4}}:Help", +"wikititlesuffix" => "{{ns:4}}", "bugreports" => "バグの報告", -"bugreportspage" => "Wikipedia:バグの報告", +"bugreportspage" => "{{ns:4}}:バグの報告", "faq" => "FAQ", -"faqpage" => "Wikipedia:FAQ", +"faqpage" => "{{ns:4}}:FAQ", "edithelp" => "ヘルプを編集", -"edithelppage" => "Wikipedia:編集の仕方", +"edithelppage" => "{{ns:4}}:編集の仕方", "cancel" => "中止", "qbfind" => "検索", "qbbrowse" => "閲覧", @@ -156,7 +157,7 @@ require_once( "LanguageUtf8.php" ); "currentevents" => "最近の出来事", "errorpagetitle" => "エラー", "returnto" => "$1 に戻る。", -"fromwikipedia" => "出典: フリー百科事典『ウィキペディア(Wikipedia)』", +"fromwikipedia" => "出典: フリー百科事典『ウィキペディア({{SITENAME}})』", "whatlinkshere" => "ここにリンクしているページ", "help" => "ヘルプ", "search" => "検索", @@ -174,7 +175,7 @@ require_once( "LanguageUtf8.php" ); "viewcount" => "このページは $1 回アクセスされました。", "printsubtitle" => "(From http://www.wikipedia.org)", "protectedpage" => "保護されたページ", -"administrators" => "Wikipedia:Administrators", +"administrators" => "{{ns:4}}:Administrators", "sysoptitle" => "シスオペによるアクセスが必要", "sysoptext" => "あなたの要求した処理は \"sysop\" のみが実行できます。 $1を参照してください。", @@ -183,16 +184,16 @@ require_once( "LanguageUtf8.php" ); "nbytes" => "$1 バイト", "go" => "行く", "ok" => "OK", -"sitetitle" => "Wikipedia", +"sitetitle" => "{{SITENAME}}", "sitesubtitle" => "フリー百科事典", "retrievedfrom" => "Retrieved from \"$1\"", # Main script and global functions # "nosuchaction" => "そのような動作はありません", -"nosuchactiontext" => "URI で指定された動作は Wikipedia で認識できません。", +"nosuchactiontext" => "URI で指定された動作は {{SITENAME}} で認識できません。", "nosuchspecialpage" => "そのような特別ページはありません。", -"nospecialpagetext" => "その特別ページの要求は Wikipedia には理解できません。", +"nospecialpagetext" => "その特別ページの要求は {{SITENAME}} には理解できません。", # General errors # @@ -212,7 +213,7 @@ MySQL returned error \"$3: $4\".", "readonlytext" => "ウィキペディア・データベースは現在、新しい記事の追加や修正を受け付けない「ロック」状態になっています。これはおそらくは定期的なメンテナンスのためで、メンテナンス終了後は正常な状態に復帰します。 データベースをロックした管理者は次のような説明をしています:

    $1 -

    The Wikipedia database is currently locked to new +

    The {{SITENAME}} 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: @@ -242,7 +243,7 @@ that it should have found, named \"$1\". ウィキペディアを匿名で使い続うことができます。 あるいはログインして元の、あるいは別のユーザーとして使うこともできます。

    You are now logged out. -You can continue to use Wikipedia anonymously, or you can log in +You can continue to use {{SITENAME}} anonymously, or you can log in again as the same or as a different user.\n", "welcomecreation" => "

    $1 さん、ようこそ!

    あなたのアカウントができました。 @@ -270,13 +271,13 @@ again as the same or as a different user.\n", "loginerror" => "ログイン・エラー", "noname" => "ユーザ名を正しく指定していません。", "loginsuccesstitle" => "ログイン成功", -"loginsuccess" => "あなたは現在 Wikipedia に \"$1\" としてログインしています。", +"loginsuccess" => "あなたは現在 {{SITENAME}} に \"$1\" としてログインしています。", "nosuchuser" => " \"$1\" というユーザーは見当たりません。 綴りが正しいか再度確認するか、下記のフォームを使ってアカウントを作成してください。", "wrongpassword" => "パスワードが間違っています。再度入力してください。", "mailmypassword" => "新しいパスワードを、メールで送る", -"passwordremindertitle" => "Password reminder from Wikipedia (ウィキペディアからのパスワードのお知らせ)", -"passwordremindertext" => "どなたか ($1 のIPアドレスの使用者)が、Wikipediaのログイン・パスワードの再発行を依頼しました。 +"passwordremindertitle" => "Password reminder from {{SITENAME}} (ウィキペディアからのパスワードのお知らせ)", +"passwordremindertext" => "どなたか ($1 のIPアドレスの使用者)が、{{SITENAME}}のログイン・パスワードの再発行を依頼しました。 ユーザ \"$2\" のパスワードを、 \"$3\" に変更しました。 ログイン後、別のパスワードに変更しましょう。", "noemail" => "ユーザ \"$1\" のメール・アドレスは登録されていません。", @@ -327,7 +328,7 @@ press \"Save page\".\n

    " */, revision of this page. If you save it, any changes made since this revision will be lost.\n" */ "yourdiff" => "あなたの更新内容", -"copyrightwarning" => "Wikipediaに投稿された文書は、すべて GNU Free Documentation License によって発行されたものとみなされますので、留意してください。 +"copyrightwarning" => "{{SITENAME}}に投稿された文書は、すべて GNU Free Documentation License によって発行されたものとみなされますので、留意してください。

    (詳細は $1 を参照, また、参考までに非公式日本語訳は <http://www.opensource.jp/fdl/fdl.ja.html> を参照)。

    あなたの文章が他人によって自由に編集、配布されることを望まない場合は、投稿を控えて下さい。

    また、あなたの投稿する文章はあなた自身によって書かれたものであるか、パブリック・ドメインかそれに類する自由なリソースからの複製であることを約束して下さい。 @@ -364,9 +365,9 @@ Please check the URL you used to access this page.\n", # 検索結果(Search results) # "searchresults" => "検索結果" /* "Search results" */, -"searchhelppage" => "Wikipedia:Searching", -"searchingwikipedia" => "Wikipedia を検索中" /* "Searching Wikipedia" */, -"searchresulttext" => "Wikipedia の検索についての詳しい情報は、 $1 をご覧下さい。" /* "For more information about searching Wikipedia, see $1." */ , +"searchhelppage" => "{{ns:4}}:Searching", +"searchingwikipedia" => "{{SITENAME}} を検索中" /* "Searching Wikipedia" */, +"searchresulttext" => "{{SITENAME}} の検索についての詳しい情報は、 $1 をご覧下さい。" /* "For more information about searching Wikipedia, see $1." */ , "searchquery" => "問い合わせ \"$1\" について、" /* "For query \"$1\"" */, "badquery" => "おかしな形式の検索問い合わせ" /* "Badly formed search query" */, "badquerytext" => "問い合わせを処理できませんでした。 @@ -397,8 +398,7 @@ containing all of the search terms will appear in the result)." */, "preferences" => "オプション" /* "Preferences" */, "prefsnologin" => "ログインしていません" /* "Not logged in" */, "prefsnologintext" => "ユーザーオプションを変更するためには、 -ログインしている必要があります。" +ログインしている必要があります。" /* "You must be logged in to set user preferences." */, @@ -430,15 +430,15 @@ from server time (UTC)." */, # "recentchanges" => "最近更新したページ", "recentchangestext" => "最近付け加えられた変更はこのページで確認することができます。 -[[Wikipedia:新規参加者の方、ようこそ]]! +[[{{ns:4}}:新規参加者の方、ようこそ]]! 以下のページも参照して下さい: [[wikipedia:ウィキペディア よくある質問集]], -[[Wikipedia:ウィキペディアの基本方針とガイドライン]] -(特に[[Wikipedia:記事名のつけ方]], -[[Wikipedia:中立的な観点]]), -[[Wikipedia:ウィキペディアで起こしがちな間違い]]. +[[{{ns:4}}:ウィキペディアの基本方針とガイドライン]] +(特に[[{{ns:4}}:記事名のつけ方]], +[[{{ns:4}}:中立的な観点]]), +[[{{ns:4}}:ウィキペディアで起こしがちな間違い]]. -ウィキペディアが成功するためには、あなたの投稿する内容が他人の著作権などによって束縛されていないことがとても重要です。[[Wikipedia:著作権]] +ウィキペディアが成功するためには、あなたの投稿する内容が他人の著作権などによって束縛されていないことがとても重要です。[[{{ns:4}}:著作権]] 法的責任問題は、プロジェクトに致命傷を与えることもある問題です。他人の著作物などを流用することは絶対に避けてください。また次のページも参照して下さい。[http://meta.wikipedia.org/wiki/Special:Recentchanges recent meta discussion]" /* Track the most recent changes to Wikipedia on this page. @@ -475,24 +475,20 @@ See also the [http://meta.wikipedia.org/wiki/Special:Recentchanges recent meta d "reuploaddesc" => "アップロードのフォームへ戻る Return to the upload form.", "uploadnologin" => "ログインしていません、 Not logged in", "uploadnologintext" => "ユーザーオプションを変更するためには、 -ログインしている必要があります。 +ログインしている必要があります。 -You must be logged in +You must be logged in to upload files.", "uploadfile" => "ファイルのアップロード Upload file", "uploaderror" => "アップロード エラー Upload error", "uploadtext" => "ご注意! -ここにファイルをアップロードする前に、ウィキペディアの画像利用の方針を +ここにファイルをアップロードする前に、ウィキペディアの画像利用の方針を よく読んで、方針に反することのないようにして下さい。.

    これまでにアップロードされたイメージの一覧や検索には、 -画像リストが便利です。 -アップロードと削除の記録はにあります。. +画像リストが便利です。 +アップロードと削除の記録はにあります。.

    記事に必要な画像を新しくアップロードする場合には、以下のフォームを利用して下さい。 ほとんどのブラウザーでは、\"Browse\"というボタンが表示されます。そのボタンを押すと、 @@ -512,7 +508,7 @@ wfLocalUrlE( "Wikipedia:Upload_log" ) . "\">にあります。. 画像を記事に組み入れるためには、次のようなフォーマットでリンクを張ります。 [[画像:file.jpg]] [[画像:file.png|説明文]] -また、サウンドには [[media:file.ogg]] を用います。 +また、サウンドには [[{{ns:-2}}:file.ogg]] を用います。

    ウィキペディアの他のページと同じく、あなたがアップロードしたファイルも、より よい百科事典作成のために他のユーザーによって編集、削除されることがあります。 @@ -564,7 +560,7 @@ All times shown are server time (UTC). */, I affirm that the copyright holder of this file agrees to license it under the terms of the $1.", -"copyrightpage" => "Wikipedia:Copyrights", +"copyrightpage" => "{{ns:4}}:Copyrights", "copyrightpagename" => "ウィキペディアの著作権", "uploadedfiles" => "アップロードされたファイル", @@ -620,7 +616,7 @@ created and by whom, and anything else you may know about it." */, "statistics" => "アクセス統計", "sitestats" => "サイト全体の統計", "userstats" => "ユーザー登録統計", -"sitestatstext" => "

    データベース内には $1 ページのデータがあります。この数字には「会話ページ」や「Wikipedia関連のページ」、「書きかけのページ」、「リダイレクト」など、記事とはみなせないページが含まれています。これらを除いた、記事とみなされるページ数は約 $2 ページになります。

    ページの総閲覧回数は $3 回です。また、ソフトウェアの更新(2002/06/20)以来、$4 回の編集が行われました。平均すると、1ページあたり $5 回の編集が行われ、1編集あたり $6 回閲覧されています。

    ", +"sitestatstext" => "

    データベース内には $1 ページのデータがあります。この数字には「会話ページ」や「{{SITENAME}}関連のページ」、「書きかけのページ」、「リダイレクト」など、記事とはみなせないページが含まれています。これらを除いた、記事とみなされるページ数は約 $2 ページになります。

    ページの総閲覧回数は $3 回です。また、ソフトウェアの更新(2002/06/20)以来、$4 回の編集が行われました。平均すると、1ページあたり $5 回の編集が行われ、1編集あたり $6 回閲覧されています。

    ", "userstatstext" => "登録済みの利用者は $1 人で、内 $2 人が管理者権限を持っています。($3を参照)", # Miscellaneous special pages @@ -657,11 +653,9 @@ created and by whom, and anything else you may know about it." */, # "mailnologin" => "送信先のアドレスがありません。" /* No send address"*/, "mailnologintext" => "ログインしていません。メールを送信するためには、 -あなたの電子メールアドレスをユーザーオプション +あなたの電子メールアドレスをユーザーオプション で指定し、 -ログインしている必要があります。" +ログインしている必要があります。" /* You must be logged in and have a valid e-mail address in your "あなたのウォッチリストは空です。" /* "You have no items on your watchlist." */, "watchnologin" => "ログインしていません" /* "Not logged in" */, "watchnologintext" => "ウォッチリストを変更するためには、 -ログインしている必要があります。" +ログインしている必要があります。" /* "You must be logged in to modify your watchlist." */, "addedwatch" => "ウォッチリストに加えました" /* "Added to watchlist" */, "addedwatchtext" => "ページ\"$1\" をあなたの -ウォッチリスト +ウォッチリスト に追加しました。 このページと、付属のノートのページに変更があった際にはそれをウォッチリストで 知ることができます。また、 -最近更新したページ では +最近更新したページ では ウォッチリストに含まれているページはボールド体で表示され、見つけやすく なります。

    @@ -741,13 +733,13 @@ make it easier to pick out.

    "confirmdeletetext" => "指定されたページまたはイメージは、その更新履歴と共に データベースから永久に削除されようとしています。 あなたが削除を望んでおり、それがもたらす帰結を理解しており、かつあなたの -しようとしていることが[[Wikipedia:Policy|ウィキペディアの基本方針]]に即したものであることを確認して下さい。 +しようとしていることが[[{{ns:4}}:Policy|ウィキペディアの基本方針]]に即したものであることを確認して下さい。 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]].", +[[{{ns:4}}:Policy]].", "confirmcheck" => "はい。上記の通りです。 Yes, I really want to delete this.", "actioncomplete" => "削除を完了しました。 Action complete", "deletedtext" => "\"$1\" は削除されました。 \"$1\" has been deleted. @@ -794,7 +786,7 @@ to perform this function on." */, "blockiptext" => "Use the form below to block write access from a specific IP address. This should be done only only to prevent valndalism, and in -accordance with [[Wikipedia:Policy|Wikipedia policy]]. +accordance with [[{{ns:4}}:Policy|{{SITENAME}} policy]]. Fill in a specific reason below (for example, citing particular pages that were vandalized).", "ipaddress" => "IP Address", @@ -836,22 +828,22 @@ Please confirm that this is what you intend to do.", "locknoconfirm" => "You did not check the confirmation box.", "lockdbsuccesssub" => "Database lock succeeded", "unlockdbsuccesssub" => "Database lock removed", -"lockdbsuccesstext" => "The Wikipedia database has been locked. +"lockdbsuccesstext" => "The {{SITENAME}} database has been locked.
    Remember to remove the lock after your maintenance is complete.", -"unlockdbsuccesstext" => "The Wikipedia database has been unlocked.", +"unlockdbsuccesstext" => "The {{SITENAME}} database has been unlocked.", # SQL query (この部分は管理者用なので当面英文を残しておきます。) # "asksql" => "SQL query", "asksqltext" => "Use the form below to make a direct query of the -Wikipedia database. +{{SITENAME}} 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 -Wikipedia developers.", +{{SITENAME}} developers.", "querysuccessful" => "Query successful", # Move page ページの移動 @@ -878,8 +870,7 @@ proceeding." */, "movearticle" => "ページの移動", "movenologin" => "ログインしていません", "movenologintext" => "この機能を利用するためには、ユーザー登録をして、 -ログインしている必要が +ログインしている必要が あります。", "newtitle" => "新しいページへ" /* "To new title" */, "movepagebtn" => "ページを移動" /* "Move page" */, diff --git a/languages/LanguageKo.php b/languages/LanguageKo.php index 3f320116704d..ed12b7145ed3 100644 --- a/languages/LanguageKo.php +++ b/languages/LanguageKo.php @@ -47,7 +47,8 @@ require_once( "LanguageUtf8.php" ); 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgUserTogglesKo = array( diff --git a/languages/LanguageLa.php b/languages/LanguageLa.php index b724bee3b340..c66a95f5db46 100644 --- a/languages/LanguageLa.php +++ b/languages/LanguageLa.php @@ -38,7 +38,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesLa = array( diff --git a/languages/LanguageMs.php b/languages/LanguageMs.php index 0df38ebf85bd..5c8e9cc22b0a 100644 --- a/languages/LanguageMs.php +++ b/languages/LanguageMs.php @@ -40,7 +40,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesMs = array( diff --git a/languages/LanguageNl.php b/languages/LanguageNl.php index 71e0ab60e1c8..a752495e2a5c 100644 --- a/languages/LanguageNl.php +++ b/languages/LanguageNl.php @@ -1,6 +1,13 @@ "Overleg", NS_USER => "Gebruiker", NS_USER_TALK => "Overleg_gebruiker", - NS_WIKIPEDIA => "Wikipedia", - NS_WIKIPEDIA_TALK => "Overleg_Wikipedia", + NS_WIKIPEDIA => $wgMetaNamespace, + NS_WIKIPEDIA_TALK => "Overleg_$wgMetaNamespace", NS_IMAGE => "Afbeelding", NS_IMAGE_TALK => "Overleg_afbeelding", NS_MEDIAWIKI => "MediaWiki", @@ -40,7 +47,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesNl = array( @@ -148,22 +156,22 @@ "category" => "rubriek", "category_header" => "Artikelen in rubriek \"$1\"", "subcategories" => "Onderrubrieken", -"linktrail" => "/^([a-z]+)(.*)\$/sD", +"linktrail" => "/^((?:[a-z]|ä|ö|ü|ï|ë|é|è|à)+)(.*)\$/sD", "mainpage" => "Hoofdpagina", "mainpagetext" => "Installatie van de Wiki software geslaagd.", "about" => "Info", -"aboutwikipedia" => "Over Wikipedia", -"aboutpage" => "Wikipedia:info", +"aboutwikipedia" => "Over {{SITENAME}}", +"aboutpage" => "{{ns:4}}:info", "help" => "Help", -"helppage" => "Wikipedia:Help", -"wikititlesuffix" => "Wikipedia NL", +"helppage" => "{{ns:4}}:Help", +"wikititlesuffix" => "{{SITENAME}} NL", "bugreports" => "Foutenrapportage", "sitesupport" => "Financieel bijdragen", -"bugreportspage" => "Wikipedia:Foutenrapportage", +"bugreportspage" => "{{ns:4}}:Foutenrapportage", "faq" => "FAQ", -"faqpage" => "Wikipedia:Veel gestelde vragen", +"faqpage" => "{{ns:4}}:Veel gestelde vragen", "edithelp" => "Hulp bij bewerken", -"edithelppage" => "Wikipedia:Instructies", +"edithelppage" => "{{ns:4}}:Instructies", "cancel" => "Annuleren", "qbfind" => "Zoeken", "qbbrowse" => "Bladeren", @@ -203,7 +211,7 @@ "gnunote" => "Alle tekst op deze pagina valt onder de GNU FDL.", "printsubtitle" => "(Uit http://nl.wikipedia.org)", "protectedpage" => "Beveiligde pagina", -"administrators" => "Wikipedia:Systeembeheerders", +"administrators" => "{{ns:4}}:Systeembeheerders", "sysoptitle" => "Toegang alleen voor systeembeheerders", "sysoptext" => "De gevraagde handeling kan enkel uitgevoerd worden door systeembeheerders. Zie $1.", "developertitle" => "Toegang alleen voor systeemontwikkelaars", @@ -211,9 +219,9 @@ "nbytes" => "$1 bytes", "go" => "OK", "ok" => "OK", -"sitetitle" => "Wikipedia NL", # Okay, HERE's an ugly hack. There should be a cleaner way to do this. +"sitetitle" => "{{SITENAME}} NL", # Okay, HERE's an ugly hack. There should be a cleaner way to do this. "sitesubtitle" => "De vrije encyclopedie", -"retrievedfrom" => "Afkomstig van Wikipedia NL, de Vrije Encyclopedie. \"$1\"", +"retrievedfrom" => "Afkomstig van {{SITENAME}} NL, de Vrije Encyclopedie. \"$1\"", "newmessages" => "U heeft $1.", "newmessageslink" => "een nieuw bericht", "editsection" => "bewerken", @@ -226,9 +234,9 @@ # Main script and global functions # Algemene functies "nosuchaction" => "Gevraagde handeling bestaat niet", -"nosuchactiontext" => "De door de URL gespecifieerde handeling wordt niet herkend door de Wikipedia software", +"nosuchactiontext" => "De door de URL gespecifieerde handeling wordt niet herkend door de {{SITENAME}} software", "nosuchspecialpage" => "De gevraagde speciale pagina is onvindbaar", -"nospecialpagetext" => "U heeft een speciale pagina aangevraagd die niet wordt herkend door de Wikipedia software", +"nospecialpagetext" => "U heeft een speciale pagina aangevraagd die niet wordt herkend door de {{SITENAME}} software", # General errors # Algemene foutmeldingen @@ -250,12 +258,12 @@ MySQL gaf de volgende foutmelding: \"$3: $4\".\n", "cachederror" => "Hieronder wordt een versie uit de cache getoond. Dit is mogelijk niet de meest recente versie.", "readonly" => "Database geblokeerd", "enterlockreason" => "Geef een reden voor de blokkering en hoelang het waarschijnlijk gaat duren. De ingegeven reden zal aan de gebruikers getoond worden.", -"readonlytext" => "De database van Wikipedia is momenteel gesloten voor nieuwe bewerkingen en wijzigingen, waarschijnlijk voor bestandsonderhoud. +"readonlytext" => "De database van {{SITENAME}} is momenteel gesloten voor nieuwe bewerkingen en wijzigingen, waarschijnlijk voor bestandsonderhoud. De verantwoordelijke systeembeheerder gaf hiervoor volgende reden op:

    $1", "missingarticle" => "De database heeft een paginatekst (\"$1\") die het zou moeten vinden niet gevonden. Dit kan betekenen dat u een oude versie hebt proberen op te halen van een pagina die inmiddels verdwenen is. Indien dit niet het geval is, dan is er waarschijnlijk een fout in de software. Meld dit a.u.b. aan een beheerder, met vermelding van de URL.", "internalerror" => "Interne fout", -"filecopyerror" => "Bestand \"$1\" naar \"$2\" kopiren niet mogelijk.", +"filecopyerror" => "Bestand \"$1\" naar \"$2\" kopiëren niet mogelijk.", "filerenameerror" => "Wijziging titel bestand \"$1\" in \"$2\" niet mogelijk.", "filedeleteerror" => "Kon bestand \"$1\" niet verwijderen.", "filenotfound" => "Kon bestand \"$1\" niet vinden.", @@ -272,7 +280,7 @@ De verantwoordelijke systeembeheerder gaf hiervoor volgende reden op: # Aanmelden en afmelden "logouttitle" => "Afmelden gebruiker", "logouttext" => "U bent nu afgemeld. -U kunt Wikipedia anoniem blijven gebruiken, of u opnieuw aanmelden onder dezelfde of onder een andere naam.\n", +U kunt {{SITENAME}} anoniem blijven gebruiken, of u opnieuw aanmelden onder dezelfde of onder een andere naam.\n", "welcomecreation" => "

    Welkom, $1!

    Uw gebruikersprofiel is aangemaakt. U kunt nu uw persoonlijke voorkeuren instellen.", @@ -300,12 +308,12 @@ U kunt Wikipedia anoniem blijven gebruiken, of u opnieuw aanmelden onder dezelfd "loginerror" => "Inlogfout", "noname" => "U dient een gebruikersnaam op te geven.", "loginsuccesstitle" => "Aanmelden gelukt.", -"loginsuccess" => "U bent nu aangemeld bij Wikipedia NL als \"$1\".", +"loginsuccess" => "U bent nu aangemeld bij {{SITENAME}} NL als \"$1\".", "nosuchuser" => "Er bestaat geen gebruiker met de naam \"$1\". Controleer uw spelling, of gebruik onderstaand formulier om een nieuw gebruikersprofiel aan te maken.", "wrongpassword" => "Het ingegeven wachtwoord is niet juist. Probeer het opnieuw.", "mailmypassword" => "Stuur mij een nieuw wachtwoord op", -"passwordremindertitle" => "Herinnering wachtwoord Wikipedia NL", -"passwordremindertext" => "Iemand (waarschijnlijk uzelf) vanaf IP-adres $1 heeft verzocht u een nieuw wachtwoord voor Wikipedia NL toe te zenden. Het nieuwe wachtwoord voor gebruiker \"$2\" is \"$3\". Advies: nu aanmelden en uw wachtwoord wijzigigen.", +"passwordremindertitle" => "Herinnering wachtwoord {{SITENAME}} NL", +"passwordremindertext" => "Iemand (waarschijnlijk uzelf) vanaf IP-adres $1 heeft verzocht u een nieuw wachtwoord voor {{SITENAME}} NL toe te zenden. Het nieuwe wachtwoord voor gebruiker \"$2\" is \"$3\". Advies: nu aanmelden en uw wachtwoord wijzigigen.", "noemail" => "Er is geen e-mailadres geregistreerd voor \"$1\".", "passwordsent" => "Er is een nieuw wachtwoord verzonden naar het e-mailadres wat geregistreerd staat voor \"$1\". Gelieve na ontvangst opnieuw aan te melden.", @@ -320,7 +328,7 @@ Gelieve na ontvangst opnieuw aan te melden.", "preview" => "Nakijken", "showpreview" => "Toon bewerking ter controle", "blockedtitle" => "Gebruiker is geblokkeerd", -"blockedtext" => "Uw gebruikersnaam of IP-adres is door $1 geblokkeerd. De opgegeven reden:
    $2

    . Elke computer die verbonden is met het internet krijgt een [[ip-adres]] toegewezen van zijn [[internetprovider]]. In veel gevallen krijgt een gebruiker regelmatig een ander ip-adres toegewezen. Het het door u gebruikte ip-adres is recent gebruikt door u of iemand anders voor bewerkingen die in overtreding zijn van de [[Wikipedia:Toch een paar regels|regels]] van Wikipedia.

    U kunt voor overleg contact opnemen met de [[Wikipedia:Systeembeheerders|systeembeheerders]] via [http://wikinl.sol3.info/wikinl_info.html#email wikinl-l-owner@wikipedia.org een formulier].", +"blockedtext" => "Uw gebruikersnaam of IP-adres is door $1 geblokkeerd. De opgegeven reden:
    $2

    . Elke computer die verbonden is met het internet krijgt een [[ip-adres]] toegewezen van zijn [[internetprovider]]. In veel gevallen krijgt een gebruiker regelmatig een ander ip-adres toegewezen. Het het door u gebruikte ip-adres is recent gebruikt door u of iemand anders voor bewerkingen die in overtreding zijn van de [[{{ns:4}}:Toch een paar regels|regels]] van {{SITENAME}}.

    U kunt voor overleg contact opnemen met de [[{{ns:4}}:Systeembeheerders|systeembeheerders]] via [http://wikinl.sol3.info/wikinl_info.html#email wikinl-l-owner@wikipedia.org een formulier].", "whitelistedittitle" => "Aanmelden verplicht", "whitelistedittext" => "Om dit artikel te kunnen wijzigen, moet u [[Speciaal:Userlogin|ingelogd]] zijn.", "whitelistreadtitle" => "Aanmelden verplicht", @@ -346,7 +354,7 @@ Gelieve na ontvangst opnieuw aan te melden.", "storedversion" => "Opgeslagen versie", "editingold" => "WAARSCHUWING: U bent bezig een oude versie van deze pagina te bewerken. Wanneer u uw bewerking opslaat, gaan alle wijzigingen die na deze versie gedaan zijn verloren.\n.\n", "yourdiff" => "Wijzigingen", -"copyrightwarning" => "Opgelet: Alle bijdragen aan Wikipedia worden geacht te zijn vrijgegeven onder de GNU Free Documentation License. Als u niet wil dat uw tekst door anderen naar believen bewerkt en verspreid kan worden, kies dan niet voor 'Pagina Opslaan'.
    Hierbij belooft u ons tevens dat u deze tekst zelf hebt geschreven, of overgenomen uit een vrije, openbare bron.
    GEBRUIK GEEN MATERIAAL DAT BESCHERMD WORDT DOOR AUTEURSRECHT, TENZIJ JE DAARTOE TOESTEMMING HEBT!", +"copyrightwarning" => "Opgelet: Alle bijdragen aan {{SITENAME}} worden geacht te zijn vrijgegeven onder de GNU Free Documentation License. Als u niet wil dat uw tekst door anderen naar believen bewerkt en verspreid kan worden, kies dan niet voor 'Pagina Opslaan'.
    Hierbij belooft u ons tevens dat u deze tekst zelf hebt geschreven, of overgenomen uit een vrije, openbare bron.
    GEBRUIK GEEN MATERIAAL DAT BESCHERMD WORDT DOOR AUTEURSRECHT, TENZIJ JE DAARTOE TOESTEMMING HEBT!", "longpagewarning" => "Waarschuwing! Deze pagina is $1 kilobyte lang. Pagina's langer dan 32 kb zorgen voor problemen op sommige browsers. Het is daarom waarschijnlijk een goed idee deze pagina in meerdere pagina's te splitsen.", "readonlywarning" => "Waarschuwing! De database is op dit moment in onderhoud; het is daarom niet mogelijk op dit moment pagina's te wijzigen. Wij adviseren u de tekst op uw eigen computer op te slaan en later opnieuw te proberen deze pagina te bewerken.", "protectedpagewarning" => "Waarschuwing! U staat op het punt een beveiligde pagina te wijzigen. Gewone gebruikers kunnen deze pagina niet bewerken.", @@ -376,12 +384,12 @@ Gelieve na ontvangst opnieuw aan te melden.", # Search results # Zoekresultaten "searchresults" => "Zoekresultaten", -"searchhelppage" => "Wikipedia:Zoeken", -"searchingwikipedia" => "Zoeken op Wikipedia", -"searchresulttext" => "Voor meer informatie over zoeken op Wikipedia: zie $1.", +"searchhelppage" => "{{ns:4}}:Zoeken", +"searchingwikipedia" => "Zoeken op {{SITENAME}}", +"searchresulttext" => "Voor meer informatie over zoeken op {{SITENAME}}: zie $1.", "searchquery" => "Voor zoekopdracht \"$1\"", "badquery" => "Slecht geformuleerde zoekopdracht", -"badquerytext" => "Uw zoekopdracht kon niet worden uitgevoerd. Dit kan komen doordat u geprobeerd hebt om een 'woord' van 1 letter te zoeken, of 1 van de Verboden woorden.", +"badquerytext" => "Uw zoekopdracht kon niet worden uitgevoerd. Dit kan komen doordat u geprobeerd hebt om een 'woord' van 1 letter te zoeken, of 1 van de Verboden woorden.", "matchtotals" => "De zoekterm \"$1\" is gevonden in $2 paginatitels en in de tekst van $3 pagina's.", "nogomatch" => "Er bestaat geen pagina met deze titel, op zoek naar pagina's waarin de tekst voorkomt.", "titlematches" => "Overeenkomst met volgende titels", @@ -393,9 +401,9 @@ Gelieve na ontvangst opnieuw aan te melden.", "viewprevnext" => "($1) ($2) ($3) bekijken.", "showingresults" => "Hieronder $1 resultaten vanaf nummer $2.", "showingresultsnum" => "Hieronder $3 resultaten vanaf nummer $2.", -"nonefound" => "Merk op: wanneer een zoekopdracht mislukt komt dat vaak door gebruik van veel voorkomende woorden zoals \"de\" en \"het\", die niet gendexeerd zijn, of door verschillende zoektermen tegelijk op te geven (u krijgt dan alleen in pagina's waaarin alle opgegeven termen voorkomen). +"nonefound" => "Merk op: wanneer een zoekopdracht mislukt komt dat vaak door gebruik van veel voorkomende woorden zoals \"de\" en \"het\", die niet geïndexeerd zijn, of door verschillende zoektermen tegelijk op te geven (u krijgt dan alleen in pagina's waaarin alle opgegeven termen voorkomen). -Het kan natuurlijk dat er gewoon nog geen artikel aanwezig op Wikipedia NL over dit onderwerp. Mogelijk is het aanwezig in een andere taal. Zoek met de multi-wikipedia zoeker in de andere Wikipedia's, of buiten Wikipedia in een andere encyclopedie. Wanneer u gevonden heeft wat u zocht, kunt u wellicht daarover een artikel schrijven op Wikipedia NL, zodat de volgende die zoekt wat u zocht het wel kan vinden. +Het kan natuurlijk dat er gewoon nog geen artikel aanwezig op {{SITENAME}} NL over dit onderwerp. Mogelijk is het aanwezig in een andere taal. Zoek met de multi-wikipedia zoeker in de andere {{SITENAME}}'s, of buiten {{SITENAME}} in een andere encyclopedie. Wanneer u gevonden heeft wat u zocht, kunt u wellicht daarover een artikel schrijven op {{SITENAME}} NL, zodat de volgende die zoekt wat u zocht het wel kan vinden. ", "powersearch" => "Zoeken", "powersearchtext" => " @@ -403,8 +411,8 @@ Het kan natuurlijk dat er gewoon nog geen artikel aanwezig op Wikipedia NL over $1
    $2 Toon redirects   Zoek: $3 $9", "searchdisabled" => "Wegens een overbelasting van de server zijn sommige functies die het systeem extra belasten tijdelijk niet beschikbaar. - Hierdoor is in de interne zoekfunctie van Wikipedia (vermoedelijk) niet beschikbaar voor onbepaalde duur.

    -Via google kunt u zoeken op Wikipedia.
    + Hierdoor is in de interne zoekfunctie van {{SITENAME}} (vermoedelijk) niet beschikbaar voor onbepaalde duur.

    +Via google kunt u zoeken op {{SITENAME}}.
    @@ -412,16 +420,16 @@ Via google kunt u zoeken op Wikipedia.
    - + -
    Het volledige internetWikipedia NL
    +
    Het volledige internet{{SITENAME}} NL

    U zal niet alle artikels kunnen vinden maar het zal niet veel schelen. -Als u zoekt via google op Wikipedia zal u ook treffers vinden op Wikipedia die geen artikels zijn. -Wikipedia heeft bij de meeste artikels ook een \"overlegpagina\" en diverse soorten dienstpagina's. -Enkel de pagina's die geen prefix (zoals Wikipedia:, Gebruiker: of Overleg:) hebben zijn artikels. +Als u zoekt via google op {{SITENAME}} zal u ook treffers vinden op {{SITENAME}} die geen artikels zijn. +{{SITENAME}} heeft bij de meeste artikels ook een \"overlegpagina\" en diverse soorten dienstpagina's. +Enkel de pagina's die geen prefix (zoals {{ns:4}}:, Gebruiker: of Overleg:) hebben zijn artikels. ", "blanknamespace" => "(encyclopedie)", @@ -433,11 +441,11 @@ Enkel de pagina's die geen prefix (zoals Wikipedia:, Gebruiker: of Overleg:) heb wfLocalUrl( "Special:Userlogin" ) . "\">aangemeld te zijn om voorkeuren te kunnen instellen.", "prefslogintext" => "U bent aangemeld als \"$1\". Uw interne identificatienummer is $2. -Een beschrijving van de verschillende opties staat op [[Wikipedia:Voorkeuren]].", +Een beschrijving van de verschillende opties staat op [[{{ns:4}}:Voorkeuren]].", "prefsreset" => "Standaardvoorkeuren hersteld.", "qbsettings" => "Menubalkinstellingen", "changepassword" => "Wachtwoord wijzigen", -"skin" => "Wikipedia-Uiterlijk", +"skin" => "{{SITENAME}}-Uiterlijk", "math" => "Wiskundige formules", "math_failure" => "Wiskundige formule niet begrijpelijk", "math_unknown_error" => "Onbekende fout in formule", @@ -461,10 +469,10 @@ Een beschrijving van de verschillende opties staat op [[Wikipedia:Voorkeuren]]." "stubthreshold" => "Grootte waaronder een pagina als 'stub' wordt aangegeven", "recentchangescount" => "Aantal titels in lijst recente wijzigingen", "savedprefs" => "Uw voorkeuren zijn opgeslagen.", -"timezonetext" => "De tijd van de server is UTC (Coordinated Universal Time) Geef aan hoeveel uur de plaatselijke tijd in uw woonplaats verschilt met die van de server. Voor o.a. Belgi en Nederland: +1 (+2 zomertijd); voor Suriname en voor de Nederlandse Antillen: -4; voor Zuid-Afrika: +2.", +"timezonetext" => "De tijd van de server is UTC (Coordinated Universal Time) Geef aan hoeveel uur de plaatselijke tijd in uw woonplaats verschilt met die van de server. Voor o.a. België en Nederland: +1 (+2 zomertijd); voor Suriname en voor de Nederlandse Antillen: -4; voor Zuid-Afrika: +2.", "localtime" => "Plaatselijke tijd", "timezoneoffset" => "Tijdsverschil", -"servertime" => "De locale tijd van de Wikipedia-server:", +"servertime" => "De locale tijd van de {{SITENAME}}-server:", "guesstimezone" => "Vanuit de browser toe te voegen", "emailflag" => "E-mail ontvangen van andere gebruikers uitschakelen", "defaultns" => "Naamruimten om direct in te zoeken:", @@ -473,9 +481,9 @@ Een beschrijving van de verschillende opties staat op [[Wikipedia:Voorkeuren]]." # Recente wijzigingen "changes" => "wijzigingen", "recentchanges" => "Recente wijzigingen", -"recentchangestext" => "Deze pagina toont de laatste aanpassingen aan artikelen van Wikipedia NL.
    -Ben je hier nieuw? Lees dan ook [[Wikipedia:Welkom voor nieuwelingen|Welkom voor nieuwelingen]] -- Wil je een pagina verwijderd hebben? Ga dan naar [[Wikipedia:Te verwijderen pagina's|Te verwijderen pagina's]] -- Wil je iets met andere gebruikers overleggen? Ga naar [[Wikipedia:Overleg gewenst|Overleg gewenst]] of meld je aan voor de discussielijst [http://mail.wikipedia.org/mailman/listinfo/wikinl-l WikiNL-l] -- Zin in een gezellige babbel? Kom naar de [[Wikipedia:De kroeg|De kroeg]] of doe mee op ons nieuwe [http://chat.wikipedia.be Wiki-chatkanaal].

    -Om Wikipedia te laten slagen is het erg belangrijk geen materiaal toe te voegen waarop iemand anders auteursrechten heeft, tenzij je daartoe toestemming hebt. De wettelijke gevolgen van inbreuk op de rechten van anderen zouden de hele onderneming grote schade kunnen toebrengen.", +"recentchangestext" => "Deze pagina toont de laatste aanpassingen aan artikelen van {{SITENAME}} NL.
    +Ben je hier nieuw? Lees dan ook [[{{ns:4}}:Welkom voor nieuwelingen|Welkom voor nieuwelingen]] -- Wil je een pagina verwijderd hebben? Ga dan naar [[{{ns:4}}:Te verwijderen pagina's|Te verwijderen pagina's]] -- Wil je iets met andere gebruikers overleggen? Ga naar [[{{ns:4}}:Overleg gewenst|Overleg gewenst]] of meld je aan voor de discussielijst [http://mail.wikipedia.org/mailman/listinfo/wikinl-l WikiNL-l] -- Zin in een gezellige babbel? Kom naar de [[{{ns:4}}:De kroeg|De kroeg]] of doe mee op ons nieuwe [http://chat.wikipedia.be Wiki-chatkanaal].

    +Om {{SITENAME}} te laten slagen is het erg belangrijk geen materiaal toe te voegen waarop iemand anders auteursrechten heeft, tenzij je daartoe toestemming hebt. De wettelijke gevolgen van inbreuk op de rechten van anderen zouden de hele onderneming grote schade kunnen toebrengen.", "rcloaderr" => "Meest recente wijzigingen laden", "rcnote" => "Hieronder zijn de $1 laatste wijzigingen gedaan in de laatste $2 dagen.", "rcnotefrom" => "Veranderingen sinds $2 (met een maximum van $1 veranderingen).", @@ -507,16 +515,16 @@ om bestanden te uploaden.", "uploadfile" => "upload bestand", "uploaderror" => "upload fout", "uploadtext" => "STOP! Voor u iets hier upload, -wees zeker dat het in overeenkomst is met het Wikipedia NL afbeeldingsbeleid. +wees zeker dat het in overeenkomst is met het {{SITENAME}} NL afbeeldingsbeleid.

    Om de reeds ge-uploade bestanden te bekijken of te zoeken ga naar de lijst van ge-uploade bestanden. Uploads en verwijderingen worden bijgehouden in het upload logboek. +wfLocalUrlE( "{{ns:4}}:Upload_logboek" ) . "\">upload logboek.

    Gebruik het onderstaande formulier om bestanden zoals afbeeldingen en geluidsbestanden die relevant zijn voor uw artikel te u-loaden. Bij de meeste browers zoals 'Internet Explorer' en 'Mozilla' zult u een \"Bladeren...\" of \"Browse..\" knop zien die een standaard dialoogscherm van uw bestuuringssysteem oproept. Kiest u een bestand, dan zal het ingevuld worden in het veld naast de \"Bladeren...\" knop. U dient ook het vakje aan te vinken waarmee u bevestigt dat er geen schending van auteursrechten plaatsvindt door het gebruik van dat bestand. Vul het veld \"Omschrijving\" in. Druk op de \"Upload\" knop om het uploaden te voltooien. Dit kan even duren als u een langzame internetverbinding gebruikt.

    Gebruik bij voorkeur JPEG voor foto's, PNG voor tekeningen en dergelijke en OGG voor geluid. Geef uw bestanden een duidelijk omschrijvende naam om verwarring te voorkomen. Om het bestand in een pagina te laten verschijnen, kunt u het volgende doen; [[afbeelding:uw_foto.jpg]] of [[afbeelding:uw_logo.png|alt text]] of [[media:uw_geluid.ogg]] voor audio. -

    Vergeet niet dat net als met andere pagina's op Wikipedia anderen de ge-uploade bestanden kunnen verwijderen indien men denkt dat dat in het voordeel van het project is. Bij misbruik van dit systeem kan u de toegang tot Wikipedia NL ontzegd worden.", +

    Vergeet niet dat net als met andere pagina's op {{SITENAME}} anderen de ge-uploade bestanden kunnen verwijderen indien men denkt dat dat in het voordeel van het project is. Bij misbruik van dit systeem kan u de toegang tot {{SITENAME}} NL ontzegd worden.", "uploadlog" => "upload logboek", "uploadlogpage" => "Upload_logboek", "uploadlogpagetext" => "Hieronder de lijst met de meest recent ge-uploade bestanden. Alle tijden zijn servertijd (UTC). @@ -528,8 +536,8 @@ Geef uw bestanden een duidelijk omschrijvende naam om verwarring te voorkomen. O "filestatus" => "Auteursrechtensituatie", "filesource" => "Auteur/bron", "affirmation" => "Ik verklaar dat de eigenaar van de rechten op dit bestand toestemt om het onder de voorwaarden van $1 te verspreiden.", -"copyrightpage" => "Wikipedia:Auteursrechten", -"copyrightpagename" => "Wikipedia NL auteursrechten", +"copyrightpage" => "{{ns:4}}:Auteursrechten", +"copyrightpagename" => "{{SITENAME}} NL auteursrechten", "uploadedfiles" => "Ge-uploade bestanden", "noaffirmation" => "U dient te bevestigen dat deze handeling geen inbreuk maakt op auteursrechten.", "ignorewarning" => "Negeer de waarschuwing en sla het bestand op.", @@ -571,20 +579,20 @@ Geef uw bestanden een duidelijk omschrijvende naam om verwarring te voorkomen. O # Statistics # Statistieken "statistics" => "Statistieken", -"sitestats" => "Statistieken betreffende Wikipedia NL", +"sitestats" => "Statistieken betreffende {{SITENAME}} NL", "userstats" => "Statistieken betreffende gebruikers", -"sitestatstext" => "Er zijn $1 pagina's in de database. Hierbij zijn inbegrepen \"Overleg\" pagina's, pagina's over Wikipedia, extreem korte \"stub\" pagina's, redirects, en diverse andere pagina's die waarschijnlijk niet als artikel moeten worden geteld. Na uitsluiting daarvan, is er een geschat aantal van $2 artikels.

    +"sitestatstext" => "Er zijn $1 pagina's in de database. Hierbij zijn inbegrepen \"Overleg\" pagina's, pagina's over {{SITENAME}}, extreem korte \"stub\" pagina's, redirects, en diverse andere pagina's die waarschijnlijk niet als artikel moeten worden geteld. Na uitsluiting daarvan, is er een geschat aantal van $2 artikels.

    Er is in totaal $3 maal een pagina bekeken, en $4 maal een pagina bewerkt. Dat geeft een gemiddelde van $5 bewerkingen per pagina, en $6 paginabezoeken per wijziging.", "userstatstext" => "Er zijn momenteel $1 geregistreerde gebruikers; hiervan zijn er $2 systeembeheerders (zie $3).", # Maintenance Page # "maintenance" => "Onderhoudspagina", -"maintnancepagetext" => "Op deze pagina vindt u een aantal handige zoekopdrachten om kleine alledaagse problemen in de Wikipedia te verhelpen. Sommige van deze zoekopdrachten vormen een grote belasting voor de database; ga dus niet na elke paar pagina's die u hersteld heeft, de pagina opnieuw laden.", +"maintnancepagetext" => "Op deze pagina vindt u een aantal handige zoekopdrachten om kleine alledaagse problemen in de {{SITENAME}} te verhelpen. Sommige van deze zoekopdrachten vormen een grote belasting voor de database; ga dus niet na elke paar pagina's die u hersteld heeft, de pagina opnieuw laden.", "maintenancebacklink" => "Terug naar de Onderhoudspagina", "disambiguations" => "Doorverwijspagina's", -"disambiguationspage" => "Wikipedia:Doorverwijspagina", -"disambiguationstext" => "De onderstaande artikelen verwijzen naar een [[Wikipedia:Doorverwijspagina|doorverwijspagina]]. Deze zouden waarschijnlijk direct naar de onderwerpspagina moeten verwijzen.
    Als doorverwijspagina's worden die pagina's beschouwd waar vanaf $1 naar verwezen wordt.
    Opmerking: Deze lijst toont alleen pagina's vanuit de hoofdnaamruimte, en dus niet Overlegpagina's, Wikipedia:pagina's en dergelijke.", +"disambiguationspage" => "{{ns:4}}:Doorverwijspagina", +"disambiguationstext" => "De onderstaande artikelen verwijzen naar een [[{{ns:4}}:Doorverwijspagina|doorverwijspagina]]. Deze zouden waarschijnlijk direct naar de onderwerpspagina moeten verwijzen.
    Als doorverwijspagina's worden die pagina's beschouwd waar vanaf $1 naar verwezen wordt.
    Opmerking: Deze lijst toont alleen pagina's vanuit de hoofdnaamruimte, en dus niet Overlegpagina's, {{ns:4}}:pagina's en dergelijke.", "doubleredirects" => "Dubbele redirects", "doubleredirectstext" => "Let op: Er kunnen in deze lijst redirects staan die er niet in thuishoren. Dat komt over het algemeen doordat er na de #REDIRECT nog andere links op de pagina staan.
    \nOp elke regel vindt u de eerste redirectpagina, de tweede redirectpagina en de eerste regel van de tweede redirectpagina. Normaal gesproken bevat deze laatste de pagina waar de eerste redirect naartoe zou moeten verwijzen.", "brokenredirects" => "Gebroken redirects", @@ -624,9 +632,9 @@ Er is in totaal $3 maal een pagina bekeken, en $4 maal een pagina bewerkt. Dat g "ancientpages" => "Oudste artikels", #"intl" => "Taallinks", - not active yet "movethispage" => "Verplaats deze pagina", -"unusedimagestext" => "

    Let op! Het zou kunnen dat er via een directe link verwezen wordt naar een afbeelding, bijvoorbeeld vanuit een anderstalige Wikipedia. Het is daarom mogelijk dat een afbeelding hier vermeld staat terwijl het wel degelijk gebruikt wordt.", +"unusedimagestext" => "

    Let op! Het zou kunnen dat er via een directe link verwezen wordt naar een afbeelding, bijvoorbeeld vanuit een anderstalige {{SITENAME}}. Het is daarom mogelijk dat een afbeelding hier vermeld staat terwijl het wel degelijk gebruikt wordt.", "booksources" => "Boekhandels", -"booksourcetext" => "Hieronder is een lijst van externe websites die boeken verkopen en ook verdere informatie hierover kunnen verstekken. Via een ISBN-nummer in een artikel kunt u via deze pagina een werk opzoeken.

    Deze dienst is enkel ter uwer informatie. Wikipedia NL heeft geen enkele relatie met deze websites.", +"booksourcetext" => "Hieronder is een lijst van externe websites die boeken verkopen en ook verdere informatie hierover kunnen verstekken. Via een ISBN-nummer in een artikel kunt u via deze pagina een werk opzoeken.

    Deze dienst is enkel ter uwer informatie. {{SITENAME}} NL heeft geen enkele relatie met deze websites.", "alphaindexline" => "$1 tot $2", # Email this user @@ -699,7 +707,7 @@ op 'Verwijderen' onderaan deze pagina.", "confirmdelete" => "Bevestig verwijdering", "deletesub" => "(Verwijderen \"$1\")", "historywarning" => "Waarschuwing: Deze pagina heeft een voorgeschiedenis. Overtuig uzelf ervan dat geen van de oudere versies een te behouden pagina is.", -"confirmdeletetext" => "U bent staat op het punt een pagina of afbeelding voorgoed te verwijderen. Dit verwijdert alle inhoud en geschiedenis van de database. Bevestig hieronder dat dit inderdaad uw bedoeling is, dat u de gevolgen begrijpt, en dat uw verwijdering overeenkomt met de [[Wikipedia:Instructies]].", +"confirmdeletetext" => "U bent staat op het punt een pagina of afbeelding voorgoed te verwijderen. Dit verwijdert alle inhoud en geschiedenis van de database. Bevestig hieronder dat dit inderdaad uw bedoeling is, dat u de gevolgen begrijpt, en dat uw verwijdering overeenkomt met de [[{{ns:4}}:Instructies]].", "confirmcheck" => "Ja, ik wil dit voorgoed verwijderen.", "actioncomplete" => "Actie voltooid", "deletedtext" => "\"$1\" is verwijderd. Zie $2 voor een overzicht van recente verwijderingen.", @@ -728,7 +736,7 @@ op 'Verwijderen' onderaan deze pagina.", "undeleterevision" => "Verwijderde versie van $1", "undeletebtn" => "Terugplaatsen!", "undeletedarticle" => "\"$1\" is teruggeplaatst.", -"undeletedtext" =>"Het artikel [[$1]] is teruggeplaatst. Zie [[Wikipedia:Logboek verwijderde pagina's]] voor een lijst van de meest recente verwijderingen en terugplaatsingen.", +"undeletedtext" =>"Het artikel [[$1]] is teruggeplaatst. Zie [[{{ns:4}}:Logboek verwijderde pagina's]] voor een lijst van de meest recente verwijderingen en terugplaatsingen.", # Contributions # Bijdragen @@ -786,18 +794,18 @@ Zie de [[speciaal:Ipblocklist|Lijst van geblokkeerde IP-adressen]].", "locknoconfirm" => "U heeft niet het vakje aangevinkt om uw keuze te bevestigen.", "lockdbsuccesssub" => "Blokkering database succesvol", "unlockdbsuccesssub" => "Blokkering van de database opgeheven", -"lockdbsuccesstext" => "De database van Wikipedia NL is geblokkeerd. +"lockdbsuccesstext" => "De database van {{SITENAME}} NL is geblokkeerd. Vergeet niet de database opnieuw te de-blokkeren zodra u klaar bent met uw onderhoud.", -"unlockdbsuccesstext" => "Blokkering van de database van Wikipedia NL is opgeheven.", +"unlockdbsuccesstext" => "Blokkering van de database van {{SITENAME}} NL is opgeheven.", # SQL query # SQL raadplegen "asksql" => "SQL raadplegen", -"asksqltext" => "Gebruik het onderstaande formulier om een direct verzoek naar de database van Wikipedia NL te zenden. Gebruik enkelvoudige aanhalingstekens ('zoals hier') voor letterlijke teksten. Een ingewikkelde aanvraag kan de sever vaak extra belasten. Gelieve deze mogelijkheid daarom spaarzaam te gebruiken. Zie ook: [[Wikipedia:SQL opdrachten]].", +"asksqltext" => "Gebruik het onderstaande formulier om een direct verzoek naar de database van {{SITENAME}} NL te zenden. Gebruik enkelvoudige aanhalingstekens ('zoals hier') voor letterlijke teksten. Een ingewikkelde aanvraag kan de sever vaak extra belasten. Gelieve deze mogelijkheid daarom spaarzaam te gebruiken. Zie ook: [[{{ns:4}}:SQL opdrachten]].", "sqlislogged" => "Alle SQL Queries worden gelogd.", "sqlquery" => "Voer opdracht in", "querybtn" => "Verstuur opdracht", -"selectonly" => "Opdrachten anders dan \"SELECT\" zijn voorbehouden aan Wikipedia ontwikkelaars.", +"selectonly" => "Opdrachten anders dan \"SELECT\" zijn voorbehouden aan {{SITENAME}} ontwikkelaars.", "querysuccessful" => "Opdracht succesvol", # Move page @@ -826,157 +834,128 @@ te zijn om een pagina te verplaatsen.", ); -class LanguageNl extends Language { - - function getDefaultUserOptions () { - $opt = Language::getDefaultUserOptions(); - $opt["date"]=2; - return $opt; - } - - function getBookstoreList () { - global $wgBookstoreListEn ; # No locals defined... yet - return $wgBookstoreListEn ; - } - - function getNamespaces() { - global $wgNamespaceNamesNl; - return $wgNamespaceNamesNl; - } - - function getNsText( $index ) { - global $wgNamespaceNamesNl; - return $wgNamespaceNamesNl[$index]; - } - - function getNsIndex( $text ) { - global $wgNamespaceNamesNl; - - foreach ( $wgNamespaceNamesNl as $i => $n ) { - if ( 0 == strcasecmp( $n, $text ) ) { return $i; } - } - return false; - } - - # Inherit specialPage() - - function getQuickbarSettings() { - global $wgQuickbarSettingsNl; - return $wgQuickbarSettingsNl; - } - - function getSkinNames() { - global $wgSkinNamesNl; - return $wgSkinNamesNl; - } - - function getMathNames() { - global $wgMathNamesNl; - return $wgMathNamesNl; - } - - function getDateFormats(){ - global $wgDateFormatsNl; - return $wgDateFormatsNl; - } - - function getUserToggles() { - global $wgUserTogglesNl; - return $wgUserTogglesNl; - } - - function getMonthName( $key ) - { - global $wgMonthNamesNl; - return $wgMonthNamesNl[$key-1]; - } - - /* by default we just return base form; this should be ok for Nl */ - - function getMonthNameGen( $key ) - { - global $wgMonthNamesNl; - return $wgMonthNamesNl[$key-1]; - } - - function getMonthRegex() - { - global $wgMonthNamesNl; - - return implode( "|", $wgMonthNamesNl ); - } - - - function getMonthAbbreviation( $key ) - { - global $wgMonthAbbreviationsNl; - - return $wgMonthAbbreviationsNl[$key-1]; - } - - function getWeekdayName( $key ) - { - global $wgWeekdayNamesNl; - return $wgWeekdayNamesNl[$key-1]; - } - - # Inherit userAdjust() - - function date( $ts, $adj = false ) - { - if ( $adj ) { $ts = $this->userAdjust( $ts ); } - - $d = (0 + substr( $ts, 6, 2 )) . " " . - $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) . " " . - substr( $ts, 0, 4 ); - 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->date( $ts, $adj ) . " " . $this->time( $ts, $adj ); - } - - function getValidSpecialPages() - { - global $wgValidSpecialPagesNl; - return $wgValidSpecialPagesNl; - } - - - function getSysopSpecialPages() - { - global $wgSysopSpecialPagesNl; - return $wgSysopSpecialPagesNl; - } - - function getDeveloperSpecialPages() - { - global $wgDeveloperSpecialPagesNl; - return $wgDeveloperSpecialPagesNl; - } - - function getMessage( $key ) - { - global $wgAllMessagesNl, $wgAllMessagesEn; - $m = $wgAllMessagesNl[$key]; - - if ( "" == $m ) { return $wgAllMessagesEn[$key]; } - else return $m; - } - - function isRTL() { return false; } - - # Inherit iconv(), ucfirst(), stripForSearch(), recodeForEdit(), recodeInput() - # since they are same as English/Latin1 +class LanguageNl extends LanguageUtf8 { + + function getDefaultUserOptions () { + $opt = Language::getDefaultUserOptions(); + $opt["date"]=2; + return $opt; + } + + function getNamespaces() { + global $wgNamespaceNamesNl; + return $wgNamespaceNamesNl; + } + + function getNsText( $index ) { + global $wgNamespaceNamesNl; + return $wgNamespaceNamesNl[$index]; + } + + function getNsIndex( $text ) { + global $wgNamespaceNamesNl; + + foreach ( $wgNamespaceNamesNl as $i => $n ) { + if ( 0 == strcasecmp( $n, $text ) ) { return $i; } + } + return false; + } + + # Inherit specialPage() + + function getQuickbarSettings() { + global $wgQuickbarSettingsNl; + return $wgQuickbarSettingsNl; + } + + function getSkinNames() { + global $wgSkinNamesNl; + return $wgSkinNamesNl; + } + + function getMathNames() { + global $wgMathNamesNl; + return $wgMathNamesNl; + } + + function getUserToggles() { + global $wgUserTogglesNl; + return $wgUserTogglesNl; + } + + function getMonthName( $key ) { + global $wgMonthNamesNl; + return $wgMonthNamesNl[$key-1]; + } + + function getMonthRegex() { + global $wgMonthNamesNl; + return implode( "|", $wgMonthNamesNl ); + } + + + function getMonthAbbreviation( $key ) { + global $wgMonthAbbreviationsNl; + return $wgMonthAbbreviationsNl[$key-1]; + } + + function getWeekdayName( $key ) { + global $wgWeekdayNamesNl; + return $wgWeekdayNamesNl[$key-1]; + } + + # Inherit userAdjust() + + function date( $ts, $adj = false ) { + if ( $adj ) { $ts = $this->userAdjust( $ts ); } + + $d = (0 + substr( $ts, 6, 2 )) . " " . + $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) . " " . + substr( $ts, 0, 4 ); + 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->date( $ts, $adj ) . " " . $this->time( $ts, $adj ); + } + + function getValidSpecialPages() { + global $wgValidSpecialPagesNl; + return $wgValidSpecialPagesNl; + } + + + function getSysopSpecialPages() { + global $wgSysopSpecialPagesNl; + return $wgSysopSpecialPagesNl; + } + + function getDeveloperSpecialPages() { + global $wgDeveloperSpecialPagesNl; + return $wgDeveloperSpecialPagesNl; + } + + function getMessage( $key ) { + global $wgAllMessagesNl; + if( isset( $wgAllMessagesNl[$key] ) ) { + return $wgAllMessagesNl[$key]; + } else { + return ""; + } + } + + function isRTL() { return false; } + + # Inherit iconv(), ucfirst(), stripForSearch(), recodeForEdit(), recodeInput() + # since they are same as English/Latin1 } + ?> diff --git a/languages/LanguageNo.php b/languages/LanguageNo.php index 5e8c3988385b..075cd0226a0b 100644 --- a/languages/LanguageNo.php +++ b/languages/LanguageNo.php @@ -40,7 +40,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesNo = array( diff --git a/languages/LanguageOc.php b/languages/LanguageOc.php index c2249b8a8bfd..2754fa55e36d 100644 --- a/languages/LanguageOc.php +++ b/languages/LanguageOc.php @@ -35,7 +35,8 @@ require_once( "LanguageUtf8.php" ); 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesOc = array( diff --git a/languages/LanguagePl.php b/languages/LanguagePl.php index f4a8dbc72cb6..8a78dad656c3 100644 --- a/languages/LanguagePl.php +++ b/languages/LanguagePl.php @@ -53,7 +53,8 @@ if( $wgMetaNamespace == "Wikipedia" ) { 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesPl = array( diff --git a/languages/LanguagePt.php b/languages/LanguagePt.php index d24e3b6d1403..ae66ff96924f 100644 --- a/languages/LanguagePt.php +++ b/languages/LanguagePt.php @@ -54,7 +54,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesPt = array( diff --git a/languages/LanguageRo.php b/languages/LanguageRo.php index 64e03316f9f6..adafb2dde779 100644 --- a/languages/LanguageRo.php +++ b/languages/LanguageRo.php @@ -39,7 +39,8 @@ require_once("LanguageUtf8.php"); 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesRo = array( diff --git a/languages/LanguageRu.php b/languages/LanguageRu.php index b5e76c73582a..10acba03d7ec 100644 --- a/languages/LanguageRu.php +++ b/languages/LanguageRu.php @@ -43,7 +43,8 @@ if($wgMetaNamespace === FALSE) 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesRu = array( diff --git a/languages/LanguageSk.php b/languages/LanguageSk.php index 6df1d6975bec..8f6da1805e61 100644 --- a/languages/LanguageSk.php +++ b/languages/LanguageSk.php @@ -35,7 +35,8 @@ require_once("LanguageUtf8.php"); 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesSk = array( diff --git a/languages/LanguageSl.php b/languages/LanguageSl.php index 2e0f02708651..3f2e653580b7 100644 --- a/languages/LanguageSl.php +++ b/languages/LanguageSl.php @@ -51,7 +51,8 @@ require_once( "LanguageUtf8.php" ); 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesSl = array( diff --git a/languages/LanguageSq.php b/languages/LanguageSq.php index 237f76d432e8..68f5d623e58a 100644 --- a/languages/LanguageSq.php +++ b/languages/LanguageSq.php @@ -40,7 +40,8 @@ require_once("LanguageUtf8.php"); 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesSq = array( diff --git a/languages/LanguageSv.php b/languages/LanguageSv.php index 3bc2670b2908..2b699d398c83 100644 --- a/languages/LanguageSv.php +++ b/languages/LanguageSv.php @@ -1,4 +1,13 @@ "Special", NS_MAIN => "", NS_TALK => "Diskussion", - NS_USER => "Anvndare", - NS_USER_TALK => "Anvndardiskussion", + NS_USER => "Användare", + NS_USER_TALK => "Användardiskussion", NS_WIKIPEDIA => $wgMetaNamespace, NS_WIKIPEDIA_TALK => $wgMetaNamespace . "diskussion", NS_IMAGE => "Bild", @@ -17,8 +26,8 @@ NS_MEDIAWIKI_TALK => "MediaWiki_diskussion", NS_TEMPLATE => "Mall", NS_TEMPLATE_TALK => "Malldiskussion", - NS_HELP => "Hjlp", - NS_HELP_TALK => "Hjlp_diskussion", + NS_HELP => "Hjälp", + NS_HELP_TALK => "Hjälp_diskussion", NS_CATEGORY => "Kategori", NS_CATEGORY_TALK => "Kategoridiskussion" ); @@ -26,21 +35,22 @@ /* inherit standard defaults */ /* private */ $wgQuickbarSettingsSv = array( - "Ingen", - "Fast vnster", - "Fast hger", - "Flytande vnster" + "Ingen", + "Fast vänster", + "Fast höger", + "Flytande vänster" ); /* private */ $wgSkinNamesSv = array( 'standard' => "Standard", 'nostalgia' => "Nostalgi", - 'cologneblue' => "Cologne Bl", + 'cologneblue' => "Cologne Blå", 'smarty' => "Paddington", 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); define( "MW_MATH_PNG", 0 ); @@ -52,15 +62,15 @@ define( "MW_MATH_MATHML", 5 ); /* private */ $wgMathNamesSv = array( MW_MATH_PNG => "Rendera alltid PNG", - MW_MATH_SIMPLE => "HTML om den r vldigt enkel, annars PNG", - MW_MATH_HTML => "HTML om det r mjligt, annars PNG", - MW_MATH_SOURCE => "Lmna det som TeX (fr textbaserade webblddrare)", - MW_MATH_MODERN => "Rekommenderas fr moderna webblsare", - MW_MATH_MATHML => "MathML om det r mjligt (experimentellt)", + MW_MATH_SIMPLE => "HTML om den är väldigt enkel, annars PNG", + MW_MATH_HTML => "HTML om det är möjligt, annars PNG", + MW_MATH_SOURCE => "Lämna det som TeX (för textbaserade webbläddrare)", + MW_MATH_MODERN => "Rekommenderas för moderna webbläsare", + MW_MATH_MATHML => "MathML om det är möjligt (experimentellt)", ); /* private */ $wgDateFormatsSv = array( - "Ingen instllning", + "Ingen inställning", "Januari 15, 2001", "15 Januari 2001", "2001 Januari 15", @@ -68,25 +78,25 @@ define( "MW_MATH_MATHML", 5 ); ); /* private */ $wgUserTogglesSv = array( - "hover" => "Svvande text ver wikilnkar", - "underline" => "Understryk lnkar", - "highlightbroken" => "Formatera trasiga lnkar s hr -(alternativt: s hr?).", + "hover" => "Svävande text över wikilänkar", + "underline" => "Understryk länkar", + "highlightbroken" => "Formatera trasiga länkar så här +(alternativt: så här?).", "justify" => "Justera indrag", - "hideminor" => "Gm mindre redigeringar vid senaste ndring", - "usenewrc" => "Avancerad 'Senaste ndringar'", - "numberheadings" => "Automatisk numrering av verskrifter", + "hideminor" => "Göm mindre redigeringar vid senaste ändring", + "usenewrc" => "Avancerad 'Senaste ändringar'", + "numberheadings" => "Automatisk numrering av överskrifter", "showtoolbar" => "Visa redigeringverktygsrad", - "rememberpassword" => "Kom ihg lsenord till nsta besk", + "rememberpassword" => "Kom ihåg lösenord till nästa besök", "editwidth" => "Redigeringsboxen har full bredd", "editondblclick" => "Redigera sidor med dubbelklick (JavaScript)", - "editsection" => "Visa [edit]-lnkar fr att redigera sektioner", - "editsectiononrightclick" => "Hgerklick p rubriker redigerar sektioner", - "showtoc" => "Visa automatisk innehllsfrteckning (p sidor med mer n 3 sektioner)", - "watchdefault" => "vervaka nya och ndrade artiklar", - "minordefault" => "Markera som standard alla ndringer som mindre", - "previewontop" => "Visa frhandsgranskning fre textfltet istllet fr efter", - "nocache" => "Sl av cachning av sidor" + "editsection" => "Visa [edit]-länkar för att redigera sektioner", + "editsectiononrightclick" => "Högerklick på rubriker redigerar sektioner", + "showtoc" => "Visa automatisk innehållsförteckning (på sidor med mer än 3 sektioner)", + "watchdefault" => "Övervaka nya och ändrade artiklar", + "minordefault" => "Markera som standard alla ändringer som mindre", + "previewontop" => "Visa förhandsgranskning före textfältet istället för efter", + "nocache" => "Slå av cachning av sidor" ); /* private */ $wgBookstoreListSv = array( @@ -101,8 +111,8 @@ define( "MW_MATH_MATHML", 5 ); languages! */ /* private */ $wgWeekdayNamesSv = array( - "sndag", "mndag", "tisdag", "onsdag", "torsdag", - "fredag", "lrdag" + "söndag", "måndag", "tisdag", "onsdag", "torsdag", + "fredag", "lördag" ); /* private */ $wgMonthNamesSv = array( @@ -125,55 +135,55 @@ define( "MW_MATH_MATHML", 5 ); $wgValidSpecialPagesSv = array( "Userlogin" => "", "Userlogout" => "", - "Preferences" => "Mina anvndarinstllningar", - "Watchlist" => "Min vervakningslista", - "Recentchanges" => "Senaste ndringar", + "Preferences" => "Mina användarinställningar", + "Watchlist" => "Min övervakningslista", + "Recentchanges" => "Senaste ändringar", "Upload" => "Ladda upp filer", "Imagelist" => "Bildlista", - "Listusers" => "Registrerade anvndare", + "Listusers" => "Registrerade användare", "Statistics" => "Sidstatistik", - "Randompage" => "Slumpmssig sida", - "Lonelypages" => "Frldralsa sidor", - "Unusedimages" => "Frldralsa filer", - "Popularpages" => "Populra artiklar", - "Wantedpages" => "Mest nskade artiklar", + "Randompage" => "Slumpmässig sida", + "Lonelypages" => "Föräldralösa sidor", + "Unusedimages" => "Föräldralösa filer", + "Popularpages" => "Populära artiklar", + "Wantedpages" => "Mest önskade artiklar", "Shortpages" => "Korta artiklar", - "Longpages" => "Lnga artiklar", + "Longpages" => "Långa artiklar", "Newpages" => "De nyaste artiklarna", "Ancientpages" => "Oldest pages", "Allpages" => "Alla sidor efter titel", "Ipblocklist" => "Blockerade IP adresser", - "Maintenance" => "Underhllssida", + "Maintenance" => "Underhållssida", "Specialpages" => "Specialsidor", "Contributions" => "", - "Emailuser" => "E-postanvndare", + "Emailuser" => "E-postanvändare", "Whatlinkshere" => "", "Recentchangeslinked" => "", "Movepage" => "", - "Booksources" => "Externa bokkllor", + "Booksources" => "Externa bokkällor", "Export" => "XML export", "Version" => "Version", ); /* private */ $wgSysopSpecialPagesSv = array( "Blockip" => "Blockera en IP-adress", - "Asksql" => "Gr en skning i databasen", - "Undelete" => "Se och terstll raderade sidor" + "Asksql" => "Gör en sökning i databasen", + "Undelete" => "Se och återställ raderade sidor" ); /* private */ $wgDeveloperSpecialPagesSv = array( "Lockdb" => "Skrivskydda databasen", - "Unlockdb" => "terstll skrivning till databasen", + "Unlockdb" => "Återställ skrivning till databasen", ); /* private */ $wgAllMessagesSv = array( // Bits of text used by many pages: // -"linktrail" => "/^([a-z]+)(.*)\$/sD", +"linktrail" => "/^((?:[a-z]|ä|ö|å)+)(.*)\$/sD", "mainpage" => "Huvudsida", 'portal' => 'Kollektivportal', 'portal-url' => '{{ns:4}}:Kollektivportal', @@ -181,8 +191,8 @@ $wgValidSpecialPagesSv = array( "aboutwikipedia" => "Om {{SITENAME}}", "aboutpage" => "{{ns:4}}:Om", 'article' => 'Artikel', -"help" => "Hjlp", -"helppage" => "Wikipedia:Hjlp", +"help" => "Hjälp", +"helppage" => "Wikipedia:Hjälp", "wikititlesuffix" => "Wikipedia", "bugreports" => "Felrapporter", "bugreportspage" => "Wikipedia:Felrapporter", @@ -190,92 +200,92 @@ $wgValidSpecialPagesSv = array( "sitesupportpage" => "", # If not set, won't appear. Can be wiki page or URL "faq" => "FAQ", "faqpage" => "Wikipedia:FAQ", -"edithelp" => "Redigeringshjlp", +"edithelp" => "Redigeringshjälp", "edithelppage" => "Wikipedia:Hur_redigerar_jag_en_sida", "cancel" => "Avbryt", -"qbfind" => "SnabbSk", -"qbbrowse" => "Genomsk", +"qbfind" => "SnabbSök", +"qbbrowse" => "Genomsök", "qbedit" => "Redigera", -"qbpageoptions" => "Sidinstllningar", +"qbpageoptions" => "Sidinställningar", "qbpageinfo" => "Sidinformation", -"qbmyoptions" => "Mina instllningar", +"qbmyoptions" => "Mina inställningar", "mypage" => "Min sida", "mytalk" => "Min diskussion", "currentevents" => "-", "errorpagetitle" => "Fel", "returnto" => "Tillbaka till $1.", -"fromwikipedia" => "Frn Wikipedia, den fria encyklopedin.", -"whatlinkshere" => "Vilka sidor lnkar hit?", -"help" => "Hjlp", -"search" => "Sk", +"fromwikipedia" => "Från Wikipedia, den fria encyklopedin.", +"whatlinkshere" => "Vilka sidor länkar hit?", +"help" => "Hjälp", +"search" => "Sök", "history" => "Versionshistorik", "history_short" => "Historik", -"printableversion" => "Skrivarvnlig version", +"printableversion" => "Skrivarvänlig version", "edit" => "Redigera", -"editthispage" => "Redigera den hr sidan", +"editthispage" => "Redigera den här sidan", "delete" => "Ta bort", -"deletethispage" => "Ta bort den hr sidan", +"deletethispage" => "Ta bort den här sidan", "protect" => "Skydda", -"protectthispage" => "Skydda den hr sidan", +"protectthispage" => "Skydda den här sidan", "unprotect" => "Ta bort skydd", -"unprotectthispage" => "Ta bort skydd frn den hr sidan", +"unprotectthispage" => "Ta bort skydd från den här sidan", "newpage" => "Ny sida", "talkpage" => "Diskussionssida", "personaltools" => "Personliga verktyg", "postcomment" => "Skicka en kommentar", "addsection" => "+", "articlepage" => "Visa artikel", -"subjectpage" => "mnessida", +"subjectpage" => "Ämnessida", "talk" => "Diskussion", -"toolbox" => "Verktygslda", -"userpage" => "Visa anvndarsida", +"toolbox" => "Verktygslåda", +"userpage" => "Visa användarsida", "wikipediapage" => "Visa metasida", "imagepage" => "Visa bildsida", "viewtalkpage" => "Visa diskussion", -"otherlanguages" => "Andra sprk", -"redirectedfrom" => "(Omdirigerad frn $1)", -"lastmodified" => "Den hr sidan blev senast ndrad $1.", -"viewcount" => "Den hr sidan har visats $1 gnger.", -"copyright" => "Innehll tillgngligt under $1.", -"poweredby" => "{{SITENAME}} krs med hjlp av [http://www.mediawiki.org/ MediaWiki], en ppen kllkods-wikimotor.", -"printsubtitle" => "(Frn http://sv.wikipedia.org)", +"otherlanguages" => "Andra språk", +"redirectedfrom" => "(Omdirigerad från $1)", +"lastmodified" => "Den här sidan blev senast ändrad $1.", +"viewcount" => "Den här sidan har visats $1 gånger.", +"copyright" => "Innehåll tillgängligt under $1.", +"poweredby" => "{{SITENAME}} körs med hjälp av [http://www.mediawiki.org/ MediaWiki], en öppen källkods-wikimotor.", +"printsubtitle" => "(Från http://sv.wikipedia.org)", "protectedpage" => "Skyddad sida", -"administrators" => "Wikipedia:Administratrer", -"sysoptitle" => "Sysop-behrighet krvs", -"sysoptext" => "Den hr funktionen kan bara utfras av anvndare med \"sysop\" status. +"administrators" => "Wikipedia:Administratörer", +"sysoptitle" => "Sysop-behörighet krävs", +"sysoptext" => "Den här funktionen kan bara utföras av användare med \"sysop\" status. Se $1.", -"developertitle" => "Utvecklarbehrighet krvs", -"developertext" => "Den hr funktionen kan bara utfras av anvndare med \"developer\" status. +"developertitle" => "Utvecklarbehörighet krävs", +"developertext" => "Den här funktionen kan bara utföras av användare med \"developer\" status. Se $1.", -"bureaucrattitle" => "Byrkrataccess krvs", -"bureaucrattext" => "Funktionen du har efterskt kan endast utfras av en sysop med byrkratstatus.", +"bureaucrattitle" => "Byråkrataccess krävs", +"bureaucrattext" => "Funktionen du har eftersökt kan endast utföras av en sysop med byråkratstatus.", "nbytes" => "$1 bytes", -"go" => "Utfr", +"go" => "Utför", "ok" => "OK", "sitetitle" => "{{SITENAME}}", "pagetitle" => "$1 - {{SITENAME}}", "sitesubtitle" => "Den fria encyklopedin", -"retrievedfrom" => "Hmtad frn \"$1\"", +"retrievedfrom" => "Hämtad från \"$1\"", "newmessages" => "Du har $1.", "newmessageslink" => "nya meddelanden", "editsection" => "edit", -"toc" => "Innehll", +"toc" => "Innehåll", "showtoc" => "visa", -"hidetoc" => "gm", -"thisisdeleted" => "Visa eller terstll $1?", +"hidetoc" => "göm", +"thisisdeleted" => "Visa eller återställ $1?", "restorelink" => "$1 raderade versioner", "feedlinks" => "Matning:", // Short words for each namespace, by default used in the 'article' tab in monobook "nstab-main" => "Artikel", -"nstab-user" => "Anvndarsida", +"nstab-user" => "Användarsida", "nstab-media" => "Media", "nstab-special" => "Speciell", "nstab-wp" => "Om", "nstab-image" => "Bild", "nstab-mediawiki" => "Meddelande", "nstab-template" => "Mall", -"nstab-help" => "Hjlp", +"nstab-help" => "Hjälp", "nstab-category" => "Kategori", @@ -284,65 +294,65 @@ Se $1.", "nosuchaction" => "Funktionen finns inte", "nosuchactiontext" => "Den funktion som specificerats i URL:en kan inte hittas av Wikipediaprogramvaran", -"nosuchspecialpage" => "Sdan specialsida finns inte", -"nospecialpagetext" => "Du har nskat en specialsida som inte +"nosuchspecialpage" => "Sådan specialsida finns inte", +"nospecialpagetext" => "Du har önskat en specialsida som inte hittas av Wikipediaprogramvaran.", // General errors // "error" => "Fel", "databaseerror" => "Databasfel", -"dberrortext" => "Ett syntaxfel i databasfrgan har uppsttt. Detta kan bero p en felaktig skfrga (se $5) eller det kan bero p ett fel i programvaran. -Den senste utfrda databasfrgan var: +"dberrortext" => "Ett syntaxfel i databasfrågan har uppstått. Detta kan bero på en felaktig sökfråga (se $5) eller det kan bero på ett fel i programvaran. +Den senste utförda databasfrågan var:

    $1
    -frn funktionen \"$2\". +från funktionen \"$2\". MySQL returnerade felen \"$3: $4\".", -"noconnect" => "Kunde inte ansluta till databasen p $1", -"nodb" => "Kunde inte vlja databasen $1", -"readonly" => "Databasen r skrivskyddad", -"enterlockreason" => "Skriv en grund fr skrivskyddet, inklusive -en uppskattning p nr skrivskyddet skall upphvas", -"readonlytext" => "Wikipediadatabasen r fr gonblicket skrivskyddad fr -nya sidor och andra modifikationer, beroende p rutinmssigt -underhll av databasen, varefter den tergr till normalstatus. -Den administratr som skrivskyddade den har gett fljande frklaring: +"noconnect" => "Kunde inte ansluta till databasen på $1", +"nodb" => "Kunde inte välja databasen $1", +"readonly" => "Databasen är skrivskyddad", +"enterlockreason" => "Skriv en grund för skrivskyddet, inklusive +en uppskattning på när skrivskyddet skall upphävas", +"readonlytext" => "Wikipediadatabasen är för ögonblicket skrivskyddad för +nya sidor och andra modifikationer, beroende på rutinmässigt +underhåll av databasen, varefter den återgår till normalstatus. +Den administratör som skrivskyddade den har gett följande förklaring:

    $1", -"missingarticle" => "Databasen fann inte texten p en sida +"missingarticle" => "Databasen fann inte texten på en sida som den skulle hitta, med namnet \"$1\". -Dette r inte ett databas fel, utan beror p ett fel i mjukvaran. -Skicka vnligen en rapport om detta till en administratr, dr du ocks nmner +Dette är inte ett databas fel, utan beror på ett fel i mjukvaran. +Skicka vänligen en rapport om detta till en administratör, där du också nämner URL:en.", "internalerror" => "Internt fel", "filecopyerror" => "Kunde inte kopiera filen \"$1\" til \"$2\".", -"filerenameerror" => "Kunde inte byta namn p filen \"$1\" til \"$2\".", +"filerenameerror" => "Kunde inte byta namn på filen \"$1\" til \"$2\".", "filedeleteerror" => "Kunde inte radera filen \"$1\".", "filenotfound" => "Kunde inte hitta filen \"$1\".", -"unexpected" => "Ovntat vrde: \"$1\"=\"$2\".", -"formerror" => "Fel: Kunde inte snda formulr", -"badarticleerror" => "Den hr funktionen kan inte utfras p den hr sidan.", +"unexpected" => "Oväntat värde: \"$1\"=\"$2\".", +"formerror" => "Fel: Kunde inte sända formulär", +"badarticleerror" => "Den här funktionen kan inte utföras på den här sidan.", "cannotdelete" => "Kunde inte radera sidan, eller filen som specificerades.", "badtitle" => "Felaktig titel", -"badtitletext" => "Den nskade sidans titel var inte tillten, tom eller sidan -r felaktigt lnkad frn en Wikipedia p ett annat sprk.", +"badtitletext" => "Den önskade sidans titel var inte tillåten, tom eller sidan +är felaktigt länkad från en Wikipedia på ett annat språk.", // Login and logout pages // -"logouttitle" => "Logga ut Anvndare", -"logouttext" => "Du r nu utloggad. -Du kan fortstta som anonym Wikipediaanvndare, eller s kan du logga in -igen som samma eller annan anvndare.\n", - -"welcomecreation" => "

    Vlkommen, $1!

    Ditt konto har skapats. Glm inte att anpassa dina Wikipediainstllningar.", - -"loginpagetitle" => "Logga in Anvndare", -"yourname" => "Ditt anvndarnamn", -"yourpassword" => "Ditt lsenord", -"yourpasswordagain" => "Upprepa lsenord", -"newusersonly" => " (bara fr nya anvndare)", -"remembermypassword" => "Kom ihg mitt lsenord till nsta gng.", -"loginproblem" => "Det var svrt att logga in dig .
    Prva igen!", -"alreadyloggedin" => "Anvndare $1, du r redan inloggad !
    \n", +"logouttitle" => "Logga ut Användare", +"logouttext" => "Du är nu utloggad. +Du kan fortsätta som anonym Wikipediaanvändare, eller så kan du logga in +igen som samma eller annan användare.\n", + +"welcomecreation" => "

    Välkommen, $1!

    Ditt konto har skapats. Glöm inte att anpassa dina Wikipediainställningar.", + +"loginpagetitle" => "Logga in Användare", +"yourname" => "Ditt användarnamn", +"yourpassword" => "Ditt lösenord", +"yourpasswordagain" => "Upprepa lösenord", +"newusersonly" => " (bara för nya användare)", +"remembermypassword" => "Kom ihåg mitt lösenord till nästa gång.", +"loginproblem" => "Det var svårt att logga in dig .
    Pröva igen!", +"alreadyloggedin" => "Användare $1, du är redan inloggad !
    \n", "login" => "Logga in", "userlogin" => "Logga in", @@ -350,189 +360,189 @@ igen som samma eller annan anv "userlogout" => "Logga ut", "notloggedin" => "Ej inloggad", "createaccount" => "Skapa ett konto", -"badretype" => "De lsenord du uppgett verenstmmer inte med varandra.", -"userexists" => "Detta anvndarnamn anvnds redan. Ange ett annat anvndarnamn.", +"badretype" => "De lösenord du uppgett överenstämmer inte med varandra.", +"userexists" => "Detta användarnamn används redan. Ange ett annat användarnamn.", "youremail" => "Din e-postadress", "yournick" => "Ditt smeknamn (till signaturer)", -"emailforlost" => "Har du glmt ditt lsenord, s kan du f ett nytt lsenord skickat till din e-post", +"emailforlost" => "Har du glömt ditt lösenord, så kan du få ett nytt lösenord skickat till din e-post", "loginerror" => "Inloggningsproblem", -"noname" => "Det anvndarnamn som du angett finns inte", +"noname" => "Det användarnamn som du angett finns inte", "loginsuccesstitle" => "Inloggningen lyckades", -"loginsuccess" => "Du r nu inloggad p wikipedia med anvndarnamnet \"$1\".", -"nosuchuser" => "Det finns ingen anvndare med namnet \"$1\". -Kontrollera stavningen, eller anvnd formulret nedan fr att skapa ett nytt konto.", -"wrongpassword" => "Lsenordet du skrev r felaktigt. Prva igen", -"mailmypassword" => "Snd mig ett nytt lsenord", -"passwordremindertitle" => "Nytt lsenord frn Wikipedia", -"passwordremindertext" => "Ngon (frmodligen du, med IP-numret $1) -har bett oss snda dig ett nytt lsenord fr din Wikipedia-inloggning -Lsenordet fr anvndare \"$2\" r nu \"$3\". -Du ska logga in p din anvndare och byta lsenord.", -"noemail" => "Det finns ingen e-postadress registrerad fr anvndare \"$1\".", -"passwordsent" => "Ett nytt lsenord har skickats till e-posten registrerad av anvndaren\"$1\". -Var snll och logga in igen nr du ftt meddelandet.", +"loginsuccess" => "Du är nu inloggad på wikipedia med användarnamnet \"$1\".", +"nosuchuser" => "Det finns ingen användare med namnet \"$1\". +Kontrollera stavningen, eller använd formuläret nedan för att skapa ett nytt konto.", +"wrongpassword" => "Lösenordet du skrev är felaktigt. Pröva igen", +"mailmypassword" => "Sänd mig ett nytt lösenord", +"passwordremindertitle" => "Nytt lösenord från Wikipedia", +"passwordremindertext" => "Någon (förmodligen du, med IP-numret $1) +har bett oss sända dig ett nytt lösenord för din Wikipedia-inloggning +Lösenordet för användare \"$2\" är nu \"$3\". +Du ska logga in på din användare och byta lösenord.", +"noemail" => "Det finns ingen e-postadress registrerad för användare \"$1\".", +"passwordsent" => "Ett nytt lösenord har skickats till e-posten registrerad av användaren\"$1\". +Var snäll och logga in igen när du fått meddelandet.", // Edit pages // "summary" => "Sammanfattning", -"minoredit" => "Detta r en mindre ndring", -"watchthis" => "Bevaka den hr artikeln", +"minoredit" => "Detta är en mindre ändring", +"watchthis" => "Bevaka den här artikeln", "savearticle" => "Spara", -"preview" => "Frhandsgranska", -"showpreview" => "Visa frhandgranskning", -"blockedtitle" => "Anvndaren r sprrad", -"blockedtext" => "Ditt anvndarnamn har blivit sprrat av $1. -Anledning r att:
    ''$2''

    Ta kontakt med $1 eller en av de andra -[[Wikipedia:Administratrer|administratrerna]] fr att diskutera varfr du blivit sprrad", // " +"preview" => "Förhandsgranska", +"showpreview" => "Visa förhandgranskning", +"blockedtitle" => "Användaren är spärrad", +"blockedtext" => "Ditt användarnamn har blivit spärrat av $1. +Anledning är att:
    ''$2''

    Ta kontakt med $1 eller en av de andra +[[Wikipedia:Administratörer|administratörerna]] för att diskutera varför du blivit spärrad", // " "newarticle" => "(Ny)", -"newarticletext" => "Du har klickat p en rd lnk, en sida som inte finns nnu. Du kan hjlpa till genom att sjlv skriva vad du vet om mnet i fltet nedan. Om du inte vill skriva ngot kan du bara trycka p \"tillbaka\" i din webblsare.", -"anontalkpagetext" => "---- ''Detta r en diskussionssida fr en anonym anvndare, en anvndare som inte har skapat sig ett konto, eller som inte har loggat in p det. Vi mste drfr anvnda personens numeriska [[IP-adress]] fr identifiera honom eller henne. En sdan IP-adress kan ibland anvndas av flera olika personer. Om du r en anonym anvndare och ser meddelanden p den hr sidan som inte tycks vara riktade till dig, var vnlig [[Special:Userlogin|logga in]] s du undviker frvxling med andra anonyma anvndare i framtiden.'' ", -"noarticletext" => "(Det finns fr tillfllet ingen text p den hr sidan.)", +"newarticletext" => "Du har klickat på en röd länk, en sida som inte finns ännu. Du kan hjälpa till genom att själv skriva vad du vet om ämnet i fältet nedan. Om du inte vill skriva något kan du bara trycka på \"tillbaka\" i din webbläsare.", +"anontalkpagetext" => "---- ''Detta är en diskussionssida för en anonym användare, en användare som inte har skapat sig ett konto, eller som inte har loggat in på det. Vi måste därför använda personens numeriska [[IP-adress]] för identifiera honom eller henne. En sådan IP-adress kan ibland användas av flera olika personer. Om du är en anonym användare och ser meddelanden på den här sidan som inte tycks vara riktade till dig, var vänlig [[Special:Userlogin|logga in]] så du undviker förväxling med andra anonyma användare i framtiden.'' ", +"noarticletext" => "(Det finns för tillfället ingen text på den här sidan.)", "updated" => "(Uppdaterad)", "note" => "Notera: ", -"previewnote" => "Observera att detta r en frhandsvisning, och att sidan nnu inte sparats!", -"previewconflict" => "Den hr frhandsvisningen r resultatet av den -redigerbara texten ovanfr, -s som det kommer att se ut om du vljer att spara.", +"previewnote" => "Observera att detta är en förhandsvisning, och att sidan ännu inte sparats!", +"previewconflict" => "Den här förhandsvisningen är resultatet av den +redigerbara texten ovanför, +så som det kommer att se ut om du väljer att spara.", "editing" => "Redigerar $1", "editconflict" => "Redigeringskonflikt: $1", -"explainconflict" => "Ngon har ndrat den hr sidan efter att du brjade att redigera den. -Det versta text blocket innehller den nuvarande texten. -Dina ndringer syns i det nedersta blocket. -Du mste infoga dina ndringar i den existerande texten. -Bara texten i den versta textboxen sparas om du trycker \"Spara sida\".\n

    ", +"explainconflict" => "Någon har ändrat den här sidan efter att du började att redigera den. +Det översta text blocket innehåller den nuvarande texten. +Dina ändringer syns i det nedersta blocket. +Du måste infoga dina ändringar i den existerande texten. +Bara texten i den översta textboxen sparas om du trycker \"Spara sida\".\n

    ", "yourtext" => "Din text", "storedversion" => "Din sparade version", "editingold" => "VARNING: Du redigerar en gammal version -av den hr sidan. Om du sparar den, kommer alla ndringar p denns sida fregende revison att bli verskrivna.\n", +av den här sidan. Om du sparar den, kommer alla ändringar på denns sida föregående revison att bli överskrivna.\n", "yourdiff" => "Skillnader", -"copyrightwarning" => "Observera att alla bidrag till Wikipedia r +"copyrightwarning" => "Observera att alla bidrag till Wikipedia är att betrakta som utgivna under GNU Free Documentation License -(se $1 fr detaljer). -Om du inte vill ha din text redigerad och kopierad efter andras gottfinnade s skall du inte skriva ngon text hr.
    -Du lovar oss ocks att du skrev texten sjlv, eller kopierade frn public domain eller liknande fri resurs.
    -LGG ALDRIG UT UPPHOVSRTTSSKYDDAT MATERIAL HR UTAN FRFATTARENS TILLTELSE!", - -"longpagewarning" => "VARNING: Den hr artikeln r $1 kilobytes lng; vissa ldre webblsare -kan ha problem med att redigera sidor som r omkring 32 kb eller strre. -Du kanske vill vervga att dela upp artikeln i mindre delar.", -"readonlywarning" => "VARNING: Databasen r tillflligt lst fr underhll. Du kommer inte att kunna spara -dina ndringar just nu. Fr skerhets skull kanske du vill vervga att kopiera ver texten till din egen dator tills -databasen r upplst igen.", -"protectedpagewarning" => "VARNING: Den hr sidan har lsts s att bara administratrer kan redigera den. -Frskra dig om att du fljer rekommendationerna fr skyddade sidor", +(se $1 för detaljer). +Om du inte vill ha din text redigerad och kopierad efter andras gottfinnade så skall du inte skriva någon text här.
    +Du lovar oss också att du skrev texten själv, eller kopierade från public domain eller liknande fri resurs.
    +LÄGG ALDRIG UT UPPHOVSRÄTTSSKYDDAT MATERIAL HÄR UTAN FÖRFATTARENS TILLÅTELSE!", + +"longpagewarning" => "VARNING: Den här artikeln är $1 kilobytes lång; vissa äldre webbläsare +kan ha problem med att redigera sidor som är omkring 32 kb eller större. +Du kanske vill överväga att dela upp artikeln i mindre delar.", +"readonlywarning" => "VARNING: Databasen är tillfälligt låst för underhåll. Du kommer inte att kunna spara +dina ändringar just nu. För säkerhets skull kanske du vill överväga att kopiera över texten till din egen dator tills +databasen är upplåst igen.", +"protectedpagewarning" => "VARNING: Den här sidan har låsts så att bara administratörer kan redigera den. +Försäkra dig om att du följer rekommendationerna för skyddade sidor", // History pages // "revhistory" => "Versionshistoria", -"nohistory" => "Det finns ingen versionshistoria fr den hr sidan.", +"nohistory" => "Det finns ingen versionshistoria för den här sidan.", "revnotfound" => "Versionen hittades inte", -"revnotfoundtext" => "Den gamla versionen av den sida du frgade efter kan inte hittas. Kontrollera den URL du anvnde fr att n den hr sidan.\n", -"loadhist" => "Lser sidans versioner", +"revnotfoundtext" => "Den gamla versionen av den sida du frågade efter kan inte hittas. Kontrollera den URL du använde för att nå den här sidan.\n", +"loadhist" => "Läser sidans versioner", "currentrev" => "Nuvarande version", -"revisionasof" => "Versionen frn $1", +"revisionasof" => "Versionen från $1", "cur" => "nuvarande", -"next" => "nsta", -"last" => "fregende", +"next" => "nästa", +"last" => "föregående", "orig" => "original", -"histlegend" => "Frklaring: (nuvarande) = skillnad mot den nuvarande versionen, - (fregende) = skillnad mot den fregende versionen, M = mindre ndring", +"histlegend" => "Förklaring: (nuvarande) = skillnad mot den nuvarande versionen, + (föregående) = skillnad mot den föregående versionen, M = mindre ändring", // Diffs // "difference" => "(Skillnad mellan versioner)", -"loadingrev" => "lser version fr att se skillnad", +"loadingrev" => "läser version för att se skillnad", "lineno" => "Rad $1:", -"editcurrent" => "Redigera den nuvarande versionen av den hr sidan", +"editcurrent" => "Redigera den nuvarande versionen av den här sidan", // Search results // -"searchresults" => "Skresultat", -"searchhelppage" => "Wikipedia:Skning", -"searchingwikipedia" => "Skning p Wikipedia", -"searchresulttext" => "Fr mer information om skning p Wikipedia, se $1.", +"searchresults" => "Sökresultat", +"searchhelppage" => "Wikipedia:Sökning", +"searchingwikipedia" => "Sökning på Wikipedia", +"searchresulttext" => "För mer information om sökning på Wikipedia, se $1.", "searchquery" => "For query \"$1\"", -"badquery" => "Felaktigt utformat skbegrepp", -"badquerytext" => "Vi kunde inte utfra din skning. -Detta beror sannolikt p att du frskt ska efter ett ord med frre n tre bokstver, ngot som f.n. inte stds. Det kan ocks vara s att du har anget en felaktig skning, till exempel \"fisk och och skaldjur\". Prova att formulera om skningen.", -"matchtotals" => "Skordet frekommer i \"$1\" verensstmde med $2 artiklar titlar +"badquery" => "Felaktigt utformat sökbegrepp", +"badquerytext" => "Vi kunde inte utföra din sökning. +Detta beror sannolikt på att du försökt söka efter ett ord med färre än tre bokstäver, något som f.n. inte stöds. Det kan också vara så att du har anget en felaktig sökning, till exempel \"fisk och och skaldjur\". Prova att formulera om sökningen.", +"matchtotals" => "Sökordet förekommer i \"$1\" överensstämde med $2 artiklar titlar och texter i $3 artiklar.", -"titlematches" => "Artikel titlar som verensstmmer med skordet", -"notitlematches" => "Ingen artikel titlar verensstmmer med skordet", -"textmatches" => "Artikel texter som verensstmmer med skordet", -"notextmatches" => "Ingen artikel texter verensstmmer med skordet", -"prevn" => "frra $1", -"nextn" => "nsta $1", +"titlematches" => "Artikel titlar som överensstämmer med sökordet", +"notitlematches" => "Ingen artikel titlar överensstämmer med sökordet", +"textmatches" => "Artikel texter som överensstämmer med sökordet", +"notextmatches" => "Ingen artikel texter överensstämmer med sökordet", +"prevn" => "förra $1", +"nextn" => "nästa $1", "viewprevnext" => "Om ($1) ($2) ($3).", "showingresults" => "Nedan visas $1 resultat som startar med nummer $2.", -"nonefound" => "Note: Misslyckade skningar frorsakas ofta av - att man sker efter vanliga ord som \"har\" och \"frn\", -vilka inte indexeras, eller att specificera flera skord (bara -sidor som innehller alla skorden hittas).", -"powersearch" => "Sk", +"nonefound" => "Note: Misslyckade sökningar förorsakas ofta av + att man söker efter vanliga ord som \"har\" och \"från\", +vilka inte indexeras, eller att specificera flera sökord (bara +sidor som innehåller alla sökorden hittas).", +"powersearch" => "Sök", "powersearchtext" => " -Sk i namnutrymme :
    +Sök i namnutrymme :
    $1
    -$2 List redirects   Sk efter $3 $9", +$2 List redirects   Sök efter $3 $9", // Preferences page // -"preferences" => "Instllningar", -"prefsnologin" => "Du r inte inloggad", -"prefsnologintext" => "Du mste vara "Inställningar", +"prefsnologin" => "Du är inte inloggad", +"prefsnologintext" => "Du måste vara inloggad -fr att kunna ndra i instllningar.", -"prefslogintext" => "Du r inloggad som \"$1\". -Ditt IP-nummer r $2.", -"prefsreset" => "Instllningar har blivit terstllda frn minne.", -"qbsettings" => "Instllningar fr snabbmeny", -"changepassword" => "Byt lsenord", +för att kunna ändra i inställningar.", +"prefslogintext" => "Du är inloggad som \"$1\". +Ditt IP-nummer är $2.", +"prefsreset" => "Inställningar har blivit återställda från minne.", +"qbsettings" => "Inställningar för snabbmeny", +"changepassword" => "Byt lösenord", "skin" => "Utseende", -"saveprefs" => "Spara instllningar", -"resetprefs" => "terstll instllningar", -"oldpassword" => "Gammalt lsenord", -"newpassword" => "Nytt lsenord", -"retypenew" => "Skriv om nytt lsenord", +"saveprefs" => "Spara inställningar", +"resetprefs" => "Återställ inställningar", +"oldpassword" => "Gammalt lösenord", +"newpassword" => "Nytt lösenord", +"retypenew" => "Skriv om nytt lösenord", "textboxsize" => "Textbox dimensioner", "rows" => "Rader", "columns" => "Kolumner", -"searchresultshead" => "Instllningar fr skresultat", +"searchresultshead" => "Inställningar för sökresultat", "resultsperpage" => "Resultat att visa per sida", "contextlines" => "Linjer att visa per sida", -"contextchars" => "Antalet bokstver per linje i resultatet", -"stubthreshold" => "Grnser fr visning av stubs", -"recentchangescount" => "Antalet artiklar i \"senaste ndringarna\" ", -"savedprefs" => "Dina instllningar har blivit sparade", -"timezonetext" => "Skriv in antalet timmar som din lokal tid skiljer sig frn +"contextchars" => "Antalet bokstäver per linje i resultatet", +"stubthreshold" => "Gränser för visning av stubs", +"recentchangescount" => "Antalet artiklar i \"senaste ändringarna\" ", +"savedprefs" => "Dina inställningar har blivit sparade", +"timezonetext" => "Skriv in antalet timmar som din lokal tid skiljer sig från serverns klocka (UTC). -Den blir automatiskt instlld efter svensk tid eller skulle man till exempel fr svensk vintertid, endast ha \"1\" (och \"2\" nr vi har sommartid).", +Den blir automatiskt inställd efter svensk tid eller skulle man till exempel för svensk vintertid, endast ha \"1\" (och \"2\" när vi har sommartid).", "localtime" => "Lokal tid", -"timezoneoffset" => "Utjmna", -"emailflag" => "Hindra andra anvndare frn att skicka e-post till dig", +"timezoneoffset" => "Utjämna", +"emailflag" => "Hindra andra användare från att skicka e-post till dig", // Recent changes // -"recentchanges" => "Senaste ndringarna", -"recentchangestext" => "Se de senaste redigerade sidorna i Wikipedia p den hr sidan.", -"rcloaderr" => "Lser senaste redigerade sidor", -"rcnote" => "Nedanfr r de senaste $1 ndringarna under de sista $2 dagarna.", -"rcnotefrom" => "Nedanfr r ndringarna frn $2 till $1 visade.", -"rclistfrom" => "Visa nya ndringar frn och med $1", -"rclinks" => "Visa de senaste $1 ndringarna under de senaste $2 dagarna", -// "rclinks" => "Visa de senaste $1 ndringarna under de senaste $2 dagarna", -"rchide" => "i $4 form; $1 mindre ndringar; $2 andra namnrum; $3 mer n en redigering.", +"recentchanges" => "Senaste ändringarna", +"recentchangestext" => "Se de senaste redigerade sidorna i Wikipedia på den här sidan.", +"rcloaderr" => "Läser senaste redigerade sidor", +"rcnote" => "Nedanför är de senaste $1 ändringarna under de sista $2 dagarna.", +"rcnotefrom" => "Nedanför är ändringarna från $2 till $1 visade.", +"rclistfrom" => "Visa nya ändringar från och med $1", +"rclinks" => "Visa de senaste $1 ändringarna under de senaste $2 dagarna", +// "rclinks" => "Visa de senaste $1 ändringarna under de senaste $2 dagarna", +"rchide" => "i $4 form; $1 mindre ändringar; $2 andra namnrum; $3 mer än en redigering.", "diff" => "skillnad", "hist" => "historia", -"hide" => "gm", +"hide" => "göm", "show" => "visa", "tableform" => "tabell", "listform" => "lista", -"nchanges" => "$1 ndringar", +"nchanges" => "$1 ändringar", "minoreditletter" => "M", "newpageletter" => "N", @@ -541,59 +551,59 @@ Den blir automatiskt inst "upload" => "Ladda upp", "uploadbtn" => "Ladda upp fil", "uploadlink" => "Ladda upp bild", -"reupload" => "teruppladdning", -"reuploaddesc" => "Tillbaka till uppladdningsformulr.", +"reupload" => "återuppladdning", +"reuploaddesc" => "Tillbaka till uppladdningsformulär.", "uploadnologin" => "Inte inloggad", -"uploadnologintext" => "Du mste vara "Du måste vara inloggad -fr att kunna ladda upp filer.", +för att kunna ladda upp filer.", "uploadfile" => "Ladda upp fil", "uploaderror" => "Uppladdnings fel", -"uploadtext" => "STOPP! Innan du laddar upp hr, -s mste du ha lst och flja Wikipedias "STOPP! Innan du laddar upp här, +så måste du ha läst och följa Wikipedias policy om hur -bilder fr anvndas. -

    Fr att visa eller ska tidigare uppladdade bilder g till +bilder får användas. +

    För att visa eller söka tidigare uppladdade bilder gå till lista ver uppladdade bilder. +"\">lista över uppladdade bilder. Uppladdningar och borttagningar loggas i uppladdnings logg. -

    Anvnd formulret nedan fr att ladda upp nya filer, som +

    Använd formuläret nedan för att ladda upp nya filer, som du kan illustrera dina artiklar med. -P de flesta webblsare kommer du att se en \"Browse...\" knapp eller en -\"ppna...\" knapp, som startar ditt operativsystems dialogruta fr att ppna filer. Nr du valt en fil kommer namnet p den filen att visas i textfltet brevid knappen. Du mste ven kryssa fr rutan, fr att du inte gr ngot som strider mot upphovsrtten av filen som laddas upp. -Tryck p \"Upload\" knappen fr att ladda upp filen. -Detta kan drja ett tag om du har en lngsam internetfrbindelse. -

    Formaten p filerna ska helst vara JPEG fr bilder, PNG fr ritningar -och andra ikonliknande bilder och OGG fr ljud. -Var vnlig namnge filen med ett s beskrivande namn som mjligt, fr att undvika frvirring. -Fr att anvnda en fil i en artikel, skriv fljande om det r en bild: [[bild:filnamn.jpg]] eller [[bild:filnamn.png|alternativ text]] -eller [[media:filnamn.ogg]] om det r en ljudfil. -

    Kom ihg att det hr r en wiki, vilket gr att andra kan redigera eller ta bort dina uppladdningar om de tycker de inte passar i en artikel. Om du missbrukar systemet med uppladdningar kommer filen avlgsnas och du bli sprrad frn att ladda upp filer i framtiden.", +På de flesta webbläsare kommer du att se en \"Browse...\" knapp eller en +\"Öppna...\" knapp, som startar ditt operativsystems dialogruta för att öppna filer. När du valt en fil kommer namnet på den filen att visas i textfältet brevid knappen. Du måste även kryssa för rutan, för att du inte gör något som strider mot upphovsrätten av filen som laddas upp. +Tryck på \"Upload\" knappen för att ladda upp filen. +Detta kan dröja ett tag om du har en långsam internetförbindelse. +

    Formaten på filerna ska helst vara JPEG för bilder, PNG för ritningar +och andra ikonliknande bilder och OGG för ljud. +Var vänlig namnge filen med ett så beskrivande namn som möjligt, för att undvika förvirring. +För att använda en fil i en artikel, skriv följande om det är en bild: [[bild:filnamn.jpg]] eller [[bild:filnamn.png|alternativ text]] +eller [[media:filnamn.ogg]] om det är en ljudfil. +

    Kom ihåg att det här är en wiki, vilket gör att andra kan redigera eller ta bort dina uppladdningar om de tycker de inte passar i en artikel. Om du missbrukar systemet med uppladdningar kommer filen avlägsnas och du bli spärrad från att ladda upp filer i framtiden.", "uploadlog" => "upload log", "uploadlogpage" => "Upload_log", -"uploadlogpagetext" => "Nedan fljer en lista med de senaste uppladdade filerna. +"uploadlogpagetext" => "Nedan följer en lista med de senaste uppladdade filerna. Alla tider visas efter serverns tid (UTC).

    ", "filename" => "Filnamn", "filedesc" => "Beskrivning", -"affirmation" => "Jag bekrftar att garen till upphovsrtten accepterar att licensiera enligt fljande avtal $1.", +"affirmation" => "Jag bekräftar att ägaren till upphovsrätten accepterar att licensiera enligt följande avtal $1.", "copyrightpage" => "Wikipedia:copyright", "copyrightpagename" => "Wikipedia copyright", "uploadedfiles" => "Uppladdade filer", -"noaffirmation" => "Du mste bekrfta att uppladdningen inte krnker ngon copyright", +"noaffirmation" => "Du måste bekräfta att uppladdningen inte kränker någon copyright", "ignorewarning" => "Ignorera varning och spara fil.", -"minlength" => "Namnet p bildfilen ska vara minst tre bokstver", -"badfilename" => "Bildnamn har blivit ndrat till \"$1\".", -"badfiletype" => "\".$1\" r inte ett rekomenderat bildformat.", -"largefile" => "Bilder ska helst inte vara strre n 100k.", +"minlength" => "Namnet på bildfilen ska vara minst tre bokstäver", +"badfilename" => "Bildnamn har blivit ändrat till \"$1\".", +"badfiletype" => "\".$1\" är inte ett rekomenderat bildformat.", +"largefile" => "Bilder ska helst inte vara större än 100k.", "successfulupload" => "Uppladdningen lyckades", "fileuploaded" => "Filen \"$1\" laddades upp korrekt. -Flj den hr lnken: ($2) till beskrivningssidan och fyll i -information om filen, som till exempel var den kommer ifrn, -nr den skapades och vem som gjort den och allt annat du vet om den.", +Följ den här länken: ($2) till beskrivningssidan och fyll i +information om filen, som till exempel var den kommer ifrån, +när den skapades och vem som gjort den och allt annat du vet om den.", "uploadwarning" => "Uppladdnings varning", "savefile" => "Spara fil", "uploadedimage" => "uppladdad \"$1\"", @@ -601,10 +611,10 @@ n // Image list // "imagelist" => "Bildlista", -"imagelisttext" => "Nedan r en lista med $1 bilder sorterad $2", -"getimagelist" => "hmta bildlista", +"imagelisttext" => "Nedan är en lista med $1 bilder sorterad $2", +"getimagelist" => "hämta bildlista", "ilshowmatch" => "Visa alla bilder med namn som matchar", -"ilsubmit" => "Sk", +"ilsubmit" => "Sök", "showlast" => "Visa de senaste $1 bilderna sorterad $2.", "all" => "alla", "byname" => "efter namn", @@ -614,84 +624,84 @@ n "imgdesc" => "beskrivning", "imglegend" => "Legend: (beskrivning) = visa/redigera bildbeskrivning.", "imghistory" => "Bildhistoria", -"revertimg" => "terg", +"revertimg" => "återgå", "deleteimg" => "radera", -"imghistlegend" => "Legend: (nuvarande) = detta r den nuvarande bilden, -(ta bort) = ta bort den gamla version, (terg) = terg till en gammal version. -
    Klicka p ett datum fr att se bilden som laddades upp den dagen.", //" -"imagelinks" => "Bildlnk", -"linkstoimage" => "De fljande sidorna lnkar till den hr bilden:", -"nolinkstoimage" => "Det finns ingen sida som lnkar till den hr bilden.", +"imghistlegend" => "Legend: (nuvarande) = detta är den nuvarande bilden, +(ta bort) = ta bort den gamla version, (återgå) = återgå till en gammal version. +
    Klicka på ett datum för att se bilden som laddades upp den dagen.", //" +"imagelinks" => "Bildlänk", +"linkstoimage" => "De följande sidorna länkar till den här bilden:", +"nolinkstoimage" => "Det finns ingen sida som länkar till den här bilden.", // Statistics // "statistics" => "Statistik", "sitestats" => "Statistiksida", -"userstats" => "Anvndarstatistik", -"sitestatstext" => "Det r $1 sidor i databasen. +"userstats" => "Användarstatistik", +"sitestatstext" => "Det är $1 sidor i databasen. Detta inkluderer diskussionssidorna, sidor om Wikipedia, mycket korta\"stub\" sidor, omdirigeringssidor, och andra sidor som kvalificerar sig som artiklar. -Om man tar bort ovanstende s r det $2 sidor som anses som riktiga artiklar.

    -Det har varit totalt $3 sidvisningar och det har varit $4 sidor som har ndrats +Om man tar bort ovanstående så är det $2 sidor som anses som riktiga artiklar.

    +Det har varit totalt $3 sidvisningar och det har varit $4 sidor som har ändrats sedan uppdateringen av mjukvaran (1 december 2002). -Det vill sga $5 ndringar per sida genomsnittligt, -och $6 sidvisningar per ndring.", -"userstatstext" => "Det r $1 registrerade anvndare. -$2 av dem r administratrer (se $3).", +Det vill säga $5 ändringar per sida genomsnittligt, +och $6 sidvisningar per ändring.", +"userstatstext" => "Det är $1 registrerade användare. +$2 av dem är administratörer (se $3).", // Maintenance Page // -"maintenance" => "Underhllssida", -"maintnancepagetext" => "Den hr sidan innehller flera verktyg fr att skta sidan. Vissa av dessa funktioner tenderar att stressa databasen (allt tar lng tid), s var snll och tryck inte p reloadknappen varje gng du gjort en liten ndring.", -"maintenancebacklink" => "Tillbaka till underhllssidorna", -"disambiguations" => "Sidor med tvetydiga lnkar", -"disambiguationspage" => "Wikipedia:Lnkar till sidor med tvetydiga titlar", -"disambiguationstext" => "Fljande artiklar lnkar till en sidor med tvetydliga titlar. De ska lnka till en sidor med en korrekt titel.
    En sida behandlar som tvetydig om den lnkar frn $1.
    Lnkar frn andra namngrupper r inte listade hr.", +"maintenance" => "Underhållssida", +"maintnancepagetext" => "Den här sidan innehåller flera verktyg för att sköta sidan. Vissa av dessa funktioner tenderar att stressa databasen (allt tar lång tid), så var snäll och tryck inte på reloadknappen varje gång du gjort en liten ändring.", +"maintenancebacklink" => "Tillbaka till underhållssidorna", +"disambiguations" => "Sidor med tvetydiga länkar", +"disambiguationspage" => "Wikipedia:Länkar till sidor med tvetydiga titlar", +"disambiguationstext" => "Följande artiklar länkar till en sidor med tvetydliga titlar. De ska länka till en sidor med en korrekt titel.
    En sida behandlar som tvetydig om den länkar från $1.
    Länkar från andra namngrupper är inte listade här.", "doubleredirects" => "Dubbla omdirigeringar", -"doubleredirectstext" => "OBS: Den hr listan kan innehlla falska resultat. Detta betyder normalt att det finns ytterligare text under den frsta #REDIRECT.
    \n Varje rad innehller en lnk till den frsta och andra omdirigering och den frsta raden av den andra omdirigeringen ger oftast den \"riktiga\" artikeln, vilket egentligen den frsta omdirigeringen ska peka p.", -"brokenredirects" => "Dliga omdirigeringar", -"brokenredirectstext" => "Fljande lnkar omdirigerar till en artikel som inte existerar.", -"selflinks" => "Sidor med lnkar till sig sjlva", -"selflinkstext" => "Fljande sidor innehller lnkar till sig sjlv, vilket de inte ska gra.", +"doubleredirectstext" => "OBS: Den här listan kan innehålla falska resultat. Detta betyder normalt att det finns ytterligare text under den första #REDIRECT.
    \n Varje rad innehåller en länk till den första och andra omdirigering och den första raden av den andra omdirigeringen ger oftast den \"riktiga\" artikeln, vilket egentligen den första omdirigeringen ska peka på.", +"brokenredirects" => "Dåliga omdirigeringar", +"brokenredirectstext" => "Följande länkar omdirigerar till en artikel som inte existerar.", +"selflinks" => "Sidor med länkar till sig själva", +"selflinkstext" => "Följande sidor innehåller länkar till sig själv, vilket de inte ska göra.", "mispeelings" => "Sidor med felstavningar", -"mispeelingstext" => "Fljande sidor innerhller vanliga felstavningar, som visas i $1. Den korrekta stavningen kanske ska se ut shr.", +"mispeelingstext" => "Följande sidor innerhåller vanliga felstavningar, som visas i $1. Den korrekta stavningen kanske ska se ut såhär.", "mispeelingspage" => "Lista med vanliga stavfel", -"missinglanguagelinks" => "Saknade sprklnkar", -"missinglanguagelinksbutton" => "Sk efter saknade sprklnkar fr", -"missinglanguagelinkstext" => "De hr artiklarna r inte lnkade +"missinglanguagelinks" => "Saknade språklänkar", +"missinglanguagelinksbutton" => "Sök efter saknade språklänkar för", +"missinglanguagelinkstext" => "De här artiklarna är inte länkade till deras i $1. Redirects och undersidor visas inte.", // Miscellaneous special pages // -"orphans" => "Frldralsa sidor", -"lonelypages" => "Frldralsa sidor", -"unusedimages" => "Oanvnda bilder", -"popularpages" => "Populra sidor", +"orphans" => "Föräldralösa sidor", +"lonelypages" => "Föräldralösa sidor", +"unusedimages" => "Oanvända bilder", +"popularpages" => "Populära sidor", "nviews" => "$1 visningar", -"wantedpages" => "nskelista", -"nlinks" => "$1 lnkar", +"wantedpages" => "Önskelista", +"nlinks" => "$1 länkar", "allpages" => "Alla sidor", "randompage" => "Slumpartikel", "shortpages" => "Korta sidor", -"longpages" => "Lnga sidor", -"listusers" => "Anvndarlista", +"longpages" => "Långa sidor", +"listusers" => "Användarlista", "specialpages" => "Speciella sidor", "spheading" => "Speciella sidor", -"sysopspheading" => "Speciella sidor fr sysop", -"developerspheading" => "Speciella sidor fr utvecklare", +"sysopspheading" => "Speciella sidor för sysop", +"developerspheading" => "Speciella sidor för utvecklare", "protectpage" => "Skydda sida", -"recentchangeslinked" => "Relaterade ndringar", -"rclsub" => "(till sidor som r lnkade frn \"$1\")", +"recentchangeslinked" => "Relaterade ändringar", +"rclsub" => "(till sidor som är länkade från \"$1\")", "debug" => "Debug", "newpages" => "Nya sidor", -"movethispage" => "Flytta den hr sidan", -"unusedimagestext" => "

    Lgg mrket till att andra hemsidor -som till exempel de internationella wikipedias kan lnka till bilder -med en direkt URL, och kan drfr bli listade hr trots att de anvnds kontinuerligt.", -"booksources" => "Bokkllor", -"booksourcetext" => "Nedan fljer en lista ver lnkar till hemsidor som sljer -nya och begagnade bcker, och mycket annan information om de bcker du sker. -Wikipedia har inget affrssamarbete med ovanstende fretag och ska inte heller tolkas som en uppmuntran.", +"movethispage" => "Flytta den här sidan", +"unusedimagestext" => "

    Lägg märket till att andra hemsidor +som till exempel de internationella wikipedias kan länka till bilder +med en direkt URL, och kan därför bli listade här trots att de används kontinuerligt.", +"booksources" => "Bokkällor", +"booksourcetext" => "Nedan följer en lista över länkar till hemsidor som säljer +nya och begagnade böcker, och mycket annan information om de böcker du söker. +Wikipedia har inget affärssamarbete med ovanstående företag och ska inte heller tolkas som en uppmuntran.", // Email this user // @@ -699,49 +709,49 @@ Wikipedia har inget aff "mailnologintext" => "Du ska varainloggad och ha angivit en korrekt epost-adress i dina anvndarinstllningar -fr att kunna skicka e-post till andra anvndare.", -"emailuser" => "Skicka e-post till den hr anvndaren", -"emailpage" => "Skicka e-post till annan anvndare", -"emailpagetext" => "Om den hr anvndaren har skrivit in en korrekt e-postadress, i sina -anvndarinstllningar, kommer formulret nedan skicka ett meddelande. -Den epost-adress du anget i dina anvndarinstllningar kommer att skrivas -i \"Frn\"fltet i detta e-post, s mottagaren har mjlighet att svara.", + wfLocalUrl( "Special:Preferences" ) . "\">användarinställningar +för att kunna skicka e-post till andra användare.", +"emailuser" => "Skicka e-post till den här användaren", +"emailpage" => "Skicka e-post till annan användare", +"emailpagetext" => "Om den här användaren har skrivit in en korrekt e-postadress, i sina +användarinställningar, kommer formuläret nedan skicka ett meddelande. +Den epost-adress du anget i dina användarinställningar kommer att skrivas +i \"Från\"fältet i detta e-post, så mottagaren har möjlighet att svara.", "noemailtitle" => "Ingen e-postadress", -"noemailtext" => "Den hr anvndaren har inte angivet en korrekt e-postadress eller -valt att inte ta emot ngot mail frn andra anvndare.", -"emailfrom" => "Frn", +"noemailtext" => "Den här användaren har inte angivet en korrekt e-postadress eller +valt att inte ta emot något mail från andra användare.", +"emailfrom" => "Från", "emailto" => "Till", -"emailsubject" => "mne", +"emailsubject" => "Ämne", "emailmessage" => "Meddelande", "emailsend" => "Skickat", -"emailsent" => "E-post r nu skickat", +"emailsent" => "E-post är nu skickat", "emailsenttext" => "Din e-post har skickats.", // Watchlist // -"watchlist" => "Min vervakningslista", -"watchlistsub" => "(fr anvndare \"$1\")", -"nowatchlist" => "Du har inga sidor upptagna p din vervakningslista.", -"watchnologin" => "Du r inte inloggad", +"watchlist" => "Min övervakningslista", +"watchlistsub" => "(för användare \"$1\")", +"nowatchlist" => "Du har inga sidor upptagna på din övervakningslista.", +"watchnologin" => "Du är inte inloggad", "watchnologintext" => "Du ska varainloggad -fr att kunna gra ndringar p din vervakningslista.", -"addedwatch" => "Tillagd p vervakningslistan", -"addedwatchtext" => "Sidan \"$1\" har satts upp p din vervakningslista. -Framtida ndringar av den hr sidan och dess diskussionssida vill listas dr, +för att kunna göra ändringar på din övervakningslista.", +"addedwatch" => "Tillagd på övervakningslistan", +"addedwatchtext" => "Sidan \"$1\" har satts upp på din övervakningslista. +Framtida ändringar av den här sidan och dess diskussionssida vill listas där, och sidan kommer att markeras med fet stil i listan ver de senaste ndringarna - fr att lttare kunna hittas

    - -

    Om du vill ta bort den hr sidan frn din vervakningslista, s klicka -\"Ta bort vervakning\" ute i sidan.", -"removedwatch" => "Borttagen frn vervakningslista", -"removedwatchtext" => "Sidan \"$1\" har blivit borttagen frn din vervakningslista", -"watchthispage" => "vervaka sida", -"unwatchthispage" => "Stoppa vervakning", + wfLocalUrl( "Special:Recentchanges" ) . "\">listan över de senaste ändringarna + för att lättare kunna hittas

    + +

    Om du vill ta bort den här sidan från din övervakningslista, så klicka +\"Ta bort övervakning\" ute i sidan.", +"removedwatch" => "Borttagen från övervakningslista", +"removedwatchtext" => "Sidan \"$1\" har blivit borttagen från din övervakningslista", +"watchthispage" => "Övervaka sida", +"unwatchthispage" => "Stoppa övervakning", "notanarticle" => "Inte en artikel", 'watch' => 'Bevaka', 'unwatch' => 'Obevaka', @@ -749,93 +759,93 @@ och sidan kommer att markeras med fet stil i "Ta bort sida", -"confirm" => "Bekrfta", -"excontent" => "fre radering:", -"exbeforeblank" => "fre tmning:", +"confirm" => "Bekräfta", +"excontent" => "före radering:", +"exbeforeblank" => "före tömning:", "exblank" => "sidan var tom", -"confirmdelete" => "Bekrfta borttagning", +"confirmdelete" => "Bekräfta borttagning", "deletesub" => "(Tar bort \"$1\")", -"confirmdeletetext" => "Du hller p och permanent ta bort en sida -eller bild med all dess historia frn databasen. -Bekrfta att du frstr vad du hller p med och vilka konsekvenser -detta leder till, och att det fljer +"confirmdeletetext" => "Du håller på och permanent ta bort en sida +eller bild med all dess historia från databasen. +Bekräfta att du förstår vad du håller på med och vilka konsekvenser +detta leder till, och att det följer [[Wikipedia:Policy]].", -"confirmcheck" => "Ja, jag vill verkligen ta bort det hr.", //" -"actioncomplete" => "Genomfrt", +"confirmcheck" => "Ja, jag vill verkligen ta bort det här.", //" +"actioncomplete" => "Genomfört", "deletedtext" => "\"$1\" har blivit borttagen. -Se $2 fr lista ver senaste borttagningar", +Se $2 för lista över senaste borttagningar", "deletedarticle" => "borttagen \"\$1\"", "dellogpage" => "Borttagningslogg", -"dellogpagetext" => "Nedan r en lista ver de senaste borttagningarna. -De tidsangivelser som anges fljer serverns klocka (UTC). +"dellogpagetext" => "Nedan är en lista över de senaste borttagningarna. +De tidsangivelser som anges följer serverns klocka (UTC).

    ", "deletionlog" => "borttagningslogg", -"reverted" => "tergtt till yngre version", +"reverted" => "Återgått till yngre version", "deletecomment" => "Anledningen till borttagning", -"imagereverted" => "terstllandet av nyare artikelversion lyckades", +"imagereverted" => "Återställandet av nyare artikelversion lyckades", // Undelete // -"undelete" => "terstll borttagna sidor", -"undeletepage" => "Visa och terstll borttagna sidor", -"undeletepagetext" => "Fljande sidor har blivit borttagna, men r fortfarande i arkivet och kan anvndas vid terstllning. -Arkivet kan ibland rensas p gamla versioner.", -"undeletearticle" => "terstll borttagen artikel", +"undelete" => "Återställ borttagna sidor", +"undeletepage" => "Visa och återställ borttagna sidor", +"undeletepagetext" => "Följande sidor har blivit borttagna, men är fortfarande i arkivet och kan användas vid återställning. +Arkivet kan ibland rensas på gamla versioner.", +"undeletearticle" => "Återställ borttagen artikel", "undeleterevisions" => "$1 versioner arkiverade", -"undeletehistory" => "Om du terstller sidan kommer allt tidigare versioner att sparas i versionshanteraren. -Om en ny sida med samma namn har blivit skapad sedan borttagningen s kommer den terstllda versionen att -hamna i den ldre versionshanteraren och den senaste versionen av sidan kommer inte blir automatiskt ersatt.", +"undeletehistory" => "Om du återställer sidan kommer allt tidigare versioner att sparas i versionshanteraren. +Om en ny sida med samma namn har blivit skapad sedan borttagningen så kommer den återställda versionen att +hamna i den äldre versionshanteraren och den senaste versionen av sidan kommer inte blir automatiskt ersatt.", "undeleterevision" => "Tog bort version $1", -"undeletebtn" => "terstlld!", -"undeletedarticle" => "terstlld \"$1\"", -"undeletedtext" => "Artikeln [[$1]] har blivit terstlld -Se [[Wikipedia:Borttagningslogg]] fr en lista ver nyligen gjorda borttagningar och terstllningar", +"undeletebtn" => "Återställd!", +"undeletedarticle" => "återställd \"$1\"", +"undeletedtext" => "Artikeln [[$1]] har blivit återställd +Se [[Wikipedia:Borttagningslogg]] för en lista över nyligen gjorda borttagningar och återställningar", // Contributions // -"contributions" => "Anvndarbidrag", +"contributions" => "Användarbidrag", "mycontris" => "Mina bidrag", -"contribsub" => "Fr $1", -"nocontribs" => "Inga ndringar var funna som motsvarar dessa kriterier", -"ucnote" => "Nedan visas dennes anvndares senaste $1 ndringar, under de senaste $2 dagarna.", -"uclinks" => "Visa de senaste $1 ndringarna. Visa de senaste $2 dagarna.", +"contribsub" => "För $1", +"nocontribs" => "Inga ändringar var funna som motsvarar dessa kriterier", +"ucnote" => "Nedan visas dennes användares senaste $1 ändringar, under de senaste $2 dagarna.", +"uclinks" => "Visa de senaste $1 ändringarna. Visa de senaste $2 dagarna.", "uctop" => " (top)", // What links here // -"whatlinkshere" => "Vilka sidor lnkar hit", -"notargettitle" => "Inget ml", -"notargettext" => "Du har inte specificerat en sida eller anvndare -fr att genomfra den hr funktionen.", -"linklistsub" => "(Lnklista)", -"linkshere" => "Fljande sidor lnkas hit:", -"nolinkshere" => "Inga sidor lnkar hit.", -"isredirect" => "Lnka vidare sida", +"whatlinkshere" => "Vilka sidor länkar hit", +"notargettitle" => "Inget mål", +"notargettext" => "Du har inte specificerat en sida eller användare +för att genomföra den här funktionen.", +"linklistsub" => "(Länklista)", +"linkshere" => "Följande sidor länkas hit:", +"nolinkshere" => "Inga sidor länkar hit.", +"isredirect" => "Länka vidare sida", // Block/unblock IP // "blockip" => "Blockera IP-adress", -"blockiptext" => "Anvnd formulret nedan fr att blockera skrivtkomst -frn en viss IP-adress -Detta ska bara genomfras fr att stoppa klotter och -verstmma med [[Wikipedia:Politik|Wikipedia politik]]. +"blockiptext" => "Använd formuläret nedan för att blockera skrivåtkomst +från en viss IP-adress +Detta ska bara genomföras för att stoppa klotter och +överstämma med [[Wikipedia:Politik|Wikipedia politik]]. Fyll i anledningen till blockering nedan (till exempel vilka artiklar som klottrats ner).", "ipaddress" => "IP-adress", "ipbreason" => "Anledning", -"ipbsubmit" => "Blockera den hr IP-adressen", +"ipbsubmit" => "Blockera den här IP-adressen", "badipaddress" => "Du har inte skrivit IP-adressen korrekt.", -"noblockreason" => "Du mste ange en anledning till varfr du blockerar.", +"noblockreason" => "Du måste ange en anledning till varför du blockerar.", "blockipsuccesssub" => "Blockeringen lyckades", "blockipsuccesstext" => "IP-adressen \"$1\" har blockerats. -
    Se [[Speciel:Ipblocklist|IP blockeringslistan]] fr alla blockeringar.", +
    Se [[Speciel:Ipblocklist|IP blockeringslistan]] för alla blockeringar.", "unblockip" => "Ta bort blockering av IP-adress", -"unblockiptext" => "Anvnd nedanstende formulr fr att terstlla skrivrttigheten fr en tidigare blockerad IP-adress.", -"ipusubmit" => "Ta bort blockering fr den hr adressen", -"ipusuccess" => "Blockeringen fr IP-adressen \"$1\" har tagits bort", +"unblockiptext" => "Använd nedanstående formulär för att återställa skrivrättigheten för en tidigare blockerad IP-adress.", +"ipusubmit" => "Ta bort blockering för den här adressen", +"ipusuccess" => "Blockeringen för IP-adressen \"$1\" har tagits bort", -"ipblocklist" => "Lista ver blockerade IP-adresser", +"ipblocklist" => "Lista över blockerade IP-adresser", "blocklistline" => "$1, $2 blockerade $3", "blocklink" => "blockera", "unblocklink" => "ta bort blockering", @@ -843,59 +853,59 @@ Fyll i anledningen till blockering nedan (till exempel vilka artiklar som klottr // Developer tools // -"lockdb" => "Ls databas", -"unlockdb" => "Ls upp databas", -"lockdbtext" => "En lsning av databasen hindrar alla anvndare frn att redigera sidor, ndra instllningar och andra saker som krver ndringar i databasen. -Bekrfta att du verkligen vill gra detta och att du kommer att lsa upp databasen nr underhllet r utfrt.", -"unlockdbtext" => "Genom att lsa upp databasen kommer alla anvndare att kunna redigera sidor, ndra instllningar etc. igen. -Bekrfta att du vill gra detta.", -"lockconfirm" => "Ja, jag vill verkligen lsa databasen.", -"unlockconfirm" => "Ja, jag vill verkligen lsa upp databasen.", -"lockbtn" => "Ls databasen", -"unlockbtn" => "Ls upp databasen", -"locknoconfirm" => "Du har inte bekrftat lsningen.", -"lockdbsuccesssub" => "Databasen har lsts", -"unlockdbsuccesssub" => "Databasen har lsts upp", -"lockdbsuccesstext" => "Wikipediadatabasen r lst. -
    Kom ihg att ta bort lsningen nr du r frdig med ditt underhll.", -"unlockdbsuccesstext" => "Wikipediadatabasen r upplst.", +"lockdb" => "Lås databas", +"unlockdb" => "Lås upp databas", +"lockdbtext" => "En låsning av databasen hindrar alla användare från att redigera sidor, ändra inställningar och andra saker som kräver ändringar i databasen. +Bekräfta att du verkligen vill göra detta och att du kommer att låsa upp databasen när underhållet är utfört.", +"unlockdbtext" => "Genom att låsa upp databasen kommer alla användare att kunna redigera sidor, ändra inställningar etc. igen. +Bekräfta att du vill göra detta.", +"lockconfirm" => "Ja, jag vill verkligen låsa databasen.", +"unlockconfirm" => "Ja, jag vill verkligen låsa upp databasen.", +"lockbtn" => "Lås databasen", +"unlockbtn" => "Lås upp databasen", +"locknoconfirm" => "Du har inte bekräftat låsningen.", +"lockdbsuccesssub" => "Databasen har låsts", +"unlockdbsuccesssub" => "Databasen har låsts upp", +"lockdbsuccesstext" => "Wikipediadatabasen är låst. +
    Kom ihåg att ta bort låsningen när du är färdig med ditt underhåll.", +"unlockdbsuccesstext" => "Wikipediadatabasen är upplåst.", // SQL query // -"asksql" => "SQL-frga", -"asksqltext" => "Anvnd nedanstende formulr fr att stlla frgor direkt till Wikipedias databas. -Anvnd enkla citationstecken ('s hr') fr att markera strngar. -Detta belastar ofta servern hrt, s anvnd den hr funktionen med omtanke.", -"sqlquery" => "Skriv frga", -"querybtn" => "Skicka frga", -"selectonly" => "Andra frgor n \"SELECT\" fr endast utfras av Wikipedias utvecklare.", -"querysuccessful" => "Frgan genomfrdes korrekt", +"asksql" => "SQL-fråga", +"asksqltext" => "Använd nedanstående formulär för att ställa frågor direkt till Wikipedias databas. +Använd enkla citationstecken ('så här') för att markera strängar. +Detta belastar ofta servern hårt, så använd den här funktionen med omtanke.", +"sqlquery" => "Skriv fråga", +"querybtn" => "Skicka fråga", +"selectonly" => "Andra frågor än \"SELECT\" får endast utföras av Wikipedias utvecklare.", +"querysuccessful" => "Frågan genomfördes korrekt", // Move page // "movepage" => "Flytta sida", -"movepagetext" => "Formulret nedan byter namn p sidan och flyttar hela dess +"movepagetext" => "Formuläret nedan byter namn på sidan och flyttar hela dess historia till det nya namnet. Den gamla sidan blir en omdirigeringssida till den nya. -Lnkar till den gamla sidan kommer inte att ndras. Om det finns en diskussionssida +Länkar till den gamla sidan kommer inte att ändras. Om det finns en diskussionssida kommer den inte att flyttas. -OBS! Detta kan innebra en drastisk ndring p en populr sida; -var sker p att du inser konsekvenserna i frvg.", +OBS! Detta kan innebära en drastisk ändring på en populär sida; +var säker på att du inser konsekvenserna i förväg.", "movearticle" => "Flytta sida", "movenologin" => "Ej inloggad", -"movenologintext" => "Du mste vara registrerad anvndare och ha
    "Du måste vara registrerad användare och ha loggat in -fr att kunna flytta en sida.", +för att kunna flytta en sida.", "newtitle" => "Till ny titel", "movepagebtn" => "Flytta sida", "pagemovedsub" => "Sidan har flyttats", "pagemovedtext" => "Sidan \"[[$1]]\" har flyttats till \"[[$2]]\".", -"articleexists" => "Det finns redan en sida med detta namn eller s r namnet du angett ogiltigt. Vlj ett annat namn.", -"talkexists" => "Sidan flyttades korrekt, men den tilhrande diskussionssidan kunde inte flyttas, eftersom det redan existerar en sida med den hr nya titeln. Du mste sammanfoga dem manuellt.", +"articleexists" => "Det finns redan en sida med detta namn eller så är namnet du angett ogiltigt. Välj ett annat namn.", +"talkexists" => "Sidan flyttades korrekt, men den tilhörande diskussionssidan kunde inte flyttas, eftersom det redan existerar en sida med den här nya titeln. Du måste sammanfoga dem manuellt.", "movedto" => "flyttat till", -"movetalk" => "Flytta ven diskussionssidan, om den finns.", -"talkpagemoved" => "Sidans diskussionssida flyttades ocks.", +"movetalk" => "Flytta även diskussionssidan, om den finns.", +"talkpagemoved" => "Sidans diskussionssida flyttades också.", "talkpagenotmoved" => "Sidans diskussionssida flyttades inte.", # Move page @@ -949,199 +959,188 @@ title. Please merge them manually.", "export" => "Exportera sidor", "exporttext" => "Du kan exportera texten och redigeringshistoriken av en specifik -sida eller stlla in sidor wrappade i lite XML; detta kan sedan importeras till en annan -wiki som kr MediaWiki-programvara, konverterad, eller bara sparad som syns skull.", +sida eller ställa in sidor wrappade i lite XML; detta kan sedan importeras till en annan +wiki som kör MediaWiki-programvara, konverterad, eller bara sparad som syns skull.", "exportcuronly" => "Inkludera endast nuvarande revisionen, inte hela historiken", # Namespace 8 related "allmessages" => "Alla systemmeddelanden", -"allmessagestext" => "Detta r en lista ver alla systemmeddelanden tillgngliga i Metawiki-namespacet.", +"allmessagestext" => "Detta är en lista över alla systemmeddelanden tillgängliga i Metawiki-namespacet.", # Thumbnails -"thumbnail-more" => "Frstora", +"thumbnail-more" => "Förstora", "missingimage" => "Bild saknas
    $1\n", # tooltip help for the main actions 'tooltip-atom' => 'Atom feed for this page', 'tooltip-article' => 'Visa artikel [alt-a]', 'tooltip-talk' => 'Diskutera artikel [alt-t]', -'tooltip-edit' => 'Du kan ndra den hr sidan. Var god anvand frhandsgranskningsknappen innan du sparar. [alt-e]', -'tooltip-addsection' => 'Lgg till en kommentar p den hr sidan. [alt-+]', -'tooltip-viewsource' => 'Den hr sidan r skyddad. Du kan inte se dess klla. [alt-e]', -'tooltip-history' => 'Tidigare versioner av den hr sidan, [alt-h]', -'tooltip-protect' => 'Skydda den hr sidan [alt-=]', -'tooltip-delete' => 'Ta bort den hr sidan [alt-d]', -'tooltip-undelete' => 'terstll $1 borttagna ndringar till den hr sidan [alt-d]', -'tooltip-move' => 'Flytta den hr sidan [alt-m]', -'tooltip-nomove' => 'Du har inte rttighet att flytta den hr sidan', -'tooltip-watch' => 'Lgg till den hr sidan till din bevakningslista [alt-w]', -'tooltip-unwatch' => 'Ta bort den hr sidan frn din bevakningslista [alt-w]', -'tooltip-watchlist' => 'Lista ver sidor som du bevakar [alt-l]', -'tooltip-userpage' => 'Min anvndarsida [alt-.]', -'tooltip-anonuserpage' => 'Anvndarsidan fr ip:et du ndrar [alt-.]', +'tooltip-edit' => 'Du kan ändra den här sidan. Var god anvand förhandsgranskningsknappen innan du sparar. [alt-e]', +'tooltip-addsection' => 'Lägg till en kommentar på den här sidan. [alt-+]', +'tooltip-viewsource' => 'Den här sidan är skyddad. Du kan inte se dess källa. [alt-e]', +'tooltip-history' => 'Tidigare versioner av den här sidan, [alt-h]', +'tooltip-protect' => 'Skydda den här sidan [alt-=]', +'tooltip-delete' => 'Ta bort den här sidan [alt-d]', +'tooltip-undelete' => 'Återställ $1 borttagna ändringar till den här sidan [alt-d]', +'tooltip-move' => 'Flytta den här sidan [alt-m]', +'tooltip-nomove' => 'Du har inte rättighet att flytta den här sidan', +'tooltip-watch' => 'Lägg till den här sidan till din bevakningslista [alt-w]', +'tooltip-unwatch' => 'Ta bort den här sidan från din bevakningslista [alt-w]', +'tooltip-watchlist' => 'Lista över sidor som du bevakar [alt-l]', +'tooltip-userpage' => 'Min användarsida [alt-.]', +'tooltip-anonuserpage' => 'Användarsidan för ip:et du ändrar [alt-.]', 'tooltip-mytalk' => 'Min diskussionssida [alt-n]', -'tooltip-anontalk' => 'Diskutera ndringar frn den hr ip-addressen [alt-n]', -'tooltip-preferences' => 'Mina instllningar', -'tooltip-mycontris' => 'Lista ver mina bidrag [alt-y]', -'tooltip-login' => 'Du r uppmuntrad att logga in, men det r inget krav. [alt-o]', +'tooltip-anontalk' => 'Diskutera ändringar från den här ip-addressen [alt-n]', +'tooltip-preferences' => 'Mina inställningar', +'tooltip-mycontris' => 'Lista över mina bidrag [alt-y]', +'tooltip-login' => 'Du är uppmuntrad att logga in, men det är inget krav. [alt-o]', 'tooltip-logout' => 'Logga ut [alt-o]', -'tooltip-search' => 'Sk den hr wikin [alt-f]', -'tooltip-mainpage' => 'Beska Huvudsidan [alt-z]', -'tooltip-portal' => 'Om projektet, vad du kan gra och vart du hittar saker och ting', -'tooltip-randompage' => 'Ladda en slumpmssig sida [alt-x]', -'tooltip-currentevents' => 'Hitta bakgrundsinformation till nuvarande hndelser', -'tooltip-sitesupport' => 'Std {{SITENAME}}', +'tooltip-search' => 'Sök den här wikin [alt-f]', +'tooltip-mainpage' => 'Besöka Huvudsidan [alt-z]', +'tooltip-portal' => 'Om projektet, vad du kan göra och vart du hittar saker och ting', +'tooltip-randompage' => 'Ladda en slumpmässig sida [alt-x]', +'tooltip-currentevents' => 'Hitta bakgrundsinformation till nuvarande händelser', +'tooltip-sitesupport' => 'Stöd {{SITENAME}}', 'tooltip-help' => 'The place to find out.', -'tooltip-recentchanges' => 'Lista ver senaste ndringar p wikin. [alt-r]', -'tooltip-recentchangeslinked' => 'Senaste ndringar till sidor som lnkar hit [alt-c]', -'tooltip-whatlinkshere' => 'Lista alla wikisidor som lnkar hit [alt-b]', +'tooltip-recentchanges' => 'Lista över senaste ändringar på wikin. [alt-r]', +'tooltip-recentchangeslinked' => 'Senaste ändringar till sidor som länkar hit [alt-c]', +'tooltip-whatlinkshere' => 'Lista alla wikisidor som länkar hit [alt-b]', 'tooltip-specialpages' => 'Lista alla specialsidor [alt-q]', 'tooltip-upload' => 'Ladda upp bilder och media filer [alt-u]', -'tooltip-specialpage' => 'Detta r en specialsida, du kan inte ndra den.', -'tooltip-minoredit' => 'Markera som en mindre ndring [alt-i]', -'tooltip-save' => 'Spara dina ndringar changes [alt-s]', -'tooltip-preview' => 'Frhandsgranska dina ndringar, gr detta innan du sparar! [alt-p]', -'tooltip-contributions' => 'Visa lista ver bidrag frn den hr nvndaren', -'tooltip-emailuser' => 'Skicka ett mail till anvndaren', -'tooltip-rss' => 'RSS-matning fr den hr sidan', -'tooltip-compareselectedversions' => 'Visa skillnaden mellan de tv markerade versionerna av den hr sidan. [alt-v]', +'tooltip-specialpage' => 'Detta är en specialsida, du kan inte ändra den.', +'tooltip-minoredit' => 'Markera som en mindre ändring [alt-i]', +'tooltip-save' => 'Spara dina ändringar changes [alt-s]', +'tooltip-preview' => 'Förhandsgranska dina ändringar, gör detta innan du sparar! [alt-p]', +'tooltip-contributions' => 'Visa lista över bidrag från den här änvändaren', +'tooltip-emailuser' => 'Skicka ett mail till användaren', +'tooltip-rss' => 'RSS-matning för den här sidan', +'tooltip-compareselectedversions' => 'Visa skillnaden mellan de två markerade versionerna av den här sidan. [alt-v]', # Metadata -"nodublincore" => "Dublin Core RDF metadata avstngt fr p den hr servern.", -"nocreativecommons" => "Creative Commons RDF metadata avstngt p den hr servern.", -"notacceptable" => "Den hr wiki-servern kan inte erbjuda data i ett format som din klient kan lsa.", +"nodublincore" => "Dublin Core RDF metadata avstängt för på den här servern.", +"nocreativecommons" => "Creative Commons RDF metadata avstängt på den här servern.", +"notacceptable" => "Den här wiki-servern kan inte erbjuda data i ett format som din klient kan läsa.", # Attribution -"anonymous" => "Anonym anvndare av $wgSitename", -"siteuser" => "$wgSitename anvndare $1", -"lastmodifiedby" => "Den hr sidan var senaste ndrad $1 av $2.", +"anonymous" => "Anonym användare av $wgSitename", +"siteuser" => "$wgSitename användare $1", +"lastmodifiedby" => "Den här sidan var senaste ändrad $1 av $2.", "and" => "och", -"othercontribs" => "Baserad p arbete utfrt av $1.", -"siteusers" => "$wgSitename anvndare $1" +"othercontribs" => "Baserad på arbete utfört av $1.", +"siteusers" => "$wgSitename användare $1" ); -class LanguageSv extends Language { - - function getNamespaces() { - global $wgNamespaceNamesSv; - return $wgNamespaceNamesSv; - } - - function getBookstoreList () { - global $wgBookstoreListSv ; - return $wgBookstoreListSv ; - } - - function getNsText( $index ) { - global $wgNamespaceNamesSv; - return $wgNamespaceNamesSv[$index]; - } - - function getNsIndex( $text ) { - global $wgNamespaceNamesSv; - - foreach ( $wgNamespaceNamesSv as $i => $n ) { - if ( 0 == strcasecmp( $n, $text ) ) { return $i; } - } +class LanguageSv extends LanguageUtf8 { + + function getNamespaces() { + global $wgNamespaceNamesSv; + return $wgNamespaceNamesSv; + } + + function getBookstoreList () { + global $wgBookstoreListSv ; + return $wgBookstoreListSv ; + } + + function getNsText( $index ) { + global $wgNamespaceNamesSv; + return $wgNamespaceNamesSv[$index]; + } + + function getNsIndex( $text ) { + global $wgNamespaceNamesSv; - // Consider Special: and Speciel: equal... which is preferred? - if ( 0 == strcasecmp( "speciel", $text ) ) { return -1; } - return false; - } - - // inherit specialPage() - - function getQuickbarSettings() { - global $wgQuickbarSettingsSv; - return $wgQuickbarSettingsSv; - } - - function getSkinNames() { - global $wgSkinNamesSv; - return $wgSkinNamesSv; - } - - function getUserToggles() { - global $wgUserTogglesSv; - return $wgUserTogglesSv; - } - - function getMonthName( $key ) - { - global $wgMonthNamesSv; - return $wgMonthNamesSv[$key-1]; - } - - function getMonthAbbreviation( $key ) - { - global $wgMonthAbbreviationsSv; - return $wgMonthAbbreviationsSv[$key-1]; - } - - function getWeekdayName( $key ) - { - global $wgWeekdayNamesSv; - return $wgWeekdayNamesSv[$key-1]; - } - - # Inherit userAdjust() - - function date( $ts, $adj = false ) - { - if ( $adj ) { $ts = $this->userAdjust( $ts ); } - - $d = (0 + substr( $ts, 6, 2 )) . " " . - $this->getMonthName( substr( $ts, 4, 2 ) ) . " " . - substr( $ts, 0, 4 ); - return $d; - } - + foreach ( $wgNamespaceNamesSv as $i => $n ) { + if ( 0 == strcasecmp( $n, $text ) ) { return $i; } + } + + // Consider Special: and Speciel: equal... which is preferred? + if ( 0 == strcasecmp( "speciel", $text ) ) { return -1; } + return false; + } + + // inherit specialPage() + + function getQuickbarSettings() { + global $wgQuickbarSettingsSv; + return $wgQuickbarSettingsSv; + } + + function getSkinNames() { + global $wgSkinNamesSv; + return $wgSkinNamesSv; + } + + function getUserToggles() { + global $wgUserTogglesSv; + return $wgUserTogglesSv; + } + + function getMonthName( $key ) { + global $wgMonthNamesSv; + return $wgMonthNamesSv[$key-1]; + } + + function getMonthAbbreviation( $key ) { + global $wgMonthAbbreviationsSv; + return $wgMonthAbbreviationsSv[$key-1]; + } + + function getWeekdayName( $key ) { + global $wgWeekdayNamesSv; + return $wgWeekdayNamesSv[$key-1]; + } + + # Inherit userAdjust() + + function date( $ts, $adj = false ) { + if ( $adj ) { $ts = $this->userAdjust( $ts ); } + + $d = (0 + substr( $ts, 6, 2 )) . " " . + $this->getMonthName( substr( $ts, 4, 2 ) ) . " " . + substr( $ts, 0, 4 ); + return $d; + } + // "." is used as the character to separate the // hours from the minutes in the date output - 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->date( $ts, $adj ) . " kl." . $this->time( $ts, $adj ); - } - - function getValidSpecialPages() - { - global $wgValidSpecialPagesSv; - return $wgValidSpecialPagesSv; - } - - function getSysopSpecialPages() - { - global $wgSysopSpecialPagesSv; - return $wgSysopSpecialPagesSv; - } - - function getDeveloperSpecialPages() - { - global $wgDeveloperSpecialPagesSv; - return $wgDeveloperSpecialPagesSv; - } - - function getMessage( $key ) - { - global $wgAllMessagesSv; - if( array_key_exists( $key, $wgAllMessagesSv ) ) - return $wgAllMessagesSv[$key]; - else - return Language::getMessage($key); - } - + 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->date( $ts, $adj ) . " kl." . $this->time( $ts, $adj ); + } + + function getValidSpecialPages() { + global $wgValidSpecialPagesSv; + return $wgValidSpecialPagesSv; + } + + function getSysopSpecialPages() { + global $wgSysopSpecialPagesSv; + return $wgSysopSpecialPagesSv; + } + + function getDeveloperSpecialPages() { + global $wgDeveloperSpecialPagesSv; + return $wgDeveloperSpecialPagesSv; + } + + function getMessage( $key ) { + global $wgAllMessagesSv; + if( array_key_exists( $key, $wgAllMessagesSv ) ) + return $wgAllMessagesSv[$key]; + return ""; + } + } ?> diff --git a/languages/LanguageTa.php b/languages/LanguageTa.php index 94e6e0309430..6c1712cb0684 100644 --- a/languages/LanguageTa.php +++ b/languages/LanguageTa.php @@ -43,7 +43,8 @@ require_once( "LanguageUtf8.php" ); 'montparnasse' => "மொண்ட்பார்னாசே (Montparnasse)", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesTa = array( diff --git a/languages/LanguageTh.php b/languages/LanguageTh.php index e36c9b7f5644..db6eb70b098a 100644 --- a/languages/LanguageTh.php +++ b/languages/LanguageTh.php @@ -34,7 +34,8 @@ 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesTh = array( diff --git a/languages/LanguageUk.php b/languages/LanguageUk.php index 0ade181e1aa1..84074c2fe85b 100755 --- a/languages/LanguageUk.php +++ b/languages/LanguageUk.php @@ -38,6 +38,8 @@ require_once( "LanguageUtf8.php" ); 'davinci' => "DaVinci", 'mono' => "Mono", 'monobook' => "MonoBook" +, + "myskin" => "MySkin" ); /* private */ $wgMathNamesUk = array( diff --git a/languages/LanguageUr.php b/languages/LanguageUr.php index 06a879797937..a2db1d8aaafe 100644 --- a/languages/LanguageUr.php +++ b/languages/LanguageUr.php @@ -19,4 +19,4 @@ class LanguageUr extends LanguageUtf8 { } } -?> \ No newline at end of file +?> diff --git a/languages/LanguageUtf8.php b/languages/LanguageUtf8.php index 805589dd2f53..45086914aeab 100644 --- a/languages/LanguageUtf8.php +++ b/languages/LanguageUtf8.php @@ -67,7 +67,7 @@ class LanguageUtf8 extends Language { function firstChar( $s ) { preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' . - '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})', $s, $matches); + '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})/', $s, $matches); return isset( $matches[1] ) ? $matches[1] : ""; } diff --git a/languages/LanguageYi.php b/languages/LanguageYi.php index 60d8b93215dc..3d69102f7704 100644 --- a/languages/LanguageYi.php +++ b/languages/LanguageYi.php @@ -18,4 +18,4 @@ class LanguageYi extends LanguageUtf8 { } } -?> \ No newline at end of file +?> diff --git a/languages/LanguageZh.php b/languages/LanguageZh.php index 2f8859cac6ee..99693c20898a 100644 --- a/languages/LanguageZh.php +++ b/languages/LanguageZh.php @@ -45,7 +45,8 @@ require_once( "LanguageUtf8.php" ); 'montparnasse' => "Montparnasse", 'davinci' => "DaVinci", 'mono' => "Mono", - 'monobook' => "MonoBook" + 'monobook' => "MonoBook", + "myskin" => "MySkin" ); /* private */ $wgMathNamesZh = array( diff --git a/maintenance/DiffLanguage.php b/maintenance/DiffLanguage.php index 7857635f43c2..89955c53c864 100644 --- a/maintenance/DiffLanguage.php +++ b/maintenance/DiffLanguage.php @@ -34,20 +34,8 @@ # The script then print a list of wgAllMessagesXX keys that aren't # localised, a percentage of messages correctly localised and the # number of messages to be translated. -# -# -# Known bugs: -# - File paths are hardcoded -# - - -$wgCommandLineMode = true; -# Turn off output buffering if it's on -@ob_end_flush(); -require_once("../LocalSettings.php"); -require_once( "../includes/Setup.php" ); -require_once( "../install-utils.inc" ); +require_once( "commandLine.inc" ); $wgLanguageCode = strtoupper(substr($wgLanguageCode,0,1)).strtolower(substr($wgLanguageCode,1)); diff --git a/maintenance/InitialiseMessages.inc b/maintenance/InitialiseMessages.inc index 0301835fc57e..5d42cffec71b 100755 --- a/maintenance/InitialiseMessages.inc +++ b/maintenance/InitialiseMessages.inc @@ -14,17 +14,17 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) { $wgUser = new User; $wgUser->setLoaded( true ); # Don't load from DB - $wgUser->setName( "MediaWiki default" ); + $wgUser->setName( 'MediaWiki default' ); # Don't try to draw messages from the database we're initialising $wgMessageCache->disable(); - $fname = "initialiseMessages"; + $fname = 'initialiseMessages'; $ns = NS_MEDIAWIKI; # cur_user_text responsible for the modifications # Don't change it unless you're prepared to update the DBs accordingly, otherwise the # default messages won't be overwritte - $username = "MediaWiki default"; + $username = 'MediaWiki default'; $timestamp = wfTimestampNow(); $invTimestamp = wfInvertTimestamp( $timestamp ); @@ -54,19 +54,19 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) { # SELECT all existing messages foreach ( $sortedArray as $key => $enMsg ) { - if ( $key == "" ) { + if ( $key == '' ) { continue; // Skip odd members } if ( $first ) { $first = false; } else { - $sql .= ","; + $sql .= ','; } $titleObj = Title::newFromText( $key ); $enctitle = wfStrencode($titleObj->getDBkey()); $sql .= "'$enctitle'"; } - $sql .= ")"; + $sql .= ')'; $res = wfQuery( $sql, DB_READ ); $row = wfFetchObject( $res ); @@ -75,9 +75,9 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) { $existingTitles = array(); while ( $row ) { if ( $row->cur_user_text != $username ) { - $existingTitles[$row->cur_title] = "keep"; + $existingTitles[$row->cur_title] = 'keep'; } else { - $existingTitles[$row->cur_title] = "chuck"; + $existingTitles[$row->cur_title] = 'chuck'; } $row = wfFetchObject( $res ); @@ -94,7 +94,7 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) { # Process each message foreach ( $sortedArray as $key => $enMsg ) { - if ( $key == "" ) { + if ( $key == '' ) { continue; // Skip odd members } # Get message text @@ -109,8 +109,8 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) { # Update messages which already exist if ( array_key_exists( $title, $existingTitles ) ) { - if ( $existingTitles[$title] == "chuck" || $overwrite) { - print "$title\n"; + if ( $existingTitles[$title] == 'chuck' || $overwrite) { + # print "$title\n"; $mwTitleObj = Title::makeTitle( NS_MEDIAWIKI, $title ); $article = new Article( $mwTitleObj ); $article->quickEdit( $message ); @@ -121,7 +121,7 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) { if ( $first ) { $first = false; } else { - $sql .= ","; + $sql .= ','; } $sql .= "($ns, @@ -155,9 +155,9 @@ $message # Write the navigation page - $navText .= ""; - $title = wfMsgNoDB( "allmessages" ); - $titleObj = Title::makeTitle( NS_MEDIAWIKI, $title ); + $navText .= ''; + $title = wfMsgNoDB( 'allmessages' ); + $titleObj = Title::makeTitle( NS_WIKIPEDIA, $title ); $wgArticle = new Article( $titleObj ); $wgOut->disable(); $wgUser = User::newFromName( 'MediaWiki default' ); @@ -169,8 +169,8 @@ $message # Clear the relevant memcached key if( $wgUseMemCached ) { - print "Clearing message cache..."; - $wgMemc->delete( "$wgDBname:messages" ); + print 'Clearing message cache...'; + $wgMemc->delete( $wgDBname.':messages' ); print "Done.\n"; } } diff --git a/maintenance/archives/moveCustomMessages.inc b/maintenance/archives/moveCustomMessages.inc index abab1a57f7d1..5438194690a1 100644 --- a/maintenance/archives/moveCustomMessages.inc +++ b/maintenance/archives/moveCustomMessages.inc @@ -7,7 +7,7 @@ function isTemplateInitialised() { } function moveCustomMessages( $phase ) { - global $wgUser, $wgAllMessagesEn, $wgDeferredUpdateList, $wgLang ; + global $wgUser, $wgAllMessagesEn, $wgDeferredUpdateList, $wgLang; global $targets, $template, $replaceCount; $wgUser = new User; @@ -15,6 +15,8 @@ function moveCustomMessages( $phase ) { $wgUser->setName( "Template namespace initialisation script" ); $wgUser->addRight( "bot" ); + wfIgnoreSQLErrors( true ); + # Compose DB key array $dbkeys = array(); @@ -59,6 +61,7 @@ function moveCustomMessages( $phase ) { if ( $phase == 0 || $phase == 2 ) { print "\nMoving pages...\n"; foreach ( $targets as $partial => $dummy ) { + wfQuery( "BEGIN", DB_WRITE ); $ot = Title::makeTitle( NS_MEDIAWIKI, $partial ); $nt = Title::makeTitle( NS_TEMPLATE, $partial ); print "$partial..."; @@ -73,6 +76,7 @@ function moveCustomMessages( $phase ) { $up = array_pop( $wgDeferredUpdateList ); $up->doUpdate(); } + wfQuery( "COMMIT", DB_WRITE ); } } @@ -93,6 +97,7 @@ function moveCustomMessages( $phase ) { $dest = Title::makeTitle( NS_MEDIAWIKI, $partial ); $linksTo = $dest->getLinksTo(); foreach( $linksTo as $source ) { + wfQuery( "BEGIN", DB_WRITE ); $pdbk = $source->getPrefixedDBkey(); if ( !array_key_exists( $pdbk, $completedTitles ) ) { $completedTitles[$pdbk] = 1; @@ -110,11 +115,17 @@ function moveCustomMessages( $phase ) { if ( $text != $row->cur_text ) { print "$pdbk\n"; $art = new Article( $source ); - $art->quickEdit( $text ); + $art->updateArticle( $text, "", false, false ); + # Do deferred updates + while ( count( $wgDeferredUpdateList ) ) { + $up = array_pop( $wgDeferredUpdateList ); + $up->doUpdate(); + } } else { print "($pdbk)\n"; } } + wfQuery( "COMMIT", DB_WRITE ); } } } diff --git a/maintenance/commandLine.inc b/maintenance/commandLine.inc index f868b0bfc783..102057f2f661 100644 --- a/maintenance/commandLine.inc +++ b/maintenance/commandLine.inc @@ -1,41 +1,44 @@ diff --git a/maintenance/convertLinks.inc b/maintenance/convertLinks.inc index f56a771f9649..c9b7fb54cbe6 100644 --- a/maintenance/convertLinks.inc +++ b/maintenance/convertLinks.inc @@ -31,20 +31,21 @@ function convertLinks() { $perfLogFilename = "convLinksPerf.txt"; #-------------------------------------------------------------------- + $res = wfQuery( "SELECT l_from FROM links LIMIT 1", DB_READ ); + if ( mysql_field_type( $res, 0 ) == "int" ) { + print "Schema already converted\n"; + return; + } + $res = wfQuery( "SELECT COUNT(*) AS count FROM links", DB_WRITE ); $row = wfFetchObject($res); $numRows = $row->count; wfFreeResult( $res ); if ( $numRows == 0 ) { - print "No rows to convert. Updating schema...\n"; + print "Updating schema (no rows to convert)...\n"; createTempTable(); } else { - $res = wfQuery( "SELECT l_from FROM links LIMIT 1", DB_READ ); - if ( mysql_field_type( $res, 0 ) == "int" ) { - print "Schema already converted\n"; - return; - } if ( $logPerformance ) { $fh = fopen ( $perfLogFilename, "w" ); } $baseTime = $startTime = getMicroTime(); # Create a title -> cur_id map diff --git a/maintenance/eval.php b/maintenance/eval.php index 5ba2f04b6bcb..911fde49ec7b 100755 --- a/maintenance/eval.php +++ b/maintenance/eval.php @@ -7,8 +7,8 @@ require_once( "../includes/MemCachedClient.inc.php" );*/ require_once( "liveCmdLine.inc" ); do { - $line = readconsole( "> " ). ";" ; - eval( $line ); + $line = readconsole( "> " ); + eval( $line . ";" ); if ( function_exists( "readline_add_history" ) ) { readline_add_history( $line ); } diff --git a/stylesheets/common.css b/stylesheets/common.css index a7f5e02d3756..b32503f42fb4 100644 --- a/stylesheets/common.css +++ b/stylesheets/common.css @@ -18,7 +18,6 @@ div.floatleft p { font-style: italic; } /* table standards */ table.rimage { float:right; - width:1pt; margin-left:1em; margin-bottom:1em; text-align:center; @@ -30,6 +29,7 @@ div.thumb { margin: 10px; text-align: center; width: auto; + overflow: hidden; } div.thumb div { border: 1px solid #8888aa; @@ -78,27 +78,26 @@ div.tleft { border:1px dashed #aaaaaa; } -table.diff { - background:white; -} -td.diff-otitle { - background:#cccccc; -} -td.diff-ntitle { - background:#cccccc; +table.diff { background:white; } +td.diff-otitle { background:#cccccc; } +td.diff-ntitle { background:#cccccc; } +td.diff-addedline { + background:#ccffcc; + font-size: smaller; } -td.diff-addedline { - background:#ccffcc; -} -td.diff-deletedline { - background:#ffffaa; +td.diff-deletedline { + background:#ffffaa; + font-size: smaller; } td.diff-context { - background:#eeeeee; + background:#eeeeee; + font-size: smaller; } +span.diffchange { color: red; } img { border: none; } img.tex { vertical-align: middle; } +span.texhtml { font-family: serif; } #toc { @@ -183,3 +182,10 @@ div.townBox dl dd { margin: 0.1em 0 0 1.1em; background-color: #f3f3f3; } +/* use this instead of #toc for page content */ +.toccolours { + border:1px solid #aaaaaa; + background-color:#f9f9f9; + padding:5px; + font-size: 95%; +} diff --git a/stylesheets/commonPrint.css b/stylesheets/commonPrint.css index 517db1f98724..a348b73f20ac 100644 --- a/stylesheets/commonPrint.css +++ b/stylesheets/commonPrint.css @@ -48,6 +48,7 @@ div.thumb { margin-bottom: 0.5em; border-style: solid; border-color: White; width: auto; + overflow: hidden; } div.thumb div { border:1px solid #cccccc; @@ -188,6 +189,9 @@ a, a.external, a.new, a.stub { text-decoration: inherit ! important; } +img { border: none; } +img.tex { vertical-align: middle; } +span.texhtml { font-family: serif; } /* Show some stuff */ .urlexpansion { diff --git a/stylesheets/monobook/main.css b/stylesheets/monobook/main.css index c8a21fd53071..a4393f4f3a16 100644 --- a/stylesheets/monobook/main.css +++ b/stylesheets/monobook/main.css @@ -61,21 +61,24 @@ table { } a { text-decoration: none; - color: #004ba6; + color: #002bb8; background: none; } a:visited { color: #5a3696; } a:active { color: Orange; } a:hover { text-decoration: underline; } a.stub { color: #772233; } -a.new { color:#ba0000; } +a.new, +#p-personal a.new { color:#ba0000; } +a.new:visited, +#p-personal a.new:visited { color:#a55858; } img { border: none; vertical-align: middle; } p { - margin: 0.4em 0em 0.7em 0em; + margin: 0.4em 0em 0.5em 0em; line-height: 1.5em; } @@ -120,13 +123,21 @@ ol { line-height: 1.5em; margin: 0.3em 0 0 3.2em; padding:0; + list-style-image: none; } li { margin-bottom: 0.1em; } -dt { font-weight: bold; } +dt { + font-weight: bold; + margin-bottom: 0.1em; +} +dl{ + margin-top: 0.1em; + margin-bottom: 0.5em; +} dd { line-height: 1.5em; - margin-bottom: 0.8em; margin-left: 2em; + margin-bottom: 0.1em; } fieldset { @@ -246,6 +257,7 @@ span.subpages { display: block; } background-color:#f9f9f9; padding:5px; margin-top: 1em; + clear: both; } /* currently unused, intended to be used by a metadata box in the bottom-right corner of the content area */ @@ -317,6 +329,7 @@ div.thumb { margin-bottom: 0.5em; border-style: solid; border-color: White; width: auto; + overflow: hidden; } div.thumb div { border:1px solid #cccccc; @@ -331,6 +344,7 @@ div.thumb div a img { div.thumb div div.thumbcaption { border: none; text-align: left; + line-height: 1.4; padding: 0.3em 0 0.1em 0; } div.magnify { @@ -343,35 +357,45 @@ div.magnify a, div.magnify img { border: none !important; background: none !important; } +div.tright { + float: right; + border-width: 0.5em 0 0.8em 1.4em; +} +div.tleft { + float: left; + margin-right:0.5em; + border: 0.5em 1.4em 0.8em 0; +} .urlexpansion, .hiddenStructure { display: none; } img.tex { vertical-align: middle; } +span.texhtml { font-family: serif; } /* ** classes for special content elements like town boxes ** intended to be referenced directly from the wiki src */ + +/* +** User styles +*/ + /* table standards */ table.rimage { float:right; - width:1pt; position:relative; margin-left:1em; margin-bottom:1em; text-align:center; } -div.tright { - float: right; - border-width: 0.5em 0 0.8em 1.4em; -} -div.tleft { - float: left; - margin-right:0.5em; - border: 0.5em 1.4em 0.8em 0; +.toccolours { + border:1px solid #aaaaaa; + background-color:#f9f9f9; + padding:5px; + font-size: 95%; } - div.townBox { position:relative; float:right; @@ -427,9 +451,19 @@ div.townBox dl dd { table.diff { background:white; } td.diff-otitle { background:#ffffff; } td.diff-ntitle { background:#ffffff; } -td.diff-addedline { background:#ccffcc; } -td.diff-deletedline { background:#ffffaa; } -td.diff-context { background:#eeeeee; } +td.diff-addedline { + background:#ccffcc; + font-size: smaller; +} +td.diff-deletedline { + background:#ffffaa; + font-size: smaller; +} +td.diff-context { + background:#eeeeee; + font-size: smaller; +} +span.diffchange { color: red; } /* ** keep the whitespace in front of the ^=, hides rule from konqueror @@ -465,7 +499,8 @@ td.diff-context { background:#eeeeee; } padding-right: 18px; } /* disable interwiki styling */ -#bodyContent a.extiw { +#bodyContent a.extiw, +#bodyContent a.extiw:active { color: #3366bb; background: none; padding: 0; @@ -686,7 +721,6 @@ li#pt-login { padding-left: 20px; text-transform: none; } -#p-personal a.new { color:#ba0000; } /* ** the page-related actions- page/talk, edit etc @@ -726,7 +760,7 @@ li#pt-login { } #p-cactions li a { background-color: White; - color: #0014a6; + color: #002bb8; border: none; padding: 0 0.8em 0.3em 0.8em; text-decoration: none; @@ -750,7 +784,7 @@ li#pt-login { } /* offsets to distinguish the tab groups */ li#ca-talk { margin-right: 1.6em; } -li#ca-watch { margin-left: 1.6em; } +li#ca-watch, li#ca-watch { margin-left: 1.6em; } /* diff --git a/stylesheets/monobook/rtl.css b/stylesheets/monobook/rtl.css index b382056952fc..aafcd59ea89c 100644 --- a/stylesheets/monobook/rtl.css +++ b/stylesheets/monobook/rtl.css @@ -102,7 +102,7 @@ li#ca-talk { margin-right: auto; margin-left: 1.6em; } -li#ca-watch { +li#ca-watch,li#ca-unwatch { margin-right: 1.6em !important; } diff --git a/stylesheets/wikibits.js b/stylesheets/wikibits.js index b5768e1fe0c6..d3ed1474b9fa 100644 --- a/stylesheets/wikibits.js +++ b/stylesheets/wikibits.js @@ -1,5 +1,4 @@ // Wikipedia JavaScript support functions - // if this is true, the toolbar will no longer overwrite the infobox when you move the mouse over individual items var noOverwrite=false; var alertText; @@ -21,21 +20,19 @@ function onloadhook () { histrowinit(); unhidetzbutton(); tabbedprefs(); + akeytt(); } if (window.addEventListener) window.addEventListener("load",onloadhook,false); else if (window.attachEvent) window.attachEvent("onload",onloadhook); // document.write special stylesheet links -function addcss ( stylepath ) { - if (is_opera_preseven) { - document.write(''); - } else if (is_opera_seven) { - document.write(''); - } else if (is_khtml) { - document.write(''); - } - return; +if (is_opera_preseven) { + document.write(''); +} else if (is_opera_seven) { + document.write(''); +} else if (is_khtml) { + document.write(''); } // Un-trap us from framesets @@ -361,3 +358,33 @@ function insertTags(tagOpen, tagClose, sampleText) { // reposition cursor if possible if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate(); } + +function akeytt() { + if(!ta) return; + pref = 'alt-'; + if(is_safari || navigator.userAgent.toLowerCase().indexOf( 'mac' ) + 1 ) pref = 'control-'; + if(is_opera) pref = 'shift-esc-'; + for(id in ta) { + n = document.getElementById(id); + if(n){ + a = n.childNodes[0]; + if(a){ + if(ta[id][0].length > 0) { + a.accessKey = ta[id][0]; + ak = ' ['+pref+ta[id][0]+']'; + } else { + ak = ''; + } + a.title = ta[id][1]+ak; + } else { + if(ta[id][0].length > 0) { + n.accessKey = ta[id][0]; + ak = ' ['+pref+ta[id][0]+']'; + } else { + ak = ''; + } + n.title = ta[id][1]+ak; + } + } + } +} diff --git a/stylesheets/wikiprintable.css b/stylesheets/wikiprintable.css index 686850ade5f8..22e71935809b 100644 --- a/stylesheets/wikiprintable.css +++ b/stylesheets/wikiprintable.css @@ -21,7 +21,7 @@ a, a.external, a.new, a.stub { } /* Hide ugly UI stuff */ -#quickbar, #topbar, #footer, +#quickbar, #topbar, #footer, #siteNotice, .editsection, .toctoggle { display: none; } diff --git a/templates/xhtml_slim.pt b/templates/xhtml_slim.pt index b1ad90f83685..7da0f397ef68 100644 --- a/templates/xhtml_slim.pt +++ b/templates/xhtml_slim.pt @@ -1,24 +1,20 @@ - ${headlinks} Exciting xhtml slimfast - - + + - - -
    @@ -30,47 +26,36 @@
    -
    - - ${bodytext} -
    - -
    -
    Views
    -
    Personal Tools
    - @@ -78,26 +63,19 @@
    Navigation
    @@ -109,47 +87,38 @@   
    - - -
    Language
    @@ -162,7 +131,6 @@
    -