summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobody <nobody@localhost>2004-08-06 22:47:40 +0000
committernobody <nobody@localhost>2004-08-06 22:47:40 +0000
commit972327b5e561672ce88a54544ef77aaa3936c10c (patch)
tree978ec5cf63ec6b6ba4650bbd7344591485d8c98d
parent59b9297a7ef3a907905f4a5dc5915bfca2264fa9 (diff)
parent0d96bd74514f0f0073bcfd97f64bcee7819d0724 (diff)
This commit was manufactured by cvs2svn to create tag1.3.0beta6
'REL1_3_0beta6'.
-rw-r--r--.cvsignore1
-rw-r--r--INSTALL230
-rw-r--r--PHPTAL-NP-0.7.0/libs/PHPTAL.php20
-rw-r--r--PHPTAL-NP-0.7.0/libs/PHPTAL/Generator.php2
-rw-r--r--PHPTAL-NP-0.7.0/libs/PHPTAL/OutputControl.php6
-rw-r--r--README13
-rw-r--r--RELEASE-NOTES28
-rw-r--r--config/index.php182
-rw-r--r--extensions/SiteMatrix.php96
-rw-r--r--img_auth.php173
-rw-r--r--includes/Article.php1138
-rw-r--r--includes/Block.php49
-rw-r--r--includes/BlockCache.php12
-rw-r--r--includes/CacheManager.php30
-rw-r--r--includes/Credits.php172
-rw-r--r--includes/Database.php115
-rw-r--r--includes/DatabaseFunctions.php267
-rw-r--r--includes/DatabasePostgreSQL.php522
-rwxr-xr-xincludes/DateFormatter.php52
-rw-r--r--includes/DefaultSettings.php182
-rw-r--r--includes/DifferenceEngine.php46
-rw-r--r--includes/EditPage.php79
-rw-r--r--includes/Feed.php28
-rw-r--r--includes/FulltextStoplist.php1
-rw-r--r--includes/GlobalFunctions.php363
-rw-r--r--includes/HistoryBlob.php64
-rw-r--r--includes/Image.php21
-rw-r--r--includes/ImagePage.php10
-rw-r--r--includes/LinkCache.php51
-rw-r--r--includes/LinksUpdate.php23
-rw-r--r--includes/LoadBalancer.php87
-rw-r--r--includes/MagicWord.php3
-rw-r--r--includes/Math.php4
-rwxr-xr-xincludes/MessageCache.php47
-rw-r--r--includes/Metadata.php4
-rw-r--r--includes/ObjectCache.php56
-rw-r--r--includes/OutputPage.php164
-rw-r--r--includes/PageHistory.php32
-rw-r--r--includes/Parser.php1688
-rw-r--r--includes/ParserCache.php102
-rwxr-xr-xincludes/Profiling.php11
-rw-r--r--includes/QueryPage.php4
-rw-r--r--includes/RawPage.php57
-rw-r--r--includes/RecentChange.php80
-rw-r--r--includes/SearchEngine.php57
-rw-r--r--includes/SearchUpdate.php8
-rw-r--r--includes/Setup.php164
-rw-r--r--includes/SiteConfiguration.php65
-rw-r--r--includes/SiteStatsUpdate.php6
-rw-r--r--includes/Skin.php1319
-rw-r--r--includes/SkinCologneBlue.php16
-rw-r--r--includes/SkinNostalgia.php11
-rw-r--r--includes/SkinPHPTal.php309
-rw-r--r--includes/SkinStandard.php4
-rw-r--r--includes/SpecialAllmessages.php14
-rw-r--r--includes/SpecialAllpages.php73
-rw-r--r--includes/SpecialAncientpages.php4
-rw-r--r--includes/SpecialAsksql.php6
-rw-r--r--includes/SpecialCategories.php75
-rw-r--r--includes/SpecialContributions.php42
-rw-r--r--includes/SpecialDeadendpages.php30
-rw-r--r--includes/SpecialListadmins.php37
-rw-r--r--includes/SpecialListusers.php62
-rw-r--r--includes/SpecialLonelypages.php40
-rw-r--r--includes/SpecialMaintenance.php35
-rw-r--r--includes/SpecialMakesysop.php4
-rw-r--r--includes/SpecialMovepage.php4
-rw-r--r--includes/SpecialPage.php38
-rw-r--r--includes/SpecialPreferences.php37
-rw-r--r--includes/SpecialRandompage.php13
-rw-r--r--includes/SpecialRecentchanges.php4
-rw-r--r--includes/SpecialShortpages.php7
-rw-r--r--includes/SpecialStatistics.php11
-rwxr-xr-xincludes/SpecialUncategorizedpages.php37
-rw-r--r--includes/SpecialUndelete.php22
-rw-r--r--includes/SpecialUnusedimages.php2
-rw-r--r--includes/SpecialUpload.php50
-rw-r--r--includes/SpecialUserlogin.php69
-rw-r--r--includes/SpecialWatchlist.php39
-rw-r--r--includes/SpecialWhatlinkshere.php2
-rw-r--r--includes/SquidUpdate.php60
-rw-r--r--includes/Title.php280
-rw-r--r--includes/Tokenizer.php141
-rw-r--r--includes/User.php290
-rw-r--r--includes/UserMailer.php1
-rw-r--r--includes/UserTalkUpdate.php1
-rw-r--r--includes/ViewCountUpdate.php9
-rw-r--r--includes/WatchedItem.php18
-rw-r--r--includes/memcached-client.php10
-rw-r--r--index.php27
-rw-r--r--install-utils.inc16
-rw-r--r--install.php272
-rw-r--r--irc/rc2irc.php2
-rw-r--r--irc/rcdumper.php75
-rw-r--r--languages/Language.php2083
-rw-r--r--languages/LanguageAf.php6
-rw-r--r--languages/LanguageAr.php51
-rw-r--r--languages/LanguageBg.php1874
-rw-r--r--languages/LanguageBn.php30
-rw-r--r--languages/LanguageCa.php39
-rw-r--r--languages/LanguageCs.php12
-rw-r--r--languages/LanguageCy.php137
-rw-r--r--languages/LanguageDa.php864
-rw-r--r--languages/LanguageDe.php730
-rw-r--r--languages/LanguageEl.php37
-rw-r--r--languages/LanguageEo.php9
-rw-r--r--languages/LanguageEs.php935
-rw-r--r--languages/LanguageEt.php6
-rw-r--r--languages/LanguageFa.php6
-rw-r--r--languages/LanguageFi.php4
-rw-r--r--languages/LanguageFr.php33
-rw-r--r--languages/LanguageFy.php6
-rwxr-xr-xlanguages/LanguageGa.php6
-rw-r--r--languages/LanguageHe.php6
-rw-r--r--languages/LanguageHi.php23
-rw-r--r--languages/LanguageHu.php45
-rw-r--r--languages/LanguageIa.php6
-rw-r--r--languages/LanguageId.php2
-rw-r--r--languages/LanguageIs.php1392
-rw-r--r--languages/LanguageIt.php40
-rw-r--r--languages/LanguageJa.php274
-rw-r--r--languages/LanguageKo.php125
-rw-r--r--languages/LanguageLa.php5
-rw-r--r--languages/LanguageLatin1.php256
-rw-r--r--languages/LanguageMs.php298
-rw-r--r--languages/LanguageNl.php442
-rw-r--r--languages/LanguageNo.php47
-rw-r--r--languages/LanguageOc.php6
-rw-r--r--languages/LanguagePl.php100
-rw-r--r--languages/LanguagePt.php181
-rw-r--r--languages/LanguageRo.php40
-rw-r--r--languages/LanguageRu.php6
-rw-r--r--languages/LanguageSc.php3
-rw-r--r--languages/LanguageSk.php18
-rw-r--r--languages/LanguageSl.php6
-rw-r--r--languages/LanguageSq.php6
-rw-r--r--languages/LanguageSr.php5
-rw-r--r--languages/LanguageSv.php1320
-rw-r--r--languages/LanguageTa.php6
-rw-r--r--languages/LanguageTh.php38
-rw-r--r--languages/LanguageTlh.php56
-rwxr-xr-xlanguages/LanguageUk.php6
-rw-r--r--languages/LanguageUr.php2
-rw-r--r--languages/LanguageUtf8.php57
-rw-r--r--languages/LanguageWa.php1322
-rw-r--r--languages/LanguageYi.php2
-rw-r--r--languages/LanguageZh.php40
-rw-r--r--languages/Names.php206
-rw-r--r--languages/wikipedia/de.lang189
-rw-r--r--languages/wikipedia/en.lang372
-rw-r--r--languages/wikipedia/fr.lang320
-rw-r--r--languages/wikipedia/ja.lang311
-rw-r--r--languages/wikipedia/nl.lang319
-rw-r--r--languages/wikipedia/pl.lang331
-rw-r--r--maintenance/DiffLanguage.php20
-rwxr-xr-xmaintenance/InitialiseMessages.inc76
-rw-r--r--maintenance/archives/importTests.php2
-rw-r--r--maintenance/archives/moveCustomMessages.inc149
-rw-r--r--maintenance/archives/moveCustomMessages.php128
-rw-r--r--maintenance/archives/patch-linkscc-1.3.sql6
-rw-r--r--maintenance/archives/patch-profiling.sql10
-rw-r--r--maintenance/archives/patch-rc_id.sql7
-rw-r--r--maintenance/archives/patch-rc_ip.sql7
-rw-r--r--maintenance/attribute.php31
-rwxr-xr-xmaintenance/checktrans2.php1
-rw-r--r--maintenance/commandLine.inc127
-rw-r--r--maintenance/compressOld.inc2
-rw-r--r--maintenance/compressOld.php26
-rw-r--r--maintenance/convertLinks.inc202
-rw-r--r--maintenance/convertLinks.php192
-rw-r--r--maintenance/dumpMessages.php11
-rwxr-xr-xmaintenance/eval.php16
-rw-r--r--maintenance/indexes.sql3
-rw-r--r--maintenance/liveCmdLine.inc53
-rwxr-xr-xmaintenance/mcc.php31
-rw-r--r--maintenance/pcache_stats.php14
-rw-r--r--maintenance/postgresql/pg_tables.sql587
-rw-r--r--maintenance/rebuildInterwiki.inc224
-rw-r--r--maintenance/rebuildInterwiki.php25
-rwxr-xr-xmaintenance/rebuildMessages.php53
-rw-r--r--maintenance/rebuildall.php32
-rw-r--r--maintenance/rebuildlinks.php20
-rw-r--r--maintenance/rebuildrecentchanges.php17
-rw-r--r--maintenance/rebuildtextindex.inc45
-rw-r--r--maintenance/rebuildtextindex.php29
-rw-r--r--maintenance/refreshLinks.inc46
-rw-r--r--maintenance/refreshLinks.php41
-rw-r--r--maintenance/remove-brokenlinks.php18
-rw-r--r--maintenance/tables.sql10
-rw-r--r--maintenance/trivialCmdLine.php11
-rw-r--r--maintenance/update2.php43
-rw-r--r--maintenance/updateSearchIndex.inc92
-rw-r--r--maintenance/updateSearchIndex.php52
-rw-r--r--maintenance/updaters.inc21
-rw-r--r--maintenance/wikipedia-interwiki.sql1
-rw-r--r--maintenance/wiktionary-interwiki.sql1
-rw-r--r--math/render.ml18
-rw-r--r--stylesheets/common.css88
-rw-r--r--stylesheets/commonPrint.css53
-rw-r--r--stylesheets/monobook/IE55Fixes.css27
-rw-r--r--stylesheets/monobook/IE60Fixes.css22
-rw-r--r--stylesheets/monobook/main.css221
-rw-r--r--stylesheets/monobook/null0
-rw-r--r--stylesheets/monobook/rtl.css39
-rw-r--r--stylesheets/myskin/main.css1
-rw-r--r--stylesheets/wikibits.js49
-rw-r--r--stylesheets/wikiprintable.css2
-rw-r--r--stylesheets/wikistandard.css10
-rw-r--r--templates/xhtml_slim.pt82
-rw-r--r--texvc.phtml154
-rw-r--r--update.php141
211 files changed, 18852 insertions, 9867 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/INSTALL b/INSTALL
index c3c93fe06747..c002bb45aef5 100644
--- a/INSTALL
+++ b/INSTALL
@@ -6,6 +6,9 @@ Starting with MediaWiki 1.2.0, it's possible to install
and configure the wiki "in-place", as long as you have
the necessary prerequesites available.
+In 1.3.0 the old command-line installer has been removed.
+A new command-line installer/upgrader may come soon...
+
Required software:
* Web server with PHP 4.1.2 or higher (4.3.x is preferred)
* A MySQL server. 4.0.x is preferred, but 3.2.x should
@@ -22,16 +25,6 @@ Don't forget to check the RELEASE-NOTES file...
********************** WARNING **************************
-The web-based install is still somewhat experimental. It
-doesn't yet support updating the format of an existing
-MediaWiki database, the maintenance scripts aren't available,
-and there may be all kinds of horrible bugs or security
-problems that haven't been worked out yet.
-
-HOWEVER it is much easier, safer, and more reliable than
-the old install.php, and does not require root access
-if you already have a database and user access to it.
-
REMEMBER: ALWAYS BACK UP YOUR DATABASE BEFORE ATTEMPTING
TO INSTALL OR UPGRADE!!!
@@ -68,222 +61,31 @@ it will refuse to config again if the wiki is set up).
----
-"Classic" install instructions:
-----
-
-THE INSTRUCTIONS BELOW ARE OLD AND MAY BE INACCURATE.
-THIS INSTALL METHOD IS NOT RECOMMENDED, IT MAY RUN
-OVER YOUR DOG.
-
-If you use the command-line install, you MUST NOT make the
-source directory web-accessible, as it will expose maintenance
-scripts to the public internet. You MUST NOT install to the
-same directory as your are installing from, this WILL
-overwrite and destroy files.
-
-Because install.php and update.php are unsafe, they have
-been disabled as of 1.2.4. If you wish to use them, remove
-the "die()" call at the top of the file.
-
---
-
-The Wikipedia software was developed collaboratively by
-many people, so it's something of a hodgepodge. The
-main wiki software itself is written in PHP, and requires
-the Apache web server and MySQL database. The optional
-math rendering functions are written in Objective CAML,
-which is required to compile them.
-
-Recommended versions are: Apache 1.3.27 or later; MySQL
-4.0.13 or later; PHP 4.3.2 or later. The installation at
-wikipedia.org also uses PHP Accelerator software, but
-that's entirely optional and doesn't affect anything else.
-
-The math rendering functions are more complex, and will
-probably only work on Linux. Objective CAML (probably
-3.06 or later) is required to compile texvc, but produces
-static binaries. TeTeX and ImageMagick are required at
-runtime, and ImageMagick requires GhostScript. These are
-present in most Linux distributions.
-
-----
-Scripts install.php and update.php
+Upgrading
----
-Before installing the software, you must copy the file
-"LocalSettings.sample" to "LocalSettings.php", and
-"AdminSettings.sample" to "AdminSettings.php", and
-customize both of the php files to your local setup
-(things like installation path, passwords, etc.) The
-script install.php can then be run to install the
-software. It must be run from the command line with
-PHP: that is, type "php install.php" (you may need to
-specify the path the php executable). You will probably
-need to run as root.
+Install as with a fresh copy of MediaWiki, but give it the
+database information for the existing database. It will try
+to upgrade the database schema as necessary automatically.
- Hint: If you are using Debian, the PHP interpreter is
- not part of the "php4" package; you need to install
- php4-cgi separately (the interpreter will be called
- php4).
+Upgrades are not always foolproof; be sure to back everything
+up! You will have to make any LocalSettings.php customizations
+on the newly generated LocalSettings.php.
-This script will copy all the necessary software over to
-the directories you have specified in the settings files.
-It will then warn you that it is about to create the
-database and give you the chance to exit. If you are
-installing the software to an existing database, you can
-answer "no" here and it will be left alone. The software
-installation will be otherwise complete. If you do choose
-to create a new database, you will need te root password
-to your MySQL installation.
+Be sure to backup all your files before you start.
-If you are merely updating an existing installation, run
-"php update.php" instead of install. This will copy all
-the software, and also run any database updates that may
-be necessary. These should give appropriate warnings if
-there are any dangerous ones.
----
-Building from scratch
-----
-
-Here are some more notes on building a system from scratch
-the way it was done for the Wikipedia server:
-
-Downloads:
-
- gcc-2.95.3.tar.gz (only if you now have gcc 2.96)
- mysql-4.0.13.tar.gz (or 3.23.57 should work)
- libiconv-1.8.tar.gz
- apache_1.3.27.tar.gz
- php-4.3.2.tar.gz
- apc-cvs.tar.gz
-
-And for math support:
- ocaml-3.06.tar.gz (3.04 doesn't work)
- (TeTeX, ImageMagick, and GhostScript come with most Linux distros)
-
-1. MySQL strongly recommends using gcc 2.95 to compile MySQL.
- RedHat Linux 7.x comes with 2.96 by default, so you'll have to install
- 2.95 first. Use "../gcc*/configure --enable-shared" If your Linux
- installation doesn't use gcc 2.96, or has a more recent gcc 3.x,
- you can skip this step.
-
-2. Install MySQL source; add "mysql" user and group. Make sure the
- directory into which you installed gcc 2.95 appears before the
- directory of gcc 2.96 in your path. Configure with:
-
- FLAGS="-O3 -mcpu=i686" CXX=gcc CXXFLAGS="-O3 -mcpu=i686 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static --disable-shared --with-extra-charset=complex
-
- Edit the file myisam/ftdefs.h, changing the define for minimum word
- length for fulltext indexing: #define MIN_WORD_LEN 2. Update
- $wgDBminWordLen in LocalSettings.php to reflect this. Build and
- install according to instructions. Make root user as recommended;
- the root password will be required for the wiki installation script.
-
-3. Unpack the phase3.zip source distribution, or check out the "phase3"
- module from CVS. Copy LocalSettings.sample to LocalSettings.php,
- AdminSettings.sample to AdminSettings.php, and customize them for
- things like local paths and passwords. If desired, update
- FulltextStoplist.php from the MySQL sources if you have customized
- MySQL's stop list.
-
- If you are running anything other than Wikipedia itself you'll want
- to make a lot of changes to the LanguageXX.php files so it talks about
- _your_ site and _your_ license. :)
-
-4. Optionally, install libiconv (http://www.gnu.org/software/libiconv/).
- This will be used by some language packages for converting
- native-charset URLs to and from UTF-8. If you're running an
- English-only wiki, this probably won't be necessary. (Most Linux
- distributions should come with libiconv anyway, but check for
- a separate 'dev' package if on RedHat.)
-5. Unpack Apache distribution and begin configuring, but don't finish
- build yet. Configure with something like:
-
- OPTIM='-O2 -mcpu=i686' ./configure --with-layout=Apache
-
-6. If you'll want to use Apache's mod_rewrite to make page-viewing URLs
- look like static links (as wikipedia.org does), install the included
- patch "apache-ampersand.diff" which is needed to support page titles
- with ampersands in them:
-
- patch -p0 < /path/to/maintenance/apache-ampersand.diff
-
-7. Unpack and configure PHP. Configure with something like:
-
- ./configure --enable-shmop --with-zlib --with-zlib-dir=/usr/lib --with-mysql=/usr/local/mysql --with-iconv --with-apache=/home/lee/src/apache_1.3.26 --with-readline --enable-sockets
-
-Or for Apache 2.0 module:
- ./configure --enable-shmop --with-zlib --with-zlib-dir=/usr/lib --with-mysql=/usr/local/mysql --with-iconv --with-apxs2filter=/usr/local/apache/bin/apxs --with-readline --enable-sockets
-
- (using your own local paths, of course). Build and install as
- instructed.
-
-8. Finish building Apache. Configure with something like:
-
- OPTIM='-O2 -mcpu=i686' ./configure --with-layout=Apache --enable-module=rewrite --enable-module=mmap-static --enable-module=headers --enable-module=expires --activate-module=src/modules/php4/libphp4.a
-
- Update httpd.conf as needed for your site. For example:
-
- <IfModule mod_php4.c>
- AddType application/x-httpd-php .php .php4
- AddType application/x-httpd-php-source .phps
- </IfModule>
- <IfModule mod_php4.c>
- php_admin_flag engine off
- </IfModule>
- <Directory "DIRECTORY_OF_WIKI_SCRIPTS">
- <IfModule mod_php4.c>
- php_admin_flag engine on
- </IfModule>
- </Directory>
- RewriteEngine On
- RewriteMap ampescape int:ampescape
- RewriteRule ^/wiki/(.*)$ /index.php?title=${ampescape:$1} [L]
-
- It is *seriously* recommended that you configure the webserver
- to disable running of PHP scripts except in the script directories
- (the "php_admin_flag engine off/on" directives above) to prevent
- the uploading and running of malicious scripts.
-
-9. Optionally, install APC or another PHP cache plug-in, following
- standard instructions for installing as a Zend extension.
-
-10. If using embedded TeX support, be sure TeX and ImageMagick are
- installed (they are common on most Linux distros and freely
- downloadable). Also get and install OCaml according to its
- instructions.
-
- You'll need to compile the texvc helper script; enter the math
- subdirectory of the source tree and run "make".
-
- If you want embedded TeX support, enable it by setting
-
- $wgUseTex = true;
-
- in LocalSettings.php
-
-11. You should now be able to run the install.php script. Use PHP in
- command-line mode, i.e., type "php install.php". Should be run as
- root, or as a user or group able to create files and directories
- in the installation tree.
-
-12. If you have Java installed and running, install the "ant" package
- from Apache (http://ant.apache.org/) and run ant in the testsuite
- directory to build the tests. Copy wikitest.prefs.sample to
- wikitest.prefs, and edit to reflect your local settings. Then
- "./run WikiSuite -o -b" will run the whole test suite and report.
-
-----
-
-Don't forget that this is pre-release software under development!
+Don't forget that this is free software under development!
Chances are good there's a crucial step that hasn't made it
into the documentation. You should probably sign up for the
-Wikipedia developers' mailing list; you can ask for help (please
+MediaWiki developers' mailing list; you can ask for help (please
provide enough information to work with, and preferably be aware
of what you're doing!) and keep track of major changes to the
software, including performance improvements and security patches.
-http://mail.wikipedia.org/mailman/listinfo/wikitech-l
+http://mail.wikipedia.org/mailman/listinfo/mediawiki-l (site admin support)
+
+http://mail.wikipedia.org/mailman/listinfo/wikitech-l (development)
diff --git a/PHPTAL-NP-0.7.0/libs/PHPTAL.php b/PHPTAL-NP-0.7.0/libs/PHPTAL.php
index ec7b524c349e..e3c0cd3fc9a2 100644
--- a/PHPTAL-NP-0.7.0/libs/PHPTAL.php
+++ b/PHPTAL-NP-0.7.0/libs/PHPTAL.php
@@ -67,10 +67,26 @@ define('PHPTAL_VERSION', '0.7.0');
define('PHPTAL_MARK', str_replace('.', '_', PHPTAL_VERSION) . '_');
if (strtoupper(substr(PHP_OS, 0, 3)) == "WIN") {
- define('PHPTAL_DEFAULT_CACHE_DIR', getenv("TMP") . "\\");
+ $default_temp = "C:\\Windows\\Temp";
} else {
- define('PHPTAL_DEFAULT_CACHE_DIR', '/tmp/');
+ $default_temp = "/tmp";
}
+if( getenv( 'TMP' ) == "" ) {
+ if( is_writable( $default_temp ) ) {
+ define('PHPTAL_DEFAULT_CACHE_DIR', $default_temp.DIRECTORY_SEPARATOR);
+ } else {
+ global $wgUploadDirectory;
+ define('PHPTAL_DEFAULT_CACHE_DIR', $wgUploadDirectory.DIRECTORY_SEPARATOR);
+ }
+} else {
+ define('PHPTAL_DEFAULT_CACHE_DIR', getenv("TMP") . DIRECTORY_SEPARATOR);
+}
+
+if( !is_writable (PHPTAL_DEFAULT_CACHE_DIR) )
+ die( htmlspecialchars(
+ 'Can\'t find a writable temp directory for the XHTML template. ' .
+ 'Check that the TMP environment variable points to a writable directory, ' .
+ 'or that the default temp dir (' . $default_temp . ') exists and is writable.' ) );
/**
* This define is used to select the templates output format.
diff --git a/PHPTAL-NP-0.7.0/libs/PHPTAL/Generator.php b/PHPTAL-NP-0.7.0/libs/PHPTAL/Generator.php
index 61c56edc77ff..147b0a02d19e 100644
--- a/PHPTAL-NP-0.7.0/libs/PHPTAL/Generator.php
+++ b/PHPTAL-NP-0.7.0/libs/PHPTAL/Generator.php
@@ -82,7 +82,7 @@ class PHPTAL_Generator
}
if ($this->_gettext_required) {
$this->_code = preg_replace('/^<\?php/sm',
- '<?php require_once "' . PT_IP . '/GetText.php";',
+ '<?php require_once "' . addslashes( PT_IP ) . '/GetText.php";',
$this->_code,
1);
}
diff --git a/PHPTAL-NP-0.7.0/libs/PHPTAL/OutputControl.php b/PHPTAL-NP-0.7.0/libs/PHPTAL/OutputControl.php
index ce3c3403d629..cb118f92e155 100644
--- a/PHPTAL-NP-0.7.0/libs/PHPTAL/OutputControl.php
+++ b/PHPTAL-NP-0.7.0/libs/PHPTAL/OutputControl.php
@@ -65,7 +65,11 @@ 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.
+ // **** removed encoding parameter, this messed up titles in older versions of php
+ // **** we deal with encoding in Language.php
+ $this->_buffer .= htmlspecialchars($str, $this->_quoteStyle);
}
}
diff --git a/README b/README
index 1cade3bd40ad..4a939da0b0f7 100644
--- a/README
+++ b/README
@@ -26,11 +26,12 @@ The MediaWiki software was written by:
* Tomasz Wegrzanowski
* Erik Moeller
* Tim Starling
+* Gabriel Wicke
* Several others
These developers hold the copyright to this work, and it is
-licensed the terms of the GNU General Public License, version
-2 (see http://www.fsf.org/licenses/gpl.html). Derivative
+licensed under the terms of the GNU General Public License,
+version 2 (see http://www.fsf.org/licenses/gpl.html). Derivative
works and later versions of the code will also be considered
free software licensed under the same terms.
@@ -39,10 +40,10 @@ legal rights to the software, although copyright may be
assigned to it at a later date. Wikimedia has not funded
any of the development work.
-Sections of code written exclusively by Lee Crocker are also
-released into the public domain, wich does not impair the
-obligations of users under the GPL for use of the whole code
-or other sections thereof.
+Sections of code written exclusively by Lee Crocker or Erik
+Moeller are also released into the public domain, which does
+not impair the obligations of users under the GPL for use
+of the whole code or other sections thereof.
Many thanks to the Wikipedia regulars for testing and
suggestions.
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index 4eafc10c72d7..8609a8aa6d00 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -1,6 +1,12 @@
= MediaWiki release notes =
-== Version 1.3.0pre-alpha ==
+== Version 1.3.0beta6, 2004-08-06 ==
+
+1.3.0 final release should come up very soon; this final beta includes
+various bug fixes and a security fix affecting some PHP configurations
+(when register_globals and are allow_url_fopen both on -- it's recommended
+that you turn both *off* for security).
+
Look & layout:
* New default layout 'MonoBook'
@@ -15,6 +21,7 @@ Wiki features:
* Templates have been expanded with parameters, and separated from
the MediaWiki: localization scheme.
* Categories more or less work
+* added a special page for listing users with sysop rights.
Editing:
* Automatic merging of edit conflicts that don't directly interfere
@@ -22,7 +29,7 @@ Editing:
Metadata and output:
* Linked Creative Commons copyright metadata (optional)
-* RSS 2.0 feeds for Recent Changes, New Pages
+* RSS 2.0 & Atom 0.3 feeds for Recent Changes, New Pages
Optional modules:
* WikiHiero hieroglyphic module can be added (separate download)
@@ -48,6 +55,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 ===
@@ -57,6 +66,21 @@ set $wgMimeType = "application/xhtml+xml"; to test for remaining problem
cases, but this is not recommended on live sites. (This must be set for
MathML to display properly in Mozilla.)
+The new 'MonoBook' skin is not compatible with PHP 5 due to bugs in the
+underlying PHPTAL library. It will be automatically disabled when running
+on PHP5; the older look and feel will be used instead.
+
+
+== 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
diff --git a/config/index.php b/config/index.php
index 16d17a2f716f..15d62bef5e1a 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 );
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
@@ -78,7 +80,7 @@ header( "Content-type: text/html; charset=utf-8" );
<b><a href="http://www.mediawiki.org/">MediaWiki</a></b> is
Copyright (C) 2001-2004 by Magnus Manske, Brion Vibber, Lee Daniel Crocker,
- Tim Starling, Erik M&ouml;ller, and others.</p>
+ Tim Starling, Erik M&ouml;ller, Gabriel Wicke and others.</p>
<ul>
<li><a href="../README">Readme</a></li>
@@ -108,7 +110,9 @@ header( "Content-type: text/html; charset=utf-8" );
$IP = ".."; # Just to suppress notices, not for anything useful
define( "MEDIAWIKI", true );
define( "MEDIAWIKI_INSTALL", true );
-require( "../includes/DefaultSettings.php" );
+require_once( "../includes/DefaultSettings.php" );
+require_once( "../includes/MagicWord.php" );
+require_once( "../includes/Namespace.php" );
?>
<h1>MediaWiki <?php print $wgVersion ?> installation</h1>
@@ -151,16 +155,19 @@ if( !is_writable( "." ) ) {
}
-require( "../install-utils.inc" );
-require( "../maintenance/updaters.inc" );
+require_once( "../install-utils.inc" );
+require_once( "../maintenance/updaters.inc" );
+require_once( "../maintenance/convertLinks.inc" );
+require_once( "../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 ); }
@@ -180,7 +187,27 @@ $endl = "
$conf = new ConfigData;
install_version_checks();
-print "<li>PHP " . phpversion() . " ok</li>\n";
+
+print "<li>PHP " . phpversion() . ": ";
+if( version_compare( phpversion(), "5.0", "lt" ) ) {
+ print "ok";
+} else {
+ print " <b>the MonoBook skin will be disabled due to an incompatibility
+ between the PHPTAL template library and PHP 5</b>. The wiki should
+ function normally, but with the older look and feel.";
+}
+print "</li>\n";
+
+if( ini_get( "safe_mode" ) ) {
+ ?>
+ <li class='error'><b>Warning: PHP's
+ <a href='http://www.php.net/features.safe-mode'>safe mode</a> is active!</b>
+ You will likely have problems caused by this. You may need to make the
+ 'images' subdirectory writable or specify a TMP environment variable pointing to
+ a writable temporary directory owned by you, since safe mode breaks the system
+ temporary directory.</li>
+ <?php
+}
$sapi = php_sapi_name();
$conf->prettyURLs = true;
@@ -201,6 +228,35 @@ default:
}
print "</li>\n";
+$conf->xml = function_exists( "utf8_encode" );
+if( $conf->xml ) {
+ print "<li>Have XML / Latin1-UTF-8 conversion support.</li>\n";
+} else {
+ print "<li><b>XML / Latin1-UTF-8 conversion is missing! Wiki will probably not work.</b></li>\n";
+}
+
+$memlimit = ini_get( "memory_limit" );
+$conf->raiseMemory = false;
+if( empty( $memlimit ) ) {
+ print "<li>PHP is configured with no <tt>memory_limit</tt>.</li>\n";
+} else {
+ print "<li>PHP's <tt>memory_limit</tt> is " . htmlspecialchars( $memlimit ) . ". <b>If this is too low, installation may fail!</b> ";
+ $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 "</li>\n";
+}
+
$conf->zlib = function_exists( "gzencode" );
if( $conf->zlib ) {
print "<li>Have zlib support; enabling output compression.</li>\n";
@@ -251,7 +307,7 @@ print "<li>Script URI path: <tt>" . htmlspecialchars( $conf->ScriptPath ) . "</t
$conf->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" );
@@ -281,7 +337,7 @@ if( $conf->License == "gfdl" ) {
$conf->RightsUrl = "http://www.gnu.org/copyleft/fdl.html";
$conf->RightsText = "GNU Free Documentation License 1.2";
$conf->RightsCode = "gfdl";
- $conf->RightsIcon = "{$conf->ScriptPath}/stylesheets/images/gnu-fdl.png";
+ $conf->RightsIcon = '${wgStylePath}/images/gnu-fdl.png';
} elseif( $conf->License == "none" ) {
$conf->RightsUrl = $conf->RightsText = $conf->RightsCode = $conf->RightsIcon = "";
} else {
@@ -397,13 +453,23 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) {
do_interwiki_update(); flush();
do_index_update(); flush();
do_linkscc_update(); flush();
+ do_linkscc_1_3_update(); flush();
do_hitcounter_update(); flush();
do_recentchanges_update(); flush();
- echo "FIXME: need the link table change here\n";
+ convertLinks(); flush();
do_user_real_name_update(); flush();
do_querycache_update(); flush();
do_objectcache_update(); flush();
do_categorylinks_update(); flush();
+
+ if ( isTemplateInitialised() ) {
+ print "Template namespace already initialised\n";
+ } else {
+ moveCustomMessages( 1 ); flush();
+ moveCustomMessages( 2 ); flush();
+ moveCustomMessages( 3 ); flush();
+ }
+
initialiseMessages(); flush();
chdir( "config" );
@@ -420,6 +486,11 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) {
print "<li>Initializing data...";
$wgDatabase->query( "INSERT INTO site_stats (ss_row_id,ss_total_views," .
"ss_total_edits,ss_good_articles) VALUES (1,0,0,0)" );
+ # setting up the db user
+ if( $conf->Root ) {
+ print "<li>Granting user permissions...</li>\n";
+ dbsource( "../maintenance/users.sql", $wgDatabase );
+ }
if( $conf->SysopName ) {
$u = User::newFromName( $conf->getSysopName() );
@@ -467,11 +538,6 @@ if( $conf->posted && ( 0 == count( $errs ) ) ) {
print "<li><pre>";
initialiseMessages();
print "</pre></li>\n";
-
- if( $conf->Root ) {
- print "<li>Granting user permissions...</li>\n";
- dbsource( "../maintenance/users.sql", $wgDatabase );
- }
}
/* Write out the config file now that all is well */
@@ -672,13 +738,27 @@ function writeAdminSettings( $conf ) {
";
}
+function escapePhpString( $string ) {
+ return strtr( $string,
+ array(
+ "\n" => "\\n",
+ "\r" => "\\r",
+ "\t" => "\\t",
+ "\\" => "\\\\",
+ "\$" => "\\\$",
+ "\"" => "\\\""
+ ));
+}
+
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 ? "" : "# ");
@@ -686,10 +766,21 @@ function writeLocalSettings( $conf ) {
$pretty = ($conf->prettyURLs ? "" : "# ");
$ugly = ($conf->prettyURLs ? "# " : "");
$rights = ($conf->RightsUrl) ? "" : "# ";
+
+ $file = @fopen( "/dev/urandom", "r" );
+ if ( $file ) {
+ $proxyKey = bin2hex( fread( $file, 32 ) );
+ fclose( $file );
+ } else {
+ $proxyKey = "";
+ for ( $i=0; $i<8; $i++ ) {
+ $proxyKey .= dechex(mt_rand(0, 0x7fffffff));
+ }
+ print "Warning: \$wgProxyKey is insecure\n";
+ }
-# $proxyKey = Parser::getRandomString() . Parser::getRandomString();
# Add slashes to strings for double quoting
- $slconf = array_map( "addslashes", get_object_vars( $conf ) );
+ $slconf = array_map( "escapePhpString", get_object_vars( $conf ) );
$sep = (DIRECTORY_SEPARATOR == "\\") ? ";" : ":";
@@ -698,10 +789,13 @@ function writeLocalSettings( $conf ) {
# If you make manual changes, please keep track in case you need to
# recreate them later.
-\$IP = \"{$slconf[IP]}\";
-ini_set( \"include_path\", \"\$IP/includes$sep\$IP/languages$sep\" . ini_get(\"include_path\") );
+\$IP = \"{$slconf['IP']}\";
+ini_set( \"include_path\", \".$sep\$IP$sep\$IP/includes$sep\$IP/languages\" );
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\" );
@@ -711,9 +805,9 @@ if ( \$wgCommandLineMode ) {
{$zlib}if( !ini_get( 'zlib.output_compression' ) ) ob_start( 'ob_gzhandler' );
}
-\$wgSitename = \"{$slconf[Sitename]}\";
+\$wgSitename = \"{$slconf['Sitename']}\";
-\$wgScriptPath = \"{$slconf[ScriptPath]}\";
+\$wgScriptPath = \"{$slconf['ScriptPath']}\";
\$wgScript = \"\$wgScriptPath/index.php\";
\$wgRedirectScript = \"\$wgScriptPath/redirect.php\";
@@ -728,13 +822,13 @@ if ( \$wgCommandLineMode ) {
\$wgUploadPath = \"\$wgScriptPath/images\";
\$wgUploadDirectory = \"\$IP/images\";
-\$wgEmergencyContact = \"{$slconf[EmergencyContact]}\";
-\$wgPasswordSender = \"{$slconf[PasswordSender]}\";
+\$wgEmergencyContact = \"{$slconf['EmergencyContact']}\";
+\$wgPasswordSender = \"{$slconf['PasswordSender']}\";
-\$wgDBserver = \"{$slconf[DBserver]}\";
-\$wgDBname = \"{$slconf[DBname]}\";
-\$wgDBuser = \"{$slconf[DBuser]}\";
-\$wgDBpassword = \"{$slconf[DBpassword]}\";
+\$wgDBserver = \"{$slconf['DBserver']}\";
+\$wgDBname = \"{$slconf['DBname']}\";
+\$wgDBuser = \"{$slconf['DBuser']}\";
+\$wgDBpassword = \"{$slconf['DBpassword']}\";
## To allow SQL queries through the wiki's Special:Askaql page,
## uncomment the next lines. THIS IS VERY INSECURE. If you want
@@ -764,16 +858,15 @@ if ( \$wgCommandLineMode ) {
\$wgLocalInterwiki = \$wgSitename;
-\$wgLanguageCode = \"{$slconf[LanguageCode]}\";
-" . ($conf->Encoding ? "\$wgInputEncoding = \$wgOutputEncoding = \"{$slconf[Encoding]}\";" : "" ) . "
+\$wgLanguageCode = \"{$slconf['LanguageCode']}\";
+\$wgUseLatin1 = " . ($conf->Latin1 ? 'true' : 'false') . ";\n
+
+\$wgProxyKey = \"$proxyKey\";
## Default skin: you can change the default skin. Use the internal symbolic
## names, ie 'standard', 'nostalgia', 'cologneblue', 'monobook':
# \$wgDefaultSkin = 'monobook';
-## This is incomplete, ignore it:
-#\$wgProxyKey = $proxyKey;
-
## For attaching licensing metadata to pages, and displaying an
## appropriate copyright notice / icon. GNU Free Documentation
## License and Creative Commons licenses are supported so far.
@@ -843,23 +936,26 @@ function getLanguageList() {
$wgLanguageCode = "xxx";
function wfLocalUrl( $x ) { return $x; }
function wfLocalUrlE( $x ) { return $x; }
- require( "../languages/Language.php" );
+ require_once( "../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";
+ if ( array_key_exists( $code, $wgLanguageNames ) ) {
+ if( in_array( $code, $latin1 ) ) {
+ $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/extensions/SiteMatrix.php b/extensions/SiteMatrix.php
new file mode 100644
index 000000000000..94beb5cd3e65
--- /dev/null
+++ b/extensions/SiteMatrix.php
@@ -0,0 +1,96 @@
+<?php
+
+# Make an HTML table showing all the wikis on the site
+
+
+$wgExtensionFunctions[] = "wfSiteMatrix";
+
+function wfSiteMatrix() {
+class SiteMatrixPage extends SpecialPage
+{
+ function SiteMatrixPage() {
+ SpecialPage::SpecialPage("SiteMatrix");
+ }
+
+ function execute( $par ) {
+ global $wgRequest, $wgOut, $wgTitle, $wgLocalDatabases;
+ $this->setHeaders();
+
+ $langlist = array_map( 'trim', file( '/home/wikipedia/common/langlist' ) );
+ sort( $langlist );
+ $xLanglist = array_flip( $langlist );
+
+ $sites = array( 'wiki', 'wiktionary', 'wikibooks', 'wikiquote' );
+ $names = array(
+ 'wiki' => 'Wikipedia<br />w',
+ 'wiktionary' => 'Wiktionary<br />wikt',
+ 'wikibooks' => 'Wikibooks<br />b',
+ 'wikiquote' => 'Wikiquote<br />q'
+ );
+ $hosts = array(
+ 'wiki' => 'wikipedia.org',
+ 'wiktionary' => 'wiktionary.org',
+ 'wikibooks' => 'wikibooks.org',
+ 'wikiquote' => 'wikiquote.org'
+ );
+
+ # Tabulate the matrix
+ $specials = array();
+ $matrix = array();
+ foreach( $wgLocalDatabases as $db ) {
+ # Find suffix
+ foreach ( $sites as $site ) {
+ if ( preg_match( "/(.*)$site\$/", $db, $m ) ) {
+ $lang = $m[1];
+ if ( empty( $xLanglist[$lang] ) && $site == 'wiki' ) {
+ $specials[] = $lang;
+ } else {
+ $matrix[$site][$lang] = 1;
+ }
+ break;
+ }
+ }
+ }
+
+ # Construct the HTML
+
+ # Header row
+ $s = "<table><tr>";
+ foreach ( $names as $name ) {
+ $s .= "<td><strong>$name</strong></td>";
+ }
+ $s .= "</tr>\n";
+
+ # Bulk of table
+ foreach ( $langlist as $lang ) {
+ $s .= "<tr>";
+ foreach ( $names as $site => $name ) {
+ $url = "http://$lang." . $hosts[$site] . "/";
+ if ( empty( $matrix[$site][$lang] ) ) {
+ # Non-existent wiki
+ $s .= "<td><a href=\"$url\" class=\"new\">$lang</a></td>";
+ } else {
+ # Wiki exists
+ $s .= "<td><a href=\"$url\">$lang</a></td>";
+ }
+ }
+ $s .= "</tr>\n";
+ }
+ $s .= "</table>\n";
+
+ # Specials
+ $s .= "<ul>";
+ foreach ( $specials as $lang ) {
+ $s .= "<li><a href=\"http://$lang.wikipedia.org/\">$lang</a></li>\n";
+ }
+ $s .= "</ul>";
+ $wgOut->addHTML( $s );
+ }
+}
+
+SpecialPage::addPage( new SiteMatrixPage );
+global $wgMessageCache;
+$wgMessageCache->addMessage( "sitematrix", "List of Wikimedia wikis" );
+
+} # End of extension function
+?>
diff --git a/img_auth.php b/img_auth.php
new file mode 100644
index 000000000000..02240ceea9e1
--- /dev/null
+++ b/img_auth.php
@@ -0,0 +1,173 @@
+<?php
+# Image download authorisation script
+# To use, in LocalSettings.php set $wgUploadDirectory to point to a non-public directory, and
+# $wgUploadPath to point to this file. Also set $wgWhitelistRead to an array of pages you want
+# everyone to be able to access. Your server must support PATH_INFO, CGI-based configurations
+# generally don't.
+
+define( "MEDIAWIKI", true );
+require_once( "./LocalSettings.php" );
+require_once( "includes/Setup.php" );
+
+# Get filenames/directories
+$filename = realpath( $wgUploadDirectory . $_SERVER['PATH_INFO'] );
+$realUploadDirectory = realpath( $wgUploadDirectory );
+$imageName = $wgLang->getNsText( NS_IMAGE ) . ":" . basename( $_SERVER['PATH_INFO'] );
+
+# Check if the filename is in the correct directory
+if ( substr( $filename, 0, strlen( $realUploadDirectory ) ) != $realUploadDirectory ) {
+ wfForbidden();
+}
+
+if ( is_array( $wgWhitelistRead ) && !in_array( $imageName, $wgWhitelistRead ) && !$wgUser->getID() ) {
+ wfForbidden();
+}
+
+# Write file
+$type = wfGetType( $filename );
+if ( $type ) {
+ header("Content-type: $type");
+}
+
+readfile( $filename );
+
+function wfGetType( $filename ) {
+ # There's probably a better way to do this
+ $types = <<<END_STRING
+application/andrew-inset ez
+application/mac-binhex40 hqx
+application/mac-compactpro cpt
+application/mathml+xml mathml
+application/msword doc
+application/octet-stream bin dms lha lzh exe class so dll
+application/oda oda
+application/ogg ogg
+application/pdf pdf
+application/postscript ai eps ps
+application/rdf+xml rdf
+application/smil smi smil
+application/srgs gram
+application/srgs+xml grxml
+application/vnd.mif mif
+application/vnd.ms-excel xls
+application/vnd.ms-powerpoint ppt
+application/vnd.wap.wbxml wbxml
+application/vnd.wap.wmlc wmlc
+application/vnd.wap.wmlscriptc wmlsc
+application/voicexml+xml vxml
+application/x-bcpio bcpio
+application/x-cdlink vcd
+application/x-chess-pgn pgn
+application/x-cpio cpio
+application/x-csh csh
+application/x-director dcr dir dxr
+application/x-dvi dvi
+application/x-futuresplash spl
+application/x-gtar gtar
+application/x-hdf hdf
+application/x-javascript js
+application/x-koan skp skd skt skm
+application/x-latex latex
+application/x-netcdf nc cdf
+application/x-sh sh
+application/x-shar shar
+application/x-shockwave-flash swf
+application/x-stuffit sit
+application/x-sv4cpio sv4cpio
+application/x-sv4crc sv4crc
+application/x-tar tar
+application/x-tcl tcl
+application/x-tex tex
+application/x-texinfo texinfo texi
+application/x-troff t tr roff
+application/x-troff-man man
+application/x-troff-me me
+application/x-troff-ms ms
+application/x-ustar ustar
+application/x-wais-source src
+application/xhtml+xml xhtml xht
+application/xslt+xml xslt
+application/xml xml xsl
+application/xml-dtd dtd
+application/zip zip
+audio/basic au snd
+audio/midi mid midi kar
+audio/mpeg mpga mp2 mp3
+audio/x-aiff aif aiff aifc
+audio/x-mpegurl m3u
+audio/x-pn-realaudio ram rm
+audio/x-pn-realaudio-plugin rpm
+audio/x-realaudio ra
+audio/x-wav wav
+chemical/x-pdb pdb
+chemical/x-xyz xyz
+image/bmp bmp
+image/cgm cgm
+image/gif gif
+image/ief ief
+image/jpeg jpeg jpg jpe
+image/png png
+image/svg+xml svg
+image/tiff tiff tif
+image/vnd.djvu djvu djv
+image/vnd.wap.wbmp wbmp
+image/x-cmu-raster ras
+image/x-icon ico
+image/x-portable-anymap pnm
+image/x-portable-bitmap pbm
+image/x-portable-graymap pgm
+image/x-portable-pixmap ppm
+image/x-rgb rgb
+image/x-xbitmap xbm
+image/x-xpixmap xpm
+image/x-xwindowdump xwd
+model/iges igs iges
+model/mesh msh mesh silo
+model/vrml wrl vrml
+text/calendar ics ifb
+text/css css
+text/html html htm
+text/plain asc txt
+text/richtext rtx
+text/rtf rtf
+text/sgml sgml sgm
+text/tab-separated-values tsv
+text/vnd.wap.wml wml
+text/vnd.wap.wmlscript wmls
+text/x-setext etx
+video/mpeg mpeg mpg mpe
+video/quicktime qt mov
+video/vnd.mpegurl mxu
+video/x-msvideo avi
+video/x-sgi-movie movie
+x-conference/x-cooltalk ice";
+END_STRING;
+ $endl = "
+";
+ $types = explode( $endl, $types );
+ if ( !preg_match( "/\.(.*?)$/", $filename, $matches ) ) {
+ return false;
+ }
+
+ foreach( $types as $type ) {
+ $extensions = explode( " ", $type );
+ for ( $i=1; $i<count( $extensions ); $i++ ) {
+ if ( $extensions[$i] == $matches[1] ) {
+ return $extensions[0];
+ }
+ }
+ }
+ return false;
+}
+
+function wfForbidden() {
+ header( "HTTP/1.0 403 Forbidden" );
+ print
+"<html><body>
+<h1>Access denied</h1>
+<p>You need to log in to access files on this server</p>
+</body></html>";
+ exit;
+}
+
+?>
diff --git a/includes/Article.php b/includes/Article.php
index 6ccdb7bb2a40..f031ac699f93 100644
--- a/includes/Article.php
+++ b/includes/Article.php
@@ -1,11 +1,13 @@
<?php
+# $Id$
+#
# Class representing a Wikipedia article and history.
# See design.doc for an overview.
# Note: edit user interface and cache support functions have been
# moved to separate EditPage and CacheManager classes.
-require_once( "CacheManager.php" );
+require_once( 'CacheManager.php' );
class Article {
/* private */ var $mContent, $mContentLoaded;
@@ -14,50 +16,180 @@ class Article {
/* private */ var $mMinorEdit, $mRedirectedFrom;
/* private */ var $mTouched, $mFileCache, $mTitle;
/* private */ var $mId, $mTable;
-
+
function Article( &$title ) {
$this->mTitle =& $title;
$this->clear();
}
-
+
/* private */ function clear()
{
$this->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_" ) {
- # 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" ) ) ) {
- return gzinflate( $row->$text );
+ # Get revision text associated with an old or archive row
+ # $row is usually an object from wfFetchRow(), both the flags and the text field must be included
+ /* static */ function getRevisionText( $row, $prefix = 'old_' ) {
+ # Get data
+ $textField = $prefix . 'text';
+ $flagsField = $prefix . 'flags';
+
+ if ( isset( $row->$flagsField ) ) {
+ $flags = explode( ",", $row->$flagsField );
+ } else {
+ $flags = array();
+ }
+
+ if ( isset( $row->$textField ) ) {
+ $text = $row->$textField;
+ } else {
+ return false;
}
- if( isset( $row->$text ) ) {
- return $row->$text;
+
+ if ( in_array( 'link', $flags ) ) {
+ # Handle link type
+ $text = Article::followLink( $text );
+ } elseif ( in_array( 'gzip', $flags ) ) {
+ # 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.
+ return gzinflate( $text );
}
- return false;
+ return $text;
}
-
+
/* 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';
+ }
+
+ # Returns the text associated with a "link" type old table row
+ /* static */ function followLink( $link ) {
+ # Split the link into fields and values
+ $lines = explode( '\n', $link );
+ $hash = '';
+ $locations = array();
+ foreach ( $lines as $line ) {
+ # Comments
+ if ( $line{0} == '#' ) {
+ continue;
+ }
+ # Field/value pairs
+ if ( preg_match( '/^(.*?)\s*:\s*(.*)$/', $line, $matches ) ) {
+ $field = strtolower($matches[1]);
+ $value = $matches[2];
+ if ( $field == 'hash' ) {
+ $hash = $value;
+ } elseif ( $field == 'location' ) {
+ $locations[] = $value;
+ }
+ }
+ }
+
+ if ( $hash === '' ) {
+ return false;
+ }
+
+ # Look in each specified location for the text
+ $text = false;
+ foreach ( $locations as $location ) {
+ $text = Article::fetchFromLocation( $location, $hash );
+ if ( $text !== false ) {
+ break;
+ }
+ }
+
+ return $text;
+ }
+
+ /* static */ function fetchFromLocation( $location, $hash ) {
+ global $wgLoadBalancer;
+ $fname = 'fetchFromLocation';
+ wfProfileIn( $fname );
+
+ $p = strpos( $location, ':' );
+ if ( $p === false ) {
+ wfProfileOut( $fname );
+ return false;
+ }
+
+ $type = substr( $location, 0, $p );
+ $text = false;
+ switch ( $type ) {
+ case 'mysql':
+ # MySQL locations are specified by mysql://<machineID>/<dbname>/<tblname>/<index>
+ # Machine ID 0 is the current connection
+ if ( preg_match( '/^mysql:\/\/(\d+)\/([A-Za-z_]+)\/([A-Za-z_]+)\/([A-Za-z_]+)$/',
+ $location, $matches ) ) {
+ $machineID = $matches[1];
+ $dbName = $matches[2];
+ $tblName = $matches[3];
+ $index = $matches[4];
+ if ( $machineID == 0 ) {
+ # Current connection
+ $db =& wfGetDB();
+ } else {
+ # Alternate connection
+ $db =& $wgLoadBalancer->getConnection( $machineID );
+
+ if ( array_key_exists( $machineId, $wgKnownMysqlServers ) ) {
+ # Try to open, return false on failure
+ $params = $wgKnownDBServers[$machineId];
+ $db = Database::newFromParams( $params['server'], $params['user'], $params['password'],
+ $dbName, 1, false, true, true );
+ }
+ }
+ if ( $db->isOpen() ) {
+ $index = wfStrencode( $index );
+ $res = $db->query( "SELECT blob_data FROM $dbName.$tblName WHERE blob_index='$index'", $fname );
+ $row = $db->fetchObject( $res );
+ $text = $row->text_data;
+ }
+ }
+ break;
+ case 'file':
+ # File locations are of the form file://<filename>, relative to the current directory
+ if ( preg_match( '/^file:\/\/(.*)$', $location, $matches ) )
+ $filename = strstr( $location, 'file://' );
+ $text = @file_get_contents( $matches[1] );
+ }
+ if ( $text !== false ) {
+ # Got text, now we need to interpret it
+ # The first line contains information about how to do this
+ $p = strpos( $text, '\n' );
+ $type = substr( $text, 0, $p );
+ $text = substr( $text, $p + 1 );
+ switch ( $type ) {
+ case 'plain':
+ break;
+ case 'gzip':
+ $text = gzinflate( $text );
+ break;
+ case 'object':
+ $object = unserialize( $text );
+ $text = $object->getItem( $hash );
+ break;
+ default:
+ $text = false;
+ }
+ }
+ wfProfileOut( $fname );
+ return $text;
}
-
+
# Note that getContent/loadContent may follow redirects if
# not told otherwise, and so may cause a change to mTitle.
@@ -70,34 +202,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
@@ -112,15 +244,15 @@ class Article {
}
}
}
-
+
# This function returns the text of a section, specified by a number ($section).
- # A section is text under a heading like == Heading == or <h1>Heading</h1>, or
+ # A section is text under a heading like == Heading == or <h1>Heading</h1>, or
# the first section before any such heading (section 0).
#
# If a section contains subsections, these are also returned.
#
function getSection($text,$section) {
-
+
# strip NOWIKI etc. to avoid confusion (true-parameter causes HTML
# comments to be stripped as well)
$striparray=array();
@@ -132,32 +264,32 @@ class Article {
# split it up by section
$secs =
preg_split(
- "/(^=+.*?=+|^<h[1-6].*?" . ">.*?<\/h[1-6].*?" . ">)/mi",
+ '/(^=+.*?=+|^<h[1-6].*?' . '>.*?<\/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]).*?>.*?<\/h[1-6].*?>/mi",$headline,$matches);
+ preg_match( '/^(=+).*?=+|^<h([1-6]).*?' . '>.*?<\/h[1-6].*?' . '>/mi',$headline,$matches);
$hlevel=$matches[1];
-
+
# translate wiki heading into level
- if(strpos($hlevel,"=")!==false) {
- $hlevel=strlen($hlevel);
+ if(strpos($hlevel,'=')!==false) {
+ $hlevel=strlen($hlevel);
}
-
+
$rv=$headline. $secs[$section*2];
$count=$section+1;
-
+
$break=false;
while(!empty($secs[$count*2-1]) && !$break) {
-
+
$subheadline=$secs[$count*2-1];
- preg_match( "/^(=+).*?=+|^<h([1-6]).*?>.*?<\/h[1-6].*?>/mi",$subheadline,$matches);
+ preg_match( '/^(=+).*?=+|^<h([1-6]).*?' . '>.*?<\/h[1-6].*?' . '>/mi',$subheadline,$matches);
$subhlevel=$matches[1];
- if(strpos($subhlevel,"=")!==false) {
- $subhlevel=strlen($subhlevel);
+ if(strpos($subhlevel,'=')!==false) {
+ $subhlevel=strlen($subhlevel);
}
if($subhlevel > $hlevel) {
$rv.=$subheadline.$secs[$count*2];
@@ -166,70 +298,71 @@ class Article {
$break=true;
}
$count++;
-
+
}
}
# reinsert stripped tags
$rv=$parser->unstrip($rv,$striparray);
+ $rv=$parser->unstripNoWiki($rv,$striparray);
$rv=trim($rv);
return $rv;
}
-
+
# Load the revision (including cur_text) into this object
function loadContent( $noredir = false )
{
- global $wgOut, $wgMwRedir, $wgRequest;
+ global $wgOut, $wgMwRedir, $wgRequest, $wgIsPg, $wgLoadBalancer;
# Query variables :P
$oldid = $wgRequest->getVal( 'oldid' );
$redirect = $wgRequest->getVal( 'redirect' );
if ( $this->mContentLoaded ) return;
- $fname = "Article::loadContent";
-
- # Pre-fill content with error message so that if something
+ $fname = 'Article::loadContent';
+
+ # Pre-fill content with error message so that if something
# fails we'll have something telling us what we intended.
- $t = $this->mTitle->getPrefixedText();
- if ( isset( $oldid ) ) {
- $oldid = IntVal( $oldid );
+ $t = $this->mTitle->getPrefixedText();
+ if ( isset( $oldid ) ) {
+ $oldid = IntVal( $oldid );
$t .= ",oldid={$oldid}";
- }
- if ( isset( $redirect ) ) {
- $redirect = ($redirect == "no") ? "no" : "yes";
- $t .= ",redirect={$redirect}";
- }
- $this->mContent = wfMsg( "missingarticle", $t );
-
+ }
+ if ( isset( $redirect ) ) {
+ $redirect = ($redirect == 'no') ? 'no' : 'yes';
+ $t .= ",redirect={$redirect}";
+ }
+ $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_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 );
- if ( 0 == wfNumRows( $res ) ) {
- return;
+ if ( 0 == wfNumRows( $res ) ) {
+ return;
}
$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 ) {
# Gotta hand redirects to special pages differently:
# 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;
}
@@ -239,10 +372,10 @@ class Article {
}
$rid = $rt->getArticleID();
if ( 0 != $rid ) {
- $sql = "SELECT cur_text,cur_timestamp,cur_user," .
+ $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 );
-
+
if ( 0 != wfNumRows( $res ) ) {
$this->mRedirectedFrom = $this->mTitle->getPrefixedText();
$this->mTitle = $rt;
@@ -255,16 +388,22 @@ class Article {
$this->mContent = $s->cur_text;
$this->mUser = $s->cur_user;
+ $this->mUserText = $s->cur_user_text;
+ $this->mComment = $s->cur_comment;
$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_flags FROM old " .
- "WHERE old_id={$oldid}";
+ $wgLoadBalancer->force(-1);
+ $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 );
+ $wgLoadBalancer->force(0);
if ( 0 == wfNumRows( $res ) ) {
return;
}
@@ -278,6 +417,8 @@ class Article {
}
$this->mContent = Article::getRevisionText( $s );
$this->mUser = $s->old_user;
+ $this->mUserText = $s->old_user_text;
+ $this->mComment = $s->old_comment;
$this->mCounter = 0;
$this->mTimestamp = $s->old_timestamp;
wfFreeResult( $res );
@@ -289,43 +430,43 @@ 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();
if ( 0 == $id ) {
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 ) ) {
- return false;
+ if ( 0 == wfNumRows( $res ) ) {
+ return false;
}
$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 ( !$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 );
-
+
if ( 0 != wfNumRows( $res ) ) {
$this->mRedirectedFrom = $this->mTitle->getPrefixedText();
$this->mTitle = $rt;
@@ -345,11 +486,12 @@ 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 ) ) {
- return false;
+ if ( 0 == wfNumRows( $res ) ) {
+ return false;
}
$s = wfFetchObject( $res );
@@ -375,7 +517,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;
}
@@ -386,10 +528,10 @@ class Article {
function isCountable( $text )
{
global $wgUseCommaCount, $wgMwRedir;
-
+
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;
}
@@ -402,10 +544,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 );
@@ -449,51 +591,38 @@ class Article {
function getContributors($limit = 0, $offset = 0)
{
- $fname = "Article::getContributors";
+ $fname = 'Article::getContributors';
# XXX: this is expensive; cache this info somewhere.
-
+
$title = $this->mTitle;
$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_user, old_user_text, ' .
+ ' user_real_name, MAX(old_timestamp) as timestamp' .
+ ' FROM old LEFT JOIN user ON old.old_user = user.user_id ' .
+ ' WHERE old.old_namespace = ' . $title->getNamespace() .
+ ' AND old.old_title = "' . $title->getDBkey() . '"' .
+ ' 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);
-
+
while ( $line = wfFetchObject( $res ) ) {
- $contribs[$line->old_user] =
- array($line->old_user_text, $line->user_real_name);
- }
-
- # Count anonymous users
-
- $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);
-
- while ( $line = wfFetchObject( $res ) ) {
- $contribs[0] = array($line->cnt, 'Anonymous');
- }
+ $contribs[] = array($line->old_user, $line->old_user_text, $line->user_real_name);
+ }
+
+ wfFreeResult($res);
return $contribs;
}
-
+
# This is the default action of the script: just view the page of
# the given title.
@@ -501,8 +630,8 @@ 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
@@ -510,7 +639,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.
@@ -520,10 +649,14 @@ class Article {
$de = new DifferenceEngine( intval($oldid), intval($diff) );
$de->showDiffPage();
wfProfileOut( $fname );
+ if( $diff == 0 ) {
+ # Run view updates for current revision only
+ $this->viewUpdates();
+ }
return;
}
- if ( !is_null( $oldid ) and $this->checkTouched() ) {
+ if ( empty( $oldid ) && $this->checkTouched() ) {
if( $wgOut->checkLastModified( $this->mTouched ) ){
return;
} else if ( $this->tryFileCache() ) {
@@ -534,46 +667,65 @@ class Article {
}
}
- $text = $this->getContent( false ); # May change mTitle by following a redirect
-
- # Another whitelist check in case oldid or redirects are altering the title
- if ( !$this->mTitle->userCanRead() ) {
- $wgOut->loginToUse();
- $wgOut->output();
- exit;
+ # Should the parser cache be used?
+ if ( $wgEnableParserCache && intval($wgUser->getOption( 'stubthreshold' )) == 0 && empty( $oldid ) ) {
+ $pcache = true;
+ } else {
+ $pcache = false;
}
-
- $wgOut->setPageTitle( $this->mTitle->getPrefixedText() );
-
- # We're looking at an old revision
- if ( !empty( $oldid ) ) {
- $this->setOldSubtitle();
- $wgOut->setRobotpolicy( "noindex,follow" );
- }
- if ( "" != $this->mRedirectedFrom ) {
- $sk = $wgUser->getSkin();
- $redir = $sk->makeKnownLink( $this->mRedirectedFrom, "",
- "redirect=no" );
- $s = wfMsg( "redirectedfrom", $redir );
- $wgOut->setSubtitle( $s );
+ $outputDone = false;
+ if ( $pcache ) {
+ if ( $wgOut->tryParserCache( $this, $wgUser ) ) {
+ $outputDone = true;
+ }
}
- $wgLinkCache->preFill( $this->mTitle );
+ if ( !$outputDone ) {
+ $text = $this->getContent( false ); # May change mTitle by following a redirect
- # wrap user css and user js in pre and don't parse
- # 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())
- ) {
- $wgOut->addWikiText( wfMsg('usercssjs'));
- $wgOut->addHTML( '<pre>'.htmlspecialchars($this->mContent)."\n</pre>" );
- } else if( $wgEnableParserCache && intval($wgUser->getOption( "stubthreshold" )) == 0 ){
- $wgOut->addWikiText( $text, true, $this );
- } else {
- $wgOut->addWikiText( $text );
+ # Another whitelist check in case oldid or redirects are altering the title
+ if ( !$this->mTitle->userCanRead() ) {
+ $wgOut->loginToUse();
+ $wgOut->output();
+ exit;
+ }
+
+
+ # We're looking at an old revision
+
+ if ( !empty( $oldid ) ) {
+ $this->setOldSubtitle();
+ $wgOut->setRobotpolicy( 'noindex,follow' );
+ }
+ if ( '' != $this->mRedirectedFrom ) {
+ $sk = $wgUser->getSkin();
+ $redir = $sk->makeKnownLink( $this->mRedirectedFrom, '',
+ 'redirect=no' );
+ $s = wfMsg( 'redirectedfrom', $redir );
+ $wgOut->setSubtitle( $s );
+
+ # Can't cache redirects
+ $pcache = false;
+ }
+
+ $wgLinkCache->preFill( $this->mTitle );
+
+ # wrap user css and user js in pre and don't parse
+ # 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())
+ ) {
+ $wgOut->addWikiText( wfMsg('clearyourcache'));
+ $wgOut->addHTML( '<pre>'.htmlspecialchars($this->mContent)."\n</pre>" );
+ } else if ( $pcache ) {
+ $wgOut->addWikiText( $text, true, $this );
+ } else {
+ $wgOut->addWikiText( $text );
+ }
}
+ $wgOut->setPageTitle( $this->mTitle->getPrefixedText() );
# Add link titles as META keywords
$wgOut->addMetaTags() ;
@@ -590,9 +742,9 @@ class Article {
/* private */ function insertNewArticle( $text, $summary, $isminor, $watchthis )
{
global $wgOut, $wgUser, $wgLinkCache, $wgMwRedir;
- global $wgUseSquid, $wgDeferredUpdateList, $wgInternalServer;
-
- $fname = "Article::insertNewArticle";
+ global $wgUseSquid, $wgDeferredUpdateList, $wgInternalServer, $wgIsPg, $wgIsMySQL;
+
+ $fname = 'Article::insertNewArticle';
$this->mCountAdjustment = $this->isCountable( $text );
@@ -605,12 +757,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}', " .
@@ -618,38 +781,38 @@ 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 );
RecentChange::notifyNew( $now, $this->mTitle, $isminor, $wgUser, $summary );
-
- if ($watchthis) {
- if(!$this->mTitle->userIsWatching()) $this->watch();
+
+ if ($watchthis) {
+ if(!$this->mTitle->userIsWatching()) $this->watch();
} else {
if ( $this->mTitle->userIsWatching() ) {
$this->unwatch();
}
}
-
+
# The talk page isn't in the regular link tables, so we need to update manually:
$talkns = $ns ^ 1; # talk -> normal; normal -> talk
$sql = "UPDATE cur set cur_touched='$now' WHERE cur_namespace=$talkns AND cur_title='" . wfStrencode( $ttl ) . "'";
wfQuery( $sql, DB_WRITE );
-
+
# 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") {
+ $oldtext = $this->getContent( true );
+ if ($section != '') {
+ if($section=='new') {
if($summary) $subject="== {$summary} ==\n\n";
$text=$oldtext."\n\n".$subject.$text;
} else {
@@ -665,81 +828,83 @@ 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].*?" . ">.*?<\/h[1-6].*?" . ">)/mi",
+ $secs=preg_split('/(^=+.*?=+|^<h[1-6].*?' . '>.*?<\/h[1-6].*?' . '>)/mi',
$oldtext,-1,PREG_SPLIT_DELIM_CAPTURE);
$secs[$section*2]=$text."\n\n"; // replace with edited
-
+
# section 0 is top (intro) section
- if($section!=0) {
-
+ if($section!=0) {
+
# headline of old section - we need to go through this section
# to determine if there are any subsections that now need to
# 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]).*?>.*?<\/h[1-6].*?>/mi",$headline,$matches);
+ preg_match( '/^(=+).*?=+|^<h([1-6]).*?' . '>.*?<\/h[1-6].*?' . '>/mi',$headline,$matches);
$hlevel=$matches[1];
-
+
# determine headline level for wikimarkup headings
- if(strpos($hlevel,"=")!==false) {
- $hlevel=strlen($hlevel);
+ 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]).*?>.*?<\/h[1-6].*?>/mi",$subheadline,$matches);
+ '/^(=+).*?=+|^<h([1-6]).*?' . '>.*?<\/h[1-6].*?' . '>/mi',$subheadline,$matches);
$subhlevel=$matches[1];
- if(strpos($subhlevel,"=")!==false) {
- $subhlevel=strlen($subhlevel);
+ 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;
}
$count++;
-
+
}
-
+
}
- $text=join("",$secs);
+ $text=join('',$secs);
# reinsert the stuff that we stripped out earlier
- $text=$parser->unstrip($text,$striparray);
+ $text=$parser->unstrip($text,$striparray);
+ $text=$parser->unstripNoWiki($text,$striparray);
}
-
+
}
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 ( $minor && $wgUser->getID() ) { $me2 = 1; } else { $me2 = 0; }
+ if ( preg_match( "/^((" . $wgMwRedir->getBaseRegex() . ')[^\\n]+)/i', $text, $m ) ) {
$redir = 1;
$text = $m[1] . "\n"; # Remove all content but redirect
}
else { $redir = 0; }
$text = $this->preSaveTransform( $text );
-
+
# Update article, but only if changed.
if( $wgDBtransactions ) {
- $sql = "BEGIN";
+ $sql = 'BEGIN';
wfQuery( $sql, DB_WRITE );
}
$oldtext = $this->getContent( true );
@@ -759,7 +924,7 @@ class Article {
"WHERE cur_id=" . $this->getID() .
" AND cur_timestamp='" . $this->getTimestamp() . "'";
$res = wfQuery( $sql, DB_WRITE, $fname );
-
+
if( wfAffectedRows() == 0 ) {
/* Belated edit conflict! Run away!! */
return false;
@@ -767,10 +932,23 @@ 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 ) . "', '" .
@@ -780,21 +958,22 @@ 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,
+ RecentChange::notifyEdit( $now, $this->mTitle, $me2, $wgUser, $summary,
$oldid, $this->getTimestamp(), $bot );
Article::onArticleEdit( $this->mTitle );
}
if( $wgDBtransactions ) {
- $sql = "COMMIT";
+ $sql = 'COMMIT';
wfQuery( $sql, DB_WRITE );
}
-
- if ($watchthis) {
- if (!$this->mTitle->userIsWatching()) $this->watch();
+
+ if ($watchthis) {
+ if (!$this->mTitle->userIsWatching()) $this->watch();
} else {
if ( $this->mTitle->userIsWatching() ) {
$this->unwatch();
@@ -802,8 +981,8 @@ class Article {
}
# standard deferred updates
$this->editUpdates( $text );
-
-
+
+
$urls = array();
# Template namespace
# Purge all articles linking here
@@ -816,7 +995,7 @@ class Article {
}
}
}
-
+
# Squid updates
if ( $wgUseSquid ) {
$urls = array_merge( $urls, $this->mTitle->getSquidURLs() );
@@ -824,7 +1003,7 @@ class Article {
$u->doUpdate();
}
- $this->showArticle( $text, wfMsg( "updated" ), $sectionanchor );
+ $this->showArticle( $text, wfMsg( 'updated' ), $sectionanchor );
return true;
}
@@ -842,14 +1021,14 @@ class Article {
$wgLinkCache->preFill( $this->mTitle );
$wgLinkCache->clear();
- # Now update the link cache by parsing the text
+ # Now update the link cache by parsing the text
$wgOut = new OutputPage();
$wgOut->addWikiText( $text );
if( $wgMwRedir->matchStart( $text ) )
- $r = "redirect=no";
+ $r = 'redirect=no';
else
- $r = "";
+ $r = '';
$wgOut->redirect( $this->mTitle->getFullURL( $r ).$sectionanchor );
}
@@ -861,7 +1040,7 @@ class Article {
global $wgDeferredUpdateList;
if ( 0 == $wgUser->getID() ) {
- $wgOut->errorpage( "watchnologin", "watchnologintext" );
+ $wgOut->errorpage( 'watchnologin', 'watchnologintext' );
return;
}
if ( wfReadOnly() ) {
@@ -873,16 +1052,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();
@@ -896,7 +1075,7 @@ class Article {
$this->watch( false );
}
- function protect( $limit = "sysop" )
+ function protect( $limit = 'sysop' )
{
global $wgUser, $wgOut, $wgRequest;
@@ -910,7 +1089,7 @@ class Article {
}
$id = $this->mTitle->getArticleID();
if ( 0 == $id ) {
- $wgOut->fatalError( wfMsg( "badarticleerror" ) );
+ $wgOut->fatalError( wfMsg( 'badarticleerror' ) );
return;
}
@@ -919,52 +1098,54 @@ class Article {
if ( $confirm ) {
- $sql = "UPDATE cur SET cur_touched='" . wfTimestampNow() . "'," .
- "cur_restrictions='{$limit}' WHERE cur_id={$id}";
- wfQuery( $sql, DB_WRITE, "Article::protect" );
+ $sql = "UPDATE cur SET cur_touched='" . wfTimestampNow() . "'," .
+ "cur_restrictions='{$limit}' WHERE cur_id={$id}";
+ wfQuery( $sql, DB_WRITE, 'Article::protect' );
- $log = new LogPage( wfMsg( "protectlogpage" ), wfMsg( "protectlogtext" ) );
- if ( $limit === "" ) {
- $log->addEntry( wfMsg( "unprotectedarticle", $this->mTitle->getPrefixedText() ), $reason );
- } else {
- $log->addEntry( wfMsg( "protectedarticle", $this->mTitle->getPrefixedText() ), $reason );
- }
- $wgOut->redirect( $this->mTitle->getFullURL() );
+ $log = new LogPage( wfMsg( 'protectlogpage' ), wfMsg( 'protectlogtext' ) );
+ if ( $limit === "" ) {
+ $log->addEntry( wfMsg( 'unprotectedarticle', $this->mTitle->getPrefixedText() ), $reason );
+ } else {
+ $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" );
-
- $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 );
+ $wgOut->setRobotpolicy( 'noindex,nofollow' );
+
+ $check = '';
+ $protcom = '';
+
+ if ( $limit === '' ) {
+ $wgOut->setPageTitle( wfMsg( 'confirmunprotect' ) );
+ $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->setPageTitle( wfMsg( 'confirmprotect' ) );
+ $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( "
<form id='protectconfirm' method='post' action=\"{$formaction}\">
@@ -1002,19 +1183,19 @@ class Article {
function unprotect()
{
- return $this->protect( "" );
+ return $this->protect( '' );
}
- # UI entry point for page deletion
+ # 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' );
-
+
# This code desperately needs to be totally rewritten
-
+
# Check permissions
if ( ( ! $wgUser->isSysop() ) ) {
$wgOut->sysopRequired();
@@ -1026,10 +1207,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;
}
@@ -1044,12 +1225,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("<b>".wfMsg("historywarning"));
- $wgOut->addHTML( $skin->historyLink() ."</b>");
+ $wgOut->addHTML('<b>'.wfMsg('historywarning'));
+ $wgOut->addHTML( $skin->historyLink() .'</b>');
}
$sql="SELECT cur_text FROM cur WHERE cur_namespace=$ns and cur_title='$etitle'";
@@ -1067,57 +1249,57 @@ class Article {
$text = Article::getRevisionText( $old );
$blanked = true;
}
-
+
}
-
- $length=strlen($text);
-
+
+ $length=strlen($text);
+
# 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("/\</","&lt;",$text);
- $text=preg_replace("/\>/","&gt;",$text);
- $text=preg_replace("/[\n\r]/","",$text);
+ $text=preg_replace('/\"/',"'",$text);
+ $text=preg_replace('/\</','&lt;',$text);
+ $text=preg_replace('/\>/','&gt;',$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
- $reason.="'";
+ 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
function confirmDelete( $par, $reason )
{
global $wgOut;
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( "
<form id='deleteconfirm' method='post' action=\"{$formaction}\">
@@ -1157,26 +1339,26 @@ class Article {
function doDelete( $reason )
{
global $wgOut, $wgUser, $wgLang;
- $fname = "Article::doDelete";
+ $fname = 'Article::doDelete';
wfDebug( "$fname\n" );
- if ( $this->doDeleteArticle( $reason ) ) {
+ 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( "<p>" . $text . "</p>\n" );
+ $wgOut->addHTML( '<p>' . $text . "</p>\n" );
$wgOut->returnToMain( false );
} else {
- $wgOut->fatalError( wfMsg( "cannotdelete" ) );
+ $wgOut->fatalError( wfMsg( 'cannotdelete' ) );
}
}
@@ -1188,27 +1370,27 @@ 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;
}
$u = new SiteStatsUpdate( 0, 1, -$this->isCountable( $this->getContent( true ) ) );
array_push( $wgDeferredUpdateList, $u );
-
+
$linksTo = $this->mTitle->getLinksTo();
# Squid purging
if ( $wgUseSquid ) {
- $urls = array(
+ $urls = array(
$this->mTitle->getInternalURL(),
- $this->mTitle->getInternalURL( "history" )
+ $this->mTitle->getInternalURL( 'history' )
);
foreach ( $linksTo as $linkTo ) {
$urls[] = $linkTo->getInternalURL();
@@ -1223,17 +1405,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 );
@@ -1246,7 +1428,7 @@ class Article {
$sql = "DELETE FROM old WHERE old_namespace={$ns} AND " .
"old_title='{$t}'";
wfQuery( $sql, DB_WRITE, $fname );
-
+
$sql = "DELETE FROM recentchanges WHERE rc_namespace={$ns} AND " .
"rc_title='{$t}'";
wfQuery( $sql, DB_WRITE, $fname );
@@ -1255,15 +1437,15 @@ class Article {
$t = wfStrencode( $this->mTitle->getPrefixedDBkey() );
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();
+ $linkID = $titleObj->getArticleID();
$sql .= "({$linkID},'{$t}')";
}
if ( ! $first ) {
@@ -1281,13 +1463,13 @@ class Article {
$sql = "DELETE FROM brokenlinks WHERE bl_from={$id}";
wfQuery( $sql, DB_WRITE, $fname );
-
+
$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 );
@@ -1297,7 +1479,7 @@ class Article {
function rollback()
{
- global $wgUser, $wgLang, $wgOut, $wgRequest;
+ global $wgUser, $wgLang, $wgOut, $wgRequest, $wgIsMySQL, $wgIsPg;
if ( ! $wgUser->isSysop() ) {
$wgOut->sysopRequired();
@@ -1307,74 +1489,78 @@ class Article {
$wgOut->readOnlyPage( $this->getContent( true ) );
return;
}
-
+
# Enhanced rollback, marks edits rc_bot=1
$bot = $wgRequest->getBool( 'bot' );
-
+
# Replace all this user's current edits with the next one down
$tt = wfStrencode( $this->mTitle->getDBKey() );
$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 );
$ut = wfStrencode( $s->cur_user_text );
$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( "<h2>" . $newcomment . "</h2>\n<hr />\n" );
+ $newcomment = wfMsg( 'revertpage', $s->old_user_text, $from );
+ $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) );
+ $wgOut->setRobotpolicy( 'noindex,nofollow' );
+ $wgOut->addHTML( '<h2>' . $newcomment . "</h2>\n<hr />\n" );
$this->updateArticle( Article::getRevisionText( $s ), $newcomment, 1, $this->mTitle->userIsWatching(), $bot );
Article::onArticleEdit( $this->mTitle );
$wgOut->returnToMain( false );
}
-
+
# Do standard deferred updates after page view
@@ -1388,10 +1574,10 @@ class Article {
$u = new SiteStatsUpdate( 1, 0, 0 );
array_push( $wgDeferredUpdateList, $u );
}
- $u = new UserTalkUpdate( 0, $this->mTitle->getNamespace(),
- $this->mTitle->getDBkey() );
- array_push( $wgDeferredUpdateList, $u );
}
+ $u = new UserTalkUpdate( 0, $this->mTitle->getNamespace(),
+ $this->mTitle->getDBkey() );
+ array_push( $wgDeferredUpdateList, $u );
}
# Do standard deferred updates after page edit.
@@ -1411,7 +1597,7 @@ class Article {
$id = $this->getID();
$title = $this->mTitle->getPrefixedDBkey();
$shortTitle = $this->mTitle->getDBkey();
-
+
$adj = $this->mCountAdjustment;
if ( 0 != $id ) {
@@ -1436,7 +1622,7 @@ class Article {
global $wgLang, $wgOut;
$td = $wgLang->timeanddate( $this->mTimestamp, true );
- $r = wfMsg( "revisionasof", $td );
+ $r = wfMsg( 'revisionasof', $td );
$wgOut->setSubtitle( "({$r})" );
}
@@ -1448,7 +1634,7 @@ class Article {
global $wgParser, $wgUser;
return $wgParser->preSaveTransform( $text, $this->mTitle, $wgUser, ParserOptions::newFromUser( $wgUser ) );
}
-
+
/* Caching functions */
# checkLastModified returns true if it has taken care of all
@@ -1463,7 +1649,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 );
@@ -1475,7 +1661,7 @@ class Article {
$cache->loadFromFileCache();
return true;
} else {
- wfDebug( " tryFileCache() - starting buffer\n" );
+ wfDebug( " tryFileCache() - starting buffer\n" );
ob_start( array(&$cache, 'saveToFileCache' ) );
}
} else {
@@ -1486,25 +1672,26 @@ class Article {
function isFileCacheable() {
global $wgUser, $wgUseFileCache, $wgShowIPinHeader, $wgRequest;
extract( $wgRequest->getValues( 'action', 'oldid', 'diff', 'redirect', 'printable' ) );
-
+
return $wgUseFileCache
and (!$wgShowIPinHeader)
and ($this->getID() != 0)
and ($wgUser->getId() == 0)
and (!$wgUser->getNewtalk())
and ($this->mTitle->getNamespace() != Namespace::getSpecial())
- and ($action == "view")
+ and ($action == 'view' || empty ( $action ))
and (!isset($oldid))
and (!isset($diff))
and (!isset($redirect))
and (!isset($printable))
and (!$this->mRedirectedFrom);
}
-
+
+ # 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;
@@ -1512,20 +1699,69 @@ class Article {
return false;
}
}
-
+
+ # Edit an article without doing all that other stuff
+ function quickEdit( $text, $comment = '', $minor = 0 ) {
+ global $wgUser, $wgMwRedir, $wgIsPg;
+ $fname = 'Article::quickEdit';
+ wfProfileIn( $fname );
+
+ $ns = $this->mTitle->getNamespace();
+ $dbkey = $this->mTitle->getDBkey();
+ $encDbKey = wfStrencode( $dbkey );
+ $timestamp = wfTimestampNow();
+
+ # Save to history
+ $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
+ $numRows = wfAffectedRows();
+
+ # Make an array of fields to be inserted
+ $fields = array(
+ 'cur_text' => $text,
+ 'cur_timestamp' => $timestamp,
+ 'cur_user' => $wgUser->getID(),
+ 'cur_user_text' => $wgUser->getName(),
+ 'inverse_timestamp' => wfInvertTimestamp( $timestamp ),
+ 'cur_comment' => $comment,
+ 'cur_is_redirect' => $wgMwRedir->matchStart( $text ) ? 1 : 0,
+ 'cur_minor_edit' => intval($minor),
+ 'cur_touched' => $timestamp,
+ );
+
+ if ( $numRows ) {
+ # Update article
+ $fields['cur_is_new'] = 0;
+ 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 );
+ }
+ wfProfileOut( $fname );
+ }
+
/* static */ function incViewCount( $id )
{
$id = intval( $id );
global $wgHitcounterUpdateFreq;
- if( $wgHitcounterUpdateFreq <= 1 ){ //
- wfQuery("UPDATE cur SET cur_counter = cur_counter + 1 " .
- "WHERE cur_id = $id", DB_WRITE);
+ if( $wgHitcounterUpdateFreq <= 1 ){ //
+ wfQuery('UPDATE cur SET cur_counter = cur_counter + 1 ' .
+ 'WHERE cur_id = '.$id, DB_WRITE);
return;
}
# Not important enough to warrant an error page in case of failure
- $oldignore = wfIgnoreSQLErrors( true );
+ $oldignore = wfIgnoreSQLErrors( true );
wfQuery("INSERT INTO hitcounter (hc_id) VALUES ({$id})", DB_WRITE);
@@ -1536,42 +1772,42 @@ 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" );
+ if( $rown >= $wgHitcounterUpdateFreq ){
+ 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 );
}
# The onArticle*() functions are supposed to be a kind of hooks
- # which should be called whenever any of the specified actions
- # are done.
+ # which should be called whenever any of the specified actions
+ # are done.
#
- # This is a good place to put code to clear caches, for instance.
+ # This is a good place to put code to clear caches, for instance.
- # This is called on page move and undelete, as well as edit
+ # This is called on page move and undelete, as well as edit
/* static */ function onArticleCreate($title_obj){
- global $wgEnablePersistentLC, $wgEnableParserCache, $wgUseSquid, $wgDeferredUpdateList;
+ global $wgUseSquid, $wgDeferredUpdateList;
$titles = $title_obj->getBrokenLinksTo();
-
- # Purge squid
+
+ # Purge squid
if ( $wgUseSquid ) {
$urls = $title_obj->getSquidURLs();
foreach ( $titles as $linkTitle ) {
@@ -1582,33 +1818,89 @@ class Article {
}
# Clear persistent link cache
- if ( $wgEnablePersistentLC ) {
- LinkCache::linksccClearBrokenLinksTo( $title_obj->getPrefixedDBkey() );
- }
-
- # Clear parser cache (not really used)
- if ( $wgEnableParserCache ) {
- OutputPage::parsercacheClearBrokenLinksTo( $title_obj->getPrefixedDBkey() );
- }
+ LinkCache::linksccClearBrokenLinksTo( $title_obj->getPrefixedDBkey() );
}
/* static */ function onArticleDelete($title_obj){
- global $wgEnablePersistentLC, $wgEnableParserCache;
- if ( $wgEnablePersistentLC ) {
- LinkCache::linksccClearLinksTo( $title_obj->getArticleID() );
- }
- if ( $wgEnableParserCache ) {
- OutputPage::parsercacheClearLinksTo( $title_obj->getArticleID() );
- }
+ LinkCache::linksccClearLinksTo( $title_obj->getArticleID() );
}
/* static */ function onArticleEdit($title_obj){
- global $wgEnablePersistentLC, $wgEnableParserCache;
- if ( $wgEnablePersistentLC ) {
- LinkCache::linksccClearPage( $title_obj->getArticleID() );
+ LinkCache::linksccClearPage( $title_obj->getArticleID() );
+ }
+
+ # Info about this page
+
+ function info()
+ {
+ global $wgUser, $wgTitle, $wgOut, $wgLang, $wgAllowPageInfo;
+
+ if ( !$wgAllowPageInfo ) {
+ $wgOut->errorpage( "nosuchaction", "nosuchactiontext" );
+ return;
}
- if ( $wgEnableParserCache ) {
- OutputPage::parsercacheClearPage( $title_obj->getArticleID(), $title_obj->getNamespace() );
+
+ $basenamespace = $wgTitle->getNamespace() & (~1);
+ $cur_clause = "cur_title='".$wgTitle->getDBkey()."' AND cur_namespace=".$basenamespace;
+ $old_clause = "old_title='".$wgTitle->getDBkey()."' AND old_namespace=".$basenamespace;
+ $wl_clause = "wl_title='".$wgTitle->getDBkey()."' AND wl_namespace=".$basenamespace;
+ $fullTitle = $wgTitle->makeName($basenamespace, $wgTitle->getDBKey());
+ $wgOut->setPagetitle( $fullTitle );
+ $wgOut->setSubtitle( wfMsg( "infosubtitle" ));
+
+ # first, see if the page exists at all.
+ $sql = "SELECT COUNT(*) FROM cur WHERE ".$cur_clause;
+ $exists = wfSingleQuery( $sql , DB_READ );
+ if ($exists < 1) {
+ $wgOut->addHTML( wfMsg("noarticletext") );
+ } else {
+ $sql = "SELECT COUNT(*) FROM watchlist WHERE ".$wl_clause;
+ $wgOut->addHTML( "<ul><li>" . wfMsg("numwatchers") . wfSingleQuery( $sql, DB_READ ) . "</li>" );
+ $sql = "SELECT COUNT(*) FROM old WHERE ".$old_clause;
+ $old = wfSingleQuery( $sql, DB_READ );
+ $wgOut->addHTML( "<li>" . wfMsg("numedits") . ($old + 1) . "</li>");
+
+ # to find number of distinct authors, we need to do some
+ # funny stuff because of the cur/old table split:
+ # - first, find the name of the 'cur' author
+ # - then, find the number of *other* authors in 'old'
+
+ # find 'cur' author
+ $sql = "SELECT cur_user_text FROM cur WHERE ".$cur_clause;
+ $cur_author = wfSingleQuery( $sql, DB_READ );
+
+ # find number of 'old' authors excluding 'cur' author
+ $sql = "SELECT COUNT(DISTINCT old_user_text) FROM old WHERE ".$old_clause
+ ." AND old_user_text<>'" . $cur_author . "'";
+ $authors = wfSingleQuery( $sql, DB_READ ) + 1;
+
+ # now for the Talk page ...
+ $cur_clause = "cur_title='".$wgTitle->getDBkey()."' AND cur_namespace=".($basenamespace+1);
+ $old_clause = "old_title='".$wgTitle->getDBkey()."' AND old_namespace=".($basenamespace+1);
+
+ # does it exist?
+ $sql = "SELECT COUNT(*) FROM cur WHERE ".$cur_clause;
+ $exists = wfSingleQuery( $sql , DB_READ );
+
+ # number of edits
+ if ($exists > 0) {
+ $sql = "SELECT COUNT(*) FROM old WHERE ".$old_clause;
+ $old = wfSingleQuery( $sql, DB_READ );
+ $wgOut->addHTML( "<li>" . wfMsg("numtalkedits") . ($old + 1) . "</li>");
+ }
+ $wgOut->addHTML( "<li>" . wfMsg("numauthors") . $authors . "</li>" );
+
+ # number of authors
+ if ($exists > 0) {
+ $sql = "SELECT cur_user_text FROM cur WHERE ".$cur_clause;
+ $cur_author = wfSingleQuery( $sql, DB_READ );
+
+ $sql = "SELECT COUNT(DISTINCT old_user_text) FROM old WHERE "
+ .$old_clause." AND old_user_text<>'" . $cur_author . "'";
+ $authors = wfSingleQuery( $sql, DB_READ ) + 1;
+
+ $wgOut->addHTML( "<li>" . wfMsg("numtalkauthors") . $authors . "</li></ul>" );
+ }
}
}
}
diff --git a/includes/Block.php b/includes/Block.php
index d98b07baebb7..e5df26241a23 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,26 +38,33 @@ 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";
+ global $wgLoadBalancer;
+ $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 ) .
"' OR ipb_user={$user})";
}
- $res = wfQuery( $sql, DB_READ, $fname );
- if ( 0 == wfNumRows( $res ) ) {
+ $wgLoadBalancer->force(-1);
+ $res = wfQuery( $sql, DB_READ, $fname );
+ $wgLoadBalancer->force(0);
+ if ( 0 == wfNumRows( $res ) ) {
# User is not blocked
$this->clear();
} else {
@@ -109,7 +116,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 +132,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 +151,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 +195,7 @@ class Block
function isValid()
{
- return $this->mAddress != "";
+ return $this->mAddress != '';
}
function updateTimestamp()
@@ -197,10 +204,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 +239,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 5b65bdc20a56..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();
@@ -36,10 +36,10 @@ class BlockCache
}
}
- if ( $this->mData === false || is_null( $this->mData ) ) {
+ 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( "</html>",
- "<!-- Cached/compressed $now -->\n</html>",
+ $rawtext = str_replace( '</html>',
+ '<!-- Cached/compressed '.$now." -->\n</html>",
$text );
$text = gzencode( $rawtext );
} else {
- $text = str_replace( "</html>",
- "<!-- Cached $now -->\n</html>",
+ $text = str_replace( '</html>',
+ '<!-- Cached '.$now." -->\n</html>",
$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/Credits.php b/includes/Credits.php
new file mode 100644
index 000000000000..4a68f2e556c8
--- /dev/null
+++ b/includes/Credits.php
@@ -0,0 +1,172 @@
+<?php
+
+/* Credits.php -- formats credits for articles
+ * Copyright 2004, Evan Prodromou <evan@wikitravel.org>.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+/* This is largely cadged from PageHistory::history */
+
+function showCreditsPage($article)
+{
+ global $wgOut;
+
+ $fname = "showCreditsPage";
+
+ wfProfileIn( $fname );
+
+ $wgOut->setPageTitle( $article->mTitle->getPrefixedText() );
+ $wgOut->setSubtitle( wfMsg( "creditspage" ) );
+ $wgOut->setArticleFlag( false );
+ $wgOut->setArticleRelated( true );
+ $wgOut->setRobotpolicy( "noindex,nofollow" );
+
+ if( $article->mTitle->getArticleID() == 0 ) {
+ $s = wfMsg( "nocredits" );
+ } else {
+ $s = getCredits($article, -1);
+ }
+
+ $wgOut->addHTML( $s );
+
+ wfProfileOut( $fname );
+}
+
+function getCredits($article, $cnt, $showIfMax=true) {
+
+ $s = '';
+
+ if (isset($cnt) && $cnt != 0) {
+ $s = getAuthorCredits($article);
+ if ($cnt > 1 || $cnt < 0) {
+ $s .= ' ' . getContributorCredits($article, $cnt - 1, $showIfMax);
+ }
+ }
+
+ return $s;
+}
+
+function getAuthorCredits($article) {
+
+ global $wgLang;
+
+ $last_author = $article->getUser();
+
+ if ($last_author == 0) {
+ $author_credit = wfMsg('anonymous');
+ } else {
+
+ $real_name = User::whoIsReal($last_author);
+ $user_name = User::whoIs($last_author);
+
+ if (!empty($real_name)) {
+ $author_credit = creditLink($user_name, $real_name);
+ } else {
+ $author_credit = wfMsg('siteuser', creditLink($user_name));
+ }
+ }
+
+ $timestamp = $article->getTimestamp();
+ if ($timestamp) {
+ $d = $wgLang->timeanddate($article->getTimestamp(), true);
+ } else {
+ $d = '';
+ }
+ return wfMsg('lastmodifiedby', $d, $author_credit);
+}
+
+function getContributorCredits($article, $cnt, $showIfMax) {
+
+ global $wgLang, $wgAllowRealName;
+
+ $contributors = $article->getContributors();
+
+ $others_link = '';
+
+ # Hmm... too many to fit!
+
+ if ($cnt > 0 && count($contributors) > $cnt) {
+ $others_link = creditOthersLink($article);
+ if (!$showIfMax) {
+ return wfMsg('othercontribs', $others_link);
+ } else {
+ $contributors = array_slice($contributors, 0, $cnt);
+ }
+ }
+
+ $real_names = array();
+ $user_names = array();
+
+ $anon = '';
+
+ # Sift for real versus user names
+
+ foreach ($contributors as $user_parts) {
+ if ($user_parts[0] != 0) {
+ if ($wgAllowRealName && !empty($user_parts[2])) {
+ $real_names[] = creditLink($user_parts[1], $user_parts[2]);
+ } else {
+ $user_names[] = creditLink($user_parts[1]);
+ }
+ } else {
+ $anon = wfMsg('anonymous');
+ }
+ }
+
+ # Two strings: real names, and user names
+
+ $real = $wgLang->listToText($real_names);
+ $user = $wgLang->listToText($user_names);
+
+ # "ThisSite user(s) A, B and C"
+
+ if (!empty($user)) {
+ $user = wfMsg('siteusers', $user);
+ }
+
+ # This is the big list, all mooshed together. We sift for blank strings
+
+ $fulllist = array();
+
+ foreach (array($real, $user, $anon, $others_link) as $s) {
+ if (!empty($s)) {
+ array_push($fulllist, $s);
+ }
+ }
+
+ # Make the list into text...
+
+ $creds = $wgLang->listToText($fulllist);
+
+ # "Based on work by ..."
+
+ return (empty($creds)) ? '' : wfMsg('othercontribs', $creds);
+}
+
+function creditLink($user_name, $link_text = '') {
+ global $wgUser, $wgLang;
+ $skin = $wgUser->getSkin();
+ return $skin->makeLink($wgLang->getNsText(NS_USER) . ":" . $user_name,
+ (empty($link_text)) ? $user_name : $link_text);
+}
+
+function creditOthersLink($article) {
+ global $wgUser, $wgLang;
+ $skin = $wgUser->getSkin();
+ return $skin->makeKnownLink($article->mTitle->getPrefixedText(), wfMsg('others'), "action=credits");
+}
+
+?>
diff --git a/includes/Database.php b/includes/Database.php
index d84625492f8e..e960aef9f4f6 100644
--- a/includes/Database.php
+++ b/includes/Database.php
@@ -1,11 +1,10 @@
<?php
-require_once( "FulltextStoplist.php" );
+# $Id$
+# This file deals with MySQL interface functions
+# and query specifics/optimisations
+#
require_once( "CacheManager.php" );
-define( "DB_READ", -1 );
-define( "DB_WRITE", -2 );
-define( "DB_LAST", -3 );
-
define( "LIST_COMMA", 0 );
define( "LIST_AND", 1 );
define( "LIST_SET", 2 );
@@ -36,7 +35,7 @@ class Database {
# Output page, used for reporting errors
# FALSE means discard output
- function &setOutputPage( &$out ) { return wfSetRef( $this->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 ); }
@@ -90,6 +89,12 @@ class Database {
{
global $wgEmergencyContact;
+ # Test for missing mysql.so
+ # Otherwise we get a suppressed fatal error, which is very hard to track down
+ if ( !function_exists( 'mysql_connect' ) ) {
+ die( "MySQL functions missing, have you compiled PHP with the --with-mysql option?\n" );
+ }
+
$this->close();
$this->mServer = $server;
$this->mUser = $user;
@@ -140,10 +145,11 @@ class Database {
{
if ( $this->mFailFunction ) {
if ( !is_int( $this->mFailFunction ) ) {
- $this->$mFailFunction( $this );
+ $ff = $this->mFailFunction;
+ $ff( $this, mysql_error() );
}
} else {
- wfEmergencyAbort( $this );
+ wfEmergencyAbort( $this, mysql_error() );
}
}
@@ -151,7 +157,7 @@ class Database {
# If errors are explicitly ignored, returns success
function query( $sql, $fname = "" )
{
- global $wgProfiling;
+ global $wgProfiling, $wgCommandLineMode;
if ( $wgProfiling ) {
# generalizeSQL will probably cut down the query to reasonable
@@ -174,13 +180,23 @@ class Database {
}
if ( false === $ret ) {
+ $error = mysql_error( $this->mConn );
+ $errno = mysql_errno( $this->mConn );
if( $this->mIgnoreErrors ) {
- wfDebug("SQL ERROR (ignored): " . mysql_error( $this->mConn ) . "\n");
+ wfDebug("SQL ERROR (ignored): " . $error . "\n");
} else {
- wfDebug("SQL ERROR: " . mysql_error( $this->mConn ) . "\n");
- if ( $this->mOut ) {
+ $sql1line = str_replace( "\n", "\\n", $sql );
+ wfLogDBError("$fname\t$errno\t$error\t$sql1line\n");
+ wfDebug("SQL ERROR: " . $error . "\n");
+ if ( $wgCommandLineMode ) {
+ wfDebugDieBacktrace( "A database error has occurred\n" .
+ "Query: $sql\n" .
+ "Function: $fname\n" .
+ "Error: $errno $error\n"
+ );
+ } elseif ( $this->mOut ) {
// this calls wfAbruptExit()
- $this->mOut->databaseError( $fname, $this );
+ $this->mOut->databaseError( $fname, $sql, $error, $errno );
}
}
}
@@ -204,6 +220,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() ) {
@@ -254,8 +279,12 @@ class Database {
function getArray( $table, $vars, $conds, $fname = "Database::getArray" )
{
$vars = implode( ",", $vars );
- $where = Database::makeList( $conds, LIST_AND );
- $sql = "SELECT $vars FROM $table WHERE $where LIMIT 1";
+ if ( $conds !== false ) {
+ $where = Database::makeList( $conds, LIST_AND );
+ $sql = "SELECT $vars FROM $table WHERE $where LIMIT 1";
+ } else {
+ $sql = "SELECT $vars FROM $table LIMIT 1";
+ }
$res = $this->query( $sql, $fname );
if ( $res === false || !$this->numRows( $res ) ) {
return false;
@@ -314,7 +343,10 @@ class Database {
# If errors are explicitly ignored, returns NULL on failure
function indexExists( $table, $index, $fname = "Database::indexExists" )
{
- $sql = "SHOW INDEXES FROM $table";
+ # SHOW INDEX works in MySQL 3.23.58, but SHOW INDEXES does not.
+ # SHOW INDEX should work for 3.x and up:
+ # http://dev.mysql.com/doc/mysql/en/SHOW_INDEX.html
+ $sql = "SHOW INDEX FROM $table";
$res = $this->query( $sql, DB_READ, $fname );
if ( !$res ) {
return NULL;
@@ -334,6 +366,7 @@ class Database {
function tableExists( $table )
{
$old = $this->mIgnoreErrors;
+ $this->mIgnoreErrors = true;
$res = $this->query( "SELECT 1 FROM $table LIMIT 1" );
$this->mIgnoreErrors = $old;
if( $res ) {
@@ -424,16 +457,17 @@ class Database {
function startTimer( $timeout )
{
global $IP;
-
- $tid = mysql_thread_id( $this->mConn );
- exec( "php $IP/killthread.php $timeout $tid &>/dev/null &" );
+ if( function_exists( "mysql_thread_id" ) ) {
+ # This will kill the query if it's still running after $timeout seconds.
+ $tid = mysql_thread_id( $this->mConn );
+ exec( "php $IP/killthread.php $timeout $tid &>/dev/null &" );
+ }
}
function stopTimer()
{
}
-
-}
+}
#------------------------------------------------------------------------------
# Global functions
@@ -441,12 +475,18 @@ class Database {
/* Standard fail function, called by default when a connection cannot be established
Displays the file cache if possible */
-function wfEmergencyAbort( &$conn ) {
+function wfEmergencyAbort( &$conn, $error ) {
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" );
+ if($msg == "") $msg = wfMsgNoDB( "noconnect", $error );
$text = $msg;
if($wgUseFileCache) {
@@ -478,9 +518,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();
}
@@ -490,29 +527,9 @@ function wfStrencode( $s )
return addslashes( $s );
}
-# Ideally we'd be using actual time fields in the db
-function wfTimestamp2Unix( $ts ) {
- return gmmktime( ( (int)substr( $ts, 8, 2) ),
- (int)substr( $ts, 10, 2 ), (int)substr( $ts, 12, 2 ),
- (int)substr( $ts, 4, 2 ), (int)substr( $ts, 6, 2 ),
- (int)substr( $ts, 0, 4 ) );
+function wfLimitResult( $limit, $offset ) {
+ return " LIMIT ".(is_numeric($offset)?"{$offset},":"")."{$limit} ";
}
-function wfUnix2Timestamp( $unixtime ) {
- return gmdate( "YmdHis", $unixtime );
-}
-
-function wfTimestampNow() {
- # return NOW
- return gmdate( "YmdHis" );
-}
-# Sorting hack for MySQL 3, which doesn't use index sorts for DESC
-function wfInvertTimestamp( $ts ) {
- return strtr(
- $ts,
- "0123456789",
- "9876543210"
- );
-}
?>
diff --git a/includes/DatabaseFunctions.php b/includes/DatabaseFunctions.php
index 90bb40f19370..3fde31b9f0c0 100644
--- a/includes/DatabaseFunctions.php
+++ b/includes/DatabaseFunctions.php
@@ -1,4 +1,5 @@
<?php
+# $Id$
# Backwards compatibility wrapper for Database.php
@@ -7,53 +8,64 @@
# the load balancer will finally call Database, which will
# represent a single connection
-# NB: This file follows a connect on demand scheme. Do
-# not access the $wgDatabase variable directly unless
-# you intend to set it. Use wfGetDB().
+# Note: $wgDatabase has ceased to exist. Destroy all references.
+
+$wgIsMySQL=false;
+$wgIsPg=false;
+
+if ($wgDBtype=="mysql") {
+ require_once( "Database.php" );
+ $wgIsMySQL=true;
+} elseif ($wgDBtype=="pgsql") {
+ require_once( "DatabasePostgreSQL.php" );
+ $wgIsPg=true;
+}
-require_once( "Database.php" );
-# Query the database
-# $db: DB_READ = -1 read from slave (or only server)
-# DB_WRITE = -2 write to master (or only server)
-# 0,1,2,... query a database with a specific index
-# Replication is not actually implemented just yet
# Usually aborts on failure
# If errors are explicitly ignored, returns success
function wfQuery( $sql, $db, $fname = "" )
{
- global $wgDatabase, $wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname,
- $wgDebugDumpSql, $wgBufferSQLResults, $wgIgnoreSQLErrors;
-
+ global $wgOut;
if ( !is_numeric( $db ) ) {
# Someone has tried to call this the old way
$wgOut->fatalError( wfMsgNoDB( "wrong_wfQuery_params", $db, $sql ) );
}
+ $c =& wfGetDB( $db );
+ if ( $c !== false ) {
+ return $c->query( $sql, $fname );
+ } else {
+ return false;
+ }
+}
- $db =& wfGetDB();
- return $db->query( $sql, $fname );
+function wfSingleQuery( $sql, $db, $fname = "" )
+{
+ $res = wfQuery($sql, $db, $fname );
+ $row = wfFetchRow( $res );
+ $ret = $row[0];
+ wfFreeResult( $res );
+ return $ret;
}
-# Connect on demand
-function &wfGetDB()
+function &wfGetDB( $db = DB_LAST )
{
- global $wgDatabase, $wgDBserver, $wgDBuser, $wgDBpassword, $wgDBname,
- $wgDebugDumpSql, $wgBufferSQLResults, $wgIgnoreSQLErrors;
- if ( !$wgDatabase ) {
- $wgDatabase = Database::newFromParams( $wgDBserver, $wgDBuser, $wgDBpassword,
- $wgDBname, false, $wgDebugDumpSql, $wgBufferSQLResults, $wgIgnoreSQLErrors );
- }
- return $wgDatabase;
+ global $wgLoadBalancer;
+ return $wgLoadBalancer->getConnection( $db );
}
# Turns buffering of SQL result sets on (true) or off (false). Default is
# "on" and it should not be changed without good reasons.
# Returns the previous state.
-function wfBufferSQLResults( $newstate )
+function wfBufferSQLResults( $newstate, $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->setBufferResults( $newstate );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->setBufferResults( $newstate );
+ } else {
+ return NULL;
+ }
}
# Turns on (false) or off (true) the automatic generation and sending
@@ -63,117 +75,206 @@ function wfBufferSQLResults( $newstate )
# situation as appropriate.
# Returns the previous state.
-function wfIgnoreSQLErrors( $newstate )
+function wfIgnoreSQLErrors( $newstate, $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->setIgnoreErrors( $newstate );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->setIgnoreErrors( $newstate );
+ } else {
+ return NULL;
+ }
}
-function wfFreeResult( $res )
+function wfFreeResult( $res, $dbi = DB_LAST )
{
- $db =& wfGetDB();
- $db->freeResult( $res );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ $db->freeResult( $res );
+ return true;
+ } else {
+ return false;
+ }
}
-function wfFetchObject( $res )
+function wfFetchObject( $res, $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->fetchObject( $res );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->fetchObject( $res, $dbi = DB_LAST );
+ } else {
+ return false;
+ }
+}
+
+function wfFetchRow( $res, $dbi = DB_LAST )
+{
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->fetchRow ( $res, $dbi = DB_LAST );
+ } else {
+ return false;
+ }
}
-function wfNumRows( $res )
+function wfNumRows( $res, $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->numRows( $res );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->numRows( $res, $dbi = DB_LAST );
+ } else {
+ return false;
+ }
}
-function wfNumFields( $res )
+function wfNumFields( $res, $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->numFields( $res );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->numFields( $res );
+ } else {
+ return false;
+ }
}
-function wfFieldName( $res, $n )
+function wfFieldName( $res, $n, $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->fieldName( $res, $n );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->fieldName( $res, $n, $dbi = DB_LAST );
+ } else {
+ return false;
+ }
}
-function wfInsertId()
+function wfInsertId( $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->insertId();
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->insertId();
+ } else {
+ return false;
+ }
}
-function wfDataSeek( $res, $row )
+
+function wfDataSeek( $res, $row, $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->dataSeek( $res, $row );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->dataSeek( $res, $row );
+ } else {
+ return false;
+ }
}
-function wfLastErrno()
+function wfLastErrno( $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->lastErrno();
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->lastErrno();
+ } else {
+ return false;
+ }
}
-function wfLastError()
+function wfLastError( $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->lastError();
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->lastError();
+ } else {
+ return false;
+ }
}
-function wfAffectedRows()
+function wfAffectedRows( $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->affectedRows();
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->affectedRows();
+ } else {
+ return false;
+ }
}
-function wfLastDBquery()
+function wfLastDBquery( $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->lastQuery();
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->lastQuery();
+ } else {
+ return false;
+ }
}
-function wfSetSQL( $table, $var, $value, $cond )
+function wfSetSQL( $table, $var, $value, $cond, $dbi = DB_WRITE )
{
- $db =& wfGetDB();
- return $db->set( $table, $var, $value, $cond );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->set( $table, $var, $value, $cond );
+ } else {
+ return false;
+ }
}
-function wfGetSQL( $table, $var, $cond )
+function wfGetSQL( $table, $var, $cond="", $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->get( $table, $var, $cond );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->get( $table, $var, $cond );
+ } else {
+ return false;
+ }
}
-function wfFieldExists( $table, $field )
+function wfFieldExists( $table, $field, $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->fieldExists( $table, $field );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->fieldExists( $table, $field );
+ } else {
+ return false;
+ }
}
-function wfIndexExists( $table, $index )
+function wfIndexExists( $table, $index, $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->indexExists( $table, $index );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->indexExists( $table, $index );
+ } else {
+ return false;
+ }
}
-function wfInsertArray( $table, $array )
+function wfInsertArray( $table, $array, $fname = "wfInsertArray", $dbi = DB_WRITE )
{
- $db =& wfGetDB();
- return $db->insertArray( $table, $array );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->insertArray( $table, $array, $fname );
+ } else {
+ return false;
+ }
}
-function wfGetArray( $table, $vars, $conds, $fname = "wfGetArray" )
+function wfGetArray( $table, $vars, $conds, $fname = "wfGetArray", $dbi = DB_LAST )
{
- $db =& wfGetDB();
- return $db->getArray( $table, $vars, $conds, $fname );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ return $db->getArray( $table, $vars, $conds, $fname );
+ } else {
+ return false;
+ }
}
-function wfUpdateArray( $table, $values, $conds, $fname = "wfUpdateArray" )
+function wfUpdateArray( $table, $values, $conds, $fname = "wfUpdateArray", $dbi = DB_WRITE )
{
- $db =& wfGetDB();
- $db->updateArray( $table, $values, $conds, $fname );
+ $db =& wfGetDB( $dbi );
+ if ( $db !== false ) {
+ $db->updateArray( $table, $values, $conds, $fname );
+ return true;
+ } else {
+ return false;
+ }
}
?>
diff --git a/includes/DatabasePostgreSQL.php b/includes/DatabasePostgreSQL.php
new file mode 100644
index 000000000000..2b3ba25f10b5
--- /dev/null
+++ b/includes/DatabasePostgreSQL.php
@@ -0,0 +1,522 @@
+<?php
+# $Id$
+#
+# DO NOT USE !!! Unless you want to help developping it.
+#
+# This file is an attempt to port the mysql database layer to postgreSQL. The
+# only thing done so far is s/mysql/pg/ and dieing if function haven't been
+# ported.
+#
+# As said brion 07/06/2004 :
+# "table definitions need to be changed. fulltext index needs to work differently
+# things that use the last insert id need to be changed. Probably other things
+# need to be changed. various semantics may be different."
+#
+# Hashar
+
+require_once( "FulltextStoplist.php" );
+require_once( "CacheManager.php" );
+
+define( "DB_READ", -1 );
+define( "DB_WRITE", -2 );
+define( "DB_LAST", -3 );
+
+define( "LIST_COMMA", 0 );
+define( "LIST_AND", 1 );
+define( "LIST_SET", 2 );
+
+class Database {
+
+#------------------------------------------------------------------------------
+# Variables
+#------------------------------------------------------------------------------
+ /* private */ var $mLastQuery = "";
+ /* private */ var $mBufferResults = true;
+ /* private */ var $mIgnoreErrors = false;
+
+ /* private */ var $mServer, $mUser, $mPassword, $mConn, $mDBname;
+ /* private */ var $mOut, $mDebug, $mOpened = false;
+
+ /* private */ var $mFailFunction;
+ /* private */ var $mLastResult;
+
+#------------------------------------------------------------------------------
+# Accessors
+#------------------------------------------------------------------------------
+ # Set functions
+ # These set a variable and return the previous state
+
+ # Fail function, takes a Database as a parameter
+ # Set to false for default, 1 for ignore errors
+ function setFailFunction( $function ) { return wfSetVar( $this->mFailFunction, $function ); }
+
+ # Output page, used for reporting errors
+ # FALSE means discard output
+ function &setOutputPage( &$out ) { $this->mOut =& $out; }
+
+ # Boolean, controls output of large amounts of debug information
+ function setDebug( $debug ) { return wfSetVar( $this->mDebug, $debug ); }
+
+ # Turns buffering of SQL result sets on (true) or off (false). Default is
+ # "on" and it should not be changed without good reasons.
+ function setBufferResults( $buffer ) { return wfSetVar( $this->mBufferResults, $buffer ); }
+
+ # Turns on (false) or off (true) the automatic generation and sending
+ # of a "we're sorry, but there has been a database error" page on
+ # database errors. Default is on (false). When turned off, the
+ # code should use wfLastErrno() and wfLastError() to handle the
+ # situation as appropriate.
+ function setIgnoreErrors( $ignoreErrors ) { return wfSetVar( $this->mIgnoreErrors, $ignoreErrors ); }
+
+ # Get functions
+
+ function lastQuery() { return $this->mLastQuery; }
+ function isOpen() { return $this->mOpened; }
+
+#------------------------------------------------------------------------------
+# Other functions
+#------------------------------------------------------------------------------
+
+ function Database()
+ {
+ global $wgOut;
+ # Can't get a reference if it hasn't been set yet
+ if ( !isset( $wgOut ) ) {
+ $wgOut = NULL;
+ }
+ $this->mOut =& $wgOut;
+
+ }
+
+ /* static */ function newFromParams( $server, $user, $password, $dbName,
+ $failFunction = false, $debug = false, $bufferResults = true, $ignoreErrors = false )
+ {
+ $db = new Database;
+ $db->mFailFunction = $failFunction;
+ $db->mIgnoreErrors = $ignoreErrors;
+ $db->mDebug = $debug;
+ $db->mBufferResults = $bufferResults;
+ $db->open( $server, $user, $password, $dbName );
+ return $db;
+ }
+
+ # Usually aborts on failure
+ # If the failFunction is set to a non-zero integer, returns success
+ function open( $server, $user, $password, $dbName )
+ {
+ global $wgEmergencyContact;
+
+ $this->close();
+ $this->mServer = $server;
+ $this->mUser = $user;
+ $this->mPassword = $password;
+ $this->mDBname = $dbName;
+
+ $success = false;
+
+
+ if ( "" != $dbName ) {
+ # start a database connection
+ @$this->mConn = pg_connect("host=$server dbname=$dbName user=$user password=$password");
+ if ( $this->mConn == false ) {
+ wfDebug( "DB connection error\n" );
+ wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" );
+ wfDebug( $this->lastError()."\n" );
+ } else {
+ $this->mOpened = true;
+ }
+ }
+ return $this->mConn;
+ }
+
+ # Closes a database connection, if it is open
+ # Returns success, true if already closed
+ function close()
+ {
+ $this->mOpened = false;
+ if ( $this->mConn ) {
+ return pg_close( $this->mConn );
+ } else {
+ return true;
+ }
+ }
+
+ /* private */ function reportConnectionError( $msg = "")
+ {
+ if ( $this->mFailFunction ) {
+ if ( !is_int( $this->mFailFunction ) ) {
+ $this->$mFailFunction( $this );
+ }
+ } else {
+ wfEmergencyAbort( $this );
+ }
+ }
+
+ # Usually aborts on failure
+ # If errors are explicitly ignored, returns success
+ function query( $sql, $fname = "" )
+ {
+ global $wgProfiling;
+
+ if ( $wgProfiling ) {
+ # generalizeSQL will probably cut down the query to reasonable
+ # logging size most of the time. The substr is really just a sanity check.
+ $profName = "query: " . substr( Database::generalizeSQL( $sql ), 0, 255 );
+ wfProfileIn( $profName );
+ }
+
+ $this->mLastQuery = $sql;
+
+ if ( $this->mDebug ) {
+ $sqlx = substr( $sql, 0, 500 );
+ $sqlx = wordwrap(strtr($sqlx,"\t\n"," "));
+ wfDebug( "SQL: $sqlx\n" );
+ }
+
+ $ret = pg_query( $this->mConn , $sql);
+ $this->mLastResult = $ret;
+ if ( false == $ret ) {
+ $error = pg_last_error( $this->mConn );
+ // TODO FIXME : no error number function in postgre
+ // $errno = mysql_errno( $this->mConn );
+ if( $this->mIgnoreErrors ) {
+ wfDebug("SQL ERROR (ignored): " . $error . "\n");
+ } else {
+ wfDebug("SQL ERROR: " . $error . "\n");
+ if ( $this->mOut ) {
+ // this calls wfAbruptExit()
+ $this->mOut->databaseError( $fname, $sql, $error, 0 );
+ }
+ }
+ }
+
+ if ( $wgProfiling ) {
+ wfProfileOut( $profName );
+ }
+ return $ret;
+ }
+
+ function freeResult( $res ) {
+ if ( !@pg_free_result( $res ) ) {
+ wfDebugDieBacktrace( "Unable to free PostgreSQL result\n" );
+ }
+ }
+ function fetchObject( $res ) {
+ @$row = pg_fetch_object( $res );
+ # FIXME: HACK HACK HACK HACK debug
+
+ # TODO:
+ # hashar : not sure if the following test really trigger if the object
+ # fetching failled.
+ if( pg_last_error($this->mConn) ) {
+ wfDebugDieBacktrace( "SQL error: " . htmlspecialchars( pg_last_error($this->mConn) ) );
+ }
+ return $row;
+ }
+
+ function fetchRow( $res ) {
+ @$row = pg_fetch_array( $res );
+ if( pg_last_error($this->mConn) ) {
+ wfDebugDieBacktrace( "SQL error: " . htmlspecialchars( pg_last_error($this->mConn) ) );
+ }
+ return $row;
+ }
+
+ function numRows( $res ) {
+ @$n = pg_num_rows( $res );
+ if( pg_last_error($this->mConn) ) {
+ wfDebugDieBacktrace( "SQL error: " . htmlspecialchars( pg_last_error($this->mConn) ) );
+ }
+ return $n;
+ }
+ function numFields( $res ) { return pg_num_fields( $res ); }
+ function fieldName( $res, $n ) { return pg_field_name( $res, $n ); }
+ // TODO FIXME: need to implement something here
+ function insertId() {
+ //return mysql_insert_id( $this->mConn );
+ wfDebugDieBacktrace( "Database::insertId() error : not implemented for postgre, use sequences" );
+ }
+ function dataSeek( $res, $row ) { return pg_result_seek( $res, $row ); }
+ function lastErrno() { return $this->lastError(); }
+ function lastError() { return pg_last_error(); }
+ function affectedRows() {
+ return pg_affected_rows( $this->mLastResult );
+ }
+
+ # Simple UPDATE wrapper
+ # Usually aborts on failure
+ # If errors are explicitly ignored, returns success
+ function set( $table, $var, $value, $cond, $fname = "Database::set" )
+ {
+ $sql = "UPDATE \"$table\" SET \"$var\" = '" .
+ wfStrencode( $value ) . "' WHERE ($cond)";
+ return !!$this->query( $sql, DB_WRITE, $fname );
+ }
+
+ # Simple SELECT wrapper, returns a single field, input must be encoded
+ # Usually aborts on failure
+ # If errors are explicitly ignored, returns FALSE on failure
+ function get( $table, $var, $cond, $fname = "Database::get" )
+ {
+ $from=$table?" FROM \"$table\" ":"";
+ $where=$cond?" WHERE ($cond)":"";
+
+ $sql = "SELECT $var $from $where";
+
+ $result = $this->query( $sql, DB_READ, $fname );
+
+ $ret = "";
+ if ( pg_num_rows( $result ) > 0 ) {
+ $s = pg_fetch_array( $result );
+ $ret = $s[0];
+ pg_free_result( $result );
+ }
+ return $ret;
+ }
+
+ # More complex SELECT wrapper, single row only
+ # Aborts or returns FALSE on error
+ # Takes an array of selected variables, and a condition map, which is ANDed
+ # e.g. getArray( "cur", array( "cur_id" ), array( "cur_namespace" => 0, "cur_title" => "Astronomy" ) )
+ # would return an object where $obj->cur_id is the ID of the Astronomy article
+ function getArray( $table, $vars, $conds, $fname = "Database::getArray" )
+ {
+ $vars = implode( ",", $vars );
+ $where = Database::makeList( $conds, LIST_AND );
+ $sql = "SELECT \"$vars\" FROM \"$table\" WHERE $where LIMIT 1";
+ $res = $this->query( $sql, $fname );
+ if ( $res === false || !$this->numRows( $res ) ) {
+ return false;
+ }
+ $obj = $this->fetchObject( $res );
+ $this->freeResult( $res );
+ return $obj;
+ }
+
+ # Removes most variables from an SQL query and replaces them with X or N for numbers.
+ # It's only slightly flawed. Don't use for anything important.
+ /* static */ function generalizeSQL( $sql )
+ {
+ # This does the same as the regexp below would do, but in such a way
+ # as to avoid crashing php on some large strings.
+ # $sql = preg_replace ( "/'([^\\\\']|\\\\.)*'|\"([^\\\\\"]|\\\\.)*\"/", "'X'", $sql);
+
+ $sql = str_replace ( "\\\\", "", $sql);
+ $sql = str_replace ( "\\'", "", $sql);
+ $sql = str_replace ( "\\\"", "", $sql);
+ $sql = preg_replace ("/'.*'/s", "'X'", $sql);
+ $sql = preg_replace ('/".*"/s', "'X'", $sql);
+
+ # All newlines, tabs, etc replaced by single space
+ $sql = preg_replace ( "/\s+/", " ", $sql);
+
+ # All numbers => N
+ $sql = preg_replace ('/-?[0-9]+/s', "N", $sql);
+
+ return $sql;
+ }
+
+ # Determines whether a field exists in a table
+ # Usually aborts on failure
+ # If errors are explicitly ignored, returns NULL on failure
+ function fieldExists( $table, $field, $fname = "Database::fieldExists" )
+ {
+ $res = $this->query( "DESCRIBE '$table'", DB_READ, $fname );
+ if ( !$res ) {
+ return NULL;
+ }
+
+ $found = false;
+
+ while ( $row = $this->fetchObject( $res ) ) {
+ if ( $row->Field == $field ) {
+ $found = true;
+ break;
+ }
+ }
+ return $found;
+ }
+
+ # Determines whether an index exists
+ # Usually aborts on failure
+ # If errors are explicitly ignored, returns NULL on failure
+ function indexExists( $table, $index, $fname = "Database::indexExists" )
+ {
+ $sql = "SELECT indexname FROM pg_indexes WHERE tablename='$table'";
+ $res = $this->query( $sql, DB_READ, $fname );
+ if ( !$res ) {
+ return NULL;
+ }
+
+ $found = false;
+
+ while ( $row = $this->fetchObject( $res ) ) {
+ if ( $row->Key_name == $index ) {
+ $found = true;
+ break;
+ }
+ }
+ return $found;
+ }
+
+ function tableExists( $table )
+ {
+ $old = $this->mIgnoreErrors;
+ $this->mIgnoreErrors = true;
+ $res = $this->query( "SELECT 1 FROM '$table' LIMIT 1" );
+ $this->mIgnoreErrors = $old;
+ if( $res ) {
+ $this->freeResult( $res );
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ function fieldInfo( $table, $field )
+ {
+ $res = $this->query( "SELECT * FROM '$table' LIMIT 1" );
+ $n = pg_num_fields( $res );
+ for( $i = 0; $i < $n; $i++ ) {
+ // FIXME
+ wfDebugDieBacktrace( "Database::fieldInfo() error : mysql_fetch_field() not implemented for postgre" );
+ $meta = mysql_fetch_field( $res, $i );
+ if( $field == $meta->name ) {
+ return $meta;
+ }
+ }
+ return false;
+ }
+
+ # INSERT wrapper, inserts an array into a table
+ # Keys are field names, values are values
+ # Usually aborts on failure
+ # If errors are explicitly ignored, returns success
+ function insertArray( $table, $a, $fname = "Database::insertArray" )
+ {
+ $sql1 = "INSERT INTO \"$table\" (";
+ $sql2 = "VALUES (" . Database::makeList( $a );
+ $first = true;
+ foreach ( $a as $field => $value ) {
+ if ( !$first ) {
+ $sql1 .= ",";
+ }
+ $first = false;
+ $sql1 .= $field;
+ }
+ $sql = "$sql1) $sql2)";
+ return !!$this->query( $sql, $fname );
+ }
+
+ # A cross between insertArray and getArray, takes a condition array and a SET array
+ function updateArray( $table, $values, $conds, $fname = "Database::updateArray" )
+ {
+ $sql = "UPDATE '$table' SET " . $this->makeList( $values, LIST_SET );
+ $sql .= " WHERE " . $this->makeList( $conds, LIST_AND );
+ $this->query( $sql, $fname );
+ }
+
+ # Makes a wfStrencoded list from an array
+ # $mode: LIST_COMMA - comma separated, no field names
+ # LIST_AND - ANDed WHERE clause (without the WHERE)
+ # LIST_SET - comma separated with field names, like a SET clause
+ /* static */ function makeList( $a, $mode = LIST_COMMA )
+ {
+ $first = true;
+ $list = "";
+ foreach ( $a as $field => $value ) {
+ if ( !$first ) {
+ if ( $mode == LIST_AND ) {
+ $list .= " AND ";
+ } else {
+ $list .= ",";
+ }
+ } else {
+ $first = false;
+ }
+ if ( $mode == LIST_AND || $mode == LIST_SET ) {
+ $list .= "$field=";
+ }
+ if ( !is_numeric( $value ) ) {
+ $list .= "'" . wfStrencode( $value ) . "'";
+ } else {
+ $list .= $value;
+ }
+ }
+ return $list;
+ }
+
+ function startTimer( $timeout )
+ {
+ global $IP;
+ wfDebugDieBacktrace( "Database::startTimer() error : mysql_thread_id() not implemented for postgre" );
+ $tid = mysql_thread_id( $this->mConn );
+ exec( "php $IP/killthread.php $timeout $tid &>/dev/null &" );
+ }
+
+ function stopTimer()
+ {
+ }
+
+}
+
+#------------------------------------------------------------------------------
+# Global functions
+#------------------------------------------------------------------------------
+
+/* Standard fail function, called by default when a connection cannot be established
+ Displays the file cache if possible */
+function wfEmergencyAbort( &$conn ) {
+ global $wgTitle, $wgUseFileCache, $title, $wgInputEncoding, $wgSiteNotice, $wgOutputEncoding;
+
+ header( "Content-type: text/html; charset=$wgOutputEncoding" );
+ $msg = $wgSiteNotice;
+ if($msg == "") $msg = wfMsgNoDB( "noconnect" );
+ $text = $msg;
+
+ if($wgUseFileCache) {
+ if($wgTitle) {
+ $t =& $wgTitle;
+ } else {
+ if($title) {
+ $t = Title::newFromURL( $title );
+ } elseif (@$_REQUEST['search']) {
+ $search = $_REQUEST['search'];
+ echo wfMsgNoDB( "searchdisabled" );
+ echo wfMsgNoDB( "googlesearch", htmlspecialchars( $search ), $wgInputEncoding );
+ wfAbruptExit();
+ } else {
+ $t = Title::newFromText( wfMsgNoDB( "mainpage" ) );
+ }
+ }
+
+ $cache = new CacheManager( $t );
+ if( $cache->isFileCached() ) {
+ $msg = "<p style='color: red'><b>$msg<br />\n" .
+ wfMsgNoDB( "cachederror" ) . "</b></p>\n";
+
+ $tag = "<div id='article'>";
+ $text = str_replace(
+ $tag,
+ $tag . $msg,
+ $cache->fetchPageText() );
+ }
+ }
+
+ /* Don't cache error pages! They cause no end of trouble... */
+ header( "Cache-control: none" );
+ header( "Pragma: nocache" );
+ echo $text;
+ wfAbruptExit();
+}
+
+function wfStrencode( $s )
+{
+ return pg_escape_string( $s );
+}
+
+function wfLimitResult( $limit, $offset ) {
+ return " LIMIT $limit ".(is_numeric($offset)?" OFFSET {$offset} ":"");
+}
+
+?>
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 e4ea6847230f..b5aade2529b6 100644
--- a/includes/DefaultSettings.php
+++ b/includes/DefaultSettings.php
@@ -1,4 +1,7 @@
<?php
+if( defined( "MEDIAWIKI" ) ) {
+
+# $Id$
# DO NOT EDIT THIS FILE!
# To customize your installation, edit "LocalSettings.php".
# Note that since all these string interpolations are expanded
@@ -6,27 +9,27 @@
# like $wgScriptPath, you must also localize everything that
# depends on it.
-$wgVersion = "1.3.0pre-alpha";
+$wgVersion = '1.3.0beta6';
-$wgSitename = "MediaWiki"; # Please customize!
+$wgSitename = 'MediaWiki'; # Please customize!
$wgMetaNamespace = FALSE; # will be same as you set $wgSitename
# check if server use https:
-$wgProto = (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"] == "on") ? "https" : "http";
+$wgProto = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
if ( @$wgCommandLineMode ) {
- $wgServer = $wgProto."://localhost";
+ $wgServer = $wgProto.'://localhost';
} else {
- $wgServer = $wgProto."://" . $_SERVER["SERVER_NAME"];
- if( $_SERVER["SERVER_PORT"] != 80 ) $wgServer .= ":" . $_SERVER["SERVER_PORT"];
+ $wgServer = $wgProto.'://' . $_SERVER['SERVER_NAME'];
+ if( $_SERVER['SERVER_PORT'] != 80 ) $wgServer .= ":" . $_SERVER['SERVER_PORT'];
}
unset($wgProto);
-$wgScriptPath = "/wiki";
+$wgScriptPath = '/wiki';
# Whether to support URLs like index.php/Page_title
-$wgUsePathInfo = ( strpos( php_sapi_name(), "cgi" ) === false );
+$wgUsePathInfo = ( strpos( php_sapi_name(), 'cgi' ) === false );
# ATTN: Old installations used wiki.phtml and redirect.phtml -
# make sure that LocalSettings.php is correctly set!
@@ -44,26 +47,32 @@ $wgLogo = "{$wgUploadPath}/wiki.png";
$wgMathPath = "{$wgUploadPath}/math";
$wgMathDirectory = "{$wgUploadDirectory}/math";
$wgTmpDirectory = "{$wgUploadDirectory}/tmp";
-$wgEmergencyContact = "wikiadmin@" . getenv( "SERVER_NAME" );
-$wgPasswordSender = "Wikipedia Mail <apache@" . getenv( "SERVER_NAME" ) . ">";
+$wgEmergencyContact = 'wikiadmin@' . getenv( 'SERVER_NAME' );
+$wgPasswordSender = 'Wikipedia Mail <apache@' . getenv( 'SERVER_NAME' ) . '>';
# 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
+
+# Database load balancer
+$wgDBservers = false; # e.g. array(0 => "larousse", 1 => "pliny")
+$wgDBloads = false; # e.g. array(0 => 0.6, 1 => 0.4);
# 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";
+$wgDBerrorLog = false; # File to log MySQL errors to
$wgDBminWordLen = 4;
$wgDBtransactions = false; # Set to true if using InnoDB tables
@@ -85,27 +94,31 @@ $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";
+$wgTranslateNumerals = true; # For Hindi and Arabic use local numerals instead
+ # of Western style (0-9) numerals in interface.
+
+$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
@@ -114,9 +127,10 @@ $wgInterwikiExpiry = 10800; # Expiry time for cache of interwiki table
# This will increase load times by 25-60% unless memcached is installed
$wgUseDatabaseMessages = true;
$wgMsgCacheExpiry = 86400;
+$wgSecondaryMessageDB = false; # DB to fall back on if the message isn't in the main DB
-$wgExtraSubtitle = "";
-$wgSiteSupportPage = "";
+$wgExtraSubtitle = '';
+$wgSiteSupportPage = '';
# Miscellaneous configuration settings
#
@@ -124,7 +138,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;
@@ -142,6 +156,11 @@ $wgIgnoreSQLErrors = false;
# all articles in the category)
$wgUseCategoryMagic = true;
+# disable experimental dmoz-like category browsing. Output things like:
+# Encyclopedia > Music > Style of Music > Jazz
+# FIXME: need fixing
+$wgUseCategoryBrowser = false;
+
$wgEnablePersistentLC = false; # Persistent link cache in linkscc table; FAILS on MySQL 3.x
$wgCompressedPersistentLC = true; # use gzcompressed blobs
@@ -158,24 +177,26 @@ $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';
+$wgProxyList = array(); # big list of banned IP addresses, in the keys not the values
+$wgAccountCreationThrottle = 0; # Number of accounts each IP address may create, 0 to disable. Requires memcached
# 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
@@ -203,10 +224,14 @@ $wgCookieExpiration = 2592000;
# don't specify ports here (80 is default)
# $wgSquidServers = array('127.0.0.1');
+# Maximum number of titles to purge in any one client operation
+$wgMaxSquidPurgeTitles = 400;
+
+
# 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;
@@ -220,18 +245,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
@@ -241,6 +255,7 @@ $wgProfileToDatabase = false; # Log sums from profiling into "profiling" table i
$wgProfileSampleRate = 1; # Only profile every n requests when profiling is turned on
$wgDebugProfiling = false; # Detects non-matching wfProfileIn/wfProfileOut calls
$wgDebugFunctionEntry = 0; # Output debug message on every wfProfileIn/wfProfileOut
+$wgDebugSquid = false; # Lots of debugging output from SquidUpdate.php
$wgDisableCounters = false;
$wgDisableTextSearch = false;
@@ -253,11 +268,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.
@@ -267,18 +282,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', 'gif', '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.
@@ -288,6 +303,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?
@@ -318,12 +336,14 @@ $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
# Monobook (default) skin.
-$wgUsePHPTal = true;
+#
+# Currently it does not work on PHP5.
+$wgUsePHPTal = version_compare( phpversion(), "5.0", "lt" );
if( !isset( $wgCommandLineMode ) ) {
$wgCommandLineMode = false;
@@ -332,6 +352,9 @@ if( !isset( $wgCommandLineMode ) ) {
# Show seconds in Recent Changes
$wgRCSeconds = false;
+# Log IP addresses in the recentchanges table
+$wgPutIPinRC = false;
+
# RDF metadata toggles
$wgEnableDublinCoreRdf = false;
$wgEnableCreativeCommonsRdf = false;
@@ -343,6 +366,14 @@ $wgRightsUrl = NULL;
$wgRightsText = NULL;
$wgRightsIcon = NULL;
+# Set this to true if you want detailed copyright information forms on Upload.
+$wgUseCopyrightUpload = false;
+
+# Set this to false if you want to disable checking that detailed
+# copyright information values are not empty.
+$wgCheckCopyrightUpload = true;
+
+
# Set this to false to avoid forcing the first letter of links
# to capitals. WARNING: may break links! This makes links
# COMPLETELY case-sensitive. Links appearing with a capital at
@@ -355,15 +386,22 @@ $wgCapitalLinks = true;
# can be imported, these should be 'trusted'.
$wgImportSources = array();
-# Set this to the number of authors that you want to be credited
-# below an article text. Set it to zero to hide the attribution block.
-# Note that this will require checking the table of old revisions,
-# which can have a significant impact on performance for large wikis.
+# Set this to the number of authors that you want to be credited below an
+# article text. Set it to zero to hide the attribution block, and a
+# negative number (like -1) to show all authors. Note that this will
+# require 2-3 extra database hits, which can have a not insignificant
+# impact on performance for large wikis.
$wgMaxCredits = 0;
+# If there are more than $wgMaxCredits authors, show $wgMaxCredits of them.
+# Otherwise, link to a separate credits page.
+$wgShowCreditsIfMax = true;
+
# Text matching this regular expression will be recognised as spam
# See http://en.wikipedia.org/wiki/Regular_expression
$wgSpamRegex = false;
+# Similarly if this function returns true
+$wgFilterCallback = false;
# Go button goes straight to the edit screen if the article doesn't exist
$wgGoToEdit = false;
@@ -388,8 +426,28 @@ $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();
+
+# Allow user Javascript page?
+$wgAllowUserJs = true;
+
+# Allow user Cascading Style Sheets (CSS)?
+$wgAllowUserCss = true;
+
+# Filter for Special:Randompage. Part of a WHERE clause
+$wgExtraRandompageSQL = false;
+
+# Allow the "info" action, very inefficient at the moment
+$wgAllowPageInfo = false;
+
+# Maximum indent level of toc.
+# $wgMaxTocLevel = 999;
+
+}
?>
diff --git a/includes/DifferenceEngine.php b/includes/DifferenceEngine.php
index 4ba5b7713d8d..c6e7225a65e0 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( "<hr /><h2>{$this->mNewtitle}</h2>\n" );
$wgOut->addWikiText( $this->mNewtext );
+
+ wfProfileOut( $fname );
}
function showDiff( $otext, $ntext, $otitle, $ntitle )
@@ -112,9 +118,10 @@ cellpadding='0' cellspacing='4px' class='diff'><tr>
#
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'><tr>
$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'><tr>
$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 );
}
@@ -1002,7 +1010,7 @@ class DiffFormatter
*
*/
-define('NBSP', "\xA0"); // iso-8859-x non-breaking space.
+define('NBSP', '&#160;'); // iso-8859-x non-breaking space.
class _HWLDF_WordAccumulator {
function _HWLDF_WordAccumulator () {
@@ -1015,7 +1023,7 @@ class _HWLDF_WordAccumulator {
function _flushGroup ($new_tag) {
if ($this->_group !== '') {
if ($this->_tag == 'mark')
- $this->_line .= "<font color=\"red\">$this->_group</font>";
+ $this->_line .= '<span class="diffchange">'.$this->_group.'</span>';
else
$this->_line .= $this->_group;
}
@@ -1116,8 +1124,8 @@ class TableDiffFormatter extends DiffFormatter
$l1 = wfMsg( "lineno", $xbeg );
$l2 = wfMsg( "lineno", $ybeg );
- $r = "<tr><td colspan='2' align='left'><strong>{$l1}</strong></td>\n" .
- "<td colspan='2' align='left'><strong>{$l2}</strong></td></tr>\n";
+ $r = '<tr><td colspan="2" align="left"><strong>'.$l1."</strong></td>\n" .
+ '<td colspan="2" align="left"><strong>'.$l2."</strong></td></tr>\n";
return $r;
}
@@ -1133,27 +1141,27 @@ class TableDiffFormatter extends DiffFormatter
}
function addedLine( $line ) {
- return "<td>+</td><td class='diff-addedline'>" .
- "<small>{$line}</small></td>";
+ return '<td>+</td><td class="diff-addedline">' .
+ $line.'</td>';
}
function deletedLine( $line ) {
- return "<td>-</td><td class='diff-deletedline'>" .
- "<small>{$line}</small></td>";
+ return '<td>-</td><td class="diff-deletedline">' .
+ $line.'</td>';
}
function emptyLine() {
- return "<td colspan='2'>&nbsp;</td>";
+ return '<td colspan="2">&nbsp;</td>';
}
function contextLine( $line ) {
- return "<td> </td><td class='diff-context'><small>{$line}</small></td>";
+ return '<td> </td><td class="diff-context">'.$line.'</td>';
}
function _added($lines) {
global $wgOut;
foreach ($lines as $line) {
- $wgOut->addHTML( "<tr>" . $this->emptyLine() .
+ $wgOut->addHTML( '<tr>' . $this->emptyLine() .
$this->addedLine( $line ) . "</tr>\n" );
}
}
@@ -1161,7 +1169,7 @@ class TableDiffFormatter extends DiffFormatter
function _deleted($lines) {
global $wgOut;
foreach ($lines as $line) {
- $wgOut->addHTML( "<tr>" . $this->deletedLine( $line ) .
+ $wgOut->addHTML( '<tr>' . $this->deletedLine( $line ) .
$this->emptyLine() . "</tr>\n" );
}
}
@@ -1169,7 +1177,7 @@ class TableDiffFormatter extends DiffFormatter
function _context( $lines ) {
global $wgOut;
foreach ($lines as $line) {
- $wgOut->addHTML( "<tr>" . $this->contextLine( $line ) .
+ $wgOut->addHTML( '<tr>' . $this->contextLine( $line ) .
$this->contextLine( $line ) . "</tr>\n" );
}
}
@@ -1182,7 +1190,7 @@ class TableDiffFormatter extends DiffFormatter
while ( $line = array_shift( $del ) ) {
$aline = array_shift( $add );
- $wgOut->addHTML( "<tr>" . $this->deletedLine( $line ) .
+ $wgOut->addHTML( '<tr>' . $this->deletedLine( $line ) .
$this->addedLine( $aline ) . "</tr>\n" );
}
$this->_added( $add ); # If any leftovers
diff --git a/includes/EditPage.php b/includes/EditPage.php
index d9959ae39f97..04ff9c19156c 100644
--- a/includes/EditPage.php
+++ b/includes/EditPage.php
@@ -70,7 +70,7 @@ class EditPage {
$this->summary = trim( $request->getText( "wpSummary" ) );
$this->edittime = $request->getVal( 'wpEdittime' );
- if( !preg_match( '/^\d{14}$/', $this->edittime ) ) $this->edittime = "";
+ if( !preg_match( '/^\d{14}$/', $this->edittime )) $this->edittime = "";
$this->preview = $request->getCheck( 'wpPreview' );
$this->save = $request->wasPosted() && !$this->preview;
@@ -108,7 +108,7 @@ class EditPage {
global $wgLang, $wgParser, $wgTitle;
global $wgAllowAnonymousMinor;
global $wgWhitelistEdit;
- global $wgSpamRegex;
+ global $wgSpamRegex, $wgFilterCallback;
$sk = $wgUser->getSkin();
$isConflict = false;
@@ -131,9 +131,12 @@ class EditPage {
if ( "save" == $formtype ) {
# Check for spam
if ( $wgSpamRegex && preg_match( $wgSpamRegex, $this->textbox1 ) ) {
- sleep(10);
- $wgOut->redirect( $this->mTitle->getFullURL() );
- return;
+ $this->spamPage();
+ return;
+ }
+ if ( $wgFilterCallback && $wgFilterCallback( $this->mTitle, $this->textbox1, $this->section ) ) {
+ # Error messages or other handling should be performed by the filter function
+ return;
}
if ( $wgUser->isBlocked() ) {
$this->blockedIPpage();
@@ -200,13 +203,19 @@ class EditPage {
$hasmatch = preg_match( "/^ *([=]{1,6})(.*?)(\\1) *\\n/i", $this->textbox1, $matches );
# we can't deal with anchors, includes, html etc in the header for now,
# headline would need to be parsed to improve this
- if($hasmatch and strlen($matches[2]) > 0 and !preg_match( "/[\\['{<>]/", $matches[2])) {
+ #if($hasmatch and strlen($matches[2]) > 0 and !preg_match( "/[\\['{<>]/", $matches[2])) {
+ if($hasmatch and strlen($matches[2]) > 0) {
global $wgInputEncoding;
$headline = do_html_entity_decode( $matches[2], ENT_COMPAT, $wgInputEncoding );
- # strip out HTML, will be useful when
- # $headline = preg_replace( "/<.*?" . ">/","",$headline );
+ # strip out HTML
+ $headline = preg_replace( "/<.*?" . ">/","",$headline );
$headline = trim( $headline );
- $sectionanchor = '#'.preg_replace("/[ \\?&\\/<>\\(\\)\\[\\]=,+']+/", '_', urlencode( $headline ) );
+ $sectionanchor = '#'.urlencode( str_replace(' ', '_', $headline ) );
+ $replacearray = array(
+ '%3A' => ':',
+ '%' => '.'
+ );
+ $sectionanchor = str_replace(array_keys($replacearray),array_values($replacearray),$sectionanchor);
}
}
@@ -301,12 +310,12 @@ class EditPage {
$save = wfMsg( "savearticle" );
$prev = wfMsg( "showpreview" );
- $cancel = $sk->makeKnownLink( $this->mTitle->getPrefixedURL(),
+ $cancel = $sk->makeKnownLink( $this->mTitle->getPrefixedText(),
wfMsg( "cancel" ) );
- $edithelpurl = $sk->makeUrl( wfMsg( "edithelppage" ));
- $edithelp = '<a onclick="window.open('.
- "'$edithelpurl', 'helpwindow', 'width=610,height=400,left=10,top=10'".'); return false;" href="'.$edithelpurl.'">'.
- wfMsg( "edithelp" ).'</a>';
+ $edithelpurl = $sk->makeUrl( wfMsg( 'edithelppage' ));
+ $edithelp = '<a target="helpwindow" href="'.$edithelpurl.'">'.
+ htmlspecialchars( wfMsg( 'edithelp' ) ).'</a> '.
+ htmlspecialchars( wfMsg( 'newwindow' ) );
$copywarn = wfMsg( "copyrightwarning", $sk->makeKnownLink(
wfMsg( "copyrightpage" ) ) );
@@ -348,13 +357,12 @@ class EditPage {
$checkboxhtml = $minoredithtml . $watchhtml . "<br />";
if ( "preview" == $formtype) {
- $previewhead="<h2>" . wfMsg( "preview" ) . "</h2>\n<p><large><center><font color=\"#cc0000\">" .
- wfMsg( "note" ) . wfMsg( "previewnote" ) . "</font></center></large></p>\n";
+ $previewhead="<h2>" . wfMsg( "preview" ) . "</h2>\n<p><center><font color=\"#cc0000\">" .
+ wfMsg( "note" ) . wfMsg( "previewnote" ) . "</font></center></p>\n";
if ( $isConflict ) {
$previewhead.="<h2>" . wfMsg( "previewconflict" ) .
"</h2>\n";
}
- $previewtext = wfUnescapeHTML( $this->textbox1 );
$parserOptions = ParserOptions::newFromUser( $wgUser );
$parserOptions->setUseCategoryMagic( false );
@@ -371,7 +379,7 @@ class EditPage {
$parserOutput = $wgParser->parse( $previewtext , $wgTitle, $parserOptions );
$wgOut->addHTML( $parserOutput->mText );
} else {
- $parserOutput = $wgParser->parse( $this->mArticle->preSaveTransform( $previewtext ) ."\n\n",
+ $parserOutput = $wgParser->parse( $this->mArticle->preSaveTransform( $this->textbox1 ) ."\n\n",
$wgTitle, $parserOptions );
$previewHTML = $parserOutput->mText;
@@ -379,6 +387,8 @@ class EditPage {
$wgOut->addHTML($previewhead);
$wgOut->addHTML($previewHTML);
}
+ $wgOut->addCategoryLinks($parserOutput->getCategoryLinks());
+ $wgOut->addLanguageLinks($parserOutput->getLanguageLinks());
$wgOut->addHTML( "<br style=\"clear:both;\" />\n" );
}
}
@@ -410,12 +420,12 @@ htmlspecialchars( $wgLang->recodeForEdit( $this->textbox1 ) ) .
</textarea>
<br />{$editsummary}
{$checkboxhtml}
-<input tabindex='5' type='submit' value=\"{$save}\" name=\"wpSave\" accesskey=\"".wfMsg('accesskey-save')."\"".
+<input tabindex='5' id='wpSave' type='submit' value=\"{$save}\" name=\"wpSave\" accesskey=\"".wfMsg('accesskey-save')."\"".
" title=\"".wfMsg('tooltip-save')."\"/>
-<input tabindex='6' type='submit' value=\"{$prev}\" name=\"wpPreview\" accesskey=\"".wfMsg('accesskey-preview')."\"".
+<input tabindex='6' id='wpPreview' type='submit' value=\"{$prev}\" name=\"wpPreview\" accesskey=\"".wfMsg('accesskey-preview')."\"".
" title=\"".wfMsg('tooltip-preview')."\"/>
<em>{$cancel}</em> | <em>{$edithelp}</em>
-<br /><br />{$copywarn}
+<br /><div id=\"editpage-copywarn\">{$copywarn}</div>
<input type='hidden' value=\"" . htmlspecialchars( $this->section ) . "\" name=\"wpSection\" />
<input type='hidden' value=\"{$this->edittime}\" name=\"wpEdittime\" />\n" );
@@ -425,7 +435,7 @@ htmlspecialchars( $wgLang->recodeForEdit( $this->textbox1 ) ) .
wfMsg( "yourtext" ), wfMsg( "storedversion" ) );
$wgOut->addHTML( "<h2>" . wfMsg( "yourtext" ) . "</h2>
-<textarea tabindex=6 name=\"wpTextbox2\" rows='{$rows}' cols='{$cols}' wrap='virtual'>"
+<textarea tabindex=6 id='wpTextbox2' name=\"wpTextbox2\" rows='{$rows}' cols='{$cols}' wrap='virtual'>"
. htmlspecialchars( $wgLang->recodeForEdit( $this->textbox2 ) ) .
"
</textarea>" );
@@ -450,7 +460,11 @@ htmlspecialchars( $wgLang->recodeForEdit( $this->textbox1 ) ) .
$reason = $wgUser->blockedFor();
$ip = $wgIP;
- $name = User::whoIs( $id );
+ if ( is_numeric( $id ) ) {
+ $name = User::whoIs( $id );
+ } else {
+ $name = $id;
+ }
$link = "[[" . $wgLang->getNsText( Namespace::getUser() ) .
":{$name}|{$name}]]";
@@ -472,6 +486,17 @@ htmlspecialchars( $wgLang->recodeForEdit( $this->textbox1 ) ) .
$wgOut->returnToMain( false );
}
+ function spamPage()
+ {
+ global $wgOut;
+ $wgOut->setPageTitle( wfMsg( "spamprotectiontitle" ) );
+ $wgOut->setRobotpolicy( "noindex,nofollow" );
+ $wgOut->setArticleRelated( false );
+
+ $wgOut->addWikiText( wfMsg( "spamprotectiontext" ) );
+ $wgOut->returnToMain( false );
+ }
+
# Forks processes to scan the originating IP for an open proxy server
# MemCached can be used to skip IPs that have already been scanned
function proxyCheck()
@@ -516,6 +541,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);
@@ -524,10 +550,13 @@ htmlspecialchars( $wgLang->recodeForEdit( $this->textbox1 ) ) .
$yourtext = $obj->cur_text;
$ns = $this->mTitle->getNamespace();
$title = wfStrencode( $this->mTitle->getDBkey() );
- $res = wfQuery("SELECT old_text 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);
- if(wfMerge($obj->old_text, $text, $yourtext, $result)){
+ $oldText = Article::getRevisionText( $obj );
+
+ if(wfMerge($oldText, $text, $yourtext, $result)){
$text = $result;
return true;
} else {
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 "</feed>";
}
- 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/FulltextStoplist.php b/includes/FulltextStoplist.php
index 12c9d6bcb4e3..703fee80975a 100644
--- a/includes/FulltextStoplist.php
+++ b/includes/FulltextStoplist.php
@@ -4,6 +4,7 @@
# source file "myisam/ft_static.c" in the MySQL source distribution.
# If you use a new version of MySQL, this might have to be changed.
+global $wgFulltextStoplist;
/* private */ $wgFulltextStoplist = array(
"a",
diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php
index 8989b6078d75..a37e1dc20fe0 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 ) );
}
}
@@ -40,22 +40,22 @@ if( !function_exists('is_a') ) {
# Exists in PHP 4.2.0+
function is_a( $object, $class_name ) {
return
- (strcasecmp( get_class( $object, $class_name ) == 0) ||
- is_subclass_of( $object, $class_name ) );
+ (strcasecmp( get_class( $object ), $class_name ) == 0) ||
+ is_subclass_of( $object, $class_name );
}
}
# 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,27 +143,28 @@ 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;
}
function wfUtf8Sequence($codepoint) {
- if($codepoint < 0x80) return chr($codepoint);
- if($codepoint < 0x800) return chr($codepoint >> 6 & 0x3f | 0xc0) .
- chr($codepoint & 0x3f | 0x80);
- if($codepoint < 0x10000) return chr($codepoint >> 12 & 0x0f | 0xe0) .
- chr($codepoint >> 6 & 0x3f | 0x80) .
- chr($codepoint & 0x3f | 0x80);
+ if($codepoint < 0x80) return chr($codepoint);
+ if($codepoint < 0x800) return chr($codepoint >> 6 & 0x3f | 0xc0) .
+ chr($codepoint & 0x3f | 0x80);
+ if($codepoint < 0x10000) return chr($codepoint >> 12 & 0x0f | 0xe0) .
+ chr($codepoint >> 6 & 0x3f | 0x80) .
+ chr($codepoint & 0x3f | 0x80);
if($codepoint < 0x100000) return chr($codepoint >> 18 & 0x07 | 0xf0) . # Double-check this
- chr($codepoint >> 12 & 0x3f | 0x80) .
- chr($codepoint >> 6 & 0x3f | 0x80) .
- chr($codepoint & 0x3f | 0x80);
+ chr($codepoint >> 12 & 0x3f | 0x80) .
+ chr($codepoint >> 6 & 0x3f | 0x80) .
+ chr($codepoint & 0x3f | 0x80);
# Doesn't yet handle outside the BMP
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;
@@ -226,6 +227,15 @@ function wfDebug( $text, $logonly = false )
}
}
+# Log for database errors
+function wfLogDBError( $text ) {
+ global $wgDBerrorLog;
+ if ( $wgDBerrorLog ) {
+ $text = date("D M j G:i:s T Y") . "\t$text";
+ error_log( $text, 3, $wgDBerrorLog );
+ }
+}
+
function logProfilingData()
{
global $wgRequestTime, $wgDebugLogFile;
@@ -235,23 +245,25 @@ function logProfilingData()
list( $usec, $sec ) = explode( " ", $wgRequestTime );
$start = (float)$sec + (float)$usec;
$elapsed = $now - $start;
- if ( "" != $wgDebugLogFile ) {
+ 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 ) );
- error_log( $log . $prof, 3, $wgDebugLogFile );
+ if ( '' != $wgDebugLogFile ) {
+ error_log( $log . $prof, 3, $wgDebugLogFile );
+ }
}
}
@@ -288,7 +300,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 );
@@ -309,28 +321,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 )
@@ -353,30 +365,48 @@ 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 = "" ) {
- $msg .= "\n<p>Backtrace:</p>\n<ul>\n";
- $backtrace = debug_backtrace();
- foreach( $backtrace as $call ) {
- $f = explode( DIRECTORY_SEPARATOR, $call['file'] );
- $file = $f[count($f)-1];
- $msg .= "<li>" . $file . " line " . $call['line'] . ", in ";
- if( !empty( $call['class'] ) ) $msg .= $call['class'] . "::";
- $msg .= $call['function'] . "()</li>\n";
- }
- die( $msg );
+function wfDebugDieBacktrace( $msg = '' ) {
+ global $wgCommandLineMode;
+
+ if ( function_exists( 'debug_backtrace' ) ) {
+ if ( $wgCommandLineMode ) {
+ $msg .= "\nBacktrace:\n";
+ } else {
+ $msg .= "\n<p>Backtrace:</p>\n<ul>\n";
+ }
+ $backtrace = debug_backtrace();
+ foreach( $backtrace as $call ) {
+ $f = explode( DIRECTORY_SEPARATOR, $call['file'] );
+ $file = $f[count($f)-1];
+ if ( $wgCommandLineMode ) {
+ $msg .= "$file line {$call['line']}, in ";
+ } else {
+ $msg .= '<li>' . $file . " line " . $call['line'] . ', in ';
+ }
+ if( !empty( $call['class'] ) ) $msg .= $call['class'] . '::';
+ $msg .= $call['function'] . "()";
+
+ if ( $wgCommandLineMode ) {
+ $msg .= "\n";
+ } else {
+ $msg .= "</li>\n";
+ }
+ }
+ }
+ die( $msg );
}
function wfNumberOfArticles()
@@ -392,9 +422,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 {
@@ -408,24 +438,24 @@ function wfNumberOfArticles()
function wfEscapeHTML( $in )
{
return str_replace(
- array( "&", "\"", ">", "<" ),
- array( "&amp;", "&quot;", "&gt;", "&lt;" ),
+ array( '&', '"', '>', '<' ),
+ array( '&amp;', '&quot;', '&gt;', '&lt;' ),
$in );
}
function wfEscapeHTMLTagsOnly( $in ) {
return str_replace(
- array( "\"", ">", "<" ),
- array( "&quot;", "&gt;", "&lt;" ),
+ array( '"', '>', '<' ),
+ array( '&quot;', '&gt;', '&lt;' ),
$in );
}
function wfUnescapeHTML( $in )
{
- $in = str_replace( "&lt;", "<", $in );
- $in = str_replace( "&gt;", ">", $in );
- $in = str_replace( "&quot;", "\"", $in );
- $in = str_replace( "&amp;", "&", $in );
+ $in = str_replace( '&lt;', '<', $in );
+ $in = str_replace( '&gt;', '>', $in );
+ $in = str_replace( '&quot;', '"', $in );
+ $in = str_replace( '&amp;', '&', $in );
return $in;
}
@@ -435,21 +465,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;
@@ -460,9 +490,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 );
@@ -474,9 +504,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 );
@@ -486,9 +516,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 ;
@@ -496,27 +526,27 @@ 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 );
if ( 0 == wfNumRows( $res ) ) {
- $common =
+ $common =
Namespace::getImage() . ",'" .
wfStrencode( $name ) . "','" .
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 );
@@ -531,7 +561,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 ) .
@@ -555,10 +585,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 );
}
@@ -568,21 +598,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();
@@ -590,8 +620,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 = "<a href=\"" . wfLocalUrlE( $link, $q ) . "\">{$prev}</a>";
+ if ( '' != $query ) { $q .= "&{$query}"; }
+ $plink = '<a href="' . wfLocalUrlE( $link, $q ) . "\">{$prev}</a>";
} else { $plink = $prev; }
$no = $offset + $limit;
@@ -601,26 +631,26 @@ function wfViewPrevNext( $offset, $limit, $link, $query = "", $atend = false )
if ( $atend ) {
$nlink = $next;
} else {
- $nlink = "<a href=\"" . wfLocalUrlE( $link, $q ) . "\">{$next}</a>";
+ $nlink = '<a href="' . wfLocalUrlE( $link, $q ) . "\">{$next}</a>";
}
- $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 = "<a href=\"" . wfLocalUrlE( $link, $q ) . "\">{$fmtLimit}</a>";
+ $s = '<a href="' . wfLocalUrlE( $link, $q ) . "\">{$fmtLimit}</a>";
return $s;
}
@@ -630,9 +660,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;
}
@@ -641,12 +671,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;
@@ -668,13 +698,13 @@ function wfCheckLimits( $deflimit = 50, $optionname = "rclimit" ) {
function wfEscapeWikiText( $text )
{
$text = str_replace(
- array( '[', '|', "'", 'ISBN ' , '://' , "\n=" ),
+ array( '[', '|', "'", 'ISBN ' , '://' , "\n=" ),
array( '&#91;', '&#124;', '&#39;', 'ISBN&#32;', '&#58;//' , "\n&#61;" ),
htmlspecialchars($text) );
return $text;
}
-function wfQuotedPrintable( $string, $charset = "" )
+function wfQuotedPrintable( $string, $charset = '' )
{
# Probably incomplete; see RFC 2045
if( empty( $charset ) ) {
@@ -682,19 +712,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];
}
@@ -714,11 +744,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.
@@ -730,11 +759,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}";
}
@@ -752,15 +781,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 );
@@ -782,21 +811,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 ) . " " .
- wfEscapeShellArg( $yourtextName );
- $handle = popen( $cmd, "r" );
+ $cmd = wfEscapeShellArg( $wgDiff3 ) . ' -a --overlap-only ' .
+ wfEscapeShellArg( $mytextName ) . ' ' .
+ wfEscapeShellArg( $oldtextName ) . ' ' .
+ wfEscapeShellArg( $yourtextName );
+ $handle = popen( $cmd, 'r' );
if( fgets( $handle ) ){
$conflict = true;
@@ -806,10 +835,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 ) {
@@ -843,13 +872,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 );
@@ -857,11 +886,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 ) ) {
@@ -933,4 +962,42 @@ 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;
+ }
+}
+
+
+# Ideally we'd be using actual time fields in the db
+function wfTimestamp2Unix( $ts ) {
+ return gmmktime( ( (int)substr( $ts, 8, 2) ),
+ (int)substr( $ts, 10, 2 ), (int)substr( $ts, 12, 2 ),
+ (int)substr( $ts, 4, 2 ), (int)substr( $ts, 6, 2 ),
+ (int)substr( $ts, 0, 4 ) );
+}
+
+function wfUnix2Timestamp( $unixtime ) {
+ return gmdate( "YmdHis", $unixtime );
+}
+
+function wfTimestampNow() {
+ # return NOW
+ return gmdate( "YmdHis" );
+}
+
+# Sorting hack for MySQL 3, which doesn't use index sorts for DESC
+function wfInvertTimestamp( $ts ) {
+ return strtr(
+ $ts,
+ "0123456789",
+ "9876543210"
+ );
+}
+
+
?>
diff --git a/includes/HistoryBlob.php b/includes/HistoryBlob.php
new file mode 100644
index 000000000000..cf170b759531
--- /dev/null
+++ b/includes/HistoryBlob.php
@@ -0,0 +1,64 @@
+<?php
+
+# Pure virtual parent
+class HistoryBlob
+{
+ function setMeta() {}
+ function getMeta() {}
+ function addItem() {}
+ function getItem() {}
+}
+
+# The real object
+class ConcatenatedGzipHistoryBlob
+{
+ /* private */ var $mVersion = 0, $mCompressed = false, $mItems = array();
+
+ function HistoryBlob() {
+ if ( !function_exists( 'gzdeflate' ) ) {
+ die( "Need zlib support to read or write this kind of history object (ConcatenatedGzipHistoryBlob)\n" );
+ }
+ }
+
+ function setMeta( $metaData ) {
+ $this->uncompress();
+ $this->mItems['meta'] = $metaData;
+ }
+
+ function getMeta() {
+ $this->uncompress();
+ return $this->mItems['meta'];
+ }
+
+ function addItem( $text ) {
+ $this->uncompress();
+ $this->mItems[md5($text)] = $text;
+ }
+
+ function getItem( $hash ) {
+ $this->compress();
+ return $this->mItems[$hash];
+ }
+
+ function compress() {
+ if ( !$this->mCompressed ) {
+ $this->mItems = gzdeflate( serialize( $this->mItems ) );
+ $this->mCompressed = true;
+ }
+ }
+
+ function uncompress() {
+ if ( $this->mCompressed ) {
+ $this->mItems = unserialize( gzinflate( $this->mItems ) );
+ }
+ }
+
+ function __sleep() {
+ compress();
+ }
+
+ function __wakeup() {
+ uncompress();
+ }
+}
+?>
diff --git a/includes/Image.php b/includes/Image.php
index d0293a5443c7..27eeb9d72e3f 100644
--- a/includes/Image.php
+++ b/includes/Image.php
@@ -35,16 +35,17 @@ class Image
if ( $this->fileExists = file_exists( $this->imagePath ) ) // Sic!, "=" is intended
{
- $gis = getimagesize( $this->imagePath );
- $this->width = $gis[0];
- $this->height = $gis[1];
- $this->type = $gis[2];
- $this->attr = $gis[3];
- if ( isset( $gis["bits"] ) )
- {
- $this->bits = $gis["bits"];
- } else {
- $this->bits = 0;
+ @$gis = getimagesize( $this->imagePath );
+ if( $gis !== false ) {
+ $this->width = $gis[0];
+ $this->height = $gis[1];
+ $this->type = $gis[2];
+ $this->attr = $gis[3];
+ if ( isset( $gis["bits"] ) ) {
+ $this->bits = $gis["bits"];
+ } else {
+ $this->bits = 0;
+ }
}
}
$this->historyLine = 0;
diff --git a/includes/ImagePage.php b/includes/ImagePage.php
index 164abb5a370f..cc49ada5eb6a 100644
--- a/includes/ImagePage.php
+++ b/includes/ImagePage.php
@@ -67,7 +67,7 @@ class ImagePage extends Article {
$line = $this->img->nextHistoryLine();
$s .= $sk->imageHistoryLine( true, $line->img_timestamp,
- $this->mTitle->getText(), $line->img_user,
+ $this->mTitle->getDBkey(), $line->img_user,
$line->img_user_text, $line->img_size, $line->img_description );
while ( $line = $this->img->nextHistoryLine() ) {
@@ -139,9 +139,9 @@ class ImagePage extends Article {
}
if ( !is_null( $image ) ) {
- $q = "&image={$image}";
+ $q = "&image=" . urlencode( $image );
} else if ( !is_null( $oldimage ) ) {
- $q = "&oldimage={$oldimage}";
+ $q = "&oldimage=" . urlencode( $oldimage );
} else {
$q = "";
}
@@ -265,6 +265,10 @@ class ImagePage extends Article {
$wgOut->readOnlyPage();
return;
}
+ if ( ! $this->mTitle->userCanEdit() ) {
+ $wgOut->sysopRequired();
+ return;
+ }
$name = substr( $oldimage, 15 );
$dest = wfImageDir( $name );
diff --git a/includes/LinkCache.php b/includes/LinkCache.php
index 8f41cccf7e51..cd0c0879e4e8 100644
--- a/includes/LinkCache.php
+++ b/includes/LinkCache.php
@@ -171,6 +171,7 @@ class LinkCache {
if ( $wgEnablePersistentLC ) {
if( $this->fillFromLinkscc( $id ) ){
+ wfProfileOut( $fname );
return;
}
}
@@ -301,35 +302,61 @@ 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 ){
- $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);
+ global $wgEnablePersistentLC, $wgIsMySQL;
+ if ( $wgEnablePersistentLC ) {
+ $pid = intval( $pid );
+ 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 ){
- $title = wfStrencode( $title );
- wfQuery("DELETE linkscc FROM linkscc,brokenlinks ".
- "WHERE lcc_pageid=bl_from AND bl_to='{$title}'", DB_WRITE);
+ global $wgEnablePersistentLC,$wgIsMySQL;
+ if ( $wgEnablePersistentLC ) {
+ $title = wfStrencode( $title );
+ 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);
+ }
+ }
}
# $pid is a page id
/* static */ function linksccClearPage( $pid ){
- $pid = intval( $pid );
- wfQuery("DELETE FROM linkscc WHERE lcc_pageid='{$pid}'", DB_WRITE);
+ global $wgEnablePersistentLC;
+ if ( $wgEnablePersistentLC ) {
+ $pid = intval( $pid );
+ wfQuery("DELETE FROM linkscc WHERE lcc_pageid='{$pid}'", DB_WRITE);
+ }
}
}
?>
diff --git a/includes/LinksUpdate.php b/includes/LinksUpdate.php
index 104e44247152..da4f47cf5c30 100644
--- a/includes/LinksUpdate.php
+++ b/includes/LinksUpdate.php
@@ -54,7 +54,10 @@ class LinksUpdate {
# Do the insertion
$sql = "";
if ( 0 != count( $add ) ) {
- $sql = "INSERT INTO links (l_from,l_to) VALUES ";
+ # The link cache was constructed without FOR UPDATE, so there may be collisions
+ # Ignoring for now, I'm not sure if that causes problems or not, but I'm fairly
+ # sure it's better than without IGNORE
+ $sql = "INSERT IGNORE INTO links (l_from,l_to) VALUES ";
$first = true;
foreach( $add as $lt => $lid ) {
@@ -90,7 +93,7 @@ class LinksUpdate {
# Do additions
$sql = "";
if ( 0 != count ( $add ) ) {
- $sql = "INSERT INTO brokenlinks (bl_from,bl_to) VALUES ";
+ $sql = "INSERT IGNORE INTO brokenlinks (bl_from,bl_to) VALUES ";
$first = true;
foreach( $add as $blt ) {
$blt = wfStrencode( $blt );
@@ -116,7 +119,7 @@ class LinksUpdate {
$sql = "";
$image = Namespace::getImage();
if ( 0 != count ( $add ) ) {
- $sql = "INSERT INTO imagelinks (il_from,il_to) VALUES ";
+ $sql = "INSERT IGNORE INTO imagelinks (il_from,il_to) VALUES ";
$first = true;
foreach( $add as $iname => $val ) {
# FIXME: Change all this to avoid unnecessary duplication
@@ -145,7 +148,7 @@ class LinksUpdate {
# Do the insertion
$sql = "";
if ( 0 != count ( $add ) ) {
- $sql = "INSERT INTO categorylinks (cl_from,cl_to,cl_sortkey) VALUES ";
+ $sql = "INSERT IGNORE INTO categorylinks (cl_from,cl_to,cl_sortkey) VALUES ";
$first = true;
foreach( $add as $cname => $sortkey ) {
# FIXME: Change all this to avoid unnecessary duplication
@@ -192,7 +195,7 @@ class LinksUpdate {
$a = $wgLinkCache->getGoodLinks();
$sql = "";
if ( 0 != count( $a ) ) {
- $sql = "INSERT INTO links (l_from,l_to) VALUES ";
+ $sql = "INSERT IGNORE INTO links (l_from,l_to) VALUES ";
$first = true;
foreach( $a as $lt => $lid ) {
if ( ! $first ) { $sql .= ","; }
@@ -209,7 +212,7 @@ class LinksUpdate {
$a = $wgLinkCache->getBadLinks();
$sql = "";
if ( 0 != count ( $a ) ) {
- $sql = "INSERT INTO brokenlinks (bl_from,bl_to) VALUES ";
+ $sql = "INSERT IGNORE INTO brokenlinks (bl_from,bl_to) VALUES ";
$first = true;
foreach( $a as $blt ) {
$blt = wfStrencode( $blt );
@@ -227,7 +230,7 @@ class LinksUpdate {
$a = $wgLinkCache->getImageLinks();
$sql = "";
if ( 0 != count ( $a ) ) {
- $sql = "INSERT INTO imagelinks (il_from,il_to) VALUES ";
+ $sql = "INSERT IGNORE INTO imagelinks (il_from,il_to) VALUES ";
$first = true;
foreach( $a as $iname => $val ) {
$iname = wfStrencode( $iname );
@@ -249,7 +252,7 @@ class LinksUpdate {
# Do the insertion
$sql = "";
if ( 0 != count ( $add ) ) {
- $sql = "INSERT INTO categorylinks (cl_from,cl_to,cl_sortkey) VALUES ";
+ $sql = "INSERT IGNORE INTO categorylinks (cl_from,cl_to,cl_sortkey) VALUES ";
$first = true;
foreach( $add as $cname => $sortkey ) {
# FIXME: Change all this to avoid unnecessary duplication
@@ -284,7 +287,9 @@ class LinksUpdate {
$res = wfQuery( $sql, DB_READ, $fname );
if ( 0 == wfNumRows( $res ) ) { return; }
- $sql = "INSERT INTO links (l_from,l_to) VALUES ";
+ # Ignore errors. If a link existed in both the brokenlinks table and the links
+ # table, that's an error which can be fixed at this stage by simply ignoring collisions
+ $sql = "INSERT IGNORE INTO links (l_from,l_to) VALUES ";
$now = wfTimestampNow();
$sql2 = "UPDATE cur SET cur_touched='{$now}' WHERE cur_id IN (";
$first = true;
diff --git a/includes/LoadBalancer.php b/includes/LoadBalancer.php
index 3df2ac58c604..94f4f55cff0d 100644
--- a/includes/LoadBalancer.php
+++ b/includes/LoadBalancer.php
@@ -1,10 +1,27 @@
<?php
# Database load balancing object
+# Valid database indexes
+# Operation-based indexes
+define( "DB_READ", -1 ); # Read from the slave (or only server)
+define( "DB_WRITE", -2 ); # Write to master (or only server)
+define( "DB_LAST", -3 ); # Whatever database was used last
+
+# Task-based indexes
+# ***NOT USED YET, EXPERIMENTAL***
+# These may be defined in $wgDBservers. If they aren't, the default reader or writer will be used
+# Even numbers are always readers, odd numbers are writers
+define( "DB_TASK_FIRST", 1000 ); # First in list
+define( "DB_SEARCH_R", 1000 ); # Search read
+define( "DB_SEARCH_W", 1001 ); # Search write
+define( "DB_ASKSQL_R", 1002 ); # Special:Asksql read
+define( "DB_WATCHLIST_R", 1004 ); # Watchlist read
+define( "DB_TASK_LAST", 1004) ; # Last in list
+
class LoadBalancer {
/* private */ var $mServers, $mConnections, $mLoads;
/* private */ var $mUser, $mPassword, $mDbName, $mFailFunction;
- /* private */ var $mForce, $mReadIndex;
+ /* private */ var $mForce, $mReadIndex, $mLastConn;
function LoadBalancer()
{
@@ -17,6 +34,7 @@ class LoadBalancer {
$this->mFailFunction = false;
$this->mReadIndex = -1;
$this->mForce = -1;
+ $this->mLastConn = false;
}
function newFromParams( $servers, $loads, $user, $password, $dbName, $failFunction = false )
@@ -38,6 +56,7 @@ class LoadBalancer {
$this->mWriteIndex = -1;
$this->mForce = -1;
$this->mConnections = array();
+ $this->mLastConn = false;
wfSeedRandom();
}
@@ -53,7 +72,8 @@ class LoadBalancer {
foreach ( $weights as $w ) {
$sum += $w;
}
- $rand = mt_rand() / RAND_MAX * $sum;
+ $max = mt_getrandmax();
+ $rand = mt_rand(0, $max) / $max * $sum;
$sum = 0;
foreach ( $weights as $i => $w ) {
@@ -77,8 +97,10 @@ class LoadBalancer {
# don't work
$loads = $this->mLoads;
do {
- $i = pickRandom( $loads );
+ $i = $this->pickRandom( $loads );
if ( $i !== false ) {
+ wfDebug( "Using reader #$i: {$this->mServers[$i]}\n" );
+
$conn =& $this->getConnection( $i );
if ( !$conn->isOpen() ) {
unset( $loads[$i] );
@@ -96,21 +118,49 @@ class LoadBalancer {
}
return $conn;
}
-
+
function &getConnection( $i, $fail = false )
{
- if ( !array_key_exists( $i, $this->mConnections) || !$this->mConnections[$i]->isOpen() ) {
- $this->mConnections[$i] = Database::newFromParams( $this->mServers[$i], $this->mUser,
- $this->mPassword, $this->mDbName, 1 );
- }
- if ( !$this->mConnections[$i]->isOpen() ) {
- wfDebug( "Failed to connect to database $i at {$this->mServers[$i]}\n" );
- if ( $fail ) {
- $this->reportConnectionError( $this->mConnections[$i] );
+ /*
+ # Task-based index
+ if ( $i >= DB_TASK_FIRST && $i < DB_TASK_LAST ) {
+ if ( $i % 2 ) {
+ # Odd index use writer
+ $i = DB_WRITE;
+ } else {
+ # Even index use reader
+ $i = DB_READ;
+ }
+ }*/
+
+ # Operation-based index
+ # Note, getReader() and getWriter() will re-enter this function
+ if ( $i == DB_READ ) {
+ $this->mLastConn =& $this->getReader();
+ } elseif ( $i == DB_WRITE ) {
+ $this->mLastConn =& $this->getWriter();
+ } elseif ( $i == DB_LAST ) {
+ # Just use $this->mLastConn, which should already be set
+ if ( $this->mLastConn === false ) {
+ # Oh dear, not set, best to use the writer for safety
+ $this->mLastConn =& $this->getWriter();
+ }
+ } else {
+ # Explicit index
+ if ( !array_key_exists( $i, $this->mConnections) || !$this->mConnections[$i]->isOpen() ) {
+ $this->mConnections[$i] = Database::newFromParams( $this->mServers[$i], $this->mUser,
+ $this->mPassword, $this->mDbName, 1 );
+ }
+ if ( !$this->mConnections[$i]->isOpen() ) {
+ wfDebug( "Failed to connect to database $i at {$this->mServers[$i]}\n" );
+ if ( $fail ) {
+ $this->reportConnectionError( $this->mConnections[$i] );
+ }
+ $this->mConnections[$i] = false;
}
- $this->mConnections[$i] = false;
+ $this->mLastConn =& $this->mConnections[$i];
}
- return $this->mConnections[$i];
+ return $this->mLastConn;
}
function reportConnectionError( &$conn )
@@ -129,8 +179,8 @@ class LoadBalancer {
function &getWriter()
{
$c =& $this->getConnection( 0 );
- if ( !$c->isOpen() ) {
- reportConnectionError( $conn );
+ if ( $c === false || !$c->isOpen() ) {
+ $this->reportConnectionError( $c );
$c = false;
}
return $c;
@@ -140,4 +190,9 @@ class LoadBalancer {
{
$this->mForce = $i;
}
+
+ function haveIndex( $i )
+ {
+ return array_key_exists( $i, $this->mServers );
+ }
}
diff --git a/includes/MagicWord.php b/includes/MagicWord.php
index 9089d5108a2c..33b8f0933212 100644
--- a/includes/MagicWord.php
+++ b/includes/MagicWord.php
@@ -45,6 +45,7 @@ define("MAG_SERVER", 28);
define("MAG_IMG_FRAMED", 29);
define("MAG_PAGENAME", 30);
define("MAG_NAMESPACE", 31);
+define("MAG_TOC", 32);
$wgVariableIDs = array(
MAG_CURRENTMONTH,
@@ -110,7 +111,7 @@ class MagicWord {
$this->mRegexStart = "/^{$this->mBaseRegex}/{$case}";
$this->mVariableRegex = str_replace( "\\$1", "([$variableClass]*?)", $this->mRegex );
$this->mVariableStartToEndRegex = str_replace( "\\$1", "([$variableClass]*?)",
- "/^{$this->mBaseRegex}$/{$case}" );
+ "/^({$this->mBaseRegex})$/{$case}" );
}
# Gets a regex representing matching the word
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 '<span class="texhtml">'.$this->html.'</span>';
}
}
diff --git a/includes/MessageCache.php b/includes/MessageCache.php
index 66285e18b936..95c0bebc99af 100755
--- a/includes/MessageCache.php
+++ b/includes/MessageCache.php
@@ -11,11 +11,11 @@ class MessageCache
{
var $mCache, $mUseCache, $mDisable, $mExpiry;
var $mMemcKey, $mKeys, $mParserOptions, $mParser;
- var $mExtensionMessages;
+ var $mExtensionMessages, $mSecondaryDB;
var $mInitialised = false;
- function initialise( &$memCached, $useDB, $expiry, $memcPrefix ) {
+ function initialise( &$memCached, $useDB, $expiry, $memcPrefix, $secondaryDB = false) {
$this->mUseCache = !is_null( $memCached );
$this->mMemc = &$memCached;
$this->mDisable = !$useDB;
@@ -26,6 +26,7 @@ class MessageCache
$this->mInitialised = true;
$this->mParserOptions = ParserOptions::newFromUser( $u=NULL );
$this->mParser = new Parser;
+ $this->mSecondaryDB = $secondaryDB;
$this->load();
}
@@ -49,19 +50,26 @@ class MessageCache
if ( !$this->mCache ) {
$this->lock();
# Other threads don't need to load the messages if another thread is doing it.
- $this->mMemc->set( $this->mMemcKey, "loading", MSG_LOAD_TIMEOUT );
- $this->loadFromDB();
- # Save in memcached
- if ( !$this->mMemc->set( $this->mMemcKey, $this->mCache, $this->mExpiry ) ) {
- # Hack for slabs reassignment problem
- $this->mMemc->set( $this->mMemcKey, "error" );
- wfDebug( "MemCached set error in MessageCache: restart memcached server!\n" );
+ if ( $this->mMemc->set( $this->mMemcKey, "loading", MSG_LOAD_TIMEOUT ) ) {
+ $this->loadFromDB();
+ # Save in memcached
+ # Keep trying if it fails, this is kind of important
+ for ( $i=0; $i<20 && !$this->mMemc->set( $this->mMemcKey, $this->mCache, $this->mExpiry ); $i++ ) {
+ usleep(mt_rand(500000,1500000));
+ }
+ if ( $i == 20 ) {
+ $this->mMemc->set( $this->mMemcKey, "error", 3600 );
+ wfDebug( "MemCached set error in MessageCache: restart memcached server!\n" );
+ }
+ $this->unlock();
}
- $this->unlock();
}
if ( !is_array( $this->mCache ) ) {
# If it is 'loading' or 'error', switch to individual message mode, otherwise disable
+ # Causing too much DB load, disabling -- TS
+ $this->mDisable = true;
+ /*
if ( $this->mCache == "loading" ) {
$this->mUseCache = false;
} elseif ( $this->mCache == "error" ) {
@@ -70,7 +78,7 @@ class MessageCache
} else {
$this->mDisable = true;
$success = false;
- }
+ }*/
$this->mCache = false;
}
}
@@ -80,15 +88,26 @@ class MessageCache
# Loads all cacheable messages from the database
function loadFromDB()
{
+ global $wgLoadBalancer;
$fname = "MessageCache::loadFromDB";
- $sql = "SELECT cur_title,cur_text FROM cur WHERE cur_namespace=" . NS_MEDIAWIKI;
- $res = wfQuery( $sql, DB_READ, $fname );
-
+ $wgLoadBalancer->force(-1);
$this->mCache = array();
+ if ( $this->mSecondaryDB ) {
+ # Load from fallback
+ $sql = "SELECT cur_title,cur_text FROM {$this->mSecondaryDB}.cur WHERE cur_is_redirect=0 AND cur_namespace=" . NS_MEDIAWIKI;
+ $res = wfQuery( $sql, DB_READ, $fname );
+ $this->mCache = array();
+ for ( $row = wfFetchObject( $res ); $row; $row = wfFetchObject( $res ) ) {
+ $this->mCache[$row->cur_title] = $row->cur_text;
+ }
+ }
+ $sql = "SELECT cur_title,cur_text FROM cur WHERE cur_is_redirect=0 AND cur_namespace=" . NS_MEDIAWIKI;
+ $res = wfQuery( $sql, DB_READ, $fname );
for ( $row = wfFetchObject( $res ); $row; $row = wfFetchObject( $res ) ) {
$this->mCache[$row->cur_title] = $row->cur_text;
}
+ $wgLoadBalancer->force(0);
wfFreeResult( $res );
}
diff --git a/includes/Metadata.php b/includes/Metadata.php
index 49a2275c34b0..00cb9ca3a1ce 100644
--- a/includes/Metadata.php
+++ b/includes/Metadata.php
@@ -119,8 +119,8 @@ function wfCreativeCommonsRdf($article) {
$contributors = $article->getContributors();
- foreach ($contributors as $cid => $user_parts) {
- dcPerson('contributor', $cid, $user_parts[0], $user_parts[1]);
+ foreach ($contributors as $user_parts) {
+ dcPerson('contributor', $user_parts[0], $user_parts[1], $user_parts[2]);
}
dcRights($article);
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 @@
<?php
+# $Id$
+#
# Copyright (C) 2003-2004 Brion Vibber <brion@pobox.com>
# 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/OutputPage.php b/includes/OutputPage.php
index 7860a4228f23..25adc9839ef6 100644
--- a/includes/OutputPage.php
+++ b/includes/OutputPage.php
@@ -1,4 +1,6 @@
<?php
+if( defined( "MEDIAWIKI" ) ) {
+
# See design.doc
if($wgUseTeX) require_once( "Math.php" );
@@ -14,19 +16,19 @@ class OutputPage {
var $mSuppressQuickbar;
var $mOnloadHandler;
var $mDoNothing;
- var $mContainsOldMagic, $mContainsNewMagic;
+ var $mContainsOldMagic, $mContainsNewMagic;
var $mIsArticleRelated;
var $mParserOptions;
var $mShowFeedLinks = false;
var $mEnableClientCache = true;
-
+
function OutputPage()
{
$this->mHeaders = $this->mCookies = $this->mMetatags =
$this->mKeywords = $this->mLinktags = array();
$this->mHTMLtitle = $this->mPagetitle = $this->mBodytext =
$this->mRedirect = $this->mLastModified =
- $this->mSubtitle = $this->mDebugtext = $this->mRobotpolicy =
+ $this->mSubtitle = $this->mDebugtext = $this->mRobotpolicy =
$this->mOnloadHandler = "";
$this->mIsArticleRelated = $this->mIsarticle = $this->mPrintable = true;
$this->mSuppressQuickbar = $this->mPrintable = false;
@@ -48,7 +50,7 @@ class OutputPage {
function addKeyword( $text ) { array_push( $this->mKeywords, $text ); }
function addScript( $script ) { $this->mScripts .= $script; }
function getScript() { return $this->mScripts; }
-
+
function addLink( $linkarr ) {
# $linkarr should be an associative array of attributes. We'll escape on output.
array_push( $this->mLinktags, $linkarr );
@@ -65,7 +67,7 @@ class OutputPage {
# checkLastModified tells the client to use the client-cached page if
# possible. If sucessful, the OutputPage is disabled so that
# any future call to OutputPage->output() have no effect. The method
- # returns true iff cache-ok headers was sent.
+ # returns true iff cache-ok headers was sent.
function checkLastModified ( $timestamp )
{
global $wgLang, $wgCachePages, $wgUser;
@@ -92,7 +94,7 @@ class OutputPage {
$modsince = preg_replace( '/;.*$/', '', $_SERVER["HTTP_IF_MODIFIED_SINCE"] );
$ismodsince = wfUnix2Timestamp( strtotime( $modsince ) );
wfDebug( "-- client send If-Modified-Since: " . $modsince . "\n", false );
- wfDebug( "-- we might send Last-Modified : $lastmod\n", false );
+ wfDebug( "-- we might send Last-Modified : $lastmod\n", false );
if( ($ismodsince >= $timestamp ) and $wgUser->validateCache( $ismodsince ) ) {
# Make sure you're in a place you can leave when you call us!
@@ -116,11 +118,11 @@ class OutputPage {
global $action;
switch($action) {
case 'edit':
- return wfMsg('edit');
+ return wfMsg('edit');
case 'history':
return wfMsg('history_short');
case 'protect':
- return wfMsg('unprotect');
+ return wfMsg('protect');
case 'unprotect':
return wfMsg('unprotect');
case 'delete':
@@ -131,6 +133,8 @@ class OutputPage {
return wfMsg('unwatch');
case 'submit':
return wfMsg('preview');
+ case 'info':
+ return wfMsg('info_short');
default:
return '';
}
@@ -168,8 +172,8 @@ class OutputPage {
$this->mIsarticle = false;
}
}
- function setArticleFlag( $v ) {
- $this->mIsarticle = $v;
+ function setArticleFlag( $v ) {
+ $this->mIsarticle = $v;
if ( $v ) {
$this->mIsArticleRelated = $v;
}
@@ -179,12 +183,26 @@ class OutputPage {
{
return $this->mIsArticleRelated;
}
-
+
function getLanguageLinks() {
- global $wgTitle, $wgLanguageCode;
- global $wgDBconnection, $wgDBname;
return $this->mLanguageLinks;
}
+ function addLanguageLinks($newLinkArray) {
+ $this->mLanguageLinks += $newLinkArray;
+ }
+ function setLanguageLinks($newLinkArray) {
+ $this->mLanguageLinks = $newLinkArray;
+ }
+ function getCategoryLinks() {
+ return $this->mCategoryLinks;
+ }
+ function addCategoryLinks($newLinkArray) {
+ $this->mCategoryLinks += $newLinkArray;
+ }
+ function setCategoryLinks($newLinkArray) {
+ $this->mCategoryLinks += $newLinkArray;
+ }
+
function suppressQuickbar() { $this->mSuppressQuickbar = true; }
function isQuickbarSuppressed() { return $this->mSuppressQuickbar; }
@@ -205,42 +223,46 @@ class OutputPage {
{
global $wgParser, $wgParserCache, $wgUser, $wgTitle;
- $parserOutput = false;
+ $parserOutput = $wgParser->parse( $text, $wgTitle, $this->mParserOptions, $linestart );
if ( $cacheArticle ) {
- $parserOutput = $wgParserCache->get( $cacheArticle, $wgUser );
+ $wgParserCache->save( $parserOutput, $cacheArticle, $wgUser );
}
- if ( $parserOutput === false ) {
- $parserOutput = $wgParser->parse( $text, $wgTitle, $this->mParserOptions, $linestart );
- if ( $cacheArticle ) {
- $wgParserCache->save( $parserOutput, $cacheArticle, $wgUser );
- }
- }
-
$this->mLanguageLinks += $parserOutput->getLanguageLinks();
$this->mCategoryLinks += $parserOutput->getCategoryLinks();
-
$this->addHTML( $parserOutput->getText() );
-
+ }
+
+ function tryParserCache( $article, $user ) {
+ global $wgParserCache;
+ $parserOutput = $wgParserCache->get( $article, $user );
+ if ( $parserOutput !== false ) {
+ $this->mLanguageLinks += $parserOutput->getLanguageLinks();
+ $this->mCategoryLinks += $parserOutput->getCategoryLinks();
+ $this->addHTML( $parserOutput->getText() );
+ return true;
+ } else {
+ return false;
+ }
}
# Set the maximum cache time on the Squid in seconds
function setSquidMaxage( $maxage ) {
$this->mSquidMaxage = $maxage;
}
-
+
# Use enableClientCache(false) to force it to send nocache headers
function enableClientCache( $state ) {
return wfSetVar( $this->mEnableClientCache, $state );
}
-
+
function sendCacheControl() {
global $wgUseSquid, $wgUseESI;
# FIXME: This header may cause trouble with some versions of Internet Explorer
header( "Vary: Accept-Encoding, Cookie" );
if( $this->mEnableClientCache ) {
- if( $wgUseSquid && ! isset( $_COOKIE[ini_get( "session.name") ] ) &&
- ! $this->isPrintable() && $this->mSquidMaxage != 0 )
+ if( $wgUseSquid && ! isset( $_COOKIE[ini_get( "session.name") ] ) &&
+ ! $this->isPrintable() && $this->mSquidMaxage != 0 )
{
if ( $wgUseESI ) {
# We'll purge the proxy cache explicitly, but require end user agents
@@ -254,7 +276,7 @@ class OutputPage {
} else {
# We'll purge the proxy cache for anons explicitly, but require end user agents
# to revalidate against the proxy on each visit.
- # IMPORTANT! The Squid needs to replace the Cache-Control header with
+ # IMPORTANT! The Squid needs to replace the Cache-Control header with
# Cache-Control: s-maxage=0, must-revalidate, max-age=0
wfDebug( "** local proxy caching; {$this->mLastModified} **\n", false );
# start with a shorter timeout for initial testing
@@ -279,7 +301,7 @@ class OutputPage {
header( "Pragma: no-cache" );
}
}
-
+
# Finally, all the text has been munged and accumulated into
# the object, let's actually output it:
#
@@ -287,13 +309,13 @@ class OutputPage {
{
global $wgUser, $wgLang, $wgDebugComments, $wgCookieExpiration;
global $wgInputEncoding, $wgOutputEncoding, $wgLanguageCode;
- global $wgDebugRedirects, $wgMimeType;
+ global $wgDebugRedirects, $wgMimeType, $wgProfiler;
if( $this->mDoNothing ){
return;
}
$fname = "OutputPage::output";
wfProfileIn( $fname );
-
+
$sk = $wgUser->getSkin();
if ( "" != $this->mRedirect ) {
@@ -308,9 +330,9 @@ class OutputPage {
}
$this->mLastModified = gmdate( "D, j M Y H:i:s" ) . " GMT";
}
-
+
$this->sendCacheControl();
-
+
if( $wgDebugRedirects ) {
$url = htmlspecialchars( $this->mRedirect );
print "<html>\n<head>\n<title>Redirect</title>\n</head>\n<body>\n";
@@ -319,12 +341,13 @@ class OutputPage {
} else {
header( "Location: {$this->mRedirect}" );
}
+ if ( isset( $wgProfiler ) ) { wfDebug( $wgProfiler->getOutput() ); }
return;
}
-
-
+
+
$this->sendCacheControl();
-
+
header( "Content-type: $wgMimeType; charset={$wgOutputEncoding}" );
header( "Content-language: {$wgLanguageCode}" );
@@ -332,7 +355,7 @@ class OutputPage {
foreach( $this->mCookies as $name => $val ) {
setcookie( $name, $val, $exp, "/" );
}
-
+
$sk->outputPage( $this );
# flush();
}
@@ -355,7 +378,7 @@ class OutputPage {
global $wgUser, $wgLang;
$wgInputEncoding = strtolower( $wgInputEncoding );
-
+
if( $wgUser->getOption( 'altencoding' ) ) {
$wgLang->setAltEncoding();
return;
@@ -365,11 +388,11 @@ class OutputPage {
$wgOutputEncoding = strtolower( $wgOutputEncoding );
return;
}
-
+
/*
# This code is unused anyway!
# Commenting out. --bv 2003-11-15
-
+
$a = explode( ",", $_SERVER['HTTP_ACCEPT_CHARSET'] );
$best = 0.0;
$bestset = "*";
@@ -397,7 +420,7 @@ class OutputPage {
$wgOutputEncoding = $wgInputEncoding;
}
- # Returns a HTML comment with the elapsed time since request.
+ # Returns a HTML comment with the elapsed time since request.
# This method has no side effects.
function reportTime()
{
@@ -407,8 +430,22 @@ class OutputPage {
list( $usec, $sec ) = explode( " ", $wgRequestTime );
$start = (float)$sec + (float)$usec;
$elapsed = $now - $start;
- $com = sprintf( "<!-- Time since request: %01.2f secs. -->",
- $elapsed );
+
+ # Use real server name if available, so we know which machine
+ # in a server farm generated the current page.
+ if ( function_exists( "posix_uname" ) ) {
+ $uname = @posix_uname();
+ } else {
+ $uname = false;
+ }
+ if( is_array( $uname ) && isset( $uname['nodename'] ) ) {
+ $hostname = $uname['nodename'];
+ } else {
+ # This may be a virtual server.
+ $hostname = $_SERVER['SERVER_NAME'];
+ }
+ $com = sprintf( "<!-- Served by %s in %01.2f secs. -->",
+ $hostname, $elapsed );
return $com;
}
@@ -445,7 +482,7 @@ class OutputPage {
$this->mBodytext = "";
$sk = $wgUser->getSkin();
- $ap = $sk->makeKnownLink( wfMsg( "administrators" ), "" );
+ $ap = $sk->makeKnownLink( wfMsg( "administrators" ), "" );
$this->addHTML( wfMsg( "sysoptext", $ap ) );
$this->returnToMain();
}
@@ -461,7 +498,7 @@ class OutputPage {
$this->mBodytext = "";
$sk = $wgUser->getSkin();
- $ap = $sk->makeKnownLink( wfMsg( "administrators" ), "" );
+ $ap = $sk->makeKnownLink( wfMsg( "administrators" ), "" );
$this->addHTML( wfMsg( "developertext", $ap ) );
$this->returnToMain();
}
@@ -479,14 +516,14 @@ class OutputPage {
# We put a comment in the .html file so a Sysop can diagnose the page the
# user can't see.
- $this->addHTML( "\n<!--" .
- $wgLang->getNsText( $wgTitle->getNamespace() ) .
- ":" .
+ $this->addHTML( "\n<!--" .
+ $wgLang->getNsText( $wgTitle->getNamespace() ) .
+ ":" .
$wgTitle->getDBkey() . "-->" );
$this->returnToMain(); # Flip back to the main page after 10 seconds.
}
- function databaseError( $fname, &$conn )
+ function databaseError( $fname, $sql, $error, $errno )
{
global $wgUser, $wgCommandLineMode;
@@ -501,11 +538,11 @@ class OutputPage {
$msg = wfMsgNoDB( "dberrortext" );
}
- $msg = str_replace( "$1", htmlspecialchars( $conn->lastQuery() ), $msg );
+ $msg = str_replace( "$1", htmlspecialchars( $sql ), $msg );
$msg = str_replace( "$2", htmlspecialchars( $fname ), $msg );
- $msg = str_replace( "$3", $conn->lastErrno(), $msg );
- $msg = str_replace( "$4", htmlspecialchars( $conn->lastError() ), $msg );
-
+ $msg = str_replace( "$3", $errno, $msg );
+ $msg = str_replace( "$4", htmlspecialchars( $error ), $msg );
+
if ( $wgCommandLineMode || !is_object( $wgUser )) {
print "$msg\n";
wfAbruptExit();
@@ -534,7 +571,7 @@ class OutputPage {
$reason = file_get_contents( $wgReadOnlyFile );
$this->addWikiText( wfMsg( "readonlytext", $reason ) );
}
-
+
if( is_string( $source ) ) {
if( strcmp( $source, "" ) == 0 ) {
$source = wfMsg( "noarticletext" );
@@ -545,7 +582,7 @@ class OutputPage {
htmlspecialchars( $source ) . "\n</textarea>";
$this->addHTML( $text );
}
-
+
$this->returnToMain( false );
}
@@ -586,10 +623,13 @@ class OutputPage {
$this->fatalError( wfMsg( "filenotfound", $name ) );
}
+ // return from error messages or notes
+ // auto: automatically redirect the user after 10 seconds
+ // returnto: page title to return to. Default is Main Page.
function returnToMain( $auto = true, $returnto = NULL )
{
global $wgUser, $wgOut, $wgRequest;
-
+
if ( $returnto == NULL ) {
$returnto = $wgRequest->getText( 'returnto' );
}
@@ -623,7 +663,7 @@ class OutputPage {
"/[_]/" => ' '
);
$a = htmlspecialchars(preg_replace(array_keys($strip), array_values($strip),$a ));
-
+
$wgOut->addMeta ( "KEYWORDS" , $a ) ;
}
@@ -638,7 +678,7 @@ class OutputPage {
} else {
$ret = "";
}
-
+
$ret .= "<!DOCTYPE html PUBLIC \"$wgDocType\"\n \"$wgDTD\">\n";
if ( "" == $this->mHTMLtitle ) {
@@ -653,7 +693,7 @@ class OutputPage {
$ret .= "<html $xmlbits lang=\"$wgLanguageCode\" $rtl>\n";
$ret .= "<head>\n<title>" . htmlspecialchars( $this->mHTMLtitle ) . "</title>\n";
array_push( $this->mMetatags, array( "http:Content-type", "$wgMimeType; charset={$wgOutputEncoding}" ) );
-
+
$ret .= $this->getHeadLinks();
global $wgStylePath;
if( $this->isPrintable() ) {
@@ -672,7 +712,7 @@ class OutputPage {
$ret .= "</head>\n";
return $ret;
}
-
+
function getHeadLinks() {
global $wgRequest, $wgStylePath;
$ret = "";
@@ -717,4 +757,6 @@ class OutputPage {
return $ret;
}
}
+
+}
?>
diff --git a/includes/PageHistory.php b/includes/PageHistory.php
index 49b42f3f2a7e..3eeaa9d419fa 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,6 +79,12 @@ class PageHistory {
$this->mTitle->getPrefixedText(),
"action=history", $atend );
$s = $numbar;
+ if($this->linesonpage > 0) {
+ $submitpart1 = '<input class="historysubmit" type="submit" accesskey="'.wfMsg('accesskey-compareselectedversions').
+ '" title="'.wfMsg('tooltip-compareselectedversions').'" value="'.wfMsg('compareselectedversions').'"';
+ $this->submitbuttonhtml1 = $submitpart1 . ' />';
+ $this->submitbuttonhtml2 = $submitpart1 . ' id="historysubmit" />';
+ }
$s .= $this->beginHistoryList();
$counter = 1;
if( $offset == 0 ){
@@ -110,9 +118,10 @@ class PageHistory {
global $wgTitle;
$this->lastdate = $this->lastline = "";
$s = "\n<p>" . wfMsg( "histlegend" ).'</p>';
- $s .="\n<form id=\"pagehistory\" name=\"pagehistory\" action=\"" . $wgTitle->getFullURL("-") . "\" method=\"get\">";
- $s .= "<input type=\"hidden\" name=\"title\" value=\"".htmlspecialchars($wgTitle->getPrefixedDbKey())."\"/>\n";
- $s .= "" . "\n<ul>";
+ $s .="\n<form action=\"" . $wgTitle->escapeLocalURL( '-' ) . "\" method=\"get\">";
+ $s .= "<input type=\"hidden\" name=\"title\" value=\"".wfEscapeHTML($wgTitle->getPrefixedDbKey())."\"/>\n";
+ $s .= !empty($this->submitbuttonhtml1) ? $this->submitbuttonhtml1."\n":'';
+ $s .= "" . "\n<ul id=\"pagehistory\" >";
return $s;
}
@@ -121,11 +130,8 @@ class PageHistory {
$last = wfMsg( "last" );
$s = $skip ? "" : preg_replace( "/!OLDID![0-9]+!/", $last, $this->lastline );
- $s .= "</ul>\n";
- if( $this->linesonpage > 1) {
- $s .= '<button type="submit" accesskey="'.wfMsg('accesskey-compareselectedversions').
- '" title="'.wfMsg('tooltip-compareselectedversions').'">'.wfMsg('compareselectedversions')."</button><br/><br/>\n";
- }
+ $s .= "</ul>";
+ $s .= !empty($this->submitbuttonhtml2) ? $this->submitbuttonhtml2."\n":'';
$s .= "</form>\n";
return $s;
}
@@ -156,10 +162,10 @@ class PageHistory {
if ( 0 == $u ) {
$ul = $this->mSkin->makeKnownLink( $wgLang->specialPage( "Contributions" ),
- $ut, "target=" . $ut );
+ htmlspecialchars( $ut ), "target=" . urlencode( $ut ) );
} else {
$ul = $this->mSkin->makeLink( $wgLang->getNsText(
- Namespace::getUser() ) . ":{$ut}", $ut );
+ Namespace::getUser() ) . ":{$ut}", htmlspecialchars( $ut ) );
}
$s = "<li>";
diff --git a/includes/Parser.php b/includes/Parser.php
index c345e28eec22..2e331fa7eb64 100644
--- a/includes/Parser.php
+++ b/includes/Parser.php
@@ -1,13 +1,6 @@
<?php
-require_once('Tokenizer.php');
-
-if( $GLOBALS['wgUseWikiHiero'] ){
- require_once('extensions/wikihiero/wikihiero.php');
-}
-if( $GLOBALS['wgUseTimeline'] ){
- require_once('extensions/timeline/Timeline.php');
-}
+// require_once('Tokenizer.php');
# PHP Parser
#
@@ -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 = "";
@@ -77,6 +72,7 @@ class Parser
$this->mIncludeCount = array();
$this->mStripState = array();
$this->mArgStack = array();
+ $this->mInPre = false;
}
# First pass--just handle <nowiki> sections, pass the rest off
@@ -84,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 );
@@ -105,10 +100,15 @@ class Parser
# Clean up special characters, only run once, next-to-last before doBlockLevels
if(!$wgUseTidy) {
$fixtags = array(
- "/<hr *>/i" => '<hr/>',
- "/<br *>/i" => '<br/>',
- "/<center *>/i"=>'<div class="center">',
- "/<\\/center *>/i" => '</div>',
+ # french spaces, last one Guillemet-left
+ # only if there is something before the space
+ '/(.) (\\?|:|;|!|\\302\\273)/i' => '\\1&nbsp;\\2',
+ # french spaces, Guillemet-right
+ "/(\\302\\253) /i"=>"\\1&nbsp;",
+ '/<hr *>/i' => '<hr />',
+ '/<br *>/i' => '<br />',
+ '/<center *>/i' => '<div class="center">',
+ '/<\\/center *>/i' => '</div>',
# 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]+;)/' => '&amp;'
@@ -116,13 +116,19 @@ class Parser
$text = preg_replace( array_keys($fixtags), array_values($fixtags), $text );
} else {
$fixtags = array(
- "/<center *>/i"=>'<div class="center">',
- "/<\\/center *>/i" => '</div>'
+ # french spaces, last one Guillemet-left
+ '/ (\\?|:|!|\\302\\273)/i' => '&nbsp;\\1',
+ # french spaces, Guillemet-right
+ '/(\\302\\253) /i' => '\\1&nbsp;',
+ '/([^> ]+(&#x30(1|3|9);)[^< ]*)/i' => '<span class="diacrit">\\1</span>',
+ '/<center *>/i' => '<div class="center">',
+ '/<\\/center *>/i' => '</div>'
);
$text = preg_replace( array_keys($fixtags), array_values($fixtags), $text );
}
# only once and last
$text = $this->doBlockLevels( $text, $linestart );
+ $text = $this->unstripNoWiki( $text, $this->mStripState );
if($wgUseTidy) {
$text = $this->tidy($text);
}
@@ -131,8 +137,7 @@ class Parser
return $this->mOutput;
}
- /* static */ function getRandomString()
- {
+ /* static */ function getRandomString() {
return dechex(mt_rand(0, 0x7fffffff)) . dechex(mt_rand(0, 0x7fffffff));
}
@@ -152,24 +157,24 @@ class Parser
$content = array( );
}
$n = 1;
- $stripped = "";
+ $stripped = '';
- while ( "" != $text ) {
+ while ( '' != $text ) {
if($tag==STRIP_COMMENTS) {
- $p = preg_split( "/<!--/i", $text, 2 );
+ $p = preg_split( '/<!--/i', $text, 2 );
} else {
$p = preg_split( "/<\\s*$tag\\s*>/i", $text, 2 );
}
$stripped .= $p[0];
- if ( ( count( $p ) < 2 ) || ( "" == $p[1] ) ) {
- $text = "";
+ if ( ( count( $p ) < 2 ) || ( '' == $p[1] ) ) {
+ $text = '';
} else {
if($tag==STRIP_COMMENTS) {
- $q = 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];
@@ -187,20 +192,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();
$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 );
@@ -209,16 +215,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] = "<hiero>$content</hiero>";
- }
- }
-
- $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() ) {
@@ -231,14 +229,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] = "<pre>" . wfEscapeHTMLTagsOnly( $content ) . "</pre>";
+ $pre_content[$marker] = '<pre>' . wfEscapeHTMLTagsOnly( $content ) . '</pre>';
} else {
$pre_content[$marker] = "<pre>$content</pre>";
}
}
+
+ # Comments
if($stripcomments) {
$text = Parser::extractTags(STRIP_COMMENTS, $text, $comment_content, $uniq_prefix);
foreach( $comment_content as $marker => $content ){
@@ -246,49 +247,75 @@ 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</$tag>";
+ }
+ }
+ }
+
# 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['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,
'math' => $math_content,
'pre' => $pre_content,
- 'comment' => $comment_content
- );
+ 'comment' => $comment_content,
+ ) + $ext_content;
}
return $text;
}
- function unstrip( $text, &$state )
- {
+ # always call unstripNoWiki() after this one
+ 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 ) ) {
- for ( $content = end( $contentDict ); $content !== false; $content = prev( $contentDict ) ) {
- $text = str_replace( key( $contentDict ), $content, $text );
+ if( key($state) != 'nowiki') {
+ for ( $content = end( $contentDict ); $content !== false; $content = prev( $contentDict ) ) {
+ $text = str_replace( key( $contentDict ), $content, $text );
+ }
}
}
return $text;
}
+ # always call this after unstrip() to preserve the order
+ 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 );
+ }
+
+ return $text;
+ }
# Add an item to the strip state
# Returns the unique tag which must be inserted into the stripped text
# The tag will be replaced with the original text in unstrip()
- 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()
);
@@ -297,9 +324,27 @@ 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() {
+ global $wgLinkCache;
+ $wgLinkCache->suspend();
+ $msg = wfMsg('usenewcategorypage');
+ if ( '0' == @$msg[0] )
+ {
+ return $this->oldCategoryMagic();
+ } else {
+ return $this->newCategoryMagic();
+ }
+ $wgLinkCache->resume();
+ }
+
# 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
@@ -339,66 +384,247 @@ class Parser
# Showing subcategories
if ( count ( $children ) > 0 ) {
- $r .= "<h2>".wfMsg("subcategories")."</h2>\n" ;
- $r .= implode ( ", " , $children ) ;
+ $r .= '<h2>'.wfMsg('subcategories')."</h2>\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 .= "<h2>{$h}</h2>\n" ;
- $r .= implode ( ", " , $articles ) ;
+ $r .= implode ( ', ' , $articles ) ;
}
return $r ;
}
- function getHTMLattrs ()
- {
+
+
+ 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 = "<br style=\"clear:both;\"/>\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 .= '<h2>' . wfMsg( 'subcategories' ) . "</h2>\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 .= '<table width="100%"><tr valign="top">';
+
+ $startChunk = 0;
+ $endChunk = $chunk;
+
+ // loop through the chunks
+ for($startChunk = 0, $endChunk = $chunk, $chunkIndex = 0;
+ $chunkIndex < 3;
+ $chunkIndex++, $startChunk = $endChunk, $endChunk += $chunk + 1)
+ {
+
+ $r .= '<td><ul>';
+ // 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 .= "</ul><h3>{$children_start_char[$index]}</h3>\n<ul>";
+ }
+
+ $r .= "<li>{$children[$index]}</li>";
+ }
+ $r .= '</ul></td>';
+
+
+ }
+ $r .= '</tr></table>';
+ } else {
+ // for short lists of subcategories to category.
+
+ $r .= "<h3>{$children_start_char[0]}</h3>\n";
+ $r .= '<ul><li>'.$children[0].'</li>';
+ for ($index = 1; $index < count($children); $index++ )
+ {
+ if ($children_start_char[$index] != $children_start_char[$index - 1])
+ {
+ $r .= "</ul><h3>{$children_start_char[$index]}</h3>\n<ul>";
+ }
+
+ $r .= "<li>{$children[$index]}</li>";
+ }
+ $r .= '</ul>';
+ }
+ } # END of if ( count($children) > 0 )
+
+ $r .= '<h2>' . wfMsg( 'category_header', $ti ) . "</h2>\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 .= '<table width="100%"><tr valign="top">';
+
+ // loop through the chunks
+ for($startChunk = 0, $endChunk = $chunk, $chunkIndex = 0;
+ $chunkIndex < 3;
+ $chunkIndex++, $startChunk = $endChunk, $endChunk += $chunk + 1)
+ {
+
+ $r .= '<td><ul>';
+
+ // 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 .= "</ul><h3>{$articles_start_char[$index]}</h3>\n<ul>";
+ }
+
+ $r .= "<li>{$articles[$index]}</li>";
+ }
+ $r .= '</ul></td>';
+
+
+ }
+ $r .= '</tr></table>';
+ } elseif ( count ( $articles ) > 0) {
+ // for short lists of articles in categories.
+ $ti = $this->mTitle->getText() ;
+
+ $r .= '<h3>'.$articles_start_char[0]."</h3>\n";
+ $r .= '<ul><li>'.$articles[0].'</li>';
+ for ($index = 1; $index < count($articles); $index++ )
+ {
+ if ($articles_start_char[$index] != $articles_start_char[$index - 1])
+ {
+ $r .= "</ul><h3>{$articles_start_char[$index]}</h3>\n<ul>";
+ }
+
+ $r .= "<li>{$articles[$index]}</li>";
+ }
+ $r .= '</ul>';
+ }
+
+
+ return $r ;
+ }
+
+ # Return allowed HTML attributes
+ 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 ;
}
- function fixTagAttributes ( $t )
- {
- if ( trim ( $t ) == "" ) return "" ; # Saves runtime ;-)
+ # Remove non approved attributes and javascript in css
+ 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 ) ;
}
- /* interface with html tidy, used if $wgUseTidy = true */
+ # interface with html tidy, used if $wgUseTidy = true
function tidy ( $text ) {
global $wgTidyConf, $wgTidyBin, $wgTidyOpts;
global $wgInputEncoding, $wgOutputEncoding;
+ $fname = 'Parser::tidy';
+ wfProfileIn( $fname );
+
$cleansource = '';
switch(strtoupper($wgOutputEncoding)) {
case 'ISO-8859-1':
@@ -411,17 +637,17 @@ class Parser
$wgTidyOpts .= ' -raw';
}
- $text = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'.
+ $wrappedtext = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'.
' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>'.
'<head><title>test</title></head><body>'.$text.'</body></html>';
$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)) {
- fwrite($pipes[0], $text);
+ fwrite($pipes[0], $wrappedtext);
fclose($pipes[0]);
while (!feof($pipes[1])) {
$cleansource .= fgets($pipes[1], 1024);
@@ -429,15 +655,19 @@ class Parser
fclose($pipes[1]);
$return_value = proc_close($process);
}
+
+ wfProfileOut( $fname );
+
if( $cleansource == '' && $text != '') {
- return '<h2>'.wfMsg('seriousxhtmlerrors').'</h2><pre>'.htmlspecialchars($text).'</pre>';
+ wfDebug( "Tidy error detected!\n" );
+ return $text . "\n<!-- Tidy found serious XHTML errors -->\n";
} else {
return $cleansource;
}
}
- function doTableStuff ( $t )
- {
+ # parse the wiki syntax used to render tables
+ function doTableStuff ( $t ) {
$t = explode ( "\n" , $t ) ;
$td = array () ; # Is currently a td tag open?
$ltd = array () ; # Was it TD or TH?
@@ -447,20 +677,20 @@ class Parser
{
$x = trim ( $x ) ;
$fc = substr ( $x , 0 , 1 ) ;
- if ( "{|" == substr ( $x , 0 , 2 ) )
+ if ( '{|' == substr ( $x , 0 , 2 ) )
{
- $t[$k] = "\n<table " . $this->fixTagAttributes ( substr ( $x , 3 ) ) . ">" ;
+ $t[$k] = "\n<table " . $this->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 = "</table>\n" ;
$l = array_pop ( $ltd ) ;
- if ( array_pop ( $tr ) ) $z = "</tr>" . $z ;
+ if ( array_pop ( $tr ) ) $z = '</tr>' . $z ;
if ( array_pop ( $td ) ) $z = "</{$l}>" . $z ;
array_pop ( $ltr ) ;
$t[$k] = $z ;
@@ -470,51 +700,51 @@ class Parser
$z = trim ( substr ( $x , 2 ) ) ;
$t[$k] = "<caption>{$z}</caption>\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 = "</tr>" . $z ;
+ if ( array_pop ( $tr ) ) $z = '</tr>' . $z ;
if ( array_pop ( $td ) ) $z = "</{$l}>" . $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 = "<tr {$tra}>\n" ;
array_push ( $tr , true ) ;
- array_push ( $ltr , "" ) ;
+ array_push ( $ltr , '' ) ;
}
$l = array_pop ( $ltd ) ;
if ( array_pop ( $td ) ) $z = "</{$l}>" . $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 ;
@@ -526,9 +756,9 @@ class Parser
# Closing open td, tr && table
while ( count ( $td ) > 0 )
{
- if ( array_pop ( $td ) ) $t[] = "</td>" ;
- if ( array_pop ( $tr ) ) $t[] = "</tr>" ;
- $t[] = "</table>" ;
+ if ( array_pop ( $td ) ) $t[] = '</td>' ;
+ if ( array_pop ( $tr ) ) $t[] = '</tr>' ;
+ $t[] = '</table>' ;
}
$t = implode ( "\n" , $t ) ;
@@ -536,29 +766,42 @@ class Parser
return $t ;
}
- function internalParse( $text, $linestart, $args = array(), $isMain=true )
+ # Parses the text and adds the result to the strip state
+ # Returns the strip tag
+ function stripParse( $text, $newline, $args )
{
- $fname = "Parser::internalParse";
+ $text = $this->strip( $text, $this->mStripState );
+ $text = $this->internalParse( $text, (bool)$newline, $args, false );
+ return $newline.$this->insertStripItem( $text, $this->mStripState );
+ }
+
+ 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<hr>", $text );
+ $text = preg_replace( '/(^|\n)-----*/', '\\1<hr />', $text );
$text = $this->doHeadings( $text );
if($this->mOptions->getUseDynamicDates()) {
global $wgDateFormatter;
$text = $wgDateFormatter->reformat( $this->mOptions->getDateFormat(), $text );
}
+ $text = $this->doAllQuotes( $text );
+ // $text = $this->doExponent( $text );
$text = $this->replaceExternalLinks( $text );
- $text = $this->doTokenizedParser ( $text );
- $text = $this->doTableStuff ( $text ) ;
+ $text = $this->doMagicLinks( $text );
+ $text = $this->replaceInternalLinks ( $text );
+ $text = $this->replaceInternalLinks ( $text );
+ //$text = $this->doTokenizedParser ( $text );
+ $text = $this->doTableStuff ( $text );
$text = $this->formatHeadings( $text, $isMain );
$sk =& $this->mOptions->getSkin();
$text = $sk->transformContent( $text );
- if ( !isset ( $this->categoryMagicDone ) ) {
+ if ( $isMain && !isset ( $this->categoryMagicDone ) ) {
$text .= $this->categoryMagic () ;
$this->categoryMagicDone = true ;
}
@@ -566,40 +809,116 @@ class Parser
wfProfileOut( $fname );
return $text;
}
-
-
- /* private */ function doHeadings( $text )
+
+ # Parse ^^ tokens and return html
+ /* private */ function doExponent ( $text )
{
+ $fname = 'Parser::doExponent';
+ wfProfileIn( $fname);
+ $text = preg_replace('/\^\^(.*)\^\^/','<small><sup>\\1</sup></small>', $text);
+ wfProfileOut( $fname);
+ return $text;
+ }
+
+ # Parse headers and return html
+ /* 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",
"<h{$i}>\\1</h{$i}>\\2", $text );
}
+ wfProfileOut( $fname );
return $text;
}
+ /* private */ function doAllQuotes( $text ) {
+ $fname = 'Parser::doAllQuotes';
+ wfProfileIn( $fname );
+ $outtext = '';
+ $lines = explode( "\n", $text );
+ foreach ( $lines as $line ) {
+ $outtext .= $this->doQuotes ( '', $line, '' ) . "\n";
+ }
+ $outtext = substr($outtext, 0,-1);
+ wfProfileOut( $fname );
+ return $outtext;
+ }
+
+ /* private */ function &doMagicLinks( &$text ) {
+ $text = $this->magicISBN( $text );
+ $text = $this->magicRFC( $text );
+ return $text;
+ }
+
+ /* private */ function doQuotes( $pre, $text, $mode ) {
+ if ( preg_match( "/^(.*)''(.*)$/sU", $text, $m ) ) {
+ $m1_strong = ($m[1] == "") ? "" : "<strong>{$m[1]}</strong>";
+ $m1_em = ($m[1] == "") ? "" : "<em>{$m[1]}</em>";
+ 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 "<strong>{$pre}{$m1_em}</strong>" . $this->doQuotes ( '', $m[2], 'em' );
+ } else {
+ 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 "<em>{$pre}{$m1_strong}</em>" . $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' );
+ }
+ }
+ } else {
+ $text_strong = ($text == '') ? '' : "<strong>{$text}</strong>";
+ $text_em = ($text == '') ? '' : "<em>{$text}</em>";
+ if ($mode == '') {
+ return $pre . $text;
+ } else if ($mode == 'em') {
+ return $pre . $text_em;
+ } else if ($mode == 'strong') {
+ return $pre . $text_strong;
+ } else if ($mode == 'strongem') {
+ return (($pre == '') && ($text == '')) ? '' : "<strong>{$pre}{$text_em}</strong>";
+ } else {
+ return (($pre == '') && ($text == '')) ? '' : "<em>{$pre}{$text_strong}</em>";
+ }
+ }
+ }
+
# Note: we have to do external links before the internal ones,
# 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
@@ -608,8 +927,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
@@ -621,13 +940,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" . "<a href=\"{$unique}:\\3\"" .
+ $s = preg_replace( $e2, '\\1' . "<a href=\"{$unique}:\\3\"" .
$sk->getExternalLinkAttributes( "{$unique}:\\3", wfEscapeHTML(
"{$unique}:\\3" ) ) . ">" . wfEscapeHTML( "{$unique}:\\3" ) .
- "</a>\\5", $s );
+ '</a>\\5', $s );
$s = str_replace( $unique, $protocol, $s );
$a = explode( "[{$protocol}:", " " . $s );
@@ -652,7 +971,7 @@ class Parser
continue;
}
if( $link == $text || preg_match( "!$protocol://" . preg_quote( $text, "/" ) . "/?$!", $link ) ) {
- $paren = "";
+ $paren = '';
} else {
# Expand the URL for printable version
$paren = "<span class='urlexpansion'> (<i>" . htmlspecialchars ( $link ) . "</i>)</span>";
@@ -664,301 +983,31 @@ class Parser
return $s;
}
- /* private */ function handle4Quotes( &$state, $token )
- {
- /* This one makes some assumptions.
- * '''Caesar''''s army => <strong>Caesar</strong>'s army
- * ''''Caesar'''' was a roman emperor => '<strong>Caesar</strong>' was a roman emperor
- * These assumptions might be wrong, but any other assumption might be wrong, too.
- * So here we go */
- if ( $state["strong"] !== false ) {
- return $this->handle3Quotes( $state, $token ) . "'";
- } else {
- return "'" . $this->handle3Quotes( $state, $token );
- }
- }
-
-
- /* private */ function handle3Quotes( &$state, $token )
- {
- if ( $state["strong"] !== false ) {
- if ( $state["em"] !== false && $state["em"] > $state["strong"] )
- {
- # ''' lala ''lala '''
- $s = "</em></strong><em>";
- } else {
- $s = "</strong>";
- }
- $state["strong"] = FALSE;
- } else {
- $s = "<strong>";
- $state["strong"] = $token["pos"];
- }
- return $s;
- }
-
- /* private */ function handle2Quotes( &$state, $token )
- {
- if ( $state["em"] !== false ) {
- if ( $state["strong"] !== false && $state["strong"] > $state["em"] )
- {
- # ''lala'''lala'' ....'''
- $s = "</strong></em><strong>";
- } else {
- $s = "</em>";
- }
- $state["em"] = FALSE;
- } else {
- $s = "<em>";
- $state["em"] = $token["pos"];
-
- }
- return $s;
- }
-
- /* private */ function handle5Quotes( &$state, $token )
- {
- $s = "";
- if ( $state["em"] !== false && $state["strong"] !== false ) {
- if ( $state["em"] < $state["strong"] ) {
- $s .= "</strong></em>";
- } else {
- $s .= "</em></strong>";
- }
- $state["strong"] = $state["em"] = FALSE;
- } elseif ( $state["em"] !== false ) {
- $s .= "</em><strong>";
- $state["em"] = FALSE;
- $state["strong"] = $token["pos"];
- } elseif ( $state["strong"] !== false ) {
- $s .= "</strong><em>";
- $state["strong"] = FALSE;
- $state["em"] = $token["pos"];
- } else { # not $em and not $strong
- $s .= "<strong><em>";
- $state["strong"] = $state["em"] = $token["pos"];
- }
- return $s;
- }
-
- /* private */ function doTokenizedParser( $str )
- {
- global $wgLang; # for language specific parser hook
- global $wgUploadDirectory, $wgUseTimeline;
-
- $tokenizer=Tokenizer::newFromString( $str );
- $tokenStack = array();
- $s="";
- $state["em"] = FALSE;
- $state["strong"] = FALSE;
- $tagIsOpen = FALSE;
- $threeopen = false;
-
- # The tokenizer splits the text into tokens and returns them one by one.
- # Every call to the tokenizer returns a new token.
- while ( $token = $tokenizer->nextToken() )
- {
- switch ( $token["type"] )
- {
- case "text":
- # simple text with no further markup
- $txt = $token["text"];
- break;
- case "blank":
- # Text that contains blanks that have to be converted to
- # non-breakable spaces for French.
- # U+202F NARROW NO-BREAK SPACE might be a better choice, but
- # browser support for Unicode spacing is poor.
- $txt = str_replace( " ", "&nbsp;", $token["text"] );
- break;
- case "[[[":
- # remember the tag opened with 3 [
- $threeopen = true;
- case "[[":
- # link opening tag.
- # FIXME : Treat orphaned open tags (stack not empty when text is over)
- $tagIsOpen = TRUE;
- array_push( $tokenStack, $token );
- $txt="";
- break;
-
- case "]]]":
- case "]]":
- # link close tag.
- # get text from stack, glue it together, and call the code to handle a
- # link
-
- if ( count( $tokenStack ) == 0 )
- {
- # stack empty. Found a ]] without an opening [[
- $txt = "]]";
- } else {
- $linkText = "";
- $lastToken = array_pop( $tokenStack );
- while ( !(($lastToken["type"] == "[[[") or ($lastToken["type"] == "[[")) )
- {
- if( !empty( $lastToken["text"] ) ) {
- $linkText = $lastToken["text"] . $linkText;
- }
- $lastToken = array_pop( $tokenStack );
- }
-
- $txt = $linkText ."]]";
-
- if( isset( $lastToken["text"] ) ) {
- $prefix = $lastToken["text"];
- } else {
- $prefix = "";
- }
- $nextToken = $tokenizer->previewToken();
- if ( $nextToken["type"] == "text" )
- {
- # Preview just looks at it. Now we have to fetch it.
- $nextToken = $tokenizer->nextToken();
- $txt .= $nextToken["text"];
- }
- $txt = $this->handleInternalLink( $this->unstrip($txt,$this->mStripState), $prefix );
-
- # did the tag start with 3 [ ?
- if($threeopen) {
- # show the first as text
- $txt = "[".$txt;
- $threeopen=false;
- }
-
- }
- $tagIsOpen = (count( $tokenStack ) != 0);
- break;
- case "----":
- $txt = "\n<hr />\n";
- break;
- case "'''":
- # This and the four next ones handle quotes
- $txt = $this->handle3Quotes( $state, $token );
- break;
- case "''":
- $txt = $this->handle2Quotes( $state, $token );
- break;
- case "'''''":
- $txt = $this->handle5Quotes( $state, $token );
- break;
- case "''''":
- $txt = $this->handle4Quotes( $state, $token );
- break;
- case "":
- # empty token
- $txt="";
- break;
- case "h":
- #heading- used to close all unbalanced bold or em tags in this section
- $txt = '';
- if( $state['em'] !== false and
- ( $state['strong'] === false or $state['em'] > $state['strong'] ) )
- {
- $s .= '</em>';
- $state['em'] = false;
- }
- if ( $state['strong'] !== false ) $txt .= '</strong>';
- if ( $state['em'] !== false ) $txt .= '</em>';
- $state['strong'] = $state['em'] = false;
- break;
- case "RFC ":
- if ( $tagIsOpen ) {
- $txt = "RFC ";
- } else {
- $txt = $this->doMagicRFC( $tokenizer );
- }
- break;
- case "ISBN ":
- if ( $tagIsOpen ) {
- $txt = "ISBN ";
- } else {
- $txt = $this->doMagicISBN( $tokenizer );
- }
- break;
- case "<timeline>":
- if ( $wgUseTimeline &&
- "" != ( $timelinesrc = $tokenizer->readAllUntil("&lt;/timeline&gt;") ) )
- {
- $txt = renderTimeline( $timelinesrc );
- } else {
- $txt=$token["text"];
- }
- break;
- default:
- # Call language specific Hook.
- $txt = $wgLang->processToken( $token, $tokenStack );
- if ( NULL == $txt ) {
- # An unkown token. Highlight.
- $txt = "<font color=\"#FF0000\"><b>".$token["type"]."</b></font>";
- $txt .= "<font color=\"#FFFF00\"><b>".$token["text"]."</b></font>";
- }
- break;
- }
- # If we're parsing the interior of a link, don't append the interior to $s,
- # but push it to the stack so it can be processed when a ]] token is found.
- if ( $tagIsOpen && $txt != "" ) {
- $token["type"] = "text";
- $token["text"] = $txt;
- array_push( $tokenStack, $token );
- } else {
- $s .= $txt;
- }
- } #end while
-
- # make 100% sure all strong and em tags are closed
- # doBlockLevels often messes the last bit up though, but invalid nesting is better than unclosed tags
- # tidy solves this though
- if( $state['em'] !== false and
- ( $state['strong'] === false or $state['em'] > $state['strong'] ) )
- {
- $s .= '</em>';
- $state['em'] = false;
- }
- if ( $state['strong'] !== false ) $s .= '</strong>';
- if ( $state['em'] !== false ) $s .= '</em>';
-
- if ( count( $tokenStack ) != 0 )
- {
- # still objects on stack. opened [[ tag without closing ]] tag.
- $txt = "";
- while ( $lastToken = array_pop( $tokenStack ) )
- {
- if ( $lastToken["type"] == "text" )
- {
- $txt = $lastToken["text"] . $txt;
- } else {
- $txt = $lastToken["type"] . $txt;
- }
- }
- $s .= $txt;
- }
- return $s;
- }
-
- /* private */ function handleInternalLink( $line, $prefix )
- {
+ /* private */ function replaceInternalLinks( $s ) {
global $wgLang, $wgLinkCache;
global $wgNamespacesWithSubpages, $wgLanguageCode;
- static $fname = "Parser::handleInternalLink" ;
+ static $fname = 'Parser::replaceInternalLinks' ;
wfProfileIn( $fname );
- wfProfileIn( "$fname-setup" );
+ wfProfileIn( $fname.'-setup' );
static $tc = FALSE;
- if ( !$tc ) { $tc = Title::legalChars() . "#"; }
+ # the % is needed to support urlencoded titles as well
+ if ( !$tc ) { $tc = Title::legalChars() . '#%'; }
$sk =& $this->mOptions->getSkin();
+ $a = explode( '[[', ' ' . $s );
+ $s = array_shift( $a );
+ $s = substr( $s, 1 );
+
# Match a link having the form [[namespace:link|alternate]]trail
static $e1 = FALSE;
if ( !$e1 ) { $e1 = "/^([{$tc}]+)(?:\\|([^]]+))?]](.*)\$/sD"; }
# Match the end of a line for a word that's not followed by whitespace,
# e.g. in the case of 'The Arab al[[Razi]]', 'al' will be matched
- #$e2 = "/^(.*)\\b(\\w+)\$/suD";
- #$e2 = "/^(.*\\s)(\\S+)\$/suD";
- static $e2 = '/^(.*\s)([a-zA-Z\x80-\xff]+)$/sD';
-
+ static $e2 = '/^(.*?)([a-zA-Z\x80-\xff]+)$/sD';
+ $useLinkPrefixExtension = $wgLang->linkPrefixExtension();
# Special and Media are pseudo-namespaces; no pages actually exist in them
static $image = FALSE;
static $special = FALSE;
@@ -971,120 +1020,148 @@ class Parser
$nottalk = !Namespace::isTalk( $this->mTitle->getNamespace() );
- wfProfileOut( "$fname-setup" );
- $s = "";
-
- if ( preg_match( $e1, $line, $m ) ) { # page with normal text or alt
- $text = $m[2];
- $trail = $m[3];
- } else { # Invalid form; output directly
- $s .= $prefix . "[[" . $line ;
- return $s;
+ if ( $useLinkPrefixExtension ) {
+ if ( preg_match( $e2, $s, $m ) ) {
+ $first_prefix = $m[2];
+ $s = $m[1];
+ } else {
+ $first_prefix = false;
+ }
+ } else {
+ $prefix = '';
}
- /* Valid link forms:
- Foobar -- normal
- :Foobar -- override special treatment of prefix (images, language links)
- /Foobar -- convert to CurrentPage/Foobar
- /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
- $m[1]=substr($m[1],1,strlen($m[1])-2);
- $noslash=$m[1];
- } else {
- $noslash=substr($m[1],1);
+ wfProfileOut( $fname.'-setup' );
+
+ foreach ( $a as $line ) {
+ wfProfileIn( $fname.'-prefixhandling' );
+ if ( $useLinkPrefixExtension ) {
+ if ( preg_match( $e2, $s, $m ) ) {
+ $prefix = $m[2];
+ $s = $m[1];
+ } else {
+ $prefix='';
+ }
+ # first link
+ if($first_prefix) {
+ $prefix = $first_prefix;
+ $first_prefix = false;
+ }
}
- if($wgNamespacesWithSubpages[$this->mTitle->getNamespace()]) { # subpages allowed here
- $link = $this->mTitle->getPrefixedText(). "/" . trim($noslash);
- if( "" == $text ) {
- $text= $m[1];
- } # this might be changed for ugliness reasons
+ 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]);
+ $trail = $m[3];
+ } else { # Invalid form; output directly
+ $s .= $prefix . '[[' . $line ;
+ continue;
+ }
+
+ /* Valid link forms:
+ Foobar -- normal
+ :Foobar -- override special treatment of prefix (images, language links)
+ /Foobar -- convert to CurrentPage/Foobar
+ /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
+ $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 ) {
+ $text= $m[1];
+ } # this might be changed for ugliness reasons
+ } else {
+ $link = $noslash; # no subpage allowed, use standard link
+ }
+ } elseif( $noforce ) { # no subpage
+ $link = $m[1];
} else {
- $link = $noslash; # no subpage allowed, use standard link
+ $link = substr( $m[1], 1 );
}
- } elseif( $noforce ) { # no subpage
- $link = $m[1];
- } else {
- $link = substr( $m[1], 1 );
- }
- $wasblank = ( "" == $text );
- if( $wasblank )
+ $wasblank = ( '' == $text );
+ if( $wasblank )
$text = $link;
- $nt = Title::newFromText( $link );
- if( !$nt ) {
- $s .= $prefix . "[[" . $line;
- return $s;
- }
- $ns = $nt->getNamespace();
- $iw = $nt->getInterWiki();
- if( $noforce ) {
- if( $iw && $this->mOptions->getInterwikiMagic() && $nottalk && $wgLang->getLanguageName( $iw ) ) {
- array_push( $this->mOutput->mLanguageLinks, $nt->getPrefixedText() );
- $s .= $prefix . $trail ;
- return (trim($s) == '')? '': $s;
- }
- if( $ns == $image ) {
- $s .= $prefix . $sk->makeImageLinkObj( $nt, $text ) . $trail;
- $wgLinkCache->addImageLinkObj( $nt );
- return $s;
+ $nt = Title::newFromText( $link );
+ if( !$nt ) {
+ $s .= $prefix . '[[' . $line;
+ continue;
}
- if ( $ns == $category ) {
- $t = $nt->getText() ;
- $nnt = Title::newFromText ( Namespace::getCanonicalName($category).":".$t ) ;
-
- $wgLinkCache->suspend(); # Don't save in links/brokenlinks
- $t = $sk->makeLinkObj( $nnt, $t, "", "" , $prefix );
- $wgLinkCache->resume();
-
- $sortkey = $wasblank ? $this->mTitle->getPrefixedText() : $text;
- $wgLinkCache->addCategoryLinkObj( $nt, $sortkey );
- $this->mOutput->mCategoryLinks[] = $t ;
- $s .= $prefix . $trail ;
- return $s ;
+ $ns = $nt->getNamespace();
+ $iw = $nt->getInterWiki();
+ if( $noforce ) {
+ if( $iw && $this->mOptions->getInterwikiMagic() && $nottalk && $wgLang->getLanguageName( $iw ) ) {
+ array_push( $this->mOutput->mLanguageLinks, $nt->getFullText() );
+ $tmp = $prefix . $trail ;
+ $s .= (trim($tmp) == '')? '': $tmp;
+ continue;
+ }
+ if ( $ns == $image ) {
+ $s .= $prefix . $sk->makeImageLinkObj( $nt, $text ) . $trail;
+ $wgLinkCache->addImageLinkObj( $nt );
+ continue;
+ }
+ if ( $ns == $category ) {
+ $t = $nt->getText() ;
+ $nnt = Title::newFromText ( Namespace::getCanonicalName($category).":".$t ) ;
+
+ $wgLinkCache->suspend(); # Don't save in links/brokenlinks
+ $t = $sk->makeLinkObj( $nnt, $t, '', '' , $prefix );
+ $wgLinkCache->resume();
+
+ $sortkey = $wasblank ? $this->mTitle->getPrefixedText() : $text;
+ $wgLinkCache->addCategoryLinkObj( $nt, $sortkey );
+ $this->mOutput->mCategoryLinks[] = $t ;
+ $s .= $prefix . $trail ;
+ continue;
+ }
+ }
+ if( ( $nt->getPrefixedText() == $this->mTitle->getPrefixedText() ) &&
+ ( strpos( $link, '#' ) == FALSE ) ) {
+ # Self-links are handled specially; generally de-link and change to bold.
+ $s .= $prefix . $sk->makeSelfLinkObj( $nt, $text, '', $trail );
+ continue;
}
- }
- if( ( $nt->getPrefixedText() == $this->mTitle->getPrefixedText() ) &&
- ( strpos( $link, "#" ) == FALSE ) ) {
- # Self-links are handled specially; generally de-link and change to bold.
- $s .= $prefix . $sk->makeSelfLinkObj( $nt, $text, "", $trail );
- return $s;
- }
- if( $ns == $media ) {
- $s .= $prefix . $sk->makeMediaLinkObj( $nt, $text ) . $trail;
- $wgLinkCache->addImageLinkObj( $nt );
- return $s;
- } elseif( $ns == $special ) {
- $s .= $prefix . $sk->makeKnownLinkObj( $nt, $text, "", $trail );
- return $s;
+ if( $ns == $media ) {
+ $s .= $prefix . $sk->makeMediaLinkObj( $nt, $text ) . $trail;
+ $wgLinkCache->addImageLinkObj( $nt );
+ continue;
+ } elseif( $ns == $special ) {
+ $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;
}
# Some functions here used by doBlockLevels()
#
- /* private */ function closeParagraph()
- {
- $result = "";
+ /* private */ function closeParagraph() {
+ $result = '';
if ( '' != $this->mLastSection ) {
- $result = "</" . $this->mLastSection . ">\n";
+ $result = '</' . $this->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; }
@@ -1101,55 +1178,53 @@ class Parser
{
$result = $this->closeParagraph();
- if ( "*" == $char ) { $result .= "<ul><li>"; }
- else if ( "#" == $char ) { $result .= "<ol><li>"; }
- else if ( ":" == $char ) { $result .= "<dl><dd>"; }
- else if ( ";" == $char ) {
- $result .= "<dl><dt>";
+ if ( '*' == $char ) { $result .= '<ul><li>'; }
+ else if ( '#' == $char ) { $result .= '<ol><li>'; }
+ else if ( ':' == $char ) { $result .= '<dl><dd>'; }
+ else if ( ';' == $char ) {
+ $result .= '<dl><dt>';
$this->mDTopen = true;
}
- else { $result = "<!-- ERR 1 -->"; }
+ else { $result = '<!-- ERR 1 -->'; }
return $result;
}
- /* private */ function nextItem( $char )
- {
- if ( "*" == $char || "#" == $char ) { return "</li><li>"; }
- else if ( ":" == $char || ";" == $char ) {
+ /* private */ function nextItem( $char ) {
+ if ( '*' == $char || '#' == $char ) { return '</li><li>'; }
+ else if ( ':' == $char || ';' == $char ) {
$close = "</dd>";
- if ( $this->mDTopen ) { $close = "</dt>"; }
- if ( ";" == $char ) {
+ if ( $this->mDTopen ) { $close = '</dt>'; }
+ if ( ';' == $char ) {
$this->mDTopen = true;
- return $close . "<dt>";
+ return $close . '<dt>';
} else {
$this->mDTopen = false;
- return $close . "<dd>";
+ return $close . '<dd>';
}
}
- return "<!-- ERR 2 -->";
+ return '<!-- ERR 2 -->';
}
- /* private */function closeList( $char )
- {
- if ( "*" == $char ) { $text = "</li></ul>"; }
- else if ( "#" == $char ) { $text = "</li></ol>"; }
- else if ( ":" == $char ) {
+ /* private */function closeList( $char ) {
+ if ( '*' == $char ) { $text = '</li></ul>'; }
+ else if ( '#' == $char ) { $text = '</li></ol>'; }
+ else if ( ':' == $char ) {
if ( $this->mDTopen ) {
$this->mDTopen = false;
- $text = "</dt></dl>";
+ $text = '</dt></dl>';
} else {
- $text = "</dd></dl>";
+ $text = '</dd></dl>';
}
}
- else { return "<!-- ERR 3 -->"; }
+ else { return '<!-- ERR 3 -->'; }
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
# happening here is handling of block-level elements p, pre,
# and making lists from lines starting with * # : etc.
@@ -1168,17 +1243,15 @@ class Parser
$lastPrefixLength = strlen( $lastPrefix );
$preCloseMatch = preg_match("/<\\/pre/i", $oLine );
$preOpenMatch = preg_match("/<pre/i", $oLine );
- if (!$this->mInPre) {
- $this->mInPre = !empty($preOpenMatch);
- }
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 );
+ $this->mInPre = !empty($preOpenMatch);
} else {
# Don't interpret any other prefixes in preformatted text
$prefixLength = 0;
@@ -1200,7 +1273,7 @@ class Parser
# FIXME: This is not foolproof. Something better in Tokenizer might help.
if( preg_match( '/^(.*?(?:\s|&nbsp;)):(.*)$/', $t, $match ) ) {
$term = $match[1];
- $output .= $term . $this->nextItem( ":" );
+ $output .= $term . $this->nextItem( ':' );
$t = $match[2];
}
}
@@ -1220,7 +1293,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|&nbsp;)):(.*)$/', $t, $match ) ) {
$term = $match[1];
@@ -1236,10 +1309,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("/(<table|<blockquote|<h1|<h2|<h3|<h4|<h5|<h6|<div|<pre|<tr|<td|<p|<ul|<li)/i", $t );
+ $openmatch = preg_match('/(<table|<blockquote|<h1|<h2|<h3|<h4|<h5|<h6|<pre|<tr|<p|<ul|<li|<\\/tr|<\\/td|<\\/th)/i', $t );
$closematch = preg_match(
- "/(<\\/table|<\\/blockquote|<\\/h1|<\\/h2|<\\/h3|<\\/h4|<\\/h5|<\\/h6|".
- "<\\/div|<hr|<\\/td|<\\/pre|<\\/p|".$uniq_prefix."-pre|<\\/li|<\\/ul)/i", $t );
+ '/(<\\/table|<\\/blockquote|<\\/h1|<\\/h2|<\\/h3|<\\/h4|<\\/h5|<\\/h6|'.
+ '<td|<th|<div|<\\/div|<hr|<\\/pre|<\\/p|'.$uniq_prefix.'-pre|<\\/li|<\\/ul)/i', $t );
if ( $openmatch or $closematch ) {
$paragraphStack = false;
$output .= $this->closeParagraph();
@@ -1251,8 +1324,8 @@ class Parser
} else {
$inBlockElem = true;
}
- } else if ( !$inBlockElem ) {
- if ( " " == $t{0} and trim($t) != '' ) {
+ } else if ( !$inBlockElem && !$this->mInPre ) {
+ if ( " " == $t{0} and ( $this->mLastSection == 'pre' or trim($t) != '' ) ) {
// pre
if ($this->mLastSection != 'pre') {
$paragraphStack = false;
@@ -1263,14 +1336,14 @@ class Parser
// paragraph
if ( '' == trim($t) ) {
if ( $paragraphStack ) {
- $output .= $paragraphStack.'<br/>';
+ $output .= $paragraphStack.'<br />';
$paragraphStack = false;
$this->mLastSection = 'p';
} else {
if ($this->mLastSection != 'p' ) {
$output .= $this->closeParagraph();
$this->mLastSection = '';
- $paragraphStack = "<p>";
+ $paragraphStack = '<p>';
} else {
$paragraphStack = '</p><p>';
}
@@ -1296,40 +1369,41 @@ class Parser
$output .= $this->closeList( $pref2{$prefixLength-1} );
--$prefixLength;
}
- if ( "" != $this->mLastSection ) {
- $output .= "</" . $this->mLastSection . ">";
- $this->mLastSection = "";
+ if ( '' != $this->mLastSection ) {
+ $output .= '</' . $this->mLastSection . '>';
+ $this->mLastSection = '';
}
wfProfileOut( $fname );
return $output;
}
+ # Return value of a magic variable (like PAGENAME)
function getVariableValue( $index ) {
global $wgLang, $wgSitename, $wgServer;
switch ( $index ) {
case MAG_CURRENTMONTH:
- return date( "m" );
+ return $wgLang->formatNum( 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 $wgLang->formatNum( 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 $wgLang->formatNum( date( 'Y' ) );
case MAG_CURRENTTIME:
return $wgLang->time( wfTimestampNow(), false );
case MAG_NUMBEROFARTICLES:
- return wfNumberOfArticles();
+ return $wgLang->formatNum( wfNumberOfArticles() );
case MAG_SITENAME:
return $wgSitename;
case MAG_SERVER:
@@ -1339,8 +1413,8 @@ class Parser
}
}
- function initialiseVariables()
- {
+ # initialise the magic variables (like CURRENTMONTHNAME)
+ function initialiseVariables() {
global $wgVariableIDs;
$this->mVariables = array();
foreach ( $wgVariableIDs as $id ) {
@@ -1349,11 +1423,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;
@@ -1361,26 +1434,74 @@ class Parser
$this->initialiseVariables();
}
$titleChars = Title::legalChars();
- $regex = "/(\\n?){{([$titleChars]*?)(\\|.*?|)}}/s";
+ $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 );
# PHP global rebinding syntax is a bit weird, need to use the GLOBALS array
$GLOBALS['wgCurParser'] =& $this;
- $text = preg_replace_callback( $regex, "wfBraceSubstitution", $text );
+
+
+ if ( $this->mOutputType == OT_HTML ) {
+ # Variable substitution
+ $text = preg_replace_callback( "/{{([$nonBraceChars]*?)}}/", 'wfVariableSubstitution', $text );
+
+ # Argument substitution
+ $text = preg_replace_callback( "/(\\n?){{{([$titleChars]*?)}}}/", 'wfArgSubstitution', $text );
+ }
+ # Template substitution
+ $regex = '/(\\n?){{(['.$nonBraceChars.']*)(\\|.*?|)}}/s';
+ $text = preg_replace_callback( $regex, 'wfBraceSubstitution', $text );
array_pop( $this->mArgStack );
+ wfProfileOut( $fname );
return $text;
}
- function braceSubstitution( $matches )
- {
+ function variableSubstitution( $matches ) {
+ if ( array_key_exists( $matches[1], $this->mVariables ) ) {
+ $text = $this->mVariables[$matches[1]];
+ $this->mOutput->mContainsOldMagic = true;
+ } else {
+ $text = $matches[0];
+ }
+ return $text;
+ }
+
+ # Split template arguments
+ function getTemplateArgs( $argsString ) {
+ if ( $argsString === '' ) {
+ return array();
+ }
+
+ $args = explode( '|', substr( $argsString, 1 ) );
+
+ # If any of the arguments contains a '[[' but no ']]', it needs to be
+ # merged with the next arg because the '|' character between belongs
+ # to the link syntax and not the template parameter syntax.
+ $argc = count($args);
+ $i = 0;
+ for ( $i = 0; $i < $argc-1; $i++ ) {
+ if ( substr_count ( $args[$i], "[[" ) != substr_count ( $args[$i], "]]" ) ) {
+ $args[$i] .= "|".$args[$i+1];
+ array_splice($args, $i+1, 1);
+ $i--;
+ $argc--;
+ }
+ }
+
+ return $args;
+ }
+
+ function braceSubstitution( $matches ) {
global $wgLinkCache, $wgLang;
- $fname = "Parser::braceSubstitution";
+ $fname = 'Parser::braceSubstitution';
$found = false;
$nowiki = false;
+ $noparse = false;
+
$title = NULL;
# $newline is an optional newline character before the braces
@@ -1390,26 +1511,33 @@ 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 ) );
- } else {
- $args = array();
- }
+
+ $args = $this->getTemplateArgs($matches[3]);
$argc = count( $args );
+
+ # {{{}}}
+ if ( strpos( $matches[0], '{{{' ) !== false ) {
+ $text = $matches[0];
+ $found = true;
+ $noparse = true;
+ }
# SUBST
- $mwSubst =& MagicWord::get( MAG_SUBST );
- if ( $mwSubst->matchStartAndRemove( $part1 ) ) {
- if ( $this->mOutputType != OT_WIKI ) {
- # Invalid SUBST not replaced at PST time
- # Return without further processing
+ if ( !$found ) {
+ $mwSubst =& MagicWord::get( MAG_SUBST );
+ if ( $mwSubst->matchStartAndRemove( $part1 ) ) {
+ if ( $this->mOutputType != OT_WIKI ) {
+ # Invalid SUBST not replaced at PST time
+ # Return without further processing
+ $text = $matches[0];
+ $found = true;
+ $noparse= true;
+ }
+ } elseif ( $this->mOutputType == OT_WIKI ) {
+ # SUBST not found in PST pass, do nothing
$text = $matches[0];
$found = true;
}
- } elseif ( $this->mOutputType == OT_WIKI ) {
- # SUBST not found in PST pass, do nothing
- $text = $matches[0];
- $found = true;
}
# MSG, MSGNW and INT
@@ -1427,7 +1555,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;
}
@@ -1484,14 +1612,14 @@ class Parser
$found = true;
$this->mOutput->mContainsOldMagic = true;
}
-
+/*
# Arguments input from the caller
$inputArgs = end( $this->mArgStack );
if ( !$found && array_key_exists( $part1, $inputArgs ) ) {
$text = $inputArgs[$part1];
$found = true;
}
-
+*/
# Load from database
if ( !$found ) {
$title = Title::newFromText( $part1, NS_TEMPLATE );
@@ -1510,7 +1638,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;
}
}
@@ -1520,19 +1648,19 @@ class Parser
# Only for HTML output
if ( $nowiki && $found && $this->mOutputType == OT_HTML ) {
$text = wfEscapeWikiText( $text );
- } elseif ( $this->mOutputType == OT_HTML && $found ) {
+ } elseif ( $this->mOutputType == OT_HTML && $found && !$noparse) {
# Clean up argument array
$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;
@@ -1546,13 +1674,7 @@ class Parser
}
# Run full parser on the included text
- $text = $this->strip( $text, $this->mStripState );
- $text = $this->internalParse( $text, (bool)$newline, $assocArgs, false );
- if(!empty($newline)) $text = "\n".$text;
-
- # Add the result to the strip state for re-inclusion after
- # the rest of the processing
- $text = $this->insertStripItem( $text, $this->mStripState );
+ $text = $this->stripParse( $text, $newline, $assocArgs );
# Resume the link cache and register the inclusion as a link
if ( !is_null( $title ) ) {
@@ -1568,9 +1690,22 @@ class Parser
}
}
+ # Triple brace replacement -- used for template arguments
+ function argSubstitution( $matches ) {
+ $newline = $matches[1];
+ $arg = trim( $matches[2] );
+ $text = $matches[0];
+ $inputArgs = end( $this->mArgStack );
+
+ if ( array_key_exists( $arg, $inputArgs ) ) {
+ $text = $this->stripParse( $inputArgs[$arg], $newline, array() );
+ }
+
+ return $text;
+ }
+
# 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;
}
@@ -1583,29 +1718,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();
@@ -1620,15 +1754,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 );
@@ -1639,25 +1773,25 @@ class Parser
if ( $slash ) {
# Closing a tag...
if ( ! in_array( $t, $htmlsingle ) &&
- ( count($tagstack) && $ot = array_pop( $tagstack ) ) != $t ) {
- if(!empty($ot)) array_push( $tagstack, $ot );
+ ( $ot = @array_pop( $tagstack ) ) != $t ) {
+ @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();
}
@@ -1668,30 +1802,30 @@ class Parser
}
if ( ! $badtag ) {
- $rest = str_replace( ">", "&gt;", $rest );
+ $rest = str_replace( '>', '&gt;', $rest );
$text .= "<$slash$t $newparams$brace$rest";
continue;
}
}
- $text .= "&lt;" . str_replace( ">", "&gt;", $x);
+ $text .= '&lt;' . str_replace( '>', '&gt;', $x);
}
# Close off any remaining tags
- while ( $t = array_pop( $tagstack ) ) {
+ while ( is_array( $tagstack ) && ($t = array_pop( $tagstack )) ) {
$text .= "</$t>\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( ">", "&gt;", $rest );
+ $rest = str_replace( '>', '&gt;', $rest );
$text .= "<$slash$t $newparams$brace$rest";
} else {
- $text .= "&lt;" . str_replace( ">", "&gt;", $x);
+ $text .= '&lt;' . str_replace( '>', '&gt;', $x);
}
}
}
@@ -1713,12 +1847,12 @@ class Parser
*
*/
- /* private */ function formatHeadings( $text, $isMain=true )
- {
- global $wgInputEncoding;
+ /* private */ function formatHeadings( $text, $isMain=true ) {
+ global $wgInputEncoding, $wgMaxTocLevel;
$doNumberHeadings = $this->mOptions->getNumberHeadings();
$doShowToc = $this->mOptions->getShowToc();
+ $forceTocHere = false;
if( !$this->mTitle->userCanEdit() ) {
$showEditLink = 0;
$rightClickHack = 0;
@@ -1741,25 +1875,34 @@ 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])(.*?" . ">)(.*?)<\/H[1-6]>/i", $text, $matches );
+ $numMatches = preg_match_all( '/<H([1-6])(.*?' . '>)(.*?)<\/H[1-6]>/i', $text, $matches );
# if there are fewer than 4 headlines in the article, do not show TOC
if( $numMatches < 4 ) {
$doShowToc = 0;
}
- # if the string __FORCETOC__ (not case-sensitive) occurs in the HTML,
- # override above conditions and always show TOC
- $mw =& MagicWord::get( MAG_FORCETOC );
- if ($mw->matchAndRemove( $text ) ) {
+ # if the string __TOC__ (not case-sensitive) occurs in the HTML,
+ # override above conditions and always show TOC at that place
+ $mw =& MagicWord::get( MAG_TOC );
+ if ($mw->match( $text ) ) {
$doShowToc = 1;
+ $forceTocHere = true;
+ } else {
+ # if the string __FORCETOC__ (not case-sensitive) occurs in the HTML,
+ # override above conditions and always show TOC above first header
+ $mw =& MagicWord::get( MAG_FORCETOC );
+ if ($mw->matchAndRemove( $text ) ) {
+ $doShowToc = 1;
+ }
}
+
# We need this to perform operations on the HTML
@@ -1771,14 +1914,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;
}
@@ -1802,7 +1945,7 @@ class Parser
for( $i = 1; $i <= $level; $i++ ) {
if( !empty( $sublevelCount[$i] ) ) {
if( $dot ) {
- $numbering .= ".";
+ $numbering .= '.';
}
$numbering .= $sublevelCount[$i];
$dot = 1;
@@ -1813,13 +1956,17 @@ class Parser
# The canonized header is a version of the header text safe to use for links
# Avoid insertion of weird stuff like <math> by expanding the relevant sections
$canonized_headline = $this->unstrip( $headline, $this->mStripState );
+ $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 = preg_replace("/[ \\?&\\/<>\\(\\)\\[\\]=,+']+/", '_', urlencode( do_html_entity_decode( $tocline, ENT_COMPAT, $wgInputEncoding ) ) );
- # strip out urlencoded &nbsp; (inserted for french spaces, e.g. first space in 'something : something')
- $canonized_headline = str_replace('%C2%A0','_', $canonized_headline);
+ $canonized_headline = urlencode( do_html_entity_decode( str_replace(' ', '_', $tocline), ENT_COMPAT, $wgInputEncoding ) );
+ $replacearray = array(
+ '%3A' => ':',
+ '%' => '.'
+ );
+ $canonized_headline = str_replace(array_keys($replacearray),array_values($replacearray),$canonized_headline);
$refer[$headlineCount] = $canonized_headline;
# count how many in assoc. array so we can track dupes in anchors
@@ -1829,26 +1976,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 ) {
+ if( $doShowToc && ( !isset($wgMaxTocLevel) || $toclevel<$wgMaxTocLevel ) ) {
$toc .= $sk->tocLine($anchor,$tocline,$toclevel);
}
if( $showEditLink ) {
if ( empty( $head[$headlineCount] ) ) {
- $head[$headlineCount] = "";
+ $head[$headlineCount] = '';
}
$head[$headlineCount] .= $sk->editSectionLink($headlineCount+1);
}
@@ -1872,7 +2019,7 @@ class Parser
# split up and insert constructed headlines
- $blocks = preg_split( "/<H[1-6].*?" . ">.*?<\/H[1-6]>/i", $text );
+ $blocks = preg_split( '/<H[1-6].*?' . '>.*?<\/H[1-6]>/i', $text );
$i = 0;
foreach( $blocks as $block ) {
@@ -1885,7 +2032,7 @@ class Parser
# $full .= $sk->editSectionLink(0);
}
$full .= $block;
- if( $doShowToc && !$i && $isMain) {
+ if( $doShowToc && !$i && $isMain && !$forceTocHere) {
# Top anchor now in skin
$full = $full.$toc;
}
@@ -1895,77 +2042,62 @@ class Parser
}
$i++;
}
-
- return $full;
+ if($forceTocHere) {
+ $mw =& MagicWord::get( MAG_TOC );
+ return $mw->replace( $toc, $full );
+ } else {
+ return $full;
+ }
}
- /* private */ function doMagicISBN( &$tokenizer )
- {
+ # Return an HTML link for the "ISBN 123456" text
+ /* private */ function magicISBN( $text ) {
global $wgLang;
- # Check whether next token is a text token
- # If yes, fetch it and convert the text into a
- # Special::BookSources link
- $token = $tokenizer->previewToken();
- while ( $token["type"] == "" )
- {
- $tokenizer->nextToken();
- $token = $tokenizer->previewToken();
- }
- if ( $token["type"] == "text" )
- {
- $token = $tokenizer->nextToken();
- $x = $token["text"];
- $valid = "0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ $a = split( 'ISBN ', " $text" );
+ if ( count ( $a ) < 2 ) return $text;
+ $text = substr( array_shift( $a ), 1);
+ $valid = '0123456789-ABCDEFGHIJKLMNOPQRSTUVWXYZ';
- $isbn = $blank = "" ;
- while ( " " == $x{0} ) {
- $blank .= " ";
+ foreach ( $a as $x ) {
+ $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 ) {
- $text = "ISBN $blank$x";
+ if ( '' == $num ) {
+ $text .= "ISBN $blank$x";
} else {
- $titleObj = Title::makeTitle( NS_SPECIAL, "Booksources" );
- $text = "<a href=\"" .
+ $titleObj = Title::makeTitle( NS_SPECIAL, 'Booksources' );
+ $text .= '<a href="' .
$titleObj->escapeLocalUrl( "isbn={$num}" ) .
"\" class=\"internal\">ISBN $isbn</a>";
$text .= $x;
}
- } else {
- $text = "ISBN ";
}
return $text;
}
- /* private */ function doMagicRFC( &$tokenizer )
- {
+
+ # Return an HTML link for the "RFC 1234" text
+ /* private */ function magicRFC( $text ) {
global $wgLang;
- # Check whether next token is a text token
- # If yes, fetch it and convert the text into a
- # link to an RFC source
- $token = $tokenizer->previewToken();
- while ( $token["type"] == "" )
- {
- $tokenizer->nextToken();
- $token = $tokenizer->previewToken();
- }
- if ( $token["type"] == "text" )
- {
- $token = $tokenizer->nextToken();
- $x = $token["text"];
- $valid = "0123456789";
+ $a = split( 'RFC ', ' '.$text );
+ if ( count ( $a ) < 2 ) return $text;
+ $text = substr( array_shift( $a ), 1);
+ $valid = '0123456789';
- $rfc = $blank = "" ;
- while ( " " == $x{0} ) {
- $blank .= " ";
+ foreach ( $a as $x ) {
+ $rfc = $blank = '' ;
+ while ( ' ' == $x{0} ) {
+ $blank .= ' ';
$x = substr( $x, 1 );
}
while ( strstr( $valid, $x{0} ) != false ) {
@@ -1973,23 +2105,20 @@ 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 = "<a href='{$url}'{$la}>RFC {$rfc}</a>{$x}";
+ $text .= "<a href='{$url}'{$la}>RFC {$rfc}</a>{$x}";
}
- } else {
- $text = "RFC ";
}
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;
@@ -2004,19 +2133,21 @@ class Parser
);
$text = str_replace(array_keys($pairs), array_values($pairs), $text);
// now with regexes
+ /*
$pairs = array(
"/<br.+(clear|break)=[\"']?(all|both)[\"']?\\/?>/i" => '<br style="clear:both;"/>',
- "/<br *?>/i" => "<br/>",
+ "/<br *?>/i" => "<br />",
);
$text = preg_replace(array_keys($pairs), array_values($pairs), $text);
+ */
$text = $this->strip( $text, $stripState, false );
$text = $this->pstPass2( $text, $user );
$text = $this->unstrip( $text, $stripState );
+ $text = $this->unstripNoWiki( $text, $stripState );
return $text;
}
- /* private */ function pstPass2( $text, &$user )
- {
+ /* private */ function pstPass2( $text, &$user ) {
global $wgLang, $wgLocaltimezone, $wgCurParser;
# Variable replacement
@@ -2026,20 +2157,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)|]]
@@ -2059,12 +2190,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 );
}
@@ -2088,8 +2219,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;
@@ -2117,11 +2247,21 @@ class Parser
$executing = false;
return $text;
}
+
+ # Create an HTML-style tag, e.g. <yourtag>special text</yourtag>
+ # 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
{
var $mText, $mLanguageLinks, $mCategoryLinks, $mContainsOldMagic;
+ var $mCacheTime; # Used in ParserCache
function ParserOutput( $text = "", $languageLinks = array(), $categoryLinks = array(),
$containsOldMagic = false )
@@ -2130,16 +2270,19 @@ class ParserOutput
$this->mLanguageLinks = $languageLinks;
$this->mCategoryLinks = $categoryLinks;
$this->mContainsOldMagic = $containsOldMagic;
+ $this->mCacheTime = "";
}
function getText() { return $this->mText; }
function getLanguageLinks() { return $this->mLanguageLinks; }
function getCategoryLinks() { return $this->mCategoryLinks; }
+ function getCacheTime() { return $this->mCacheTime; }
function containsOldMagic() { return $this->mContainsOldMagic; }
function setText( $text ) { return wfSetVar( $this->mText, $text ); }
function setLanguageLinks( $ll ) { return wfSetVar( $this->mLanguageLinks, $ll ); }
function setCategoryLinks( $cl ) { return wfSetVar( $this->mCategoryLinks, $cl ); }
function setContainsOldMagic( $com ) { return wfSetVar( $this->mContainsOldMagic, $com ); }
+ function setCacheTime( $t ) { return wfSetVar( $this->mCacheTime, $t ); }
function merge( $other ) {
$this->mLanguageLinks = array_merge( $this->mLanguageLinks, $other->mLanguageLinks );
@@ -2164,39 +2307,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 ) {
@@ -2212,11 +2354,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' );
}
@@ -2229,4 +2371,16 @@ function wfBraceSubstitution( $matches )
return $wgCurParser->braceSubstitution( $matches );
}
+function wfArgSubstitution( $matches )
+{
+ global $wgCurParser;
+ return $wgCurParser->argSubstitution( $matches );
+}
+
+function wfVariableSubstitution( $matches )
+{
+ global $wgCurParser;
+ return $wgCurParser->variableSubstitution( $matches );
+}
+
?>
diff --git a/includes/ParserCache.php b/includes/ParserCache.php
index 70b994365caf..a1b503a8993c 100644
--- a/includes/ParserCache.php
+++ b/includes/ParserCache.php
@@ -2,66 +2,76 @@
class ParserCache
{
- function get( &$article, &$user ){
+ function getKey( &$article, &$user ) {
+ global $wgDBname;
$hash = $user->getPageRenderingHash();
- $pageid = intval( $id );
- $res = wfQuery("SELECT pc_data FROM parsercache WHERE pc_pageid = {$pageid} ".
- " AND pc_prefhash = '{$hash}' AND pc_expire > NOW()", DB_WRITE);
- $row = wfFetchObject ( $res );
- if( $row ){
- $retVal = unserialize( gzuncompress($row->pc_data) );
- wfProfileOut( $fname );
- } else {
- $retVal = false;
- }
- return $retVal;
+ $pageid = intval( $article->getID() );
+ $key = "$wgDBname:pcache:idhash:$pageid-$hash";
+ return $key;
}
+
+ function get( &$article, &$user ) {
+ global $wgMemc, $wgCacheEpoch;
+ $fname = "ParserCache::get";
+ wfProfileIn( $fname );
- function save( $parserOutput, &$article, &$user ){
$hash = $user->getPageRenderingHash();
$pageid = intval( $article->getID() );
- $title = wfStrencode( $article->mTitle->getPrefixedDBKey() );
- $ser = addslashes( gzcompress( serialize( $parserOutput ) ) );
- if( $parserOutput->containsOldMagic() ){
- $expire = "1 HOUR";
- } else {
- $expire = "7 DAY";
- }
+ $key = $this->getKey( $article, $user );
- wfQuery("REPLACE INTO parsercache (pc_prefhash,pc_pageid,pc_title,pc_data, pc_expire) ".
- "VALUES('{$hash}', {$pageid}, '{$title}', '{$ser}', ".
- "DATE_ADD(NOW(), INTERVAL {$expire}))", DB_WRITE);
+ wfDebug( "Trying parser cache $key\n" );
+ $value = $wgMemc->get( $key );
+ if ( $value ) {
+ wfDebug( "Found.\n" );
+ # Delete if article has changed since the cache was made
+ $canCache = $article->checkTouched();
+ $cacheTime = $value->getCacheTime();
+ $touched = $article->mTouched;
+ if ( !$canCache || $value->getCacheTime() <= $touched || $cacheTime < $wgCacheEpoch ) {
+ if ( !$canCache ) {
+ $this->incrStats( "pcache_miss_invalid" );
+ wfDebug( "Invalid cached redirect, touched $touched, epoch $wgCacheEpoch, cached $cacheTime\n" );
+ } else {
+ $this->incrStats( "pcache_miss_expired" );
+ wfDebug( "Key expired, touched $touched, epoch $wgCacheEpoch, cached $cacheTime\n" );
+ }
+ $wgMemc->delete( $key );
+ $value = false;
- if( rand() % 50 == 0 ){ // more efficient to just do it sometimes
- $this->purge();
+ } else {
+ $this->incrStats( "pcache_hit" );
+ }
+ } else {
+ $this->incrStats( "pcache_miss_absent" );
+ $value = false;
}
+
+ wfProfileOut( $fname );
+ return $value;
}
- function purge(){
- wfQuery("DELETE FROM parsercache WHERE pc_expire < NOW() LIMIT 250", DB_WRITE);
- }
+ function save( $parserOutput, &$article, &$user ){
+ global $wgMemc;
- function clearLinksTo( $pid ){
- $pid = intval( $pid );
- wfQuery("DELETE parsercache FROM parsercache,links ".
- "WHERE pc_pageid=links.l_from AND l_to={$pid}", DB_WRITE);
- wfQuery("DELETE FROM parsercache WHERE pc_pageid='{$pid}'", DB_WRITE);
- }
+ $key = $this->getKey( $article, $user );
+ $now = wfTimestampNow();
+ $parserOutput->setCacheTime( $now );
+ $parserOutput->mText .= "\n<!-- Saved in parser cache with key $key and timestamp $now -->\n";
- # $title is a prefixed db title, for example like Title->getPrefixedDBkey() returns.
- function clearBrokenLinksTo( $title ){
- $title = wfStrencode( $title );
- wfQuery("DELETE parsercache FROM parsercache,brokenlinks ".
- "WHERE pc_pageid=bl_from AND bl_to='{$title}'", DB_WRITE);
+ if( $parserOutput->containsOldMagic() ){
+ $expire = 3600; # 1 hour
+ } else {
+ $expire = 86400; # 1 day
+ }
+
+ $wgMemc->set( $key, $parserOutput, $expire );
}
- # $pid is a page id
- function clearPage( $pid, $namespace ){
- $pid = intval( $pid );
- if( $namespace == NS_MEDIAWIKI ){
- $this->clearLinksTo( $pid );
- } else {
- wfQuery("DELETE FROM parsercache WHERE pc_pageid='{$pid}'", DB_WRITE);
+ function incrStats( $key ) {
+ global $wgDBname, $wgMemc;
+ $key = "$wgDBname:stats:$key";
+ if ( is_null( $wgMemc->incr( $key ) ) ) {
+ $wgMemc->set( $key, 1 );
}
}
}
diff --git a/includes/Profiling.php b/includes/Profiling.php
index 392ca38f1247..0c99e9ce7437 100755
--- a/includes/Profiling.php
+++ b/includes/Profiling.php
@@ -26,7 +26,7 @@ function wfProfileClose()
class Profiler
{
var $mStack = array(), $mWorkStack = array(), $mCollated = array();
- var $mCalls = array(), $mTotals = array();
+ var $mCalls = array(), $mTotals = array(), $mDone = false;
/*
function Profiler()
{
@@ -79,9 +79,12 @@ class Profiler
function getOutput( $scriptStart, $scriptElapsed )
{
- if( !count( $this->mStack ) ) {
+ if ( $this->mDone ) {
+ return '';
+ } elseif( !count( $this->mStack ) ) {
return "No profiling output\n";
}
+ $this->close();
$width = 125;
$format = "%-" . ($width - 28) . "s %6d %6.3f %6.3f %6.3f%%\n";
$titleFormat = "%-" . ($width - 28) . "s %9s %9s %9s %9s\n";
@@ -140,7 +143,8 @@ class Profiler
}
}
$prof .= "\nTotal: $total\n\n";
-
+
+ $this->mDone = true;
return $prof;
}
@@ -173,5 +177,4 @@ class Profiler
$wgProfiler = new Profiler();
$wgProfiler->profileIn( "-total" );
-
?>
diff --git a/includes/QueryPage.php b/includes/QueryPage.php
index 6ffd11662326..a38ad238ca11 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
@@ -131,7 +131,7 @@ class QueryPage {
$this->feedUrl() );
$feed->outHeader();
- $sql = $this->getSQL( 0, 50 );
+ $sql = $this->getSQL() . $this->getOrderLimit( 0, 50 );
$res = wfQuery( $sql, DB_READ, "QueryPage::doFeed" );
while( $obj = wfFetchObject( $res ) ) {
$item = $this->feedResult( $obj );
diff --git a/includes/RawPage.php b/includes/RawPage.php
index b218612a9637..003ab452f782 100644
--- a/includes/RawPage.php
+++ b/includes/RawPage.php
@@ -8,36 +8,74 @@
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;
- $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=0, 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();
+ # special case
+ if($ns == NS_MEDIAWIKI) {
+ $rawtext = wfMsg($t);
+ if($wgInputEncoding != $this->mCharset)
+ $rawtext = $wgLang->iconv( $wgInputEncoding, $this->mCharset, $rawtext );
+ return $rawtext;
+ }
+ # 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," .
@@ -49,6 +87,7 @@ class RawPage {
$rawtext = Article::getRevisionText( $s, "" );
if($wgInputEncoding != $this->mCharset)
$rawtext = $wgLang->iconv( $wgInputEncoding, $this->mCharset, $rawtext );
+ header( 'Last-modified: '.gmdate( "D, j M Y H:i:s", wfTimestamp2Unix( $s->timestamp )).' GMT' );
return $rawtext;
} else {
return '';
diff --git a/includes/RecentChange.php b/includes/RecentChange.php
index fb385bca24b1..ed64ee213cad 100644
--- a/includes/RecentChange.php
+++ b/includes/RecentChange.php
@@ -5,6 +5,8 @@ define( "RC_EDIT", 0);
define( "RC_NEW", 1);
define( "RC_MOVE", 2);
define( "RC_LOG", 3);
+define( "RC_MOVE_OVER_REDIRECT", 4);
+
/*
mAttributes:
@@ -21,6 +23,7 @@ mAttributes:
rc_this_oldid old_id associated with this entry (or zero)
rc_last_oldid old_id associated with the entry before this one (or zero)
rc_bot is bot, hidden
+ rc_ip IP address of the user in dotted quad notation
rc_new obsolete, use rc_type==RC_NEW
mExtra:
@@ -82,7 +85,7 @@ class RecentChange
# Writes the data in this object to the database
function save()
{
- global $wgUseRCQueue, $wgRCQueueID, $wgLocalInterwiki;
+ global $wgUseRCQueue, $wgRCQueueID, $wgLocalInterwiki, $wgPutIPinRC;
$fname = "RecentChange::save";
if ( !is_array($this->mExtra) ) {
@@ -90,6 +93,10 @@ class RecentChange
}
$this->mExtra['lang'] = $wgLocalInterwiki;
+ if ( !$wgPutIPinRC ) {
+ $this->mAttribs['rc_ip'] = '';
+ }
+
# Insert new row
wfInsertArray( "recentchanges", $this->mAttribs, $fname );
@@ -126,12 +133,17 @@ class RecentChange
# Makes an entry in the database corresponding to an edit
/*static*/ function notifyEdit( $timestamp, &$title, $minor, &$user, $comment,
- $oldId, $lastTimestamp, $bot = "default" )
+ $oldId, $lastTimestamp, $bot = "default", $ip = '' )
{
if ( $bot == "default " ) {
$bot = $user->isBot();
}
+ if ( !$ip ) {
+ global $wgIP;
+ $ip = empty( $wgIP ) ? '' : $wgIP;
+ }
+
$rc = new RecentChange;
$rc->mAttribs = array(
'rc_timestamp' => $timestamp,
@@ -149,6 +161,7 @@ class RecentChange
'rc_bot' => $bot ? 1 : 0,
'rc_moved_to_ns' => 0,
'rc_moved_to_title' => '',
+ 'rc_ip' => $ip,
'rc_new' => 0 # obsolete
);
@@ -161,28 +174,34 @@ class RecentChange
# Makes an entry in the database corresponding to page creation
# Note: the title object must be loaded with the new id using resetArticleID()
- /*static*/ function notifyNew( $timestamp, &$title, $minor, &$user, $comment, $bot = "default" )
+ /*static*/ function notifyNew( $timestamp, &$title, $minor, &$user, $comment, $bot = "default", $ip='' )
{
+ if ( !$ip ) {
+ global $wgIP;
+ $ip = empty( $wgIP ) ? '' : $wgIP;
+ }
if ( $bot == "default" ) {
$bot = $user->isBot();
}
+
$rc = new RecentChange;
$rc->mAttribs = array(
- 'rc_timestamp' => $timestamp,
- 'rc_cur_time' => $timestamp,
- 'rc_namespace' => $title->getNamespace(),
- 'rc_title' => $title->getDBkey(),
- 'rc_type' => RC_NEW,
- 'rc_minor' => $minor ? 1 : 0,
- 'rc_cur_id' => $title->getArticleID(),
- 'rc_user' => $user->getID(),
- 'rc_user_text' => $user->getName(),
- 'rc_comment' => $comment,
- 'rc_this_oldid' => 0,
- 'rc_last_oldid' => 0,
- 'rc_bot' => $bot ? 1 : 0,
- 'rc_moved_to_ns' => 0,
- 'rc_moved_to_title' => '',
+ 'rc_timestamp' => $timestamp,
+ 'rc_cur_time' => $timestamp,
+ 'rc_namespace' => $title->getNamespace(),
+ 'rc_title' => $title->getDBkey(),
+ 'rc_type' => RC_NEW,
+ 'rc_minor' => $minor ? 1 : 0,
+ 'rc_cur_id' => $title->getArticleID(),
+ 'rc_user' => $user->getID(),
+ 'rc_user_text' => $user->getName(),
+ 'rc_comment' => $comment,
+ 'rc_this_oldid' => 0,
+ 'rc_last_oldid' => 0,
+ 'rc_bot' => $bot ? 1 : 0,
+ 'rc_moved_to_ns' => 0,
+ 'rc_moved_to_title' => '',
+ 'rc_ip' => $ip,
'rc_new' => 1 # obsolete
);
@@ -194,15 +213,19 @@ class RecentChange
}
# Makes an entry in the database corresponding to a rename
- /*static*/ function notifyMove( $timestamp, &$oldTitle, &$newTitle, &$user, $comment )
+ /*static*/ function notifyMove( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='', $overRedir = false )
{
+ if ( !$ip ) {
+ global $wgIP;
+ $ip = empty( $wgIP ) ? '' : $wgIP;
+ }
$rc = new RecentChange;
$rc->mAttribs = array(
'rc_timestamp' => $timestamp,
'rc_cur_time' => $timestamp,
'rc_namespace' => $oldTitle->getNamespace(),
'rc_title' => $oldTitle->getDBkey(),
- 'rc_type' => RC_MOVE,
+ 'rc_type' => $overRedir ? RC_MOVE_OVER_REDIRECT : RC_MOVE,
'rc_minor' => 0,
'rc_cur_id' => $oldTitle->getArticleID(),
'rc_user' => $user->getID(),
@@ -213,6 +236,7 @@ class RecentChange
'rc_bot' => $user->isBot() ? 1 : 0,
'rc_moved_to_ns' => $newTitle->getNamespace(),
'rc_moved_to_title' => $newTitle->getDBkey(),
+ 'rc_ip' => $ip,
'rc_new' => 0 # obsolete
);
@@ -224,10 +248,22 @@ class RecentChange
$rc->save();
}
+ /* static */ function notifyMoveToNew( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) {
+ RecentChange::notifyMove( $timestamp, $oldTitle, $newTitle, $user, $comment, $ip, false );
+ }
+
+ /* static */ function notifyMoveOverRedirect( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) {
+ RecentChange::notifyMove( $timestamp, $oldTitle, $newTitle, $user, $comment, $ip='', true );
+ }
+
# A log entry is different to an edit in that previous revisions are
# not kept
- /*static*/ function notifyLog( $timestamp, &$title, &$user, $comment )
+ /*static*/ function notifyLog( $timestamp, &$title, &$user, $comment, $ip='' )
{
+ if ( !$ip ) {
+ global $wgIP;
+ $ip = empty( $wgIP ) ? '' : $wgIP;
+ }
$rc = new RecentChange;
$rc->mAttribs = array(
'rc_timestamp' => $timestamp,
@@ -245,6 +281,7 @@ class RecentChange
'rc_bot' => 0,
'rc_moved_to_ns' => 0,
'rc_moved_to_title' => '',
+ 'rc_ip' => $ip,
'rc_new' => 0 # obsolete
);
$rc->mExtra = array(
@@ -280,6 +317,7 @@ class RecentChange
'rc_bot' => 0,
'rc_moved_to_ns' => 0,
'rc_moved_to_title' => '',
+ 'rc_ip' => '',
'rc_new' => $row->cur_is_new # obsolete
);
diff --git a/includes/SearchEngine.php b/includes/SearchEngine.php
index 19a081b302f7..6009ae226a70 100644
--- a/includes/SearchEngine.php
+++ b/includes/SearchEngine.php
@@ -157,7 +157,11 @@ class SearchEngine {
{
global $wgUser, $wgTitle, $wgOut, $wgLang, $wgRequest;
global $wgDisableTextSearch, $wgInputEncoding;
- $fname = "SearchEngine::showResults";
+ global $wgLoadBalancer;
+
+ $wgLoadBalancer->force(-1);
+
+ $fname = "SearchEngine::showResults";
$search = $wgRequest->getText( 'search' );
@@ -280,7 +284,8 @@ class SearchEngine {
$wgOut->addHTML( "<p>{$sl}</p>\n" );
$wgOut->addHTML( $powersearch );
}
- }
+ $wgLoadBalancer->force(0);
+ }
function legalSearchChars()
{
@@ -296,11 +301,13 @@ 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 );
$q = preg_replace( "/\\s+/", " ", $q );
- $w = explode( " ", strtolower( trim( $q ) ) );
+ $w = explode( " ", trim( $q ) );
$last = $cond = "";
foreach ( $w as $word ) {
@@ -367,7 +374,7 @@ class SearchEngine {
function showHit( $row )
{
- global $wgUser, $wgOut;
+ global $wgUser, $wgOut, $wgLang;
$t = Title::makeName( $row->cur_namespace, $row->cur_title );
$sk = $wgUser->getSkin();
@@ -386,33 +393,26 @@ class SearchEngine {
$lineno = 0;
foreach ( $lines as $line ) {
- if ( 0 == $contextlines ) { break; }
+ if ( 0 == $contextlines ) {
+ break;
+ }
--$contextlines;
++$lineno;
- if ( ! preg_match( $pat1, $line, $m ) ) { continue; }
-
- $pre = $m[1];
- if ( 0 == $contextchars ) { $pre = "..."; }
- else {
- if ( strlen( $pre ) > $contextchars ) {
- $pre = "..." . substr( $pre, -$contextchars );
- }
+ if ( ! preg_match( $pat1, $line, $m ) ) {
+ continue;
}
- $pre = wfEscapeHTML( $pre );
- if ( count( $m ) < 3 ) { $post = ""; }
- else { $post = $m[3]; }
+ $pre = $wgLang->truncate( $m[1], -$contextchars, "..." );
- if ( 0 == $contextchars ) { $post = "..."; }
- else {
- if ( strlen( $post ) > $contextchars ) {
- $post = substr( $post, 0, $contextchars ) . "...";
- }
+ if ( count( $m ) < 3 ) {
+ $post = "";
+ } else {
+ $post = $wgLang->truncate( $m[3], $contextchars, "..." );
}
- $post = wfEscapeHTML( $post );
- $found = wfEscapeHTML( $m[2] );
- $line = "{$pre}{$found}{$post}";
+ $found = $m[2];
+
+ $line = htmlspecialchars( $pre . $found . $post );
$pat2 = "/(" . implode( "|", $this->mSearchterms ) . ")/i";
$line = preg_replace( $pat2,
"<font color='red'>\\1</font>", $line );
@@ -485,8 +485,13 @@ class SearchEngine {
$wgOut->redirect( $t->getFullURL( "action=edit" ) );
return;
}
-
- $wgOut->addHTML( "<p>" . wfMsg("nogomatch", $t->escapeLocalURL( "action=edit" ) ) . "</p>\n" );
+
+ if( $t ) {
+ $editurl = $t->escapeLocalURL( "action=edit" );
+ } else {
+ $editurl = ""; # ??
+ }
+ $wgOut->addHTML( "<p>" . wfMsg("nogomatch", $editurl ) . "</p>\n" );
# Try a fuzzy title search
$anyhit = false;
diff --git a/includes/SearchUpdate.php b/includes/SearchUpdate.php
index 08f66eab88ed..c7b9c6103c32 100644
--- a/includes/SearchUpdate.php
+++ b/includes/SearchUpdate.php
@@ -1,4 +1,5 @@
<?php
+# $Id$
# See deferred.doc
class SearchUpdate {
@@ -24,7 +25,7 @@ class SearchUpdate {
function doUpdate()
{
- global $wgDBminWordLen, $wgLang, $wgDisableSearchUpdate;
+ global $wgDBminWordLen, $wgLang, $wgDisableSearchUpdate, $wgIsMySQL;
if( $wgDisableSearchUpdate || !$this->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" );
@@ -75,7 +77,7 @@ class SearchUpdate {
# Strip wiki '' and '''
$text = preg_replace( "/''[']*/", " ", $text );
- $sql = "REPLACE DELAYED INTO searchindex (si_page,si_title,si_text) VALUES ({$this->mId},'" .
+ $sql = "REPLACE INTO searchindex (si_page,si_title,si_text) VALUES ({$this->mId},'" .
wfStrencode( Title::indexTitle( $this->mNamespace, $this->mTitle ) ) . "','" .
wfStrencode( $text ) . "')";
wfQuery( $sql, DB_WRITE, "SearchUpdate::doUpdate" );
diff --git a/includes/Setup.php b/includes/Setup.php
index 7a668080fa0a..b9b50b8350c6 100644
--- a/includes/Setup.php
+++ b/includes/Setup.php
@@ -1,4 +1,6 @@
<?php
+if( defined( "MEDIAWIKI" ) ) {
+
# The main wiki script and things like database
# conversion and maintenance scripts all share a
# common setup of including lots of classes and
@@ -11,72 +13,74 @@ 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( 'User.php' );
+require_once( 'Skin.php' );
+require_once( 'OutputPage.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( 'LoadBalancer.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;
-global $wgMessageCache, $wgUseMemCached, $wgUseDatabaseMessages;
+global $wgMessageCache, $wgUseMemCached, $wgUseDatabaseMessages, $wgSecondaryMessageDB;
global $wgMsgCacheExpiry, $wgDBname, $wgCommandLineMode;
-global $wgBlockCache, $wgParserCache, $wgParser;
+global $wgBlockCache, $wgParserCache, $wgParser, $wgDBConnections;
+global $wgLoadBalancer, $wgDBservers, $wgDBloads, $wgDBuser, $wgDBpassword;
+global $wgSiteNotice;
# 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();
@@ -124,56 +128,86 @@ if( $wgUseMemCached ) {
$wgMemc->set_servers( $wgMemCachedServers );
$wgMemc->set_debug( $wgMemCachedDebug );
- # Test it to see if it's working
- # This is necessary because otherwise wfMsg would be extremely inefficient
- if ( !$wgMemc->set( "test", "", 0 ) ) {
- wfDebug( "Memcached failed setup test - connection error?\n" );
- $wgUseMemCached = false;
- $wgMemc = new FakeMemCachedClient();
- }
$messageMemc = &$wgMemc;
} else {
$wgMemc = new FakeMemCachedClient();
# 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-misc" );
+wfProfileOut( $fname.'-memcached' );
+wfProfileIn( $fname.'-database' );
-require_once( "languages/Language.php" );
+if ( !$wgDBservers ) {
+ $wgDBservers = array( $wgDBserver );
+ $wgDBloads = array( 1 );
+}
+$wgLoadBalancer = LoadBalancer::newFromParams( $wgDBservers, $wgDBloads, $wgDBuser, $wgDBpassword, $wgDBname );
+$wgLoadBalancer->force(0);
+
+wfProfileOut( $fname.'-database' );
+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";
}
-$wgMessageCache->initialise( $messageMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry, $wgDBname );
+
+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, $wgSecondaryMessageDB );
+
+wfProfileOut( $fname.'-MessageCache' );
+wfProfileIn( $fname.'-OutputPage' );
$wgOut = new OutputPage();
wfDebug( "\n\n" );
+wfProfileOut( $fname.'-OutputPage' );
+wfProfileIn( $fname.'-DateFormatter' );
+
if ( $wgUseDynamicDates ) {
- require_once( "DateFormatter.php" );
+ require_once( 'DateFormatter.php' );
global $wgDateFormatter;
$wgDateFormatter = new DateFormatter;
}
-if( !$wgCommandLineMode && ( isset( $_COOKIE[ini_get("session.name")] ) || isset( $_COOKIE["{$wgDBname}Password"] ) ) ) {
+wfProfileOut( $fname.'-DateFormatter' );
+wfProfileIn( $fname.'-SetupSession' );
+
+if( !$wgCommandLineMode && ( isset( $_COOKIE[ini_get('session.name')] ) || isset( $_COOKIE[$wgDBname.'Password'] ) ) ) {
User::SetupSession();
}
+wfProfileOut( $fname.'-SetupSession' );
+wfProfileIn( $fname.'-BlockCache' );
+
$wgBlockCache = new BlockCache( true );
+
+wfProfileOut( $fname.'-BlockCache' );
+wfProfileIn( $fname.'-User' );
+
if( $wgCommandLineMode ) {
# Used for some maintenance scripts; user session cookies can screw things up
# when the database is in an in-between state.
@@ -181,6 +215,10 @@ if( $wgCommandLineMode ) {
} else {
$wgUser = User::loadFromSession();
}
+
+wfProfileOut( $fname.'-User' );
+wfProfileIn( $fname.'-misc' );
+
$wgDeferredUpdateList = array();
$wgLinkCache = new LinkCache();
$wgMagicWords = array();
@@ -188,11 +226,23 @@ $wgMwRedir =& MagicWord::get( MAG_REDIRECT );
$wgParserCache = new ParserCache();
$wgParser = new Parser();
$wgOut->setParserOptions( ParserOptions::newFromUser( $wgUser ) );
+$wgDBConnections = array();
-if ( !$wgAllowSysopQueries ) {
- SpecialPage::removePage( "Asksql" );
+# Placeholders in case of DB error
+$wgTitle = Title::newFromText( wfMsg( 'badtitle' ) );
+$wgArticle = new Article($wgTitle);
+
+if ( !empty( $wgSiteNotice ) && $wgSiteNotice{0} == ':' ) {
+ $key = substr( $wgSiteNotice, 1 );
+ $wgSiteNotice = wfMsg( $key );
+ if ( $wgSiteNotice == "&lt;$key&gt;" ) {
+ $wgSiteNotice = false;
+ }
}
+wfProfileOut( $fname.'-misc' );
+wfProfileIn( $fname.'-extensions' );
+
# Extension setup functions
# Entries should be added to this variable during the inclusion
# of the extension file. This allows the extension to perform
@@ -201,8 +251,8 @@ foreach ( $wgExtensionFunctions as $func ) {
$func();
}
-wfProfileOut( "$fname-misc" );
+wfProfileOut( $fname.'-extensions' );
wfProfileOut( $fname );
-
+}
?>
diff --git a/includes/SiteConfiguration.php b/includes/SiteConfiguration.php
new file mode 100644
index 000000000000..84c7671dec68
--- /dev/null
+++ b/includes/SiteConfiguration.php
@@ -0,0 +1,65 @@
+<?php
+
+# This file is used to configure the live Wikimedia wikis. The file that includes
+# it contains passwords and other sensitive data, and there's currently no public
+# equivalent.
+
+class SiteConfiguration {
+ var $suffixes, $wikis, $settings;
+ var $localDatabases;
+
+ function get( $setting, $wiki, $suffix, $params = array() ) {
+ if ( array_key_exists( $wiki, $this->settings[$setting] ) ) {
+ $retval = $this->settings[$setting][$wiki];
+ } elseif ( array_key_exists( $suffix, $this->settings[$setting] ) ) {
+ $retval = $this->settings[$setting][$suffix];
+ } elseif ( array_key_exists( "default", $this->settings[$setting] ) ) {
+ $retval = $this->settings[$setting]['default'];
+ } else {
+ $retval = NULL;
+ }
+ if ( !is_null( $retval ) && count( $params ) ) {
+ foreach ( $params as $key => $value ) {
+ $retval = str_replace( '$' . $key, $value, $retval );
+ }
+ }
+ return $retval;
+ }
+
+ function getBool( $setting, $wiki, $suffix ) {
+ return (bool)($this->get( $setting, $wiki, $suffix ));
+ }
+
+ function &getLocalDatabases() {
+ return $this->localDatabases;
+ }
+
+ function initialise() {
+ foreach ( $this->wikis as $db ) {
+ $this->localDatabases[$db] = $db;
+ }
+ }
+
+ function extractVar( $setting, $wiki, $suffix, &$var, $params ) {
+ $value = $this->get( $setting, $wiki, $suffix, $params );
+ if ( !is_null( $value ) ) {
+ $var = $value;
+ }
+ }
+
+ function extractGlobal( $setting, $wiki, $suffix, $params ) {
+ $value = $this->get( $setting, $wiki, $suffix, $params );
+ if ( !is_null( $value ) ) {
+ $GLOBALS[$setting] = $value;
+ }
+ }
+
+ function extractAllGlobals( $wiki, $suffix, $params ) {
+ foreach ( $this->settings as $varName => $setting ) {
+ $this->extractGlobal( $varName, $wiki, $suffix, $params );
+ }
+ }
+}
+
+
+?>
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 @@
<?php
+# $Id$
# See deferred.doc
class SiteStatsUpdate {
@@ -14,6 +15,7 @@ class SiteStatsUpdate {
function doUpdate()
{
+ global $wgIsMySQL;
$a = array();
if ( $this->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 91faf5b5d590..d54620a6e65a 100644
--- a/includes/Skin.php
+++ b/includes/Skin.php
@@ -1,33 +1,35 @@
<?php
-
-require_once( "Feed.php" );
-require_once( "Image.php" );
+if( defined( "MEDIAWIKI" ) ) {
# See skin.doc
+require_once( 'Feed.php' ); // should not be called if the actual page isn't feed enabled
+require_once( 'Image.php' );
+
# These are the INTERNAL names, which get mapped
# directly to class names. For display purposes, the
# Language class has internationalized names
#
/* private */ $wgValidSkinNames = array(
- 'standard' => "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
{
var $secureName, $link;
- var $curlink , $lastlink , $usertalklink , $versionlink ;
+ var $curlink , $difflink, $lastlink , $usertalklink , $versionlink ;
var $userlink, $timestamp, $watched;
function newFromParent( $rc )
@@ -49,7 +51,7 @@ class Skin {
function Skin()
{
- $this->linktrail = wfMsg("linktrail");
+ $this->linktrail = wfMsg('linktrail');
}
function getSkinNames()
@@ -60,7 +62,10 @@ class Skin {
function getStylesheet()
{
- return "wikistandard.css";
+ return 'wikistandard.css';
+ }
+ function getSkinName() {
+ return "standard";
}
function qbSetting()
@@ -68,17 +73,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 +100,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 +121,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 +156,45 @@ class Skin {
}
function getHeadScripts() {
- global $wgStylePath;
+ global $wgStylePath, $wgUser, $wgLang, $wgAllowUserJs;
$r = "<script type=\"text/javascript\" src=\"{$wgStylePath}/wikibits.js\"></script>\n";
+ if( $wgAllowUserJs && $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 .= '<script type="text/javascript" src="'.$userjs."\"></script>\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, $wgAllowUserCss;
+ $sheet = $this->getStylesheet();
+ $action = $wgRequest->getText('action');
+ $s = "@import \"$wgStylePath/$sheet\";\n";
+ if($wgLang->isRTL()) $s .= "@import \"$wgStylePath/common_rtl.css\";\n";
+ if( $wgAllowUserCss && $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().'.css', '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 = "<style type='text/css'>\n";
$s .= "/*/*/\n"; # <-- Hide the styles from Netscape 4 without hiding them from IE/Mac
- $s .= "@import url(\"$wgStylePath/$sheet\");\n";
- if($wgLang->isRTL()) $s .= "@import url(\"$wgStylePath/common_rtl.css\");\n";
- $s .= $this->doGetUserStyles();
+ $s .= $this->getUserStylesheet();
$s .= "/* */\n";
$s .= "</style>\n";
return $s;
@@ -174,19 +204,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 +229,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,26 +243,26 @@ 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();
return $a;
}
- function getExternalLinkAttributes( $link, $text )
+ function getExternalLinkAttributes( $link, $text, $class='' )
{
global $wgUser, $wgOut, $wgLang;
$link = urldecode( $link );
$link = $wgLang->checkTitleEncoding( $link );
- $link = str_replace( "_", " ", $link );
+ $link = str_replace( '_', ' ', $link );
$link = wfEscapeHTML( $link );
- $r = " class='external'";
+ $r = ($class != '') ? " class='$class'" : " class='external'";
- if ( 1 == $wgUser->getOption( "hover" ) ) {
+ if ( 1 == $wgUser->getOption( 'hover' ) ) {
$r .= " title=\"{$link}\"";
}
return $r;
@@ -243,18 +273,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 +294,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;
@@ -289,32 +319,27 @@ class Skin {
#
function beforeContent()
{
- global $wgUser, $wgOut, $wgSiteNotice;
+ global $wgUser, $wgOut;
- if( $wgSiteNotice ) {
- $note = "\n<div id='notice' style='font-weight: bold; color: red; text-align: center'>$wgSiteNotice</div>\n";
- } else {
- $note = "";
- }
- return $this->doBeforeContent() . $note;
+ return $this->doBeforeContent();
}
function doBeforeContent()
{
- global $wgUser, $wgOut, $wgTitle, $wgLang;
- $fname = "Skin::doBeforeContent";
+ global $wgUser, $wgOut, $wgTitle, $wgLang, $wgSiteNotice;
+ $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<div id='content'>\n<div id='topbar'>\n" .
@@ -326,11 +351,11 @@ class Skin {
if ( !$shove ) {
$s .= "<td class='top' align='left' valign='top' rowspan='{$rows}'>\n" .
- $this->logoText() . "</td>";
+ $this->logoText() . '</td>';
} elseif( $left ) {
$s .= $this->getQuickbarCompensator( $rows );
}
- $l = $wgLang->isRTL() ? "right" : "left";
+ $l = $wgLang->isRTL() ? 'right' : 'left';
$s .= "<td {$borderhack} align='$l' valign='top'>\n";
$s .= $this->topLinks() ;
@@ -351,6 +376,9 @@ class Skin {
$s .= "</tr>\n</table>\n</div>\n";
$s .= "\n<div id='article'>\n";
+ if( $wgSiteNotice ) {
+ $s .= "\n<div id='siteNotice'>$wgSiteNotice</div>\n";
+ }
$s .= $this->pageTitle();
$s .= $this->pageSubtitle() ;
$s .= $this->getCategories();
@@ -358,18 +386,35 @@ class Skin {
return $s;
}
- function getCategories () {
+ function getCategoryLinks () {
global $wgOut, $wgTitle, $wgUser, $wgParser;
- global $wgUseCategoryMagic;
- if( !$wgUseCategoryMagic ) return "" ;
- if( count( $wgOut->mCategoryLinks ) == 0 ) return "";
- if( !$wgOut->isArticle() ) return "";
+ global $wgUseCategoryMagic, $wgUseCategoryBrowser, $wgLang;
+
+ if( !$wgUseCategoryMagic ) return '' ;
+ if( count( $wgOut->mCategoryLinks ) == 0 ) return '';
+
+ # Taken out so that they will be displayed in previews -- TS
+ #if( !$wgOut->isArticle() ) return '';
+
+ $t = implode ( ' | ' , $wgOut->mCategoryLinks ) ;
+ $s = $this->makeKnownLink( 'Special:Categories',
+ wfMsg( 'categories' ), 'article=' . urlencode( $wgTitle->getPrefixedDBkey() ) )
+ . ': ' . $t;
+
+ if($wgUseCategoryBrowser) {
+ $s .= '<br/><hr/>';
+ $catstack = array();
+ $s.= $wgTitle->getAllParentCategories($catstack);
+ }
- $t = implode ( " | " , $wgOut->mCategoryLinks ) ;
- $s = $this->makeKnownLink( "Special:Categories",
- wfMsg( "categories" ), "article=" . urlencode( $wgTitle->getPrefixedDBkey() ) )
- . ": " . $t;
- return "<p class='catlinks'>$s</p>";
+ return $s;
+ }
+
+ function getCategories() {
+ $catlinks=$this->getCategoryLinks();
+ if(!empty($catlinks)) {
+ return "<p class='catlinks'>{$catlinks}</p>";
+ }
}
function getQuickbarCompensator( $rows = 1 )
@@ -398,16 +443,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</div><br style=\"clear:both\" />\n";
$s .= "\n<div id='footer'>";
- $s .= "<table border='0' cellspacing='0'><tr>";
+ $s .= '<table border="0" cellspacing="0"><tr>';
- wfProfileOut( "$fname-1" );
- wfProfileIn( "$fname-2" );
+ wfProfileOut( $fname.'-1' );
+ wfProfileIn( $fname.'-2' );
$qb = $this->qbSetting();
$shove = ($qb != 0);
@@ -417,17 +462,17 @@ class Skin {
if ( $shove && $left ) { # Left
$s .= $this->getQuickbarCompensator();
}
- wfProfileOut( "$fname-2" );
- wfProfileIn( "$fname-3" );
- $l = $wgLang->isRTL() ? "right" : "left";
+ wfProfileOut( $fname.'-2' );
+ wfProfileIn( $fname.'-3' );
+ $l = $wgLang->isRTL() ? 'right' : 'left';
$s .= "<td class='bottom' align='$l' valign='top'>";
$s .= $this->bottomLinks();
$s .= "\n<br />" . $this->mainPageLink()
- . " | " . $this->aboutLink()
- . " | " . $this->specialLink( "recentchanges" )
- . " | " . $this->searchForm()
- . "<br /><span id='pagestats'>" . $this->pageStats() . "</span>";
+ . ' | ' . $this->aboutLink()
+ . ' | ' . $this->specialLink( 'recentchanges' )
+ . ' | ' . $this->searchForm()
+ . '<br /><span id="pagestats">' . $this->pageStats() . '</span>';
$s .= "</td>";
if ( $shove && !$left ) { # Right
@@ -435,10 +480,10 @@ class Skin {
}
$s .= "</tr></table>\n</div>\n</div>\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;
}
@@ -451,7 +496,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() ) {
@@ -464,16 +509,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 .= " | <a href=\"{$link}\"{$style}>{$name}</a>" ;
}
}
- 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() ) {
@@ -485,35 +530,45 @@ class Skin {
$n =$wgUser->getName();
$tl = $this->makeKnownLink( $wgLang->getNsText(
Namespace::getTalk( Namespace::getUser() ) ) . ":{$n}",
- wfMsg("newmessageslink") );
- $s.=" | <strong>". wfMsg( "newmessages", $tl ) . "</strong>";
+ wfMsg('newmessageslink') );
+ $s.= ' | <strong>'. wfMsg( 'newmessages', $tl ) . '</strong>';
}
}
- if( $wgUser->isSysop() &&
- (($wgTitle->getArticleId() == 0) || ($action == "history")) &&
- ($n = $wgTitle->isDeleted() ) ) {
- $s .= " | " . wfMsg( "thisisdeleted",
- $this->makeKnownLink(
- $wgLang->SpecialPage( "Undelete/" . $wgTitle->getPrefixedDBkey() ),
- wfMsg( "restorelink", $n ) ) );
+
+ $undelete = $this->getUndeleteLink();
+ if( !empty( $undelete ) ) {
+ $s .= ' | '.$undelete;
}
return $s;
}
+ function getUndeleteLink() {
+ global $wgUser, $wgTitle, $wgLang, $action;
+ if( $wgUser->isSysop() &&
+ (($wgTitle->getArticleId() == 0) || ($action == "history")) &&
+ ($n = $wgTitle->isDeleted() ) ) {
+ return wfMsg( 'thisisdeleted',
+ $this->makeKnownLink(
+ $wgLang->SpecialPage( 'Undelete/' . $wgTitle->getPrefixedDBkey() ),
+ wfMsg( 'restorelink', $n ) ) );
+ }
+ return '';
+ }
+
function printableLink()
{
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 = "<a href=\"$printurl\">" . wfMsg( "printableversion" ) . "</a>";
+ $s = "<a href=\"$printurl\">" . wfMsg( 'printableversion' ) . '</a>';
if( $wgOut->isSyndicated() ) {
foreach( $wgFeedClasses as $format => $class ) {
$feedurl = $wgRequest->escapeAppendQuery( "feed=$format" );
@@ -527,8 +582,8 @@ class Skin {
{
global $wgOut, $wgTitle, $wgUser;
- $s = "<h1 class='pagetitle'>" . htmlspecialchars( $wgOut->getPageTitle() ) . "</h1>";
- if($wgUser->getOption("editsectiononrightclick") && $wgTitle->userCanEdit()) { $s=$this->editSectionScript(0,$s);}
+ $s = '<h1 class="pagetitle">' . htmlspecialchars( $wgOut->getPageTitle() ) . '</h1>';
+ if($wgUser->getOption( 'editsectiononrightclick' ) && $wgTitle->userCanEdit()) { $s=$this->editSectionScript(0,$s);}
return $s;
}
@@ -537,9 +592,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)?"</p><p class='subpages'>$subpages":'';
@@ -553,23 +608,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 ($c<count($links)) {
$growinglink .= $link;
$getlink = $this->makeLink( $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 .="&lt; ";
+ $subpages .= '&lt; ';
}
$subpages .= $getlink;
- $growinglink.="/";
+ $growinglink .= '/';
}
}
}
@@ -581,30 +636,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<br />" . $this->makeKnownLink( $li,
- wfMsg( "login" ), $q );
+ wfMsg( 'login' ), $q );
} else {
$n = $wgUser->getName();
$rt = $wgTitle->getPrefixedURL();
@@ -616,18 +671,18 @@ class Skin {
$s .= $this->makeKnownLink( $wgLang->getNsText(
Namespace::getUser() ) . ":{$n}", $n ) . "{$tl}<br />" .
- $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();
}
@@ -640,12 +695,12 @@ class Skin {
global $wgRequest;
$search = $wgRequest->getText( 'search' );
- $s = "<form name='search' class='inline' method='post' action=\""
+ $s = '<form name="search" class="inline" method="post" action="'
. $this->escapeSearchLink() . "\">\n"
- . "<input type='text' name=\"search\" size='19' value=\""
+ . '<input type="text" name="search" size="19" value="'
. htmlspecialchars(substr($search,0,256)) . "\" />\n"
- . "<input type='submit' name=\"go\" value=\"" . wfMsg ("go") . "\" />&nbsp;"
- . "<input type='submit' name=\"fulltext\" value=\"" . wfMsg ("search") . "\" />\n</form>";
+ . '<input type="submit" name="go" value="' . wfMsg ('go') . '" />&nbsp;'
+ . '<input type="submit" name="fulltext" value="' . wfMsg ('search') . "\" />\n</form>";
return $s;
}
@@ -656,7 +711,7 @@ class Skin {
$sep = " |\n";
$s = $this->mainPageLink() . $sep
- . $this->specialLink( "recentchanges" );
+ . $this->specialLink( 'recentchanges' );
if ( $wgOut->isArticleRelated() ) {
$s .= $sep . $this->editThisPage()
@@ -673,9 +728,9 @@ class Skin {
global $wgOut, $wgUser, $wgTitle;
$sep = " |\n";
- $s = "";
+ $s = '';
if ( $wgOut->isArticleRelated() ) {
- $s .= "<strong>" . $this->editThisPage() . "</strong>";
+ $s .= '<strong>' . $this->editThisPage() . '</strong>';
if ( 0 != $wgUser->getID() ) {
$s .= $sep . $this->watchThisPage();
}
@@ -713,112 +768,45 @@ class Skin {
function pageStats()
{
global $wgOut, $wgLang, $wgArticle, $wgRequest;
- global $wgDisableCounters;
+ global $wgDisableCounters, $wgMaxCredits, $wgShowCreditsIfMax;
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();
-
- return $s . " " . $this->getCopyright();
- }
-
- function getCredits() {
- global $wgMaxCredits;
-
- $s = '';
-
- if (!isset($wgMaxCredits) || $wgMaxCredits == 0) {
- $s = $this->lastModified();
- } else {
- $s = $this->getAuthorCredits();
- if ($wgMaxCredits > 1) {
- $s .= " " . $this->getContributorCredits();
- }
- }
-
- return $s;
- }
-
- function getAuthorCredits() {
- global $wgLang, $wgArticle;
-
- $last_author = $wgArticle->getUser();
-
- if ($last_author == 0) {
- $author_credit = wfMsg("anonymous");
+ if (isset($wgMaxCredits) && $wgMaxCredits != 0) {
+ require_once("Credits.php");
+ $s .= ' ' . getCredits($wgArticle, $wgMaxCredits, $wgShowCreditsIfMax);
} else {
- $real_name = User::whoIsReal($last_author);
- if (!empty($real_name)) {
- $author_credit = $real_name;
- } else {
- $author_credit = wfMsg("siteuser", User::whoIs($last_author));
- }
+ $s .= $this->lastModified();
}
- $timestamp = $wgArticle->getTimestamp();
- if ( $timestamp ) {
- $d = $wgLang->timeanddate( $wgArticle->getTimestamp(), true );
- } else {
- $d = "";
- }
- return wfMsg("lastmodifiedby", $d, $author_credit);
+ return $s . ' ' . $this->getCopyright();
}
-
- function getContributorCredits() {
-
- global $wgArticle, $wgMaxCredits, $wgLang;
-
- # don't count last editor
-
- $contributors = $wgArticle->getContributors($wgMaxCredits - 1);
-
- $real_names = array();
- $user_names = array();
-
- # Sift for real versus user names
+
+ function getCopyright() {
+ global $wgRightsPage, $wgRightsUrl, $wgRightsText, $wgRequest;
- foreach ($contributors as $user_id => $user_parts) {
- if ($user_id != 0) {
- if (!empty($user_parts[1])) {
- $real_names[$user_id] = $user_parts[1];
- } else {
- $user_names[$user_id] = $user_parts[0];
- }
- }
- }
-
- $real = $wgLang->listToText(array_values($real_names));
- $user = $wgLang->listToText(array_values($user_names));
-
- if (!empty($user)) {
- $user = wfMsg("siteusers", $user);
- }
-
- if ($contributors[0] && $contributors[0][0] > 0) {
- $anon = wfMsg("anonymous");
+
+ $oldid = $wgRequest->getVal( 'oldid' );
+ $diff = $wgRequest->getVal( 'diff' );
+
+ if ( !is_null( $oldid ) && is_null( $diff ) && wfMsg( 'history_copyright' ) !== '-' ) {
+ $msg = 'history_copyright';
} else {
- $anon = '';
+ $msg = 'copyright';
}
-
- $creds = $wgLang->listToText(array($real, $user, $anon));
-
- return wfMsg("othercontribs", $creds);
- }
-
- function getCopyright() {
- global $wgRightsPage, $wgRightsUrl, $wgRightsText;
- $out = "";
+
+ $out = '';
if( $wgRightsPage ) {
$link = $this->makeKnownLink( $wgRightsPage, $wgRightsText );
} elseif( $wgRightsUrl ) {
@@ -827,23 +815,23 @@ class Skin {
# Give up now
return $out;
}
- $out .= wfMsg( "copyright", $link );
+ $out .= wfMsg( $msg, $link );
return $out;
}
function getCopyrightIcon() {
global $wgRightsPage, $wgRightsUrl, $wgRightsText, $wgRightsIcon;
- $out = "";
+ $out = '';
if( $wgRightsIcon ) {
$icon = htmlspecialchars( $wgRightsIcon );
if( $wgRightsUrl ) {
$url = htmlspecialchars( $wgRightsUrl );
- $out .= "<a href=\"$url\">";
+ $out .= '<a href="'.$url.'">';
}
$text = htmlspecialchars( $wgRightsText );
$out .= "<img src=\"$icon\" alt='$text' />";
if( $wgRightsUrl ) {
- $out .= "</a>";
+ $out .= '</a>';
}
}
return $out;
@@ -852,7 +840,7 @@ class Skin {
function getPoweredBy() {
global $wgStylePath;
$url = htmlspecialchars( "$wgStylePath/images/poweredby_mediawiki_88x31.png" );
- $img = "<a href='http://www.mediawiki.org/'><img src='$url' alt='MediaWiki' /></a>";
+ $img = '<a href="http://www.mediawiki.org/"><img src="'.$url.'" alt="MediaWiki" /></a>';
return $img;
}
@@ -863,23 +851,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 = "<a href=\"" . $titleObj->escapeLocalURL()
- . "\"><img{$a} src=\""
- . $this->getLogo() . "\" alt=\"" . "[{$mp}]\" /></a>";
+ $s = '<a href="' . $titleObj->escapeLocalURL()
+ . '"><img'.$a.' src="'
+ . $this->getLogo() . '" alt="' . "[{$mp}]\" /></a>";
return $s;
}
@@ -888,7 +876,7 @@ class Skin {
global $wgOut, $wgTitle, $wgUser, $wgRequest, $wgLang;
global $wgDisableUploads, $wgRemoteUploads;
- $fname = "Skin::quickBar";
+ $fname = 'Skin::quickBar';
wfProfileIn( $fname );
$action = $wgRequest->getText( 'action' );
@@ -900,69 +888,69 @@ class Skin {
$sep = "\n<br />";
$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<br /><hr class='sep' />";
$articleExists = $wgTitle->getArticleId();
- if ( $wgOut->isArticle() || $action =="edit" || $action =="history" || $wpPreview) {
+ if ( $wgOut->isArticle() || $action =='edit' || $action =='history' || $wpPreview) {
if($wgOut->isArticle()) {
- $s .= "<strong>" . $this->editThisPage() . "</strong>";
+ $s .= '<strong>' . $this->editThisPage() . '</strong>';
} 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 .= "<strong>" . wfMsg("newpage") . "</strong>";
+ $s .= '<strong>' . wfMsg('newpage') . '</strong>';
}
}
- if( $tns%2 && $action!="edit" && !$wpPreview) {
- $s.="<br />".$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg("postcomment"),"action=edit&section=new");
+ if( $tns%2 && $action!='edit' && !$wpPreview) {
+ $s.= '<br />'.$this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('postcomment'),'action=edit&section=new');
}
/*
@@ -972,7 +960,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();
}
@@ -984,7 +972,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();
@@ -1013,15 +1001,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<br /><a href=\"" . htmlspecialchars( $wgSiteSupportPage ) .
- "\" class=\"internal\">" . wfMsg( "sitesupport" ) . "</a>";
+ '" class="internal">' . wfMsg( 'sitesupport' ) . '</a>';
}
$s .= "\n<br /></div>\n";
@@ -1032,30 +1020,31 @@ class Skin {
function specialPagesList()
{
global $wgUser, $wgOut, $wgLang, $wgServer, $wgRedirectScript;
+ require_once('SpecialPage.php');
$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 = "<form id=\"specialpages\" method=\"get\" class=\"inline\" " .
- "action=\"" . htmlspecialchars( "{$wgServer}{$wgRedirectScript}" ) . "\">\n";
+ $s = '<form id="specialpages" method="get" class="inline" ' .
+ 'action="' . htmlspecialchars( "{$wgServer}{$wgRedirectScript}" ) . "\">\n";
$s .= "<select name=\"wpDropdown\">\n";
$s .= "<option value=\"{$spp}\">{$sp}</option>\n";
@@ -1071,30 +1060,30 @@ class Skin {
function mainPageLink()
{
- $mp = wfMsg( "mainpage" );
+ $mp = wfMsg( 'mainpage' );
$s = $this->makeKnownLink( $mp, $mp );
return $s;
}
function copyrightLink()
{
- $s = $this->makeKnownLink( wfMsg( "copyrightpage" ),
- wfMsg( "copyrightpagename" ) );
+ $s = $this->makeKnownLink( wfMsg( 'copyrightpage' ),
+ wfMsg( 'copyrightpagename' ) );
return $s;
}
function aboutLink()
{
- $s = $this->makeKnownLink( wfMsg( "aboutpage" ),
- wfMsg( "aboutwikipedia" ) );
+ $s = $this->makeKnownLink( wfMsg( 'aboutpage' ),
+ wfMsg( 'aboutwikipedia' ) );
return $s;
}
function disclaimerLink()
{
- $s = $this->makeKnownLink( wfMsg( "disclaimerpage" ),
- wfMsg( "disclaimers" ) );
+ $s = $this->makeKnownLink( wfMsg( 'disclaimerpage' ),
+ wfMsg( 'disclaimers' ) );
return $s;
}
@@ -1107,16 +1096,16 @@ class Skin {
$redirect = $wgRequest->getVal( 'redirect' );
if ( ! $wgOut->isArticleRelated() ) {
- $s = wfMsg( "protectedpage" );
+ $s = wfMsg( 'protectedpage' );
} else {
$n = $wgTitle->getPrefixedText();
if ( $wgTitle->userCanEdit() ) {
- $t = wfMsg( "editthispage" );
+ $t = wfMsg( 'editthispage' );
} else {
#$t = wfMsg( "protectedpage" );
- $t = wfMsg( "viewsource" );
+ $t = wfMsg( 'viewsource' );
}
- $oid = $red = "";
+ $oid = $red = '';
if ( !is_null( $redirect ) ) { $red = "&redirect={$redirect}"; }
if ( $oldid && ! isset( $diff ) ) {
@@ -1134,11 +1123,11 @@ class Skin {
$diff = $wgRequest->getVal( 'diff' );
if ( $wgTitle->getArticleId() && ( ! $diff ) && $wgUser->isSysop() ) {
$n = $wgTitle->getPrefixedText();
- $t = wfMsg( "deletethispage" );
+ $t = wfMsg( 'deletethispage' );
- $s = $this->makeKnownLink( $n, $t, "action=delete" );
+ $s = $this->makeKnownLink( $n, $t, 'action=delete' );
} else {
- $s = "";
+ $s = '';
}
return $s;
}
@@ -1152,15 +1141,15 @@ class Skin {
$n = $wgTitle->getPrefixedText();
if ( $wgTitle->isProtected() ) {
- $t = wfMsg( "unprotectthispage" );
- $q = "action=unprotect";
+ $t = wfMsg( 'unprotectthispage' );
+ $q = 'action=unprotect';
} else {
- $t = wfMsg( "protectthispage" );
- $q = "action=protect";
+ $t = wfMsg( 'protectthispage' );
+ $q = 'action=protect';
}
$s = $this->makeKnownLink( $n, $t, $q );
} else {
- $s = "";
+ $s = '';
}
return $s;
}
@@ -1173,15 +1162,15 @@ class Skin {
$n = $wgTitle->getPrefixedText();
if ( $wgTitle->userIsWatching() ) {
- $t = wfMsg( "unwatchthispage" );
- $q = "action=unwatch";
+ $t = wfMsg( 'unwatchthispage' );
+ $q = 'action=unwatch';
} else {
- $t = wfMsg( "watchthispage" );
- $q = "action=watch";
+ $t = wfMsg( 'watchthispage' );
+ $q = 'action=watch';
}
$s = $this->makeKnownLink( $n, $t, $q );
} else {
- $s = wfMsg( "notanarticle" );
+ $s = wfMsg( 'notanarticle' );
}
return $s;
}
@@ -1191,8 +1180,8 @@ class Skin {
global $wgTitle, $wgLang;
if ( $wgTitle->userCanEdit() ) {
- $s = $this->makeKnownLink( $wgLang->specialPage( "Movepage" ),
- wfMsg( "movethispage" ), "target=" . $wgTitle->getPrefixedURL() );
+ $s = $this->makeKnownLink( $wgLang->specialPage( 'Movepage' ),
+ wfMsg( 'movethispage' ), 'target=' . $wgTitle->getPrefixedURL() );
} // no message if page is protected - would be redundant
return $s;
}
@@ -1202,7 +1191,7 @@ class Skin {
global $wgTitle;
$s = $this->makeKnownLink( $wgTitle->getPrefixedText(),
- wfMsg( "history" ), "action=history" );
+ wfMsg( 'history' ), 'action=history' );
return $s;
}
@@ -1210,8 +1199,8 @@ class Skin {
{
global $wgTitle, $wgLang;
- $s = $this->makeKnownLink( $wgLang->specialPage( "Whatlinkshere" ),
- wfMsg( "whatlinkshere" ), "target=" . $wgTitle->getPrefixedURL() );
+ $s = $this->makeKnownLink( $wgLang->specialPage( 'Whatlinkshere' ),
+ wfMsg( 'whatlinkshere' ), 'target=' . $wgTitle->getPrefixedURL() );
return $s;
}
@@ -1219,8 +1208,8 @@ class Skin {
{
global $wgTitle, $wgLang;
- $s = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
- wfMsg( "contributions" ), "target=" . $wgTitle->getPartialURL() );
+ $s = $this->makeKnownLink( $wgLang->specialPage( 'Contributions' ),
+ wfMsg( 'contributions' ), 'target=' . $wgTitle->getPartialURL() );
return $s;
}
@@ -1228,8 +1217,8 @@ class Skin {
{
global $wgTitle, $wgLang;
- $s = $this->makeKnownLink( $wgLang->specialPage( "Emailuser" ),
- wfMsg( "emailuser" ), "target=" . $wgTitle->getPartialURL() );
+ $s = $this->makeKnownLink( $wgLang->specialPage( 'Emailuser' ),
+ wfMsg( 'emailuser' ), 'target=' . $wgTitle->getPartialURL() );
return $s;
}
@@ -1238,11 +1227,11 @@ class Skin {
global $wgOut, $wgTitle, $wgLang;
if ( ! $wgOut->isArticleRelated() ) {
- $s = "(" . wfMsg( "notanarticle" ) . ")";
+ $s = '(' . wfMsg( 'notanarticle' ) . ')';
} else {
$s = $this->makeKnownLink( $wgLang->specialPage(
- "Recentchangeslinked" ), wfMsg( "recentchangeslinked" ),
- "target=" . $wgTitle->getPrefixedURL() );
+ 'Recentchangeslinked' ), wfMsg( 'recentchangeslinked' ),
+ 'target=' . $wgTitle->getPrefixedURL() );
}
return $s;
}
@@ -1253,56 +1242,56 @@ class Skin {
$a = $wgOut->getLanguageLinks();
if ( 0 == count( $a ) ) {
- if ( !$wgUseNewInterlanguage ) return "";
+ if ( !$wgUseNewInterlanguage ) return '';
$ns = $wgLang->getNsIndex ( $wgTitle->getNamespace () ) ;
- if ( $ns != 0 AND $ns != 1 ) return "" ;
- $pn = "Intl" ;
- $x = "mode=addlink&xt=".$wgTitle->getDBkey() ;
+ if ( $ns != 0 AND $ns != 1 ) return '' ;
+ $pn = 'Intl' ;
+ $x = 'mode=addlink&xt='.$wgTitle->getDBkey() ;
return $this->makeKnownLink( $wgLang->specialPage( $pn ),
- wfMsg( "intl" ) , $x );
+ wfMsg( 'intl' ) , $x );
}
if ( !$wgUseNewInterlanguage ) {
- $s = wfMsg( "otherlanguages" ) . ": ";
+ $s = wfMsg( 'otherlanguages' ) . ': ';
} else {
global $wgLanguageCode ;
- $x = "mode=zoom&xt=".$wgTitle->getDBkey() ;
- $x .= "&xl=".$wgLanguageCode ;
- $s = $this->makeKnownLink( $wgLang->specialPage( "Intl" ),
- wfMsg( "otherlanguages" ) , $x ) . ": " ;
+ $x = 'mode=zoom&xt='.$wgTitle->getDBkey() ;
+ $x .= '&xl='.$wgLanguageCode ;
+ $s = $this->makeKnownLink( $wgLang->specialPage( 'Intl' ),
+ wfMsg( 'otherlanguages' ) , $x ) . ': ' ;
}
- $s = wfMsg( "otherlanguages" ) . ": ";
+ $s = wfMsg( 'otherlanguages' ) . ': ';
$first = true;
- if($wgLang->isRTL()) $s .= "<span dir='LTR'>";
+ if($wgLang->isRTL()) $s .= '<span dir="LTR">';
foreach( $a as $l ) {
- if ( ! $first ) { $s .= " | "; }
+ if ( ! $first ) { $s .= ' | '; }
$first = false;
$nt = Title::newFromText( $l );
$url = $nt->getFullURL();
$text = $wgLang->getLanguageName( $nt->getInterwiki() );
- if ( "" == $text ) { $text = $l; }
+ if ( '' == $text ) { $text = $l; }
$style = $this->getExternalLinkAttributes( $l, $text );
$s .= "<a href=\"{$url}\"{$style}>{$text}</a>";
}
- if($wgLang->isRTL()) $s .= "</span>";
+ if($wgLang->isRTL()) $s .= '</span>';
return $s;
}
function bugReportsLink()
{
- $s = $this->makeKnownLink( wfMsg( "bugreportspage" ),
- wfMsg( "bugreports" ) );
+ $s = $this->makeKnownLink( wfMsg( 'bugreportspage' ),
+ wfMsg( 'bugreports' ) );
return $s;
}
function dateLink()
{
global $wgLinkCache;
- $t1 = Title::newFromText( gmdate( "F j" ) );
- $t2 = Title::newFromText( gmdate( "Y" ) );
+ $t1 = Title::newFromText( gmdate( 'F j' ) );
+ $t2 = Title::newFromText( gmdate( 'Y' ) );
$wgLinkCache->suspend();
$id = $t1->getArticleID();
@@ -1313,7 +1302,7 @@ class Skin {
} else {
$s = $this->makeKnownLink( $t1->getText() );
}
- $s .= ", ";
+ $s .= ', ';
$wgLinkCache->suspend();
$id = $t2->getArticleID();
@@ -1332,27 +1321,27 @@ class Skin {
global $wgLang, $wgTitle, $wgLinkCache;
$tns = $wgTitle->getNamespace();
- if ( -1 == $tns ) { return ""; }
+ if ( -1 == $tns ) { return ''; }
$pn = $wgTitle->getText();
- $tp = wfMsg( "talkpage" );
+ $tp = wfMsg( 'talkpage' );
if ( Namespace::isTalk( $tns ) ) {
$lns = Namespace::getSubject( $tns );
switch($tns) {
case 1:
- $text = wfMsg("articlepage");
+ $text = wfMsg('articlepage');
break;
case 3:
- $text = wfMsg("userpage");
+ $text = wfMsg('userpage');
break;
case 5:
- $text = wfMsg("wikipediapage");
+ $text = wfMsg('wikipediapage');
break;
case 7:
- $text = wfMsg("imagepage");
+ $text = wfMsg('imagepage');
break;
default:
- $text= wfMsg("articlepage");
+ $text= wfMsg('articlepage');
}
} else {
@@ -1360,8 +1349,8 @@ class Skin {
$text=$tp;
}
$n = $wgLang->getNsText( $lns );
- if ( "" == $n ) { $link = $pn; }
- else { $link = "{$n}:{$pn}"; }
+ if ( '' == $n ) { $link = $pn; }
+ else { $link = $n.':'.$pn; }
$wgLinkCache->suspend();
$s = $this->makeLink( $link, $text );
@@ -1375,7 +1364,7 @@ class Skin {
global $wgLang, $wgTitle, $wgLinkCache;
$tns = $wgTitle->getNamespace();
- if ( -1 == $tns ) { return ""; }
+ if ( -1 == $tns ) { return ''; }
$lns = ( Namespace::isTalk( $tns ) ) ? $tns : Namespace::getTalk( $tns );
@@ -1384,10 +1373,10 @@ class Skin {
$n = $wgLang->getNsText( $lns );
$pn = $wgTitle->getText();
- $link = "{$n}:{$pn}";
+ $link = $n.':'.$pn;
$wgLinkCache->suspend();
- $s = $this->makeKnownLink($link, wfMsg("postcomment"), "action=edit&section=new");
+ $s = $this->makeKnownLink($link, wfMsg('postcomment'), 'action=edit&section=new');
$wgLinkCache->resume();
return $s;
@@ -1404,63 +1393,63 @@ class Skin {
# Note: This function MUST call getArticleID() on the link,
# otherwise the cache won't get updated properly. See LINKCACHE.DOC.
#
- function makeLink( $title, $text = "", $query = "", $trail = "" ) {
- wfProfileIn( "Skin::makeLink" );
+ function makeLink( $title, $text = '', $query = '', $trail = '' ) {
+ wfProfileIn( 'Skin::makeLink' );
$nt = Title::newFromText( $title );
if ($nt) {
$result = $this->makeLinkObj( Title::newFromText( $title ), $text, $query, $trail );
} else {
- wfDebug( "Invalid title passed to Skin::makeLink(): \"$title\"\n" );
+ wfDebug( 'Invalid title passed to Skin::makeLink(): "'.$title."\"\n" );
$result = $text == "" ? $title : $text;
}
- wfProfileOut( "Skin::makeLink" );
+ wfProfileOut( 'Skin::makeLink' );
return $result;
}
- function makeKnownLink( $title, $text = "", $query = "", $trail = "", $prefix = '',$aprops = '') {
+ function makeKnownLink( $title, $text = '', $query = '', $trail = '', $prefix = '',$aprops = '') {
$nt = Title::newFromText( $title );
if ($nt) {
return $this->makeKnownLinkObj( Title::newFromText( $title ), $text, $query, $trail, $prefix , $aprops );
} else {
- wfDebug( "Invalid title passed to Skin::makeKnownLink(): \"$title\"\n" );
- return $text == "" ? $title : $text;
+ wfDebug( 'Invalid title passed to Skin::makeKnownLink(): "'.$title."\"\n" );
+ return $text == '' ? $title : $text;
}
}
- function makeBrokenLink( $title, $text = "", $query = "", $trail = "" ) {
+ function makeBrokenLink( $title, $text = '', $query = '', $trail = '' ) {
$nt = Title::newFromText( $title );
if ($nt) {
return $this->makeBrokenLinkObj( Title::newFromText( $title ), $text, $query, $trail );
} else {
- wfDebug( "Invalid title passed to Skin::makeBrokenLink(): \"$title\"\n" );
- return $text == "" ? $title : $text;
+ wfDebug( 'Invalid title passed to Skin::makeBrokenLink(): "'.$title."\"\n" );
+ return $text == '' ? $title : $text;
}
}
- function makeStubLink( $title, $text = "", $query = "", $trail = "" ) {
+ function makeStubLink( $title, $text = '', $query = '', $trail = '' ) {
$nt = Title::newFromText( $title );
if ($nt) {
return $this->makeStubLinkObj( Title::newFromText( $title ), $text, $query, $trail );
} else {
- wfDebug( "Invalid title passed to Skin::makeStubLink(): \"$title\"\n" );
- return $text == "" ? $title : $text;
+ wfDebug( 'Invalid title passed to Skin::makeStubLink(): "'.$title."\"\n" );
+ return $text == '' ? $title : $text;
}
}
# Pass a title object, not a title string
- function makeLinkObj( &$nt, $text= "", $query = "", $trail = "", $prefix = "" )
+ function makeLinkObj( &$nt, $text= '', $query = '', $trail = '', $prefix = '' )
{
- global $wgOut, $wgUser;
+ global $wgOut, $wgUser, $wgLoadBalancer;
if ( $nt->isExternal() ) {
$u = $nt->getFullURL();
$link = $nt->getPrefixedURL();
- if ( "" == $text ) { $text = $nt->getPrefixedText(); }
- $style = $this->getExternalLinkAttributes( $link, $text );
+ if ( '' == $text ) { $text = $nt->getPrefixedText(); }
+ $style = $this->getExternalLinkAttributes( $link, $text, 'extiw' );
- $inside = "";
- if ( "" != $trail ) {
- if ( preg_match( "/^([a-z]+)(.*)$$/sD", $trail, $m ) ) {
+ $inside = '';
+ if ( '' != $trail ) {
+ if ( preg_match( '/^([a-z]+)(.*)$$/sD', $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
}
@@ -1476,10 +1465,11 @@ class Skin {
if ( 0 == $aid ) {
$retVal = $this->makeBrokenLinkObj( $nt, $text, $query, $trail, $prefix );
} else {
- $threshold = $wgUser->getOption("stubthreshold") ;
+ $threshold = $wgUser->getOption('stubthreshold') ;
if ( $threshold > 0 ) {
- $res = wfQuery ( "SELECT LENGTH(cur_text) AS x, cur_namespace, cur_is_redirect FROM cur WHERE cur_id='{$aid}'", DB_READ ) ;
-
+ $wgLoadBalancer->force(-1);
+ $res = wfQuery ( "SELECT LENGTH(cur_text) AS x, cur_namespace, cur_is_redirect FROM cur WHERE cur_id='{$aid}'", DB_READ ) ;
+ $wgLoadBalancer->force(0);
if ( wfNumRows( $res ) > 0 ) {
$s = wfFetchObject( $res );
$size = $s->x;
@@ -1504,33 +1494,41 @@ class Skin {
}
# Pass a title object, not a title string
- function makeKnownLinkObj( &$nt, $text = "", $query = "", $trail = "", $prefix = "" , $aprops = '')
+ function makeKnownLinkObj( &$nt, $text = '', $query = '', $trail = '', $prefix = '' , $aprops = '')
{
- global $wgOut, $wgTitle;
+ global $wgOut, $wgTitle, $wgInputEncoding;
- $fname = "Skin::makeKnownLinkObj";
+ $fname = 'Skin::makeKnownLinkObj';
wfProfileIn( $fname );
+ if ( !is_object( $nt ) ) {
+ return $text;
+ }
$link = $nt->getPrefixedURL();
- if ( "" == $link ) {
- $u = "";
- if ( "" == $text ) {
+ if ( '' == $link ) {
+ $u = '';
+ if ( '' == $text ) {
$text = htmlspecialchars( $nt->getFragment() );
}
} else {
$u = $nt->escapeLocalURL( $query );
}
- if ( "" != $nt->getFragment() ) {
- $u .= "#" . htmlspecialchars( $nt->getFragment() );
+ if ( '' != $nt->getFragment() ) {
+ $anchor = urlencode( do_html_entity_decode( str_replace(' ', '_', $nt->getFragment()), ENT_COMPAT, $wgInputEncoding ) );
+ $replacearray = array(
+ '%3A' => ':',
+ '%' => '.'
+ );
+ $u .= '#' . str_replace(array_keys($replacearray),array_values($replacearray),$anchor);
}
- if ( "" == $text ) {
+ if ( '' == $text ) {
$text = htmlspecialchars( $nt->getPrefixedText() );
}
$style = $this->getInternalLinkAttributesObj( $nt, $text );
- $inside = "";
- if ( "" != $trail ) {
+ $inside = '';
+ if ( '' != $trail ) {
if ( preg_match( $this->linktrail, $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
@@ -1542,33 +1540,33 @@ class Skin {
}
# Pass a title object, not a title string
- function makeBrokenLinkObj( &$nt, $text = "", $query = "", $trail = "", $prefix = "" )
+ function makeBrokenLinkObj( &$nt, $text = '', $query = '', $trail = '', $prefix = '' )
{
global $wgOut, $wgUser;
- $fname = "Skin::makeBrokenLinkObj";
+ $fname = 'Skin::makeBrokenLinkObj';
wfProfileIn( $fname );
- if ( "" == $query ) {
- $q = "action=edit";
+ if ( '' == $query ) {
+ $q = 'action=edit';
} else {
- $q = "action=edit&{$query}";
+ $q = 'action=edit&'.$query;
}
$u = $nt->escapeLocalURL( $q );
- if ( "" == $text ) {
+ if ( '' == $text ) {
$text = htmlspecialchars( $nt->getPrefixedText() );
}
$style = $this->getInternalLinkAttributesObj( $nt, $text, "yes" );
- $inside = "";
- if ( "" != $trail ) {
+ $inside = '';
+ if ( '' != $trail ) {
if ( preg_match( $this->linktrail, $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
}
}
- if ( $wgUser->getOption( "highlightbroken" ) ) {
+ if ( $wgUser->getOption( 'highlightbroken' ) ) {
$s = "<a href=\"{$u}\"{$style}>{$prefix}{$text}{$inside}</a>{$trail}";
} else {
$s = "{$prefix}{$text}{$inside}<a href=\"{$u}\"{$style}>?</a>{$trail}";
@@ -1579,7 +1577,7 @@ class Skin {
}
# Pass a title object, not a title string
- function makeStubLinkObj( &$nt, $text = "", $query = "", $trail = "", $prefix = "" )
+ function makeStubLinkObj( &$nt, $text = '', $query = '', $trail = '', $prefix = '' )
{
global $wgOut, $wgUser;
@@ -1587,19 +1585,19 @@ class Skin {
$u = $nt->escapeLocalURL( $query );
- if ( "" == $text ) {
+ if ( '' == $text ) {
$text = htmlspecialchars( $nt->getPrefixedText() );
}
- $style = $this->getInternalLinkAttributesObj( $nt, $text, "stub" );
+ $style = $this->getInternalLinkAttributesObj( $nt, $text, 'stub' );
- $inside = "";
- if ( "" != $trail ) {
+ $inside = '';
+ if ( '' != $trail ) {
if ( preg_match( $this->linktrail, $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
}
}
- if ( $wgUser->getOption( "highlightbroken" ) ) {
+ if ( $wgUser->getOption( 'highlightbroken' ) ) {
$s = "<a href=\"{$u}\"{$style}>{$prefix}{$text}{$inside}</a>{$trail}";
} else {
$s = "{$prefix}{$text}{$inside}<a href=\"{$u}\"{$style}>!</a>{$trail}";
@@ -1607,14 +1605,14 @@ class Skin {
return $s;
}
- function makeSelfLinkObj( &$nt, $text = "", $query = "", $trail = "", $prefix = "" )
+ function makeSelfLinkObj( &$nt, $text = '', $query = '', $trail = '', $prefix = '' )
{
$u = $nt->escapeLocalURL( $query );
- if ( "" == $text ) {
+ if ( '' == $text ) {
$text = htmlspecialchars( $nt->getPrefixedText() );
}
- $inside = "";
- if ( "" != $trail ) {
+ $inside = '';
+ if ( '' != $trail ) {
if ( preg_match( $this->linktrail, $trail, $m ) ) {
$inside = $m[1];
$trail = $m[2];
@@ -1651,6 +1649,12 @@ class Skin {
$this->checkTitle($title, $name);
return $title->getLocalURL( $urlaction );
}
+ # this can be passed the NS number as defined in Language.php
+ /*static*/ function makeNSUrl( $name, $urlaction='', $namespace=0 ) {
+ $title = Title::makeTitle( $namespace, $name );
+ $this->checkTitle($title, $name);
+ return $title->getLocalURL( $urlaction );
+ }
/* these return an array with the 'href' and boolean 'exists' */
/*static*/ function makeUrlDetails ( $name, $urlaction='' ) {
@@ -1693,40 +1697,40 @@ class Skin {
if(!is_object($title)) {
$title = Title::newFromText( $name );
if(!is_object($title)) {
- $title = Title::newFromText( '<error: link target missing>' );
+ $title = Title::newFromText( '--error: link target missing--' );
}
}
}
function fnamePart( $url )
{
- $basename = strrchr( $url, "/" );
+ $basename = strrchr( $url, '/' );
if ( false === $basename ) { $basename = $url; }
else { $basename = substr( $basename, 1 ); }
return wfEscapeHTML( $basename );
}
- function makeImage( $url, $alt = "" )
+ function makeImage( $url, $alt = '' )
{
global $wgOut;
- if ( "" == $alt ) { $alt = $this->fnamePart( $url ); }
- $s = "<img src=\"{$url}\" alt=\"{$alt}\" />";
+ if ( '' == $alt ) { $alt = $this->fnamePart( $url ); }
+ $s = '<img src="'.$url.'" alt="'.$alt.'" />';
return $s;
}
- function makeImageLink( $name, $url, $alt = "" ) {
+ function makeImageLink( $name, $url, $alt = '' ) {
$nt = Title::makeTitle( Namespace::getImage(), $name );
return $this->makeImageLinkObj( $nt, $alt );
}
- function makeImageLinkObj( $nt, $alt = "" ) {
+ function makeImageLinkObj( $nt, $alt = '' ) {
global $wgLang, $wgUseImageResize;
$img = Image::newFromTitle( $nt );
$url = $img->getURL();
- $align = "";
- $prefix = $postfix = "";
+ $align = '';
+ $prefix = $postfix = '';
if ( $wgUseImageResize ) {
# Check if the alt text is of the form "options|alt text"
@@ -1739,7 +1743,7 @@ class Skin {
# * center center the image
# * framed Keep original image size, no magnify-button.
- $part = explode( "|", $alt);
+ $part = explode( '|', $alt);
$mwThumb =& MagicWord::get( MAG_IMG_THUMBNAIL );
$mwLeft =& MagicWord::get( MAG_IMG_LEFT );
@@ -1757,19 +1761,19 @@ class Skin {
$thumb=true;
} elseif ( ! is_null( $mwRight->matchVariableStartToEnd($val) ) ) {
# remember to set an alignment, don't render immediately
- $align = "right";
+ $align = 'right';
} elseif ( ! is_null( $mwLeft->matchVariableStartToEnd($val) ) ) {
# remember to set an alignment, don't render immediately
- $align = "left";
+ $align = 'left';
} elseif ( ! is_null( $mwCenter->matchVariableStartToEnd($val) ) ) {
# remember to set an alignment, don't render immediately
- $align = "center";
+ $align = 'center';
} elseif ( ! is_null( $mwNone->matchVariableStartToEnd($val) ) ) {
# remember to set an alignment, don't render immediately
- $align = "none";
+ $align = 'none';
} elseif ( ! is_null( $match = $mwWidth->matchVariableStartToEnd($val) ) ) {
# $match is the image width in pixels
- if ( preg_match( "/^([0-9]*)x([0-9]*)$/", $match, $m ) ) {
+ if ( preg_match( '/^([0-9]*)x([0-9]*)$/', $match, $m ) ) {
$width = intval( $m[1] );
$height = intval( $m[2] );
} else {
@@ -1779,11 +1783,11 @@ class Skin {
$framed=true;
}
}
- if ( "center" == $align )
+ if ( 'center' == $align )
{
$prefix = '<span style="text-align: center">';
$postfix = '</span>';
- $align = "none";
+ $align = 'none';
}
if ( $thumb || $framed ) {
@@ -1795,8 +1799,8 @@ class Skin {
#
# If thumbnail width has not been provided, it is set
# here to 180 pixels
- if ( $align == "" ) {
- $align = $wgLang->isRTL() ? "left" : "right";
+ if ( $align == '' ) {
+ $align = $wgLang->isRTL() ? 'left' : 'right';
}
if ( ! isset($width) ) {
$width = 180;
@@ -1811,7 +1815,7 @@ class Skin {
if ( ( ! $height === false )
&& ( $img->getHeight() * $width / $img->getWidth() > $height ) ) {
print "height=$height<br>\nimg->getHeight() = ".$img->getHeight()."<br>\n";
- print "rescaling by factor ". $height / $img->getHeight() . "<br>\n";
+ print 'rescaling by factor '. $height / $img->getHeight() . "<br>\n";
$width = $img->getWidth() * $height / $img->getHeight();
}
$url = $img->createThumb( $width );
@@ -1824,28 +1828,28 @@ class Skin {
$alt = htmlspecialchars( $alt );
$u = $nt->escapeLocalURL();
- if ( $url == "" )
+ if ( $url == '' )
{
- $s = str_replace( "$1", $img->getName(), wfMsg("missingimage") );
+ $s = str_replace( "$1", $img->getName(), wfMsg('missingimage') );
$s .= "<br>{$alt}<br>{$url}<br>\n";
} else {
- $s = "<a href=\"{$u}\" class='image' title=\"{$alt}\">" .
- "<img src=\"{$url}\" alt=\"{$alt}\" /></a>";
+ $s = '<a href="'.$u.'" class="image" title="'.$alt.'">' .
+ '<img src="'.$url.'" alt="'.$alt.'" /></a>';
}
- if ( "" != $align ) {
- $s = "<div class=\"float{$align}\"><span>{$s}</span>\n</div>";
+ if ( '' != $align ) {
+ $s = "<div class=\"float{$align}\"><span>{$s}</span></div>";
}
- return $prefix.$s.$postfix;
+ return str_replace("\n", ' ',$prefix.$s.$postfix);
}
- function makeThumbLinkObj( $img, $label = "", $align = "right", $boxwidth = 180, $boxheight=false, $framed=false ) {
+ function makeThumbLinkObj( $img, $label = '', $align = 'right', $boxwidth = 180, $boxheight=false, $framed=false ) {
global $wgStylePath, $wgLang;
# $image = Title::makeTitle( Namespace::getImage(), $name );
$url = $img->getURL();
#$label = htmlspecialchars( $label );
- $alt = preg_replace( "/<[^>]*>/", "", $label);
+ $alt = preg_replace( '/<[^>]*>/', '', $label);
$alt = htmlspecialchars( $alt );
if ( $img->exists() )
@@ -1876,13 +1880,13 @@ class Skin {
$u = $img->getEscapeLocalURL();
- $more = htmlspecialchars( wfMsg( "thumbnail-more" ) );
- $magnifyalign = $wgLang->isRTL() ? "left" : "right";
- $textalign = $wgLang->isRTL() ? ' style="text-align:right"' : "";
+ $more = htmlspecialchars( wfMsg( 'thumbnail-more' ) );
+ $magnifyalign = $wgLang->isRTL() ? 'left' : 'right';
+ $textalign = $wgLang->isRTL() ? ' style="text-align:right"' : '';
$s = "<div class=\"thumb t{$align}\"><div style=\"width:{$oboxwidth}px;\">";
- if ( $thumbUrl == "" ) {
- $s .= str_replace( "$1", $img->getName(), wfMsg("missingimage") );
+ if ( $thumbUrl == '' ) {
+ $s .= str_replace( "$1", $img->getName(), wfMsg('missingimage') );
$zoomicon = '';
} else {
$s .= '<a href="'.$u.'" class="internal" title="'.$alt.'">'.
@@ -1897,8 +1901,8 @@ class Skin {
'width="15" height="11" alt="'.$more.'" /></a></div>';
}
}
- $s .= ' <div class="thumbcaption" '.$textalign.'>'.$zoomicon.$label."</div></div>\n</div>";
- return $s;
+ $s .= ' <div class="thumbcaption" '.$textalign.'>'.$zoomicon.$label."</div></div></div>";
+ return str_replace("\n", ' ', $s);
}
function makeMediaLink( $name, $url, $alt = "" ) {
@@ -1908,14 +1912,20 @@ class Skin {
function makeMediaLinkObj( $nt, $alt = "" )
{
- $name = $nt->getDBKey();
- $url = Image::wfImageUrl( $name );
- if ( empty( $alt ) ) {
- $alt = preg_replace( '/\.(.+?)^/', '', $name );
+ if ( ! isset( $nt ) )
+ {
+ ### HOTFIX. Instead of breaking, return empry string.
+ $s = $alt;
+ } else {
+ $name = $nt->getDBKey();
+ $url = Image::wfImageUrl( $name );
+ if ( empty( $alt ) ) {
+ $alt = preg_replace( '/\.(.+?)^/', '', $name );
+ }
+
+ $u = htmlspecialchars( $url );
+ $s = "<a href=\"{$u}\" class='internal' title=\"{$alt}\">{$alt}</a>";
}
-
- $u = htmlspecialchars( $url );
- $s = "<a href=\"{$u}\" class='internal' title=\"{$alt}\">{$alt}</a>";
return $s;
}
@@ -1923,7 +1933,7 @@ class Skin {
{
global $wgLang;
- if ( "" == $key ) { $key = strtolower( $name ); }
+ if ( '' == $key ) { $key = strtolower( $name ); }
$pn = $wgLang->ucfirst( $name );
return $this->makeKnownLink( $wgLang->specialPage( $pn ),
wfMsg( $key ) );
@@ -1935,7 +1945,7 @@ class Skin {
if( $escape ) {
$text = htmlspecialchars( $text );
}
- return "<a href=\"$url\"$style>$text</a>";
+ return '<a href="'.$url.'"'.$style.'>'.$text.'</a>';
}
# Called by history lists and recent changes
@@ -1947,15 +1957,15 @@ class Skin {
$this->rc_cache = array() ;
$this->rcMoveIndex = 0;
$this->rcCacheIndex = 0 ;
- $this->lastdate = "";
+ $this->lastdate = '';
$this->rclistOpen = false;
- return "";
+ return '';
}
function beginImageHistoryList()
{
- $s = "\n<h2>" . wfMsg( "imghistory" ) . "</h2>\n" .
- "<p>" . wfMsg( "imghistlegend" ) . "</p>\n<ul class='special'>";
+ $s = "\n<h2>" . wfMsg( 'imghistory' ) . "</h2>\n" .
+ "<p>" . wfMsg( 'imghistlegend' ) . "</p>\n".'<ul class="special">';
return $s;
}
@@ -1977,57 +1987,58 @@ class Skin {
# Get rc_xxxx variables
extract( $rcObj->mAttribs ) ;
- $curIdEq = "curid=$rc_cur_id";
+ $curIdEq = 'curid='.$rc_cur_id;
# Spacer image
- $r = "" ;
+ $r = '' ;
- $r .= "<img src='{$wgStylePath}/images/Arr_.png' width='12' height='12' border='0' />" ; $r .= "<tt>" ;
+ $r .= '<img src="'.$wgStylePath.'/images/Arr_.png" width="12" height="12" border="0" />' ;
+ $r .= '<tt>' ;
- if ( $rc_type == RC_MOVE ) {
- $r .= "&nbsp;&nbsp;";
+ if ( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
+ $r .= '&nbsp;&nbsp;';
} else {
# M & N (minor & new)
- $M = wfMsg( "minoreditletter" );
- $N = wfMsg( "newpageletter" );
+ $M = wfMsg( 'minoreditletter' );
+ $N = wfMsg( 'newpageletter' );
if ( $rc_type == RC_NEW ) {
$r .= $N ;
} else {
- $r .= "&nbsp;" ;
+ $r .= '&nbsp;' ;
}
if ( $rc_minor ) {
$r .= $M ;
} else {
- $r .= "&nbsp;" ;
+ $r .= '&nbsp;' ;
}
}
# Timestamp
- $r .= " ".$rcObj->timestamp." " ;
- $r .= "</tt>" ;
+ $r .= ' '.$rcObj->timestamp.' ' ;
+ $r .= '</tt>' ;
# Article link
$link = $rcObj->link ;
- if ( $rcObj->watched ) $link = "<strong>{$link}</strong>" ;
+ if ( $rcObj->watched ) $link = '<strong>'.$link.'</strong>' ;
$r .= $link ;
- # Cur
- $r .= " (" ;
- $r .= $rcObj->curlink ;
- $r .= "; " ;
+ # Diff
+ $r .= ' (' ;
+ $r .= $rcObj->difflink ;
+ $r .= '; ' ;
# Hist
- $r .= $this->makeKnownLinkObj( $rcObj->getTitle(), wfMsg( "hist" ), "{$curIdEq}&action=history" );
+ $r .= $this->makeKnownLinkObj( $rcObj->getTitle(), wfMsg( 'hist' ), $curIdEq.'&action=history' );
# User/talk
- $r .= ") . . ".$rcObj->userlink ;
+ $r .= ') . . '.$rcObj->userlink ;
$r .= $rcObj->usertalklink ;
# Comment
- if ( $rc_comment != "" && $rc_type != RC_MOVE ) {
+ if ( $rc_comment != '' && $rc_type != RC_MOVE && $rc_type != RC_MOVE_OVER_REDIRECT ) {
$rc_comment=$this->formatComment($rc_comment);
- $r .= $wgLang->emphasize( " (".$rc_comment.")" );
+ $r .= $wgLang->emphasize( ' ('.$rc_comment.')' );
}
$r .= "<br />\n" ;
@@ -2039,9 +2050,9 @@ class Skin {
{
global $wgStylePath, $wgLang ;
- $r = "" ;
- $M = wfMsg( "minoreditletter" );
- $N = wfMsg( "newpageletter" );
+ $r = '' ;
+ $M = wfMsg( 'minoreditletter' );
+ $N = wfMsg( 'newpageletter' );
# Collate list of users
$isnew = false ;
@@ -2063,86 +2074,86 @@ class Skin {
if ( $count > 1 ) $text .= " ({$count}&times;)" ;
array_push ( $users , $text ) ;
}
- $users = " <font size='-1'>[".implode("; ",$users)."]</font>" ;
+ $users = ' <font size="-1">['.implode('; ',$users).']</font>' ;
# Arrow
- $rci = "RCI{$this->rcCacheIndex}" ;
- $rcl = "RCL{$this->rcCacheIndex}" ;
- $rcm = "RCM{$this->rcCacheIndex}" ;
- $toggleLink = "javascript:toggleVisibility(\"{$rci}\",\"{$rcm}\",\"{$rcl}\")" ;
- $arrowdir = $wgLang->isRTL() ? "l" : "r";
- $tl = "<span id='{$rcm}'><a href='$toggleLink'><img src='{$wgStylePath}/images/Arr_{$arrowdir}.png' width='12' height='12' /></a></span>" ;
- $tl .= "<span id='{$rcl}' style='display:none'><a href='$toggleLink'><img src='{$wgStylePath}/images/Arr_d.png' width='12' height='12' /></a></span>" ;
+ $rci = 'RCI'.$this->rcCacheIndex ;
+ $rcl = 'RCL'.$this->rcCacheIndex ;
+ $rcm = 'RCM'.$this->rcCacheIndex ;
+ $toggleLink = "javascript:toggleVisibility('$rci','$rcm','$rcl')" ;
+ $arrowdir = $wgLang->isRTL() ? 'l' : 'r';
+ $tl = '<span id="'.$rcm.'"><a href="'.$toggleLink.'"><img src="'.$wgStylePath.'/images/Arr_'.$arrowdir.'.png" width="12" height="12" /></a></span>' ;
+ $tl .= '<span id="'.$rcl.'" style="display:none"><a href="'.$toggleLink.'"><img src="'.$wgStylePath.'/images/Arr_d.png" width="12" height="12" /></a></span>' ;
$r .= $tl ;
# Main line
# M/N
- $r .= "<tt>" ;
+ $r .= '<tt>' ;
if ( $isnew ) $r .= $N ;
- else $r .= "&nbsp;" ;
- $r .= "&nbsp;" ; # Minor
+ else $r .= '&nbsp;' ;
+ $r .= '&nbsp;' ; # Minor
# Timestamp
- $r .= " ".$block[0]->timestamp." " ;
- $r .= "</tt>" ;
+ $r .= ' '.$block[0]->timestamp.' ' ;
+ $r .= '</tt>' ;
# Article link
$link = $block[0]->link ;
- if ( $block[0]->watched ) $link = "<strong>{$link}</strong>" ;
+ if ( $block[0]->watched ) $link = '<strong>'.$link.'</strong>' ;
$r .= $link ;
- $curIdEq = "curid=" . $block[0]->mAttribs['rc_cur_id'];
+ $curIdEq = 'curid=' . $block[0]->mAttribs['rc_cur_id'];
if ( $block[0]->mAttribs['rc_type'] != RC_LOG ) {
# Changes
- $r .= " (".count($block)." " ;
- if ( $isnew ) $r .= wfMsg("changes");
- else $r .= $this->makeKnownLinkObj( $block[0]->getTitle() , wfMsg("changes") ,
- "{$curIdEq}&diff=0&oldid=".$oldid ) ;
- $r .= "; " ;
+ $r .= ' ('.count($block).' ' ;
+ if ( $isnew ) $r .= wfMsg('changes');
+ else $r .= $this->makeKnownLinkObj( $block[0]->getTitle() , wfMsg('changes') ,
+ $curIdEq.'&diff=0&oldid='.$oldid ) ;
+ $r .= '; ' ;
# History
- $r .= $this->makeKnownLinkObj( $block[0]->getTitle(), wfMsg( "history" ), "{$curIdEq}&action=history" );
- $r .= ")" ;
+ $r .= $this->makeKnownLinkObj( $block[0]->getTitle(), wfMsg( 'history' ), $curIdEq.'&action=history' );
+ $r .= ')' ;
}
$r .= $users ;
$r .= "<br />\n" ;
# Sub-entries
- $r .= "<div id='{$rci}' style='display:none'>" ;
+ $r .= '<div id="'.$rci.'" style="display:none">' ;
foreach ( $block AS $rcObj ) {
# Get rc_xxxx variables
extract( $rcObj->mAttribs );
- $r .= "<img src='{$wgStylePath}/images/Arr_.png' width=12 height=12 />";
- $r .= "<tt>&nbsp; &nbsp; &nbsp; &nbsp;" ;
+ $r .= '<img src="'.$wgStylePath.'/images/Arr_.png" width="12" height="12" />';
+ $r .= '<tt>&nbsp; &nbsp; &nbsp; &nbsp;' ;
if ( $rc_new ) $r .= $N ;
- else $r .= "&nbsp;" ;
+ else $r .= '&nbsp;' ;
if ( $rc_minor ) $r .= $M ;
- else $r .= "&nbsp;" ;
- $r .= "</tt>" ;
+ else $r .= '&nbsp;' ;
+ $r .= '</tt>' ;
- $o = "" ;
+ $o = '' ;
if ( $rc_last_oldid != 0 ) {
- $o = "oldid=".$rc_last_oldid ;
+ $o = 'oldid='.$rc_last_oldid ;
}
if ( $rc_type == RC_LOG ) {
$link = $rcObj->timestamp ;
} else {
$link = $this->makeKnownLinkObj( $rcObj->getTitle(), $rcObj->timestamp , "{$curIdEq}&$o" ) ;
}
- $link = "<tt>{$link}</tt>" ;
+ $link = '<tt>'.$link.'</tt>' ;
$r .= $link ;
- $r .= " (" ;
+ $r .= ' (' ;
$r .= $rcObj->curlink ;
- $r .= "; " ;
+ $r .= '; ' ;
$r .= $rcObj->lastlink ;
- $r .= ") . . ".$rcObj->userlink ;
+ $r .= ') . . '.$rcObj->userlink ;
$r .= $rcObj->usertalklink ;
- if ( $rc_comment != "" ) {
+ if ( $rc_comment != '' ) {
$rc_comment=$this->formatComment($rc_comment);
- $r .= $wgLang->emphasize( " (".$rc_comment.")" ) ;
+ $r .= $wgLang->emphasize( ' ('.$rc_comment.')' ) ;
}
$r .= "<br />\n" ;
}
@@ -2157,8 +2168,8 @@ class Skin {
function recentChangesBlock ()
{
global $wgStylePath ;
- if ( count ( $this->rc_cache ) == 0 ) return "" ;
- $blockOut = "";
+ if ( count ( $this->rc_cache ) == 0 ) return '' ;
+ $blockOut = '';
foreach ( $this->rc_cache AS $secureName => $block ) {
if ( count ( $block ) < 2 ) {
$blockOut .= $this->recentChangesBlockLine ( array_shift ( $block ) ) ;
@@ -2167,7 +2178,7 @@ class Skin {
}
}
- return "<div>{$blockOut}</div>" ;
+ return '<div>'.$blockOut.'</div>' ;
}
# Called in a loop over all displayed RC entries
@@ -2175,7 +2186,7 @@ class Skin {
function recentChangesLine( &$rc, $watched = false )
{
global $wgUser ;
- $usenew = $wgUser->getOption( "usenewrc" );
+ $usenew = $wgUser->getOption( 'usenewrc' );
if ( $usenew )
$line = $this->recentChangesLineNew ( $rc, $watched ) ;
else
@@ -2189,70 +2200,73 @@ class Skin {
# Extract DB fields into local scope
extract( $rc->mAttribs );
- $curIdEq = "curid=" . $rc_cur_id;
+ $curIdEq = 'curid=' . $rc_cur_id;
# Make date header if necessary
$date = $wgLang->date( $rc_timestamp, true);
- $s = "";
+ $s = '';
if ( $date != $this->lastdate ) {
- if ( "" != $this->lastdate ) { $s .= "</ul>\n"; }
+ if ( '' != $this->lastdate ) { $s .= "</ul>\n"; }
$s .= "<h4>{$date}</h4>\n<ul class='special'>";
$this->lastdate = $date;
$this->rclistOpen = true;
}
- $s .= "<li> ";
+ $s .= '<li> ';
- if ( $rc_type == RC_MOVE ) {
+ if ( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
# Diff
- $s .= "(" . wfMsg( "diff" ) . ") (";
+ $s .= '(' . wfMsg( 'diff' ) . ') (';
# Hist
- $s .= $this->makeKnownLinkObj( $rc->getMovedToTitle(), wfMsg( "hist" ), "action=history" ) .
- ") . . ";
+ $s .= $this->makeKnownLinkObj( $rc->getMovedToTitle(), wfMsg( 'hist' ), 'action=history' ) .
+ ') . . ';
# "[[x]] moved to [[y]]"
-
- $s .= wfMsg( "1movedto2", $this->makeKnownLinkObj( $rc->getTitle(), "", "redirect=no" ),
- $this->makeKnownLinkObj( $rc->getMovedToTitle(), "" ) );
-
+ if ( $rc_type == RC_MOVE ) {
+ $msg = '1movedto2';
+ } else {
+ $msg = '1movedto2_redir';
+ }
+ $s .= wfMsg( $msg, $this->makeKnownLinkObj( $rc->getTitle(), '', 'redirect=no' ),
+ $this->makeKnownLinkObj( $rc->getMovedToTitle(), '' ) );
} else {
# Diff link
if ( $rc_type == RC_NEW || $rc_type == RC_LOG ) {
- $diffLink = wfMsg( "diff" );
+ $diffLink = wfMsg( 'diff' );
} else {
- $diffLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "diff" ),
- "{$curIdEq}&diff={$rc_this_oldid}&oldid={$rc_last_oldid}" ,'' ,'' , ' tabindex="'.$rc->counter.'"');
+ $diffLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( 'diff' ),
+ $curIdEq.'&diff='.$rc_this_oldid.'&oldid='.$rc_last_oldid ,'' ,'' , ' tabindex="'.$rc->counter.'"');
}
- $s .= "($diffLink) (";
+ $s .= '('.$diffLink.') (';
# History link
- $s .= $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "hist" ), "{$curIdEq}&action=history" );
- $s .= ") . . ";
+ $s .= $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( 'hist' ), $curIdEq.'&action=history' );
+ $s .= ') . . ';
# M and N (minor and new)
- $M = wfMsg( "minoreditletter" );
- $N = wfMsg( "newpageletter" );
- if ( $rc_minor ) { $s .= " <strong>{$M}</strong>"; }
- if ( $rc_type == RC_NEW ) { $s .= "<strong>{$N}</strong>"; }
+ $M = wfMsg( 'minoreditletter' );
+ $N = wfMsg( 'newpageletter' );
+ if ( $rc_minor ) { $s .= ' <strong>'.$M.'</strong>'; }
+ if ( $rc_type == RC_NEW ) { $s .= '<strong>'.$N.'</strong>'; }
# Article link
- $articleLink = $this->makeKnownLinkObj( $rc->getTitle(), "" );
+ $articleLink = $this->makeKnownLinkObj( $rc->getTitle(), '' );
if ( $watched ) {
- $articleLink = "<strong>{$articleLink}</strong>";
+ $articleLink = '<strong>'.$articleLink.'</strong>';
}
- $s .= " $articleLink";
+ $s .= ' '.$articleLink;
}
# Timestamp
- $s .= "; " . $wgLang->time( $rc_timestamp, true, $wgRCSeconds ) . " . . ";
+ $s .= '; ' . $wgLang->time( $rc_timestamp, true, $wgRCSeconds ) . ' . . ';
# User link (or contributions for unregistered users)
if ( 0 == $rc_user ) {
- $userLink = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
- $rc_user_text, "target=" . $rc_user_text );
+ $userLink = $this->makeKnownLink( $wgLang->specialPage( 'Contributions' ),
+ $rc_user_text, 'target=' . $rc_user_text );
} else {
- $userLink = $this->makeLink( $wgLang->getNsText( NS_USER ) . ":{$rc_user_text}", $rc_user_text );
+ $userLink = $this->makeLink( $wgLang->getNsText( NS_USER ) . ':'.$rc_user_text, $rc_user_text );
}
$s .= $userLink;
@@ -2260,28 +2274,28 @@ class Skin {
$talkname=$wgLang->getNsText(NS_TALK); # use the shorter name
global $wgDisableAnonTalk;
if( 0 == $rc_user && $wgDisableAnonTalk ) {
- $userTalkLink = "";
+ $userTalkLink = '';
} else {
$utns=$wgLang->getNsText(NS_USER_TALK);
- $userTalkLink= $this->makeLink($utns . ":{$rc_user_text}", $talkname );
+ $userTalkLink= $this->makeLink($utns . ':'.$rc_user_text, $talkname );
}
# Block link
- $blockLink="";
+ $blockLink='';
if ( ( 0 == $rc_user ) && $wgUser->isSysop() ) {
$blockLink = $this->makeKnownLink( $wgLang->specialPage(
- "Blockip" ), wfMsg( "blocklink" ), "ip={$rc_user_text}" );
+ 'Blockip' ), wfMsg( 'blocklink' ), 'ip='.$rc_user_text );
}
if($blockLink) {
- if($userTalkLink) $userTalkLink .= " | ";
+ if($userTalkLink) $userTalkLink .= ' | ';
$userTalkLink .= $blockLink;
}
- if($userTalkLink) $s.=" ({$userTalkLink})";
+ if($userTalkLink) $s.=' ('.$userTalkLink.')';
# Add comment
- if ( "" != $rc_comment && "*" != $rc_comment && $rc_type != RC_MOVE ) {
+ if ( '' != $rc_comment && '*' != $rc_comment && $rc_type != RC_MOVE && $rc_type != RC_MOVE_OVER_REDIRECT ) {
$rc_comment=$this->formatComment($rc_comment);
- $s .= $wgLang->emphasize(" (" . $rc_comment . ")");
+ $s .= $wgLang->emphasize(' (' . $rc_comment . ')');
}
$s .= "</li>\n";
@@ -2298,11 +2312,11 @@ class Skin {
# Extract fields from DB into the function scope (rc_xxxx variables)
extract( $rc->mAttribs );
- $curIdEq = "curid=" . $rc_cur_id;
+ $curIdEq = 'curid=' . $rc_cur_id;
# If it's a new day, add the headline and flush the cache
$date = $wgLang->date( $rc_timestamp, true);
- $ret = "" ;
+ $ret = '' ;
if ( $date != $this->lastdate ) {
# Process current cache
$ret = $this->recentChangesBlock () ;
@@ -2312,12 +2326,16 @@ class Skin {
}
# Make article link
- if ( $rc_type == RC_MOVE ) {
- $clink = $this->makeKnownLinkObj( $rc->getTitle(), "", "redirect=no" );
- $clink .= " " . wfMsg("movedto") . " ";
- $clink .= $this->makeKnownLinkObj( $rc->getMovedToTitle(), "" );
+ if ( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
+ if ( $rc_type == RC_MOVE ) {
+ $msg = "1movedto2";
+ } else {
+ $msg = "1movedto2_redir";
+ }
+ $clink = wfMsg( $msg, $this->makeKnownLinkObj( $rc->getTitle(), '', 'redirect=no' ),
+ $this->makeKnownLinkObj( $rc->getMovedToTitle(), '' ) );
} else {
- $clink = $this->makeKnownLinkObj( $rc->getTitle(), "" ) ;
+ $clink = $this->makeKnownLinkObj( $rc->getTitle(), '' ) ;
}
$time = $wgLang->time( $rc_timestamp, true, $wgRCSeconds );
@@ -2325,63 +2343,68 @@ class Skin {
$rc->link = $clink ;
$rc->timestamp = $time;
- # Make "cur" link
- if ( ( $rc_type == RC_NEW && $rc_this_oldid == 0 ) || $rc_type == RC_LOG || $rc_type == RC_MOVE) {
- $curLink = wfMsg( "cur" );
- } else {
- $curLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "cur" ),
- "{$curIdEq}&diff=0&oldid={$rc_this_oldid}" ,'' ,'' , ' tabindex="'.$baseRC->counter.'"' );
+ # Make "cur" and "diff" links
+ if ( ( $rc_type == RC_NEW && $rc_this_oldid == 0 ) || $rc_type == RC_LOG || $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
+ $curLink = wfMsg( 'cur' );
+ $diffLink = wfMsg( 'diff' );
+ } else {
+ $query = $curIdEq.'&diff=0&oldid='.$rc_this_oldid;
+ $aprops = ' tabindex="'.$baseRC->counter.'"';
+ $curLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( 'cur' ), $query, '' ,'' , $aprops );
+ $diffLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( 'diff'), $query, '' ,'' , $aprops );
}
# Make "last" link
$titleObj = $rc->getTitle();
- if ( $rc_last_oldid == 0 || $rc_type == RC_LOG || $rc_type == RC_MOVE ) {
- $lastLink = wfMsg( "last" );
+ if ( $rc_last_oldid == 0 || $rc_type == RC_LOG || $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
+ $lastLink = wfMsg( 'last' );
} else {
- $lastLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( "last" ),
- "{$curIdEq}&diff={$rc_this_oldid}&oldid={$rc_last_oldid}" );
+ $lastLink = $this->makeKnownLinkObj( $rc->getTitle(), wfMsg( 'last' ),
+ $curIdEq.'&diff='.$rc_this_oldid.'&oldid='.$rc_last_oldid );
}
# Make user link (or user contributions for unregistered users)
if ( 0 == $rc_user ) {
- $userLink = $this->makeKnownLink( $wgLang->specialPage( "Contributions" ),
- $rc_user_text, "target=" . $rc_user_text );
+ $userLink = $this->makeKnownLink( $wgLang->specialPage( 'Contributions' ),
+ $rc_user_text, 'target=' . $rc_user_text );
} else {
$userLink = $this->makeLink( $wgLang->getNsText(
- Namespace::getUser() ) . ":{$rc_user_text}", $rc_user_text );
+ Namespace::getUser() ) . ':'.$rc_user_text, $rc_user_text );
}
$rc->userlink = $userLink ;
$rc->lastlink = $lastLink ;
$rc->curlink = $curLink ;
+ $rc->difflink = $diffLink;
+
# Make user talk link
$utns=$wgLang->getNsText(NS_USER_TALK);
$talkname=$wgLang->getNsText(NS_TALK); # use the shorter name
- $userTalkLink= $this->makeLink($utns . ":{$rc_user_text}", $talkname );
+ $userTalkLink= $this->makeLink($utns . ':'.$rc_user_text, $talkname );
global $wgDisableAnonTalk;
if ( ( 0 == $rc_user ) && $wgUser->isSysop() ) {
$blockLink = $this->makeKnownLink( $wgLang->specialPage(
- "Blockip" ), wfMsg( "blocklink" ), "ip={$rc_user_text}" );
+ 'Blockip' ), wfMsg( 'blocklink' ), 'ip='.$rc_user_text );
if( $wgDisableAnonTalk )
- $rc->usertalklink = " ({$blockLink})";
+ $rc->usertalklink = ' ('.$blockLink.')';
else
- $rc->usertalklink = " ({$userTalkLink} | {$blockLink})";
+ $rc->usertalklink = ' ('.$userTalkLink.' | '.$blockLink.')';
} else {
if( $wgDisableAnonTalk && ($rc_user == 0) )
- $rc->usertalklink = "";
+ $rc->usertalklink = '';
else
- $rc->usertalklink = " ({$userTalkLink})";
+ $rc->usertalklink = ' ('.$userTalkLink.')';
}
# Put accumulated information into the cache, for later display
# Page moves go on their own line
$title = $rc->getTitle();
$secureName = $title->getPrefixedDBkey();
- if ( $rc_type == RC_MOVE ) {
+ if ( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
# Use an @ character to prevent collision with page names
- $this->rc_cache["@@" . ($this->rcMoveIndex++)] = array($rc);
+ $this->rc_cache['@@' . ($this->rcMoveIndex++)] = array($rc);
} else {
if ( !isset ( $this->rc_cache[$secureName] ) ) $this->rc_cache[$secureName] = array() ;
array_push ( $this->rc_cache[$secureName] , $rc ) ;
@@ -2410,33 +2433,34 @@ class Skin {
# some nasty regex.
# We look for all comments, match any text before and after the comment,
# add a separator where needed and format the comment itself with CSS
- while (preg_match("/(.*)\/\*\s*(.*?)\s*\*\/(.*)/", $comment,$match)) {
+ while (preg_match('/(.*)\/\*\s*(.*?)\s*\*\/(.*)/', $comment,$match)) {
$pre=$match[1];
$auto=$match[2];
$post=$match[3];
- $sep="-";
- if($pre) { $auto="$sep ".$auto; }
- if($post) { $auto.=" $sep"; }
- $auto="<span class=\"autocomment\">".$auto."</span>";
+ $sep='-';
+ if($pre) { $auto = $sep.' '.$auto; }
+ if($post) { $auto .= ' '.$sep; }
+ $auto='<span class="autocomment">'.$auto.'</span>';
$comment=$pre.$auto.$post;
}
# format regular and media links - all other wiki formatting
# is ignored
- while(preg_match("/\[\[(.*?)(\|(.*?))*\]\]/",$comment,$match)) {
+ while(preg_match('/\[\[(.*?)(\|(.*?))*\]\]/',$comment,$match)) {
- $medians = $wgLang->getNsText(Namespace::getMedia());
- $func="makeLink";
- if(preg_match("/^".$medians."/i",$match[1])) {
- $func="makeMediaLink";
+ $medians = $wgLang->getNsText(Namespace::getMedia()).':';
+ $func='makeLink';
+ if(preg_match('/^'.$medians.'/i',$match[1])) {
+ $func='makeMediaLink';
}
+ # Handle link renaming [[foo|text]] will show link as "text"
if(isset($match[3]) ) {
$comment=
- preg_replace("/\[\[(.*?)\]\]/",
+ preg_replace('/\[\[(.*?)\]\]/',
$this->$func($match[1],$match[3]),$comment,1);
} else {
$comment=
- preg_replace("/\[\[(.*?)\]\]/",
+ preg_replace('/\[\[(.*?)\]\]/',
$this->$func($match[1],$match[1]),$comment,1);
}
}
@@ -2450,34 +2474,35 @@ class Skin {
global $wgUser, $wgLang, $wgTitle;
$datetime = $wgLang->timeanddate( $timestamp, true );
- $del = wfMsg( "deleteimg" );
- $cur = wfMsg( "cur" );
+ $del = wfMsg( 'deleteimg' );
+ $delall = wfMsg( 'deleteimgcompletely' );
+ $cur = wfMsg( 'cur' );
if ( $iscur ) {
$url = Image::wfImageUrl( $img );
$rlink = $cur;
if ( $wgUser->isSysop() ) {
- $link = $wgTitle->escapeLocalURL( "image=" . $wgTitle->getPartialURL() .
- "&action=delete" );
- $style = $this->getInternalLinkAttributes( $link, $del );
+ $link = $wgTitle->escapeLocalURL( 'image=' . $wgTitle->getPartialURL() .
+ '&action=delete' );
+ $style = $this->getInternalLinkAttributes( $link, $delall );
- $dlink = "<a href=\"{$link}\"{$style}>{$del}</a>";
+ $dlink = '<a href="'.$link.'"'.$style.'>'.$delall.'</a>';
} else {
$dlink = $del;
}
} else {
$url = wfEscapeHTML( wfImageArchiveUrl( $img ) );
- if( $wgUser->getID() != 0 ) {
+ if( $wgUser->getID() != 0 && $wgTitle->userCanEdit() ) {
$rlink = $this->makeKnownLink( $wgTitle->getPrefixedText(),
- wfMsg( "revertimg" ), "action=revert&oldimage=" .
+ wfMsg( 'revertimg' ), 'action=revert&oldimage=' .
urlencode( $img ) );
$dlink = $this->makeKnownLink( $wgTitle->getPrefixedText(),
- $del, "action=delete&oldimage=" . urlencode( $img ) );
+ $del, 'action=delete&oldimage=' . urlencode( $img ) );
} else {
# Having live active links for non-logged in users
# means that bots and spiders crawling our site can
# inadvertently change content. Baaaad idea.
- $rlink = wfMsg( "revertimg" );
+ $rlink = wfMsg( 'revertimg' );
$dlink = $del;
}
}
@@ -2485,24 +2510,24 @@ class Skin {
$userlink = $usertext;
} else {
$userlink = $this->makeLink( $wgLang->getNsText( Namespace::getUser() ) .
- ":{$usertext}", $usertext );
+ ':'.$usertext, $usertext );
}
- $nbytes = wfMsg( "nbytes", $size );
+ $nbytes = wfMsg( 'nbytes', $size );
$style = $this->getInternalLinkAttributes( $url, $datetime );
$s = "<li> ({$dlink}) ({$rlink}) <a href=\"{$url}\"{$style}>{$datetime}</a>"
. " . . {$userlink} ({$nbytes})";
- if ( "" != $description && "*" != $description ) {
+ if ( '' != $description && '*' != $description ) {
$sk=$wgUser->getSkin();
- $s .= $wgLang->emphasize(" (" . $sk->formatComment($description) . ")");
+ $s .= $wgLang->emphasize(' (' . $sk->formatComment($description) . ')');
}
$s .= "</li>\n";
return $s;
}
function tocIndent($level) {
- return str_repeat( "<div class='tocindent'>\n", $level>0 ? $level : 0 );
+ return str_repeat( '<div class="tocindent">'."\n", $level>0 ? $level : 0 );
}
function tocUnindent($level) {
@@ -2511,11 +2536,11 @@ class Skin {
# parameter level defines if we are on an indentation level
function tocLine( $anchor, $tocline, $level ) {
- $link = "<a href=\"#$anchor\">$tocline</a><br />";
+ $link = '<a href="#'.$anchor.'">'.$tocline.'</a><br />';
if($level) {
- return "$link\n";
+ return $link."\n";
} else {
- return "<div class='tocline'>$link</div>\n";
+ return '<div class="tocline">'.$link."</div>\n";
}
}
@@ -2523,45 +2548,45 @@ class Skin {
function tocTable($toc) {
# note to CSS fanatics: putting this in a div does not work -- div won't auto-expand
# try min-width & co when somebody gets a chance
- $hideline = " <script type='text/javascript'>showTocToggle(\"" . addslashes( wfMsg("showtoc") ) . "\",\"" . addslashes( wfMsg("hidetoc") ) . "\")</script>";
+ $hideline = ' <script type="text/javascript">showTocToggle("' . addslashes( wfMsg('showtoc') ) . '","' . addslashes( wfMsg('hidetoc') ) . '")</script>';
return
- "<table border=\"0\" id=\"toc\"><tr><td align=\"center\">\n".
- "<b>".wfMsg("toc")."</b>" .
+ '<table border="0" id="toc"><tr id="toctitle"><td align="center">'."\n".
+ '<b>'.wfMsg('toc').'</b>' .
$hideline .
- "</td></tr><tr id='tocinside'><td>\n".
+ '</td></tr><tr id="tocinside"><td>'."\n".
$toc."</td></tr></table>\n";
}
# These two do not check for permissions: check $wgTitle->userCanEdit before calling them
function editSectionScript( $section, $head ) {
global $wgTitle, $wgRequest;
- if( $wgRequest->getInt( "oldid" ) && ( $wgRequest->getVal( "diff" ) != "0" ) ) {
+ if( $wgRequest->getInt( 'oldid' ) && ( $wgRequest->getVal( 'diff' ) != '0' ) ) {
return $head;
}
- $url = $wgTitle->escapeLocalURL( "action=edit&section=$section" );
- return "<span oncontextmenu='document.location=\"$url\";return false;'>{$head}</span>";
+ $url = $wgTitle->escapeLocalURL( 'action=edit&section='.$section );
+ return '<span oncontextmenu=\'document.location="'.$url.'";return false;\'>'.$head.'</span>';
}
function editSectionLink( $section ) {
global $wgRequest;
global $wgTitle, $wgUser, $wgLang;
- if( $wgRequest->getInt( "oldid" ) && ( $wgRequest->getVal( "diff" ) != "0" ) ) {
+ if( $wgRequest->getInt( 'oldid' ) && ( $wgRequest->getVal( 'diff' ) != '0' ) ) {
# Section edit links would be out of sync on an old page.
# But, if we're diffing to the current page, they'll be
# correct.
- return "";
+ return '';
}
- $editurl = "&section={$section}";
- $url = $this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg("editsection"),"action=edit".$editurl);
+ $editurl = '&section='.$section;
+ $url = $this->makeKnownLink($wgTitle->getPrefixedText(),wfMsg('editsection'),'action=edit'.$editurl);
if( $wgLang->isRTL() ) {
- $farside = "left";
- $nearside = "right";
+ $farside = 'left';
+ $nearside = 'right';
} else {
- $farside = "right";
- $nearside = "left";
+ $farside = 'right';
+ $nearside = 'left';
}
return "<div class=\"editsection\" style=\"float:$farside;margin-$nearside:5px;\">[".$url."]</div>";
@@ -2583,12 +2608,12 @@ class Skin {
// can figure out a way to make them work in IE. However, we should make
// sure these keys are not defined on the edit page.
$toolarray=array(
- array( "image"=>"button_bold.png",
- "open"=>"\'\'\'",
- "close"=>"\'\'\'",
- "sample"=>wfMsg("bold_sample"),
- "tip"=>wfMsg("bold_tip"),
- "key"=>"B"
+ array( 'image'=>'button_bold.png',
+ 'open'=>"\'\'\'",
+ 'close'=>"\'\'\'",
+ 'sample'=>wfMsg('bold_sample'),
+ 'tip'=>wfMsg('bold_tip'),
+ 'key'=>'B'
),
array( "image"=>"button_italic.png",
"open"=>"\'\'",
@@ -2666,16 +2691,16 @@ class Skin {
$toolbar.="document.writeln(\"<div id='toolbar'>\");\n";
foreach($toolarray as $tool) {
- $image=$wgStylePath."/images/".$tool["image"];
- $open=$tool["open"];
- $close=$tool["close"];
- $sample = addslashes( $tool["sample"] );
+ $image=$wgStylePath.'/images/'.$tool['image'];
+ $open=$tool['open'];
+ $close=$tool['close'];
+ $sample = addslashes( $tool['sample'] );
// Note that we use the tip both for the ALT tag and the TITLE tag of the image.
// Older browsers show a "speedtip" type message only for ALT.
// Ideally these should be different, realistically they
// probably don't need to be.
- $tip = addslashes( $tool["tip"] );
+ $tip = addslashes( $tool['tip'] );
#$key = $tool["key"];
@@ -2691,13 +2716,5 @@ class Skin {
}
-require_once( "SkinStandard.php" );
-require_once( "SkinNostalgia.php" );
-require_once( "SkinCologneBlue.php" );
-
-if( $wgUsePHPTal ) {
- require_once( "SkinPHPTal.php" );
}
-
-
?>
diff --git a/includes/SkinCologneBlue.php b/includes/SkinCologneBlue.php
index 09336459db17..b2f99aa27558 100644
--- a/includes/SkinCologneBlue.php
+++ b/includes/SkinCologneBlue.php
@@ -7,10 +7,13 @@ class SkinCologneBlue extends Skin {
{
return "cologneblue.css";
}
+ function getSkinName() {
+ return "cologneblue";
+ }
function doBeforeContent()
{
- global $wgUser, $wgOut, $wgTitle;
+ global $wgUser, $wgOut, $wgTitle, $wgSiteNotice;
$s = "";
$qb = $this->qbSetting();
@@ -32,7 +35,9 @@ class SkinCologneBlue extends Skin {
$s .= "</td><td align='right'>" ;
$s .= "<font size='-1'><span id='langlinks'>" ;
- $s .= str_replace ( "<br>" , "" , $this->otherLanguages() ) ;
+ $s .= str_replace ( "<br>" , "" , $this->otherLanguages() );
+ $cat = $this->getCategoryLinks();
+ if( $cat ) $s .= "<br />$cat\n";
$s .= "<br />" . $this->pageTitleLinks();
$s .= "</span></font>";
@@ -40,6 +45,9 @@ class SkinCologneBlue extends Skin {
$s .= "\n</div>\n<div id='article'>";
+ if( $wgSiteNotice ) {
+ $s .= "\n<div id='siteNotice'>$wgSiteNotice</div>\n";
+ }
$s .= $this->pageTitle();
$s .= $this->pageSubtitle() . "\n";
return $s;
@@ -79,8 +87,7 @@ class SkinCologneBlue extends Skin {
function doGetUserStyles()
{
global $wgUser, $wgOut, $wgStyleSheetPath;
-
- $s = parent::doGetUserStyles();
+ $s = '';
$qb = $this->qbSetting();
if ( 2 == $qb ) { # Right
@@ -95,6 +102,7 @@ class SkinCologneBlue extends Skin {
"#article { margin-left:148px; margin-right: 4px; } \n" .
"body>#quickbar { position:fixed; left:4px; top:4px; overflow:auto ;bottom:4px;} \n"; # Hides from IE
}
+ $s .= parent::doGetUserStyles();
return $s;
}
function sysLinks()
diff --git a/includes/SkinNostalgia.php b/includes/SkinNostalgia.php
index 3d990ee6705e..301bbf0338e7 100644
--- a/includes/SkinNostalgia.php
+++ b/includes/SkinNostalgia.php
@@ -12,10 +12,13 @@ class SkinNostalgia extends Skin {
{
return "nostalgia.css";
}
+ function getSkinName() {
+ return "nostalgia";
+ }
function doBeforeContent()
{
- global $wgUser, $wgOut, $wgTitle;
+ global $wgUser, $wgOut, $wgTitle, $wgSiteNotice;
$s = "\n<div id='content'>\n<div id='topbar'>";
$s .= $this->logoText( "right" );
@@ -24,10 +27,16 @@ class SkinNostalgia extends Skin {
$s .= $this->pageSubtitle() . "\n";
$s .= $this->topLinks() . "\n<br />";
+ if( $wgSiteNotice ) {
+ $s .= "\n<div id='siteNotice'>$wgSiteNotice</div>\n";
+ }
$s .= $this->pageTitleLinks();
$ol = $this->otherLanguages();
if($ol) $s .= "<br />" . $ol;
+
+ $cat = $this->getCategoryLinks();
+ if($cat) $s .= "<br />" . $cat;
$s .= "<br clear='all' /><hr />\n</div>\n";
$s .= "\n<div id='article'>";
diff --git a/includes/SkinPHPTal.php b/includes/SkinPHPTal.php
index bf39da259933..fb0dc5737841 100644
--- a/includes/SkinPHPTal.php
+++ b/includes/SkinPHPTal.php
@@ -26,7 +26,9 @@
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# http://www.gnu.org/copyleft/gpl.html
+if( defined( "MEDIAWIKI" ) ) {
require_once "GlobalFunctions.php";
+ global $IP;
require_once $IP."/PHPTAL-NP-0.7.0/libs/PHPTAL.php";
class MediaWiki_I18N extends PHPTAL_I18N
@@ -62,8 +64,9 @@
global $wgTitle, $wgArticle, $wgUser, $wgLang, $wgOut;
global $wgScript, $wgStylePath, $wgLanguageCode, $wgUseNewInterlanguage;
global $wgMimeType, $wgOutputEncoding, $wgUseDatabaseMessages, $wgRequest;
- global $wgDisableCounters, $wgLogo, $action, $wgFeedClasses;
-
+ global $wgDisableCounters, $wgLogo, $action, $wgFeedClasses, $wgSiteNotice;
+ global $wgMaxCredits, $wgShowCreditsIfMax;
+
extract( $wgRequest->getValues( 'oldid', 'diff' ) );
$this->initPage( $out );
@@ -83,20 +86,27 @@
$this->userpageUrlDetails = $this->makeUrlDetails($this->userpage);
$this->usercss = $this->userjs = $this->userjsprev = false;
- if( $this->loggedin ) { $this->setupUserCssJs(); }
+ $this->setupUserCssJs();
$this->titletxt = $wgTitle->getPrefixedText();
$tpl->set( "title", $wgOut->getPageTitle() );
$tpl->set( "pagetitle", $wgOut->getHTMLTitle() );
- $tpl->setRef( "thispage", &$this->thispage );
+ $tpl->setRef( "thispage", $this->thispage );
$subpagestr = $this->subPageSubtitle();
$tpl->set(
"subtitle", !empty($subpagestr)?
'<span class="subpages">'.$subpagestr.'</span>'.$out->getSubtitle():
$out->getSubtitle()
);
+ $undelete = $this->getUndeleteLink();
+ $tpl->set(
+ "undelete", !empty($undelete)?
+ '<span class="subpages">'.$undelete.'</span>':
+ ''
+ );
+
$tpl->set( 'catlinks', $this->getCategories());
if( $wgOut->isSyndicated() ) {
$feeds = array();
@@ -107,13 +117,14 @@
'ttip' => wfMsg('tooltip-'.$format)
);
}
- $tpl->setRef( 'feeds', &$feeds );
+ $tpl->setRef( 'feeds', $feeds );
}
- $tpl->setRef( 'mimetype', &$wgMimeType );
- $tpl->setRef( 'charset', &$wgOutputEncoding );
+ $tpl->setRef( 'mimetype', $wgMimeType );
+ $tpl->setRef( 'charset', $wgOutputEncoding );
$tpl->set( 'headlinks', $out->getHeadLinks() );
- $tpl->setRef( 'skinname', &$this->skinname );
- $tpl->setRef( "loggedin", &$this->loggedin );
+ $tpl->setRef( 'skinname', $this->skinname );
+ $tpl->setRef( "loggedin", $this->loggedin );
+ $tpl->set('nsclass', 'ns-'.$wgTitle->getNamespace());
/* XXX currently unused, might get useful later
$tpl->set( "editable", ($wgTitle->getNamespace() != NS_SPECIAL ) );
$tpl->set( "exists", $wgTitle->getArticleID() != 0 );
@@ -123,18 +134,23 @@
$tpl->set( "sysop", $wgUser->isSysop() );
*/
$tpl->set( "searchaction", $this->escapeSearchLink() );
- $tpl->setRef( "stylepath", &$wgStylePath );
- $tpl->setRef( "logopath", &$wgLogo );
- $tpl->setRef( "lang", &$wgLanguageCode );
+ $tpl->setRef( "stylepath", $wgStylePath );
+ $tpl->setRef( "logopath", $wgLogo );
+ $tpl->setRef( "lang", $wgLanguageCode );
$tpl->set( "dir", $wgLang->isRTL() ? "rtl" : "ltr" );
$tpl->set( "rtl", $wgLang->isRTL() );
$tpl->set( "langname", $wgLang->getLanguageName( $wgLanguageCode ) );
- $tpl->setRef( "username", &$this->username );
- $tpl->setRef( "userpage", &$this->userpage);
- $tpl->setRef( "userpageurl", &$this->userpageUrlDetails['href']);
- $tpl->setRef( "usercss", &$this->usercss);
- $tpl->setRef( "userjs", &$this->userjs);
- $tpl->setRef( "userjsprev", &$this->userjsprev);
+ $tpl->setRef( "username", $this->username );
+ $tpl->setRef( "userpage", $this->userpage);
+ $tpl->setRef( "userpageurl", $this->userpageUrlDetails['href']);
+ $tpl->setRef( "usercss", $this->usercss);
+ $tpl->setRef( "userjs", $this->userjs);
+ $tpl->setRef( "userjsprev", $this->userjsprev);
+ if($this->loggedin) {
+ $tpl->set( "jsvarurl", $this->makeUrl('-','action=raw&gen=js&smaxage=0') );
+ } else {
+ $tpl->set( "jsvarurl", $this->makeUrl('-','action=raw&gen=js') );
+ }
if( $wgUser->getNewtalk() ) {
$usertitle = Title::newFromText( $this->userpage );
$usertalktitle = $usertitle->getTalkPage();
@@ -151,8 +167,8 @@
$ntl = "";
}
- $tpl->setRef( "newtalk", &$ntl );
- $tpl->setRef( "skin", &$this);
+ $tpl->setRef( "newtalk", $ntl );
+ $tpl->setRef( "skin", $this);
$tpl->set( "logo", $this->logoText() );
if ( $wgOut->isArticle() and (!isset( $oldid ) or isset( $diff )) and 0 != $wgArticle->getID() ) {
if ( !$wgDisableCounters ) {
@@ -163,16 +179,30 @@
}
$tpl->set('lastmod', $this->lastModified());
$tpl->set('copyright',$this->getCopyright());
+
+ $this->credits = false;
+
+ if (isset($wgMaxCredits) && $wgMaxCredits != 0) {
+ require_once("Credits.php");
+ $this->credits = getCredits($wgArticle, $wgMaxCredits, $wgShowCreditsIfMax);
+ }
+
+ $tpl->setRef( "credits", $this->credits );
+
+ } elseif ( isset( $oldid ) && !isset( $diff ) ) {
+ $tpl->set('copyright', $this->getCopyright());
}
+
$tpl->set( "copyrightico", $this->getCopyrightIcon() );
$tpl->set( "poweredbyico", $this->getPoweredBy() );
$tpl->set( "disclaimer", $this->disclaimerLink() );
$tpl->set( "about", $this->aboutLink() );
- $tpl->setRef( "debug", &$out->mDebugtext );
+ $tpl->setRef( "debug", $out->mDebugtext );
$tpl->set( "reporttime", $out->reportTime() );
-
- $tpl->setRef( "bodytext", &$out->mBodytext );
+ $tpl->set( "sitenotice", $wgSiteNotice );
+
+ $tpl->setRef( "bodytext", $out->mBodytext );
$language_urls = array();
foreach( $wgOut->getLanguageLinks() as $l ) {
@@ -182,13 +212,13 @@
'class' => $wgLang->isRTL() ? 'rtl' : 'ltr');
}
if(count($language_urls)) {
- $tpl->setRef( 'language_urls', &$language_urls);
+ $tpl->setRef( 'language_urls', $language_urls);
} else {
$tpl->set('language_urls', false);
}
$tpl->set('personal_urls', $this->buildPersonalUrls());
$content_actions = $this->buildContentActionUrls();
- $tpl->setRef('content_actions', &$content_actions);
+ $tpl->setRef('content_actions', $content_actions);
// XXX: attach this from javascript, same with section editing
if($this->iseditable && $wgUser->getOption("editondblclick") )
{
@@ -218,72 +248,52 @@
$personal_urls['userpage'] = array(
'text' => $this->username,
'href' => &$this->userpageUrlDetails['href'],
- 'class' => $this->userpageUrlDetails['exists']?false:'new',
- 'ttip' => wfMsg('tooltip-userpage'),
- 'akey' => wfMsg('accesskey-userpage')
+ 'class' => $this->userpageUrlDetails['exists']?false:'new'
);
$usertalkUrlDetails = $this->makeTalkUrlDetails($this->userpage);
$personal_urls['mytalk'] = array(
'text' => wfMsg('mytalk'),
'href' => &$usertalkUrlDetails['href'],
- 'class' => $usertalkUrlDetails['exists']?false:'new',
- 'ttip' => wfMsg('tooltip-mytalk'),
- 'akey' => wfMsg('accesskey-mytalk')
+ 'class' => $usertalkUrlDetails['exists']?false:'new'
);
$personal_urls['preferences'] = array(
'text' => wfMsg('preferences'),
- 'href' => $this->makeSpecialUrl('Preferences'),
- 'ttip' => wfMsg('tooltip-preferences'),
- 'akey' => wfMsg('accesskey-preferences')
+ 'href' => $this->makeSpecialUrl('Preferences')
);
$personal_urls['watchlist'] = array(
'text' => wfMsg('watchlist'),
- 'href' => $this->makeSpecialUrl('Watchlist'),
- 'ttip' => wfMsg('tooltip-watchlist'),
- 'akey' => wfMsg('accesskey-watchlist')
+ 'href' => $this->makeSpecialUrl('Watchlist')
);
$personal_urls['mycontris'] = array(
'text' => wfMsg('mycontris'),
- 'href' => $this->makeSpecialUrl('Contributions','target=' . $this->username),
- 'ttip' => wfMsg('tooltip-mycontris'),
- 'akey' => wfMsg('accesskey-mycontris')
+ 'href' => $this->makeSpecialUrl('Contributions','target=' . urlencode( $this->username ) )
);
$personal_urls['logout'] = array(
'text' => wfMsg('userlogout'),
- 'href' => $this->makeSpecialUrl('Userlogout','returnto=' . $this->thisurl),
- 'ttip' => wfMsg('tooltip-logout'),
- 'akey' => wfMsg('accesskey-logout')
+ 'href' => $this->makeSpecialUrl('Userlogout','returnto=' . $this->thisurl )
);
} else {
if( $wgShowIPinHeader && isset( $_COOKIE[ini_get("session.name")] ) ) {
$personal_urls['anonuserpage'] = array(
'text' => $this->username,
'href' => &$this->userpageUrlDetails['href'],
- 'class' => $this->userpageUrlDetails['exists']?false:'new',
- 'ttip' => wfMsg('tooltip-anonuserpage'),
- 'akey' => wfMsg('accesskey-anonuserpage')
+ 'class' => $this->userpageUrlDetails['exists']?false:'new'
);
$usertalkUrlDetails = $this->makeTalkUrlDetails($this->userpage);
$personal_urls['anontalk'] = array(
'text' => wfMsg('anontalk'),
'href' => &$usertalkUrlDetails['href'],
- 'class' => $usertalkUrlDetails['exists']?false:'new',
- 'ttip' => wfMsg('tooltip-anontalk'),
- 'akey' => wfMsg('accesskey-anontalk')
+ 'class' => $usertalkUrlDetails['exists']?false:'new'
);
$personal_urls['anonlogin'] = array(
'text' => wfMsg('userlogin'),
- 'href' => $this->makeSpecialUrl('Userlogin', 'returnto='.$this->thisurl),
- 'ttip' => wfMsg('tooltip-login'),
- 'akey' => wfMsg('accesskey-login')
+ 'href' => $this->makeSpecialUrl('Userlogin', 'returnto=' . $this->thisurl )
);
} else {
$personal_urls['login'] = array(
'text' => wfMsg('userlogin'),
- 'href' => $this->makeSpecialUrl('Userlogin', 'returnto='.$this->thisurl),
- 'ttip' => wfMsg('tooltip-login'),
- 'akey' => wfMsg('accesskey-login')
+ 'href' => $this->makeSpecialUrl('Userlogin', 'returnto=' . $this->thisurl )
);
}
}
@@ -302,32 +312,27 @@
if( $this->iscontent ) {
- $content_actions['article'] = array('class' => (!Namespace::isTalk( $wgTitle->getNamespace())) ? 'selected' : false,
- 'text' => $this->getNameSpaceWord(),
- 'href' => $this->makeArticleUrl($this->thispage),
- 'ttip' => wfMsg('tooltip-article'),
- 'akey' => wfMsg('accesskey-article'));
+ $nskey = $this->getNameSpaceKey();
+ $content_actions[$nskey] = array('class' => (!Namespace::isTalk( $wgTitle->getNamespace())) ? 'selected' : false,
+ 'text' => wfMsg($nskey),
+ 'href' => $this->makeArticleUrl($this->thispage));
/* set up the classes for the talk link */
$talk_class = (Namespace::isTalk( $wgTitle->getNamespace()) ? 'selected' : false);
$talktitle = Title::newFromText( $this->titletxt );
$talktitle = $talktitle->getTalkPage();
- $this->checkTitle(&$talktitle, &$this->titletxt);
+ $this->checkTitle($talktitle, $this->titletxt);
if($talktitle->getArticleId() != 0) {
$content_actions['talk'] = array(
'class' => $talk_class,
'text' => wfMsg('talk'),
- 'href' => $this->makeTalkUrl($this->titletxt),
- 'ttip' => wfMsg('tooltip-talk'),
- 'akey' => wfMsg('accesskey-talk')
+ 'href' => $this->makeTalkUrl($this->titletxt)
);
} else {
$content_actions['talk'] = array(
'class' => $talk_class?$talk_class.' new':'new',
'text' => wfMsg('talk'),
- 'href' => $this->makeTalkUrl($this->titletxt,'action=edit'),
- 'ttip' => wfMsg('tooltip-talk'),
- 'akey' => wfMsg('accesskey-talk')
+ 'href' => $this->makeTalkUrl($this->titletxt,'action=edit')
);
}
@@ -338,35 +343,27 @@
$content_actions['edit'] = array(
'class' => ((($action == 'edit' or $action == 'submit') and $section != 'new') ? 'selected' : '').$istalkclass,
'text' => wfMsg('edit'),
- 'href' => $this->makeUrl($this->thispage, 'action=edit'.$oid),
- 'ttip' => wfMsg('tooltip-edit'),
- 'akey' => wfMsg('accesskey-edit')
+ 'href' => $this->makeUrl($this->thispage, 'action=edit'.$oid)
);
if ( $istalk ) {
$content_actions['addsection'] = array(
'class' => $section == 'new'?'selected':false,
'text' => wfMsg('addsection'),
- 'href' => $this->makeUrl($this->thispage, 'action=edit&section=new'),
- 'ttip' => wfMsg('tooltip-addsection'),
- 'akey' => wfMsg('accesskey-addsection')
+ 'href' => $this->makeUrl($this->thispage, 'action=edit&section=new')
);
}
} else {
$oid = ( $oldid && ! isset( $diff ) ) ? "&oldid={$oldid}" : '';
- $content_actions['edit'] = array('class' => ($action == 'edit') ? 'selected' : false,
+ $content_actions['viewsource'] = array('class' => ($action == 'edit') ? 'selected' : false,
'text' => wfMsg('viewsource'),
- 'href' => $this->makeUrl($this->thispage, 'action=edit'.$oid),
- 'ttip' => wfMsg('tooltip-viewsource'),
- 'akey' => wfMsg('accesskey-viewsource'));
+ 'href' => $this->makeUrl($this->thispage, 'action=edit'.$oid));
}
if ( $wgTitle->getArticleId() ) {
$content_actions['history'] = array('class' => ($action == 'history') ? 'selected' : false,
'text' => wfMsg('history_short'),
- 'href' => $this->makeUrl($this->thispage, 'action=history'),
- 'ttip' => wfMsg('tooltip-history'),
- 'akey' => wfMsg('accesskey-history'));
+ 'href' => $this->makeUrl($this->thispage, 'action=history'));
# XXX: is there a rollback action anywhere or is it planned?
# Don't recall where i got this from...
@@ -383,41 +380,32 @@
$content_actions['protect'] = array(
'class' => ($action == 'protect') ? 'selected' : false,
'text' => wfMsg('protect'),
- 'href' => $this->makeUrl($this->thispage, 'action=protect'),
- 'ttip' => wfMsg('tooltip-protect'),
- 'akey' => wfMsg('accesskey-protect')
+ 'href' => $this->makeUrl($this->thispage, 'action=protect')
);
} else {
$content_actions['unprotect'] = array(
'class' => ($action == 'unprotect') ? 'selected' : false,
'text' => wfMsg('unprotect'),
- 'href' => $this->makeUrl($this->thispage, 'action=unprotect'),
- 'ttip' => wfMsg('tooltip-protect'),
- 'akey' => wfMsg('accesskey-protect')
+ 'href' => $this->makeUrl($this->thispage, 'action=unprotect')
);
}
$content_actions['delete'] = array(
'class' => ($action == 'delete') ? 'selected' : false,
'text' => wfMsg('delete'),
- 'href' => $this->makeUrl($this->thispage, 'action=delete'),
- 'ttip' => wfMsg('tooltip-delete'),
- 'akey' => wfMsg('accesskey-delete')
+ 'href' => $this->makeUrl($this->thispage, 'action=delete')
);
}
if ( $wgUser->getID() != 0 ) {
if ( $wgTitle->userCanEdit()) {
$content_actions['move'] = array('class' => ($wgTitle->getDbKey() == 'Movepage' and $wgTitle->getNamespace == Namespace::getSpecial()) ? 'selected' : false,
'text' => wfMsg('move'),
- 'href' => $this->makeSpecialUrl('Movepage', 'target='.$this->thispage),
- 'ttip' => wfMsg('tooltip-move'),
- 'akey' => wfMsg('accesskey-move'));
+ 'href' => $this->makeSpecialUrl('Movepage', 'target='. urlencode( $this->thispage ))
+ );
} else {
$content_actions['move'] = array('class' => 'inactive',
'text' => wfMsg('move'),
- 'href' => false,
- 'ttip' => wfMsg('tooltip-nomove'),
- 'akey' => false);
+ 'href' => false);
}
}
@@ -428,9 +416,7 @@
$content_actions['delete'] = array(
'class' => false,
'text' => wfMsg( "undelete_short", $n ),
- 'href' => $this->makeSpecialUrl('Undelete/'.$this->thispage),
- 'ttip' => wfMsg('tooltip-undelete', $n),
- 'akey' => wfMsg('accesskey-undelete')
+ 'href' => $this->makeSpecialUrl('Undelete/'.$this->thispage)
);
}
}
@@ -440,16 +426,11 @@
if( !$wgTitle->userIsWatching()) {
$content_actions['watch'] = array('class' => ($action == 'watch' or $action == 'unwatch') ? 'selected' : false,
'text' => wfMsg('watch'),
- 'href' => $this->makeUrl($this->thispage, 'action=watch'),
- 'ttip' => wfMsg('tooltip-watch'),
- 'akey' => wfMsg('accesskey-watch'));
+ 'href' => $this->makeUrl($this->thispage, 'action=watch'));
} else {
- $content_actions['watch'] = array('class' => ($action == 'unwatch' or $action == 'watch') ? 'selected' : false,
+ $content_actions['unwatch'] = array('class' => ($action == 'unwatch' or $action == 'watch') ? 'selected' : false,
'text' => wfMsg('unwatch'),
- 'href' => $this->makeUrl($this->thispage, 'action=unwatch'),
- 'ttip' => wfMsg('tooltip-unwatch'),
- 'akey' => wfMsg('accesskey-unwatch'));
-
+ 'href' => $this->makeUrl($this->thispage, 'action=unwatch'));
}
}
} else {
@@ -457,9 +438,7 @@
$content_actions['article'] = array('class' => 'selected',
'text' => wfMsg('specialpage'),
- 'href' => false,
- 'ttip' => wfMsg('tooltip-specialpage'),
- 'akey' => false);
+ 'href' => false);
}
return $content_actions;
@@ -478,10 +457,10 @@
$nav_urls['mainpage'] = array('href' => htmlspecialchars( $this->makeI18nUrl('mainpage')));
$nav_urls['randompage'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Randompage')));
$nav_urls['recentchanges'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Recentchanges')));
- $nav_urls['whatlinkshere'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Whatlinkshere', 'target='.$this->thispage)));
+ $nav_urls['whatlinkshere'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Whatlinkshere', 'target='.urlencode( $this->thispage ))));
$nav_urls['currentevents'] = (wfMsg('currentevents') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('currentevents'))) : false;
$nav_urls['portal'] = (wfMsg('portal') != '-') ? array('href' => htmlspecialchars( $this->makeI18nUrl('portal-url'))) : false;
- $nav_urls['recentchangeslinked'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Recentchangeslinked', 'target='.$this->thispage)));
+ $nav_urls['recentchangeslinked'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Recentchangeslinked', 'target='.urlencode( $this->thispage ))));
$nav_urls['bugreports'] = array('href' => htmlspecialchars( $this->makeI18nUrl('bugreportspage')));
// $nav_urls['sitesupport'] = array('href' => htmlspecialchars( $this->makeI18nUrl('sitesupportpage')));
$nav_urls['sitesupport'] = array('href' => htmlspecialchars( $wgSiteSupportPage));
@@ -489,9 +468,13 @@
$nav_urls['upload'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Upload')));
$nav_urls['specialpages'] = array('href' => htmlspecialchars( $this->makeSpecialUrl('Specialpages')));
-
- $id=User::idFromName($wgTitle->getText());
- $ip=User::isIP($wgTitle->getText());
+ if( $wgTitle->getNamespace() == NS_USER || $wgTitle->getNamespace() == NS_USER_TALK ) {
+ $id = User::idFromName($wgTitle->getText());
+ $ip = User::isIP($wgTitle->getText());
+ } else {
+ $id = 0;
+ $ip = false;
+ }
if($id || $ip) { # both anons and non-anons have contri list
$nav_urls['contributions'] = array(
@@ -510,58 +493,101 @@
return $nav_urls;
}
- function getNameSpaceWord () {
+ function getNameSpaceKey () {
global $wgTitle;
switch ($wgTitle->getNamespace()) {
case NS_MAIN:
case NS_TALK:
- return wfMsg('nstab-main');
+ return 'nstab-main';
case NS_USER:
case NS_USER_TALK:
- return wfMsg('nstab-user');
+ return 'nstab-user';
case NS_MEDIA:
- return wfMsg('nstab-media');
+ return 'nstab-media';
case NS_SPECIAL:
- return wfMsg('nstab-special');
+ return 'nstab-special';
case NS_WP:
case NS_WP_TALK:
- return wfMsg('nstab-wp');
+ return 'nstab-wp';
case NS_IMAGE:
case NS_IMAGE_TALK:
- return wfMsg('nstab-image');
+ return 'nstab-image';
case NS_MEDIAWIKI:
case NS_MEDIAWIKI_TALK:
- return wfMsg('nstab-mediawiki');
+ return 'nstab-mediawiki';
case NS_TEMPLATE:
case NS_TEMPLATE_TALK:
- return wfMsg('nstab-template');
+ return 'nstab-template';
case NS_HELP:
case NS_HELP_TALK:
- return wfMsg('nstab-help');
+ return 'nstab-help';
case NS_CATEGORY:
case NS_CATEGORY_TALK:
- return wfMsg('nstab-category');
+ return 'nstab-category';
default:
- return wfMsg('nstab-main');
+ return 'nstab-main';
}
}
/* private */ function setupUserCssJs () {
global $wgRequest, $wgTitle;
$action = $wgRequest->getText('action');
- if($wgTitle->isCssSubpage() and $action == 'submit' and $wgTitle->userCanEditCssJsSubpage()) {
- // css preview
- $this->usercss = $wgRequest->getText('wpTextbox1');
- } else {
- $this->usercss = '@import url('.
- $this->makeUrl($this->userpage.'/'.$this->skinname.'.css', 'action=raw&ctype=text/css').');';
+ # generated css
+ $this->usercss = '@import "'.$this->makeUrl('-','action=raw&gen=css').'";'."\n";
+
+ if( $this->loggedin ) {
+ if($wgTitle->isCssSubpage() and $action == 'submit' and $wgTitle->userCanEditCssJsSubpage()) {
+ # generated css
+ $this->usercss = '@import "'.$this->makeUrl('-','action=raw&smaxage=0&maxage=0&gen=css').'";'."\n";
+ // css preview
+ $this->usercss .= $wgRequest->getText('wpTextbox1');
+ } else {
+ # generated css
+ $this->usercss .= '@import "'.$this->makeUrl('-','action=raw&smaxage=0&gen=css').'";'."\n";
+ # import user stylesheet
+ $this->usercss .= '@import "'.
+ $this->makeUrl($this->userpage.'/'.$this->skinname.'.css', 'action=raw&ctype=text/css').'";'."\n";
+ }
+ if($wgTitle->isJsSubpage() and $action == 'submit' and $wgTitle->userCanEditCssJsSubpage()) {
+ # XXX: additional security check/prompt?
+ $this->userjsprev = $wgRequest->getText('wpTextbox1');
+ } else {
+ $this->userjs = $this->makeUrl($this->userpage.'/'.$this->skinname.'.js', 'action=raw&ctype=text/javascript&dontcountme=s');
+ }
}
- if($wgTitle->isJsSubpage() and $action == 'submit' and $wgTitle->userCanEditCssJsSubpage()) {
- # XXX: additional security check/prompt?
- $this->userjsprev = $wgRequest->getText('wpTextbox1');
- } else {
- $this->userjs = $this->makeUrl($this->userpage.'/'.$this->skinname.'.js', 'action=raw&ctype=text/javascript');
+ }
+ # returns css with user-specific options
+ function getUserStylesheet() {
+ global $wgUser, $wgRequest, $wgTitle, $wgLang, $wgSquidMaxage, $wgStylePath;
+ $action = $wgRequest->getText('action');
+ $maxage = $wgRequest->getText('maxage');
+ $s = "/* generated user stylesheet */\n";
+ if($wgLang->isRTL()) $s .= '@import "'.$wgStylePath.'/'.$this->skinname.'/rtl.css";'."\n";
+ $s .= '@import "'.
+ $this->makeNSUrl(ucfirst($this->skinname).'.css', 'action=raw&ctype=text/css&smaxage='.$wgSquidMaxage, NS_MEDIAWIKI)."\";\n";
+ if($wgUser->getID() != 0) {
+ if ( 1 == $wgUser->getOption( "underline" ) ) {
+ $s .= "a { text-decoration: underline; }\n";
+ } else {
+ $s .= "a { text-decoration: none; }\n";
+ }
+ }
+ if ( 1 != $wgUser->getOption( "highlightbroken" ) ) {
+ $s .= "a.new, #quickbar a.new { color: #CC2200; }\n";
+ }
+ if ( 1 == $wgUser->getOption( "justify" ) ) {
+ $s .= "#bodyContent { text-align: justify; }\n";
}
+ return $s;
}
+ function getUserJs() {
+ global $wgUser, $wgStylePath;
+ $s = "/* generated javascript */";
+ $s .= "var skin = '{$this->skinname}';\nvar stylepath = '{$wgStylePath}';";
+ $s .= '/* MediaWiki:'.ucfirst($this->skinname)." */\n";
+ $s .= wfMsg(ucfirst($this->skinname).'.js');
+ return $s;
+ }
+
}
class SkinDaVinci extends SkinPHPTal {
@@ -584,5 +610,12 @@
$this->skinname = "monobook";
}
}
-
+
+ class SkinMySkin extends SkinPHPTal {
+ function initPage( &$out ) {
+ SkinPHPTal::initPage( $out );
+ $this->skinname = "myskin";
+ }
+ }
+}
?>
diff --git a/includes/SkinStandard.php b/includes/SkinStandard.php
index 929fc3e91827..ba367a370d85 100644
--- a/includes/SkinStandard.php
+++ b/includes/SkinStandard.php
@@ -18,12 +18,12 @@ class SkinStandard extends Skin {
function getUserStyles()
{
global $wgStylePath;
-
- $s = parent::getUserStyles();
+ $s = '';
if ( 3 == $this->qbSetting() ) { # Floating left
$s .= "<style type='text/css'>\n" .
"@import '{$wgStylePath}/quickbar.css';\n</style>\n";
}
+ $s .= parent::getUserStyles();
return $s;
}
diff --git a/includes/SpecialAllmessages.php b/includes/SpecialAllmessages.php
index 615206900c41..01f0bd271b72 100644
--- a/includes/SpecialAllmessages.php
+++ b/includes/SpecialAllmessages.php
@@ -2,12 +2,11 @@
function wfSpecialAllmessages()
{
- global $wgOut, $wgAllMessagesEn, $wgRequest, $wgMessageCache;
+ global $wgOut, $wgAllMessagesEn, $wgRequest, $wgMessageCache, $wgTitle;
$ot = $wgRequest->getText('ot');
$mwMsg =& MagicWord::get( MAG_MSG );
set_time_limit(0);
$navText = str_replace( "$1", $mwMsg->getSynonym( 0 ), wfMsg("allmessagestext" ) );
-
$first = true;
$sortedArray = $wgAllMessagesEn;
ksort( $sortedArray );
@@ -18,12 +17,13 @@
$messages[$key]['statmsg'] = wfMsgNoDb( $key );
$messages[$key]['msg'] = wfMsg ( $key );
}
- if ($ot == 'php') {
- $navText .= makePhp($messages);
- $wgOut->addHTML('<pre>'.htmlspecialchars($navText).'</pre>');
- } else {
+ if ($ot == 'html') {
$navText .= makeWikiText($messages);
- $wgOut->addWikiText( $navText );
+ $wgOut->addHTML('<a href="'.$wgTitle->getLocalUrl('ot=php').'">PHP</a> | HTML');
+ $wgOut->addWikiText($navText);
+ } else {
+ $navText .= makePhp($messages);
+ $wgOut->addHTML('PHP | <a href="'.$wgTitle->getLocalUrl('ot=html').'">HTML</a><pre>'.htmlspecialchars($navText).'</pre>');
}
return;
}
diff --git a/includes/SpecialAllpages.php b/includes/SpecialAllpages.php
index 67246e447f01..1cdeaa7de5ce 100644
--- a/includes/SpecialAllpages.php
+++ b/includes/SpecialAllpages.php
@@ -2,9 +2,11 @@
function wfSpecialAllpages( $par=NULL )
{
- global $indexMaxperpage, $wgRequest;
+ global $indexMaxperpage, $wgRequest, $wgLoadBalancer;
$indexMaxperpage = 480;
$from = $wgRequest->getVal( 'from' );
+
+ $wgLoadBalancer->force(-1);
if( $par ) {
indexShowChunk( $par );
@@ -13,6 +15,8 @@ function wfSpecialAllpages( $par=NULL )
} else {
indexShowToplevel();
}
+
+ $wgLoadBalancer->force(0);
}
function indexShowToplevel()
@@ -31,42 +35,40 @@ function indexShowToplevel()
return;
}
-
-# $fromwhere = "FROM cur WHERE cur_namespace=0 AND cur_is_redirect=0";
$fromwhere = "FROM cur WHERE cur_namespace=0";
$order = "ORDER BY cur_title";
$out = "";
-
+
$sql = "SELECT COUNT(*) AS count $fromwhere";
$res = wfQuery( $sql, DB_READ, $fname );
$s = wfFetchObject( $res );
$count = $s->count;
$sections = ceil( $count / $indexMaxperpage );
-
+
$sql = "SELECT cur_title $fromwhere $order LIMIT 1";
$res = wfQuery( $sql, DB_READ, $fname );
$s = wfFetchObject( $res );
$inpoint = $s->cur_title;
-
+
$out .= "<table>\n";
# There's got to be a cleaner way to do this!
for( $i = 1; $i < $sections; $i++ ) {
$from = $i * $indexMaxperpage;
- $sql = "SELECT cur_title $fromwhere $order LIMIT $from,2";
+ $sql = "SELECT cur_title $fromwhere $order ".wfLimitResult(2,$from);
$res = wfQuery( $sql, DB_READ, $fname );
-
+
$s = wfFetchObject( $res );
$outpoint = $s->cur_title;
$out .= indexShowline( $inpoint, $outpoint );
-
+
$s = wfFetchObject( $res );
$inpoint = $s->cur_title;
-
+
wfFreeResult( $res );
}
-
+
$from = $i * $indexMaxperpage;
- $sql = "SELECT cur_title $fromwhere $order LIMIT " . ($count-1) . ",1";
+ $sql = "SELECT cur_title $fromwhere $order ".wfLimitResult(1,$count-1);
$res = wfQuery( $sql, DB_READ, $fname );
$s = wfFetchObject( $res );
$outpoint = $s->cur_title;
@@ -75,7 +77,7 @@ function indexShowToplevel()
# Saving cache
$log->replaceContent( $out );
-
+
$wgOut->addHtml( $out );
}
@@ -98,43 +100,52 @@ function indexShowline( $inpoint, $outpoint )
function indexShowChunk( $from )
{
- global $wgOut, $wgUser, $indexMaxperpage;
+ global $wgOut, $wgUser, $indexMaxperpage, $wgLang;
$sk = $wgUser->getSkin();
-
+ $maxPlusOne = $indexMaxperpage + 1;
+
$out = "";
- $sql = "SELECT cur_title
-FROM cur
-WHERE cur_namespace=0 AND cur_title >= '" . wfStrencode( $from ) . "'
-ORDER BY cur_title
-LIMIT {$indexMaxperpage}";
+ $sql = "SELECT cur_title FROM cur WHERE cur_namespace=0 AND cur_title >= '"
+ . wfStrencode( $from ) . "' ORDER BY cur_title LIMIT " . $maxPlusOne;
$res = wfQuery( $sql, DB_READ, "indexShowChunk" );
-# FIXME: Dynamic column widths, backlink to main list,
-# side links to next and previous
+ ### FIXME: side link to previous
+
$n = 0;
- $out = "<table border=\"0\">\n";
- while( $s = wfFetchObject( $res ) ) {
+ $out = "<table border=\"0\" width=\"100%\">\n";
+ while( ($n < $indexMaxperpage) && ($s = wfFetchObject( $res )) ) {
$t = Title::makeTitle( 0, $s->cur_title );
if( $t ) {
$link = $sk->makeKnownLinkObj( $t );
} else {
$link = "[[" . htmlspecialchars( $s->cur_title ) . "]]";
}
- if( $n == 0 ) {
+ if( $n % 3 == 0 ) {
$out .= "<tr>\n";
}
- $out .= "<td width=\"33%\">$link</td>";
- $n = ++$n % 3;
- if( $n == 0 ) {
+ $out .= "<td>$link</td>";
+ $n++;
+ if( $n % 3 == 0 ) {
$out .= "</tr>\n";
}
}
- if( $n != 0 ) {
+ if( ($n % 3) != 0 ) {
$out .= "</tr>\n";
}
$out .= "</table>";
-#return $out;
- $wgOut->addHtml( $out );
+
+ $out2 = "<div style='text-align: right; font-size: smaller; margin-bottom: 1em;'>" .
+ $sk->makeKnownLink( $wgLang->specialPage( "Allpages" ),
+ wfMsg ( 'allpages' ) );
+ if ( ($n == $indexMaxperpage) && ($s = wfFetchObject( $res )) ) {
+ $out2 .= " | " . $sk->makeKnownLink(
+ $wgLang->specialPage( "Allpages" ),
+ wfMsg ( 'nextpage', $s->cur_title ),
+ "from=" . wfStrencode( $s->cur_title ) );
+ }
+ $out2 .= "</div>";
+
+ $wgOut->addHtml( $out2 . $out );
}
?>
diff --git a/includes/SpecialAncientpages.php b/includes/SpecialAncientpages.php
index 52bc0058b3b2..3aa93a54a47d 100644
--- a/includes/SpecialAncientpages.php
+++ b/includes/SpecialAncientpages.php
@@ -13,12 +13,14 @@ class AncientPagesPage extends QueryPage {
}
function getSQL() {
+ global $wgIsMySQL;
+ $use_index=$wgIsMySQL?"USE INDEX (cur_timestamp)":"";
return
"SELECT 'Ancientpages' as type,
cur_namespace as namespace,
cur_title as title,
UNIX_TIMESTAMP(cur_timestamp) as value
- FROM cur USE INDEX (cur_timestamp)
+ FROM cur $use_index
WHERE cur_namespace=0 AND cur_is_redirect=0";
}
diff --git a/includes/SpecialAsksql.php b/includes/SpecialAsksql.php
index 6c9c487e4faa..63fefb1a9672 100644
--- a/includes/SpecialAsksql.php
+++ b/includes/SpecialAsksql.php
@@ -1,4 +1,10 @@
<?php
+#
+# If enabled through $wgAllowSysopQueries = true, this class
+# let users with sysop right the possibility to make sql queries
+# against the cur table.
+# Heavy queries could slow down the database specially for the
+# biggest wikis.
function wfSpecialAsksql()
{
diff --git a/includes/SpecialCategories.php b/includes/SpecialCategories.php
index 1a3efca0ccee..6cc493e7ccdf 100644
--- a/includes/SpecialCategories.php
+++ b/includes/SpecialCategories.php
@@ -1,45 +1,44 @@
<?php
+require_once("QueryPage.php");
+
+class CategoriesPage extends QueryPage {
+
+ function getName() {
+ return "Categories";
+ }
+
+ function isExpensive() {
+ return false;
+ }
+
+ function getSQL() {
+ $NScat = NS_CATEGORY;
+ return "SELECT DISTINCT 'Categories' as type,
+ {$NScat} as namespace,
+ cl_to as title,
+ 1 as value
+ FROM categorylinks";
+ }
+
+ function sortDescending() {
+ return false;
+ }
+
+ function formatResult( $skin, $result ) {
+ global $wgLang;
+ $title = Title::makeTitle( NS_CATEGORY, $result->title );
+ return $skin->makeLinkObj( $title, $title->getText() );
+ }
+}
+
function wfSpecialCategories()
{
- global $wgUser, $wgOut , $wgLang;
-
- $sk = $wgUser->getSkin() ;
- $sc = "Special:Categories" ;
-
- # List all existant categories.
- # Note: this list could become *very large*
- $r = "<ol>\n" ;
- $sql = "SELECT cur_title FROM cur WHERE cur_namespace=".Namespace::getCategory() ;
- $res = wfQuery ( $sql, DB_READ ) ;
- while ( $x = wfFetchObject ( $res ) ) {
- $title =& Title::makeTitle( NS_CATEGORY, $x->cur_title );
- $r .= "<li>" ;
- $r .= $sk->makeKnownLinkObj ( $title, $title->getText() ) ;
- $r .= "</li>\n" ;
- }
- wfFreeResult ( $res ) ;
- $r .= "</ol>\n" ;
-
- $r .= "<hr />\n" ;
-
- # Links to category pages that haven't been created.
- # FIXME: This could be slow if there are a lot, but the title index should
- # make it reasonably snappy since we're using an index.
- $cat = wfStrencode( $wgLang->getNsText( NS_CATEGORY ) );
- $sql = "SELECT DISTINCT bl_to FROM brokenlinks WHERE bl_to LIKE \"{$cat}:%\"" ;
- $res = wfQuery ( $sql, DB_READ ) ;
- $r .= "<ol>\n" ;
- while ( $x = wfFetchObject ( $res ) ) {
- $title = Title::newFromDBkey( $x->bl_to );
- $r .= "<li>" ;
- $r .= $sk->makeBrokenLinkObj( $title, $title->getText() ) ;
- $r .= "</li>\n" ;
- }
- wfFreeResult ( $res ) ;
- $r .= "</ol>\n" ;
-
- $wgOut->addHTML ( $r ) ;
+ list( $limit, $offset ) = wfCheckLimits();
+
+ $cap = new CategoriesPage();
+
+ return $cap->doQuery( $offset, $limit );
}
?>
diff --git a/includes/SpecialContributions.php b/includes/SpecialContributions.php
index ad9b5acb5e06..0dcd5ebfc3ae 100644
--- a/includes/SpecialContributions.php
+++ b/includes/SpecialContributions.php
@@ -2,7 +2,7 @@
function wfSpecialContributions( $par = "" )
{
- global $wgUser, $wgOut, $wgLang, $wgRequest;
+ global $wgUser, $wgOut, $wgLang, $wgRequest, $wgIsPg;
$fname = "wfSpecialContributions";
$sysop = $wgUser->isSysop();
@@ -21,23 +21,35 @@ function wfSpecialContributions( $par = "" )
$offlimit = $limit + $offset;
$querylimit = $offlimit + 1;
$hideminor = ($wgRequest->getVal( 'hideminor' ) ? 1 : 0);
+ $sk = $wgUser->getSkin();
+
+ $userCond = "";
$nt = Title::newFromURL( $target );
$nt->setNamespace( Namespace::getUser() );
- $sk = $wgUser->getSkin();
$id = User::idFromName( $nt->getText() );
if ( 0 == $id ) {
$ul = $nt->getText();
} else {
- $ul = $sk->makeLinkObj( $nt, $nt->getText() );
+ $ul = $sk->makeLinkObj( $nt, htmlspecialchars( $nt->getText() ) );
+ $userCond = "=" . $id;
}
$talk = $nt->getTalkPage();
if( $talk )
$ul .= " (" . $sk->makeLinkObj( $talk, $wgLang->getNsText(Namespace::getTalk(0)) ) . ")";
else
$ul .= "brrrp";
+
+ if ( $target == 'newbies' ) {
+ # View the contributions of all recently created accounts
+ $row = wfGetArray("user",array("max(user_id) as m"),false);
+ $userCond = ">" . ($row->m - $row->m / 100);
+ $ul = "";
+ $id = 0;
+ }
+
$wgOut->setSubtitle( wfMsg( "contribsub", $ul ) );
if ( $hideminor ) {
@@ -53,23 +65,24 @@ function wfSpecialContributions( $par = "" )
"&offset={$offset}&limit={$limit}&hideminor=1" );
}
- if ( 0 == $id ) {
- $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment,cur_minor_edit,cur_is_new FROM cur " .
+ $oldtable=$wgIsPg?'"old"':'old';
+ if ( $userCond == "" ) {
+ $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment,cur_minor_edit,cur_is_new,cur_user_text FROM cur " .
"WHERE cur_user_text='" . wfStrencode( $nt->getText() ) . "' {$cmq} " .
"ORDER BY inverse_timestamp LIMIT {$querylimit}";
$res1 = wfQuery( $sql, DB_READ, $fname );
- $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment,old_minor_edit FROM old " .
+ $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment,old_minor_edit,old_user_text FROM $oldtable " .
"WHERE old_user_text='" . wfStrencode( $nt->getText() ) . "' {$omq} " .
"ORDER BY inverse_timestamp LIMIT {$querylimit}";
$res2 = wfQuery( $sql, DB_READ, $fname );
} else {
- $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment,cur_minor_edit,cur_is_new FROM cur " .
- "WHERE cur_user={$id} {$cmq} ORDER BY inverse_timestamp LIMIT {$querylimit}";
+ $sql = "SELECT cur_namespace,cur_title,cur_timestamp,cur_comment,cur_minor_edit,cur_is_new,cur_user_text FROM cur " .
+ "WHERE cur_user {$userCond} {$cmq} ORDER BY inverse_timestamp LIMIT {$querylimit}";
$res1 = wfQuery( $sql, DB_READ, $fname );
- $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment,old_minor_edit FROM old " .
- "WHERE old_user={$id} {$omq} ORDER BY inverse_timestamp LIMIT {$querylimit}";
+ $sql = "SELECT old_namespace,old_title,old_timestamp,old_comment,old_minor_edit,old_user_text FROM $oldtable " .
+ "WHERE old_user {$userCond} {$omq} ORDER BY inverse_timestamp LIMIT {$querylimit}";
$res2 = wfQuery( $sql, DB_READ, $fname );
}
$nCur = wfNumRows( $res1 );
@@ -107,6 +120,8 @@ function wfSpecialContributions( $par = "" )
$comment =$obj1->cur_comment;
$me = $obj1->cur_minor_edit;
$isnew = $obj1->cur_is_new;
+ $usertext = $obj1->cur_user_text;
+
$obj1 = wfFetchObject( $res1 );
$topmark = true;
--$nCur;
@@ -116,6 +131,7 @@ function wfSpecialContributions( $par = "" )
$ts = $obj2->old_timestamp;
$comment =$obj2->old_comment;
$me = $obj2->old_minor_edit;
+ $usertext = $obj2->old_user_text;
$obj2 = wfFetchObject( $res2 );
$topmark = false;
@@ -123,7 +139,7 @@ function wfSpecialContributions( $par = "" )
--$nOld;
}
if( $n >= $offset )
- ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment, ( $me > 0), $isnew );
+ ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment, ( $me > 0), $isnew, $usertext );
}
$wgOut->addHTML( "</ul>\n" );
}
@@ -147,7 +163,7 @@ other users.
TODO: This would probably look a lot nicer in a table.
*/
-function ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment, $isminor, $isnew )
+function ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment, $isminor, $isnew, $target )
{
global $wgLang, $wgOut, $wgUser, $wgRequest;
$page = Title::makeName( $ns, $t );
@@ -162,7 +178,7 @@ function ucListEdit( $sk, $ns, $t, $ts, $topmark, $comment, $isminor, $isnew )
$sysop = $wgUser->isSysop();
if($sysop ) {
$extraRollback = $wgRequest->getBool( "bot" ) ? '&bot=1' : '';
- $target = $wgRequest->getText( 'target' );
+ # $target = $wgRequest->getText( 'target' );
$topmarktext .= " [". $sk->makeKnownLink( $page,
wfMsg( "rollbacklink" ),
"action=rollback&from=" . urlencode( $target ) . $extraRollback ) ."]";
diff --git a/includes/SpecialDeadendpages.php b/includes/SpecialDeadendpages.php
index 84641a5d51fd..a571d68388db 100644
--- a/includes/SpecialDeadendpages.php
+++ b/includes/SpecialDeadendpages.php
@@ -4,22 +4,26 @@ require_once( "QueryPage.php" );
class DeadendPagesPage extends PageQueryPage {
- function getName( ) {
- return "Deadendpages";
- }
+ function getName( ) {
+ return "Deadendpages";
+ }
- # LEFT JOIN is expensive
+ # LEFT JOIN is expensive
- function isExpensive( ) {
- return 1;
- }
+ function isExpensive( ) {
+ return 1;
+ }
+
+ function sortDescending() {
+ return false;
+ }
- function getSQL( $offset, $limit ) {
- return "SELECT cur_title as title, 0 as value " .
- "FROM cur LEFT JOIN links ON cur_id = l_from " .
- "WHERE l_from IS NULL " .
- "AND cur_namespace = 0 " .
- "AND cur_is_redirect = 0";
+ function getSQL() {
+ return "SELECT 'Deadendpages' as type, cur_namespace AS namespace, cur_title as title, cur_title AS value " .
+ "FROM cur LEFT JOIN links ON cur_id = l_from " .
+ "WHERE l_from IS NULL " .
+ "AND cur_namespace = 0 " .
+ "AND cur_is_redirect = 0";
}
}
diff --git a/includes/SpecialListadmins.php b/includes/SpecialListadmins.php
new file mode 100644
index 000000000000..8518c43eafb0
--- /dev/null
+++ b/includes/SpecialListadmins.php
@@ -0,0 +1,37 @@
+<?php
+#
+# This class is used to get a list of users flagged with "sysop"
+# right.
+
+require_once("QueryPage.php");
+
+class ListAdminsPage extends PageQueryPage {
+
+ function getName() {
+ return 'Listadmins';
+ }
+
+ function sortDescending() {
+ return false;
+ }
+
+ function getSQL() {
+ global $wgIsPg;
+ $usertable = $wgIsPg?'"user"':'user';
+ $userspace = Namespace::getUser();
+ return 'SELECT user_rights as type,'.$userspace.' as namespace,'.
+ 'user_name as title, user_name as value '.
+ "FROM $usertable ".
+ 'WHERE user_rights LIKE "%sysop%"';
+ }
+}
+
+function wfSpecialListadmins() {
+ list( $limit, $offset ) = wfCheckLimits();
+
+ $sla = new ListAdminsPage();
+
+ return $sla->doQuery( $offset, $limit );
+}
+
+?>
diff --git a/includes/SpecialListusers.php b/includes/SpecialListusers.php
index f87852f48297..e74f2a23a920 100644
--- a/includes/SpecialListusers.php
+++ b/includes/SpecialListusers.php
@@ -1,38 +1,48 @@
<?php
+#
+# This class is used to get a list of user. The ones with specials
+# rights (sysop, bureaucrat, developer) will have them displayed
+# next to their names.
-function wfSpecialListusers()
-{
- global $wgUser, $wgOut, $wgLang;
+require_once("QueryPage.php");
- list( $limit, $offset ) = wfCheckLimits();
+class ListUsersPage extends QueryPage {
- $top = wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
+ function getName() {
+ return "Listusers";
+ }
- $sl = wfViewPrevNext( $offset, $limit,
- $wgLang->specialPage( "Listusers" ) );
- $wgOut->addHTML( "<br />{$sl}</p>\n<ol start='" . ( $offset + 1 ) . "'>" );
+ function getSQL() {
+ global $wgIsPg;
+ $usertable = $wgIsPg?'"user"':'user';
+ $userspace = Namespace::getUser();
+ return "SELECT user_rights as type, $userspace as namespace, user_name as title, user_name as value FROM $usertable";
+ }
+
+ function sortDescending() {
+ return false;
+ }
- $sql = "SELECT user_name,user_rights FROM user ORDER BY " .
- "user_name LIMIT {$offset}, {$limit}";
- $res = wfQuery( $sql, DB_READ, "wfSpecialListusers" );
+ function formatResult( $skin, $result ) {
+ global $wgLang;
+ $name = $skin->makeKnownLink( $wgLang->getNsText($result->namespace) . ':' . $result->title, $result->title );
+ if( '' != $result->type ) {
+ $name .= ' (' .
+ $skin->makeKnownLink( wfMsg( "administrators" ), $result->type) .
+ ')';
+ }
+ return $name;
+ }
+}
- $sk = $wgUser->getSkin();
- while ( $s = wfFetchObject( $res ) ) {
- $n = $s->user_name;
- $r = $s->user_rights;
+function wfSpecialListusers() {
+ global $wgUser, $wgOut, $wgLang, $wgIsPg;
- $l = $sk->makeLink( $wgLang->getNsText(
- Namespace::getUser() ) . ":{$n}", $n );
+ list( $limit, $offset ) = wfCheckLimits();
- if ( "" != $r ) {
- $link = $sk->makeKnownLink( wfMsg( "administrators" ), $r );
- $l .= " ({$link})";
- }
- $wgOut->addHTML( "<li>{$l}</li>\n" );
- }
- wfFreeResult( $res );
- $wgOut->addHTML( "</ol>\n<p>{$sl}</p>\n" );
+ $slu = new ListUsersPage();
+
+ return $slu->doQuery( $offset, $limit );
}
?>
diff --git a/includes/SpecialLonelypages.php b/includes/SpecialLonelypages.php
index bd5286414c6f..ebb4f0b034ac 100644
--- a/includes/SpecialLonelypages.php
+++ b/includes/SpecialLonelypages.php
@@ -3,30 +3,28 @@
require_once( "QueryPage.php" );
class LonelyPagesPage extends PageQueryPage {
-
- function getName() {
- return "Lonelypages";
- }
-
- function isExpensive() {
- return 1;
- }
-
- function getSQL( $offset, $limit ) {
- return "SELECT cur_title FROM cur LEFT JOIN links ON " .
- "cur_id=l_to WHERE l_to IS NULL AND cur_namespace=0 AND " .
- "cur_is_redirect=0 ORDER BY cur_title LIMIT {$offset}, {$limit}";
- }
+ function getName() {
+ return "Lonelypages";
+ }
+
+ function isExpensive() {
+ return true;
+ }
+
+ function getSQL() {
+ return "SELECT 'Lonelypages' as type, cur_namespace AS namespace, cur_title AS title, cur_title AS value " .
+ "FROM cur LEFT JOIN links ON cur_id=l_to ".
+ "WHERE l_to IS NULL AND cur_namespace=0 AND cur_is_redirect=0";
+ }
}
-function wfSpecialLonelypages()
-{
- list( $limit, $offset ) = wfCheckLimits();
-
- $lpp = new LonelyPagesPage();
-
- return $lpp->doQuery( $offset, $limit );
+function wfSpecialLonelypages() {
+ list( $limit, $offset ) = wfCheckLimits();
+
+ $lpp = new LonelyPagesPage();
+
+ return $lpp->doQuery( $offset, $limit );
}
?>
diff --git a/includes/SpecialMaintenance.php b/includes/SpecialMaintenance.php
index e6e75a2ce93b..3b16d6a2875d 100644
--- a/includes/SpecialMaintenance.php
+++ b/includes/SpecialMaintenance.php
@@ -10,13 +10,15 @@ function sns()
function wfSpecialMaintenance( $par=NULL )
{
global $wgUser, $wgOut, $wgLang, $wgTitle, $wgRequest, $wgLanguageCode;
- global $wgMiserMode;
+ global $wgMiserMode, $wgLoadBalancer;
if ( $wgMiserMode ) {
$wgOut->addWikiText( wfMsg( "perfdisabled" ) );
return;
}
+ $wgLoadBalancer->force(-1);
+
$submitmll = $wgRequest->getVal( 'submitmll' );
if( $par )
@@ -24,13 +26,30 @@ function wfSpecialMaintenance( $par=NULL )
else
$subfunction = $wgRequest->getText( 'subfunction' );
- if ( $subfunction == "disambiguations" ) return wfSpecialDisambiguations() ;
- if ( $subfunction == "doubleredirects" ) return wfSpecialDoubleRedirects() ;
- if ( $subfunction == "brokenredirects" ) return wfSpecialBrokenRedirects() ;
- if ( $subfunction == "selflinks" ) return wfSpecialSelfLinks() ;
- if ( $subfunction == "mispeelings" ) return wfSpecialMispeelings() ;
- if ( $subfunction == "missinglanguagelinks" ) return wfSpecialMissingLanguageLinks() ;
- if ( !is_null( $submitmll ) ) return wfSpecialMissingLanguageLinks() ;
+ $done = true;
+
+ if ( $subfunction == "disambiguations" ) {
+ wfSpecialDisambiguations() ;
+ } elseif ( $subfunction == "doubleredirects" ) {
+ wfSpecialDoubleRedirects() ;
+ } elseif ( $subfunction == "brokenredirects" ) {
+ wfSpecialBrokenRedirects() ;
+ } elseif ( $subfunction == "selflinks" ) {
+ wfSpecialSelfLinks() ;
+ } elseif ( $subfunction == "mispeelings" ) {
+ wfSpecialMispeelings() ;
+ } elseif ( $subfunction == "missinglanguagelinks" ) {
+ wfSpecialMissingLanguageLinks() ;
+ } elseif ( !is_null( $submitmll ) ) {
+ wfSpecialMissingLanguageLinks() ;
+ } else {
+ $done = false;
+ }
+
+ $wgLoadBalancer->force(0);
+ if ( $done ) {
+ return;
+ }
$sk = $wgUser->getSkin();
$ns = $wgLang->getNamespaces() ;
diff --git a/includes/SpecialMakesysop.php b/includes/SpecialMakesysop.php
index 653f06256e60..a9564f167fb2 100644
--- a/includes/SpecialMakesysop.php
+++ b/includes/SpecialMakesysop.php
@@ -76,7 +76,7 @@ class MakesysopForm {
</td>
</tr>"
);
- /*
+
$makeburo = wfMsg( "setbureaucratflag" );
$wgOut->addHTML(
"<tr>
@@ -84,7 +84,7 @@ class MakesysopForm {
<input type=checkbox name=\"wpSetBureaucrat\" value=1>$makeburo
</td>
</tr>"
- );*/
+ );
if ( $wgUser->isDeveloper() ) {
$rights = wfMsg( "rights" );
diff --git a/includes/SpecialMovepage.php b/includes/SpecialMovepage.php
index 329c0d28cfbb..a00c8ca2c887 100644
--- a/includes/SpecialMovepage.php
+++ b/includes/SpecialMovepage.php
@@ -3,9 +3,9 @@ require_once( "LinksUpdate.php" );
function wfSpecialMovepage()
{
- global $wgUser, $wgOut, $wgRequest, $action;
+ global $wgUser, $wgOut, $wgRequest, $action, $wgOnlySysopMayMove;
- if ( 0 == $wgUser->getID() or $wgUser->isBlocked() ) {
+ if ( 0 == $wgUser->getID() or $wgUser->isBlocked() or ($wgOnlySysopMayMove and $wgUser->isNewbie())) {
$wgOut->errorpage( "movenologin", "movenologintext" );
return;
}
diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php
index 5b013bffe1fc..05682c0900ef 100644
--- a/includes/SpecialPage.php
+++ b/includes/SpecialPage.php
@@ -1,19 +1,27 @@
<?php
-
+global $wgSpecialPages;
$wgSpecialPages = array(
- "Userlogin" => new UnlistedSpecialPage( "Userlogin" ),
- "Userlogout" => new UnlistedSpecialPage( "Userlogout" ),
- "Preferences" => new SpecialPage( "Preferences" ),
- "Watchlist" => new SpecialPage( "Watchlist" ),
- "Recentchanges" => new SpecialPage( "Recentchanges" ),
- "Upload" => new SpecialPage( "Upload" ),
- "Imagelist" => new SpecialPage( "Imagelist" ),
- "Listusers" => new SpecialPage( "Listusers" ),
- "Statistics" => new SpecialPage( "Statistics" ),
- "Randompage" => new SpecialPage( "Randompage" ),
- "Lonelypages" => new SpecialPage( "Lonelypages" ),
- "Unusedimages" => new SpecialPage( "Unusedimages" ),
- "Popularpages" => new SpecialPage( "Popularpages" ),
+ "Userlogin" => new UnlistedSpecialPage( "Userlogin" ),
+ "Userlogout" => new UnlistedSpecialPage( "Userlogout" ),
+ "Preferences" => new SpecialPage( "Preferences" ),
+ "Watchlist" => new SpecialPage( "Watchlist" ),
+ "Recentchanges" => new SpecialPage( "Recentchanges" ),
+ "Upload" => new SpecialPage( "Upload" ),
+ "Imagelist" => new SpecialPage( "Imagelist" ),
+ "Listusers" => new SpecialPage( "Listusers" ),
+ "Listadmins" => new SpecialPage( "Listadmins" ),
+ "Statistics" => new SpecialPage( "Statistics" ),
+ "Randompage" => new SpecialPage( "Randompage" ),
+ "Lonelypages" => new SpecialPage( "Lonelypages" ),
+ "Uncategorizedpages"=> new SpecialPage( "Uncategorizedpages" ),
+ "Unusedimages" => new SpecialPage( "Unusedimages" )
+);
+global $wgDisableCounters;
+if( !$wgDisableCounters )
+{
+ $wgSpecialPages["Popularpages"] = new SpecialPage( "Popularpages" );
+}
+$wgSpecialPages = array_merge($wgSpecialPages, array (
"Wantedpages" => new SpecialPage( "Wantedpages" ),
"Shortpages" => new SpecialPage( "Shortpages" ),
"Longpages" => new SpecialPage( "Longpages" ),
@@ -43,7 +51,7 @@ $wgSpecialPages = array(
"Import" => new SpecialPage( "Import", "sysop" ),
"Lockdb" => new SpecialPage( "Lockdb", "developer" ),
"Unlockdb" => new SpecialPage( "Unlockdb", "developer" )
-);
+));
class SpecialPage
{
diff --git a/includes/SpecialPreferences.php b/includes/SpecialPreferences.php
index 11696a02efa7..3633543e2a58 100644
--- a/includes/SpecialPreferences.php
+++ b/includes/SpecialPreferences.php
@@ -14,7 +14,7 @@ class PreferencesForm {
var $mReset, $mPosted, $mToggles, $mSearchNs, $mRealName;
function PreferencesForm( &$request ) {
- global $wgLang;
+ global $wgLang, $wgAllowRealName;
$this->mQuickbar = $request->getVal( 'wpQuickbar' );
$this->mOldpass = $request->getVal( 'wpOldpass' );
@@ -27,7 +27,7 @@ class PreferencesForm {
$this->mMath = $request->getVal( 'wpMath' );
$this->mDate = $request->getVal( 'wpDate' );
$this->mUserEmail = $request->getVal( 'wpUserEmail' );
- $this->mRealName = $request->getVal( 'wpRealName' );
+ $this->mRealName = ($wgAllowRealName) ? $request->getVal( 'wpRealName' ) : '';
$this->mEmailFlag = $request->getCheck( 'wpEmailFlag' ) ? 1 : 0;
$this->mNick = $request->getVal( 'wpNick' );
$this->mSearch = $request->getVal( 'wpSearch' );
@@ -134,12 +134,10 @@ class PreferencesForm {
$this->mainPrefsForm( wfMsg( "badretype" ) );
return;
}
- $ep = $wgUser->encryptPassword( $this->mOldpass );
- if ( $ep != $wgUser->getPassword() ) {
- if ( $ep != $wgUser->getNewpassword() ) {
- $this->mainPrefsForm( wfMsg( "wrongpassword" ) );
- return;
- }
+
+ if (!$wgUser->checkPassword( $this->mOldpass )) {
+ $this->mainPrefsForm( wfMsg( "wrongpassword" ) );
+ return;
}
$wgUser->setPassword( $this->mNewpass );
}
@@ -180,11 +178,11 @@ class PreferencesForm {
/* private */ function resetPrefs()
{
- global $wgUser, $wgLang;
+ global $wgUser, $wgLang, $wgAllowRealName;
$this->mOldpass = $this->mNewpass = $this->mRetypePass = "";
$this->mUserEmail = $wgUser->getEmail();
- $this->mRealName = $wgUser->getRealName();
+ $this->mRealName = ($wgAllowRealName) ? $wgUser->getRealName() : '';
if ( 1 == $wgUser->getOption( "disablemail" ) ) { $this->mEmailFlag = 1; }
else { $this->mEmailFlag = 0; }
$this->mNick = $wgUser->getOption( "nickname" );
@@ -265,7 +263,8 @@ class PreferencesForm {
/* private */ function mainPrefsForm( $err )
{
global $wgUser, $wgOut, $wgLang, $wgUseDynamicDates, $wgValidSkinNames;
-
+ global $wgAllowRealName;
+
$wgOut->setPageTitle( wfMsg( "preferences" ) );
$wgOut->setArticleRelated( false );
$wgOut->setRobotpolicy( "noindex,nofollow" );
@@ -277,6 +276,7 @@ class PreferencesForm {
$uid = $wgUser->getID();
$wgOut->addWikiText( wfMsg( "prefslogintext", $uname, $uid ) );
+ $wgOut->addWikiText( wfMsg('clearyourcache'));
$qbs = $wgLang->getQuickbarSettings();
$skinNames = $wgLang->getSkinNames();
@@ -301,12 +301,13 @@ class PreferencesForm {
$tbr = wfMsg( "rows" );
$tbc = wfMsg( "columns" );
$ltz = wfMsg( "localtime" );
+ $timezone = wfMsg( "timezonelegend" );
$tzt = wfMsg( "timezonetext" );
$tzo = wfMsg( "timezoneoffset" );
$tzGuess = wfMsg( "guesstimezone" );
$tzServerTime = wfMsg( "servertime" );
$yem = wfMsg( "youremail" );
- $yrn = wfMsg( "yourrealname" );
+ $yrn = ($wgAllowRealName) ? wfMsg( "yourrealname" ) : '';
$emf = wfMsg( "emailflag" );
$ynn = wfMsg( "yournick" );
$stt = wfMsg ( "stubthreshold" ) ;
@@ -332,12 +333,15 @@ class PreferencesForm {
$ps = $this->namespacesCheckboxes();
$wgOut->addHTML( "<fieldset>
- <legend>".wfMsg('prefs-personal')."</legend>
- <div><label>$yrn: <input type='text' name=\"wpRealName\" value=\"{$this->mRealName}\" size='20' /></label></div>
+ <legend>".wfMsg('prefs-personal')."</legend>");
+ if ($wgAllowRealName) {
+ $wgOut->addHTML("<div><label>$yrn: <input type='text' name=\"wpRealName\" value=\"{$this->mRealName}\" size='20' /></label></div>");
+ }
+ $wgOut->addHTML("
<div><label>$yem: <input type='text' name=\"wpUserEmail\" value=\"{$this->mUserEmail}\" size='20' /></label></div>
<div><label><input type='checkbox' $emfc value=\"1\" name=\"wpEmailFlag\" /> $emf</label></div>
<div><label>$ynn: <input type='text' name=\"wpNick\" value=\"{$this->mNick}\" size='12' /></label></div>\n" );
-
+
# Fields for changing password
#
$this->mOldpass = wfEscapeHTML( $this->mOldpass );
@@ -363,6 +367,7 @@ class PreferencesForm {
$wgOut->addHTML( "<div><label><input type='radio' name=\"wpQuickbar\"
value=\"$i\"$checked /> {$qbs[$i]}</label></div>\n" );
}
+ $wgOut->addHtml('<div class="prefsectiontip">'.wfMsg('qbsettingsnote').'</div>');
$wgOut->addHtml( "</fieldset>\n\n" );
# Skin setting
@@ -426,7 +431,7 @@ class PreferencesForm {
</fieldset>
<fieldset>
- <legend>$dateFormat</legend>
+ <legend>$timezone</legend>
<div><b>$tzServerTime:</b> $nowserver</div>
<div><b>$ltz:</b> $nowlocal</div>
<div><label>$tzo*: <input type='text' name=\"wpHourDiff\" value=\"{$this->mHourDiff}\" size='6' /></label></div>
diff --git a/includes/SpecialRandompage.php b/includes/SpecialRandompage.php
index a442623f1b18..c795670f1d98 100644
--- a/includes/SpecialRandompage.php
+++ b/includes/SpecialRandompage.php
@@ -1,17 +1,24 @@
<?php
+# $Id$
function wfSpecialRandompage()
{
- global $wgOut, $wgTitle, $wgArticle;
+ global $wgOut, $wgTitle, $wgArticle, $wgIsMySQL, $wgExtraRandompageSQL;
$fname = "wfSpecialRandompage";
wfSeedRandom();
$rand = mt_rand() / mt_getrandmax();
# interpolation and sprintf() can muck up with locale-specific decimal separator
$randstr = number_format( $rand, 12, ".", "" );
+ $use_index=$wgIsMySQL?"USE INDEX (cur_random)":"";
+ if ( $wgExtraRandompageSQL ) {
+ $extra = "AND ($wgExtraRandompageSQL)";
+ } else {
+ $extra = '';
+ }
$sqlget = "SELECT cur_id,cur_title
- FROM cur USE INDEX (cur_random)
- WHERE cur_namespace=0 AND cur_is_redirect=0
+ FROM cur $use_index
+ WHERE cur_namespace=0 AND cur_is_redirect=0 $extra
AND cur_random>$randstr
ORDER BY cur_random
LIMIT 1";
diff --git a/includes/SpecialRecentchanges.php b/includes/SpecialRecentchanges.php
index 127678528581..4470c7622c2b 100644
--- a/includes/SpecialRecentchanges.php
+++ b/includes/SpecialRecentchanges.php
@@ -111,11 +111,11 @@ function wfSpecialRecentchanges( $par )
} else {
$note = wfMsg( "rcnote", $wgLang->formatNum( $limit ), $wgLang->formatNum( $days ) );
}
- $wgOut->addHTML( "\n<hr/>\n{$note}\n<br/>" );
+ $wgOut->addHTML( "\n<hr />\n{$note}\n<br />" );
$note = rcDayLimitLinks( $days, $limit, "Recentchanges", $hideparams, false, $minorLink, $botLink, $liuLink );
- $note .= "<br/>\n" . wfMsg( "rclistfrom",
+ $note .= "<br />\n" . wfMsg( "rclistfrom",
$sk->makeKnownLink( $wgLang->specialPage( "Recentchanges" ),
$wgLang->timeanddate( $now, true ), "{$hideparams}&from=$now" ) );
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 @@
<?php
+#
+# SpecialShortpages extends QueryPage. It is used to return the shortest
+# pages in the database.
+#
require_once("QueryPage.php");
@@ -34,8 +38,7 @@ class ShortPagesPage extends QueryPage {
}
}
-function wfSpecialShortpages()
-{
+function wfSpecialShortpages() {
list( $limit, $offset ) = wfCheckLimits();
$spp = new ShortPagesPage();
diff --git a/includes/SpecialStatistics.php b/includes/SpecialStatistics.php
index a6433aaeb6a9..f53cebc4ea49 100644
--- a/includes/SpecialStatistics.php
+++ b/includes/SpecialStatistics.php
@@ -2,9 +2,11 @@
function wfSpecialStatistics()
{
- global $wgUser, $wgOut, $wgLang;
+ global $wgUser, $wgOut, $wgLang, $wgIsPg, $wgLoadBalancer;
$fname = "wfSpecialStatistics";
+ $wgLoadBalancer->force(-1);
+
$wgOut->addHTML( "<h2>" . wfMsg( "sitestats" ) . "</h2>\n" );
$sql = "SELECT COUNT(cur_id) AS total FROM cur";
@@ -31,12 +33,13 @@ function wfSpecialStatistics()
$wgOut->addWikiText( $text );
$wgOut->addHTML( "<h2>" . wfMsg( "userstats" ) . "</h2>\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 );
@@ -49,6 +52,8 @@ function wfSpecialStatistics()
$wgLang->formatNum( $total ),
$wgLang->formatNum( $admins ), $ap );
$wgOut->addWikiText( $text );
+
+ $wgLoadBalancer->force(0);
}
?>
diff --git a/includes/SpecialUncategorizedpages.php b/includes/SpecialUncategorizedpages.php
new file mode 100755
index 000000000000..6c374d8c61d1
--- /dev/null
+++ b/includes/SpecialUncategorizedpages.php
@@ -0,0 +1,37 @@
+<?php
+
+require_once( "QueryPage.php" );
+
+class UncategorizedPagesPage extends PageQueryPage {
+
+ function getName() {
+ return "Uncategorizedpages";
+ }
+
+ function sortDescending() {
+ return false;
+ }
+
+ function isExpensive() {
+ return true;
+ }
+
+ function getSQL() {
+ $dbr =& wfGetDB( DB_SLAVE );
+ extract( $dbr->tableNames( 'cur', 'categorylinks' ) );
+
+ return "SELECT 'Uncategorizedpages' as type, cur_namespace AS namespace, cur_title AS title, cur_title AS value " .
+ "FROM $cur LEFT JOIN $categorylinks ON cur_id=cl_to ".
+ "WHERE cl_to IS NULL AND cur_namespace=0 AND cur_is_redirect=0";
+ }
+}
+
+function wfSpecialUncategorizedpages() {
+ list( $limit, $offset ) = wfCheckLimits();
+
+ $lpp = new UncategorizedPagesPage();
+
+ return $lpp->doQuery( $offset, $limit );
+}
+
+?>
diff --git a/includes/SpecialUndelete.php b/includes/SpecialUndelete.php
index 9f2f8e2963e6..1428533d0775 100644
--- a/includes/SpecialUndelete.php
+++ b/includes/SpecialUndelete.php
@@ -79,7 +79,8 @@ class UndeleteForm {
if(!preg_match("/[0-9]{14}/",$timestamp)) return 0;
$sql = "SELECT ar_text,ar_flags FROM archive ".
- "WHERE ar_namespace={$namespace} AND ar_title=\"{$title}\" AND ar_timestamp={$timestamp}";
+ "WHERE ar_namespace={$namespace} AND ar_title='" .
+ wfStrencode( $title ) . "' AND ar_timestamp='" . wfStrencode( $timestamp ) ."'";
$ret = wfQuery( $sql, DB_READ, $fname );
$row = wfFetchObject( $ret );
@@ -97,8 +98,8 @@ class UndeleteForm {
$wgOut->setPagetitle( wfMsg( "undeletepage" ) );
# Get text of first revision
- $sql = "SELECT ar_text FROM archive WHERE ar_namespace={$namespace} AND ar_title=\"{$title}\"
- ORDER BY ar_timestamp DESC LIMIT 1";
+ $sql = "SELECT ar_text FROM archive WHERE ar_namespace={$namespace} AND ar_title='" .
+ wfStrencode( $title ) . "' ORDER BY ar_timestamp DESC LIMIT 1";
$ret = wfQuery( $sql, DB_READ );
if( wfNumRows( $ret ) == 0 ) {
@@ -108,13 +109,11 @@ class UndeleteForm {
$row = wfFetchObject( $ret );
$wgOut->addWikiText( wfMsg( "undeletehistory" ) . "\n<hr>\n" . $row->ar_text );
- # Get remaining revisions
+ # List all stored revisions
$sql = "SELECT ar_minor_edit,ar_timestamp,ar_user,ar_user_text,ar_comment
- FROM archive WHERE ar_namespace={$namespace} AND ar_title=\"{$title}\"
- ORDER BY ar_timestamp DESC";
+ FROM archive WHERE ar_namespace={$namespace} AND ar_title='" . wfStrencode( $title ) .
+ "' ORDER BY ar_timestamp DESC";
$ret = wfQuery( $sql, DB_READ );
- # Ditch first row
- $row = wfFetchObject( $ret );
$titleObj = Title::makeTitle( NS_SPECIAL, "Undelete" );
$action = $titleObj->escapeLocalURL( "action=submit" );
@@ -126,7 +125,8 @@ class UndeleteForm {
<input type=submit name=\"restore\" value=\"".wfMsg("undeletebtn")."\">
</form>");
- $log = wfGetSQL("cur", "cur_text", "cur_namespace=4 AND cur_title=\"".wfMsg("dellogpage")."\"" );
+ $log = wfGetSQL("cur", "cur_text", "cur_namespace=4 AND cur_title='".
+ wfStrencode( wfMsg("dellogpage") ) . "'" );
if(preg_match("/^(.*".
preg_quote( ($namespace ? ($wgLang->getNsText($namespace) . ":") : "")
. str_replace("_", " ", $title), "/" ).".*)$/m", $log, $m)) {
@@ -140,7 +140,7 @@ class UndeleteForm {
$sk->makeKnownLink( $wgLang->specialPage( "Undelete" ),
$wgLang->timeanddate( $row->ar_timestamp, true ),
"target=" . urlencode($this->mTarget) . "&timestamp={$row->ar_timestamp}" ) . " " .
- ". . {$row->ar_user_text}" .
+ ". . " . htmlspecialchars( $row->ar_user_text ) .
" <i>(" . htmlspecialchars($row->ar_comment) . "</i>)\n");
}
@@ -160,7 +160,7 @@ class UndeleteForm {
$wgOut->fatalError( wfMsg( "cannotundelete" ) );
return;
}
- $t = addslashes($title);
+ $t = wfStrencode($title);
# Move article and history from the "archive" table
$sql = "SELECT COUNT(*) AS count FROM cur WHERE cur_namespace={$namespace} AND cur_title='{$t}'";
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..f95717e5ddf9 100644
--- a/includes/SpecialUpload.php
+++ b/includes/SpecialUpload.php
@@ -73,13 +73,14 @@ class UploadForm {
global $wgUser, $wgOut, $wgLang;
global $wgUploadDirectory;
global $wgSavedFile, $wgUploadOldVersion;
- global $wgUseCopyrightUpload;
+ global $wgUseCopyrightUpload, $wgCheckCopyrightUpload;
global $wgCheckFileExtensions, $wgStrictFileExtensions;
- global $wgFileExtensions, $wgFileBlacklist;
+ global $wgFileExtensions, $wgFileBlacklist, $wgUploadSizeWarning;
if ( $wgUseCopyrightUpload ) {
$this->mUploadAffirm = 1;
- if ( trim ( $this->mUploadCopyStatus ) == "" || trim ( $this->mUploadSource ) == "" ) {
+ if ($wgCheckCopyrightUpload &&
+ (trim ( $this->mUploadCopyStatus ) == "" || trim ( $this->mUploadSource ) == "" )) {
$this->mUploadAffirm = 0;
}
}
@@ -106,28 +107,47 @@ class UploadForm {
return;
}
$nt = Title::newFromText( $basename );
+ if( !$nt ) {
+ return $this->uploadError( wfMsg( "illegalfilename", htmlspecialchars( $basename ) ) );
+ }
+ $nt->setNamespace( Namespace::getImage() );
$this->mUploadSaveName = $nt->getDBkey();
/* Don't allow users to override the blacklist */
if( $this->checkFileExtension( $ext, $wgFileBlacklist ) ||
($wgStrictFileExtensions && !$this->checkFileExtension( $ext, $wgFileExtensions ) ) ) {
- return $this->uploadError( wfMsg( "badfiletype", $ext ) );
+ return $this->uploadError( wfMsg( "badfiletype", htmlspecialchars( $ext ) ) );
}
$this->saveUploadedFile( $this->mUploadSaveName, $this->mUploadTempName );
- if ( ( ! $this->mIgnoreWarning ) &&
- ( 0 != strcmp( ucfirst( $basename ), $this->mUploadSaveName ) ) ) {
- return $this->uploadWarning( wfMsg( "badfilename", $this->mUploadSaveName ) );
+ if ( !$nt->userCanEdit() ) {
+ return $this->uploadError( wfMsg( "protectedpage" ) );
}
- if ( $wgCheckFileExtensions ) {
- if ( ( ! $this->mIgnoreWarning ) &&
- ( ! $this->checkFileExtension( $ext, $wgFileExtensions ) ) ) {
- return $this->uploadWarning( wfMsg( "badfiletype", $ext ) );
+ if ( ! $this->mIgnoreWarning ) {
+ $warning = '';
+ if( 0 != strcmp( ucfirst( $basename ), $this->mUploadSaveName ) ) {
+ $warning .= '<li>'.wfMsg( "badfilename", htmlspecialchars( $this->mUploadSaveName ) ).'</li>';
}
- }
- if ( ( ! $this->mIgnoreWarning ) && ( $this->mUploadSize > 150000 ) ) {
- return $this->uploadWarning( wfMsg( "largefile" ) );
+
+ if ( $wgCheckFileExtensions ) {
+ if ( ! $this->checkFileExtension( $ext, $wgFileExtensions ) ) {
+ $warning .= '<li>'.wfMsg( "badfiletype", htmlspecialchars( $ext ) ).'</li>';
+ }
+ }
+ if ( $wgUploadSizeWarning && ( $this->mUploadSize > $wgUploadSizeWarning ) ) {
+ $warning .= '<li>'.wfMsg( "largefile" ).'</li>';
+ }
+ if ( $this->mUploadSize == 0 ) {
+ $warning .= '<li>'.wfMsg( "emptyfile" ).'</li>';
+ }
+ if( $nt->getArticleID() ) {
+ $sk = $wgUser->getSkin();
+ $dname = $wgLang->getNsText( Namespace::getImage() ) . ":{$this->mUploadSaveName}";
+ $dlink = $sk->makeKnownLink( $dname, $dname );
+ $warning .= '<li>'.wfMsg( "fileexists", $dlink ).'</li>';
+ }
+ if($warning != '') return $this->uploadWarning($warning);
}
}
if ( !is_null( $this->mUploadOldVersion ) ) {
@@ -220,7 +240,7 @@ class UploadForm {
$sub = wfMsg( "uploadwarning" );
$wgOut->addHTML( "<h2>{$sub}</h2>\n" );
- $wgOut->addHTML( "<h4><font color=red>{$warning}</font></h4>\n" );
+ $wgOut->addHTML( "<ul class='warning'>{$warning}</ul><br/>\n" );
$save = wfMsg( "savefile" );
$reupload = wfMsg( "reupload" );
diff --git a/includes/SpecialUserlogin.php b/includes/SpecialUserlogin.php
index c950ed5f150a..69d1ac6d6b7f 100644
--- a/includes/SpecialUserlogin.php
+++ b/includes/SpecialUserlogin.php
@@ -20,7 +20,7 @@ class LoginForm {
var $mLoginattempt, $mRemember, $mEmail;
function LoginForm( &$request ) {
- global $wgLang;
+ global $wgLang, $wgAllowRealName;
$this->mName = $request->getText( 'wpName' );
$this->mPassword = $request->getText( 'wpPassword' );
@@ -35,8 +35,12 @@ class LoginForm {
$this->mAction = $request->getVal( 'action' );
$this->mRemember = $request->getCheck( 'wpRemember' );
$this->mEmail = $request->getText( 'wpEmail' );
- $this->mRealName = $request->getText( 'wpRealName' );
-
+ if ($wgAllowRealName) {
+ $this->mRealName = $request->getText( 'wpRealName' );
+ } else {
+ $this->mRealName = '';
+ }
+
# When switching accounts, it sucks to get automatically logged out
if( $this->mReturnto == $wgLang->specialPage( "Userlogout" ) ) {
$this->mReturnto = "";
@@ -122,6 +126,7 @@ class LoginForm {
{
global $wgUser, $wgOut;
global $wgMaxNameChars;
+ global $wgMemc, $wgAccountCreationThrottle, $wgDBname, $wgIP;
if (!$wgUser->isAllowedToCreateAccount()) {
$this->userNotPrivilegedMessage();
@@ -152,6 +157,18 @@ class LoginForm {
$this->mainLoginForm( wfMsg( "userexists" ) );
return;
}
+ if ( $wgAccountCreationThrottle ) {
+ $key = "$wgDBname:acctcreate:ip:$wgIP";
+ $value = $wgMemc->incr( $key );
+ if ( !$value ) {
+ $wgMemc->set( $key, 1, 86400 );
+ }
+ if ( $value > $wgAccountCreationThrottle ) {
+ $this->throttleHit( $wgAccountCreationThrottle );
+ return;
+ }
+ }
+
$u->addToDatabase();
$u->setPassword( $this->mPassword );
$u->setEmail( $this->mEmail );
@@ -183,12 +200,9 @@ class LoginForm {
}
$u->setId( $id );
$u->loadFromDatabase();
- $ep = $u->encryptPassword( $this->mPassword );
- if ( 0 != strcmp( $ep, $u->getPassword() ) ) {
- if ( 0 != strcmp( $ep, $u->getNewpassword() ) ) {
- $this->mainLoginForm( wfMsg( "wrongpassword" ) );
- return;
- }
+ if (!$u->checkPassword( $this->mPassword )) {
+ $this->mainLoginForm( wfMsg( "wrongpassword" ) );
+ return;
}
# We've verified now, update the real record
@@ -301,7 +315,7 @@ class LoginForm {
/* private */ function mainLoginForm( $err )
{
global $wgUser, $wgOut, $wgLang;
- global $wgDBname;
+ global $wgDBname, $wgAllowRealName;
$le = wfMsg( "loginerror" );
$yn = wfMsg( "yourname" );
@@ -313,7 +327,11 @@ class LoginForm {
$ca = wfMsg( "createaccount" );
$cam = wfMsg( "createaccountmail" );
$ye = wfMsg( "youremail" );
- $yrn = wfMsg( "yourrealname" );
+ if ($wgAllowRealName) {
+ $yrn = wfMsg( "yourrealname" );
+ } else {
+ $yrn = '';
+ }
$efl = wfMsg( "emailforlost" );
$mmp = wfMsg( "mailmypassword" );
$endText = wfMsg( "loginend" );
@@ -401,20 +419,23 @@ class LoginForm {
<td align='right'>$ye:</td>
<td align='left'>
<input tabindex='6' type='text' name=\"wpEmail\" value=\"{$encEmail}\" size='20' />
- </td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td align='right'>$yrn:</td>
- <td align='left'>
- <input tabindex='6' type='text' name=\"wpRealName\" value=\"{$encRealName}\" size='20' />
- </td>
- <td align='left'>
+ </td>");
+
+ if ($wgAllowRealName) {
+ $wgOut->addHTML("<td>&nbsp;</td>
+ </tr><tr>
+ <td align='right'>$yrn:</td>
+ <td align='left'>
+ <input tabindex='6' type='text' name=\"wpRealName\" value=\"{$encRealName}\" size='20' />
+ </td>");
+ }
+
+ $wgOut->addHTML("<td align='left'>
<input tabindex='7' type='submit' name=\"wpCreateaccount\" value=\"{$ca}\" />
$cambutton
</td></tr>");
}
-
+
$wgOut->addHTML("
<tr><td colspan='3'>&nbsp;</td></tr><tr>
<td colspan='3' align='left'>
@@ -457,5 +478,11 @@ class LoginForm {
return $this->successfulLogin( wfMsg( "loginsuccess", $wgUser->getName() ) );
}
}
+
+ /* private */ function throttleHit( $limit ) {
+ global $wgOut;
+
+ $wgOut->addWikiText( wfMsg( 'acct_creation_throttle_hit', $limit ) );
+ }
}
?>
diff --git a/includes/SpecialWatchlist.php b/includes/SpecialWatchlist.php
index 619dc38445f9..aece38b20009 100644
--- a/includes/SpecialWatchlist.php
+++ b/includes/SpecialWatchlist.php
@@ -4,8 +4,8 @@ require_once( "WatchedItem.php" );
function wfSpecialWatchlist()
{
- global $wgUser, $wgOut, $wgLang, $wgTitle, $wgMemc;
- global $wgUseWatchlistCache, $wgWLCacheTimeout, $wgDBname;
+ global $wgUser, $wgOut, $wgLang, $wgTitle, $wgMemc, $wgLoadBalancer;
+ global $wgUseWatchlistCache, $wgWLCacheTimeout, $wgDBname, $wgIsMySQL;
global $days, $limit, $target; # From query string
$fname = "wfSpecialWatchlist";
@@ -50,18 +50,20 @@ function wfSpecialWatchlist()
return;
}
}
-
-
+
+ $wgLoadBalancer->force(-1);
$sql = "SELECT COUNT(*) AS n FROM watchlist WHERE wl_user=$uid";
$res = wfQuery( $sql, DB_READ );
$s = wfFetchObject( $res );
$nitems = $s->n;
-
+ $wgLoadBalancer->force(0);
if($nitems == 0) {
$wgOut->addHTML( wfMsg( "nowatchlist" ) );
return;
}
-
+
+ $wgLoadBalancer->force(-1);
+
if ( ! isset( $days ) ) {
$big = 1000;
if($nitems > $big) {
@@ -79,13 +81,14 @@ function wfSpecialWatchlist()
$cutoff = false;
$npages = wfMsg( "all" );
} else {
- $docutoff = "AND cur_timestamp > '" .
+ $docutoff = "AND cur_timestamp > '" .
( $cutoff = wfUnix2Timestamp( time() - intval( $days * 86400 ) ) )
. "'";
- $sql = "SELECT COUNT(*) AS n FROM cur WHERE cur_timestamp>'$cutoff'";
+ $sql = "SELECT COUNT(*) AS n FROM cur WHERE cur_timestamp>'$cutoff'";
$res = wfQuery( $sql, DB_READ );
$s = wfFetchObject( $res );
$npages = $s->n;
+
}
if(isset($_REQUEST['magic'])) {
@@ -102,16 +105,21 @@ function wfSpecialWatchlist()
$sk = $wgUser->getSkin();
while( $s = wfFetchObject( $res ) ) {
$t = Title::makeTitle( $s->wl_namespace, $s->wl_title );
- $t = $t->getPrefixedText();
- $wgOut->addHTML( "<li><input type='checkbox' name='id[]' value=\"" . htmlspecialchars($t) . "\" />" .
- $sk->makeKnownLink( $t, $t ) .
- "</li>\n" );
+ if( is_null( $t ) ) {
+ $wgOut->addHTML( '<!-- bad title "' . htmlspecialchars( $s->wl_title ) . '" in namespace ' . IntVal( $s->wl_namespace ) . " -->\n" );
+ } else {
+ $t = $t->getPrefixedText();
+ $wgOut->addHTML( "<li><input type='checkbox' name='id[]' value=\"" . htmlspecialchars($t) . "\" />" .
+ $sk->makeKnownLink( $t, $t ) .
+ "</li>\n" );
+ }
}
$wgOut->addHTML( "</ul>\n" .
"<input type='submit' name='remove' value='" .
wfMsg( "removechecked" ) . "' />\n" .
"</form>\n" );
+ $wgLoadBalancer->force(0);
return;
}
@@ -137,11 +145,11 @@ function wfSpecialWatchlist()
$wgLang->formatNum( $nitems ), $wgLang->formatNum( $npages ), $y,
$specialTitle->escapeLocalUrl( "magic=yes" ) ) . "</i><br />\n" );
-
+ $use_index=$wgIsMySQL?"USE INDEX ($x)":"";
$sql = "SELECT
cur_namespace,cur_title,cur_comment, cur_id,
cur_user,cur_user_text,cur_timestamp,cur_minor_edit,cur_is_new
- FROM watchlist,cur USE INDEX ($x)
+ FROM watchlist,cur $use_index
WHERE wl_user=$uid
AND $z
AND wl_title=cur_title
@@ -163,6 +171,7 @@ function wfSpecialWatchlist()
if ( wfNumRows( $res ) == 0 ) {
$wgOut->addHTML( "<p><i>" . wfMsg( "watchnochange" ) . "</i></p>" );
+ $wgLoadBalancer->force(0);
return;
}
@@ -183,6 +192,8 @@ function wfSpecialWatchlist()
if ( $wgUseWatchlistCache ) {
$wgMemc->set( $memckey, $s, $wgWLCacheTimeout);
}
+
+ $wgLoadBalancer->force(0);
}
diff --git a/includes/SpecialWhatlinkshere.php b/includes/SpecialWhatlinkshere.php
index 900f9e7db294..d8770bb4383a 100644
--- a/includes/SpecialWhatlinkshere.php
+++ b/includes/SpecialWhatlinkshere.php
@@ -27,7 +27,7 @@ function wfSpecialWhatlinkshere($par = NULL)
$sk = $wgUser->getSkin();
$isredir = " (" . wfMsg( "isredirect" ) . ")\n";
- $wgOut->addHTML("&lt; ".$sk->makeKnownLinkObj($nt, "", "redirect=no" )."<br/>\n");
+ $wgOut->addHTML("&lt; ".$sk->makeKnownLinkObj($nt, "", "redirect=no" )."<br />\n");
if ( 0 == $id ) {
$sql = "SELECT cur_id,cur_namespace,cur_title,cur_is_redirect FROM brokenlinks,cur WHERE bl_to='" .
diff --git a/includes/SquidUpdate.php b/includes/SquidUpdate.php
index 462de3fb0e0c..154b3d553ec3 100644
--- a/includes/SquidUpdate.php
+++ b/includes/SquidUpdate.php
@@ -2,9 +2,18 @@
# See deferred.doc
class SquidUpdate {
- var $urlArr;
+ var $urlArr, $mMaxTitles;
- function SquidUpdate( $urlArr = Array() ) {
+ function SquidUpdate( $urlArr = Array(), $maxTitles = false ) {
+ global $wgMaxSquidPurgeTitles;
+ if ( $maxTitles === false ) {
+ $this->mMaxTitles = $wgMaxSquidPurgeTitles;
+ } else {
+ $this->mMaxTitles = $maxTitles;
+ }
+ if ( count( $urlArr ) > $this->mMaxTitles ) {
+ $urlArr = array_slice( $urlArr, 0, $this->mMaxTitles );
+ }
$this->urlArr = $urlArr;
}
@@ -14,10 +23,12 @@ class SquidUpdate {
$sql = "SELECT cur_namespace,cur_title FROM links,cur WHERE l_to={$id} and l_from=cur_id" ;
$res = wfQuery ( $sql, DB_READ ) ;
$blurlArr = $title->getSquidURLs();
- while ( $BL = wfFetchObject ( $res ) )
- {
- $tobj = Title::makeTitle( $BL->cur_namespace, $BL->cur_title ) ;
- $blurlArr[] = $tobj->getInternalURL();
+ if ( wfNumRows( $res ) <= $this->mMaxTitles ) {
+ while ( $BL = wfFetchObject ( $res ) )
+ {
+ $tobj = Title::makeTitle( $BL->cur_namespace, $BL->cur_title ) ;
+ $blurlArr[] = $tobj->getInternalURL();
+ }
}
wfFreeResult ( $res ) ;
return new SquidUpdate( $blurlArr );
@@ -29,10 +40,12 @@ class SquidUpdate {
$sql = "SELECT cur_namespace,cur_title FROM brokenlinks,cur WHERE bl_to={$encTitle} AND bl_from=cur_id";
$res = wfQuery( $sql, DB_READ );
$blurlArr = array();
- while ( $BL = wfFetchObject( $res ) )
- {
- $tobj = Title::makeTitle( $BL->cur_namespace, $BL->cur_title );
- $blurlArr[] = $tobj->getInternalURL();
+ if ( wfNumRows( $res ) <= $this->mMaxTitles ) {
+ while ( $BL = wfFetchObject( $res ) )
+ {
+ $tobj = Title::makeTitle( $BL->cur_namespace, $BL->cur_title );
+ $blurlArr[] = $tobj->getInternalURL();
+ }
}
wfFreeResult( $res );
return new SquidUpdate( $blurlArr );
@@ -85,14 +98,20 @@ class SquidUpdate {
/* first socket for this server, do the tests */
@list($server, $port) = explode(':', $wgSquidServers[$ss]);
if(!isset($port)) $port = 80;
+ #$this->debug("Opening socket to $server:$port");
$socket = @fsockopen($server, $port, $error, $errstr, 3);
+ #$this->debug("\n");
if (!$socket) {
$failed = true;
$totalsockets -= $sockspersq;
} else {
- @fputs($socket,"PURGE " . $firsturl . " HTTP/1.0\r\n".
- "Connection: Keep-Alive\r\n\r\n");
+ $msg ="PURGE " . $firsturl . " HTTP/1.0\r\n".
+ "Connection: Keep-Alive\r\n\r\n";
+ #$this->debug($msg);
+ @fputs($socket,$msg);
+ #$this->debug("...");
$res = @fread($socket,512);
+ #$this->debug("\n");
/* Squid only returns http headers with 200 or 404 status,
if there's more returned something's wrong */
if (strlen($res) > 250) {
@@ -129,12 +148,15 @@ class SquidUpdate {
}
}
$urindex = $r + $urlspersocket * ($s - $sockspersq * floor($s / $sockspersq));
- @fputs($sockets[$s],"PURGE " . $urlArr[$urindex] . " HTTP/1.0\r\n".
- "Connection: Keep-Alive\r\n\r\n");
+ $msg = "PURGE " . $urlArr[$urindex] . " HTTP/1.0\r\n".
+ "Connection: Keep-Alive\r\n\r\n";
+ #$this->debug($msg);
+ @fputs($sockets[$s],$msg);
+ #$this->debug("\n");
}
}
}
-
+ #$this->debug("Reading response...");
foreach ($sockets as $socket) {
$res = '';
$esc = 0;
@@ -146,6 +168,14 @@ class SquidUpdate {
@fclose($socket);
}
+ #$this->debug("\n");
+ }
+
+ function debug( $text ) {
+ global $wgDebugSquid;
+ if ( $wgDebugSquid ) {
+ wfDebug( $text );
+ }
}
}
?>
diff --git a/includes/Title.php b/includes/Title.php
index 255cc157bc38..493e7d926324 100644
--- a/includes/Title.php
+++ b/includes/Title.php
@@ -88,13 +88,13 @@ class Title {
# From a URL-encoded title
/* static */ function newFromURL( $url )
{
- global $wgLang, $wgServer;
+ global $wgLang, $wgServer, $wgIsMySQL, $wgIsPg;
$t = new Title();
- $s = urldecode( $url ); # This is technically wrong, as anything
- # we've gotten is already decoded by PHP.
- # Kept for backwards compatibility with
- # buggy URLs we had for a while...
- $s = $url;
+
+ # For compatibility with old buggy URLs. "+" is not valid in titles,
+ # but some URLs used it as a space replacement and they still come
+ # from some external search tools.
+ $s = str_replace( "+", " ", $url );
# For links that came from outside, check for alternate/legacy
# character encoding.
@@ -109,14 +109,20 @@ class Title {
$t->mDbkeyform = str_replace( " ", "_", $s );
if( $t->secureAndSplit() ) {
-
# check that lenght of title is < cur_title size
- $sql = "SHOW COLUMNS FROM cur LIKE \"cur_title\";";
- $cur_title_object = wfFetchObject(wfQuery( $sql, DB_READ ));
+ if ($wgIsMySQL) {
+ $sql = "SHOW COLUMNS FROM cur LIKE \"cur_title\";";
+ $cur_title_object = wfFetchObject(wfQuery( $sql, DB_READ ));
- preg_match( "/\((.*)\)/", $cur_title_object->Type, $cur_title_size);
+ preg_match( "/\((.*)\)/", $cur_title_object->Type, $cur_title_type);
+ $cur_title_size=$cur_title_type[1];
+ } else {
+ /* midom:FIXME pg_field_type does not return varchar length
+ assume 255 */
+ $cur_title_size=255;
+ }
- if (strlen($t->mDbkeyform) > $cur_title_size[1] ) {
+ if (strlen($t->mDbkeyform) > $cur_title_size ) {
return NULL;
}
@@ -182,11 +188,20 @@ class Title {
# Missing characters:
# * []|# Needed for link syntax
# * % and + are corrupted by Apache when they appear in the path
- #
+ #
+ # % seems to work though
+ #
+ # The problem with % is that URLs are double-unescaped: once by Apache's
+ # path conversion code, and again by PHP. So %253F, for example, becomes "?".
+ # Our code does not double-escape to compensate for this, indeed double escaping
+ # would break if the double-escaped title was passed in the query string
+ # rather than the path. This is a minor security issue because articles can be
+ # created such that they are hard to view or edit. -- TS
+ #
# Theoretically 0x80-0x9F of ISO 8859-1 should be disallowed, but
# this breaks interlanguage links
- $set = " !\"$&'()*,\\-.\\/0-9:;<=>?@A-Z\\\\^_`a-z{}~\\x80-\\xFF";
+ $set = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z{}~\\x80-\\xFF";
return $set;
}
@@ -228,9 +243,9 @@ class Title {
# The URL contains $1, which is replaced by the title
function getInterwikiLink( $key )
{
- global $wgMemc, $wgDBname, $wgInterwikiExpiry;
- static $wgTitleInterwikiCache = array();
-
+ global $wgMemc, $wgDBname, $wgInterwikiExpiry, $wgTitleInterwikiCache;
+ global $wgLoadBalancer;
+
$k = "$wgDBname:interwiki:$key";
if( array_key_exists( $k, $wgTitleInterwikiCache ) )
@@ -243,9 +258,11 @@ class Title {
return $s->iw_url;
}
$dkey = wfStrencode( $key );
- $query = "SELECT iw_url,iw_local FROM interwiki WHERE iw_prefix='$dkey'";
+ $wgLoadBalancer->force(-1);
+ $query = "SELECT iw_url,iw_local FROM interwiki WHERE iw_prefix='$dkey'";
$res = wfQuery( $query, DB_READ, "Title::getInterwikiLink" );
- if(!$res) return "";
+ $wgLoadBalancer->force(0);
+ if(!$res) return "";
$s = wfFetchObject( $res );
if(!$s) {
@@ -337,6 +354,15 @@ class Title {
}
return $this->mPrefixedText;
}
+
+ # As getPrefixedText(), plus fragment.
+ function getFullText() {
+ $text = $this->getPrefixedText();
+ if( '' != $this->mFragment ) {
+ $text .= '#' . $this->mFragment;
+ }
+ return $text;
+ }
# Get a URL-encoded title (not an actual URL) including interwiki
function getPrefixedURL()
@@ -363,16 +389,19 @@ class Title {
if ( "" == $this->mInterwiki ) {
$p = $wgArticlePath;
return $wgServer . $this->getLocalUrl( $query );
+ } else {
+ $baseUrl = $this->getInterwikiLink( $this->mInterwiki );
+ $namespace = $wgLang->getNsText( $this->mNamespace );
+ if ( "" != $namespace ) {
+ # Can this actually happen? Interwikis shouldn't be parsed.
+ $namepace .= ":";
+ }
+ $url = str_replace( "$1", $namespace . $this->mUrlform, $baseUrl );
+ if ( '' != $this->mFragment ) {
+ $url .= '#' . $this->mFragment;
+ }
+ return $url;
}
-
- $p = $this->getInterwikiLink( $this->mInterwiki );
- $n = $wgLang->getNsText( $this->mNamespace );
- if ( "" != $n ) { $n .= ":"; }
- $u = str_replace( "$1", $n . $this->mUrlform, $p );
- if ( "" != $this->mFragment ) {
- $u .= "#" . wfUrlencode( $this->mFragment );
- }
- return $u;
}
# Get a URL with an optional query string, no fragment
@@ -486,15 +515,20 @@ class Title {
# Can $wgUser edit this page?
function userCanEdit()
{
-
+ global $wgUser;
if ( -1 == $this->mNamespace ) { return false; }
+ if ( NS_MEDIAWIKI == $this->mNamespace && !$wgUser->isSysop() ) { return false; }
# if ( 0 == $this->getArticleID() ) { return false; }
if ( $this->mDbkeyform == "_" ) { return false; }
+ # protect global styles and js
+ if ( NS_MEDIAWIKI == $this->mNamespace
+ && preg_match("/\\.(css|js)$/", $this->mTextform )
+ && !$wgUser->isSysop() )
+ { return false; }
//if ( $this->isCssJsSubpage() and !$this->userCanEditCssJsSubpage() ) { return false; }
# protect css/js subpages of user pages
# XXX: this might be better using restrictions
# XXX: Find a way to work around the php bug that prevents using $this->userCanEditCssJsSubpage() from working
- global $wgUser;
if( Namespace::getUser() == $this->mNamespace
and preg_match("/\\.(css|js)$/", $this->mTextform )
and !$wgUser->isSysop()
@@ -520,7 +554,7 @@ class Title {
if( in_array( $name, $wgWhitelistRead ) ) return true;
# Compatibility with old settings
- if( $this->getNamespace() == NS_ARTICLE ) {
+ if( $this->getNamespace() == NS_MAIN ) {
if( in_array( ":" . $name, $wgWhitelistRead ) ) return true;
}
return false;
@@ -638,6 +672,7 @@ class Title {
# Initialisation
if ( $imgpre === false ) {
$imgpre = ":" . $wgLang->getNsText( Namespace::getImage() ) . ":";
+ # % is needed as well
$rxTc = "/[^" . Title::legalChars() . "]/";
}
@@ -668,7 +703,7 @@ class Title {
$this->mNamespace = NS_MAIN;
} else {
# Namespace or interwiki prefix
- if ( preg_match( "/^((?:i|x|[a-z]{2,3})(?:-[a-z0-9]+)?|[A-Za-z0-9_\\x80-\\xff]+?)_*:_*(.*)$/", $t, $m ) ) {
+ if ( preg_match( "/^(.+?)_*:_*(.*)$/", $t, $m ) ) {
#$p = strtolower( $m[1] );
$p = $m[1];
$lowerNs = strtolower( $p );
@@ -716,14 +751,22 @@ class Title {
return false;
}
- # "." and ".." conflict with the directories of those names
- if ( $r === "." || $r === ".." ) {
+ # "." and ".." conflict with the directories of those namesa
+ if ( strpos( $r, "." ) !== false &&
+ ( $r === "." || $r === ".." ||
+ strpos( $r, "./" ) === 0 ||
+ strpos( $r, "../" ) === 0 ||
+ strpos( $r, "/./" ) !== false ||
+ strpos( $r, "/../" ) !== false ) )
+ {
return false;
}
# Initial capital letter
if( $wgCapitalLinks && $this->mInterwiki == "") {
$t = $wgLang->ucfirst( $r );
+ } else {
+ $t = $r;
}
# Fill fields
@@ -748,17 +791,18 @@ class Title {
# Get an array of Title objects linking to this title
# Also stores the IDs in the link cache
- function getLinksTo() {
+ function getLinksTo( $options = '' ) {
global $wgLinkCache;
$id = $this->getArticleID();
- $sql = "SELECT cur_namespace,cur_title,cur_id FROM cur,links WHERE l_from=cur_id AND l_to={$id}";
+ $sql = "SELECT cur_namespace,cur_title,cur_id FROM cur,links WHERE l_from=cur_id AND l_to={$id} $options";
$res = wfQuery( $sql, DB_READ, "Title::getLinksTo" );
$retVal = array();
if ( wfNumRows( $res ) ) {
while ( $row = wfFetchObject( $res ) ) {
- $titleObj = Title::makeTitle( $row->cur_namespace, $row->cur_title );
- $wgLinkCache->addGoodLink( $row->cur_id, $titleObj->getPrefixedDBkey() );
- $retVal[] = $titleObj;
+ if ( $titleObj = Title::makeTitle( $row->cur_namespace, $row->cur_title ) ) {
+ $wgLinkCache->addGoodLink( $row->cur_id, $titleObj->getPrefixedDBkey() );
+ $retVal[] = $titleObj;
+ }
}
}
wfFreeResult( $res );
@@ -767,17 +811,17 @@ class Title {
# Get an array of Title objects linking to this non-existent title
# Also stores the IDs in the link cache
- function getBrokenLinksTo() {
+ function getBrokenLinksTo( $options = '' ) {
global $wgLinkCache;
$encTitle = wfStrencode( $this->getPrefixedDBkey() );
$sql = "SELECT cur_namespace,cur_title,cur_id FROM brokenlinks,cur " .
- "WHERE bl_from=cur_id AND bl_to='$encTitle'";
+ "WHERE bl_from=cur_id AND bl_to='$encTitle' $options";
$res = wfQuery( $sql, DB_READ, "Title::getBrokenLinksTo" );
$retVal = array();
if ( wfNumRows( $res ) ) {
while ( $row = wfFetchObject( $res ) ) {
$titleObj = Title::makeTitle( $row->cur_namespace, $row->cur_title );
- $wgLinkCache->addGoodLink( $titleObj->getPrefixedDBkey(), $row->cur_id );
+ $wgLinkCache->addGoodLink( $row->cur_id, $titleObj->getPrefixedDBkey() );
$retVal[] = $titleObj;
}
}
@@ -837,6 +881,14 @@ class Title {
} else { # Target didn't exist, do normal move.
$this->moveToNewTitle( $nt, $newid );
}
+
+ # Fixing category links (those without piped 'alternate' names) to be sorted under the new title
+
+ $sql = "UPDATE categorylinks SET cl_sortkey='" . wfStrencode( $nt->getPrefixedText() ) . "'" .
+ " WHERE cl_from='" . wfStrencode( $this->getArticleID() ) . "'" .
+ " AND cl_sortkey='" . wfStrencode( $this->getPrefixedText() ) . "'";
+ wfQuery( $sql, DB_WRITE, "SpecialMovepage::doSubmit" );
+
# Update watchlists
@@ -927,42 +979,59 @@ class Title {
$fname
);
- RecentChange::notifyMove( $now, $this, $nt, $wgUser, $comment );
+ RecentChange::notifyMoveOverRedirect( $now, $this, $nt, $wgUser, $comment );
# Swap links
# Load titles and IDs
- $linksToOld = $this->getLinksTo();
- $linksToNew = $nt->getLinksTo();
-
- # Make function to convert Titles to IDs
- $titleToID = create_function('$t', 'return $t->getArticleID();');
-
- # Reassign links to old title
- if ( count( $linksToOld ) ) {
- $sql = "UPDATE links SET l_to=$newid WHERE l_from IN (";
- $sql .= implode( ",", array_map( $titleToID, $linksToOld ) );
- $sql .= ")";
- wfQuery( $sql, DB_WRITE, $fname );
- }
+ $linksToOld = $this->getLinksTo( 'FOR UPDATE' );
+ $linksToNew = $nt->getLinksTo( 'FOR UPDATE' );
- # Reassign links to new title
- if ( count( $linksToNew ) ) {
- $sql = "UPDATE links SET l_to=$oldid WHERE l_from IN (";
- $sql .= implode( ",", array_map( $titleToID, $linksToNew ) );
- $sql .= ")";
+ # Delete them all
+ $sql = "DELETE FROM links WHERE l_to=$oldid OR l_to=$newid";
+ wfQuery( $sql, DB_WRITE, $fname );
+
+ # Reinsert
+ if ( count( $linksToOld ) || count( $linksToNew )) {
+ $sql = "INSERT INTO links (l_from,l_to) VALUES ";
+ $first = true;
+
+ # Insert links to old title
+ foreach ( $linksToOld as $linkTitle ) {
+ if ( $first ) {
+ $first = false;
+ } else {
+ $sql .= ",";
+ }
+ $id = $linkTitle->getArticleID();
+ $sql .= "($id,$newid)";
+ }
+
+ # Insert links to new title
+ foreach ( $linksToNew as $linkTitle ) {
+ if ( $first ) {
+ $first = false;
+ } else {
+ $sql .= ",";
+ }
+ $id = $linkTitle->getArticleID();
+ $sql .= "($id, $oldid)";
+ }
+
wfQuery( $sql, DB_WRITE, $fname );
}
- # Note: the insert below must be after the updates above!
-
# Now, we record the link from the redirect to the new title.
# It should have no other outgoing links...
$sql = "DELETE FROM links WHERE l_from={$newid}";
wfQuery( $sql, DB_WRITE, $fname );
$sql = "INSERT INTO links (l_from,l_to) VALUES ({$newid},{$oldid})";
wfQuery( $sql, DB_WRITE, $fname );
-
+
+ # Clear linkscc
+ LinkCache::linksccClearLinksTo( $oldid );
+ LinkCache::linksccClearLinksTo( $newid );
+
# Purge squid
if ( $wgUseSquid ) {
$urls = array_merge( $nt->getSquidURLs(), $this->getSquidURLs() );
@@ -1029,14 +1098,16 @@ class Title {
), $fname
);
- # Miscellaneous updates
+ # Record in RC
+ RecentChange::notifyMoveToNew( $now, $this, $nt, $wgUser, $comment );
- RecentChange::notifyMove( $now, $this, $nt, $wgUser, $comment );
+ # Purge squid and linkscc as per article creation
Article::onArticleCreate( $nt );
# Any text links to the old title must be reassigned to the redirect
$sql = "UPDATE links SET l_to={$newid} WHERE l_to={$oldid}";
wfQuery( $sql, DB_WRITE, $fname );
+ LinkCache::linksccClearLinksTo( $oldid );
# Record the just-created redirect's linking to the page
$sql = "INSERT INTO links (l_from,l_to) VALUES ({$newid},{$oldid})";
@@ -1140,5 +1211,84 @@ class Title {
return true;
}
+ # Get categories to wich belong this title and return an array of
+ # categories names.
+ function getParentCategories( )
+ {
+ global $wgLang,$wgUser;
+
+ #$titlekey = wfStrencode( $this->getArticleID() );
+ $titlekey = $this->getArticleId();
+ $cns = Namespace::getCategory();
+ $sk =& $wgUser->getSkin();
+ $parents = array();
+
+ # get the parents categories of this title from the database
+ $sql = "SELECT DISTINCT cur_id FROM cur,categorylinks
+ WHERE cl_from='$titlekey' AND cl_to=cur_title AND cur_namespace='$cns'
+ ORDER BY cl_sortkey" ;
+ $res = wfQuery ( $sql, DB_READ ) ;
+
+ if(wfNumRows($res) > 0) {
+ while ( $x = wfFetchObject ( $res ) ) $data[] = $x ;
+ wfFreeResult ( $res ) ;
+ } else {
+ $data = '';
+ }
+ return $data;
+ }
+
+ # will get the parents and grand-parents
+ # TODO : not sure what's happening when a loop happen like:
+ # Encyclopedia > Astronomy > Encyclopedia
+ function getAllParentCategories(&$stack)
+ {
+ global $wgUser,$wgLang;
+ $result = '';
+
+ # getting parents
+ $parents = $this->getParentCategories( );
+
+ if($parents == '')
+ {
+ # 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 )
+ {
+ # make a link of that parent
+ $result .= $sk->makeLink($wgLang->getNSText ( Namespace::getCategory() ).":".$parent,$parent);
+ $result .= ' &gt; ';
+ $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 .= "<br/>\n";
+
+ # now we can empty the stack
+ $stack = array();
+
+ } 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/Tokenizer.php b/includes/Tokenizer.php
index ab18b106dbde..129d5e09313b 100644
--- a/includes/Tokenizer.php
+++ b/includes/Tokenizer.php
@@ -18,7 +18,7 @@ class Tokenizer {
# factory function
function newFromString( $s )
{
- $fname = "Tokenizer::newFromString";
+ $fname = 'Tokenizer::newFromString';
wfProfileIn( $fname );
$t = new Tokenizer();
@@ -37,7 +37,7 @@ class Tokenizer {
// the stored token.
function previewToken()
{
- $fname = "Tokenizer::previewToken";
+ $fname = 'Tokenizer::previewToken';
wfProfileIn( $fname );
if ( count( $this->mQueuedToken ) != 0 ) {
@@ -60,7 +60,7 @@ class Tokenizer {
// TODO: handling of French blanks not yet implemented
function nextToken()
{
- $fname = "Tokenizer::nextToken";
+ $fname = 'Tokenizer::nextToken';
wfProfileIn( $fname );
if ( count( $this->mQueuedToken ) != 0 ) {
@@ -71,48 +71,48 @@ class Tokenizer {
$token = false;
} else {
- $token["text"]="";
- $token["type"]="text";
+ $token['text']='';
+ $token['type']='text';
while ( $this->mPos <= $this->mTextLength ) {
switch ( @$ch = $this->mText[$this->mPos] ) {
case 'R': // for "RFC "
- if ( $this->continues("FC ") ) {
- $queueToken["type"] = $queueToken["text"] = "RFC ";
+ if ( $this->continues('FC ') ) {
+ $queueToken['type'] = $queueToken['text'] = 'RFC ';
$this->mQueuedToken[] = $queueToken;
$this->mPos += 3;
break 2; // switch + while
}
break;
case 'I': // for "ISBN "
- if ( $this->continues("SBN ") ) {
- $queueToken["type"] = $queueToken["text"] = "ISBN ";
+ if ( $this->continues('SBN ') ) {
+ $queueToken['type'] = $queueToken['text'] = 'ISBN ';
$this->mQueuedToken[] = $queueToken;
$this->mPos += 4;
break 2; // switch + while
}
break;
- case "[": // for links "[["
- if ( $this->continues("[[") ) {
- $queueToken["type"] = "[[[";
- $queueToken["text"] = "";
+ case '[': // for links "[["
+ if ( $this->continues('[[') ) {
+ $queueToken['type'] = '[[[';
+ $queueToken['text'] = '';
$this->mQueuedToken[] = $queueToken;
$this->mPos += 3;
break 2; // switch + while
- } else if ( $this->continues("[") ) {
- $queueToken["type"] = "[[";
- $queueToken["text"] = "";
+ } else if ( $this->continues('[') ) {
+ $queueToken['type'] = '[[';
+ $queueToken['text'] = '';
// Check for a "prefixed link", e.g. Al[[Khazar]]
// Mostly for arabic wikipedia
if ( $this->linkPrefixExtension ) {
while ( $this->linkPrefixExtension
- && ($len = strlen( $token["text"] ) ) > 0
- && !ctype_space( $token["text"][$len-1] ) )
+ && ($len = strlen( $token['text'] ) ) > 0
+ && !ctype_space( $token['text'][$len-1] ) )
{
//prepend the character to the link's open tag
- $queueToken["text"] = $token["text"][$len-1] . $queueToken["text"];
+ $queueToken['text'] = $token['text'][$len-1] . $queueToken['text'];
//remove character from the end of the text token
- $token["text"] = substr( $token["text"], 0, -1);
+ $token['text'] = substr( $token['text'], 0, -1);
}
}
$this->mQueuedToken[] = $queueToken;
@@ -120,10 +120,10 @@ class Tokenizer {
break 2; // switch + while
}
break;
- case "]": // for end of links "]]"
- if ( $this->continues("]") ) {
- $queueToken["type"] = "]]";
- $queueToken["text"] = "";
+ case ']': // for end of links "]]"
+ if ( $this->continues(']') ) {
+ $queueToken['type'] = ']]';
+ $queueToken['text'] = '';
$this->mQueuedToken[] = $queueToken;
$this->mPos += 2;
break 2; // switch + while
@@ -131,13 +131,13 @@ class Tokenizer {
break;
case "'": // for all kind of em's and strong's
if ( $this->continues("'") ) {
- $queueToken["type"] = "'";
- $queueToken["text"] = "";
+ $queueToken['type'] = "'";
+ $queueToken['text'] = '';
while( ($this->mPos+1 < $this->mTextLength)
&& $this->mText[$this->mPos+1] == "'" )
{
- $queueToken["type"] .= "'";
- $queueToken["pos"] = $this->mPos;
+ $queueToken['type'] .= "'";
+ $queueToken['pos'] = $this->mPos;
$this->mPos ++;
}
@@ -148,65 +148,65 @@ class Tokenizer {
break;
case "\n": // for block levels, actually, only "----" is handled.
case "\r": // headings are detected to close any unbalanced em or strong tags in a section
- if ( $this->continues( "----" ) )
+ if ( $this->continues( '----' ) )
{
- $queueToken["type"] = "----";
- $queueToken["text"] = "";
+ $queueToken['type'] = '----';
+ $queueToken['text'] = '';
$this->mQueuedToken[] = $queueToken;
$this->mPos += 5;
while ( $this->mPos<$this->mTextLength
- and $this->mText[$this->mPos] == "-" )
+ and $this->mText[$this->mPos] == '-' )
{
$this->mPos ++;
}
break 2;
} else if (
- $this->continues( "<h" ) and (
- $this->continues( "<h1" ) or
- $this->continues( "<h2" ) or
- $this->continues( "<h3" ) or
- $this->continues( "<h4" ) or
- $this->continues( "<h5" ) or
- $this->continues( "<h6" )
+ $this->continues( '<h' ) and (
+ $this->continues( '<h1' ) or
+ $this->continues( '<h2' ) or
+ $this->continues( '<h3' ) or
+ $this->continues( '<h4' ) or
+ $this->continues( '<h5' ) or
+ $this->continues( '<h6' )
)
) { // heading
- $queueToken["type"] = "h";
- $queueToken["text"] = "";
+ $queueToken['type'] = 'h';
+ $queueToken['text'] = '';
$this->mQueuedToken[] = $queueToken;
$this->mPos ++;
break 2; // switch + while
}
break;
- case "!": // French spacing rules have a space before exclamation
- case "?": // and question marks. Those have to become &nbsp;
- case ":": // And colons, Hashar says ...
- if ( $this->preceeded( " " ) )
+ case '!': // French spacing rules have a space before exclamation
+ case '?': // and question marks. Those have to become &nbsp;
+ case ':': // And colons, Hashar says ...
+ if ( $this->preceeded( ' ' ) )
{
// strip blank from Token
- $token["text"] = substr( $token["text"], 0, -1 );
- $queueToken["type"] = "blank";
- $queueToken["text"] = " {$ch}";
+ $token['text'] = substr( $token['text'], 0, -1 );
+ $queueToken['type'] = 'blank';
+ $queueToken['text'] = " {$ch}";
$this->mQueuedToken[] = $queueToken;
$this->mPos ++;
break 2; // switch + while
}
break;
- case "0": // A space between two numbers is used to ease reading
- case "1": // of big numbers, e.g. 1 000 000. Those spaces need
- case "2": // to be unbreakable
- case "3":
- case "4":
- case "5":
- case "6":
- case "7":
- case "8":
- case "9":
+ case '0': // A space between two numbers is used to ease reading
+ case '1': // of big numbers, e.g. 1 000 000. Those spaces need
+ case '2': // to be unbreakable
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
if ( ($this->mTextLength >= $this->mPos +2)
&& ($this->mText[$this->mPos+1] == " ")
&& ctype_digit( $this->mText[$this->mPos+2] ) )
{
- $queueToken["type"] = "blank";
- $queueToken["text"] = $ch . " ";
+ $queueToken['type'] = 'blank';
+ $queueToken['text'] = $ch . ' ';
$this->mQueuedToken[] = $queueToken;
$this->mPos += 2;
break 2; // switch + while
@@ -215,8 +215,8 @@ class Tokenizer {
case "\302": // first byte of UTF-8 Character Guillemet-left
if ( $this->continues( "\253 ") ) // second byte and a blank
{
- $queueToken["type"] = "blank";
- $queueToken["text"] = "\302\253 ";
+ $queueToken['type'] = 'blank';
+ $queueToken['text'] = "\302\253 ";
$this->mQueuedToken[] = $queueToken;
$this->mPos += 3;
break 2; // switch + while
@@ -225,20 +225,20 @@ class Tokenizer {
case "\273": //last byte of UTF-8 Character Guillemet-right
if ( $this->preceeded( " \302" ) )
{
- $queueToken["type"] = "blank";
- $queueToken["text"] = " \302\273";
- $token["text"] = substr( $token["text"], 0, -2 );
+ $queueToken['type'] = 'blank';
+ $queueToken['text'] = " \302\273";
+ $token['text'] = substr( $token['text'], 0, -2 );
$this->mQueuedToken[] = $queueToken;
$this->mPos ++;
break 2; // switch + while
}
break;
- case "&": //extensions like <timeline>, since HTML stripping has already been done,
+ case '&': //extensions like <timeline>, since HTML stripping has already been done,
//those look like &lt;timeline&gt;
if ( $this->continues( "lt;timeline&gt;" ) )
{
- $queueToken["type"] = "<timeline>";
- $queueToken["text"] = "&lt;timeline&gt;";
+ $queueToken['type'] = "<timeline>";
+ $queueToken['text'] = "&lt;timeline&gt;";
$this->mQueuedToken[] = $queueToken;
$this->mPos += 16;
break 2; // switch + while
@@ -246,7 +246,7 @@ class Tokenizer {
break;
} /* switch */
- $token["text"].=$ch;
+ $token['text'].=$ch;
$this->mPos ++;
// echo $this->mPos . "<br>\n";
} /* while */
@@ -286,11 +286,10 @@ class Tokenizer {
{
$n = strpos( $this->mText, $border, $this->mPos );
if ( $n === false )
- return "";
+ return '';
$ret = substr( $this->mText, $this->mPos, $n - $this->mPos );
$this->mPos = $n + strlen( $border ) + 1;
return $ret;
}
}
-
diff --git a/includes/User.php b/includes/User.php
index 111bebff1a78..2b2ba400e160 100644
--- a/includes/User.php
+++ b/includes/User.php
@@ -1,7 +1,7 @@
<?php
# See user.doc
-require_once( "WatchedItem.php" );
+require_once( 'WatchedItem.php' );
class User {
/* private */ var $mId, $mName, $mPassword, $mEmail, $mNewtalk;
@@ -13,15 +13,13 @@ class User {
/* private */ var $mCookiePassword;
/* private */ var $mRealName;
- function User()
- {
+ function User() {
$this->loadDefaults();
}
# Static factory method
#
- function newFromName( $name )
- {
+ function newFromName( $name ) {
$u = new User();
# Clean up name according to title rules
@@ -31,18 +29,15 @@ class User {
return $u;
}
- /* static */ function whoIs( $id )
- {
- return wfGetSQL( "user", "user_name", "user_id=$id" );
+ /* static */ function whoIs( $id ) {
+ return wfGetSQL( 'user', 'user_name', 'user_id='.$id );
}
- /* static */ function whoIsReal( $id )
- {
- return wfGetSQL( "user", "user_real_name", "user_id=$id" );
+ /* static */ function whoIsReal( $id ) {
+ return wfGetSQL( 'user', 'user_real_name', 'user_id='.$id );
}
- /* static */ function idFromName( $name )
- {
+ /* static */ function idFromName( $name ) {
$nt = Title::newFromText( $name );
if( is_null( $nt ) ) {
# Illegal name
@@ -50,7 +45,7 @@ class User {
}
$sql = "SELECT user_id FROM user WHERE user_name='" .
wfStrencode( $nt->getText() ) . "'";
- $res = wfQuery( $sql, DB_READ, "User::idFromName" );
+ $res = wfQuery( $sql, DB_READ, 'User::idFromName' );
if ( 0 == wfNumRows( $res ) ) {
return 0;
@@ -67,9 +62,8 @@ class User {
}
- /* static */ function randomPassword()
- {
- $pwchars = "ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz";
+ /* static */ function randomPassword() {
+ $pwchars = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz';
$l = strlen( $pwchars ) - 1;
wfSeedRandom();
@@ -80,33 +74,32 @@ class User {
return $np;
}
- function loadDefaults()
- {
+ function loadDefaults() {
global $wgLang, $wgIP;
global $wgNamespacesToBeSearchedDefault;
$this->mId = $this->mNewtalk = 0;
$this->mName = $wgIP;
- $this->mEmail = "";
- $this->mPassword = $this->mNewpassword = "";
+ $this->mEmail = '';
+ $this->mPassword = $this->mNewpassword = '';
$this->mRights = array();
$defOpt = $wgLang->getDefaultUserOptions() ;
foreach ( $defOpt as $oname => $val ) {
$this->mOptions[$oname] = $val;
}
foreach ($wgNamespacesToBeSearchedDefault as $nsnum => $val) {
- $this->mOptions["searchNs".$nsnum] = $val;
+ $this->mOptions['searchNs'.$nsnum] = $val;
}
unset( $this->mSkin );
$this->mDataLoaded = false;
$this->mBlockedby = -1; # Unset
$this->mTouched = '0'; # Allow any pages to be cached
- $this->cookiePassword = "";
+ $this->cookiePassword = '';
}
/* private */ function getBlockedStatus()
{
- global $wgIP, $wgBlockCache;
+ global $wgIP, $wgBlockCache, $wgProxyList;
if ( -1 != $this->mBlockedby ) { return; }
@@ -129,12 +122,20 @@ class User {
$this->mBlockreason = $block->mReason;
}
}
+
+ # Proxy blocking
+ if ( !$this->mBlockedby ) {
+ if ( array_key_exists( $wgIP, $wgProxyList ) ) {
+ $this->mBlockreason = wfMsg( 'proxyblockreason' );
+ $this->mBlockedby = "Proxy blocker";
+ }
+ }
}
function isBlocked()
{
$this->getBlockedStatus();
- if ( 0 == $this->mBlockedby ) { return false; }
+ if ( 0 === $this->mBlockedby ) { return false; }
return true;
}
@@ -151,10 +152,10 @@ class User {
function SetupSession() {
global $wgSessionsInMemcached, $wgCookiePath, $wgCookieDomain;
if( $wgSessionsInMemcached ) {
- require_once( "MemcachedSessions.php" );
+ require_once( 'MemcachedSessions.php' );
}
session_set_cookie_params( 0, $wgCookiePath, $wgCookieDomain );
- session_cache_limiter( "private, must-revalidate" );
+ session_cache_limiter( 'private, must-revalidate' );
@session_start();
}
@@ -290,14 +291,12 @@ class User {
return $this->mName;
}
- function setName( $str )
- {
+ function setName( $str ) {
$this->loadFromDatabase();
$this->mName = $str;
}
- function getNewtalk()
- {
+ function getNewtalk() {
$this->loadFromDatabase();
return ( 0 != $this->mNewtalk );
}
@@ -321,20 +320,7 @@ class User {
return ($timestamp >= $this->mTouched);
}
- function getPassword()
- {
- $this->loadFromDatabase();
- return $this->mPassword;
- }
-
- function getNewpassword()
- {
- $this->loadFromDatabase();
- return $this->mNewpassword;
- }
-
- function addSalt( $p )
- {
+ function addSalt( $p ) {
global $wgPasswordSalt;
if($wgPasswordSalt)
return md5( "{$this->mId}-{$p}" );
@@ -342,67 +328,57 @@ class User {
return $p;
}
- function encryptPassword( $p )
- {
+ function encryptPassword( $p ) {
return $this->addSalt( md5( $p ) );
}
- function setPassword( $str )
- {
+ function setPassword( $str ) {
$this->loadFromDatabase();
$this->setCookiePassword( $str );
$this->mPassword = $this->encryptPassword( $str );
- $this->mNewpassword = "";
+ $this->mNewpassword = '';
}
- function setCookiePassword( $str )
- {
+ function setCookiePassword( $str ) {
$this->loadFromDatabase();
$this->mCookiePassword = md5( $str );
}
- function setNewpassword( $str )
- {
+ function setNewpassword( $str ) {
$this->loadFromDatabase();
$this->mNewpassword = $this->encryptPassword( $str );
}
- function getEmail()
- {
+ function getEmail() {
$this->loadFromDatabase();
return $this->mEmail;
}
- function setEmail( $str )
- {
+ function setEmail( $str ) {
$this->loadFromDatabase();
$this->mEmail = $str;
}
- function getRealName()
- {
+ function getRealName() {
$this->loadFromDatabase();
return $this->mRealName;
}
- function setRealName( $str )
- {
+ function setRealName( $str ) {
$this->loadFromDatabase();
$this->mRealName = $str;
}
- function getOption( $oname )
- {
+ function getOption( $oname ) {
$this->loadFromDatabase();
if ( array_key_exists( $oname, $this->mOptions ) ) {
return $this->mOptions[$oname];
} else {
- return "";
+ return '';
}
}
- function setOption( $oname, $val )
- {
+ function setOption( $oname, $val ) {
$this->loadFromDatabase();
if ( $oname == 'skin' ) {
# Clear cached skin, so the new one displays immediately in Special:Preferences
@@ -412,73 +388,93 @@ class User {
$this->invalidateCache();
}
- function getRights()
- {
+ function getRights() {
$this->loadFromDatabase();
return $this->mRights;
}
- function addRight( $rname )
- {
+ function addRight( $rname ) {
$this->loadFromDatabase();
array_push( $this->mRights, $rname );
$this->invalidateCache();
}
- function isSysop()
- {
+ function isSysop() {
$this->loadFromDatabase();
if ( 0 == $this->mId ) { return false; }
- return in_array( "sysop", $this->mRights );
+ return in_array( 'sysop', $this->mRights );
}
- function isDeveloper()
- {
+ function isDeveloper() {
$this->loadFromDatabase();
if ( 0 == $this->mId ) { return false; }
- return in_array( "developer", $this->mRights );
+ return in_array( 'developer', $this->mRights );
}
- function isBureaucrat()
- {
+ function isBureaucrat() {
$this->loadFromDatabase();
if ( 0 == $this->mId ) { return false; }
- return in_array( "bureaucrat", $this->mRights );
+ return in_array( 'bureaucrat', $this->mRights );
}
- function isBot()
- {
+ function isBot() {
$this->loadFromDatabase();
# Why was this here? I need a UID=0 conversion script [TS]
# if ( 0 == $this->mId ) { return false; }
- return in_array( "bot", $this->mRights );
+ return in_array( 'bot', $this->mRights );
}
- function &getSkin()
- {
+ function &getSkin() {
if ( ! isset( $this->mSkin ) ) {
+ # get all skin names available from SkinNames.php
$skinNames = Skin::getSkinNames();
- $s = $this->getOption( "skin" );
- if ( "" == $s ) { $s = 'standard'; }
-
- if ( !isset( $skinNames[$s] ) ) {
+ # get the user skin
+ $userSkin = $this->getOption( 'skin' );
+ if ( $userSkin == '' ) { $userSkin = 'standard'; }
+
+ if ( !isset( $skinNames[$userSkin] ) ) {
+ # in case the user skin could not be found find a replacement
$fallback = array(
- 'standard' => "Standard",
- 'nostalgia' => "Nostalgia",
- 'cologneblue' => "Cologne Blue");
- if(is_int($s) && isset( $fallback[$s]) ){
- $sn = $fallback[$s];
+ 0 => 'SkinStandard',
+ 1 => 'SkinNostalgia',
+ 2 => 'SkinCologneBlue');
+ # if phptal is enabled we should have monobook skin that superseed
+ # the good old SkinStandard.
+ if ( isset( $skinNames['monobook'] ) ) {
+ $fallback[0] = 'SkinMonoBook';
+ }
+
+ if(is_numeric($userSkin) && isset( $fallback[$userSkin]) ){
+ $sn = $fallback[$userSkin];
} else {
- $sn = "SkinStandard";
+ $sn = 'SkinStandard';
}
} else {
- $sn = "Skin" . $skinNames[$s];
+ # The user skin is available
+ $sn = 'Skin' . $skinNames[$userSkin];
+ }
+
+ # only require the needed stuff
+ switch($sn) {
+ case 'SkinMonoBook':
+ require_once( 'SkinPHPTal.php' );
+ break;
+ case 'SkinStandard':
+ require_once( 'SkinStandard.php' );
+ break;
+ case 'SkinNostalgia':
+ require_once( 'SkinNostalgia.php' );
+ break;
+ case 'SkinCologneBlue':
+ require_once( 'SkinCologneBlue.php' );
+ break;
}
+ # now we can create the skin object
$this->mSkin = new $sn;
}
return $this->mSkin;
@@ -502,18 +498,16 @@ class User {
}
- /* private */ function encodeOptions()
- {
+ /* private */ function encodeOptions() {
$a = array();
foreach ( $this->mOptions as $oname => $oval ) {
- array_push( $a, "{$oname}={$oval}" );
+ array_push( $a, $oname.'='.$oval );
}
$s = implode( "\n", $a );
return wfStrencode( $s );
}
- /* private */ function decodeOptions( $str )
- {
+ /* private */ function decodeOptions( $str ) {
$a = explode( "\n", $str );
foreach ( $a as $s ) {
if ( preg_match( "/^(.[^=]*)=(.*)$/", $s, $m ) ) {
@@ -522,40 +516,37 @@ class User {
}
}
- function setCookies()
- {
+ function setCookies() {
global $wgCookieExpiration, $wgCookiePath, $wgCookieDomain, $wgDBname;
if ( 0 == $this->mId ) return;
$this->loadFromDatabase();
$exp = time() + $wgCookieExpiration;
$_SESSION['wsUserID'] = $this->mId;
- setcookie( "{$wgDBname}UserID", $this->mId, $exp, $wgCookiePath, $wgCookieDomain );
+ setcookie( $wgDBname.'UserID', $this->mId, $exp, $wgCookiePath, $wgCookieDomain );
$_SESSION['wsUserName'] = $this->mName;
- setcookie( "{$wgDBname}UserName", $this->mName, $exp, $wgCookiePath, $wgCookieDomain );
+ setcookie( $wgDBname.'UserName', $this->mName, $exp, $wgCookiePath, $wgCookieDomain );
$_SESSION['wsUserPassword'] = $this->mPassword;
- if ( 1 == $this->getOption( "rememberpassword" ) ) {
- setcookie( "{$wgDBname}Password", $this->mCookiePassword, $exp, $wgCookiePath, $wgCookieDomain );
+ if ( 1 == $this->getOption( 'rememberpassword' ) ) {
+ setcookie( $wgDBname.'Password', $this->mCookiePassword, $exp, $wgCookiePath, $wgCookieDomain );
} else {
- setcookie( "{$wgDBname}Password", "", time() - 3600 );
+ setcookie( $wgDBname.'Password', '', time() - 3600 );
}
}
- function logout()
- {
+ function logout() {
global $wgCookiePath, $wgCookieDomain, $wgDBname;
$this->mId = 0;
$_SESSION['wsUserID'] = 0;
- setcookie( "{$wgDBname}UserID", "", time() - 3600, $wgCookiePath, $wgCookieDomain );
- setcookie( "{$wgDBname}Password", "", time() - 3600, $wgCookiePath, $wgCookieDomain );
+ setcookie( $wgDBname.'UserID', '', time() - 3600, $wgCookiePath, $wgCookieDomain );
+ setcookie( $wgDBname.'Password', '', time() - 3600, $wgCookiePath, $wgCookieDomain );
}
- function saveSettings()
- {
+ function saveSettings() {
global $wgMemc, $wgDBname;
if ( ! $this->mNewtalk ) {
@@ -586,11 +577,10 @@ class User {
# Checks if a user with the given name exists
#
- function idForName()
- {
+ function idForName() {
$gotid = 0;
$s = trim( $this->mName );
- if ( 0 == strcmp( "", $s ) ) return 0;
+ if ( 0 == strcmp( '', $s ) ) return 0;
$sql = "SELECT user_id FROM user WHERE user_name='" .
wfStrencode( $s ) . "'";
@@ -598,15 +588,14 @@ class User {
if ( 0 == wfNumRows( $res ) ) { return 0; }
$s = wfFetchObject( $res );
- if ( "" == $s ) return 0;
+ if ( '' == $s ) return 0;
$gotid = $s->user_id;
wfFreeResult( $res );
return $gotid;
}
- function addToDatabase()
- {
+ function addToDatabase() {
$sql = "INSERT INTO user (user_name,user_password,user_newpassword," .
"user_email, user_real_name, user_rights, user_options) " .
" VALUES ('" . wfStrencode( $this->mName ) . "', '" .
@@ -614,7 +603,7 @@ class User {
wfStrencode( $this->mNewpassword ) . "', '" .
wfStrencode( $this->mEmail ) . "', '" .
wfStrencode( $this->mRealName ) . "', '" .
- wfStrencode( implode( ",", $this->mRights ) ) . "', '" .
+ wfStrencode( implode( ',', $this->mRights ) ) . "', '" .
$this->encodeOptions() . "')";
wfQuery( $sql, DB_WRITE, "User::addToDatabase" );
$this->mId = $this->idForName();
@@ -625,14 +614,14 @@ class User {
global $wgIP;
# If the (non-anonymous) user is blocked, this function will block any IP address
# that they successfully log on from.
- $fname = "User::spreadBlock";
+ $fname = 'User::spreadBlock';
wfDebug( "User:spreadBlock()\n" );
if ( $this->mId == 0 ) {
return;
}
- $userblock = Block::newFromDB( "", $this->mId );
+ $userblock = Block::newFromDB( '', $this->mId );
if ( !$userblock->isValid() ) {
return;
}
@@ -646,11 +635,11 @@ class User {
}
# Make a new block object with the desired properties
- wfDebug( "Autoblocking {$this->mUserName}@{$wgIP}\n" );
+ wfDebug( "Autoblocking {$this->mName}@{$wgIP}\n" );
$ipblock->mAddress = $wgIP;
$ipblock->mUser = 0;
$ipblock->mBy = $userblock->mBy;
- $ipblock->mReason = wfMsg( "autoblocker", $this->getName(), $userblock->mReason );
+ $ipblock->mReason = wfMsg( 'autoblocker', $this->getName(), $userblock->mReason );
$ipblock->mTimestamp = wfTimestampNow();
$ipblock->mAuto = 1;
# If the user is already blocked with an expiry date, we don't
@@ -675,17 +664,13 @@ class User {
// stubthreshold is only included below for completeness,
// it will always be 0 when this function is called by parsercache.
- $confstr = $this->getOption( "quickbar" );
- $confstr .= "!" . $this->getOption( "underline" );
- $confstr .= "!" . $this->getOption( "hover" );
- $confstr .= "!" . $this->getOption( "skin" );
- $confstr .= "!" . $this->getOption( "math" );
- $confstr .= "!" . $this->getOption( "highlightbroken" );
- $confstr .= "!" . $this->getOption( "stubthreshold" );
- $confstr .= "!" . $this->getOption( "editsection" );
- $confstr .= "!" . $this->getOption( "editsectiononrightclick" );
- $confstr .= "!" . $this->getOption( "showtoc" );
- $confstr .= "!" . $this->getOption( "date" );
+ $confstr = $this->getOption( 'math' );
+ $confstr .= '!' . $this->getOption( 'highlightbroken' );
+ $confstr .= '!' . $this->getOption( 'stubthreshold' );
+ $confstr .= '!' . $this->getOption( 'editsection' );
+ $confstr .= '!' . $this->getOption( 'editsectiononrightclick' );
+ $confstr .= '!' . $this->getOption( 'showtoc' );
+ $confstr .= '!' . $this->getOption( 'date' );
if(strlen($confstr) > 32)
$hash = md5($confstr);
@@ -694,14 +679,13 @@ class User {
return $hash;
}
- function isAllowedToCreateAccount()
- {
+ function isAllowedToCreateAccount() {
global $wgWhitelistAccount;
$allowed = false;
if (!$wgWhitelistAccount) { return 1; }; // default behaviour
foreach ($wgWhitelistAccount as $right => $ok) {
- $userHasRight = (!strcmp($right, "user") || in_array($right, $this->getRights()));
+ $userHasRight = (!strcmp($right, 'user') || in_array($right, $this->getRights()));
$allowed |= ($ok && $userHasRight);
}
return $allowed;
@@ -717,6 +701,34 @@ class User {
function getUserPage() {
return Title::makeTitle( NS_USER, $this->mName );
}
+
+ /* static */ function getMaxID() {
+ $row = wfGetArray( 'user', array('max(user_id) as m'), false );
+ return $row->m;
+ }
+
+ function isNewbie() {
+ return $this->mId > User::getMaxID() * 0.99 && !$this->isSysop() && !$this->isBot() || $this->getID() == 0;
+ }
+
+ # Check to see if the given clear-text password is one of the accepted passwords
+ function checkPassword( $password ) {
+ $this->loadFromDatabase();
+ $ep = $this->encryptPassword( $password );
+ if ( 0 == strcmp( $ep, $this->mPassword ) ) {
+ return true;
+ } elseif ( 0 == strcmp( $ep, $this->mNewpassword ) ) {
+ return true;
+ } elseif ( function_exists( 'iconv' ) ) {
+ # Some wikis were converted from ISO 8859-1 to UTF-8, the passwords can't be converted
+ # Check for this with iconv
+ $cp1252hash = $this->encryptPassword( iconv( 'UTF-8', 'WINDOWS-1252', $password ) );
+ if ( 0 == strcmp( $cp1252hash, $this->mPassword ) ) {
+ return true;
+ }
+ }
+ return false;
+ }
}
?>
diff --git a/includes/UserMailer.php b/includes/UserMailer.php
index 6704a82ccbdc..abf6c4acf1af 100644
--- a/includes/UserMailer.php
+++ b/includes/UserMailer.php
@@ -48,7 +48,6 @@ function userMailer( $to, $from, $subject, $body )
"Content-type: text/plain; charset={$wgOutputEncoding}\r\n" .
"Content-transfer-encoding: 8bit\r\n" .
"From: {$from}\r\n" .
- "Reply-To: {$from}\r\n" .
"X-Mailer: MediaWiki interuser e-mailer";
$wgErrorString = "";
diff --git a/includes/UserTalkUpdate.php b/includes/UserTalkUpdate.php
index 306cd3c80d81..66ea7a9aee25 100644
--- a/includes/UserTalkUpdate.php
+++ b/includes/UserTalkUpdate.php
@@ -33,6 +33,7 @@ class UserTalkUpdate {
} else {
# Not ours. If writing, mark it as modified.
+ $sql = false;
if ( 1 == $this->mAction ) {
$user = new User();
$user->setID(User::idFromName($this->mTitle));
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 @@
<?php
+# $Id$
# See deferred.doc
-
class ViewCountUpdate {
var $mPageID;
@@ -12,13 +12,12 @@ class ViewCountUpdate {
function doUpdate()
{
- global $wgDisableCounters;
+ global $wgDisableCounters, $wgIsMySQL;
if ( $wgDisableCounters ) { return; }
-
- $sql = "UPDATE LOW_PRIORITY cur SET cur_counter=(1+cur_counter)," .
+ $lowpri=$wgIsMySQL?"LOW_PRIORITY":"";
+ $sql = "UPDATE $lowpri cur SET cur_counter=(1+cur_counter)," .
"cur_timestamp=cur_timestamp WHERE cur_id={$this->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/includes/memcached-client.php b/includes/memcached-client.php
index 3f0eb44f9e0f..17d9ecbecd3d 100644
--- a/includes/memcached-client.php
+++ b/includes/memcached-client.php
@@ -667,7 +667,7 @@ class memcached
function _dead_sock ($sock)
{
$host = array_search($sock, $this->_cache_sock);
- list ($ip, $port) = explode(":", $host);
+ @list ($ip, $port) = explode(":", $host);
$this->_host_dead[$ip] = time() + 30 + intval(rand(0, 10));
$this->_host_dead[$host] = $this->_host_dead[$ip];
unset($this->_cache_sock[$host]);
@@ -737,13 +737,7 @@ class memcached
*/
function _hashfunc ($key)
{
- $hash = 0;
- for ($i=0; $i<strlen($key); $i++)
- {
- $hash = $hash*33 + ord($key[$i]);
- }
-
- return $hash;
+ return crc32($key);
}
// }}}
diff --git a/index.php b/index.php
index b52395b056c5..18488e934d55 100644
--- a/index.php
+++ b/index.php
@@ -48,7 +48,7 @@ wfProfileOut( "main-misc-setup" );
# If the user is not logged in, the Namespace:title of the article must be in
# the Read array in order for the user to see it. (We have to check here to
# catch special pages etc. We check again in Article::view())
-if ( !$wgTitle->userCanRead() ) {
+if ( !is_null( $wgTitle ) && !$wgTitle->userCanRead() ) {
$wgOut->loginToUse();
$wgOut->output();
exit;
@@ -56,7 +56,9 @@ if ( !$wgTitle->userCanRead() ) {
if ( $search = $wgRequest->getText( 'search' ) ) {
$wgTitle = Title::makeTitle( NS_SPECIAL, "Search" );
- if( $wgRequest->getVal( 'fulltext' ) ) {
+ if( $wgRequest->getVal( 'fulltext' ) ||
+ !is_null( $wgRequest->getVal( 'offset' ) ) ||
+ !is_null ($wgRequest->getVal( 'searchx' ) ) ) {
wfSearch( $search );
} else {
wfGo( $search );
@@ -67,16 +69,21 @@ if ( $search = $wgRequest->getText( 'search' ) ) {
} else if ( $wgTitle->getInterwiki() != "" ) {
$url = $wgTitle->getFullURL();
# Check for a redirect loop
- if ( !preg_match( "/^" . preg_quote( $wgServer ) . "/", $url ) && $wgTitle->isLocal() ) {
+ if ( !preg_match( "/^" . preg_quote( $wgServer, "/" ) . "/", $url ) && $wgTitle->isLocal() ) {
$wgOut->redirect( $url );
} else {
$wgTitle = Title::newFromText( wfMsg( "badtitle" ) );
$wgOut->errorpage( "badtitle", "badtitletext" );
}
-} else if ( ( $action == "view" ) && $wgTitle->getPrefixedDBKey() != $title ) {
+} else if ( ( $action == "view" ) && $wgTitle->getPrefixedDBKey() != $title &&
+ !count( array_diff( array_keys( $_GET ), array( 'action', 'title' ) ) ) )
+{
/* 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() ) {
@@ -105,6 +112,7 @@ if ( $search = $wgRequest->getText( 'search' ) ) {
case "rollback":
case "protect":
case "unprotect":
+ case "info":
$wgArticle->$action();
break;
case "print":
@@ -126,6 +134,10 @@ if ( $search = $wgRequest->getText( 'search' ) ) {
wfCreativeCommonsRdf( $wgArticle );
}
break;
+ case "credits":
+ require_once( "includes/Credits.php" );
+ showCreditsPage( $wgArticle );
+ break;
case "edit":
case "submit":
if( !$wgCommandLineMode && !$wgRequest->checkSessionCookie() ) {
@@ -151,6 +163,7 @@ if ( $search = $wgRequest->getText( 'search' ) ) {
case "purge":
wfPurgeSquidServers(array($wgTitle->getInternalURL()));
$wgOut->setSquidMaxage( $wgSquidMaxage );
+ $wgTitle->invalidateCache();
$wgArticle->view();
break;
default:
@@ -161,7 +174,11 @@ if ( $search = $wgRequest->getText( 'search' ) ) {
$wgOut->output();
-foreach ( $wgDeferredUpdateList as $up ) { $up->doUpdate(); }
+foreach ( $wgDeferredUpdateList as $up ) {
+ wfQuery("BEGIN", DB_WRITE);
+ $up->doUpdate();
+ wfQuery("COMMIT", DB_WRITE);
+}
logProfilingData();
wfDebug( "Request ended normally\n" );
?>
diff --git a/install-utils.inc b/install-utils.inc
index 73f4e38171a6..040c34dc8191 100644
--- a/install-utils.inc
+++ b/install-utils.inc
@@ -55,14 +55,18 @@ function copydirectory( $source, $dest ) {
}
}
-function readconsole() {
- $fp = fopen( "php://stdin", "r" );
- $resp = trim( fgets( $fp, 1024 ) );
- fclose( $fp );
- return $resp;
+function readconsole( $prompt = "" ) {
+ if ( function_exists( "readline" ) ) {
+ return readline( $prompt );
+ } else {
+ print $prompt;
+ $fp = fopen( "php://stdin", "r" );
+ $resp = trim( fgets( $fp, 1024 ) );
+ fclose( $fp );
+ return $resp;
+ }
}
-
function replacevars( $ins ) {
$varnames = array(
"wgDBserver", "wgDBname", "wgDBintlname", "wgDBuser",
diff --git a/install.php b/install.php
deleted file mode 100644
index dec2020f5e70..000000000000
--- a/install.php
+++ /dev/null
@@ -1,272 +0,0 @@
-<?php
-
-die("obsolete; remove this file befor 1.3.0 release\n");
-
-# Install software and create new empty database.
-#
-
-include( "./install-utils.inc" );
-install_version_checks();
-
-if ( ! ( is_readable( "./LocalSettings.php" )
- && is_readable( "./AdminSettings.php" ) ) ) {
- print "You must first create the files LocalSettings.php\n" .
- "and AdminSettings.php based on the samples in the top\n" .
- "source directory before running this install script.\n";
- exit();
-}
-
-$DP = "./includes";
-require_once( "./LocalSettings.php" );
-require_once( "./AdminSettings.php" );
-require_once( "./maintenance/InitialiseMessages.inc" );
-
-if( $wgSitename == "MediaWiki" ) {
- die( "You must set the site name in \$wgSitename before installation.\n\n" );
-}
-
-if ( $wgUseTeX && ( ! is_executable( "./math/texvc" ) ) ) {
- print "To use math functions, you must first compile texvc by\n" .
- "running \"make\" in the math directory.\n";
- exit();
-}
-if ( is_file( "{$IP}/Version.php" ) ) {
- print "There appears to be an installation of the software\n" .
- "already present on \"{$IP}\". You may want to run the update\n" .
- "script instead. If you continue with this installation script,\n" .
- "that software and all of its data will be overwritten.\n" .
- "Are you sure you want to do this? (yes/no) ";
-
- $response = readconsole();
- if ( ! ( "Y" == $response{0} || "y" == $response{0} ) ) { exit(); }
-}
-
-#
-# Make the necessary directories
-#
-$dirs = array( $IP, $wgUploadDirectory, $wgStyleSheetDirectory, $wgTmpDirectory );
-foreach ( $dirs as $d ) { makedirectory( $d ); }
-
-#
-# Copy files into installation directories
-#
-print "Copying files...\n";
-
-copyfile( ".", "LocalSettings.php", $IP );
-copyfile( ".", "Version.php", $IP );
-copyfile( ".", "index.php", $IP );
-copyfile( ".", "redirect.php", $IP );
-
-# compatibility with older versions, can be removed in a year or so
-# (written in Feb 2004)
-copyfile( ".", "wiki.phtml", $IP );
-copyfile( ".", "redirect.phtml", $IP );
-
-copydirectory( "./includes", $IP );
-copydirectory( "./stylesheets", $wgStyleSheetDirectory );
-
-copyfile( "./images", "wiki.png", $wgUploadDirectory );
-copyfile( "./images", "button_bold.png", $wgUploadDirectory );
-copyfile( "./images", "button_extlink.png", $wgUploadDirectory );
-copyfile( "./images", "button_headline.png", $wgUploadDirectory );
-copyfile( "./images", "button_hr.png", $wgUploadDirectory );
-copyfile( "./images", "button_image.png", $wgUploadDirectory );
-copyfile( "./images", "button_italic.png", $wgUploadDirectory );
-copyfile( "./images", "button_link.png", $wgUploadDirectory );
-copyfile( "./images", "button_math.png", $wgUploadDirectory );
-copyfile( "./images", "button_media.png", $wgUploadDirectory );
-copyfile( "./images", "button_nowiki.png", $wgUploadDirectory );
-copyfile( "./images", "button_sig.png", $wgUploadDirectory );
-copyfile( "./images", "button_template.png", $wgUploadDirectory );
-copyfile( "./images", "magnify-clip.png", $wgUploadDirectory );
-copyfile( "./images", "Arr_.png", $wgUploadDirectory );
-copyfile( "./images", "Arr_r.png", $wgUploadDirectory );
-copyfile( "./images", "Arr_d.png", $wgUploadDirectory );
-copyfile( "./images", "Arr_l.png", $wgUploadDirectory );
-
-copyfile( "./languages", "Language.php", $IP );
-copyfile( "./languages", "LanguageUtf8.php", $IP );
-copyfile( "./languages", "Language" . ucfirst( $wgLanguageCode ) . ".php", $IP );
-
-if ( $wgDebugLogFile ) {
- $fp = fopen( $wgDebugLogFile, "w" );
- if ( false === $fp ) {
- print "Could not create log file \"{$wgDebugLogFile}\".\n";
- exit();
- }
- $d = date( "Y-m-d H:i:s" );
- fwrite( $fp, "Wiki debug log file created {$d}\n\n" );
- fclose( $fp );
-}
-
-if ( $wgUseTeX ) {
- makedirectory( "{$IP}/math" );
- makedirectory( $wgMathDirectory );
- copyfile( "./math", "texvc", "{$IP}/math", 0775 );
- copyfile( "./math", "texvc_test", "{$IP}/math", 0775 );
- copyfile( "./math", "texvc_tex", "{$IP}/math", 0775 );
-}
-
-copyfile( ".", "Version.php", $IP );
-
-#
-# Make and initialize database
-#
-print "\n* * *\nWarning! This script will completely erase any\n" .
- "existing database \"{$wgDBname}\" and all its contents.\n" .
- "Are you sure you want to do this? (yes/no) ";
-
-$response = readconsole();
-if ( ! ( "Y" == $response{0} || "y" == $response{0} ) ) { exit(); }
-
-print "Please enter your root password for the database server now.\n";
-print "It is used to do the following:\n";
-print "1) Create the database\n";
-print "2) Create the users specified in AdminSettings.php and LocalSettings.php\n\n";
-print "You do not need to create any user accounts yourself!\n\n";
-print "MySQL root password (typing will be visible): ";
-$rootpw=readconsole();
-
-# Include rest of code to get things like internationalized messages.
-#
-$wgUseDatabaseMessages = false; # no DB yet
-
-require_once( "{$IP}/Setup.php" );
-$wgTitle = Title::newFromText( "Installation script" );
-
-$wgDatabase = Database::newFromParams( $wgDBserver, "root", $rootpw, "", 1 );
-if ( !$wgDatabase->isOpen() ) {
- print "Could not connect to database on \"{$wgDBserver}\" as root.\n";
- exit();
-}
-
-# Now do the actual database creation
-#
-print "Creating database...\n";
-dbsource( "./maintenance/database.sql", $wgDatabase );
-
-$wgDatabase->selectDB( $wgDBname );
-dbsource( "./maintenance/tables.sql", $wgDatabase );
-dbsource( "./maintenance/users.sql", $wgDatabase );
-dbsource( "./maintenance/initialdata.sql", $wgDatabase );
-dbsource( "./maintenance/interwiki.sql", $wgDatabase );
-
-populatedata(); # Needs internationalized messages
-
-print "Adding indexes...\n";
-dbsource( "./maintenance/indexes.sql", $wgDatabase );
-
-print "Done.\nBrowse \"{$wgServer}{$wgScript}\" to test.\n";
-exit();
-
-#
-# Functions used above:
-#
-function makedirectory( $d ) {
- global $wgInstallOwner, $wgInstallGroup;
-
- if ( is_dir( $d ) ) {
- print "Directory \"{$d}\" exists.\n";
- } else {
- if ( mkdir( $d, 0777 ) ) {
- if ( isset( $wgInstallOwner ) ) { chown( $d, $wgInstallOwner ); }
- if ( isset( $wgInstallGroup ) ) { chgrp( $d, $wgInstallGroup ); }
- print "Directory \"{$d}\" created.\n";
- } else {
- print "Could not create directory \"{$d}\".\n";
- exit();
- }
- }
-}
-
-
-function populatedata() {
- global $wgDBadminpassword, $wgDatabase;
- $fname = "Installation script: populatedata()";
-
- $sql = "DELETE FROM site_stats";
- $wgDatabase->query( $sql, $fname );
-
- $sql = "INSERT INTO site_stats (ss_row_id,ss_total_views," .
- "ss_total_edits,ss_good_articles) VALUES (1,0,0,0)";
- $wgDatabase->query( $sql, $fname );
-
- $sql = "DELETE FROM user";
- $wgDatabase->query( $sql, $fname );
-
- print "Do you want to create a sysop account? A sysop can protect,\n";
- print "delete and undelete pages and ban users. Recomended. [Y/n] ";
- $response = readconsole();
- if(strtolower($response)!="n") {
- print "Enter the username [Sysop]: ";
- $sysop_user=readconsole();
- if(!$sysop_user) { $sysop_user="Sysop"; }
- while(!$sysop_password) {
- print "Enter the password: ";
- $sysop_password=readconsole();
- }
- $u = User::newFromName( $sysop_user );
- if ( 0 == $u->idForName() ) {
- $u->addToDatabase();
- $u->setPassword( $sysop_password );
- $u->addRight( "sysop" );
- $u->saveSettings();
- } else {
- print "Could not create user - already exists!\n";
- }
- }
- print "Do you want to create a sysop+developer account? A developer\n";
- print "can switch the database to read-only mode and run any type of\n";
- print "query through a web interface. [Y/n] ";
- $response=readconsole();
- if(strtolower($response)!="n") {
- print "Enter the username [Developer]: ";
- $developer_user=readconsole();
- if(!$developer_user) { $developer_user="Developer"; }
- while (!$developer_password) {
- print "Enter the password: ";
- $developer_password=readconsole();
- }
- $u = User::newFromName( $developer_user );
- if ( 0 == $u->idForName() ) {
- $u->addToDatabase();
- $u->setPassword( $developer_password );
- $u->addRight( "sysop" );
- $u->addRight( "developer" );
- $u->saveSettings();
- } else {
- print "Could not create user - already exists!\n";
- }
- }
-
- $wns = Namespace::getWikipedia();
- $ulp = addslashes( wfMsgNoDB( "uploadlogpage" ) );
- $dlp = addslashes( wfMsgNoDB( "dellogpage" ) );
-
- $sql = "DELETE FROM cur";
- $wgDatabase->query( $sql, $fname );
-
- $now = wfTimestampNow();
- $won = wfInvertTimestamp( $now );
-
- $sql = "INSERT INTO cur (cur_namespace,cur_title,cur_text," .
- "cur_restrictions,cur_timestamp,inverse_timestamp,cur_touched) VALUES ({$wns},'{$ulp}','" .
- wfStrencode( wfMsg( "uploadlogpagetext" ) ) . "','sysop','$now','$won','$now')";
- $wgDatabase->query( $sql, $fname );
-
- $sql = "INSERT INTO cur (cur_namespace,cur_title,cur_text," .
- "cur_restrictions,cur_timestamp,inverse_timestamp,cur_touched) VALUES ({$wns},'{$dlp}','" .
- wfStrencode( wfMsg( "dellogpagetext" ) ) . "','sysop','$now','$won','$now')";
- $wgDatabase->query( $sql, $fname );
-
- $titleobj = Title::newFromText( wfMsgNoDB( "mainpage" ) );
- $title = $titleobj->getDBkey();
- $sql = "INSERT INTO cur (cur_namespace,cur_title,cur_text,cur_timestamp,inverse_timestamp,cur_touched) " .
- "VALUES (0,'$title','" .
- wfStrencode( wfMsg( "mainpagetext" ) ) . "','$now','$won','$now')";
- $wgDatabase->query( $sql, $fname );
-
- initialiseMessages();
-}
-
-?>
diff --git a/irc/rc2irc.php b/irc/rc2irc.php
index 811a01f4e16e..2422687f1b5a 100644
--- a/irc/rc2irc.php
+++ b/irc/rc2irc.php
@@ -2,7 +2,7 @@
$ircNick = "wikipedia_rc";
$rooms = array("en" => 1, "fr" => 1, "de" => 1);
-$ircServer = "irc.freenode.net"
+$ircServer = "irc.freenode.net";
$ircSockName = "tcp://$ircServer";
$ircPort = 6667;
$minDelay = 0.5;
diff --git a/irc/rcdumper.php b/irc/rcdumper.php
index 11555a2cf4cb..fe08be4752a0 100644
--- a/irc/rcdumper.php
+++ b/irc/rcdumper.php
@@ -1,38 +1,34 @@
<?php
+/*
+Example command-line:
+ php rcdumper.php | irc -d -c \#channel-to-join nick-of-bot some.irc.server
+where irc is the name of the ircII executable.
+The name of the the IRC should match $ircServer below.
+*/
+
+$ircServer = "irc.freenode.net";
+
+# Set the below if this is running on a non-Wikimedia site:
+#$serverName="your.site.here";
+
+
+ini_set( "display_errors", 1 );
$wgCommandLineMode = true;
$fmB = chr(2);
$fmU = chr(31);
-$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-if ( $argv[1] ) {
- $lang = $argv[1];
- putenv( "wikilang=$lang");
- $settingsFile = "/apache/htdocs/{$argv[1]}/w/LocalSettings.php";
- $newpath = "/apache/common/php$sep";
-} else {
- $settingsFile = "../LocalSettings.php";
- $newpath = "";
-}
+require_once("../maintenance/commandLine.inc" );
-if ( $argv[2] ) {
- $patterns = explode( ",", $argv[2]);
+if ($wgWikiFarm) {
+ $serverName="$lang.wikipedia.org";
+ $newPageURLFirstPart="http://$serverName/wiki/";
+ $URLFirstPart="http://$serverName/w/wiki.phtml?title=";
} else {
- $patterns = false;
-}
-
-if ( ! is_readable( $settingsFile ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "must exist in the source directory.\n";
- exit();
+ $newPageURLFirstPart="http://$serverName$wgScript/";
+ $URLFirstPart="http://$serverName$wgScript?title=";
}
-ini_set( "include_path", "$newpath$IP$sep$include_path" );
-
-$wgCommandLineMode = true;
-$DP = "../includes";
-require_once( $settingsFile );
-require_once( "Setup.php" );
$wgTitle = Title::newFromText( "RC dumper" );
$wgCommandLineMode = true;
set_time_limit(0);
@@ -42,11 +38,15 @@ sleep(30);
$res = wfQuery( "SELECT rc_timestamp FROM recentchanges ORDER BY rc_timestamp DESC LIMIT 1", DB_READ );
$row = wfFetchObject( $res );
$oldTimestamp = $row->rc_timestamp;
+$serverCount = 0;
while (1) {
$res = wfQuery( "SELECT * FROM recentchanges WHERE rc_timestamp>'$oldTimestamp' ORDER BY rc_timestamp", DB_READ );
$rowIndex = 0;
while ( $row = wfFetchObject( $res ) ) {
+ if ( ++$serverCount % 20 == 0 ) {
+ print "/server $ircServer\n";
+ }
$ns = $wgLang->getNsText( $row->rc_namespace ) ;
if ( $ns ) {
$title = "$ns:{$row->rc_title}";
@@ -66,30 +66,17 @@ while (1) {
$lastid = IntVal($row->rc_last_oldid);
$flag = ($row->rc_minor ? "M" : "") . ($row->rc_new ? "N" : "");
if ( $row->rc_new ) {
- $url = "http://$lang.wikipedia.org/wiki/" . urlencode($title);
+ $url = $newPageURLFirstPart . urlencode($title);
} else {
- $url = "http://$lang.wikipedia.org/w/wiki.phtml?title=" . urlencode($title) .
+ $url = $URLFirstPart . urlencode($title) .
"&diff=0&oldid=$lastid";
}
- $boldTitle = $fmB . str_replace("_", " ", $title) . $fmB;
-
- if ( $patterns ) {
- foreach ( $patterns as $pattern ) {
- if ( preg_match( $pattern, $comment ) ) {
- print chr(7);
- break;
- }
- }
- }
- if ( $comment !== "" ) {
- $comment = "($comment)";
- }
- $fullString = "$boldTitle $flag $url $user $comment\n";
+ $title = str_replace("_", " ", $title);
+ # see http://www.irssi.org/?page=docs&doc=formats for some colour codes. prefix is \003,
+ # no colour (\003) switches back to the term default
+ $fullString = "\00303$title\0037 $flag\00310 $url \0037*\003 $user \0037*\003 $comment\n";
- if ( $fullString{0} == "/" ) {
- $fullString = " $fullString";
- }
print( $fullString );
$oldTimestamp = $row->rc_timestamp;
sleep(2);
diff --git a/languages/Language.php b/languages/Language.php
index 82adf4431c50..e686c4e74845 100644
--- a/languages/Language.php
+++ b/languages/Language.php
@@ -1,4 +1,6 @@
<?php
+if( defined( "MEDIAWIKI" ) ) {
+
#
# In general you should not make customizations in these language files
# directly, but should use the MediaWiki: special namespace to customize
@@ -21,51 +23,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' => 'Classic',
+ 'nostalgia' => 'Nostalgia',
+ 'cologneblue' => 'Cologne Blue',
+ 'davinci' => 'DaVinci',
+ 'mono' => 'Mono',
+ 'monobook' => 'MonoBook',
+ 'myskin' => 'MySkin'
);
define( "MW_MATH_PNG", 0 );
@@ -76,42 +79,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 <a href=\"\" class=\"new\">like
-this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
- "justify" => "Justify paragraphs",
- "hideminor" => "Hide minor edits in recent changes",
- "usenewrc" => "Enhanced recent changes (not for all browsers)",
- "numberheadings" => "Auto-number headings",
- "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<br /> on section titles (JavaScript)",
- "showtoc"=>"Show table of contents<br />(for articles with more than 3 headings)",
- "rememberpassword" => "Remember password across sessions",
- "editwidth" => "Edit box has full width",
- "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 <a href="" class="new">like
+this</a> (alternative: like this<a href="" class="internal">?</a>).',
+ 'justify' => 'Justify paragraphs',
+ 'hideminor' => 'Hide minor edits in recent changes',
+ 'usenewrc' => 'Enhanced recent changes (not for all browsers)',
+ 'numberheadings' => 'Auto-number headings',
+ '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<br /> on section titles (JavaScript)',
+ 'showtoc'=>'Show table of contents<br />(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,264 +124,68 @@ this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
"Amazon.com" => "http://www.amazon.com/exec/obidos/ISBN=$1"
);
-/* The following list is in native languages, not in English */
-/* private */ $wgLanguageNames = array(
- "aa" => "Afar", # Afar
- "ab" => "Abkhazian", # Abkhazian - FIXME
- "af" => "Afrikaans", # Afrikaans
- "ak" => "Akana", # Akan
- "an" => "Aragon&eacute;s", # Aragonese
- "als" => "Els&auml;ssisch", # Alsatian
- "am" => "&#4768;&#4635;&#4653;&#4763;", # Amharic
- "ar" => "&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;", # Arabic
- "arc" => "&#1813;&#1829;&#1810;&#1834;&#1848;&#1821;&#1819;", # Aramaic
- "as" => "&#2437;&#2488;&#2478;&#2496;&#2527;&#2494;", # Assamese
- "ast" => "Asturleon&eacute;s", # Asturian
- "av" => "&#1040;&#1074;&#1072;&#1088;", # Avar
- "ay" => "Aymar", # Aymara
- "az" => "Az&#601;rbaycan", # Azerbaijani
- "ba" => "&#1041;&#1072;&#1096;&#1185;&#1086;&#1088;&#1090;", # Bashkir
- "be" => "&#1041;&#1077;&#1083;&#1072;&#1088;&#1091;&#1089;&#1082;&#1072;&#1103;", # Belarusian ''or'' Byelarussian
- "bg" => "&#1041;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080;", # Bulgarian
- "bh" => "&#2349;&#2379;&#2332;&#2346;&#2369;&#2352;&#2368;", # Bihara
- "bi" => "Bislama", # Bislama
- "bn" => "&#2476;&#2494;&#2434;&#2482;&#2494; - (Bangla)", # Bengali
- "bm" => "Bambara",
- "bo" => "Bod skad", # Tibetan
- "br" => "Brezhoneg", # Breton
- "bs" => "Bosanski", # Bosnian
- "ca" => "Catal&agrave;", # Catalan
- "ce" => "&#1053;&#1086;&#1093;&#1095;&#1080;&#1081;&#1085;", # Chechen
- "ch" => "Chamoru", # Chamorro
- "chy" => "Tsets&ecirc;hest&acirc;hese", # Cheyenne
- "co" => "Corsu", # Corsican
- "cr" => "Nehiyaw", # Cree
- "cs" => "&#268;esky", # Czech
- "csb" => "Kasz&euml;bscziej", # Cassubian - FIXME
- "cv" => "&#1063;&#1233;&#1074;&#1072;&#1096; - (&#264;&#259;va&#349;)", # 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" => "&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940;", # Greek
- "en" => "English", # English
- "eo" => "Esperanto", # Esperanto
- "es" => "Espa&ntilde;ol", # Spanish
- "et" => "Eesti", # Estonian
- "eu" => "Euskara", # Basque
- "fa" => "&#1601;&#1575;&#1585;&#1587;&#1740;", # Persian
- "ff" => "Fulfulde", # Fulfulde
- "fi" => "Suomi", # Finnish
- "fj" => "Na Vosa Vakaviti", # Fijian
- "fo" => "F&oslash;royskt", # Faroese
- "fr" => "Fran&ccedil;ais", # French
- "fy" => "Frysk", # Frisian
- "ga" => "Gaeilge", # Irish
- "gd" => "G&agrave;idhlig", # Scots Gaelic
- "gl" => "Galego", # Gallegan
- "gn" => "Ava&ntilde;e'&#7869;", # Guarani
- "gu" => "&#2711;&#2753;&#2716;&#2736;&#2750;&#2724;&#2752;", # Gujarati
- "gv" => "Gaelg", # Manx
- "ha" => "&#1607;&#1614;&#1608;&#1615;&#1587;&#1614;", # Hausa
- "haw" => "Hawai`i", # Hawaiian
- "he" => "&#1506;&#1489;&#1512;&#1497;&#1514;", # Hebrew
- "hi" => "&#2361;&#2367;&#2344;&#2381;&#2342;&#2368;", # Hindi
- "ho" => "Hiri Motu",
- "hr" => "Hrvatski", # Croatian
- "ht" => "Haitian", # Haitian (FIXME!)
- "hu" => "Magyar", # Hungarian
- "hy" => "&#1344;&#1377;&#1397;&#1381;&#1408;&#1381;&#1398;", # 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&ntilde;upiak", # Inupiak
- "io" => "Ido", # Ido
- "is" => "&Iacute;slensk", # Icelandic
- "it" => "Italiano", # Italian
- "iu" => "&#5123;&#5316;&#5251;&#5198;&#5200;&#5222;", # Inuktitut
- "ja" => "&#26085;&#26412;&#35486;", # Japanese
- "jv" => "Bahasa Jawa", # Javanese
- "ka" => "&#4325;&#4304;&#4320;&#4311;&#4323;&#4314;&#4312;", # Georgian
- "kg" => "Kongo", # Kongo (FIXME!)
- "ki" => "Kikuyu", # Kikuyu (FIXME!)
- "kj" => "Kuanyama", # Kuanyama (FIXME!)
- "kk" => "&#1179;&#1072;&#1079;&#1072;&#1179;&#1096;&#1072;", # Kazakh
- "kl" => "Kalaallisut", # Greenlandic
- "km" => "&#6039;&#6070;&#6047;&#6070;&#6017;&#6098;&#6040;&#6082;&#6042;", # Cambodian
- "kn" => "&#3221;&#3240;&#3277;&#3240;&#3233;", # Kannada
- "ko" => "&#54620;&#44397;&#50612;", # Korean
- "kr" => "Kanuri",
- "ks" => "&#2325;&#2358;&#2381;&#2350;&#2368;&#2352;&#2368; - (&#1603;&#1588;&#1605;&#1610;&#1585;&#1610;)", # Kashmiri
- "ku" => "Kurd&icirc;", # Kurdish
- "kv" => "Komi",
- "kw" => "Kernewek", # Cornish
- "ky" => "K&#305;rg&#305;zca", # Kirghiz
- "la" => "Latina", # Latin
- "lb" => "L&euml;tzebuergesch", # Luxemburguish
- "lg" => "Luganda", # Ganda
- "li" => "Limburgs", # Limburgian
- "ln" => "Lingala", # Lingala
- "lo" => "Pha xa lao", # Laotian
- "lt" => "Lietuvi&#371;", # Lithuanian
- "lv" => "Latvie&scaron;u", # Latvian
- "mg" => "Malagasy", # Malagasy - FIXME
- "mh" => "Ebon", # Marshallese
- "mi" => "M&#257;ori", # Maori
- "mk" => "&#1052;&#1072;&#1082;&#1077;&#1076;&#1086;&#1085;&#1089;&#1082;&#1080;", # Macedonian
- "ml" => "&#3374;&#3378;&#3375;&#3390;&#3379;&#3330;", # Malayalam
- "mn" => "&#1052;&#1086;&#1085;&#1075;&#1086;&#1083;", # Mongoloian
- "mo" => "Moldoveana", # Moldovan
- "mr" => "&#2350;&#2352;&#2366;&#2336;&#2368;", # Marathi
- "ms" => "Bahasa Melayu", # Malay
- "mt" => "bil-Malti", # Maltese
- "my" => "Myanmasa", # Burmese
- "na" => "Nauru", # Nauruan
- "nb" => "Bokm&aring;l", # Norwegian (Bokmal)
- "nah" => "Nahuatl",
- "nds" => "Platd&uuml;&uuml;tsch", # Low German ''or'' Low Saxon
- "ne" => "&#2344;&#2375;&#2346;&#2366;&#2354;&#2368;", # Nepali
- "ng" => "Ndonga",
- "nl" => "Nederlands", # Dutch
- "nb" => "Norsk", # Norwegian [currently using old '''no''' code]
- "ne" => "&#2344;&#2375;&#2346;&#2366;&#2354;&#2368;", # Nepali
- "nn" => "Nynorsk" , # (Norwegian) Nynorsk
- "no" => "Norsk", # Norwegian
- "nv" => "Din&eacute; bizaad", # Navajo
- "ny" => "Chi-Chewa", # Chichewa
- "oc" => "Occitan", # Occitan
- "om" => "Oromoo", # Oromo
- "or" => "Oriya", # Oriya - FIXME
- "pa" => "&#2346;&#2306;&#2332;&#2366;&#2348;&#2368; / &#2602;&#2588;&#2622;&#2604;&#2624; / &#1662;&#1606;&#1580;&#1575;&#1576;&#1610;", # Punjabi
- "pi" => "&#2346;&#2366;&#2367;&#2356;", # Pali
- "pl" => "Polski", # Polish
- "ps" => "&#1662;&#1690;&#1578;&#1608;", # Pashto
- "pt" => "Portugu&ecirc;s", # Portuguese
- "qu" => "Runa Simi", # Quechua
- "rm" => "Rumantsch", # Raeto-Romance
- "rn" => "Kirundi", # Kirundi
- "ro" => "Rom&acirc;n&#259;", # Romanian
- "ru" => "&#1056;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;", # Russian
- "rw" => "Kinyarwanda",
- "sa" => "&#2360;&#2306;&#2360;&#2381;&#2325;&#2371;&#2340;", # Sanskrit
- "sc" => "Sardu", # Sardinian
- "sd" => "&#2360;&#2367;&#2344;&#2343;&#2367;", # Sindhi
- "se" => "S&aacute;megiella", # (Northern) Sami
- "sg" => "Sangro",
-# "sh" => "&#1057;&#1088;&#1087;&#1089;&#1082;&#1086;&#1093;&#1088;&#1074;&#1072;&#1090;&#1089;&#1082;&#1080; (Srbskohrvatski)", ## Serbocroatian -- Obsolete
- "si" => "Simhala", # Sinhalese
- "simple" => "Simple English",
- "sk" => "Sloven&#269;ina", # Slovak
- "sl" => "Sloven&scaron;&#269;ina", # Slovenian
- "sm" => "Gagana Samoa", # Samoan
- "sn" => "chiShona", # Shona
- "so" => "Soomaaliga", # Somali
- "sq" => "Shqip", # Albanian
- "sr" => "&#1057;&#1088;&#1087;&#1089;&#1082;&#1080; / Srpski", # Serbian
- "ss" => "SiSwati", # Swati
- "st" => "seSotho", # (Southern) Sotho
- "su" => "Bahasa Sunda", # Sundanese
- "sv" => "Svenska", # Swedish
- "sw" => "Kiswahili", # Swahili
- "ta" => "&#2980;&#2990;&#3007;&#2996;&#3021;", # Tamil
- "te" => "&#3108;&#3142;&#3122;&#3137;&#3095;&#3137;", # Telugu
- "tg" => "&#1058;&#1086;&#1207;&#1080;&#1082;&#1251;", # Tajik
- "th" => "&#3652;&#3607;&#3618;", # Thai
- "ti" => "Tigrinya", # Tigrinya - FIXME
- "tk" => "&#1578;&#1585;&#1603;&#1605;&#1606; / &#1058;&#1091;&#1088;&#1082;&#1084;&#1077;&#1085;", # Turkmen
- "tl" => "Tagalog", # Tagalog (Filipino)
- "tlh" => "tlhIngan-Hol", # Klingon
- "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&uuml;rk&ccedil;e", # Turkish
- "ts" => "Xitsonga", # Tsonga
- "tt" => "Tatar", # Tatar
- "tw" => "Twi", # Twi -- FIXME
- "ty" => "Reo M&#257;`ohi", # Tahitian
- "ug" => "Oyghurque", # Uyghur
- "uk" => "&#1059;&#1082;&#1088;&#1072;&#1111;&#1085;&#1089;&#1100;&#1082;&#1072;", # Ukrainian
- "ur" => "&#1575;&#1585;&#1583;&#1608;", # Urdu
- "uz" => "&#1038;&#1079;&#1073;&#1077;&#1082;", # Uzbek
- "ve" => "Venda", # Venda
- "vi" => "Ti&#7871;ng Vi&#7879;t", # Vietnamese
- "vo" => "Volap&uuml;k", # Volapük
- "wa" => "Walon", # Walloon
- "wo" => "Wollof", # Wolof
- "xh" => "isiXhosa", # Xhosan
- "yi" => "&#1497;&#1497;&#1460;&#1491;&#1497;&#1513;", # Yiddish
- "yo" => "Yor&ugrave;b&aacute;", # Yoruba
- "za" => "(Cuengh)", # Zhuang
- "zh" => "&#20013;&#25991;", # (Zh&#333;ng Wén) - Chinese
- "zh-cn" => "&#20013;&#25991;(&#31616;&#20307;)", # Simplified
- "zh-tw" => "&#20013;&#25991;(&#32321;&#20307;)", # Traditional
- "zu" => "isiZulu", # Zulu
-);
+# Read language names
+global $wgLanguageNames;
+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:
-# Please include the English words as synonyms. This allows people
+# Note to translators:
+# Please include the English words as synonyms. This allows people
# from other wikis to contribute more easily.
-#
+#
/* 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_TOC => array( 0, '__TOC__' ),
+ 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' )
);
#-------------------------------------------------------------------
@@ -402,118 +209,121 @@ $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' => 'Article',
-"help" => "Help",
+'article' => 'Content page',
+'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}}, the free encyclopedia.",
-"whatlinkshere" => "Pages that link here",
-"help" => "Help",
-"search" => "Search",
-"go" => "Go",
-"history" => "Page history",
+"fromwikipedia" => "From {{SITENAME}}",
+'whatlinkshere' => 'Pages that link here',
+'help' => 'Help',
+'search' => 'Search',
+'go' => 'Go',
+"history" => 'Page history',
'history_short' => 'History',
-"printableversion" => "Printable version",
+'info_short' => 'Information',
+'printableversion' => 'Printable version',
'edit' => 'Edit',
-"editthispage" => "Edit this page",
+'editthispage' => 'Edit this page',
'delete' => 'Delete',
"deletethispage" => "Delete this page",
-"undelete_short" => "Undelete",
+"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 article",
-"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 meta 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:',
+'sitenotice' => '', # the equivalent to wgSiteNotice
# Short words for each namespace, by default used in the 'article' tab in monobook
'nstab-main' => 'Article',
@@ -529,41 +339,42 @@ 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:
<blockquote><tt>$1</tt></blockquote>
from within function \"<tt>$2</tt>\".
MySQL returned error \"<tt>$3: $4</tt>\".",
-"dberrortextcl" => "A database query syntax error has occurred.
+'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. <br />
+$1',
+'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:
<p>$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\".
<p>This is usually caused by following an outdated diff or history link to a
@@ -571,29 +382,29 @@ page that has been deleted.
<p>If this is not the case, you may have found a bug in the software.
Please report this to an administrator, making note of the URL.",
-"internalerror" => "Internal error",
-"filecopyerror" => "Could not copy file \"$1\" to \"$2\".",
-"filerenameerror" => "Could not rename file \"$1\" to \"$2\".",
-"filedeleteerror" => "Could not delete file \"$1\".",
-"filenotfound" => "Could not find file \"$1\".",
-"unexpected" => "Unexpected value: \"$1\"=\"$2\".",
-"formerror" => "Error: could not submit form",
-"badarticleerror" => "This action cannot be performed on this page.",
-"cannotdelete" => "Could not delete the page or image specified. (It may have already been deleted by someone else.)",
-"badtitle" => "Bad title",
-"badtitletext" => "The requested page title was invalid, empty, or
+'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()<br />
+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()<br />
Function: $1<br />
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]].
@@ -602,101 +413,102 @@ 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" => "<h2>Welcome, $1!</h2><p>Your account has been created.
+'welcomecreation' => "<h2>Welcome, $1!</h2><p>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" => "<b>There has been a problem with your login.</b><br />Try again!",
-"alreadyloggedin" => "<font color=red><b>User $1, you are already logged in!</b></font><br />\n",
-
-"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' => '<b>There has been a problem with your login.</b><br />Try again!',
+'alreadyloggedin' => "<font color=red><b>User $1, you are already logged in!</b></font><br />\n",
+
+'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.<br /><br />Your real name, if you choose to provide it, will be used for giving you attribution for your work.",
'prefs-help-userdata' => '* <strong>Real name</strong> (optional): if you choose to provide it this will be used for giving you attribution for your work.<br/>
-* <strong>Email</strong> (optional): Enables people to contact you through the website without you having to reveal your
+* <strong>Email</strong> (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" => "&nbsp;",
-"mailerror" => "Error sending mail: $1",
+'loginend' => '&nbsp;',
+'mailerror' => "Error sending mail: $1",
+'acct_creation_throttle_hit' => 'Sorry, you have already created $1 accounts. You can\'t make any more.',
# 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 article",
-"savearticle" => "Save page",
-"preview" => "Preview",
-"showpreview" => "Show preview",
-"blockedtitle" => "User is blocked",
-"blockedtext" => "Your user name or IP address has been blocked by $1.
+'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:<br />''$2''<p>You may contact $1 or one of the other
[[{{ns:4}}:Administrators|administrators]] to discuss the block.
@@ -704,53 +516,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 articles.",
-"whitelistreadtitle" => "Login required to read",
-"whitelistreadtext" => "You have to [[Special:Userlogin|login]] to read articles.",
-"whitelistacctitle" => "You are not allowed to create an account",
-"whitelistacctext" => "To be allowed to create accounts in this Wiki you have to [[Special:Userlogin|log]] in and have the appropriate permissions.",
-"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
+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" => "<!-- MediaWiki: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' => '<!-- MediaWiki: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' => "<strong>Tip:</strong> 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" => "<strong>Note:</strong> ",
-"previewnote" => "Remember that this is only a preview, and has not yet been saved!",
-"previewconflict" => "This preview reflects the text in the upper
-text editing area as it will appear if you choose to save.",
-"editing" => "Editing $1",
+'updated' => '(Updated)',
+'note' => '<strong>Note:</strong> ',
+'previewnote' => 'Remember that this is only a preview, and has not yet been saved!',
+'previewconflict' => 'This preview reflects the text in the upper
+text editing area as it will appear if you choose to save.',
+'editing' => "Editing $1",
"sectionedit" => " (section)",
-"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.
<b>Only</b> the text in the upper text area will be saved when you
press \"Save page\".\n<p>",
-"yourtext" => "Your text",
-"storedversion" => "Stored version",
-"editingold" => "<strong>WARNING: You are editing an out-of-date
+'yourtext' => 'Your text',
+'storedversion' => 'Stored version',
+'editingold' => '<strong>WARNING: You are editing an out-of-date
revision of this page.
-If you save it, any changes made since this revision will be lost.</strong>\n",
-"yourdiff" => "Differences",
+If you save it, any changes made since this revision will be lost.</strong>\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
@@ -758,82 +570,83 @@ at will, then don't submit it here.<br />
You are also promising us that you wrote this yourself, or copied it from a
public domain or similar free resource.
<strong>DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!</strong>",
-"longpagewarning" => "WARNING: This page is $1 kilobytes long; some
+'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
<a href='$wgScript/{{ns:4}}:Protected_page_guidelines'>protected page
guidelines</a>.",
# History pages
#
-"revhistory" => "Revision history",
-"nohistory" => "There is no edit history for this page.",
-"revnotfound" => "Revision not found",
-"revnotfoundtext" => "The old revision of the page you asked for could not be found.
+'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.<br/>
+'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.<br/>
Legend: (cur) = difference with current version,
-(last) = difference with preceding version, M = minor edit.",
+(last) = difference with preceding version, M = minor edit.',
+'history_copyright' => '-',
# 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 article titles
-and the text of $3 articles.",
-"nogomatch" => "No page with this exact title exists, trying full text search.",
-"titlematches" => "Article title matches",
-"notitlematches" => "No article title matches",
-"textmatches" => "Article text matches",
-"notextmatches" => "No article text matches",
-"prevn" => "previous $1",
-"nextn" => "next $1",
-"viewprevnext" => "View ($1) ($2) ($3).",
-"showingresults" => "Showing below <b>$1</b> results starting with #<b>$2</b>.",
-"showingresultsnum" => "Showing below <b>$3</b> results starting with #<b>$2</b>.",
-"nonefound" => "<strong>Note</strong>: unsuccessful searches are
+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 <b>$1</b> results starting with #<b>$2</b>.",
+'showingresultsnum' => "Showing below <b>$3</b> results starting with #<b>$2</b>.",
+'nonefound' => "<strong>Note</strong>: unsuccessful searches are
often caused by searching for common words like \"have\" and \"from\",
which are not indexed, or by specifying more than one search term (only pages
containing all of the search terms will appear in the result).",
-"powersearch" => "Search",
-"powersearchtext" => "
+'powersearch' => 'Search',
+'powersearchtext' => "
Search in namespaces :<br />
$1<br />
$2 List redirects &nbsp; Search for $3 $9",
"searchdisabled" => "<p>Sorry! Full text search has been disabled temporarily, for performance reasons. In the meantime, you can use the Google search below, which may be out of date.</p>",
-"googlesearch" => "
+'googlesearch' => "
<!-- SiteSearch Google -->
<FORM method=GET action=\"http://www.google.com/search\">
<TABLE bgcolor=\"#FFFFFF\"><tr><td>
@@ -852,98 +665,100 @@ border=\"0\" ALT=\"Google\"></A>
</td></tr></TABLE>
</FORM>
<!-- SiteSearch Google -->",
-"blanknamespace" => "(Main)",
+'blanknamespace' => '(Main)',
# Preferences page
#
-"preferences" => "Preferences",
-"prefsnologin" => "Not logged in",
-"prefsnologintext" => "You must be <a href=\"{{localurl:Special:Userlogin}}\">logged in</a>
+'preferences' => 'Preferences',
+'prefsnologin' => 'Not logged in',
+'prefsnologintext' => "You must be <a href=\"{{localurl:Special:Userlogin}}\">logged in</a>
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.",
-"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' => 'Editing',
+'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 <strong>$1</strong> changes in last <strong>$2</strong> days.",
-"rcnotefrom" => "Below are the changes since <b>$2</b> (up to <b>$1</b> shown).",
-"rclistfrom" => "Show new changes starting from $1",
+'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 <strong>$1</strong> changes in last <strong>$2</strong> days.",
+'rcnotefrom' => "Below are the changes since <b>$2</b> (up to <b>$1</b> shown).",
+'rclistfrom' => "Show new changes starting from $1",
# "rclinks" => "Show last $1 changes in last $2 hours / last $3 days",
# "rclinks" => "Show last $1 changes in last $2 days.",
-"showhideminor" => "$1 minor edits | $2 bots | $3 logged in users ",
-"rclinks" => "Show last $1 changes in last $2 days<br />$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<br />$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 <a href=\"{{localurl:Special:Userlogin}}\">logged in</a>
+'upload' => 'Upload file',
+'uploadbtn' => 'Upload file',
+'uploadlink' => 'Upload images',
+'reupload' => 'Re-upload',
+'reuploaddesc' => 'Return to the upload form.',
+'uploadnologin' => 'Not logged in',
+'uploadnologintext' => "You must be <a href=\"{{localurl:Special:Userlogin}}\">logged in</a>
to upload files.",
-"uploadfile" => "Upload images, sounds, documents etc.",
-"uploaderror" => "Upload error",
-"uploadtext" => "<strong>STOP!</strong> Before you upload here,
+'uploadfile' => 'Upload images, sounds, documents etc.',
+'uploaderror' => 'Upload error',
+'uploadtext' => "<strong>STOP!</strong> Before you upload here,
make sure to read and follow the <a href=\"{{localurle:Special:Image_use_policy}}\">image use policy</a>.
<p>If a file with the name you are specifying already
exists on the wiki, it'll be replaced without warning.
@@ -954,7 +769,7 @@ go to the <a href=\"{{localurle:Special:Imagelist}}\">list of uploaded images</a
Uploads and deletions are logged on the " .
"<a href=\"{{localurle:Project:Upload_log}}\">upload log</a>.
</p><p>Use the form below to upload new image files for use in
-illustrating your articles.
+illustrating your pages.
On most browsers, you will see a \"Browse...\" button, which will
bring up your operating system's standard file open dialog.
Choosing a file will fill the name of that file into the text
@@ -966,418 +781,423 @@ This may take some time if you have a slow internet connection.
<p>The preferred formats are JPEG for photographic images, PNG
for drawings and other iconic images, and OGG for sounds.
Please name your files descriptively to avoid confusion.
-To include the image in an article, use a link in the form
+To include the image in a page, use a link in the form
<b>[[{{ns:6}}:file.jpg]]</b> or <b>[[{{ns:6}}:file.png|alt text]]</b>
or <b>[[{{ns:-2}}:file.ogg]]</b> for sounds.
<p>Please note that as with wiki pages, others may edit or
-delete your uploads if they think it serves the encyclopedia, and
+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).
<ul>
</ul>
-",
-"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.',
+'illegalfilename' => 'The filename "$1" contains characters that are not allowed in page titles. Please rename the file and try uploading it again.',
+'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.',
+'emptyfile' => 'The file you uploaded seems to be empty. This might be due to a typo in the file name. Please check whether you really want to upload this file.',
+'fileexists' => 'A file with this name exists already, please check $1 if you are not sure if you want to change it.',
+'successfulupload' => 'Successful upload',
+'fileuploaded' => "File 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.",
-
+created and by whom, and anything else you may know about it. If this is an image, you can insert it like this: <tt><nowiki>[[Image:$1|thumb|Description]]</nowiki></tt>",
+'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.
-<br /><i>Click on date to see image uploaded on that date</i>.",
-"imagelinks" => "Image links",
-"linkstoimage" => "The following pages link to this image:",
-"nolinkstoimage" => "There are no pages that link to this image.",
+<br /><i>Click on date to see image uploaded on that date</i>.',
+'imagelinks' => 'Image links',
+'linkstoimage' => 'The following pages link to this image:',
+'nolinkstoimage' => 'There are no pages that link to this image.',
# Statistics
#
-"statistics" => "Statistics",
-"sitestats" => "Site statistics",
-"userstats" => "User statistics",
-"sitestatstext" => "There are '''$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 articles.
+pages, redirects, and others that probably don't qualify as content pages.
Excluding those, there are '''$2''' pages that are probably legitimate
-articles.
+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 articles link to a <i>disambiguation page</i>. They should link to the appropriate topic instead.<br />A page is treated as dismbiguation if it is linked from $1.<br />Links from other namespaces are <i>not</i> listed here.",
-"doubleredirects" => "Double Redirects",
-"doubleredirectstext" => "<b>Attention:</b> This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.<br />\nEach row contains links to the first and second redirect, as well as the first line of the second redirect text, usually giving the \"real\" taget article, which the first redirect should point to.",
-"brokenredirects" => "Broken Redirects",
-"brokenredirectstext" => "The following redirects link to a non-existing article.",
-"selflinks" => "Pages with Self Links",
-"selflinkstext" => "The following pages contain a link to themselves, which they should not.",
-"mispeelings" => "Pages with misspellings",
-"mispeelingstext" => "The following pages contain a common misspelling, which are listed on $1. The correct spelling might be given (like this).",
-"mispeelingspage" => "List of common misspellings",
-"missinglanguagelinks" => "Missing Language Links",
-"missinglanguagelinksbutton" => "Find missing language links for",
-"missinglanguagelinkstext" => "These articles do <i>not</i> link to their counterpart in $1. Redirects and subpages are <i>not</i> shown.",
+'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 <i>disambiguation page</i>. They should link to the appropriate topic instead.<br />A page is treated as dismbiguation if it is linked from $1.<br />Links from other namespaces are <i>not</i> listed here.",
+'doubleredirects' => 'Double Redirects',
+'doubleredirectstext' => "<b>Attention:</b> This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.<br />\nEach row contains links to the first and second redirect, as well as the first line of the second redirect text, usually giving the \"real\" 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 <i>not</i> link to their counterpart in $1. Redirects and subpages are <i>not</i> shown.",
# Miscellaneous special pages
#
-"orphans" => "Orphaned pages",
-"lonelypages" => "Orphaned pages",
-"unusedimages" => "Unused images",
-"popularpages" => "Popular pages",
-"nviews" => "$1 views",
-"wantedpages" => "Wanted pages",
-"nlinks" => "$1 links",
-"allpages" => "All pages",
-"randompage" => "Random page",
-"shortpages" => "Short pages",
-"longpages" => "Long pages",
-"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 articles",
-"intl" => "Interlanguage links",
+'orphans' => 'Orphaned pages',
+'lonelypages' => 'Orphaned pages',
+'uncategorizedpages' => 'Uncategorized pages',
+'unusedimages' => 'Unused images',
+'popularpages' => 'Popular pages',
+'nviews' => '$1 views',
+'wantedpages' => 'Wanted pages',
+'nlinks' => '$1 links',
+'allpages' => 'All pages',
+'nextpage' => 'Next page ($1)',
+'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" => "<p>Please note that other web sites may link to an image with
+'movethispage' => 'Move this page',
+'unusedimagestext' => '<p>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 <a href=\"{{localurl:Special:Userlogin\">logged in</a>
+'mailnologin' => 'No send address',
+'mailnologintext' => "You must be <a href=\"{{localurl:Special:Userlogin\">logged in</a>
and have a valid e-mail address in your <a href=\"{{localurl:Special:Preferences}}\">preferences</a>
to send e-mail to other users.",
-"emailuser" => "E-mail this user",
-"emailpage" => "E-mail user",
-"emailpagetext" => "If this user has entered a valid e-mail address in
+'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 <a href=\"{{localurl:Special:Userlogin}}\">logged in</a>
+'watchlist' => 'My watchlist',
+'watchlistsub' => "(for user \"$1\")",
+'nowatchlist' => 'You have no items on your watchlist.',
+'watchnologin' => 'Not logged in',
+'watchnologintext' => "You must be <a href=\"{{localurl:Special:Userlogin}}\">logged in</a>
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.
<p>If you want to remove the page from your watchlist later, click \"Stop watching\" in the sidebar.",
-"removedwatch" => "Removed from watchlist",
-"removedwatchtext" => "The page \"$1\" has been removed from your watchlist.",
+'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 an article",
-"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...
<a href='$4'>show and edit complete list</a>.)",
-"watchmethod-recent"=> "checking recent edits for watched pages",
-"watchmethod-list" => "checking watched pages for recent edits",
-"removechecked" => "Remove checked items from watchlist",
-"watchlistcontains" => "Your watchlist contains $1 pages.",
-"watcheditlist" => "Here's an alphabetical list of your
+'watchmethod-recent'=> 'checking recent edits for watched pages',
+'watchmethod-list' => 'checking watched pages for recent edits',
+'removechecked' => 'Remove checked items from watchlist',
+'watchlistcontains' => "Your watchlist contains $1 pages.",
+'watcheditlist' => 'Here\'s an alphabetical list of your
watched pages. Check the boxes of pages you want to remove
-from your watchlist and click the 'remove checked' button
-at the bottom of the screen.",
-"removingchecked" => "Removing requested items from watchlist...",
-"couldntremove" => "Couldn't remove item '$1'...",
-"iteminvalidname" => "Problem with item '$1', invalid name...",
-"wlnote" => "Below are the last $1 changes in the last <b>$2</b> hours.",
-"wlshowlast" => "Show last $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 <b>$2</b> 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).
<ul>
</ul>
-",
-"deletionlog" => "deletion log",
-"reverted" => "Reverted to earlier revision",
-"deletecomment" => "Reason for deletion",
-"imagereverted" => "Revert to earlier version was successful.",
-"rollback" => "Roll back edits",
+',
+'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 article.",
-"alreadyrolled" => "Cannot rollback last edit of [[$1]]
-by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already.
+'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: \"<i>$1</i>\".",
-"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: \"<i>$1</i>\".",
+'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 article",
-"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" => "The article [[$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 <b>$1</b> changes in the last <b>$2</b> 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 <b>$1</b> changes in the last <b>$2</b> days.",
+'uclinks' => "View the last $1 changes; view the last $2 days.",
+'uctop' => ' (top)' ,
# What links here
#
-"whatlinkshere" => "What links here",
-"notargettitle" => "No target",
-"notargettext" => "You have not specified a target page or user
-to perform this function on.",
-"linklistsub" => "(List of links)",
-"linkshere" => "The following pages link to here:",
-"nolinkshere" => "No pages link to here.",
-"isredirect" => "redirect page",
+'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.
<br />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.
-<br />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.
+<br />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" => "<b>User \"$1\" is now a sysop</b>",
-"makesysopfail" => "<b>User \"$1\" could not be made into a sysop. (Did you enter the name correctly?)</b>",
-"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" => "<b>User rights for \"$1\" updated</b>",
-"set_rights_fail" => "<b>User rights for \"$1\" could not be set. (Did you enter the name correctly?)</b>",
-"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' => "<b>User \"$1\" is now a sysop</b>",
+'makesysopfail' => "<b>User \"$1\" could not be made into a sysop. (Did you enter the name correctly?)</b>",
+'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' => "<b>User rights for \"$1\" updated</b>",
+'set_rights_fail' => "<b>User rights for \"$1\" could not be set. (Did you enter the name correctly?)</b>",
+'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
@@ -1385,7 +1205,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
@@ -1394,160 +1214,169 @@ an existing page.
<b>WARNING!</b>
This can be a drastic and unexpected change for a popular page;
please be sure you understand the consequences of this before
-proceeding.",
-"movepagetalktext" => "The associated talk page, if any, will be automatically moved along with it '''unless:'''
+proceeding.',
+'movepagetalktext' => 'The associated talk page, if any, will be automatically moved along with it \'\'\'unless:\'\'\'
*You are moving the page across namespaces,
*A non-empty talk page already exists under the new name, or
*You uncheck the box below.
-In those cases, you will have to move or merge the page manually if desired.",
-"movearticle" => "Move page",
-"movenologin" => "Not logged in",
-"movenologintext" => "You must be a registered user and <a href=\"{{localurl:Special:Userlogin}}\">logged in</a>
+In those cases, you will have to move or merge the page manually if desired.',
+'movearticle' => 'Move page',
+'movenologin' => 'Not logged in',
+'movenologintext' => "You must be a registered user and <a href=\"{{localurl:Special:Userlogin}}\">logged in</a>
to move a page.",
-"newtitle" => "To new title",
-"movepagebtn" => "Move page",
-"pagemovedsub" => "Move succeeded",
-"pagemovedtext" => "Page \"[[$1]]\" moved to \"[[$2]]\".",
-"articleexists" => "A page of that name already exists, or the
+'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 <strong>not</strong> 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 <strong>not</strong> moved.',
+'1movedto2' => "$1 moved to $2",
+'1movedto2_redir' => '$1 moved to $2 over redirect',
# 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" => "<b>Missing image</b><br /><i>$1</i>\n",
+'thumbnail-more' => 'Enlarge',
+'missingimage' => "<b>Missing image</b><br /><i>$1</i>\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 article [alt-a]',
-'tooltip-talk' => 'Discussion about the article [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 it\'s 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 $1 deleted edits to this page [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 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',
-'tooltip-rss' => 'RSS feed for this page',
'tooltip-compareselectedversions' => 'See the differences between the two selected versions of this page. [alt-v]',
+# stylesheets
+
+'Monobook.css' => '/* edit this file to customize the monobook skin for the entire site */',
+#'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"
+'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.",
+'others' => 'others',
+'siteusers' => "$wgSitename user(s) $1",
+'creditspage' => 'Page credits',
+'nocredits' => 'There is no credits info available for this page.',
+
+# Spam protection
+
+'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.",
+
+# Info page
+"infosubtitle" => "Information for page",
+"numedits" => "Number of edits (article): ",
+"numtalkedits" => "Number of edits (discussion page): ",
+"numwatchers" => "Number of watchers: ",
+"numauthors" => "Number of distinct authors (article): ",
+"numtalkauthors" => "Number of distinct authors (discussion page): ",
+
+# 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-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\');
+'
+
);
@@ -1558,9 +1387,9 @@ amusement.",
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}";
@@ -1579,7 +1408,7 @@ class Language {
global $wgDefaultUserOptionsEn ;
return $wgDefaultUserOptionsEn ;
}
-
+
function getBookstoreList () {
global $wgBookstoreListEn ;
return $wgBookstoreListEn ;
@@ -1605,7 +1434,7 @@ class Language {
}
function specialPage( $name ) {
- return $this->getNsText( Namespace::getSpecial() ) . ":" . $name;
+ return $this->getNsText( Namespace::getSpecial() ) . ':' . $name;
}
function getQuickbarSettings() {
@@ -1622,7 +1451,7 @@ class Language {
global $wgMathNamesEn;
return $wgMathNamesEn;
}
-
+
function getDateFormats() {
global $wgDateFormatsEn;
return $wgDateFormatsEn;
@@ -1632,7 +1461,7 @@ class Language {
global $wgUserTogglesEn;
return $wgUserTogglesEn;
}
-
+
function getUserToggle( $tog ) {
$togs =& $this->getUserToggles();
return $togs[$tog];
@@ -1656,7 +1485,7 @@ class Language {
global $wgMonthNamesEn;
return $wgMonthNamesEn[$key-1];
}
-
+
/* by default we just return base form */
function getMonthNameGen( $key )
{
@@ -1678,11 +1507,11 @@ class Language {
function userAdjust( $ts )
{
global $wgUser, $wgLocalTZoffset;
-
- $tz = $wgUser->getOption( "timecorrection" );
- if ( $tz === "" ) {
+
+ $tz = $wgUser->getOption( 'timecorrection' );
+ if ( $tz === '' ) {
$hrDiff = isset( $wgLocalTZoffset ) ? $wgLocalTZoffset : 0;
- $minDiff = 0;
+ $minDiff = 0;
} elseif ( strpos( $tz, ":" ) !== false ) {
$tzArray = explode( ":", $tz );
$hrDiff = intval($tzArray[0]);
@@ -1692,35 +1521,35 @@ class Language {
}
if ( 0 == $hrDiff && 0 == $minDiff ) { return $ts; }
- $t = mktime( (
+ $t = mktime( (
(int)substr( $ts, 8, 2) ) + $hrDiff, # Hours
(int)substr( $ts, 10, 2 ) + $minDiff, # Minutes
(int)substr( $ts, 12, 2 ), # Seconds
(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 )
{
global $wgAmericanDates, $wgUser, $wgUseDynamicDates;
if ( $adj ) { $ts = $this->userAdjust( $ts ); }
-
+
if ( $wgUseDynamicDates ) {
- $datePreference = $wgUser->getOption( 'date' );
+ $datePreference = $wgUser->getOption( 'date' );
if ( $datePreference == 0 ) {
$datePreference = $wgAmericanDates ? 1 : 2;
}
} else {
$datePreference = $wgAmericanDates ? 1 : 2;
}
-
+
$month = $this->getMonthAbbreviation( substr( $ts, 4, 2 ) );
$day = $this->formatNum( 0 + substr( $ts, 6, 2 ) );
$year = $this->formatNum( substr( $ts, 0, 4 ) );
-
+
switch( $datePreference ) {
case 1: return "$month $day, $year";
case 2: return "$day $month $year";
@@ -1732,21 +1561,21 @@ class Language {
{
if ( $adj ) { $ts = $this->userAdjust( $ts ); }
- $t = substr( $ts, 8, 2 ) . ":" . substr( $ts, 10, 2 );
- if ( $seconds ) {
- $t .= ":" . substr( $ts, 12, 2 );
+ $t = substr( $ts, 8, 2 ) . ':' . substr( $ts, 10, 2 );
+ if ( $seconds ) {
+ $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()
@@ -1770,9 +1599,9 @@ class Language {
function getMessage( $key )
{
global $wgAllMessagesEn;
- return $wgAllMessagesEn[$key];
+ return @$wgAllMessagesEn[$key];
}
-
+
function getAllMessages()
{
global $wgAllMessagesEn;
@@ -1783,43 +1612,49 @@ class Language {
# For most languages, this is a wrapper for iconv
return iconv( $in, $out, $string );
}
-
+
function ucfirst( $string ) {
# For most languages, this is a wrapper for ucfirst()
return ucfirst( $string );
}
-
+
function lcfirst( $s ) {
return strtolower( $s{0} ). substr( $s, 1 );
}
function checkTitleEncoding( $s ) {
global $wgInputEncoding;
-
+
# Check for UTF-8 URLs; Internet Explorer produces these if you
# type non-ASCII chars in the URL bar or follow unescaped links.
$ishigh = preg_match( '/[\x80-\xff]/', $s);
$isutf = ($ishigh ? preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
'[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s ) : true );
- if( ($wgInputEncoding != "utf-8") and $ishigh and $isutf )
- return @iconv( "UTF-8", $wgInputEncoding, $s );
-
- if( ($wgInputEncoding == "utf-8") and $ishigh and !$isutf )
+ if( ($wgInputEncoding != 'utf-8') and $ishigh and $isutf )
+ return @iconv( 'UTF-8', $wgInputEncoding, $s );
+
+ if( ($wgInputEncoding == 'utf-8') and $ishigh and !$isutf )
return utf8_encode( $s );
-
+
# Other languages can safely leave this function, or replace
# it with one to detect and convert another legacy encoding.
return $s;
}
-
+
function stripForSearch( $in ) {
# Some languages have special punctuation to strip out
# or characters which need to be converted for MySQL's
# indexing to grok it correctly. Make such changes here.
- return $in;
+ return strtolower( $in );
}
+ function firstChar( $s ) {
+ # Get the first character of a string. In ASCII, return
+ # first byte of the string. UTF8 and others have to
+ # overload this.
+ return $s[0];
+ }
function setAltEncoding() {
# Some languages may have an alternate char encoding option
@@ -1837,7 +1672,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 {
@@ -1867,7 +1702,7 @@ class Language {
function linkPrefixExtension() { return false; }
- function &getMagicWords()
+ function &getMagicWords()
{
global $wgMagicWordsEn;
return $wgMagicWordsEn;
@@ -1876,8 +1711,12 @@ class Language {
# Fill a MagicWord object with data from here
function getMagic( &$mw )
{
- $raw =& $this->getMagicWords();
- $rawEntry = $raw[$mw->mId];
+ $raw =& $this->getMagicWords();
+ if( !isset( $raw[$mw->mId] ) ) {
+ # Fall back to English if local list is incomplete
+ $raw =& Language::getMagicWords();
+ }
+ $rawEntry = $raw[$mw->mId];
$mw->mCaseSensitive = $rawEntry[0];
$mw->mSynonyms = array_slice( $rawEntry, 1 );
}
@@ -1885,22 +1724,10 @@ class Language {
# Italic is unsuitable for some languages
function emphasize( $text )
{
- return "<em>$text</em>";
+ return '<em>'.$text.'</em>';
}
- # returns additional Regex for the tokenizer. See LanguageFr.php for an example
- function tokenizerRegex()
- {
- return "";
- }
- # Process the token generated from the tokenizer by the above regex. Return
- # NULL if the token is unknown, and the text to be added to the output otherwise
- function processToken( &$token , &$tokenStack)
- {
- return NULL;
- }
-
# Normally we use the plain ASCII digits. Some languages such as Arabic will
# want to output numbers using script-appropriate characters: override this
# function with a translator. See LanguageAr.php for an example.
@@ -1908,23 +1735,47 @@ class Language {
return $number;
}
- function listToText( $l ) {
- $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;
- } else {
- $s = $l[$i] . ", " . $s;
- }
+ function listToText( $l ) {
+ $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;
+ } else {
+ $s = $l[$i] . ', ' . $s;
+ }
+ }
+ return $s;
+ }
+
+ # Crop a string from the beginning or end to a certain number of bytes.
+ # (Bytes are used because our storage has limited byte lengths for some
+ # columns in the database.) Multibyte charsets will need to make sure that
+ # only whole characters are included!
+ #
+ # $length does not include the optional ellipsis.
+ # If $length is negative, snip from the beginning
+ function truncate( $string, $length, $ellipsis = "" ) {
+ if( $length == 0 ) {
+ return $ellipsis;
+ }
+ if ( strlen( $string ) <= abs( $length ) ) {
+ return $string;
+ }
+ if( $length > 0 ) {
+ $string = substr( $string, 0, $length );
+ return $string . $ellipsis;
+ } else {
+ $string = substr( $string, $length );
+ return $ellipsis . $string;
}
- return $s;
}
}
# 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..98cedce1592a 100644
--- a/languages/LanguageAf.php
+++ b/languages/LanguageAf.php
@@ -22,7 +22,7 @@
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsAf = array(
"Geen.", "Links vas.", "Regs vas.", "Dryf links."
@@ -36,7 +36,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesAf = array(
@@ -550,6 +551,7 @@ Volg asseblief hierdie skakel: ($2) na die beskrywingsbladsy en vul inligting in
"imghistory" => "Prentgeskiedenis",
"revertimg" => "gaan terug",
"deleteimg" => "skrap",
+"deleteimgcompletely" => "skrap",
"imghistlegend" => "Legende: (huidig) = dit is die huidige prent, (skrap) = skrap hierdie ou weergawe, (gaan terug) = gaan terug na hierdie ou weergawe.
<br><i>Kliek die datum om die prent te sien wat op daardie datum gelaai is</i>.",
"imagelinks" => "Prentskakels",
diff --git a/languages/LanguageAr.php b/languages/LanguageAr.php
index 95706cf9da84..f5f55ace8303 100644
--- a/languages/LanguageAr.php
+++ b/languages/LanguageAr.php
@@ -17,7 +17,7 @@ require_once("LanguageUtf8.php");
9 => "MediaWiki_talk",
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgWeekdayNamesAr = array(
"الأحد", "الإثنين", "الثلاثاء", "الأربعاء", "الخميس",
@@ -194,7 +194,7 @@ require_once("LanguageUtf8.php");
"filedeleteerror" => "Could not delete file \"$1\".",
"filenotfound" => "Could not find file \"$1\".",
"unexpected" => "Unexpected value: \"$1\"=\"$2\".",
- "formerror" => "Error: could not submit form",
+ "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",
@@ -249,7 +249,7 @@ require_once("LanguageUtf8.php");
"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
+ "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.<br /><br />Your real name, if you choose to provide it, will be used for giving you attribution for your work.",
"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.",
@@ -329,7 +329,7 @@ require_once("LanguageUtf8.php");
"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
+ 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" => "<!-- MediaWiki:talkpagetext -->",
@@ -469,7 +469,7 @@ require_once("LanguageUtf8.php");
See [[{{ns:4}}:User preferences help]] for help deciphering the options.",
"prefsreset" => "Preferences have been reset from storage.",
- "qbsettings" => "Quickbar settings",
+ "qbsettings" => "Quickbar settings",
"changepassword" => "Change password",
"skin" => "Skin",
"math" => "Rendering math",
@@ -488,7 +488,7 @@ require_once("LanguageUtf8.php");
"oldpassword" => "Old password",
"newpassword" => "New password",
"retypenew" => "Retype new password",
- "textboxsize" => "Textbox dimensions",
+ "textboxsize" => "Editing",
"rows" => "Rows",
"columns" => "Columns",
"searchresultshead" => "Search result settings",
@@ -684,7 +684,7 @@ require_once("LanguageUtf8.php");
"randompage" => "Random page",
"shortpages" => "Short pages",
"longpages" => "Long pages",
- "deadendpages" => "Dead-end pages",
+ "deadendpages" => "Dead-end pages",
"listusers" => "User list",
"specialpages" => "Special pages",
"spheading" => "Special pages for all users",
@@ -728,7 +728,7 @@ require_once("LanguageUtf8.php");
as the \"From\" address of the mail, so the recipient will be able
to reply.",
"usermailererror" => "Mail object returned error: ",
- "defemailsubject" => "{{SITENAME}} e-mail",
+ "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.",
@@ -819,11 +819,11 @@ require_once("LanguageUtf8.php");
"rollbackfailed" => "Rollback failed",
"cantrollback" => "Cannot revert edit; last contributor is only author of this article.",
"alreadyrolled" => "Cannot rollback last edit of [[$1]]
- by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already.
+ by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already.
Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). ",
# only shown if there is an edit comment
- "editcomment" => "The edit comment was: \"<i>$1</i>\".",
+ "editcomment" => "The edit comment was: \"<i>$1</i>\".",
"revertpage" => "Reverted edit of $2, changed back to last version by $1",
"protectlogpage" => "Protection_log",
"protectlogtext" => "Below is a list of page locks/unlocks.
@@ -909,7 +909,7 @@ require_once("LanguageUtf8.php");
"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
+ "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"',
@@ -960,7 +960,7 @@ require_once("LanguageUtf8.php");
# Make sysop
"makesysoptitle" => "Make a user into a sysop",
- "makesysoptext" => "This form is used by bureaucrats to turn ordinary users into administrators.
+ "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",
@@ -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',
@@ -1162,7 +1162,7 @@ class LanguageAr extends LanguageUtf8 {
"." => "Ù«",
"," => "Ù¬"
);
-
+
# TODO: TRANSLATION!
# Inherit everything except...
@@ -1180,11 +1180,11 @@ class LanguageAr extends LanguageUtf8 {
return $wgNamespaceNamesAr[$index];
}
- function getNsIndex( $text )
+ function getNsIndex( $text )
{
global $wgNamespaceNamesAr;
- foreach ( $wgNamespaceNamesAr as $i => $n )
+ foreach ( $wgNamespaceNamesAr as $i => $n )
{
if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
}
@@ -1208,7 +1208,7 @@ class LanguageAr extends LanguageUtf8 {
global $wgWeekdayNamesAr;
return $wgWeekdayNamesAr[$key-1];
}
-
+
function isRTL() { return true; }
@@ -1220,7 +1220,7 @@ class LanguageAr extends LanguageUtf8 {
# Swap sidebar to right side by default
$opt['quickbar'] = 2;
-
+
# Underlines seriously harm legibility. Force off:
$opt['underline'] = 0;
return $opt ;
@@ -1228,7 +1228,7 @@ class LanguageAr extends LanguageUtf8 {
function checkTitleEncoding( $s ) {
global $wgInputEncoding;
-
+
# Check for non-UTF-8 URLs; assume they are windows-1256?
$ishigh = preg_match( '/[\x80-\xff]/', $s);
$isutf = ($ishigh ? preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
@@ -1236,10 +1236,10 @@ class LanguageAr extends LanguageUtf8 {
if( $ishigh and !$isutf )
return iconv( "windows-1256", "utf-8", $s );
-
+
return $s;
}
-
+
function getMessage( $key )
{
global $wgAllMessagesAr, $wgAllMessagesEn;
@@ -1248,9 +1248,14 @@ class LanguageAr extends LanguageUtf8 {
if ( "" == $m ) { return $wgAllMessagesEn[$key]; }
else return $m;
}
-
+
function formatNum( $number ) {
- return strtr( $number, $this->digitTransTable );
+ global $wgTranslateNumerals;
+ if( $wgTranslateNumerals ) {
+ return strtr( $number, $this->digitTransTable );
+ } else {
+ return $number;
+ }
}
}
diff --git a/languages/LanguageBg.php b/languages/LanguageBg.php
index 19e32c2df953..80cdf99356ee 100644
--- a/languages/LanguageBg.php
+++ b/languages/LanguageBg.php
@@ -3,56 +3,55 @@
# Language-specific text
#--------------------------------------------------------------------------
-# NOTE: To turn off "Current Events" in the sidebar,
-# set "currentevents" => "-"
-
# The names of the namespaces can be set here, but the numbers
# are magical, so don't change or move them! The Namespace class
# encapsulates some of the magic-ness.
#
-#$wgMetaNamespace = "УикипедиÑ";
-#$wgSitename = "УикипедиÑ";
-
/* private */ $wgNamespaceNamesBg = array(
- -2 => "МедиÑ",
- -1 => "Специални",
- 0 => "",
- 1 => "БеÑеда",
- 2 => "Потребител",
- 3 => "Потребител_беÑеда",
- 4 => $wgMetaNamespace,
- 5 => $wgMetaNamespace . "_беÑеда",
- 6 => "Картинка",
- 7 => "Картинка_беÑеда",
- 8 => "МедиÑУики",
- 9 => "МедиÑУики_беÑеда",
- 10 => "Template",
- 11 => "Template_talk"
-
-);
+ NS_MEDIA => 'МедиÑ', # -2
+ NS_SPECIAL => 'Специални', # -1
+ NS_MAIN => '', # 0
+ NS_TALK => 'БеÑеда', # 1
+ NS_USER => 'Потребител', # 2
+ NS_USER_TALK => 'Потребител_беÑеда', # 3
+ NS_WIKIPEDIA => $wgMetaNamespace, # 4
+ NS_WIKIPEDIA_TALK => $wgMetaNamespace . '_беÑеда', # 5
+ NS_IMAGE => 'Картинка', # 6
+ NS_IMAGE_TALK => 'Картинка_беÑеда', # 7
+ NS_MEDIAWIKI => 'МедиÑУики', # 8
+ NS_MEDIAWIKI_TALK => 'МедиÑУики_беÑеда', # 9
+ NS_TEMPLATE => 'Шаблон', # 10
+ NS_TEMPLATE_TALK => 'Шаблон_беÑеда', # 11
+ NS_HELP => 'Помощ', # 12
+ NS_HELP_TALK => 'Помощ_беÑеда', # 13
+ NS_CATEGORY => 'КатегориÑ', # 14
+ NS_CATEGORY_TALK => 'КатегориÑ_беÑеда' # 15
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsBg = array(
'Без меню', 'Ðеподвижно влÑво', 'Ðеподвижно вдÑÑно', 'Плаващо влÑво'
);
/* private */ $wgSkinNamesBg = array(
- 'standard' => "ОÑновен",
- 'nostalgia' => "ÐоÑталгиÑ",
- 'cologneblue' => "КьолнÑко Ñиньо",
- 'smarty' => "Paddington",
- 'montparnasse' => "Montparnasse",
- 'davinci' => "DaVinci",
- 'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'standard' => 'ОÑновен',
+ 'nostalgia' => 'ÐоÑталгиÑ',
+ 'cologneblue' => 'КьолнÑко Ñиньо',
+ 'smarty' => 'Падингтън',
+ 'montparnasse' => 'МонпарнаÑ',
+ 'davinci' => 'ДаВинчи',
+ 'mono' => 'Mono',
+ 'monobook' => 'MonoBook',
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesBg = array(
- "Използване винаги на PNG",
- "HTML при опроÑтен TeX, иначе PNG",
- "HTML по възможноÑÑ‚, иначе PNG",
- "ОÑтавÑне като TeX (за текÑтови браузъри)",
- "Препоръчително за нови браузъри"
+ MW_MATH_PNG => 'Използване винаги на PNG',
+ MW_MATH_SIMPLE => 'HTML при опроÑтен TeX, иначе PNG',
+ MW_MATH_HTML => 'HTML по възможноÑÑ‚, иначе PNG',
+ MW_MATH_SOURCE => 'ОÑтавÑне като TeX (за текÑтови браузъри)',
+ MW_MATH_MODERN => 'Препоръчително за нови браузъри',
+ MW_MATH_MATHML => 'MathML по възможноÑÑ‚ (екÑпериментално)'
);
/* private */ $wgDateFormatsBg = array(
@@ -60,36 +59,36 @@
'Ñнуари 15, 2001',
'15 Ñнуари 2001',
'2001 Ñнуари 15',
- "2001-01-15"
+ '2001-01-15'
);
/* private */ $wgUserTogglesBg = array(
- "hover" => "Изпъкване на препратките, когато мишката е върху Ñ‚ÑÑ…",
- "underline" => "Подчертаване на препратките",
- "highlightbroken" => "Показване на невалидните препратки <a href=\"\" class=\"new\">така</a> (алтернативно: така<a href=\"\" class=\"internal\">?</a>)",
- "justify" => "ДвуÑтранно подравнÑване на абзаците",
- "hideminor" => "Скриване на малки редакции в поÑледните промени",
- "usenewrc" => "ПодобрÑване на поÑледните промени (не за вÑички браузъри)",
- "numberheadings" => "Ðомериране на заглавиÑта",
- "showtoolbar" => "Показване на лента за редактиране",
- "editondblclick" => "Редактиране при двойно щракване (Javascript)",
- "editsection" =>"ВъзможноÑÑ‚ за редактиране на раздел чрез<br> препратка [редактиране]",
- "editsectiononrightclick" => "ВъзможноÑÑ‚ за редактиране на раздел при щракване<br> Ñ Ð´ÐµÑÐ½Ð¸Ñ Ð±ÑƒÑ‚Ð¾Ð½ върху заглавие на раздел (Javascript)",
- "showtoc" =>"Показване на Ñъдържание<br>(за Ñтатии Ñ Ð¿Ð¾Ð²ÐµÑ‡Ðµ от три раздела)",
- "rememberpassword" => "ЗапомнÑне на паролата между ÑеÑиите",
- "editwidth" => "КутиÑта за редактиране е Ñ Ð¼Ð°ÐºÑимална ширина",
- "watchdefault" => "ДобавÑне на редактираните Ñтраници към ÑпиÑъка<br> за наблюдение",
- "minordefault" => "ОтбелÑзване на вÑички промени като малки<br> по подразбиране",
- "previewontop" => "Показване на Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´ преди<br> текÑтовата кутиÑ, а не Ñлед неÑ",
- "nocache" => "Без Ñкладиране на Ñтраниците"
+ 'hover' => 'Изпъкване на препратките, когато мишката е върху Ñ‚ÑÑ…',
+ 'underline' => 'Подчертаване на препратките',
+ 'highlightbroken' => 'Показване на невалидните препратки <a href="" class="new">така</a> (алтернативно: така<a href="" class="internal">?</a>)',
+ 'justify' => 'ДвуÑтранно подравнÑване на абзаците',
+ 'hideminor' => 'Скриване на малки редакции в поÑледните промени',
+ 'usenewrc' => 'ПодобрÑване на поÑледните промени (не за вÑички браузъри)',
+ 'numberheadings' => 'Ðомериране на заглавиÑта',
+ 'showtoolbar' => 'Показване на лента за редактиране',
+ 'editondblclick' => 'Редактиране при двойно щракване (Javascript)',
+ 'editsection' =>'ВъзможноÑÑ‚ за редактиране на раздел чрез препратка [редактиране]',
+ 'editsectiononrightclick' => 'ВъзможноÑÑ‚ за редактиране на раздел при щракване Ñ Ð´ÐµÑÐ½Ð¸Ñ Ð±ÑƒÑ‚Ð¾Ð½ върху заглавие на раздел (Javascript)',
+ 'showtoc' =>'Показване на Ñъдържание (за Ñтатии Ñ Ð¿Ð¾Ð²ÐµÑ‡Ðµ от три раздела)',
+ 'rememberpassword' => 'ЗапомнÑне на паролата между ÑеÑиите',
+ 'editwidth' => 'МакÑимална ширина на кутиÑта за редактиране',
+ 'watchdefault' => 'ДобавÑне на редактираните Ñтраници към ÑпиÑъка за наблюдение',
+ 'minordefault' => 'ОтбелÑзване на вÑички промени като малки по подразбиране',
+ 'previewontop' => 'Показване на Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´ преди текÑтовата кутиÑ, а не Ñлед неÑ',
+ 'nocache' => 'Без Ñкладиране на Ñтраниците'
);
/* private */ $wgBookstoreListBg = array(
- "books.bg" => "http://www.books.bg/ISBN/$1",
- "AddALL" => "http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN",
- "PriceSCAN" => "http://www.pricescan.com/books/bookDetail.asp?isbn=$1",
- "Barnes & Noble" => "http://shop.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1",
- "Amazon.com" => "http://www.amazon.com/exec/obidos/ISBN=$1",
+ 'books.bg' => "http://www.books.bg/ISBN/$1",
+ 'AddALL' => "http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN",
+ 'PriceSCAN' => "http://www.pricescan.com/books/bookDetail.asp?isbn=$1",
+ 'Barnes & Noble' => "http://shop.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1",
+ 'Amazon.com' => "http://www.amazon.com/exec/obidos/ISBN=$1",
);
/* private */ $wgWeekdayNamesBg = array(
@@ -108,58 +107,104 @@
'Ñеп', 'окт', 'ное', 'дек'
);
+
+# Note to translators:
+# Please include the English words as synonyms. This allows people
+# from other wikis to contribute more easily.
+#
+
+/* private */ $wgMagicWordsBg = 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:', 'СЪОБЩNW:' ),
+ 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", "$1пкÑ" ),
+ 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', 'СЪРВЪР' )
+);
+
# All special pages have to be listed here: a description of ""
# will make them not show up on the "Special Pages" page, which
# is the right thing for some of them (such as the "targeted" ones).
#
/* private */ $wgValidSpecialPagesBg = array(
- "Userlogin" => "Влизане",
- "Userlogout" => "Излизане",
- "Preferences" => "ПотребителÑки наÑтройки",
- "Watchlist" => "Ðаблюдавани Ñтраници",
- "Recentchanges" => "ПоÑледни промени",
- "Upload" => "Качване на картинки",
- "Imagelist" => "СпиÑък на картинките",
- "Listusers" => "РегиÑтрирани потребители",
- "Statistics" => "СтатиÑтика",
- "Randompage" => "Случайна ÑтатиÑ",
-
- "Lonelypages" => "Статии-Ñираци",
- "Unusedimages" => "Картинки-Ñираци",
- "Popularpages" => "ИзвеÑтни Ñтатии",
- "Wantedpages" => "Желани Ñтатии",
- "Shortpages" => "Кратки Ñтатии",
- "Longpages" => "Дълги Ñтатии",
- "Newpages" => "Ðови Ñтатии",
- "Ancientpages" => "Стари Ñтатии",
- "Deadendpages" => "Задънени Ñтраници",
-# "Intl" => "Междуезикови препратки",
- "Allpages" => "Ð’Ñички Ñтраници по заглавие",
-
- "Ipblocklist" => "Блокирани потребители/ИП-адреÑи",
- "Maintenance" => "Страница за поддръжка",
- "Specialpages" => "",
- "Contributions" => "",
- "Emailuser" => "",
- "Whatlinkshere" => "",
- "Recentchangeslinked" => "",
- "Movepage" => "",
- "Booksources" => "Външни източници на книги",
- "Categories" => "Категории Ñтраници",
- "Export" => "Ð˜Ð·Ð½Ð¾Ñ ÐºÐ°Ñ‚Ð¾ XML",
- "Version" => "ВерÑÐ¸Ñ Ð½Ð° МедиÑУики",
+ 'Userlogin' => 'Влизане',
+ 'Userlogout' => 'Излизане',
+ 'Preferences' => 'ПотребителÑки наÑтройки',
+ 'Watchlist' => 'Ðаблюдавани Ñтраници',
+ 'Recentchanges' => 'ПоÑледни промени',
+ 'Upload' => 'Качване на картинки',
+ 'Imagelist' => 'СпиÑък на картинките',
+ 'Listusers' => 'РегиÑтрирани потребители',
+ 'Statistics' => 'СтатиÑтика',
+ 'Randompage' => 'Случайна ÑтатиÑ',
+
+ 'Lonelypages' => 'Статии Ñираци',
+ 'Unusedimages' => 'Картинки Ñираци',
+ 'Popularpages' => 'ИзвеÑтни Ñтатии',
+ 'Wantedpages' => 'Желани Ñтатии',
+ 'Shortpages' => 'Кратки Ñтатии',
+ 'Longpages' => 'Дълги Ñтатии',
+ 'Newpages' => 'Ðови Ñтатии',
+ 'Ancientpages' => 'Стари Ñтатии',
+ 'Deadendpages' => 'Задънени Ñтатии',
+# 'Intl' => 'Междуезикови препратки',
+ 'Allpages' => 'Ð’Ñички Ñтатии по заглавие',
+
+ 'Ipblocklist' => 'Блокирани потребители/IP-адреÑи',
+ 'Maintenance' => 'Страница за поддръжка',
+ 'Specialpages' => '',
+ 'Contributions' => '',
+ 'Emailuser' => '',
+ 'Whatlinkshere' => '',
+ 'Recentchangeslinked' => '',
+ 'Movepage' => '',
+ 'Blockme' => '',
+ 'Booksources' => 'Външни източници на книги',
+ 'Categories' => 'Категории Ñтраници',
+ 'Export' => 'ИзнаÑÑне като XML',
+ 'Version' => 'ВерÑÐ¸Ñ Ð½Ð° МедиÑУики',
+ 'Allmessages' => 'Ð’Ñички ÑиÑтемни ÑъобщениÑ',
+ 'Search' => '',
);
/* private */ $wgSysopSpecialPagesBg = array(
- "Blockip" => "Блокиране на потребител/ИП-адреÑ",
- "Asksql" => "Справка към базата данни",
- "Undelete" => "ВъзÑтановÑване на изтрити Ñтраници",
- "Makesysop" => "Превръщане на потребител в админиÑтратор"
+ 'Blockip' => 'Блокиране на потребител/IP-адреÑ',
+ 'Asksql' => 'Справка към базата данни',
+ 'Undelete' => 'ВъзÑтановÑване на изтрити Ñтраници',
+ 'Makesysop' => 'Превръщане на потребител в админиÑтратор',
+ 'Import' => 'ВнаÑÑне на Ñтраница Ñ Ð¸ÑториÑ',
);
/* private */ $wgDeveloperSpecialPagesBg = array(
- "Lockdb" => "Само доÑтъп за четене към базата данни",
- "Unlockdb" => "Разрешение на доÑтъп за пиÑане към базата данни",
+ 'Lockdb' => 'Забрана на доÑтъп за пиÑане към базата данни',
+ 'Unlockdb' => 'Разрешаване на доÑтъп за пиÑане към базата данни',
);
@@ -171,171 +216,215 @@
# hyphen (-). If you need more characters, you may be able to change
# the regex in MagicWord::initRegex
+# БЕЛЕЖКÐ: За да изключите "Текущите ÑъбитиÑ" в Ñтраничното меню,
+# въведете 'currentevents' => '-'
+
+# БЕЛЕЖКÐ: За да изключите "УÑловиÑта за ползване" в заглавните препратки,
+# въведете 'disclaimers' => ''
+
+# БЕЛЕЖКÐ: За да изключите "Портала" за общноÑтта в заглавните препратки,
+# въведете 'portal' => ''
+
/* private */ $wgAllMessagesBg = array(
# Bits of text used by many pages:
#
-"categories" => "Категории Ñтраници",
-"category" => "категориÑ",
-"category_header" => "Статии в ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ \"$1\"",
-"subcategories" => "Подкатегории",
-"linktrail" => "/^((?:[a-z]|а|б|в|г|д|е|ж|з|и|й|к|л|м|н|о|п|Ñ€|Ñ|Ñ‚|у|Ñ„|Ñ…|ц|ч|ш|щ|ÑŠ|Ñ‹|ÑŒ|Ñ|ÑŽ|Ñ)+)(.*)\$/sD",
-"mainpage" => "Ðачална Ñтраница",
-"mainpagetext" => "СиÑтемата на Уики бе уÑпешно инÑталирана.",
-"about" => "За $wgSitename",
-"aboutwikipedia" => "За $wgSitename",
-"aboutpage" => "$wgMetaNamespace:За $wgSitename",
-"help" => "Помощ",
-"helppage" => "$wgMetaNamespace:Помощ",
-"wikititlesuffix" => "$wgSitename",
-"bugreports" => "Ð¡ÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° грешки",
-"bugreportspage" => "$wgMetaNamespace:СъобщениÑ_за_грешки",
-"sitesupport" => "ДарениÑ",
-"sitesupportpage" => "", # If not set, won't appear. Can be wiki page or URL
-"faq" => "ЧЗВ",
-"faqpage" => "$wgMetaNamespace:ЧЗВ",
-"edithelp" => "Помощ при редактиране",
-"edithelppage" => "$wgMetaNamespace:Как_Ñе_редактират_Ñтраници",
-"cancel" => "Отказ",
-"qbfind" => "ТърÑене",
-"qbbrowse" => "Избор",
-"qbedit" => "Редактиране",
-"qbpageoptions" => "ÐаÑтройки за Ñтраницата",
-"qbpageinfo" => "Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Ñтраницата",
-"qbmyoptions" => "Моите наÑтройки",
-"qbspecialpages" => "Специални Ñтраници",
-"moredotdotdot" => "Повече...",
-"mypage" => "МоÑта Ñтраница",
-"mytalk" => "MоÑта беÑеда",
-"currentevents" => "Текущи ÑъбитиÑ",
-"disclaimers" => "Disclaimers",
-"disclaimerpage" => "$wgMetaNamespace:General_disclaimer",
-"errorpagetitle" => "Грешка",
-"returnto" => "Обратно към $1.",
-"fromwikipedia" => "От $wgSitename, Ñвободната енциклопедиÑ",
-"whatlinkshere" => "Какво Ñочи наÑам",
-"help" => "Помощ",
-"search" => "ТърÑене",
-"go" => "ОтварÑне",
-"history" => "ИÑториÑ",
-"printableversion" => "ВерÑÐ¸Ñ Ð·Ð° печат",
-"editthispage" => "Редактиране",
-"deletethispage" => "Изтриване",
-"protectthispage" => "Защита",
-"unprotectthispage" => "СвалÑне на защитата",
-"newpage" => "Ðова Ñтраница",
-"talkpage" => "ДиÑкуÑионна Ñтраница",
-"postcomment" => "ОÑтавÑне на коментар",
-"articlepage" => "Преглед на ÑтатиÑ",
-"subjectpage" => "Преглед на тема", # For compatibility
-"userpage" => "Преглед на потребителÑка Ñтраница",
-"wikipediapage" => "ОÑновна Ñтраница",
-"imagepage" => "Преглед на картинка",
-"viewtalkpage" => "Преглед на беÑеда",
-"otherlanguages" => "Други езици",
-"redirectedfrom" => "(ПренаÑочване от $1)",
-"lastmodified" => "ПоÑледна промÑна на Ñтраницата: $1.",
-"viewcount" => "Страницата е била преглеждана $1 пъти.",
-"gnunote" => "Ð’Ñички текÑтове Ñа доÑтъпни при уÑловиÑта на <a class=internal href='/wiki/Лиценз_за_Ñвободна_документациÑ_на_ГÐУ'>лиценза за Ñвободна Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° ГÐУ</a>.",
-"printsubtitle" => "(от http://www.wikipedia.org)",
-"protectedpage" => "Защитена Ñтраница",
-"administrators" => "$wgMetaNamespace:ÐдминиÑтратори",
-"sysoptitle" => "ИзиÑкване на админиÑтраторÑки права",
-"sysoptext" => "Желаното дейÑтвие може да Ñе изпълни Ñамо от админиÑтратори.
+'categories' => 'Категории',
+'category' => 'категориÑ',
+'category_header' => "Статии в ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸Ñ \"$1\"",
+'subcategories' => 'Подкатегории',
+'linktrail' => "/^((?:[a-z]|а|б|в|г|д|е|ж|з|и|й|к|л|м|н|о|п|Ñ€|Ñ|Ñ‚|у|Ñ„|Ñ…|ц|ч|ш|щ|ÑŠ|Ñ‹|ÑŒ|Ñ|ÑŽ|Ñ)+)(.*)\$/sD",
+'mainpage' => 'Ðачална Ñтраница',
+'mainpagetext' => 'СиÑтемата на Уики бе уÑпешно инÑталирана.',
+'mainpagedocfooter' => "МолÑ, разгледайте [http://meta.wikipedia.org/wiki/MediaWiki_i18n документациÑта]
+ и [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide ръководÑтвото] за подробна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно МедиÑУики.",
+'portal' => 'Портал за общноÑтта',
+'portal-url' => '{{ns:4}}:Портал',
+'about' => "За {{SITENAME}}",
+'aboutwikipedia' => "За {{SITENAME}}",
+'aboutpage' => "{{ns:4}}:За {{SITENAME}}",
+'article' => 'СтатиÑ',
+'help' => 'Помощ',
+'helppage' => "{{ns:12}}:Помощ",
+'wikititlesuffix' => "{{SITENAME}}",
+'bugreports' => 'Ð¡ÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð° грешки',
+'bugreportspage' => "{{ns:4}}:СъобщениÑ_за_грешки",
+"sitesupport" => "ДарениÑ", # Set a URL in $wgSiteSupportPage in LocalSettings.php
+'sitesupportpage' => '', # If not set, won't appear. Can be wiki page or URL
+'faq' => 'ЧЗВ',
+'faqpage' => "{{ns:4}}:ЧЗВ",
+'edithelp' => 'Помощ при редактиране',
+'edithelppage' => "{{ns:12}}:Как_Ñе_редактират_Ñтраници",
+'cancel' => 'Отказ',
+'qbfind' => 'ТърÑене',
+'qbbrowse' => 'Избор',
+'qbedit' => 'Редактиране',
+'qbpageoptions' => 'ÐаÑтройки за Ñтраницата',
+'qbpageinfo' => 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Ñтраницата',
+'qbmyoptions' => 'Моите наÑтройки',
+'qbspecialpages' => 'Специални Ñтраници',
+'moredotdotdot' => 'Повече...',
+'mypage' => 'МоÑта Ñтраница',
+'mytalk' => 'МоÑта беÑеда',
+'anontalk' => 'БеÑеда за адреÑа',
+'navigation' => 'ÐавигациÑ',
+'currentevents' => 'Текущи ÑъбитиÑ',
+'disclaimers' => 'УÑÐ»Ð¾Ð²Ð¸Ñ Ð·Ð° ползване',
+'disclaimerpage' => "{{ns:4}}:УÑловиÑ_за_ползване",
+'errorpagetitle' => 'Грешка',
+'returnto' => "Обратно към $1.",
+'fromwikipedia' => "от {{SITENAME}}, Ñвободната енциклопедиÑ",
+'whatlinkshere' => 'Какво Ñочи наÑам',
+'help' => 'Помощ',
+'search' => 'ТърÑене',
+'go' => 'ОтварÑне',
+'history' => 'ИÑториÑ',
+'history_short' => 'ИÑториÑ',
+'printableversion' => 'ВерÑÐ¸Ñ Ð·Ð° печат',
+'edit' => 'Редактиране',
+'editthispage' => 'Редактиране',
+'delete' => 'Изтриване',
+'deletethispage' => 'Изтриване',
+'undelete_short' => 'ВъзÑтановÑване',
+'protect' => 'Защита',
+'protectthispage' => 'Защита',
+'unprotect' => 'СвалÑне на защитата',
+'unprotectthispage' => 'СвалÑне на защитата',
+'newpage' => 'Ðова Ñтраница',
+'talkpage' => 'ДиÑкуÑионна Ñтраница',
+'specialpage' => 'Специална Ñтраница',
+'personaltools' => 'Лични инÑтрументи',
+'postcomment' => 'ОÑтавÑне на Ñъобщение',
+'addsection' => '+',
+'articlepage' => 'Преглед на ÑтатиÑ',
+'subjectpage' => 'Преглед на тема', # For compatibility
+'talk' => 'БеÑеда',
+'toolbox' => 'ÐšÑƒÑ‚Ð¸Ñ Ñ Ð¸Ð½Ñтрументи',
+'userpage' => 'ПотребителÑка Ñтраница',
+'wikipediapage' => 'ОÑновна Ñтраница',
+'imagepage' => 'Преглед на картинка',
+'viewtalkpage' => 'Преглед на беÑеда',
+'otherlanguages' => 'Други езици',
+'redirectedfrom' => "(пренаÑочване от $1)",
+'lastmodified' => "ПоÑледна промÑна на Ñтраницата: $1.",
+'viewcount' => "Страницата е била преглеждана $1 пъти.",
+# obsolete
+'gnunote' => 'Ð’Ñички текÑтове Ñа доÑтъпни при уÑловиÑта на [[Лиценз_за_Ñвободна_документациÑ_на_ГÐУ|лиценза за Ñвободна Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° ГÐУ]].',
+'copyright' => "Съдържанието е доÑтъпно при уÑловиÑта на $1.",
+'poweredby' => "{{SITENAME}} Ñе задвижва от [http://www.mediawiki.org/ МедиÑУики], Ñофтуер за уики Ñ Ð¾Ñ‚Ð²Ð¾Ñ€ÐµÐ½ код.",
+'printsubtitle' => '(от {{SERVER}})',
+'protectedpage' => 'Защитена Ñтраница',
+'administrators' => "{{ns:4}}:ÐдминиÑтратори",
+'sysoptitle' => 'ИзиÑкване на админиÑтраторÑки права',
+'sysoptext' => "Желаното дейÑтвие може да Ñе изпълни Ñамо от админиÑтратори.
Вижте $1.",
-"developertitle" => "ИзиÑкват Ñе права на разработчик",
-"developertext" => "Желаното дейÑтвие може да Ñе изпълни Ñамо от разработчици.
+'developertitle' => 'ИзиÑкват Ñе права на разработчик',
+'developertext' => "Желаното дейÑтвие може да Ñе изпълни Ñамо от разработчици.
Вижте $1.",
-"bureaucrattitle" => "ИзиÑкват Ñе права на бюрократ",
-"bureaucrattext" => "Желаното дейÑтвие може да Ñе изпълни Ñамо от бюрократи.",
+'bureaucrattitle' => 'ИзиÑкват Ñе права на бюрократ',
+'bureaucrattext' => 'Желаното дейÑтвие може да Ñе изпълни Ñамо от бюрократи.',
"nbytes" => "$1 байта",
-"go" => "ОтварÑне",
-"ok" => "Добре",
-"sitetitle" => $wgSitename,
-"sitesubtitle" => "Свободната енциклопедиÑ",
-"retrievedfrom" => "Взето от \"$1\".",
-"newmessages" => "Имате $1.",
-"newmessageslink" => "нови ÑъобщениÑ",
-"editsection"=>"редактиране",
-"toc" => "Съдържание",
-"showtoc" => "показване",
-"hidetoc" => "Ñкриване",
-"thisisdeleted" => "Преглед или възÑтановÑване на $1?",
-"restorelink" => "$1 изтрити редакции",
+'go' => 'ОтварÑне',
+'ok' => 'Добре',
+'sitetitle' => "{{SITENAME}}",
+'pagetitle' => "$1 - {{SITENAME}}",
+'sitesubtitle' => 'Свободната енциклопедиÑ',
+'retrievedfrom' => "Взето от \"$1\".",
+'newmessages' => "Имате $1.",
+'newmessageslink' => 'нови ÑъобщениÑ',
+'editsection' => 'редактиране',
+'toc' => 'Съдържание',
+'showtoc' => 'показване',
+'hidetoc' => 'Ñкриване',
+'thisisdeleted' => "Преглед или възÑтановÑване на $1?",
+'restorelink' => "$1 изтрити редакции",
+'feedlinks' => 'Feed:',
+
+# Short words for each namespace, by default used in the 'article' tab in monobook
+'nstab-main' => 'СтатиÑ',
+'nstab-user' => 'ПотребителÑка Ñтраница',
+'nstab-media' => 'МедиÑ',
+'nstab-special' => 'Специална Ñтраница',
+'nstab-wp' => "За {{SITENAME}}",
+'nstab-image' => 'Картинка',
+'nstab-mediawiki' => 'Съобщение',
+'nstab-template' => 'Шаблон',
+'nstab-help' => 'Помощ',
+'nstab-category' => 'КатегориÑ',
# Main script and global functions
#
-"nosuchaction" => "ÐÑма такова дейÑтвие",
-"nosuchactiontext" => "ДейÑтвието, указано от URL-адреÑа, не Ñе разпознава
-от ÑиÑтемата.",
-"nosuchspecialpage" => "ÐÑма такава Ñпециална Ñтраница",
-"nospecialpagetext" => "Отправихте заÑвка за Ñпециална Ñтраница, коÑто не Ñе разпознава от ÑиÑтемата.",
+'nosuchaction' => 'ÐÑма такова дейÑтвие',
+'nosuchactiontext' => 'ДейÑтвието, указано от Ð¼Ñ€ÐµÐ¶Ð¾Ð²Ð¸Ñ Ð°Ð´Ñ€ÐµÑ, не Ñе разпознава от ÑиÑтемата.',
+'nosuchspecialpage' => 'ÐÑма такава Ñпециална Ñтраница',
+'nospecialpagetext' => 'Отправихте заÑвка за Ñпециална Ñтраница, коÑто не Ñе разпознава от ÑиÑтемата.',
# General errors
#
-"error" => "Грешка",
-"databaseerror" => "Грешка при работа Ñ Ð±Ð°Ð·Ð°Ñ‚Ð° данни",
-"dberrortext" => "Възникна Ñинтактична грешка при заÑвка към базата данни.
+'error' => 'Грешка',
+'databaseerror' => 'Грешка при работа Ñ Ð±Ð°Ð·Ð°Ñ‚Ð° данни',
+'dberrortext' => "Възникна Ñинтактична грешка при заÑвка към базата данни.
Това може да е причинено от невалидна заÑвка за Ñ‚ÑŠÑ€Ñене (вижте $5)
или да ÑвидетелÑтва за грешка в Ñитемата.
ПоÑледната заÑвка към базата данни бе:
<blockquote><tt>$1</tt></blockquote>
при функциÑта \"<tt>$2</tt>\".
MySQL дава грешка \"<tt>$3: $4</tt>\".",
-"dberrortextcl" => "Възникна Ñинтактична грешка при заÑвка към базата данни.
+'dberrortextcl' => "Възникна Ñинтактична грешка при заÑвка към базата данни.
ПоÑледната заÑвка към базата данни бе:
\"$1\"
при функциÑта \"$2\".
MySQL дава грешка \"$3: $4\".\n",
-"noconnect" => "Ð’ момента има техничеÑки трудноÑти и не може да Ñе оÑъщеÑтви връзка Ñ Ð±Ð°Ð·Ð°Ñ‚Ð° данни.",
-"nodb" => "ÐеуÑпех при избиране на база данни $1",
-"cachederror" => "Показано е Ñкладирано копие на желаната Ñтраница, което евентуално може да е оÑтарÑло.",
-"readonly" => "Базата данни е затворена за промени",
-"enterlockreason" => "ПоÑочете причина за затварÑнето, като дадете и
-приблизителна оценка кога базата данни ще бъде отново отворена",
-"readonlytext" => "Базата данни на $wgSitename е временно затворена за
-промени - вероÑтно за рутинна поддръжка,
+'noconnect' => "Ð’ момента има техничеÑки трудноÑти и не може да Ñе оÑъщеÑтви връзка Ñ Ð±Ð°Ð·Ð°Ñ‚Ð° данни.",
+'nodb' => "ÐеуÑпех при избиране на база данни $1",
+'cachederror' => 'Показано е Ñкладирано копие на желаната Ñтраница, което евентуално може да е оÑтарÑло.',
+'readonly' => 'Базата данни е затворена за промени',
+'enterlockreason' => 'ПоÑочете причина за затварÑнето, като дадете и
+приблизителна оценка кога базата данни ще бъде отново отворена',
+'readonlytext' => "Базата данни е временно затворена за промени - вероÑтно за рутинна поддръжка,
Ñлед коÑто ще бъде отново на разположение.
ÐдминиÑтраторът, който Ñ Ðµ затворил, дава Ñледното обÑÑнение:
<p>$1",
-"missingarticle" => "ТекÑÑ‚ÑŠÑ‚ на Ñтраницата \"$1\" не бе намерен в базата данни.
+'missingarticle' => "ТекÑÑ‚ÑŠÑ‚ на Ñтраницата \"$1\" не бе намерен в базата данни.
<p>Това обикновено е причинено от поÑледване на оÑтарÑла разлика или
препратка от иÑториÑта към изтрита Ñтраница.
<p>Ðко не това е причината, е възможно да Ñте открили грешка в ÑиÑтемата.
МолÑ, Ñъобщете за това на админиÑтратор, като включите и името на ÑтатиÑта.",
-"internalerror" => "Вътрешна грешка",
-"filecopyerror" => "Файлът \"$1\" не можа да бъде копиран като \"$2\".",
-"filerenameerror" => "Файлът \"$1\" не можа да бъде преименуван на \"$2\".",
-"filedeleteerror" => "Файлът \"$1\" не можа да бъде изтрит.",
-"filenotfound" => "Файлът \"$1\" не бе намерен.",
-"unexpected" => "Ðеочаквана ÑтойноÑÑ‚: \"$1\"=\"$2\".",
-"formerror" => "Възникна грешка при изпращане на формулÑра",
-"badarticleerror" => "ДейÑтвието не може да Ñе изпълни върху Ñтраницата.",
-"cannotdelete" => "Указаната Ñтраница или картинка не можа да бъде изтрита. Възможно е вече да е изтрита от нÑкой друг.",
-"badtitle" => "Ðевалидно заглавие",
-"badtitletext" => "Желаното заглавие на ÑÑ‚Ð°Ñ‚Ð¸Ñ Ðµ невалидно, празно или
-неправилна препратка към Ð£Ð¸ÐºÐ¸Ð¿ÐµÐ´Ð¸Ñ Ð½Ð° друг език.",
-"perfdisabled" => "СъжалÑваме! Това ÑвойÑтво е временно изключено,
-защото Ð·Ð°Ð±Ð°Ð²Ñ Ð±Ð°Ð·Ð°Ñ‚Ð° данни дотам, че никой не може да използва Уики.",
-"perfdisabledsub" => "Съхранен екземплÑÑ€ от $1:",
-"wrong_wfQuery_params" => "Ðевалидни аргументи за wfQuery()<br>
-ФункциÑ: $1<br>
+'internalerror' => 'Вътрешна грешка',
+'filecopyerror' => "Файлът \"$1\" не можа да бъде копиран като \"$2\".",
+'filerenameerror' => "Файлът \"$1\" не можа да бъде преименуван на \"$2\".",
+'filedeleteerror' => "Файлът \"$1\" не можа да бъде изтрит.",
+'filenotfound' => "Файлът \"$1\" не бе намерен.",
+'unexpected' => "Ðеочаквана ÑтойноÑÑ‚: \"$1\"=\"$2\".",
+'formerror' => 'Възникна грешка при изпращане на формулÑра',
+'badarticleerror' => 'ДейÑтвието не може да Ñе изпълни върху Ñтраницата.',
+'cannotdelete' => 'Указаната Ñтраница или картинка не можа да бъде изтрита. Възможно е вече да е изтрита от нÑкой друг.',
+'badtitle' => 'Ðевалидно заглавие',
+'badtitletext' => 'Желаното заглавие на ÑÑ‚Ð°Ñ‚Ð¸Ñ Ðµ невалидно, празно или
+неправилна препратка към Ð£Ð¸ÐºÐ¸Ð¿ÐµÐ´Ð¸Ñ Ð½Ð° друг език.',
+'perfdisabled' => 'СъжалÑваме! Това ÑвойÑтво е временно изключено,
+защото Ð·Ð°Ð±Ð°Ð²Ñ Ð±Ð°Ð·Ð°Ñ‚Ð° данни дотам, че никой не може да използва уикито.',
+'perfdisabledsub' => "Съхранен екземплÑÑ€ от $1:",
+'perfcached' => 'Следните данни Ñа извлечени от Ñклада и затова може да не отговарÑÑ‚ на текущото ÑÑŠÑтоÑние:',
+'wrong_wfQuery_params' => "Ðевалидни аргументи за wfQuery()<br />
+ФункциÑ: $1<br />
ЗаÑвка: $2
",
-"viewsource" => "Изходен код",
-"protectedtext" => "Страницата е затворена за промени. СъщеÑтвуват нÑколко
+'viewsource' => 'Защитена Ñтраница',
+'protectedtext' => "Страницата е затворена за промени. СъщеÑтвуват нÑколко
причини това да е така, молÑ, вижте
-[[$wgMetaNamespace:Защитена_Ñтраница]].
+[[{{ns:4}}:Защитена_Ñтраница]].
Може да прегледате и копирате Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´ на Ñтраницата:",
+'seriousxhtmlerrors' => 'tidy откри Ñериозни грешки в кода на XHTML.',
# Login and logout pages
#
"logouttitle" => "Излизане на потребител",
"logouttext" => "ИзлÑзохте от ÑиÑтемата.
-Може да продължите да използвате $wgSitename анонимно или да влезете отново
+Може да продължите да използвате {{SITENAME}} анонимно или да влезете отново
като друг потребител. Обърнете внимание, че нÑкои Ñтраници вÑе още
ще Ñе показват така, ÑÑкаш Ñте влезли, докато не изтриете кеш-паметта на браузъра.\n",
@@ -348,120 +437,133 @@ MySQL дава грешка \"$3: $4\".\n",
"yourpasswordagain" => "Въведете повторно парола",
"newusersonly" => " (Ñамо за нови потребители)",
"remembermypassword" => "ЗапомнÑне на паролата между ÑеÑиите.",
-"loginproblem" => "<b>Имаше проблем Ñ Ð’Ð°ÑˆÐµÑ‚Ð¾ влизане.</b><br>Опитайте отново!",
-"alreadyloggedin" => "<font color=\"red\"><b>$1, вече Ñте влезли в ÑиÑтемата!</b></font><br>\n",
+"loginproblem" => "<b>Имаше проблем Ñ Ð’Ð°ÑˆÐµÑ‚Ð¾ влизане.</b><br />Опитайте отново!",
+"alreadyloggedin" => "<font color=\"red\"><b>$1, вече Ñте влезли в ÑиÑтемата!</b></font><br />\n",
-"areyounew" => "Ðко поÑещавате за пръв път $wgSitename и иÑкате да Ñи откриете
+"areyounew" => "Ðко поÑещавате за пръв път {{SITENAME}} и иÑкате да Ñи откриете
потребителÑка Ñметка,
молÑ, въведете потребителÑко име и парола.
ПоÑочването на електронна поща е незадължително, но Ñе препоръчва:
ако Ñи забравите паролата, може да поиÑкате Ñ‚Ñ Ð´Ð° Ви бъде изпратена
-на Ð´Ð°Ð´ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑ.<br>\n",
-
-"login" => "Влизане",
-"loginprompt" => "БиÑквитките Ñ‚Ñ€Ñбва да Ñа разрешени, за да може да влезете в $wgSitename.",
-"userlogin" => "Влизане",
-"logout" => "Излизане",
-"userlogout" => "Излизане",
-"notloggedin" => "Ðе Ñте влезли",
-"createaccount" => "Създаване на Ñметка",
-"createaccountmail" => "Ñ Ð¿Ð¸Ñмо по е-пощата",
-"badretype" => "Въведените пароли не Ñъвпадат.",
-"userexists" => "Въведеното потребителÑко име вече Ñе използва. МолÑ, изберете друго име.",
-"youremail" => "Вашата е-поща*",
-"yournick" => "ВашиÑÑ‚ пÑевдоним (за подпиÑи)",
-"emailforlost" => "* ПоÑочването на електронна поща не е задължително,
-но позволÑва на хората да Ñе Ñвържат Ñ Ð’Ð°Ñ, без да Ñе налага да им Ñъобщавате
- адреÑа Ñи, а Ñъщо помага и на ВаÑ, ако Ñлучайно забравите паролата Ñи.",
-"loginerror" => "Грешка при влизане",
-"nocookiesnew" => "ПотребителÑката Ñметка бе Ñъздадена, но Вие не Ñте влезли. $wgSitename използва биÑквитки за влизане на потребителите. МолÑ, разрешете биÑквитките във Ð’Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€, тъй като те Ñа забранени, и Ñлед това влезте Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñкото Ñи име и парола.",
-"nocookieslogin" => "$wgSitename използва биÑквитки за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° влизаниÑта. МолÑ, разрешете биÑквитките във Ð’Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€, тъй като те Ñа забранени, и опитайте отново.",
-"noname" => "Ðе указахте валидно потребителÑко име.",
-"loginsuccesstitle" => "УÑпешно влизане",
-"loginsuccess" => "ВлÑзохте в $wgSitename като \"$1\".",
-"nosuchuser" => "ÐÑма потребител Ñ Ð¸Ð¼ÐµÑ‚Ð¾ \"$1\".
+на Ð´Ð°Ð´ÐµÐ½Ð¸Ñ Ð°Ð´Ñ€ÐµÑ.<br />\n",
+
+'login' => 'Влизане',
+'loginprompt' => "БиÑквитките Ñ‚Ñ€Ñбва да Ñа разрешени, за да може да влезете в {{SITENAME}}.",
+'userlogin' => 'Влизане',
+'logout' => 'Излизане',
+'userlogout' => 'Излизане',
+'notloggedin' => 'Ðе Ñте влезли',
+'createaccount' => 'Създаване на Ñметка',
+'createaccountmail' => 'Ñ Ð¿Ð¸Ñмо по електронната поща',
+'badretype' => 'Въведените пароли не Ñъвпадат.',
+'userexists' => 'Въведеното потребителÑко име вече Ñе използва. МолÑ, изберете друго име.',
+'youremail' => 'Вашата е-поща*',
+'yourrealname' => 'Вашето иÑтинÑко име*',
+'yournick' => 'ВашиÑÑ‚ пÑевдоним (за подпиÑи)',
+'emailforlost' => '* Полетата, отбелÑзани ÑÑŠÑ Ð·Ð²ÐµÐ·Ð´Ð° (*), Ñа незадължителни. ПоÑочването на електронна поща позволÑва на хората да Ñе Ñвържат Ñ Ð’Ð°Ñ, без да Ñе налага да им Ñъобщавате адреÑа Ñи, а Ñъщо може да Ñе използва, за да Ви Ñе изпрати нова парола, ако Ñлучайно забравите Ñегашната Ñи.<br /><br /> Ðко поÑочите иÑтинÑкото Ñи име, на него ще бъдат припиÑани Вашите приноÑи.',
+'prefs-help-userdata' => '* <strong>ИÑтинÑко име</strong> (незадължително): ако го поÑочите, на него ще бъдат припиÑани Вашите приноÑи.<br/>
+* <strong>Електронна поща</strong> (незадължително): позволÑва на хората да Ñе Ñвържат Ñ Ð’Ð°Ñ, без да Ñе налага да им Ñъобщавате адреÑа Ñи, а Ñъщо може да Ñе използва, за да Ви Ñе изпрати нова парола, ако Ñлучайно забравите Ñегашната Ñи.',
+'loginerror' => 'Грешка при влизане',
+'nocookiesnew' => "ПотребителÑката Ñметка бе Ñъздадена, но вÑе още не Ñте влезли. {{SITENAME}} използва биÑквитки при влизане на потребителите. МолÑ, разрешете биÑквитките във Ð’Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€, тъй като те Ñа забранени, и Ñлед това влезте Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñкото Ñи име и парола.",
+'nocookieslogin' => "{{SITENAME}} използва биÑквитки за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° влизаниÑта. МолÑ, разрешете биÑквитките във Ð’Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€, тъй като те Ñа забранени, и опитайте отново.",
+'noname' => 'Ðе указахте валидно потребителÑко име.',
+'loginsuccesstitle' => 'УÑпешно влизане',
+'loginsuccess' => "ВлÑзохте в {{SITENAME}} като \"$1\".",
+'nosuchuser' => "ÐÑма потребител Ñ Ð¸Ð¼ÐµÑ‚Ð¾ \"$1\".
Проверете изпиÑването или Ñе региÑтрирайте, използвайки Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€.",
-"wrongpassword" => "Въведената парола е невалидна. МолÑ, опитайте отново.",
-"mailmypassword" => "Изпращане на нова парола",
-"passwordremindertitle" => "ÐапомнÑне за парола от $wgSitename",
-"passwordremindertext" => "ÐÑкой (най-вероÑтно Вие, от ИП-Ð°Ð´Ñ€ÐµÑ $1)
-помоли да Ви изпратим новата парола за влизане в $wgSitename.
+'wrongpassword' => 'Въведената парола е невалидна. МолÑ, опитайте отново.',
+'mailmypassword' => 'Изпращане на нова парола',
+'passwordremindertitle' => "ÐапомнÑне за парола от {{SITENAME}}",
+'passwordremindertext' => "ÐÑкой (най-вероÑтно Вие, от IP-Ð°Ð´Ñ€ÐµÑ $1)
+помоли да Ви изпратим новата парола за влизане в {{SITENAME}}.
Паролата за Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ \"$2\" е \"$3\".
Сега би Ñ‚Ñ€Ñбвало да влезете в ÑиÑтемата и да Ñмените паролата Ñи.",
-"noemail" => "ÐÑма запиÑана е-поща за Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ \"$1\".",
-"passwordsent" => "Ðова парола беше изпратена на електронната поща на \"$1\".
+'noemail' => "ÐÑма запиÑана електронна поща за Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ \"$1\".",
+'passwordsent' => "Ðова парола беше изпратена на електронната поща на \"$1\".
МолÑ, влезте отново, Ñлед като Ñ Ð¿Ð¾Ð»ÑƒÑ‡Ð¸Ñ‚Ðµ.",
-"loginend" => "За да Ñе региÑтрирате, проÑто въведете потребителÑко име и парола (два пъти) и щракнете върху бутона '<b>Създаване на Ñметка</b>'.<br><br>
+'loginend' => "За да Ñе региÑтрирате, проÑто въведете потребителÑко име и парола (два пъти) и щракнете върху бутона '<b>Създаване на Ñметка</b>'.<br /><br />
-Ð¡Ð»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð¿ÑŠÑ‚ е доÑтатъчно да попълните Ñамо първите две полета и да щракнете върху '<b>Влизане</b>'.<br><br>",
+Ð¡Ð»ÐµÐ´Ð²Ð°Ñ‰Ð¸Ñ Ð¿ÑŠÑ‚ е доÑтатъчно да попълните Ñамо първите две полета и да щракнете върху '<b>Влизане</b>'.<br /><br />",
+'mailerror' => "Грешка при изпращане на пиÑмо: $1",
# Edit page toolbar
-"bold_sample" => "Получер текÑÑ‚",
-"bold_tip" => "Получер (удебелен) текÑÑ‚",
-"italic_sample" => "КурÑивен текÑÑ‚",
-"italic_tip" => "КурÑивен (наклонен) текÑÑ‚",
-"link_sample" => "Име на препратка",
-"link_tip" => "Вътрешна препратка",
-"extlink_sample" => "http://www.primer.com Име на препратката",
-"extlink_tip" => "Външна препратка (не забравÑйте http:// отпред)",
-"headline_sample" => "Заглавен текÑÑ‚",
-"headline_tip" => "Заглавие",
-"math_sample" => "Тук въведете формулата",
-"math_tip" => "МатематичеÑка формула (LaTeX)",
-"nowiki_sample" => "Тук въведете текÑÑ‚",
-"nowiki_tip" => "Пренебрегване на форматиращите команди",
-"image_sample" => "Primer.jpg",
-"image_tip" => "Вмъкване на картинка",
-"media_sample" => "Primer.mp3",
-"media_tip" => "Препратка към файл",
-"sig_tip" => "ВашиÑÑ‚ Ð¿Ð¾Ð´Ð¿Ð¸Ñ Ð·Ð°ÐµÐ´Ð½Ð¾ Ñ Ð²Ñ€ÐµÐ¼ÐµÐ²Ð° отметка",
-"hr_tip" => "Хоризонтална Ð»Ð¸Ð½Ð¸Ñ (използвайте пеÑтеливо)",
-"infobox" => "Щракнете върху бутон за демонÑтрациÑ",
+'bold_sample' => 'Получер текÑÑ‚',
+'bold_tip' => 'Получер (удебелен) текÑÑ‚',
+'italic_sample' => 'КурÑивен текÑÑ‚',
+'italic_tip' => 'КурÑивен (наклонен) текÑÑ‚',
+'link_sample' => 'Име на препратка',
+'link_tip' => 'Вътрешна препратка',
+'extlink_sample' => 'http://www.primer.com Име на препратката',
+'extlink_tip' => 'Външна препратка (не забравÑйте http:// отпред)',
+'headline_sample' => 'Заглавен текÑÑ‚',
+'headline_tip' => 'Заглавие',
+'math_sample' => 'Тук въведете формулата',
+'math_tip' => 'МатематичеÑка формула (LaTeX)',
+'nowiki_sample' => 'Тук въведете текÑÑ‚',
+'nowiki_tip' => 'Пренебрегване на форматиращите команди',
+'image_sample' => 'Пример.jpg',
+'image_tip' => 'Вмъкване на картинка',
+'media_sample' => 'Пример.mp3',
+'media_tip' => 'Препратка към файл',
+'sig_tip' => 'ВашиÑÑ‚ Ð¿Ð¾Ð´Ð¿Ð¸Ñ Ð·Ð°ÐµÐ´Ð½Ð¾ Ñ Ð²Ñ€ÐµÐ¼ÐµÐ²Ð° отметка',
+'hr_tip' => 'Хоризонтална Ð»Ð¸Ð½Ð¸Ñ (използвайте пеÑтеливо)',
+'infobox' => 'Щракнете върху бутон за демонÑтрациÑ',
+# alert box shown in browsers where text selection does not work, test e.g. with mozilla or konqueror
+'infobox_alert' => "МолÑ, въведете текÑта, който иÑкате да форматирате.\\n Той ще Ñе покаже в информационното поле, откъдето ще може да го изберете.\\nПример:\\n$1\\nще Ñе превърне в:\\n$2",
# Edit pages
#
-"summary" => "Резюме",
-"subject" => "Тема/заглавие",
-"minoredit" => "Това е малка промÑна",
-"watchthis" => "Ðаблюдение на ÑтатиÑта",
-"savearticle" => "Съхранение",
-"preview" => "Предварителен преглед",
-"showpreview" => "Предварителен преглед",
-"blockedtitle" => "ПотребителÑÑ‚ е блокиран",
-"blockedtext" => "Вашето потребителÑко име (или ИП-адреÑ) е блокирано от $1.
-Причината за това е:<br>''$2''<p>Може да Ñе Ñвържете Ñ $1 или Ñ Ð½Ñкой от оÑтаналите
-[[$wgMetaNamespace:ÐдминиÑтратори|админиÑтратори]], за да обÑъдите това.
-
-Може да използвате уÑлугата \"'''Пращане пиÑмо на потребителÑ'''\" единÑтвено, ако Ñте поÑочили валидна е-поща във Вашите [[Специални:Preferences|наÑтройки]].
-
-ВашиÑÑ‚ ИП-Ð°Ð´Ñ€ÐµÑ Ðµ $3. МолÑ, вмъквайте този Ð°Ð´Ñ€ÐµÑ Ð²ÑŠÐ² вÑÑко питане, което правите.",
-"whitelistedittitle" => "ТрÑбва да влезете, за да може да редактирате",
-"whitelistedittext" => "ТрÑбва да влезете [[Специални:Userlogin|влезете]], за да може да редактирате Ñтатии.",
-"whitelistreadtitle" => "ТрÑбва да влезете, за да може да четете",
-"whitelistreadtext" => "ТрÑбва да влезете [[Специални:Userlogin|влезете]], за да може да четете Ñтатии.",
-"whitelistacctitle" => "Ðе ви е позволено да Ñъздавате Ñметка",
-"whitelistacctext" => "За да Ви бъде позволено Ñъздаването на Ñметки, Ñ‚Ñ€Ñбва да [[Специални:Userlogin|влезете]] и да имате подходÑщото разрешение.",
-"accmailtitle" => "Паролата бе изпратена.",
-"accmailtext" => "Паролата за '$1' бе изпратена на $2.",
-"newarticle" => "(Ðова)",
-"newarticletext" => "<div style=\"font-size:small;color:#003333;border-width:1px;border-style:solid;border-color:#aaaaaa;padding:3px\">ПоÑледвали Ñте препратка към Ñтраница, коÑто вÑе още не ÑъщеÑтвува.
+'summary' => '<a href="http://bg.wikipedia.org/wiki/{{ns:4}}:Резюме" title="МолÑ, дайте кратко опиÑание на направените промени">Резюме</a>',
+'subject' => 'Тема/заглавие',
+'minoredit' => 'Това е малка промÑна',
+'watchthis' => 'Ðаблюдение на ÑтатиÑта',
+'savearticle' => 'Съхранение',
+'preview' => 'Предварителен преглед',
+'showpreview' => 'Предварителен преглед',
+'blockedtitle' => 'ПотребителÑÑ‚ е блокиран',
+'blockedtext' => "Вашето потребителÑко име (или IP-адреÑ) е блокирано от $1.
+Причината за това е:<br />''$2''<p>Може да Ñе Ñвържете Ñ $1 или Ñ Ð½Ñкой от оÑтаналите
+[[{{ns:4}}:ÐдминиÑтратори|админиÑтратори]], за да обÑъдите това.
+
+Може да използвате уÑлугата \"'''Пращане пиÑмо на потребителÑ'''\" единÑтвено, ако Ñте поÑочили валидна електронна поща в [[{{ns:-1}}:Preferences|наÑтройки]] Ñи.
+
+ВашиÑÑ‚ IP-Ð°Ð´Ñ€ÐµÑ Ðµ $3. МолÑ, вмъквайте този Ð°Ð´Ñ€ÐµÑ Ð²ÑŠÐ² вÑÑко питане, което правите.",
+'whitelistedittitle' => 'Ðеобходимо е да влезете, за да може да редактирате',
+'whitelistedittext' => 'Ðеобходимо е да [[{{ns:-1}}:Userlogin|влезете]], за да може да редактирате Ñтатии.',
+'whitelistreadtitle' => 'Ðеобходимо е да влезете, за да може да четете',
+'whitelistreadtext' => 'Ðеобходимо е да [[{{ns:-1}}:Userlogin|влезете]], за да може да четете Ñтатии.',
+'whitelistacctitle' => 'Ðе ви е позволено да Ñъздавате Ñметка',
+'whitelistacctext' => 'За да Ви бъде позволено Ñъздаването на Ñметки, Ñ‚Ñ€Ñбва да [[{{ns:-1}}:Userlogin|влезете]] и да имате подходÑщото разрешение.',
+'loginreqtitle' => 'ИзиÑква Ñе влизане',
+'loginreqtext' => 'Ðеобходимо е да [[{{ns:-1}}:Userlogin|влезете]], за да може да разглеждате други Ñтраници.',
+'accmailtitle' => 'Паролата бе изпратена.',
+'accmailtext' => "Паролата за '$1' бе изпратена на $2.",
+'newarticle' => '(нова)',
+'newarticletext' => "<div style=\"font-size:small;color:#033;border-width:1px;border-style:solid;border-color:#aaa;padding:3px\">ПоÑледвали Ñте препратка към Ñтраница, коÑто вÑе още не ÑъщеÑтвува.
За да Ñ Ñъздадете, започнете да пишете в долната текÑтова кутиÑ
-(вижте '''[[$wgMetaNamespace:Помощ|помощната Ñтраница]]''' за повече информациÑ).
-Ðко Ñте дошли тук по погрешка, проÑто натиÑнете '''бутона за връщане''' на Ð’Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€.
-
-Вашата добавка към енциклопедиÑта ще бъде видима '''веднага''' Ñлед Ñъхранението, затова ако проÑто иÑкате да изпробвате как работÑÑ‚ нещата, използвайте Ð½Ð°ÑˆÐ¸Ñ '''[[УикипедиÑ:ПÑÑъчник|пÑÑъчник]]'''.</div>",
-"anontalkpagetext" => "----
-''Това е диÑкуÑионната Ñтраница на анонимен потребител, който вÑе още нÑма Ñметка или не Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°. Затова Ñе налага да използваме [[ИП-адреÑ]], за да го/Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸Ñ†Ð¸Ñ€Ð°Ð¼Ðµ. Такъв ИП-Ð°Ð´Ñ€ÐµÑ Ð¼Ð¾Ð¶Ðµ да Ñе ÑÐ¿Ð¾Ð´ÐµÐ»Ñ Ð¾Ñ‚ нÑколко потребителÑ. Ðко Ñте анонимен потребител и миÑлите, че тези неумеÑтни коментари Ñа отправени към ВаÑ, Ð¼Ð¾Ð»Ñ [[Специални:Userlogin|региÑтрирайте Ñе или влезте в ÑиÑтемата]], за да избегнете евентуално бъдещо объркване Ñ Ð´Ñ€ÑƒÐ³Ð¸ анонимни потребители.''",
-"noarticletext" => "(Ð’ момента Ñтраницата не Ñъдържа текÑÑ‚)",
-"updated" => "(актуализирана)",
-"note" => "<strong>Забележка:</strong> ",
-"previewnote" => "Ðе забравÑйте, че това е Ñамо предварителен преглед и Ñтраницата вÑе още не е Ñъхранена!",
-"previewconflict" => "Този предварителен преглед отразÑва текÑта в горната текÑтова ÐºÑƒÑ‚Ð¸Ñ Ñ‚Ð°ÐºÐ°, както би Ñе показал, ако Ñъхраните.",
-"editing" => "Редактиране на $1",
-"sectionedit" => " (раздел)",
-"commentedit" => " (коментар)",
-"editconflict" => "Различна редакциÑ: $1",
-"explainconflict" => "ÐÑкой друг вече е променил тази Ñтраница, откакто започнахте да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ.
+(вижте '''[[{{ns:4}}:Помощ|помощната Ñтраница]]''' за повече информациÑ).
+Ðко Ñте дошли тук по грешка, проÑто натиÑнете '''бутона за връщане''' на Ð’Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€.
+
+'''Въведете Ñъдържателен текÑÑ‚, който би обогатил енциклопедиÑта.''' Вашата добавка към Ð£Ð¸ÐºÐ¸Ð¿ÐµÐ´Ð¸Ñ Ñ‰Ðµ бъде видима '''веднага''' Ñлед Ñъхранението, затова ако проÑто иÑкате да изпробвате как работÑÑ‚ нещата, използвайте Ð½Ð°ÑˆÐ¸Ñ '''[[{{ns:4}}:ПÑÑъчник|пÑÑъчник]]'''.</div>",
+'talkpagetext' => '<!-- МедиÑУики:talkpagetext -->',
+'anontalkpagetext' => "----
+''Това е диÑкуÑионната Ñтраница на анонимен потребител, който вÑе още нÑма Ñметка или не Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°. Затова Ñе налага да използваме цифров мрежов Ð°Ð´Ñ€ÐµÑ (IP address), за да го/Ñ Ð¸Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸Ñ†Ð¸Ñ€Ð°Ð¼Ðµ. Такъв Ð°Ð´Ñ€ÐµÑ Ð¼Ð¾Ð¶Ðµ да Ñе ÑÐ¿Ð¾Ð´ÐµÐ»Ñ Ð¾Ñ‚ нÑколко потребителÑ.
+
+Ðко Ñте анонимен потребител и миÑлите, че тези неумеÑтни коментари Ñа отправени към ВаÑ, Ð¼Ð¾Ð»Ñ [[{{ns:-1}}:Userlogin|региÑтрирайте Ñе или влезте в ÑиÑтемата]], за да избегнете евентуално бъдещо объркване Ñ Ð´Ñ€ÑƒÐ³Ð¸ анонимни потребители.''",
+'noarticletext' => "(Тази Ñтраница вÑе още не ÑъщеÑтвува. Може да Ñ Ñъздадете, като щракнете на '''Редактиране'''.)",
+'usercssjs' => "'''Бележка:''' След Ñъхранението е необходимо да укажете на браузъра да вземе новата верÑиÑ: '''Mozilla:''' щракнете върху ''презареждане''(или ''ctrl-r''), '''IE / Opera:''' ''ctrl-f5'', '''Safari:''' ''cmd-r'', '''Konqueror''' ''ctrl-r''.",
+'usercssjsyoucanpreview' => "<strong>Съвет:</strong> Използвайте бутона 'Предварителен преглед', за да изпробвате Ð½Ð¾Ð²Ð¸Ñ ÐºÐ¾Ð´ на css/js преди Ñъхранението.",
+'usercsspreview' => "'''Ðе забравÑйте, че това е Ñамо предварителен преглед на кода на CSS, Ñтраницата вÑе още не е Ñъхранена!'''",
+'userjspreview' => "'''Ðе забравÑйте, че това е Ñамо изпробване/предварителен преглед на кода на Javascript, Ñтраницата вÑе още не е Ñъхранена!'''",
+'updated' => '(актуализирана)',
+'note' => '<strong>Забележка:</strong> ',
+'previewnote' => 'Ðе забравÑйте, че това е Ñамо предварителен преглед и Ñтраницата вÑе още не е Ñъхранена!',
+'previewconflict' => 'Този предварителен преглед отразÑва текÑта в горната текÑтова ÐºÑƒÑ‚Ð¸Ñ Ñ‚Ð°ÐºÐ°, както би Ñе показал, ако Ñъхраните.',
+'editing' => "Редактиране на $1",
+'sectionedit' => ' (раздел)',
+'commentedit' => ' (коментар)',
+'editconflict' => "Различна редакциÑ: $1",
+'explainconflict' => "ÐÑкой друг вече е променил тази Ñтраница, откакто започнахте да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ.
Горната текÑтова ÐºÑƒÑ‚Ð¸Ñ Ñъдържа Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ñ‚ÐµÐºÑÑ‚ на Ñтраницата без Вашите промени, които Ñа показани в долната кутиÑ. За да бъдат и те Ñъхранени, е необходимо ръчно да ги премеÑтите в горното поле, тъй като <b>единÑтвено</b> текÑÑ‚ÑŠÑ‚ в него ще бъде Ñъхранен при натиÑкането на бутона \"Съхранение\".\n<p>",
"yourtext" => "ВашиÑÑ‚ текÑÑ‚",
"storedversion" => "Съхранена верÑиÑ",
@@ -470,15 +572,20 @@ MySQL дава грешка \"$3: $4\".\n",
Ðко Ñъхраните, вÑÑкакви промени, направени Ñлед тази верÑиÑ, ще бъдат изгубени.</strong>\n",
"yourdiff" => "Разлики",
# REPLACE THE COPYRIGHT WARNING IF YOUR SITE ISN'T GFDL!
-"copyrightwarning" => "МолÑ, обърнете внимание на това, че
-вÑички приноÑи към $wgSitename Ñе публикуват при уÑловиÑта на
-лиценза Ñа Ñвободна Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° ГÐУ
+"copyrightwarning" => "<div style=\"border:1px solid #333; padding:0.5em\">
+МолÑ, обърнете внимание на това, че
+вÑички приноÑи към {{SITENAME}} Ñе публикуват при уÑловиÑта на
+лиценза за Ñвободна Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° ГÐУ
(за подробноÑти вижте $1).
Ðко не Ñте ÑъглаÑни Вашето произведение да бъде променÑно и
-преразпределÑно от оÑтаналите, не го публикувайте.<br>
-Също потвърждавате, че Вие Ñте напиÑали това или Ñте използвали <b>Ñвободни реÑурÑи</b>
-(public domain или друг подобен източник).
-<strong>ÐЕ ПУБЛИКУВÐЙТЕ ПРОИЗВЕДЕÐИЯ С ÐВТОРСКИ ПРÐВРБЕЗ РÐЗРЕШЕÐИЕ!</strong>",
+преразпределÑно от оÑтаналите, не го публикувайте.
+<br />
+Също потвърждавате, че Вие Ñте напиÑали материала
+или Ñте използвали <b>Ñвободни реÑурÑи</b> -
+<i>общеÑтвено доÑтоÑние</i> или друг Ñвободен източник.
+Ðко Ñте ползвали чужди материали, за които имате разрешение, непременно поÑочете източника.
+<strong>ÐЕ ПУБЛИКУВÐЙТЕ ПРОИЗВЕДЕÐИЯ С ÐВТОРСКИ ПРÐВРБЕЗ РÐЗРЕШЕÐИЕ!</strong>
+</div>",
"longpagewarning" => "Ð’ÐИМÐÐИЕ: Страницата има размер $1 килобайта; нÑкои
браузъри могат да имат проблеми при редактиране на Ñтраници
по-големи от 32Кб.
@@ -488,201 +595,201 @@ MySQL дава грешка \"$3: $4\".\n",
Ðко желаете, може да Ñъхраните Ñтраницата като текÑтов файл и да Ñе
опитате да Ñ Ð¿ÑƒÐ±Ð»Ð¸ÐºÑƒÐ²Ð°Ñ‚Ðµ по-къÑно.",
"protectedpagewarning" => "Ð’ÐИМÐÐИЕ: Страницата е затворена за промени, Ñамо
-ÑиÑтемни оператори могат да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚.
-МолÑ, Ñледвайте
-<a href='/wiki/$wgMetaNamespace:УказаниÑ_за_защитена_Ñтраница'>указаниÑта
-за защитена Ñтраница</a>.",
+админиÑтратори могат да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚.
+МолÑ, Ñледвайте [[{{ns:4}}:Защитена_Ñтраница|указаниÑта за защитена Ñтраница]].",
# History pages
#
-"revhistory" => "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° верÑиите",
-"nohistory" => "ÐÑма редакционна иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° тази Ñтраница.",
-"revnotfound" => "ВерÑиÑта не е открита",
-"revnotfoundtext" => "Желаната Ñтара верÑÐ¸Ñ Ð½Ð° Ñтраницата не бе открита.
+'revhistory' => 'ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° верÑиите',
+'nohistory' => 'ÐÑма редакционна иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° тази Ñтраница.',
+'revnotfound' => 'ВерÑиÑта не е открита',
+'revnotfoundtext' => "Желаната Ñтара верÑÐ¸Ñ Ð½Ð° Ñтраницата не бе открита.
МолÑ, проверете адреÑа, който използвахте за доÑтъп към Ñтраницата.\n",
-"loadhist" => "Зареждане иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° Ñтраницата",
-"currentrev" => "Текуща верÑиÑ",
-"revisionasof" => "ВерÑÐ¸Ñ Ð¾Ñ‚ $1",
-"cur" => "тек",
-"next" => "Ñлед",
-"last" => "поÑл",
-"orig" => "ориг",
-"histlegend" => "Легенда: (<b>тек</b>) = разлика Ñ Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ‚Ð° верÑиÑ,
-(<b>поÑл</b>) = разлика Ñ Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð°Ñ‚Ð° верÑиÑ, <b>Ðœ</b>&nbsp;=&nbsp;малка промÑна",
+'loadhist' => 'Зареждане иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° Ñтраницата',
+'currentrev' => 'Текуща верÑиÑ',
+'revisionasof' => "ВерÑÐ¸Ñ Ð¾Ñ‚ $1",
+'cur' => 'тек',
+'next' => 'Ñлед',
+'last' => 'поÑл',
+'orig' => 'ориг',
+'histlegend' => 'Разлики: направете отметки в кутийките Ñрещу верÑиите, които желаете да Ñравните, и натиÑнете "Enter" или бутона отдолу.<br/>
+Легенда: (<b>тек</b>) = разлика Ñ Ñ‚ÐµÐºÑƒÑ‰Ð°Ñ‚Ð° верÑиÑ,
+(<b>поÑл</b>) = разлика Ñ Ð¿Ñ€ÐµÐ´Ð¸ÑˆÐ½Ð°Ñ‚Ð° верÑиÑ, <b>Ðœ</b>&nbsp;=&nbsp;малка промÑна',
# Diffs
#
-"difference" => "(Разлики между верÑиите)",
-"loadingrev" => "зареждане на верÑии за diff",
-"lineno" => "Ред $1:",
-"editcurrent" => "Редактиране на текущата верÑÐ¸Ñ Ð½Ð° Ñтраницата",
+'difference' => '(Разлики между верÑиите)',
+'loadingrev' => 'зареждане на верÑии за функциÑта <em>разл</em>',
+'lineno' => "Ред $1:",
+'editcurrent' => 'Редактиране на текущата верÑÐ¸Ñ Ð½Ð° Ñтраницата',
+'selectnewerversionfordiff' => 'Избиране на нова верÑÐ¸Ñ Ð·Ð° Ñравнение',
+'selectolderversionfordiff' => 'Избиране на Ñтара верÑÐ¸Ñ Ð·Ð° Ñравнение',
+'compareselectedversions' => 'Сравнение на избраните верÑии',
# Search results
#
-"searchresults" => "Резултати от Ñ‚ÑŠÑ€Ñенето",
-"searchhelppage" => "$wgMetaNamespace:ТърÑене",
-"searchingwikipedia" => "ТърÑене в $wgSitename",
-"searchresulttext" => "За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно $wgSitename, вижте $1.",
-"searchquery" => "За заÑвка \"$1\"",
-"badquery" => "Лошо формулирана заÑвка за Ñ‚ÑŠÑ€Ñене",
-"badquerytext" => "Вашата заÑвка не можа да бъде обработена.
+'searchresults' => 'Резултати от Ñ‚ÑŠÑ€Ñенето',
+'searchhelppage' => "{{ns:4}}:ТърÑене",
+'searchingwikipedia' => "ТърÑене в {{SITENAME}}",
+'searchresulttext' => "За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно {{SITENAME}}, вижте $1.",
+'searchquery' => "За заÑвка \"$1\"",
+'badquery' => 'Лошо формулирана заÑвка за Ñ‚ÑŠÑ€Ñене',
+'badquerytext' => 'Вашата заÑвка не можа да бъде обработена.
ВероÑтно Ñте Ñе опитали да Ñ‚ÑŠÑ€Ñите дума Ñ Ð¿Ð¾-малко от три букви, което вÑе
още не Ñе поддържа.
-Възможно е и да Ñте Ñгрешили в изпиÑването на израза, например: \"риба и и везни\".
-МолÑ, опитайте Ñ Ð½Ð¾Ð²Ð° заÑвка.",
-"matchtotals" => "ЗаÑвката \"$1\" Ð¾Ñ‚Ð³Ð¾Ð²Ð°Ñ€Ñ Ð½Ð° $2 Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ð½Ð° Ñтатии
+Възможно е и да Ñте Ñгрешили в изпиÑването на израза, например: "риба и и везни".
+МолÑ, опитайте Ñ Ð½Ð¾Ð²Ð° заÑвка.',
+'matchtotals' => "ЗаÑвката \"$1\" Ð¾Ñ‚Ð³Ð¾Ð²Ð°Ñ€Ñ Ð½Ð° $2 Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ð½Ð° Ñтатии
и на текÑта на $3 Ñтатии.",
-"nogomatch" => "Ðе ÑъщеÑтвуват Ñтраници Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾ това заглавие, опит за пълнотекÑтово Ñ‚ÑŠÑ€Ñене.",
-"titlematches" => "СъответÑÑ‚Ð²Ð¸Ñ Ð² заглавиÑта на Ñтатии",
-"notitlematches" => "ÐÑма ÑъответÑÑ‚Ð²Ð¸Ñ Ð² заглавиÑта на Ñтатии",
-"textmatches" => "СъответÑÑ‚Ð²Ð¸Ñ Ð² текÑта на Ñтатии",
-"notextmatches" => "ÐÑма ÑъответÑÑ‚Ð²Ð¸Ñ Ð² текÑта на Ñтатии",
-"prevn" => "предишни $1",
-"nextn" => "Ñледващи $1",
-"viewprevnext" => "Преглед ($1) ($2) ($3).",
-"showingresults" => "Показване на <b>$1</b> резултата, започвайки от #<b>$2</b>.",
-"showingresultsnum" => "Показване на <b>$3</b> резултата, започвайки от #<b>$2</b>.",
-"nonefound" => "<strong>Забележка</strong>: безрезултатните Ñ‚ÑŠÑ€ÑÐµÐ½Ð¸Ñ Ñ‡ÐµÑто Ñа причинени
+'nogomatch' => 'Ðе ÑъщеÑтвуват Ñтраници Ñ Ñ‚Ð¾Ñ‡Ð½Ð¾ това заглавие, опит за пълнотекÑтово Ñ‚ÑŠÑ€Ñене.',
+'titlematches' => 'СъответÑÑ‚Ð²Ð¸Ñ Ð² заглавиÑта на Ñтатии',
+'notitlematches' => 'ÐÑма ÑъответÑÑ‚Ð²Ð¸Ñ Ð² заглавиÑта на Ñтатии',
+'textmatches' => 'СъответÑÑ‚Ð²Ð¸Ñ Ð² текÑта на Ñтатии',
+'notextmatches' => 'ÐÑма ÑъответÑÑ‚Ð²Ð¸Ñ Ð² текÑта на Ñтатии',
+'prevn' => "предишни $1",
+'nextn' => "Ñледващи $1",
+'viewprevnext' => "Преглед ($1) ($2) ($3).",
+'showingresults' => "Показване на <b>$1</b> резултата, започвайки от #<b>$2</b>.",
+'showingresultsnum' => "Показване на <b>$3</b> резултата, започвайки от #<b>$2</b>.",
+'nonefound' => "<strong>Забележка</strong>: безрезултатните Ñ‚ÑŠÑ€ÑÐµÐ½Ð¸Ñ Ñ‡ÐµÑто Ñа причинени
от това, че Ñе Ñ‚ÑŠÑ€ÑÑÑ‚ оÑновни думи като \"има\" или \"от\", които не Ñе индекÑират,
или от това, че Ñе Ñ‚ÑŠÑ€ÑÑÑ‚ повече от една думи (показват Ñе Ñамо Ñтраници, Ñъдържащи вÑички
зададени понÑтиÑ).",
-"powersearch" => "ТърÑене",
-"powersearchtext" => "
-ТърÑене в именни проÑтранÑтва:<br>
-$1<br>
+'powersearch' => 'ТърÑене',
+'powersearchtext' => "
+ТърÑене в именни проÑтранÑтва:<br />
+$1<br />
$2 Показване на пренаÑÐ¾Ñ‡Ð²Ð°Ð½Ð¸Ñ &nbsp; ТърÑене на $3 $9",
-"searchdisabled" => "<p>ПълнотекÑтовото Ñ‚ÑŠÑ€Ñене бе временно изключено поради
+'searchdisabled' => "<p>ПълнотекÑтовото Ñ‚ÑŠÑ€Ñене бе временно изключено поради
голÑмото натоварване на Ñървъра.
Междувременно може да Ñ‚ÑŠÑ€Ñите чрез Google:</p>",
-"googlesearch" => "
-<!-- SiteSearch Google -->
-<form method=\"get\" action=\"http://www.google.com/search\">
-<table bgcolor=\"#FFFFFF\"><tr><td>
-<a href=\"http://www.google.com/\">
-<img src=\"http://www.google.com/logos/Logo_40wht.gif\"
-border=\"0\" alt=\"Google\"></a>
+'googlesearch' => "
+<!-- претърÑване на Ñайта чрез Google -->
+<form method='GET' action='http://www.google.com/search'>
+<table bgcolor='#FFFFFF'><tr><td>
+<a href='http://www.google.com/'>
+<img src='http://www.google.com/logos/Logo_40wht.gif'
+border='0' alt='Google'/></a>
</td>
<td>
-<input type=\"text\" name=\"q\" size=\"31\" maxlength=\"255\" value=\"$1\">
-<input type=\"submit\" name=\"btnG\" value=\"Google Search\">
-<font size=\"-1\">
-<input type=\"hidden\" name=\"domains\" value=\"{$wgServer}\"><br><input type=\"radio\"
-name=\"sitesearch\" value=\"\"> WWW <input type=\"radio\" name=\"sitesearch\"
-value=\"{$wgServer}\" checked> {$wgServer} <br>
-<input type='hidden' name='ie' value='$2'>
-<input type='hidden' name='oe' value='$2'>
-</font>
+<input type='text' name='q' size='31' maxlength='255' value='$1'/>
+<input type='submit' name='btnG' value='Google Search'/>
+<small>
+<input type='hidden' name='domains' value='{{SERVER}}'/><br />
+<input type='radio' name='sitesearch' value=''/> WWW
+<input type='radio' name='sitesearch' value='{{SERVER}}' checked='checked'/> {{SERVER}} <br />
+<input type='hidden' name='ie' value='$2'/>
+<input type='hidden' name='oe' value='$2'/>
+</small>
</td></tr></table>
</form>
-<!-- SiteSearch Google -->",
-"blanknamespace" => "(ОÑновно)",
+<!-- претърÑване на Ñайта чрез Google -->
+
+Може да използвате Ñледната препратка, за да Ñъздадете или редактирате Ñтраницата: <a href='{{localurl:$1|action=edit}}'>$1</a>",
+'blanknamespace' => '(ОÑновно)',
# Preferences page
#
-"preferences" => "ÐаÑтройки",
-"prefsnologin" => "Ðе Ñте влезли",
-"prefsnologintext" => "Ðеобходимо е да <a href=\"" .
- wfLocalUrl( "Специални:Userlogin" ) . "\">влезете</a>,
-за да може да променÑте потребителÑките наÑтройки.",
+'preferences' => 'ÐаÑтройки',
+'prefsnologin' => 'Ðе Ñте влезли',
+'prefsnologintext' => "Ðеобходимо е да [[{{ns:-1}}:Userlogin|влезете]],
+за да може да променÑте потребителÑките Ñи наÑтройки.",
"prefslogintext" => "ВлÑзохте като \"$1\".
ВашиÑÑ‚ вътрешен номер e $2.
-Вижте
-[[$wgMetaNamespace:Помощ за наÑтройките|помощта за потребителÑките наÑтройки]],
-за да Ñе ориентирате при избора.",
-"prefsreset" => "Стандартните наÑтройки бÑха възÑтановени.",
-"qbsettings" => "ÐаÑтройки на лентата за бърз избор",
-"changepassword" => "СмÑна на парола",
-"skin" => "Облик",
-"math" => "Показване на математичеÑки формули",
-"dateformat" => "Формат на датата",
-"math_failure" => "ÐеуÑпех при разбора",
-"math_unknown_error" => "непозната грешка",
-"math_unknown_function" => "непозната функциÑ",
-"math_lexing_error" => "лекÑикална грешка",
-"math_syntax_error" => "Ñинтактична грешка",
-"math_image_error" => "Превръщането към PNG не Ñполучи",
-"saveprefs" => "Съхранение наÑтройки",
-"resetprefs" => "Стандартни наÑтройки",
-"oldpassword" => "Стара парола",
-"newpassword" => "Ðова парола",
-"retypenew" => "Ðова парола повторно",
-"textboxsize" => "Размери на текÑтовата кутиÑ",
-"rows" => "Редове",
-"columns" => "Колони",
-"searchresultshead" => "ÐаÑтройки за резултати от Ñ‚ÑŠÑ€Ñене",
-"resultsperpage" => "Резултати на Ñтраница",
-"contextlines" => "Редове за резултат",
-"contextchars" => "Знаци от контекÑта на ред",
-"stubthreshold" => "ОпределÑне като къÑи Ñтатии до",
-"recentchangescount" => "Брой Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ð² поÑледни промени",
-"savedprefs" => "Вашите наÑтройки бÑха Ñъхранени.",
-"timezonetext" => "Въведете Ð±Ñ€Ð¾Ñ Ñ‡Ð°Ñове, Ñ ÐºÐ¾Ð¸Ñ‚Ð¾ Вашето меÑтно време Ñе
-различава от това на Ñървъра
-(<a href=\"http://en2.wikipedia.org/wiki/Coordinated_Universal_Time\"
- title=\"Coordinated Universal Time\">GMT</a>).",
-"localtime" => "МеÑтно време",
-"timezoneoffset" => "ОтмеÑтване",
-"servertime" => "Време на Ñървъра",
-"guesstimezone" => "Попълване чрез браузъра",
-"emailflag" => "ЗабранÑване на пиÑма от други потребители",
-"defaultns" => "ТърÑене в тези именни проÑтранÑтва по подразбиране:",
+Вижте [[{{ns:4}}:ÐаÑтройки|помощта за потребителÑките наÑтройки]], за да Ñе ориентирате при избора.",
+'prefsreset' => 'Стандартните наÑтройки бÑха възÑтановени.',
+'qbsettings' => 'ÐаÑтройки на лентата за бърз избор',
+'changepassword' => 'СмÑна на парола',
+'skin' => 'Облик',
+'math' => 'Показване на математичеÑки формули',
+'dateformat' => 'Формат на датата',
+'math_failure' => 'ÐеуÑпех при разбора',
+'math_unknown_error' => 'непозната грешка',
+'math_unknown_function' => 'непозната функциÑ',
+'math_lexing_error' => 'лекÑикална грешка',
+'math_syntax_error' => 'Ñинтактична грешка',
+'math_image_error' => 'Превръщането към PNG не Ñполучи. Проверете дали latex, dvips и gs Ñа правилно инÑталирани.',
+'math_bad_tmpdir' => 'Ðевъзможно е пиÑането или Ñъздаването на временна папка за математичеÑките операции',
+'math_bad_output' => 'Ðевъзможно е пиÑането или Ñъздаването на изходÑща папка за математичеÑките операции',
+'math_notexvc' => 'ЛипÑва изпълнимиÑÑ‚ файл на texvc. МолÑ, прегледайте math/README за Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно конфигурирането.',
+'prefs-personal' => 'ПотребителÑки данни',
+'prefs-rc' => 'ПоÑледни промени и мъничета',
+'prefs-misc' => 'Други наÑтройки',
+'saveprefs' => 'Съхранение на наÑтройките',
+'resetprefs' => 'Стандартни наÑтройки',
+'oldpassword' => 'Стара парола',
+'newpassword' => 'Ðова парола',
+'retypenew' => 'Ðова парола повторно',
+'textboxsize' => 'Размери на текÑтовата кутиÑ',
+'rows' => 'Редове',
+'columns' => 'Колони',
+'searchresultshead' => 'ÐаÑтройки за резултати от Ñ‚ÑŠÑ€Ñене',
+'resultsperpage' => 'Резултати на Ñтраница',
+'contextlines' => 'Редове за резултат',
+'contextchars' => 'Знаци от контекÑта на ред',
+'stubthreshold' => 'ОпределÑне като къÑи Ñтатии до',
+'recentchangescount' => 'Брой Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ð² поÑледни промени',
+'savedprefs' => 'Вашите наÑтройки бÑха Ñъхранени.',
+'timezonetext' => 'Въведете Ð±Ñ€Ð¾Ñ Ñ‡Ð°Ñове, Ñ ÐºÐ¾Ð¸Ñ‚Ð¾ Вашето меÑтно време Ñе
+различава от това на Ñървъра ([[UTC]]).',
+'localtime' => 'МеÑтно време',
+'timezoneoffset' => 'ОтмеÑтване',
+'servertime' => 'Време на Ñървъра',
+'guesstimezone' => 'Попълване чрез браузъра',
+'emailflag' => 'ЗабранÑване на пиÑма от други потребители',
+'defaultns' => 'ТърÑене в тези именни проÑтранÑтва по подразбиране:',
# Recent changes
#
-"changes" => "промени",
-"recentchanges" => "ПоÑледни промени",
-# This is the default text, and can be overriden by editing [[$wgMetaNamespace::Recentchanges]]
-"recentchangestext" => "ПроÑледÑване на поÑледните промени в $wgSitename.
+'changes' => 'промени',
+'recentchanges' => 'ПоÑледни промени',
+# This is the default text, and can be overriden by editing [[{{SITENAME}}:Recentchanges]]
+'recentchangestext' => "ПроÑледÑване на поÑледните промени в {{SITENAME}}.
Легенда: <b>тек</b> = разлика на текущата верÑиÑ,
<b>иÑÑ‚</b> = иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° верÑиите, <b>Ðœ</b>&nbsp;=&nbsp;малка промÑна, <b>Ð</b>&nbsp;=&nbsp;начало",
-"rcloaderr" => "Зареждане поÑледни промени",
-"rcnote" => "Показани Ñа поÑледните <strong>$1</strong> промени през поÑледните <strong>$2</strong> дни.",
-"rcnotefrom" => "Дадени Ñа промените от <b>$2</b> (до <b>$1</b> показани).",
-"rclistfrom" => "Показване на промени, започвайки от $1.",
-# "rclinks" => "Показване на поÑледните $1 промени през поÑледните $2 чаÑа / поÑледните $3 дни",
-# "rclinks" => "Показване на поÑледните $1 промени през поÑледните $2 дни.",
-"rclinks" => "Показване на поÑледните $1 промени през поÑледните $2 дни<br>$3",
-"showhideminor" => "$1 на малки промени | $2 на ботове | $3 на влезли потребители ",
-"rchide" => "$4; $1 малки промени; $2 вторични именни проÑтранÑтва; $3 многократни редакции.",
-"rcliu" => "; $1 редакции от влезли потребители",
-"diff" => "разл",
-"hist" => "иÑÑ‚",
-"hide" => "Ñкриване",
-"show" => "показване",
-"tableform" => "таблица",
-"listform" => "ÑпиÑък",
-"nchanges" => "$1 промени",
-"minor#editletter" => "М",
-"newpageletter" => "Ð",
+'rcloaderr' => 'Зареждане поÑледни промени',
+'rcnote' => "Показани Ñа поÑледните <strong>$1</strong> промени през поÑледните <strong>$2</strong> дни.",
+'rcnotefrom' => "Дадени Ñа промените от <b>$2</b> (до <b>$1</b> показани).",
+'rclistfrom' => "Показване на промени, започвайки от $1.",
+# 'rclinks' => "Показване на поÑледните $1 промени през поÑледните $2 чаÑа / поÑледните $3 дни",
+# 'rclinks' => "Показване на поÑледните $1 промени през поÑледните $2 дни.",
+'rclinks' => "Показване на поÑледните $1 промени през поÑледните $2 дни<br />$3",
+'showhideminor' => "$1 на малки промени | $2 на ботове | $3 на влезли потребители ",
+'rchide' => "$4; $1 малки промени; $2 вторични именни проÑтранÑтва; $3 многократни редакции.",
+'rcliu' => "; $1 редакции от влезли потребители",
+'diff' => 'разл',
+'hist' => 'иÑÑ‚',
+'hide' => 'Ñкриване',
+'show' => 'показване',
+'tableform' => 'таблица',
+'listform' => 'ÑпиÑък',
+'nchanges' => "$1 промени",
+'minor#editletter' => 'М',
+'newpageletter' => 'Ð',
# Upload
#
-"upload" => "Качване",
-"uploadbtn" => "Качване",
-"uploadlink" => "Качване на картинки",
-"reupload" => "Повторно качване",
-"reuploaddesc" => "Връщане към формулÑра за качване.",
-"uploadnologin" => "Ðе Ñте влезли",
-"uploadnologintext" => "Ðеобходимо е да <a href=\"" .
- wfLocalUrl( "Специални:Userlogin" ) . "\">влезете</a>,
-за да качвате файлове.",
-"uploadfile" => "Качване на картинки, музикални файлове, документи и др.",
-"uploaderror" => "Грешка при качване",
-"uploadtext" => "<strong>Ð’ÐИМÐÐИЕ!</strong> Преди да качите нещо,
-прочетете и Ñе придържайте към <a href=\"" .
-wfLocalUrlE( "$wgMetaNamespace:Политика_за_използване_на_картинки" ) . "\">политиката за използване на картинки</a>
-на $wgSitename.
-<p>Ðко файл Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¾Ñ‚Ð¾ име вече ÑъщеÑтвува в УикипедиÑ, то той ще бъде
-заменен без предупреждение.
-Затова, ако не правите актуализациÑ, първо Ñе убедете,
+'upload' => 'Качване',
+'uploadbtn' => 'Качване',
+'uploadlink' => 'Качване на картинки',
+'reupload' => 'Повторно качване',
+'reuploaddesc' => 'Връщане към формулÑра за качване.',
+'uploadnologin' => 'Ðе Ñте влезли',
+'uploadnologintext' => "Ðеобходимо е да [[{{ns:-1}}:Userlogin|влезете]], за да качвате файлове.",
+'uploadfile' => 'Качване на картинки, музикални файлове, документи и др.',
+'uploaderror' => 'Грешка при качване',
+# TODO $wgMetaNamespace - Project or NS_WIKIPEDIA
+'uploadtext' => "<strong>Ð’ÐИМÐÐИЕ!</strong> Преди да качите нещо,
+прочетете и Ñе придържайте към [[{{ns:-1}}:Политика_за_използване_на_картинки|политиката за използване на картинки]].
+
+<p>Ðко файл Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¾Ñ‚Ð¾ име вече ÑъщеÑтвува в {{SITENAME}}, то той ще бъде
+заменен без предупреждение. Затова, ако не правите актуализациÑ, първо Ñе убедете,
че такъв файл не ÑъщеÑтвува.</p>
<p>За да прегледате ÑъщеÑтвуващите в базата данни картинки,
-разгледайте <a href=\"" . wfLocalUrlE( "Специални:Imagelist" ) .
-"\">ÑпиÑъка Ñ ÐºÐ°Ñ‡ÐµÐ½Ð¸Ñ‚Ðµ картинки</a>.
-КачваниÑта и изтриваниÑта Ñе запиÑват в <a href=\"" .
-wfLocalUrlE( "$wgMetaNamespace:Дневник_на_качваниÑта" ) . "\">дневника на качваниÑта</a>.</p>
+разгледайте [[{{ns:-1}}:Imagelist|ÑпиÑъка Ñ ÐºÐ°Ñ‡ÐµÐ½Ð¸Ñ‚Ðµ картинки]].
+КачваниÑта и изтриваниÑта Ñе запиÑват в [[{{ns:4}}:Дневник_на_качваниÑта|дневника на качваниÑта]].</p>
<p>Използвайте Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€, за да качвате нови картинки,
които да използвате в Ñтатиите Ñи.
В повечето браузъри ще видите бутон \"Browse...\"
@@ -693,412 +800,411 @@ wfLocalUrlE( "$wgMetaNamespace:Дневник_на_качваниÑта" ) . "\"
ТрÑбва Ñъщо да отметнете и кутийката, Ñ ÐºÐ¾Ñто потвърждавате, че не
нарушавате никакви авторÑки права поÑредÑтвом качването на файла.
ÐатиÑнете бутона \"Качване\", за да завършите качването.
-Това може да отнеме извеÑтно време, ако връзката Ви към интернет е бавна.</p>
-<p>Предпочитаните формати Ñа JPEG за фотографии, PNG
-за риÑунки и иконки и OGG за музикални файлове.
-МолÑ, дайте опиÑателно име на файловете, за да Ñе избегне евентуално объркване.
-За да включите картинка в ÑтатиÑ, използвайте една от Ñледните препратки:
-<b>[[image:file.jpg]]</b> или <b>[[image:file.png|алтернативен текÑÑ‚]]</b>
-или <b>[[media:file.ogg]]</b> за музикални файлове.</p>
-<p>МолÑ, обърнете внимание на това, че както при Ñтраниците, оÑтаналите потребители могат
-да редактират или изтриÑÑ‚ Вашите качени неща, ако Ñметнат, че това
-помага на енциклопедиÑта, а на Ð’Ð°Ñ Ð¼Ð¾Ð¶Ðµ да Ви бъде забранено да качвате файлове,
-ако злоупотребÑвате ÑÑŠÑ ÑиÑтемата.</p>",
-"uploadlog" => "дневник на качваниÑта",
-"uploadlogpage" => "Дневник_на_качваниÑта",
-"uploadlogpagetext" => "СпиÑък Ñ Ð¿Ð¾Ñледните качваниÑ.
-Показаните времена Ñа Ñпоред чаÑовата зона на Ñървъра
-(<a href=\"http://en2.wikipedia.org/wiki/Coordinated_Universal_Time\"
- title=\"Coordinated Universal Time\">GMT</a>).
-<ul>
-</ul>
-",
-"filename" => "Име на файл",
-"filedesc" => "ОпиÑание",
-"filestatus" => "ÐвторÑко право",
-"filesource" => "Изходен код",
-"affirmation" => "Потвърждавам, че притежателÑÑ‚ на авторÑкото право за този файл
+Това може да отнеме извеÑтно време, ако връзката Ви към Интернет е бавна.</p>
+<p>Предпочитаните формати Ñа JPEG за фотографии, PNG за риÑунки и иконки и OGG за музикални файлове, като Ñамото име на файла може да Ñъдържа и кирилÑки букви, например ''ВаÑил_ЛевÑки.jpg''. Хубаво е да дадете опиÑателно име на файловете, за да Ñе избегне евентуално объркване.</p>
+<p>За да включите картинка в ÑтатиÑ, използвайте една от Ñледните препратки: <b>[[{{ns:6}}:картинка.jpg]]</b> или <b>[[{{ns:6}}:картинка.png|алтернативен текÑÑ‚]]</b> или <b>[[{{ns:-2}}:звук.ogg]]</b> за музикални файлове.</p>
+<p>МолÑ, обърнете внимание на това, че както при Ñтраниците, оÑтаналите потребители могат да редактират или изтриÑÑ‚ Вашите качени неща, ако Ñметнат, че това помага на енциклопедиÑта, а на Ð’Ð°Ñ Ð¼Ð¾Ð¶Ðµ да Ви бъде забранено да качвате файлове, ако злоупотребÑвате ÑÑŠÑ ÑиÑтемата.</p>",
+'uploadlog' => 'дневник на качваниÑта',
+'uploadlogpage' => 'Дневник_на_качваниÑта',
+'uploadlogpagetext' => 'СпиÑък Ñ Ð¿Ð¾Ñледните качваниÑ.
+Показаните времена Ñа Ñпоред чаÑовата зона на Ñървъра ([[UTC]]).',
+'filename' => 'Име на файл',
+'filedesc' => 'ОпиÑание',
+'filestatus' => 'ÐвторÑко право',
+'filesource' => 'Изходен код',
+'affirmation' => "Потвърждавам, че притежателÑÑ‚ на авторÑкото право за този файл
разрешава той да Ñе използва Ñпоред уÑловиÑта на $1.",
-"copyrightpage" => "$wgMetaNamespace:ÐвторÑки права",
-"copyrightpagename" => "авторÑките права в $wgSitename",
-"uploadedfiles" => "Качени файлове",
-"noaffirmation" => "Потвърдете, че Ñ ÐºÐ°Ñ‡Ð²Ð°Ð½ÐµÑ‚Ð¾ на файла не нарушавате
-авторÑки права.",
-"ignorewarning" => "СъхранÑване на файла въпреки предупреждениÑта.",
-"minlength" => "Имената на картинките Ñ‚Ñ€Ñбва да Ñъдържат поне три знака.",
-"badfilename" => "Картинката бе преименувана на \"$1\".",
-"badfiletype" => "ФайловиÑÑ‚ формат \".$1\" не Ñе препоръчва за картинки.",
-"largefile" => "Препоръчва Ñе картинките да не надвишават 100 килобайта.",
-"successfulupload" => "Качването бе уÑпешно",
-"fileuploaded" => "Файлът \"$1\" бе уÑпешно качен.
+'copyrightpage' => "{{ns:4}}:ÐвторÑки права",
+'copyrightpagename' => "авторÑките права в {{SITENAME}}",
+'uploadedfiles' => 'Качени файлове',
+'noaffirmation' => 'Потвърдете, че Ñ ÐºÐ°Ñ‡Ð²Ð°Ð½ÐµÑ‚Ð¾ на файла не нарушавате
+авторÑки права.',
+'ignorewarning' => 'СъхранÑване на файла въпреки предупреждениÑта.',
+'minlength' => 'Имената на картинките Ñ‚Ñ€Ñбва да Ñъдържат поне три знака.',
+'badfilename' => "Картинката бе преименувана на \"$1\".",
+'badfiletype' => "ФайловиÑÑ‚ формат \".$1\" не Ñе препоръчва за картинки.",
+'largefile' => 'Препоръчва Ñе картинките да не надвишават 100 килобайта.',
+'successfulupload' => 'Качването бе уÑпешно',
+'fileuploaded' => "Файлът \"$1\" бе уÑпешно качен.
МолÑ, поÑледвайте препратката: ($2) към Ñтраницата за опиÑание и
въведете малко Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° файла - кога и от кого е Ñъздаден
и вÑÑкаква друга информациÑ, коÑто имате за него.",
-"uploadwarning" => "Предупреждение при качване",
-"savefile" => "СъхранÑване на файл",
-"uploadedimage" => "качена \"$1\"",
-"uploaddisabled" => "СъжалÑваме, качваниÑта бÑха Ñпрени.",
+'uploadwarning' => 'Предупреждение при качване',
+'savefile' => 'СъхранÑване на файл',
+'uploadedimage' => "качена \"$1\"",
+'uploaddisabled' => 'СъжалÑваме, качваниÑта бÑха Ñпрени.',
# Image list
#
-"imagelist" => "СпиÑък на картинките",
-"imagelisttext" => "СпиÑък от $1 картинки, Ñортирани $2.",
-"getimagelist" => "донаÑÑне на ÑпиÑъка Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸",
-"ilshowmatch" => "Показване на вÑички картинки ÑÑŠÑ Ñъвпадащи имена",
-"ilsubmit" => "ТърÑене",
-"showlast" => "Показване на поÑледните $1 картинки, Ñортирани $2.",
-"all" => "вÑички",
-"byname" => "по име",
-"bydate" => "по дата",
-"bysize" => "по размер",
-"imgdelete" => "изтр",
-"imgdesc" => "опиÑ",
-"imglegend" => "Легенда: (опиÑ) = показване/редактиране опиÑание на картинка.",
-"imghistory" => "ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° картинката",
-"revertimg" => "връщ",
-"deleteimg" => "изтр",
-"imghistlegend" => "Легенда: (тек) = текущата картинка, (изтр) = изтриване
+'imagelist' => 'СпиÑък на картинките',
+'imagelisttext' => "СпиÑък от $1 картинки, Ñортирани $2.",
+'getimagelist' => 'донаÑÑне на ÑпиÑъка Ñ ÐºÐ°Ñ€Ñ‚Ð¸Ð½ÐºÐ¸',
+'ilshowmatch' => 'Показване на вÑички картинки ÑÑŠÑ Ñъвпадащи имена',
+'ilsubmit' => 'ТърÑене',
+'showlast' => "Показване на поÑледните $1 картинки, Ñортирани $2.",
+'all' => 'вÑички',
+'byname' => 'по име',
+'bydate' => 'по дата',
+'bysize' => 'по размер',
+'imgdelete' => 'изтр',
+'imgdesc' => 'опиÑ',
+'imglegend' => 'Легенда: (опиÑ) = показване/редактиране опиÑание на картинка.',
+'imghistory' => 'ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° картинката',
+'revertimg' => 'връщ',
+'deleteimg' => 'изтр',
+'imghistlegend' => 'Легенда: (тек) = текущата картинка, (изтр) = изтриване
на Ñъответната верÑиÑ, (връщ) = възвръщане към Ñъответната верÑиÑ.
-<br><i>Щракнете върху датата, за да видите картинката, качена на тази дата</i>.",
-"imagelinks" => "Препратки към картинката",
-"linkstoimage" => "Следните Ñтраници Ñочат към картинката:",
-"nolinkstoimage" => "ÐÑма Ñтраници, Ñочещи към картинката.",
+<br /><i>Щракнете върху датата, за да видите картинката, качена на тази дата</i>.',
+'imagelinks' => 'Препратки към картинката',
+'linkstoimage' => 'Следните Ñтраници Ñочат към картинката:',
+'nolinkstoimage' => 'ÐÑма Ñтраници, Ñочещи към картинката.',
# Statistics
#
-"statistics" => "СтатиÑтика",
-"sitestats" => "СтатиÑтика",
-"userstats" => "ПотребителÑка ÑтатиÑтика",
-"sitestatstext" => "Има <b>$1</b> Ñтраници в базата данни.
-Това включва диÑкуÑионни Ñтраници, Ñтраници за УикипедиÑ, изключително къÑи
+'statistics' => 'СтатиÑтика',
+'sitestats' => 'СтатиÑтика',
+'userstats' => 'ПотребителÑка ÑтатиÑтика',
+'sitestatstext' => "Има '''$1''' Ñтраници в базата данни.
+Това включва диÑкуÑионни Ñтраници, Ñтраници за {{SITENAME}}, изключително къÑи
Ñтраници, пренаÑочващи Ñтраници и други, които вероÑтно не Ñа Ñтатии.
-Изключвайки тези, има <b>$2</b> Ñтраници, които може би Ñа дейÑтвителни Ñтатии.<p>
-Имало е <b>$4</b> редакции на Ñтраници от поÑледното подобрÑване на ÑиÑтемата на 20 юли 2002 г.
-Това прави Ñредно по <b>$5</b> редакции на Ñтраница.
+Изключвайки тези, има '''$2''' Ñтраници, които може би Ñа дейÑтвителни Ñтатии.<p>
+Имало е '''$4''' редакции на Ñтраници откакто уикито бе пуÑнато.
+Това прави Ñредно по '''$5''' редакции на Ñтраница.
За по-подробна ÑтатиÑтичеÑка Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð²Ð¸Ð¶Ñ‚Ðµ:
<ul>
-<li><a href=\"http://www.wikipedia.org/wikistats/EN/Sitemap.htm\">Уики-ÑтатиÑтика</a>,</li>
-<li><a href=\"http://www.wikipedia.org/stats\">ПотребителÑка ÑтатиÑтика</a>,</li>
-<li><a href=\"http://www.wikipedia.org/wiki/Wikipedia:Statistics\">ПрираÑÑ‚</a>.</li>
+<li><a href='http://bg.wikipedia.org/stats'>ПотребителÑка ÑтатиÑтика</a>,</li>
+<li><a href='http://www.wikipedia.org/wikistats/EN/Sitemap.htm'>Уики-ÑтатиÑтика</a>,</li>
+<li><a href='http://www.wikipedia.org/wiki/Wikipedia:Statistics'>ПрираÑÑ‚</a>.</li>
</ul>",
+'userstatstext' => "Има '''$1''' региÑтрирани потребителÑ. '''$2''' от Ñ‚ÑÑ… Ñа админиÑтратори (вижте $3).",
# Maintenance Page
#
-"maintenance" => "Страница за поддръжка",
-"maintnancepagetext" => "Тази Ñтраница Ñъдържа нÑколко удобни инÑтрумента за вÑекидневна поддръжка. ÐÑкои от тези функции доÑта натоварват базата данни, затова, молÑ, не обновÑвайте Ñтраницата Ñлед вÑÑка Ваша операциÑ, ;-)",
-"maintenancebacklink" => "Обратно към Ñтраницата за поддръжка",
-"disambiguations" => "Страници за избÑгване на двуÑмиÑлие",
-"disambiguationspage" => "$wgMetaNamespace:Препратки_към_Ñтраници_за_избÑгване_на_двуÑмиÑлие",
-"disambiguationstext" => "Следните Ñтатии Ñочат към <i>Ñтраница за избÑгване на двуÑмиÑлие</i>. ВмеÑто това те би Ñ‚Ñ€Ñбвало да Ñочат Ñъответната ÑтатиÑ.<br>Страница Ñе Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ ÐºÐ°Ñ‚Ð¾ \"избÑгване на двуÑмиÑлие\", ако към Ð½ÐµÑ Ñе Ñочи от $1.<br>Тук <i>не</i> Ñа поÑочени препратки от други именни проÑтранÑтва.",
-"doubleredirects" => "Двойни пренаÑочваниÑ",
-"doubleredirectstext" => "<b>Внимание:</b> Този ÑпиÑък може да Ñъдържа лъжливи запиÑи. Това означава, че една пренаÑочваща Ñтраница Ñъдържа допълнителен текÑÑ‚ Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð°Ñ‚ÐºÐ¸ Ñлед заповедта #REDIRECT.<br>\nÐ’Ñеки ред Ñъдържа препратки към първото и второто пренаÑочване, както и Ð¿ÑŠÑ€Ð²Ð¸Ñ Ñ€ÐµÐ´ на текÑта на второто пренаÑочване, който обикновено поÑочва \"иÑтинката\" целева ÑтатиÑ, към коÑто първото пренаÑочване би Ñ‚Ñ€Ñбвало да Ñочи.",
-"brokenredirects" => "Ðевалидни пренаÑочваниÑ",
-"brokenredirectstext" => "Следните пренаÑочващи Ñтраници Ñочат към неÑъщеÑтвуващи Ñтатии.",
-"selflinks" => "Страници Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð°Ñ‚ÐºÐ¸ към Ñебе Ñи",
-"selflinkstext" => "Следните Ñтраници правÑÑ‚ препратки към Ñебе Ñе, което не би Ñ‚Ñ€Ñбвало да е така.",
-"mispeelings" => "Страници Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñни грешки",
-"mispeelingstext" => "Следните Ñтраници Ñъдържат оÑновни правопиÑни грешки, които Ñа
-изброени в $1. Правилните форми може да Ñе поÑочат (като това).",
-"mispeelingspage" => "СпиÑък Ñ Ð¾Ñновните правопиÑни грешки",
-"missinglanguagelinks" => "ЛипÑващи езикови препратки",
-"missinglanguagelinksbutton" => "ТърÑене на липÑващи езикови препратки за",
-"missinglanguagelinkstext" => "Тези Ñтатии <i>не</i> Ñочат към техните ÐºÐ¾Ð¿Ð¸Ñ Ð² $1. ПренаÑочваниÑта и подÑтраниците <i>не Ñа</i> показани.",
+'maintenance' => 'Страница за поддръжка',
+'maintnancepagetext' => 'Тази Ñтраница Ñъдържа нÑколко удобни инÑтрумента за вÑекидневна поддръжка. ÐÑкои от тези функции доÑта натоварват базата данни, затова, молÑ, не обновÑвайте Ñтраницата Ñлед вÑÑка Ваша операциÑ, ;-)',
+'maintenancebacklink' => 'Обратно към Ñтраницата за поддръжка',
+'disambiguations' => 'ПоÑÑнителни Ñтраници',
+'disambiguationspage' => "{{ns:4}}:Препратки_към_поÑÑнителни_Ñтраници",
+'disambiguationstext' => "Следните Ñтатии Ñочат към <i>поÑÑнителна Ñтраница</i>. ВмеÑто това те би Ñ‚Ñ€Ñбвало да Ñочат към Ñъответната ÑтатиÑ.<br /> Страница Ñе Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ ÐºÐ°Ñ‚Ð¾ <i>\"поÑÑнителна\"</i>, ако към Ð½ÐµÑ Ñе Ñочи от $1.<br />Тук <i>не</i> Ñа поÑочени препратки от други именни проÑтранÑтва.",
+'doubleredirects' => 'Двойни пренаÑочваниÑ',
+'doubleredirectstext' => '<b>Внимание:</b> Този ÑпиÑък може да Ñъдържа лъжливи запиÑи. Това означава, че една пренаÑочваща Ñтраница Ñъдържа допълнителен текÑÑ‚ Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð°Ñ‚ÐºÐ¸ Ñлед заповедта #REDIRECT.<br />\nÐ’Ñеки ред Ñъдържа препратки към първото и второто пренаÑочване, както и Ð¿ÑŠÑ€Ð²Ð¸Ñ Ñ€ÐµÐ´ на текÑта на второто пренаÑочване, който обикновено поÑочва <i>"иÑтинката"</i> целева ÑтатиÑ, към коÑто първото пренаÑочване би Ñ‚Ñ€Ñбвало да Ñочи.',
+'brokenredirects' => 'Ðевалидни пренаÑочваниÑ',
+'brokenredirectstext' => 'Следните пренаÑочващи Ñтраници Ñочат към неÑъщеÑтвуващи Ñтатии.',
+'selflinks' => 'Страници Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð°Ñ‚ÐºÐ¸ към Ñебе Ñи',
+'selflinkstext' => 'Следните Ñтраници правÑÑ‚ препратки към Ñебе Ñе, което не би Ñ‚Ñ€Ñбвало да е така.',
+'mispeelings' => 'Страници Ñ Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñни грешки',
+'mispeelingstext' => "Следните Ñтраници Ñъдържат оÑновни правопиÑни грешки, които Ñа
+изброени в $1. Правилните форми може да Ñе поÑочат в Ñкоби: (ето така).",
+'mispeelingspage' => 'СпиÑък на оÑновните правопиÑни грешки',
+'missinglanguagelinks' => 'ЛипÑващи езикови препратки',
+'missinglanguagelinksbutton' => 'ТърÑене на липÑващи езикови препратки за',
+'missinglanguagelinkstext' => "Тези Ñтатии <i>не</i> Ñочат към техните ÐºÐ¾Ð¿Ð¸Ñ Ð² $1. ПренаÑочваниÑта и подÑтраниците <i>не Ñа</i> показани.",
# Miscellaneous special pages
#
-"orphans" => "Страници-Ñираци",
-"lonelypages" => "Страници-Ñираци",
-"unusedimages" => "Ðеизползвани картинки",
-"popularpages" => "ИзвеÑтни Ñтраници",
-"nviews" => "$1 прегледа",
-"wantedpages" => "Желани Ñтраници",
-"nlinks" => "$1 препратки",
-"allpages" => "Ð’Ñички Ñтраници",
-"randompage" => "Случайна Ñтраница",
-"shortpages" => "Кратки Ñтраници",
-"longpages" => "Дълги Ñтраници",
-"deadendpages" => "Задънени Ñтраници",
-"listusers" => "СпиÑък на потребителите",
-"specialpages" => "Специални Ñтраници",
-"spheading" => "За вÑички потребители",
-"sysopspheading" => "Само за админиÑтратори",
-"developerspheading" => "Само за разработчици",
-"protectpage" => "Защитена Ñтраница",
-"recentchangeslinked" => "Сродни промени",
-"rclsub" => "(на Ñтраници, Ñочени от \"$1\")",
-"debug" => "ОтÑтранÑване на грешки",
-"newpages" => "Ðови Ñтраници",
-"ancientpages" => "Стари Ñтатии",
-"intl" => "Междуезикови препратки",
-"movethispage" => "ПремеÑтване на Ñтраницата",
-"unusedimagestext" => "<p>МолÑ, обърнете внимание на това, че други Ñайтове, като например
-международните Уикипедии, могат да Ñочат към картинката чрез прÑк адреÑ
-и въпреки това Ñ‚Ñ Ð¼Ð¾Ð¶Ðµ да Ñе намира в ÑпиÑъка.",
-"booksources" => "Източници на книги",
-"booksourcetext" => "Показани Ñа препратки към други Ñайтове, които продават нови и
+'orphans' => 'Страници-Ñираци',
+'lonelypages' => 'Страници-Ñираци',
+'unusedimages' => 'Ðеизползвани картинки',
+'popularpages' => 'ИзвеÑтни Ñтраници',
+'nviews' => "$1 прегледа",
+'wantedpages' => 'Желани Ñтраници',
+'nlinks' => "$1 препратки",
+'allpages' => 'Ð’Ñички Ñтраници',
+'randompage' => 'Случайна Ñтраница',
+'shortpages' => 'Кратки Ñтраници',
+'longpages' => 'Дълги Ñтраници',
+'deadendpages' => 'Задънени Ñтраници',
+'listusers' => 'СпиÑък на потребителите',
+'specialpages' => 'Специални Ñтраници',
+'spheading' => 'За вÑички потребители',
+'sysopspheading' => 'Само за админиÑтратори',
+'developerspheading' => 'Само за разработчици',
+'protectpage' => 'Защитена Ñтраница',
+'recentchangeslinked' => 'Сродни промени',
+'rclsub' => "(на Ñтраници, Ñочени от \"$1\")",
+'debug' => 'ОтÑтранÑване на грешки',
+'newpages' => 'Ðови Ñтраници',
+'ancientpages' => 'Стари Ñтатии',
+'intl' => 'Междуезикови препратки',
+'move' => 'ПремеÑтване',
+'movethispage' => 'ПремеÑтване на Ñтраницата',
+'unusedimagestext' => '<p>МолÑ, обърнете внимание на това, че други Ñайтове могат да Ñочат към картинката чрез прÑк Ð°Ð´Ñ€ÐµÑ Ð¸ въпреки това Ñ‚Ñ Ð¼Ð¾Ð¶Ðµ да Ñе намира в ÑпиÑъка.',
+'booksources' => 'Източници на книги',
+'booksourcetext' => 'Показани Ñа препратки към други Ñайтове, които продават нови и
използвани книги и могат да имат допълнителна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° книгите, които Ñ‚ÑŠÑ€Ñите.
-$wgSitename не е Ñвързана Ñ Ð½Ð¸ÐºÐ¾Ñ Ð¾Ñ‚ тези фирми и този ÑпиÑък не Ñ‚Ñ€Ñбва да
-Ñе разглежда като подкрепа към Ñ‚ÑÑ….",
-"alphaindexline" => "от $1 до $2",
-"version" => "ВерÑиÑ",
+{{SITENAME}} не е Ñвързана Ñ Ð½Ð¸ÐºÐ¾Ñ Ð¾Ñ‚ тези фирми и този ÑпиÑък не Ñ‚Ñ€Ñбва да
+Ñе разглежда като подкрепа към Ñ‚ÑÑ….',
+'isbn' => 'ISBN',
+'rfcurl' => "http://www.faqs.org/rfcs/rfc$1.html",
+'alphaindexline' => "от $1 до $2",
+'version' => 'ВерÑиÑ',
# Email this user
#
-"mailnologin" => "ÐÑма е-поща",
-"mailnologintext" => "ТрÑбва да <a href=\"" .
- wfLocalUrl( "Специални:Userlogin" ) . "\">Ñте влезете</a>
-и да Ñте поÑочили валидна е-поща в <a href=\"" .
- wfLocalUrl( "Специални:Preferences" ) . "\">наÑтройките</a> Ñи,
-за да пращате пиÑма на други потребители.",
-"emailuser" => "Пращане пиÑмо на потребителÑ",
-"emailpage" => "Пращане пиÑмо на потребител",
-"emailpagetext" => "Ðко потребителÑÑ‚ е поÑочил валидна електронна поща в
+'mailnologin' => 'ÐÑма електронна поща',
+'mailnologintext' => "Ðеобходмимо е да [[{{ns:-1}}:Userlogin|влезете]] и да поÑочите валидна електронна поща в [[{{ns:-1}}:Preferences|наÑтройките]] Ñи, за да може да пращате пиÑма на други потребители.",
+'emailuser' => 'Пращане пиÑмо на потребителÑ',
+'emailpage' => 'Пращане пиÑмо на потребител',
+'emailpagetext' => 'Ðко потребителÑÑ‚ е поÑочил валидна електронна поща в
наÑтройките Ñи, чрез Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€ може да му Ñе изпрати Ñъобщение.
-ÐдреÑÑŠÑ‚, запиÑан в наÑтройките Ви, ще Ñе поÑви в полето \"От\" на
-изпратеното пиÑмо, така че получателÑÑ‚ ще е в ÑÑŠÑтоÑние да Ви отговори.",
-"defemailsubject" => "ПиÑмо от $wgSitename",
-"noemailtitle" => "ÐÑма електронна поща",
-"noemailtext" => "ПотребителÑÑ‚ не поÑочил валидна електронна поща или е избрал да не получава
-пиÑма от други потребители.",
-"emailfrom" => "От",
-"emailto" => "До",
-"emailsubject" => "ОтноÑно",
-"emailmessage" => "Съобщение",
-"emailsend" => "Изпращане",
-"emailsent" => "ПиÑмото е изпратено",
-"emailsenttext" => "ПиÑмото Ви бе изпратено.",
+ÐдреÑÑŠÑ‚, запиÑан в наÑтройките Ви, ще Ñе поÑви в полето "От" на
+изпратеното пиÑмо, така че получателÑÑ‚ ще е в ÑÑŠÑтоÑние да Ви отговори.',
+'usermailererror' => 'ПощенÑкиÑÑ‚ обект даде грешка: ', # Mail object returned error:
+'defemailsubject' => "ПиÑмо от {{SITENAME}}",
+'noemailtitle' => 'ÐÑма електронна поща',
+'noemailtext' => 'ПотребителÑÑ‚ не поÑочил валидна електронна поща или е избрал да не получава
+пиÑма от други потребители.',
+'emailfrom' => 'От',
+'emailto' => 'До',
+'emailsubject' => 'ОтноÑно',
+'emailmessage' => 'Съобщение',
+'emailsend' => 'Изпращане',
+'emailsent' => 'ПиÑмото е изпратено',
+'emailsenttext' => 'ПиÑмото Ви бе изпратено.',
# Watchlist
#
-"watchlist" => "МоÑÑ‚ ÑпиÑък за наблюдение",
-"watchlistsub" => "(за потребител \"$1\")",
-"nowatchlist" => "СпиÑъкът Ви за наблюдение е празен.",
-"watchnologin" => "Ðе Ñте влезли",
-"watchnologintext" => "ТрÑбва да <a href=\"" .
- wfLocalUrl( "Специални:Userlogin" ) . "\">влезете</a>,
-за да можете да променÑте ÑпиÑъка Ñи за наблюдение.",
-"addedwatch" => "Добавено в ÑпиÑъка за наблюдение",
-"addedwatchtext" => "Страницата \"$1\" бе добавена в <a href=\"" .
- wfLocalUrl( "Специални:Watchlist" ) . "\">ÑпиÑъка Ви за наблюдение</a>.
-Ðейните бъдещи промени, както и на Ñъответната й диÑкуÑионна Ñтраница, ще Ñе опиÑват там, а Ñ‚Ñ Ñ‰Ðµ Ñе поÑвÑва Ñ <b>удебелен шрифт</b> в
-<a href=\"" .
- wfLocalUrl( "Специални:Recentchanges" ) . "\">ÑпиÑъка Ñ Ð¿Ð¾Ñледните промени</a>,
-което ще направи по-леÑно избирането й.</p>
-
-<p>Ðко по-къÑно иÑкате да премахнете Ñтраницата от ÑпиÑъка Ви за наблюдение,
+'watchlist' => 'МоÑÑ‚ ÑпиÑък за наблюдение',
+'watchlistsub' => "(за потребител \"$1\")",
+'nowatchlist' => 'СпиÑъкът Ви за наблюдение е празен.',
+'watchnologin' => 'Ðе Ñте влезли',
+'watchnologintext' => "Ðеобходимо е да [[{{ns:-1}}:Userlogin|влезете]], за да може да променÑте ÑпиÑъка Ñи за наблюдение.",
+'addedwatch' => 'Добавено в ÑпиÑъка за наблюдение',
+'addedwatchtext' => "Страницата \"$1\" бе добавена към [[{{ns:-1}}:Watchlist|ÑпиÑъка Ви за наблюдение]].
+Ðейните бъдещи промени, както и на Ñъответната й диÑкуÑионна Ñтраница, ще Ñе опиÑват там, а Ñ‚Ñ Ñ‰Ðµ Ñе поÑвÑва Ñ '''удебелен шрифт''' в
+[[{{ns:-1}}:Recentchanges|ÑпиÑъка Ñ Ð¿Ð¾Ñледните промени]],
+което ще направи по-леÑно избирането й.
+
+<p>Ðко по-къÑно иÑкате да премахнете Ñтраницата от ÑпиÑъка Ñи за наблюдение,
щракнете на \"Спиране на наблюдение\" в Ñтраничната лента.",
-"removedwatch" => "Премахнато от ÑпиÑъка за наблюдение",
-"removedwatchtext" => "Страницата \"$1\" бе премахната от ÑпиÑъка Ви за наблюдение.",
-"watchthispage" => "Ðаблюдаване на Ñтраницата",
-"unwatchthispage" => "Спиране на наблюдение",
-"notanarticle" => "Ðе е ÑтатиÑ",
-"watchnochange" => "ÐÐ¸ÐºÐ¾Ñ Ð¾Ñ‚ наблюдаваните Ñтраници не е била редактирана в показаното време.",
-"watchdetails" => "($1 наблюдавани Ñтраници (без диÑкуÑионни);
+'removedwatch' => 'Премахнато от ÑпиÑъка за наблюдение',
+'removedwatchtext' => "Страницата \"$1\" бе премахната от ÑпиÑъка Ви за наблюдение.",
+'watch' => 'Ðаблюдаване',
+'watchthispage' => 'Ðаблюдаване на Ñтраницата',
+'unwatch' => 'Спиране на наблюдение',
+'unwatchthispage' => 'Спиране на наблюдение',
+'notanarticle' => 'Ðе е ÑтатиÑ',
+'watchnochange' => 'ÐÐ¸ÐºÐ¾Ñ Ð¾Ñ‚ наблюдаваните Ñтраници не е била редактирана в показаното време.',
+'watchdetails' => "($1 наблюдавани Ñтраници (без диÑкуÑионни);
$2 редактирани Ñтраници в избраното време;
$3...
<a href='$4'>показване и редактиране на Ð¿ÑŠÐ»Ð½Ð¸Ñ ÑпиÑък</a>.)",
-"watchmethod-recent" => "проверка на поÑледните промени за наблюдавани Ñтраници",
-"watchmethod-list" => "проверка на наблюдаваните Ñтраници за Ñкорошни редакции",
-"removechecked" => "Премахване на избраните от ÑпиÑъка за наблюдение",
-"watchlistcontains" => "ВашиÑÑ‚ ÑпиÑък за наблюдение Ñъдържа $1 Ñтраници.",
-"watcheditlist" => "Показани Ñа наблюдаваните Ñтраници в
+'watchmethod-recent' => 'проверка на поÑледните промени за наблюдавани Ñтраници',
+'watchmethod-list' => 'проверка на наблюдаваните Ñтраници за Ñкорошни редакции',
+'removechecked' => 'Премахване на избраните от ÑпиÑъка за наблюдение',
+'watchlistcontains' => "ВашиÑÑ‚ ÑпиÑък за наблюдение Ñъдържа $1 Ñтраници.",
+'watcheditlist' => 'Показани Ñа наблюдаваните Ñтраници в
азбучен ред. Отметнете кутийките на Ñтраниците, които иÑкате да премахнете
-от ÑпиÑъка Ви за наблюдение и натиÑнете бутона 'Премахване на избраните'.",
-"removingchecked" => "Премахване на избраните от ÑпиÑъка за наблюдение...",
-"couldntremove" => "ÐеуÑпех при премахването на '$1'...",
-"iteminvalidname" => "Проблем Ñ '$1', грешно име...",
-"wlnote" => "Показани Ñа поÑледните $1 промени през поÑледните <b>$2</b> чаÑа.",
-"wlshowlast" => "Показване на поÑледните $1 чаÑа $2 дни $3",
-"wlsaved" => "Това е Ñъхранена верÑÐ¸Ñ Ð½Ð° Ð²Ð°ÑˆÐ¸Ñ ÑпиÑък за наблюдение.",
+от ÑпиÑъка Ви за наблюдение и натиÑнете бутона "Премахване на избраните".',
+'removingchecked' => 'Премахване на избраните от ÑпиÑъка за наблюдение...',
+'couldntremove' => "ÐеуÑпех при премахването на '$1'...",
+'iteminvalidname' => "Проблем Ñ '$1', грешно име...",
+'wlnote' => "Показани Ñа поÑледните $1 промени през поÑледните <b>$2</b> чаÑа.",
+'wlshowlast' => "Показване на поÑледните $1 чаÑа $2 дни $3",
+'wlsaved' => 'Това е Ñъхранена верÑÐ¸Ñ Ð½Ð° Ð²Ð°ÑˆÐ¸Ñ ÑпиÑък за наблюдение.',
# Delete/protect/revert
#
-"deletepage" => "Изтриване на Ñтраница",
-"confirm" => "Потвърждение",
-"excontent" => "Ñъдържанието бе:",
-"exbeforeblank" => "Ñъдържанието преди изпразването бе:",
-"exblank" => "Ñтраницата бе празна",
-"confirmdelete" => "Потвърждение за изтриване",
-"deletesub" => "(Изтриване на \"$1\")",
-"historywarning" => "Внимание: Страницата, коÑто ще изтриете, има иÑториÑ: ",
-"confirmdeletetext" => "Ðа път Ñте безвъзвратно да изтриете Ñтраница или картинка заедно Ñ
+'deletepage' => 'Изтриване на Ñтраница',
+'confirm' => 'Потвърждение',
+'excontent' => 'Ñъдържанието бе:',
+'exbeforeblank' => 'Ñъдържанието преди изпразването бе:',
+'exblank' => 'Ñтраницата бе празна',
+'confirmdelete' => 'Потвърждение за изтриване',
+'deletesub' => "(Изтриване на \"$1\")",
+'historywarning' => 'Внимание: Страницата, коÑто ще изтриете, има иÑториÑ: ',
+'confirmdeletetext' => "Ðа път Ñте безвъзвратно да изтриете Ñтраница или картинка заедно Ñ
цÑлата й иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¾Ñ‚ базата данни.
-МолÑ, потвърдете, че иÑкате това, че разбирате поÑледÑтвиÑта и че правите това
-в ÑъответÑтвие Ñ [[$wgMetaNamespace:Политика|нашата политика]].",
-"confirmcheck" => "Да, наиÑтина иÑкам да Ñ Ð¸Ð·Ñ‚Ñ€Ð¸Ñ.",
-"actioncomplete" => "ДейÑтвието бе изпълнено",
-"deletedtext" => "\"$1\" беше изтрита.
+МолÑ, потвърдете, че иÑкате това, разбирате поÑледÑтвиÑта и правите това
+в ÑъответÑтвие Ñ Ð½Ð°ÑˆÐ°Ñ‚Ð° [[{{ns:4}}:Ð›Ð¸Ð½Ð¸Ñ Ð½Ð° поведение|Ð»Ð¸Ð½Ð¸Ñ Ð½Ð° поведение]].",
+'confirmcheck' => 'Да, наиÑтина иÑкам да Ñ Ð¸Ð·Ñ‚Ñ€Ð¸Ñ.',
+'actioncomplete' => 'ДейÑтвието бе изпълнено',
+'deletedtext' => "Страницата \"$1\" беше изтрита.
Вижте $2 за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° поÑледните изтриваниÑ.",
"deletedarticle" => "изтрита \"$1\"",
"dellogpage" => "Дневник_на_изтриваниÑта",
-"dellogpagetext" => "СпиÑък на най-Ñкорошните изтриваниÑ.
-Показаните времена Ñа Ñпоред чаÑовата зона на Ñървъра
-(<a href=\"http://en2.wikipedia.org/wiki/Coordinated_Universal_Time\"
- title=\"Coordinated Universal Time\">GMT</a>).
-<ul>
-</ul>
-",
-"deletionlog" => "дневник на изтриваниÑта",
-"reverted" => "Възвръщане към предишна верÑиÑ",
-"deletecomment" => "Причина за изтриването",
-"imagereverted" => "Възвръщането към предишна верÑÐ¸Ñ Ð±Ðµ уÑпешно.",
-"rollback" => "Връщане назад на промените", #Roll back edits
-"rollbacklink" => "връщане", #rollback
-"rollbackfailed" => "Връщането не Ñполучи", #Rollback failed
-"cantrollback" => "ПромÑната не може да Ñе извърши; поÑледниÑÑ‚ автор е единÑтвениÑÑ‚ ÑобÑтвеник на ÑтатиÑта.",
-"alreadyrolled" => "ПоÑледната Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð½Ð° [[$1]], направена от [[Потребител:$2|$2]] ([[Потребител беÑеда:$2|БеÑеда]]) не може да Ñе върне назад; нÑкой друг вече е редактирал ÑтатиÑта или е върнал назад промените.
+"dellogpagetext" => 'СпиÑък на най-Ñкорошните изтриваниÑ.
+Показаните времена Ñа Ñпоред чаÑовата зона на Ñървъра ([[UTC]]).',
+'deletionlog' => 'дневника на изтриваниÑта',
+'reverted' => 'Възвръщане към предишна верÑиÑ',
+'deletecomment' => 'Причина за изтриването',
+'imagereverted' => 'Възвръщането към предишна верÑÐ¸Ñ Ð±Ðµ уÑпешно.',
+'rollback' => 'Връщане назад на промените', #Roll back edits
+'rollback_short' => 'Връщане',
+'rollbacklink' => 'връщане', #rollback
+'rollbackfailed' => 'Връщането не Ñполучи', #Rollback failed
+'cantrollback' => 'ПромÑната не може да Ñе извърши; поÑледниÑÑ‚ автор е единÑтвениÑÑ‚ ÑобÑтвеник на ÑтатиÑта.',
+'alreadyrolled' => "ПоÑледната Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð½Ð° [[$1]], направена от [[Потребител:$2|$2]] ([[Потребител беÑеда:$2|БеÑеда]]) не може да Ñе върне назад; нÑкой друг вече е редактирал ÑтатиÑта или е върнал назад промените.
ПоÑледната Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ðµ на [[Потребител:$3|$3]] ([[Потребител беÑеда:$3|БеÑеда]]). ",
# only shown if there is an edit comment
-"editcomment" => "Коментарът на редакциÑта е бил: \"<i>$1</i>\".",
-"revertpage" => "Възвръщане към поÑледната Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð½Ð° $1",
-"protectlogpage" => "Дневник_на_защитата",
-"protectlogtext" => "СпиÑък на защитите и техните ÑвалÑÐ½Ð¸Ñ Ð·Ð° Ñтраницата.
-За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð²Ð¸Ð¶Ñ‚Ðµ [[$wgMetaNamespace:Защитена Ñтраница]].",
-"protectedarticle" => "защитена [[$1]]",
-"unprotectedarticle" => "незащитена [[$1]]",
+'editcomment' => "Коментарът на редакциÑта е бил: \"<i>$1</i>\".",
+'revertpage' => "Възвръщане към поÑледната Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð½Ð° $1",
+'protectlogpage' => 'Дневник_на_защитата',
+'protectlogtext' => "СпиÑък на защитите и техните ÑвалÑÐ½Ð¸Ñ Ð·Ð° Ñтраницата.
+За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð²Ð¸Ð¶Ñ‚Ðµ [[{{ns:4}}:Защитена Ñтраница]].",
+'protectedarticle' => "защитена [[$1]]",
+'unprotectedarticle' => "незащитена [[$1]]",
+'protectsub' => "(Защитаване на \"$1\")",
+'confirmprotecttext' => 'ÐаиÑтина ли иÑкате да защитите Ñтраницата?',
+'confirmprotect' => 'Потвърдете защитата',
+'protectcomment' => 'Причина за защитата',
+'unprotectsub' => "(СвалÑне на защита на \"$1\")",
+'confirmunprotecttext' => 'ÐаиÑтина ли иÑкате да Ñвалите защитата на Ñтраницата?',
+'confirmunprotect' => 'Потвърдете ÑвалÑнето на защитата',
+'unprotectcomment' => 'Причина за ÑвалÑне на защитата',
+'protectreason' => '(поÑочете причина)',
# Undelete
-"undelete" => "ВъзÑтановÑване на изтрита Ñтраница",
-"undeletepage" => "Преглед и възÑтановÑване на изтрити Ñтраници",
-"undeletepagetext" => "Следните Ñтраници бÑха изтрити, но Ñе намират вÑе още
-в архива и могат да бъдат възÑтановени. Ðрхивът може да Ñе почиÑтва от време на време.",
-"undeletearticle" => "ВъзÑтановÑване на изтрита ÑтатиÑ",
-"undeleterevisions" => "$1 верÑии архивирани",
-"undeletehistory" => "Ðко възÑтановите Ñтраницата, вÑички верÑии ще бъдат
+'undelete' => 'ВъзÑтановÑване на изтрита Ñтраница',
+'undeletepage' => 'Преглед и възÑтановÑване на изтрити Ñтраници',
+'undeletepagetext' => 'Следните Ñтраници бÑха изтрити, но Ñе намират вÑе още
+в архива и могат да бъдат възÑтановени. Ðрхивът може да Ñе почиÑтва от време на време.',
+'undeletearticle' => 'ВъзÑтановÑване на изтрита ÑтатиÑ',
+'undeleterevisions' => "$1 верÑии архивирани",
+'undeletehistory' => 'Ðко възÑтановите Ñтраницата, вÑички верÑии ще бъдат
върнати в иÑториÑта.
-Ðко Ñлед изтриването е Ñъздадена Ñтраница ÑÑŠÑ Ñъщото име, въÑзÑтановените
+Ðко Ñлед изтриването е Ñъздадена Ñтраница ÑÑŠÑ Ñъщото име, възÑтановените
верÑии ще Ñе поÑвÑÑ‚ като по-ранна иÑториÑ, а текущата верÑÐ¸Ñ Ð½Ð° Ñтраницата
-нÑма да бъде автоматично заменена.",
-"undeleterevision" => "Изтрита верÑÐ¸Ñ Ð½Ð° $1",
-"undeletebtn" => "ВъзÑтановÑване!",
-"undeletedarticle" => "възÑтановена \"$1\"",
-"undeletedtext" => "СтатиÑта [[$1]] бе уÑпешно възÑтановена.
-Вижте [[$wgMetaNamespace:Дневник_на_изтриваниÑта|дневника на изтриваниÑта]] за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° поÑледните Ð¸Ð·Ñ‚Ñ€Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸ възÑтановÑваниÑ.",
+нÑма да бъде автоматично заменена.',
+'undeleterevision' => "Изтрита верÑÐ¸Ñ Ð½Ð° $1",
+'undeletebtn' => 'ВъзÑтановÑване!',
+'undeletedarticle' => "възÑтановена \"$1\"",
+'undeletedtext' => "СтатиÑта [[$1]] бе уÑпешно възÑтановена.
+Вижте [[{{ns:4}}:Дневник_на_изтриваниÑта|дневника на изтриваниÑта]] за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° поÑледните Ð¸Ð·Ñ‚Ñ€Ð¸Ð²Ð°Ð½Ð¸Ñ Ð¸ възÑтановÑваниÑ.",
# Contributions
#
-"contributions" => "ПриноÑи",
-"mycontris" => "Моите приноÑи",
-"contribsub" => "За $1",
-"nocontribs" => "Ðе Ñа намерени промени, отговарÑщи на критериÑ.",
-"ucnote" => "Показани Ñа поÑледните <b>$1</b> промени, извършени от този потребител през поÑледните <b>$2</b> дни.",
-"uclinks" => "Показване на поÑледните $1 промени; показване на поÑледните $2 дни.",
-"uctop" => " (поÑледна)" ,
+'contributions' => 'ПриноÑи',
+'mycontris' => 'Моите приноÑи',
+'contribsub' => "За $1",
+'nocontribs' => 'Ðе Ñа намерени промени, отговарÑщи на критериÑ.',
+'ucnote' => "Показани Ñа поÑледните <b>$1</b> промени, извършени от този потребител през поÑледните <b>$2</b> дни.",
+'uclinks' => "Показване на поÑледните $1 промени; показване на поÑледните $2 дни.",
+'uctop' => ' (поÑледна)' ,
# What links here
#
-"whatlinkshere" => "Какво Ñочи наÑам",
-"notargettitle" => "ÐÑма цел",
-"notargettext" => "Ðе указахте целева Ñтраница или потребител,
-върху коÑто/който да Ñе изпълни дейÑтвието.",
-"linklistsub" => "(СпиÑък Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð°Ñ‚ÐºÐ¸)",
-"linkshere" => "Следните Ñтраници Ñочат наÑам:",
-"nolinkshere" => "ÐÑма Ñтраници, Ñочещи наÑам.",
-"isredirect" => "пренаÑочваща Ñтраница",
+'whatlinkshere' => 'Какво Ñочи наÑам',
+'notargettitle' => 'ÐÑма цел',
+'notargettext' => 'Ðе указахте целева Ñтраница или потребител,
+върху коÑто/който да Ñе изпълни дейÑтвието.',
+'linklistsub' => '(СпиÑък Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð°Ñ‚ÐºÐ¸)',
+'linkshere' => 'Следните Ñтраници Ñочат наÑам:',
+'nolinkshere' => 'ÐÑма Ñтраници, Ñочещи наÑам.',
+'isredirect' => 'пренаÑочваща Ñтраница',
# Block/unblock IP
#
-"blockip" => "Блокиране на потребител",
-"blockiptext" => "Използвайте Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€, за да забраните правото на пиÑане
-на определен ИП-Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ потребител.
+'blockip' => 'Блокиране на потребител',
+'blockiptext' => "Използвайте Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€, за да забраните правото на пиÑане
+на определен IP-Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ потребител.
Това Ñ‚Ñ€Ñбва да Ñе направи Ñамо, за да Ñе предотвратÑÑ‚ проÑви на вандализъм,
-и в ÑъответÑтвие Ñ [[$wgMetaNamespace:ЛиниÑ_на_поведение|политиката на $wgSitename]].
+и в ÑъответÑтвие Ñ [[{{ns:4}}:ЛиниÑ_на_поведение|линиÑта на поведение]] на {{SITENAME}}.
ПоÑочете Ñъщо и причина за блокирането (например, Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ð½Ð° Ñтраници,
-Ñтанали обект на вандализъм).",
-"ipaddress" => "ИП-адреÑ/потребител",
-"ipbexpiry" => "Изтичане на Ñрока",
-"ipbreason" => "Причина",
-"ipbsubmit" => "Блокиране на потребителÑ",
-"badipaddress" => "Ðевалиден ИП-адреÑ",
-"noblockreason" => "ТрÑбва да поÑочите причина за блокирането.",
-"blockipsuccesssub" => "Блокирането уÑпешно",
-"blockipsuccesstext" => "\"$1\" беше блокиран.
-<br>Вижте [[Специални:Ipblocklist|ÑпиÑъка на блокираните ИП-адреÑи]], за да прегледате блокираните.",
-"unblockip" => "Отблокиране на потребител",
-"unblockiptext" => "Използвайте Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€, за да възÑтановите
-правото на пиÑане на по-рано блокиран ИП-Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ потребител.",
-"ipusubmit" => "Отблокиране на адреÑа",
-"ipusuccess" => "\"$1\" оÑвободен",
-"ipblocklist" => "СпиÑък на блокирани ИП-адреÑи и потребители",
-"blocklistline" => "$1, $2 е блокирал $3 (изтича на $4)",
-"blocklink" => "блокиране",
-"unblocklink" => "отблокиране",
-"contribslink" => "приноÑи",
-"autoblocker" => "Ðвтоматично блокиране поради взаимно ползване на ИП-Ð°Ð´Ñ€ÐµÑ Ñ \"$1\". Причина \"$2\".",
-"blocklogpage" => "Дневник_на_блокираниÑта",
-"blocklogentry" => 'блокиран "$1" ÑÑŠÑ Ñрок на изтичане $2',
-"blocklogtext" => "Това е дневник на блокираниÑта и отблокираниÑта, извършени от този потребител. Ðвтоматично блокираните ИП-адреÑи не Ñа показани. Вижте [[Специални:Ipblocklist|ÑпиÑъка на блокираните ИП-адреÑи]] за текущото ÑÑŠÑтоÑние
+Ñтанали обект на вандализъм).
+
+Времето за изтичане на блокирането Ñе въвежда Ñпоред уÑÑ‚Ð°Ð½Ð¾Ð²ÐµÐ½Ð¸Ñ Ð“ÐУ-формат, опиÑан в [http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html ръководÑтвото], например: '1 hour', '2 days', 'next Wednesday', '1 January 2017'. Ðеограничено блокиране може да Ñе зададе чрез 'indefinite' или 'infinite'.",
+'ipaddress' => 'IP-адреÑ/потребител',
+'ipbexpiry' => 'Изтичане на Ñрока',
+'ipbreason' => 'Причина',
+'ipbsubmit' => 'Блокиране на потребителÑ',
+'badipaddress' => 'Ðевалиден IP-Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ грешно име на потребител',
+'noblockreason' => 'Ðеобходимо е да поÑочите причина за блокирането.',
+'blockipsuccesssub' => 'Блокирането бе уÑпешно',
+'blockipsuccesstext' => "\"$1\" беше блокиран.
+<br />Вижте [[{{ns:-1}}:Ipblocklist|ÑпиÑъка на блокираните IP-адреÑи]], за да прегледате блокираните.",
+'unblockip' => 'Отблокиране на потребител',
+'unblockiptext' => 'Използвайте Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€, за да възÑтановите
+правото на пиÑане на по-рано блокиран IP-Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ потребител.',
+'ipusubmit' => 'Отблокиране на адреÑа',
+'ipusuccess' => "\"$1\" бе отблокиран",
+'ipblocklist' => 'СпиÑък на блокирани IP-адреÑи и потребители',
+'blocklistline' => "$1, $2 е блокирал $3 (изтича на $4)",
+'blocklink' => 'блокиране',
+'unblocklink' => 'отблокиране',
+'contribslink' => 'приноÑи',
+'autoblocker' => "Ðвтоматично блокиране поради взаимно ползване на IP-Ð°Ð´Ñ€ÐµÑ Ñ \"$1\". Причина \"$2\".",
+'blocklogpage' => 'Дневник_на_блокираниÑта',
+'blocklogentry' => 'блокиране на "$1" ÑÑŠÑ Ñрок на изтичане $2',
+'blocklogtext' => "Това е дневник на блокираниÑта и отблокираниÑта, извършени от този потребител. Ðвтоматично блокираните IP-адреÑи не Ñа показани. Вижте [[{{ns:-1}}:Ipblocklist|ÑпиÑъка на блокираните IP-адреÑи]] за текущото ÑÑŠÑтоÑние
на блокираниÑта.",
-"unblocklogentry" => 'отблокиран "$1"',
-"range_block_disabled" => "The sysop ability to create range blocks is disabled.",
-"ipb_expiry_invalid" => "Ðевалиден Ñрок на изтичане.",
-"ip_range_invalid" => "Ðевалидни граници на ИП-адреÑ.\n",
+'unblocklogentry' => 'отблокиране на "$1"',
+'range_block_disabled' => 'ВъзможноÑтта на админиÑтраторите да задават интервали (<i>range blocks</i>) е изключена.',
+'ipb_expiry_invalid' => 'Ðевалиден Ñрок на изтичане.',
+'ip_range_invalid' => "Ðевалидни граници за IP-адреÑи.\n",
+'proxyblocker' => 'Блокировач на прокÑита',
+'proxyblockreason' => 'ВашиÑÑ‚ IP-Ð°Ð´Ñ€ÐµÑ Ð±ÐµÑˆÐµ блокиран, тъй като е отворено прокÑи. МолÑ, Ñвържете Ñе Ñ Ð’Ð°ÑˆÐ¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ð½ÐµÑ‚-доÑтавчик и го информирайте за този Ñериозен проблем в ÑигурноÑтта.',
+'proxyblocksuccess' => "Готово.\n",
# Developer tools
#
-"lockdb" => "Заключване на базата данни",
-"unlockdb" => "Отключване на базата данни",
-"lockdbtext" => "Заключването на базата данни ще попречи на вÑички
+'lockdb' => 'Заключване на базата данни',
+'unlockdb' => 'Отключване на базата данни',
+'lockdbtext' => 'Заключването на базата данни ще попречи на вÑички
потребители да редактират Ñтраници, да ÑменÑÑ‚ Ñвоите наÑтройки, да редактират
Ñвоите ÑпиÑъци за наблюдение и на вÑички други техни дейÑтвиÑ, изиÑкващи
промени в базата данни.
МолÑ, потвърдете, че иÑкате точно това и ще отключите базата данни,
-когато привършите Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚Ð° по подръжката.",
-"unlockdbtext" => "Отключването на базата данни ще възÑтанови ÑпоÑобноÑтта на
+когато привършите Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚Ð° по подръжката.',
+'unlockdbtext' => 'Отключването на базата данни ще възÑтанови ÑпоÑобноÑтта на
потребителите да редактират Ñтраници, да ÑменÑÑ‚ Ñвоите наÑтройки, да редактират
Ñвоите ÑпиÑъци за наблюдение и изпълнението на вÑички други дейÑтвиÑ, изиÑкващи
промени в базата данни.
-МолÑ, потвърдете, че иÑкате точно това.",
-"lockconfirm" => "Да, наиÑтина иÑкам да заключа базата данни.",
-"unlockconfirm" => "Да, наиÑтина иÑкам да отключа базата данни.",
-"lockbtn" => "Заключване на базата данни",
-"unlockbtn" => "Отключване на базата данни",
-"locknoconfirm" => "Ðе Ñте отметнали кутийката за потвърждение.",
-"lockdbsuccesssub" => "Заключване на базата данни уÑпешно",
-"unlockdbsuccesssub" => "Отключване на базата данни уÑпешно",
-"lockdbsuccesstext" => "Базата данни на $wgSitename бе заключена.
-<br>Ðе забравÑйте да отключите базата данни, когато привършите Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚Ð° по поддръжката.",
-"unlockdbsuccesstext" => "Базата данни на $wgSitename бе отключена.",
+МолÑ, потвърдете, че иÑкате точно това.',
+'lockconfirm' => 'Да, наиÑтина иÑкам да заключа базата данни.',
+'unlockconfirm' => 'Да, наиÑтина иÑкам да отключа базата данни.',
+'lockbtn' => 'Заключване на базата данни',
+'unlockbtn' => 'Отключване на базата данни',
+'locknoconfirm' => 'Ðе Ñте отметнали кутийката за потвърждение.',
+'lockdbsuccesssub' => 'Заключване на базата данни уÑпешно',
+'unlockdbsuccesssub' => 'Отключване на базата данни уÑпешно',
+'lockdbsuccesstext' => "Базата данни на {{SITENAME}} бе заключена.
+<br />Ðе забравÑйте да отключите базата данни, когато привършите Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ñ‚Ð° по поддръжката.",
+'unlockdbsuccesstext' => "Базата данни на {{SITENAME}} бе отключена.",
# SQL query
#
-"asksql" => "SQL-заÑвка",
-"asksqltext" => "Използвайте Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€, за да отправите прÑка заÑвка
-към базата данни на $wgSitename.
+'asksql' => 'ЗаÑвка на SQL',
+'asksqltext' => "Използвайте Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€, за да отправите прÑка заÑвка
+към базата данни на {{SITENAME}}.
Използвайте апоÑтрофи ('като тези'), за ограничители на низовете.
ЧеÑтите заÑвки доÑта натоварват Ñървъра, затова, молÑ,
използвайте пеÑтеливо тази функциÑ.",
-"sqlislogged" => "МолÑ, забележете, че вÑички заÑвки Ñе запиÑват.",
-"sqlquery" => "ЗаÑвка",
-"querybtn" => "Изпращане на заÑвка",
-"selectonly" => "Позволени Ñа единÑтвено заÑвки за четене.",
-"querysuccessful" => "ЗаÑвката бе уÑпешна",
+'sqlislogged' => 'МолÑ, обърнете внимание, че вÑички заÑвки Ñе запиÑват.',
+'sqlquery' => 'ЗаÑвка',
+'querybtn' => 'Изпращане на заÑвка',
+'selectonly' => 'Позволени Ñа единÑтвено заÑвки за четене.',
+'querysuccessful' => 'ЗаÑвката бе уÑпешна',
# Make sysop
-"makesysoptitle" => "Превръщане на потребител в админиÑтратор",
-"makesysoptext" => "Този формулÑÑ€ Ñе използва от бюрократи за превръщане на обикновени потребители в админиÑтратори.
-
-Въведете името на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð² полето и натиÑнете бутона, за да направите ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ» админиÑтратор",
-"makesysopname" => "Име на потребителÑ:",
-"makesysopsubmit" => "Превръщане на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð² админиÑтратор",
-"makesysopok" => "<b>ПотребителÑÑ‚ '$1' бе направен админиÑтратор</b>",
-"makesysopfail" => "<b>ПотребителÑÑ‚ '$1' не бе направен админиÑтратор. (Правилно ли въведохте името?)</b>",
-"setbureaucratflag" => "Вдигане на флага 'бюрократ'",
-"bureaucratlog" => "Дневник_на_бюрократите",
-"bureaucratlogentry" => " set $1: $2",
-
+'makesysoptitle' => 'Превръщане на потребител в админиÑтратор',
+'makesysoptext' => 'Този формулÑÑ€ Ñе използва от бюрократи за превръщане на обикновени потребители в админиÑтратори.
+
+Въведете името на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð² полето и натиÑнете бутона, за да направите ÑÑŠÐ¾Ñ‚Ð²ÐµÑ‚Ð½Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ» админиÑтратор',
+'makesysopname' => 'Име на потребителÑ:',
+'makesysopsubmit' => 'Превръщане на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð² админиÑтратор',
+'makesysopok' => "<b>ПотребителÑÑ‚ '$1' бе направен админиÑтратор</b>.",
+'makesysopfail' => "<b>ПотребителÑÑ‚ '$1' не бе направен админиÑтратор. (Правилно ли въведохте името?)</b>",
+'setbureaucratflag' => 'Вдигане на флага "бюрократ"',
+'bureaucratlog' => 'Дневник_на_бюрократите',
+'bureaucratlogentry' => "Права за Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ \"$1\": \"$2\"",
+'rights' => 'Права:',
+'set_user_rights' => 'Даване на потребителÑки права',
+'user_rights_set' => "<b>ПотребителÑките права за \"$1\" Ñа променени</b>",
+'set_rights_fail' => "<b>ПотребителÑките права за \"$1\" не бÑха променени. (Правилно ли въведохте името?)</b>",
+'makesysop' => 'Превръщане на потребител в админиÑтратор',
# Move page
#
-"movepage" => "ПремеÑтване на Ñтраница",
-"movepagetext" => "ПоÑредÑтвом Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€ може да преименувате
+'movepage' => 'ПремеÑтване на Ñтраница',
+'movepagetext' => "ПоÑредÑтвом Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€ може да преименувате
Ñтраница, премеÑтвайки цÑлата й иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° новото име.
Старото заглавие ще Ñе превърне в пренаÑочваща Ñтраница.
Препратките към Ñтарата Ñтраница нÑма да бъдат променени; затова
-[[Специални:Maintenance|проверете]] за двойни или невалидни пренаÑочваниÑ.
+[[{{ns:-1}}:Maintenance|проверете]] за двойни или невалидни пренаÑочваниÑ.
Вие Ñами би Ñ‚Ñ€Ñбвало да Ñе убедите в това, дали препратките продължават да Ñочат там,
където Ñе предполага.
@@ -1114,50 +1220,158 @@ $3...
*вече ÑъщеÑтвува непразна диÑкуÑионна Ñтраница Ñ Ñ‚Ð¾Ð²Ð° име или
*не Ñте отметнали долната кутийка.
-Ð’ тези Ñлучаи, ако желаете, ще Ñ‚Ñ€Ñбва да премеÑтите Ñтраницата ръчно.",
-"movearticle" => "ПремеÑтване на Ñтраница",
-"movenologin" => "Ðе Ñте влезли",
-"movenologintext" => "Ðеобходимо е да Ñте региÑтриран потребител и <a href=\"" .
- wfLocalUrl( "Специални:Userlogin" ) . "\">да влезете</a>,
-за да може да премеÑтвате Ñтраници.",
-"newtitle" => "Към ново заглавие",
-"movepagebtn" => "ПремеÑтване",
-"pagemovedsub" => "ПремеÑтването бе уÑпешно",
-"pagemovedtext" => "Страницата \"[[$1]]\" бе премеÑтена под името \"[[$2]]\".",
-"articleexists" => "Вече ÑъщеÑтвува Ñтраница Ñ Ñ‚Ð¾Ð²Ð° име или името, което Ñте избрали,
+Ð’ тези Ñлучаи, ако желаете, ще е необходимо да премеÑтите Ñтраницата ръчно.",
+'movearticle' => 'ПремеÑтване на Ñтраница',
+'movenologin' => 'Ðе Ñте влезли',
+'movenologintext' => "Ðеобходимо е да [[{{ns:-1}}:Userlogin|влезете]], за да може да премеÑтвате Ñтраници.",
+'newtitle' => 'Към ново заглавие',
+'movepagebtn' => 'ПремеÑтване',
+'pagemovedsub' => 'ПремеÑтването бе уÑпешно',
+'pagemovedtext' => "Страницата \"[[$1]]\" бе премеÑтена под името \"[[$2]]\".",
+'articleexists' => "Вече ÑъщеÑтвува Ñтраница Ñ Ñ‚Ð¾Ð²Ð° име или името, което Ñте избрали,
е невалидно. МолÑ, изберете друго име.",
-"talkexists" => "Страницата бе уÑпешно премеÑтена, но без
+'talkexists' => 'Страницата бе уÑпешно премеÑтена, но без
Ñъответната диÑкуÑионна Ñтраница, защото под новото име
-има една ÑъщеÑтвуваща. МолÑ, обединете ги ръчно.",
-"movedto" => "премеÑтена като",
-"movetalk" => "ПремеÑтване и на диÑкуÑионната Ñтраница, ако е приложимо.",
-"talkpagemoved" => "Съответната диÑкуÑионна Ñтраница Ñъщо бе премеÑтена.",
-"talkpagenotmoved" => "Съответната диÑкуÑионна Ñтраница <strong>не</strong> бе премеÑтена.",
-"1movedto2" => "$1 премеÑтена като $2",
+има една ÑъщеÑтвуваща. МолÑ, обединете ги ръчно.',
+'movedto' => 'премеÑтена като',
+'movetalk' => 'ПремеÑтване и на диÑкуÑионната Ñтраница, ако е приложимо.',
+'talkpagemoved' => 'Съответната диÑкуÑионна Ñтраница Ñъщо бе премеÑтена.',
+'talkpagenotmoved' => 'Съответната диÑкуÑионна Ñтраница <strong>не</strong> бе премеÑтена.',
+'1movedto2' => "$1 премеÑтена като $2",
# Export
-"export" => "Ð˜Ð·Ð½Ð¾Ñ Ð½Ð° Ñтраници",
-"exporttext" => "Тук може да изнеÑете като XML текÑта и иÑториÑта на една или повече Ñтраници. Получените данни може да:
+'export' => 'ИзнаÑÑне на Ñтраници',
+'exporttext' => 'Тук може да изнеÑете като XML текÑта и иÑториÑта на една или повече Ñтраници. Получените данни може да:
<ul>
<li>вмъкнете в друг Ñайт, използващ Ñофтуера на МедиÑУики, </li>
<li>обработвате или </li>
<li>проÑто запазите за лично ползване.</li>
</ul>
-Въвеждайте вÑÑко ново заглавие на ÑÑ‚Ð°Ñ‚Ð¸Ñ Ð½Ð° <b>нов ред</b>.",
-"exportcuronly" => "Включване Ñамо на текущата верÑиÑ, а не на цÑлата иÑториÑ",
+Въвеждайте вÑÑко ново заглавие на ÑÑ‚Ð°Ñ‚Ð¸Ñ Ð½Ð° <b>нов ред</b>.',
+'exportcuronly' => 'Включване Ñамо на текущата верÑиÑ, а не на цÑлата иÑториÑ',
# Namespace 8 related
-"allmessages" => "Ð’Ñички_ÑъобщениÑ",
-"allmessagestext" => "Това е ÑпиÑък Ñ Ð²Ñички ÑъобщениÑ, намиращи Ñе в именното проÑтранÑтво " . $wgNamespaceNamesBg[8],
+'allmessages' => 'Ð’Ñички ÑиÑтемни ÑъобщениÑ',
+'allmessagestext' => 'Това е ÑпиÑък на вÑички ÑиÑтемни ÑъобщениÑ, намиращи Ñе в именното проÑтранÑтво МедиÑУики',
# Thumbnails
-"thumbnail-more" => "Увеличаване"
+'thumbnail-more' => 'Увеличаване',
+'missingimage' => "<b>ЛипÑваща картинка</b><br /><i>$1</i>\n",
+
+# Special:Import
+'import' => 'ВнаÑÑне на Ñтраници',
+'importtext' => 'МолÑ, изнеÑете файла от изходното уики, използвайки инÑтрумента {{ns:-1}}:Export, Ñъхранете го на Ð’Ð°ÑˆÐ¸Ñ Ð´Ð¸Ñк и го качете тук.',
+'importfailed' => "ВнаÑÑнето пропадна: $1",
+'importnotext' => 'Празно',
+'importsuccess' => 'ВнаÑÑнето бе уÑпешно!',
+'importhistoryconflict' => 'СъщеÑтвува верÑÐ¸Ñ Ð¾Ñ‚ иÑториÑта, коÑто Ñи противоречи Ñ Ñ‚Ð°Ð·Ð¸ (възможно е Ñтраницата да е била вече внеÑена)',
+
+# 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' => '',
+'accesskey-anontalk' => 'n',
+'accesskey-preferences' => '',
+'accesskey-mycontris' => '',
+'accesskey-login' => 'o',
+'accesskey-logout' => 'o',
+'accesskey-search' => 's',
+'accesskey-mainpage' => '',
+'accesskey-portal' => '',
+'accesskey-randompage' => 'x',
+'accesskey-currentevents' => '',
+'accesskey-sitesupport' => '',
+'accesskey-help' => '',
+'accesskey-recentchanges' => 'r',
+'accesskey-recentchangeslinked' => 'c',
+'accesskey-whatlinkshere' => 'b',
+'accesskey-specialpages' => '',
+'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 за Ñтраницата',
+'tooltip-article' => 'Преглед на ÑтатиÑта [alt-a]',
+'tooltip-talk' => 'БеÑеда отноÑно Ñтраницата [alt-t]',
+'tooltip-edit' => 'Може да редактирате Ñтраницата. МолÑ, използвайте бутона за предварителен преглед преди да Ñъхраните. [alt-e]',
+'tooltip-addsection' => 'ДобавÑне на коментар към Ñтраницата. [alt-+]',
+'tooltip-viewsource' => 'Страницата е защитена. Може да разгледате Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´. [alt-e]',
+'tooltip-history' => 'Предишни верÑии на Ñтраницата, [alt-h]',
+'tooltip-protect' => 'Защитаване на Ñтраницата, [alt-=]',
+'tooltip-delete' => 'Изтриване на Ñтраницата, [alt-d]',
+'tooltip-undelete' => "ВъзÑтановÑване на $1 изтрити редакции на Ñтраницата [alt-d]",
+'tooltip-move' => 'ПремеÑтване на Ñтраницата, [alt-m]',
+'tooltip-nomove' => 'ÐÑмате разрешение за премеÑтване на Ñтраницата',
+'tooltip-watch' => 'ДобавÑне на Ñтраницата към ÑпиÑъка Ви за наблюдение [alt-w]',
+'tooltip-unwatch' => 'Премахване на Ñтраницата от ÑпиÑъка Ви за наблюдение [alt-w]',
+'tooltip-watchlist' => 'СпиÑък на Ñтраници, чиито промени Ñте избрали да наблюдавате. [alt-l]',
+'tooltip-userpage' => 'МоÑта потребителÑка Ñтраница',
+'tooltip-anonuserpage' => 'ПотребителÑката Ñтраница за адреÑа, от който редактирате [alt-.]',
+'tooltip-mytalk' => 'МоÑта диÑкуÑионна Ñтраница',
+'tooltip-anontalk' => 'ДиÑкуÑÐ¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно редакциите от този Ð°Ð´Ñ€ÐµÑ [alt-n]',
+'tooltip-preferences' => 'Моите наÑтройки',
+'tooltip-mycontris' => 'СпиÑък на моите приноÑи',
+'tooltip-login' => 'Ð’ момента не Ñте влезли. ÐаÑърчаваме Ви да влезете, въпреки че не е задължително, за да редактирате.',
+'tooltip-logout' => 'Излизане от {{SITENAME}} [alt-o]',
+'tooltip-search' => 'ТърÑене в Уикито',
+'tooltip-mainpage' => 'Ðачалната Ñтраница',
+'tooltip-portal' => 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° проекта',
+'tooltip-randompage' => 'Случайна Ñтраница [alt-x]',
+'tooltip-currentevents' => 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° текущите ÑÑŠÐ±Ð¸Ñ‚Ð¸Ñ Ð¿Ð¾ Ñвета',
+'tooltip-sitesupport' => 'Подкрепете {{SITENAME}}',
+'tooltip-help' => 'Помощната Ñтраница.',
+'tooltip-recentchanges' => 'Това е ÑпиÑък на поÑледните промени в цÑлото Уики [alt-r]',
+'tooltip-recentchangeslinked' => 'ПоÑледните промени на Ñтраници, Ñочещи към тази Ñтраница [alt-c]',
+'tooltip-whatlinkshere' => 'СпиÑък на вÑички Ñтраници, Ñочещи наÑам [alt-b]',
+'tooltip-specialpages' => 'СпиÑък на вÑички Ñпециални Ñтраници',
+'tooltip-upload' => 'Качване на файлове [alt-u]',
+'tooltip-specialpage' => 'Това е Ñпециална Ñтраница, коÑто не може да Ñе редактира',
+'tooltip-minoredit' => 'ОтбелÑзване на промÑната като малка [alt-i]',
+'tooltip-save' => 'СъхранÑване на промените [alt-s]',
+'tooltip-preview' => 'Предварителен преглед, молÑ, използвайте го преди да Ñъхраните! [alt-p]',
+'tooltip-contributions' => 'Показване на приноÑите на потребителÑ',
+'tooltip-emailuser' => 'Изпращане на пиÑмо на потребителÑ',
+'tooltip-rss' => 'RSS feed за Ñтраницата',
+'tooltip-compareselectedversions' => 'Показване на разликите между двете избрани верÑии на Ñтраницата [alt-v]',
+
+# Metadata
+'nodublincore' => 'Dublin Core RDF metadata disabled for this server.',
+'nocreativecommons' => 'Creative Commons RDF metadata disabled for this server.',
+'notacceptable' => 'Сървърът не може да предоÑтави данни във формат, който да Ñе разпознава от клиента Ви.',
+
+# Attribution
+
+'anonymous' => "Ðнонимен потребител(и) на {{SITENAME}}",
+'siteuser' => "Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð½Ð° {{SITENAME}} $1",
+"lastmodifiedby" => "ПоÑледна промÑна на $1 от $2.",
+'and' => 'и',
+"othercontribs" => "ОÑновано върху работа на $1.",
+"siteusers" => "потребителите на {{SITENAME}} $1",
);
-require_once( "LanguageUtf8.php" );
+require_once( 'LanguageUtf8.php' );
class LanguageBg extends LanguageUtf8 {
@@ -1270,4 +1484,4 @@ class LanguageBg extends LanguageUtf8 {
}
}
-?>
+?> \ No newline at end of file
diff --git a/languages/LanguageBn.php b/languages/LanguageBn.php
index 5f546e8cfcd8..343f45ff798a 100644
--- a/languages/LanguageBn.php
+++ b/languages/LanguageBn.php
@@ -22,7 +22,7 @@
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsBn = array(
"None", "Fixed left", "Fixed right", "Floating left"
@@ -36,7 +36,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesBn = array(
@@ -83,13 +84,13 @@ this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
/* private */ $wgWeekdayNamesBn = array(
"রবিবার", "সোমবার", "মঙà§à¦—লবার", "বà§à¦§à¦¬à¦¾à¦°", "বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°",
- "শà§à¦•à§à¦°à¦¬à¦¾à¦°", "শনিবার"
+ "শà§à¦•à§à¦°à¦¬à¦¾à¦°", "শনিবার"
);
/* private */ $wgMonthNamesBn = array(
"জানà§à§Ÿà¦¾à¦°à§€", "ফেবà§à¦°à§à§Ÿà¦¾à¦°à§€", "মারà§à¦š", "à¦à¦ªà§à¦°à¦¿à¦²", "মে", "জà§à¦¨",
"জà§à¦²à¦¾à¦‡", "আগসà§à¦Ÿ", "সেপà§à¦Ÿà§‡à¦®à§à¦¬à¦°", "অকà§à¦Ÿà§‹à¦¬à¦°", "নভেমà§à¦¬à¦°",
- "ডিসেমà§à¦¬à¦°"
+ "ডিসেমà§à¦¬à¦°"
);
/* private */ $wgMonthAbbreviationsBn = array(
@@ -153,7 +154,7 @@ this</a> (alternative: like this<a href=\"\" class=\"internal\">?</a>).",
/* private */ $wgAllMessagesBn = array(
# Bits of text used by many pages:
-#
+#
"linktrail" => "/^([a-z]+)(.*)\$/sD",
"mainpage" => "পà§à¦°à¦§à¦¾à¦¨ পাতা",
@@ -275,7 +276,7 @@ Please report this to an administrator, making note of the URL.",
"filedeleteerror" => "Could not delete file \"$1\".",
"filenotfound" => "Could not find file \"$1\".",
"unexpected" => "Unexpected value: \"$1\"=\"$2\".",
-"formerror" => "Error: could not submit form",
+"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",
@@ -321,8 +322,8 @@ that it be to the address you give.<br>\n",
"youremail" => "Your e-mail*",
"yournick" => "Your nickname (for signatures)",
"emailforlost" => "* Entering an email address is optional. But it enables people to
-contact you through the website without you having to reveal your
-email address to them, and it also helps you if you forget your
+contact you through the website without you having to reveal your
+email address to them, and it also helps you if you forget your
password.",
"loginerror" => "Login error",
"noname" => "You have not specified a valid user name.",
@@ -357,7 +358,7 @@ The reason given is this:<br>''$2''<p>You may contact $1 or one of the other
"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
+To create the page, start typing in the box below
(see the [[Wikipedia:Help|help page]] for more info).
If you are here by mistake, just click your browser's '''back''' button.",
"anontalkpagetext" => "---- ''This is the discussion page for an anonymous user who has not created an account yet or who does not use it. We therefore have to use the numerical [[IP address]] to identify him/her. Such an IP address can be shared by several users. If you are an anonymous user and feel that irrelevant comments have been directed at you, please [[Special:Userlogin|create an account or log in]] to avoid future confusion with other anonymous users.'' ",
@@ -475,7 +476,7 @@ Your internal ID number is $2.
See [[Wikipedia:User preferences help]] for help deciphering the options.",
"prefsreset" => "Preferences have been reset from storage.",
-"qbsettings" => "Quickbar settings",
+"qbsettings" => "Quickbar settings",
"changepassword" => "Change password",
"skin" => "Skin",
"math" => "Rendering math",
@@ -490,7 +491,7 @@ See [[Wikipedia:User preferences help]] for help deciphering the options.",
"oldpassword" => "Old password",
"newpassword" => "New password",
"retypenew" => "Retype new password",
-"textboxsize" => "Textbox dimensions",
+"textboxsize" => "Editing",
"rows" => "Rows",
"columns" => "Columns",
"searchresultshead" => "Search result settings",
@@ -632,6 +633,7 @@ created and by whom, and anything else you may know about it.",
"imghistory" => "Image history",
"revertimg" => "rev",
"deleteimg" => "del",
+"deleteimgcompletely" => "del",
"imghistlegend" => "Legend: (cur) = this is the current image, (del) = delete
this old version, (rev) = revert to this old version.
<br><i>Click on date to see image uploaded on that date</i>.",
@@ -800,11 +802,11 @@ All times shown are server time (UTC).
"rollbackfailed" => "Rollback failed",
"cantrollback" => "Cannot revert edit; last contributor is only author of this article.",
"alreadyrolled" => "Cannot rollback last edit of [[$1]]
-by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already.
+by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already.
Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). ",
# only shown if there is an edit comment
-"editcomment" => "The edit comment was: \"<i>$1</i>\".",
+"editcomment" => "The edit comment was: \"<i>$1</i>\".",
"revertpage" => "Reverted to last edit by $1",
# Undelete
@@ -989,7 +991,7 @@ class LanguageBn extends LanguageUtf8 {
global $wgMonthNamesBn;
return $wgMonthNamesBn[$key-1];
}
-
+
function getMessage( $key )
{
global $wgAllMessagesBn;
diff --git a/languages/LanguageCa.php b/languages/LanguageCa.php
index 8c351ee2739f..fc7ca6eb5f58 100644
--- a/languages/LanguageCa.php
+++ b/languages/LanguageCa.php
@@ -5,22 +5,25 @@
# encapsulates some of the magic-ness.
#
/* private */ $wgNamespaceNamesCa = array(
- -2 => "Media",
- -1 => "Especial",
- 0 => "",
- 1 => "Discussió",
- 2 => "Usuari",
- 3 => "Usuari_Discussió",
- 4 => "Viquipèdia",
- 5 => "Viquipèdia_Discussió",
- 6 => "Imatge",
- 7 => "Imatge_Discussió",
- 8 => "MediaWiki",
- 9 => "MediaWiki_Dicussió",
- 10 => "Template",
- 11 => "Template_talk"
-
-);
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Especial',
+ NS_MAIN => '',
+ NS_TALK => 'Discussió',
+ NS_USER => 'Usuari',
+ NS_USER_TALK => 'Usuari_Discussió',
+ NS_WIKIPEDIA => 'Viquipèdia',
+ NS_WIKIPEDIA_TALK => 'Viquipèdia_Discussió',
+ NS_IMAGE => 'Imatge',
+ NS_IMAGE_TALK => 'Imatge_Discussió',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Discussió',
+ NS_TEMPLATE => 'Template',
+ NS_TEMPLATE_TALK => 'Template_Discussió',
+ NS_HELP => 'Ajuda',
+ NS_HELP_TALK => 'Ajuda_Discussió',
+ NS_CATEGORY => 'Categoria',
+ NS_CATEGORY_TALK => 'Categoria_Discussió'
+) + $wgNamespaceNamesEn;
/* Note that some default options can be customized -- see
'$wgDefaultUserOptionsEn' in Language.php */
@@ -37,7 +40,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesCa = array(
@@ -562,6 +566,7 @@ i l'autor, i qualsevol altra cosa que pugueu saber al respecte.",
"imghistory" => "Història de la imatge",
"revertimg" => "rev",
"deleteimg" => "borr",
+"deleteimgcompletely" => "borr",
"imghistlegend" => "Simbologia: (act) = aquesta és la imatge actual, (esb) = esborra
aquesta versió antiga, (rev) = reverteix a aquesta versió antiga.
<br><i>Cliqueu a la data per veure la imatge carregada en aquesta data</i>.",
diff --git a/languages/LanguageCs.php b/languages/LanguageCs.php
index fc1f781a268d..98dea101c407 100644
--- a/languages/LanguageCs.php
+++ b/languages/LanguageCs.php
@@ -22,7 +22,7 @@
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
# Zdědit apriorní preference: wgDefaultUserOptionsEn
@@ -38,7 +38,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgUserTogglesCs = array(
@@ -72,10 +73,10 @@
"prosinec"
);
-# Hmm
+# There are no month abbreviations in Czech language.
/* private */ $wgMonthAbbreviationsCs = array(
- "Led", "Úno", "Bře", "Dub", "Kvě", "Čer", "Črv", "Srp",
- "Zář", "Říj", "Lis", "Pro"
+ "1.", "2.", "3.", "4.", "5.", "6.",
+ "7.", "8.", "9.", "10.", "11.", "12."
);
# All special pages have to be listed here: a description of ""
@@ -485,6 +486,7 @@ Věnuj pozornost následujícímu odkazu: ($2) na stránku popisu a napiš pár
"imghistory" => "Historie naÄtených souborů",
"revertimg" => "res",
"deleteimg" => "for",
+"deleteimgcompletely" => "for",
"imghistlegend" => "(nun) = toto je souÄasná verze souboru, (for) = odstranit tuto starou verzi, (res) = obnovit starou verzi.
<br><i>Click on date to see image uploaded on that date</i>.",
"imagelinks" => "Odkazy k souboru ",
diff --git a/languages/LanguageCy.php b/languages/LanguageCy.php
index 5138e6992424..ea2949cea8e6 100644
--- a/languages/LanguageCy.php
+++ b/languages/LanguageCy.php
@@ -9,42 +9,30 @@
1 => "Sgwrs",
2 => "Defnyddiwr",
3 => "Sgwrs_Defnyddiwr",
- 4 => $wgMetaNamespace,
+ 4 => $wgMetaNamespace,
5 => "Sgwrs_" . $wgMetaNamespace,
6 => "Delwedd",
7 => "Sgwrs_Delwedd",
8 => "MediaWiki",
9 => "Sgwrs_MediaWiki",
- 10 => "Template",
- 11 => "Template_talk"
-
-);
-
-/* private */ $wgDefaultUserOptionsCy = array(
- "quickbar" => 1, "underline" => 1, "hover" => 1,
- "cols" => 80, "rows" => 25, "searchlimit" => 20,
- "contextlines" => 5, "contextchars" => 50,
- "skin" => 0, "math" => 1, "rcdays" => 7, "rclimit" => 50,
- "highlightbroken" => 1, "stubthreshold" => 0,
- "previewontop" => 1, "editsection"=>1,"editsectiononrightclick"=>0,
- "showtoc"=>1,
- "showtoolbar" =>1,
- "date" => 0
-);
+ 10 => "Nodyn",
+ 11 => "Sgwrs_Nodyn"
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsCy = array(
"Dim", "Sefydlog chwith", "Sefydlog de", "Arnawf de"
);
/* private */ $wgSkinNamesCy = array(
- 'standard' => "Safonol",
- 'nostalgia' => "Hiraeth",
- 'cologneblue' => "Glas Cwlen",
- 'smarty' => "Paddington",
- 'montparnasse' => "Montparnasse",
- 'davinci' => "DaVinci",
- 'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'standard' => "Safonol",
+ 'nostalgia' => "Hiraeth",
+ 'cologneblue' => "Glas Cwlen",
+ 'smarty' => "Paddington",
+ 'montparnasse' => "Montparnasse",
+ 'davinci' => "DaVinci",
+ 'mono' => "Mono",
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesCy = array(
@@ -100,7 +88,7 @@
/* private */ $wgMonthNamesCy = array(
"Ionawr", "Chwefror", "Mawrth", "Ebrill", "Mai", "Mehefin",
- "Gorffenaf", "Awst", "Medi", "Hydref", "Tachwedd",
+ "Gorffennaf", "Awst", "Medi", "Hydref", "Tachwedd",
"Rhagfyr"
);
@@ -109,34 +97,33 @@
"Med", "Hyd", "Tach", "Rhag"
);
-/* private */ $wgMagicWordsCy = array(
-# ID CASE SYNONYMS
- MAG_REDIRECT => array( 0, "#redirect", "#ail-cyfeirio" ),
- MAG_NOTOC => array( 0, "__NOTOC__", "__DIMTAFLENCYNNWYS__" ),
- MAG_NOEDITSECTION => array( 0, "__NOEDITSECTION__", "__DIMADRANGOLYGU__" ),
- MAG_START => array( 0, "__START__", "__DECHRAU__" ),
- MAG_CURRENTMONTH => array( 1, " CURRENTMONTH", "MISCYFOES" ),
- MAG_CURRENTMONTHNAME => array( 1, "CURRENTMONTHNAME", "ENWMISCYFOES" ),
- MAG_CURRENTDAY => array( 1, "CURRENTDAY", "DYDDIADCYFOES" ),
- MAG_CURRENTDAYNAME => array( 1, "CURRENTDAYNAME", "ENWDYDDCYFOES" ),
- MAG_CURRENTYEAR => array( 1, "CURRENTYEAR", "FLWYDDYNCYFOES" ),
- MAG_CURRENTTIME => array( 1, "CURRENTTIME", "AMSERCYFOES" ),
- MAG_NUMBEROFARTICLES => array( 1, "NUMBEROFARTICLES", "NIFEROERTHYGLAU" ),
- MAG_CURRENTMONTHNAMEGEN => array( 1, "CURRENTMONTHNAMEGEN", "GENENWMISCYFOES" ),
- MAG_MSG => array( 1, "MSG:" ),
- MAG_SUBST => array( 1, "SUBST:" ),
- MAG_MSGNW => array( 0, "MSGNW:" ),
- MAG_END => array( 0, "DIWEDD_" ),
- MAG_IMG_THUMBNAIL => array( 1, "ewin bawd", "bawd", "thumbnail", "thumb" ),
- MAG_IMG_RIGHT => array( 1, "de", "right" ),
- MAG_IMG_LEFT => array( 1, "chwith", "left" ),
- MAG_IMG_NONE => array( 1, "dim", "none" ),
- MAG_IMG_WIDTH => array( 1, "$1px" ),
- MAG_IMG_CENTER => array( 1, "canol", "center", "centre" ),
- MAG_INT => array( 0, "INT:" )
+ /* private */ $wgMagicWordsCy = array(
+ # ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, "#redirect", "#ail-cyfeirio" ),
+ MAG_NOTOC => array( 0, "__NOTOC__", "__DIMTAFLENCYNNWYS__" ),
+ MAG_NOEDITSECTION => array( 0, "__NOEDITSECTION__", "__DIMADRANGOLYGU__" ),
+ MAG_START => array( 0, "__START__", "__DECHRAU__" ),
+ MAG_CURRENTMONTH => array( 1, "CURRENTMONTH", "MISCYFOES" ),
+ MAG_CURRENTMONTHNAME => array( 1, "CURRENTMONTHNAME", "ENWMISCYFOES" ),
+ MAG_CURRENTDAY => array( 1, "CURRENTDAY", "DYDDIADCYFOES" ),
+ MAG_CURRENTDAYNAME => array( 1, "CURRENTDAYNAME", "ENWDYDDCYFOES" ),
+ MAG_CURRENTYEAR => array( 1, "CURRENTYEAR", "FLWYDDYNCYFOES" ),
+ MAG_CURRENTTIME => array( 1, "CURRENTTIME", "AMSERCYFOES" ),
+ MAG_NUMBEROFARTICLES => array( 1, "NUMBEROFARTICLES","NIFEROERTHYGLAU" ),
+ MAG_CURRENTMONTHNAMEGEN => array( 1, "CURRENTMONTHNAMEGEN", "GENENWMISCYFOES" ),
+ MAG_MSG => array( 1, "MSG:" ),
+ MAG_SUBST => array( 1, "SUBST:" ),
+ MAG_MSGNW => array( 0, "MSGNW:" ),
+ MAG_END => array( 0, "DIWEDD" ),
+ MAG_IMG_THUMBNAIL => array( 1, "ewin bawd", "bawd", "thumb", "thumbnail" ),
+ MAG_IMG_RIGHT => array( 1, "de", "right" ),
+ MAG_IMG_LEFT => array( 1, "chwith", "left" ),
+ MAG_IMG_NONE => array( 1, "dim", "none" ),
+ MAG_IMG_WIDTH => array( 1, "$1px" ),
+ MAG_IMG_CENTER => array( 1, "canol", "centre", "center" ),
+ MAG_INT => array( 0, "INT:" )
+);
-);
-
# All special pages have to be listed here: a description of ""
# will make them not show up on the "Special Pages" page, which
# is the right thing for some of them (such as the "targeted" ones).
@@ -197,14 +184,14 @@
"category" => "categori",
"category_header" => "Erthyglau mewn categori \"$1\"",
"subcategories" => "Is-categorïau",
-"linktrail" => "/^((?:à|á|â|è|é|ê|ì|í|î|ï|ò|ó|ô|û|[a-z])+)(.*)\$/sD",
+"linktrail" => "/^((?:à|á|â|è|é|ê|ì|í|î|ï|ò|ó|ô|û|ŵ|ŷ|[a-z])+)(.*)\$/sD",
"mainpage" => "Prif tudalen",
"mainpagetext" => "Meddalwedd Wicipedia wedi sefydlu'n llwyddiannus",
"about" => "Amdano",
"aboutwikipedia" => "Amdano Wicipedia",
"aboutpage" => "$wgMetaNamespace:Amdano",
"help" => "Help",
-"helppage" => "$wgMetaNamespace:Help",
+"helppage" => "$wgMetaNamespace:Help",
"wikititlesuffix" => "$wgSitename",
"bugreports" => "Adroddiadau diffygion",
"bugreportspage" => "$wgMetaNamespace:Adroddiadau_diffygion",
@@ -229,7 +216,7 @@
"disclaimerpage" => "$wgMetaNamespace:Gwadiad_cyffredin",
"currentevents" => "Digwyddiadau presennol",
"errorpagetitle" => "Gwall",
-"returnto" => "Ewch yn ôl i $1.",
+"returnto" => "Ewch yn ôl i $1.",
"fromwikipedia" => "Oddiwrth Wicipedia, y gwyddoniadur rhad.",
"whatlinkshere" => "Tudalennau sydd yn cysyllti fan hyn",
"help" => "Help",
@@ -651,7 +638,7 @@ Pob amser sy'n dangos yw amser y gwasanaethwr (UTC).
"filestatus" => "Statws hawlfraint",
"filesource" => "Ffynhonnell",
"affirmation" => "Rwy'n addo mae'r hawlfraintiwr y ffeil hon wedi cytuno trwyddo'r ffeil o dan termau'r $1.",
-"copyrightpage" => "$wgMetaNamespace:Hawlfraint",
+"copyrightpage" => "$wgMetaNamespace:Hawlfraint",
"copyrightpagename" => "Hawlfraint $wgSitename",
"uploadedfiles" => "Ffeiliau wedi llwytho i fynu",
"noaffirmation" => "Rhaid i chi addo dydy'r llwyth i fynu ddim y torri unrhyw hawlfraint.",
@@ -686,6 +673,7 @@ Dilynwch y cyswllt hon: ($2) i'r tudalen disgrifiad a llenwch gwybodaeth amdano'
"imghistory" => "Hanes y delwedd",
"revertimg" => "dych",
"deleteimg" => "dil",
+"deleteimgcompletely" => "dil",
"imghistlegend" => "Eglurhad: (cyf) = hon yw'r delwedd cyfoes, (dil) = dilewch yr hen fersiwn hon, (dych) = dychwelio i hen fersiwn hon.
<br><i>Cliciwch ar dyddiad i weld y delwedd ag oedd llwythiad ar y dyddiad hon</i>.",
"imagelinks" => "Cysylltiadau delwedd",
@@ -1033,20 +1021,22 @@ amusement.",
# Thumbnails
-"thumbnail-more" => "Helaethwch"
-
-);
+"thumbnail-more" => "Helaethwch",
+#Math
+ 'mw_math_png' => "Rendrwch PNG o hyd",
+ 'mw_math_simple' => "HTML os yn syml iawn, PNG fel arall",
+ 'mw_math_html' => "HTML os bosibl, PNG fel arall",
+ 'mw_math_source' => "Gadewch fel TeX (am porwyr testun)",
+ 'mw_math_modern' => "Cymeradwedig am porwyr modern",
+ 'mw_math_mathml' => 'MathML',
+
+);
require_once( "LanguageUtf8.php" );
class LanguageCy extends LanguageUtf8 {
- function getDefaultUserOptions () {
- global $wgDefaultUserOptionsCy;
- return $wgDefaultUserOptionsCy;
- }
-
function getBookstoreList () {
global $wgBookstoreListCy;
return $wgBookstoreListCy;
@@ -1082,11 +1072,11 @@ class LanguageCy extends LanguageUtf8 {
return $wgSkinNamesCy;
}
- function getMathNames() {
- global $wgMathNamesCy;
- return $wgMathNamesCy;
- }
-
+ function getMathNames() {
+ global $wgMathNamesCy;
+ return $wgMathNamesCy;
+ }
+
function getDateFormats() {
global $wgDateFormatsCy;
return $wgDateFormatsCy;
@@ -1136,7 +1126,7 @@ class LanguageCy extends LanguageUtf8 {
function getMessage( $key )
{
global $wgAllMessagesCy;
- return $wgAllMessagesCy[$key];
+ return @$wgAllMessagesCy[$key];
}
function getAllMessages()
@@ -1147,10 +1137,9 @@ class LanguageCy extends LanguageUtf8 {
function getMagicWords()
{
- global $wgMagicWordsCy;
- return $wgMagicWordsCy;
+ global $wgMagicWordsCy, $wgMagicWordsEn;
+ return $wgMagicWordsCy + $wgMagicWordsEn;
}
-
}
?>
diff --git a/languages/LanguageDa.php b/languages/LanguageDa.php
index 99753ad7b698..f86b1ce66304 100644
--- a/languages/LanguageDa.php
+++ b/languages/LanguageDa.php
@@ -1,7 +1,17 @@
<?php
+#
+# Danish localisation for MediaWiki
+#
+# This file is encoded in UTF-8, no byte order mark.
+# For compatibility with Latin-1 installations, please
+# don't add literal characters above U+00ff.
+#
-# NOTE: To turn off "Current Events" in the sidebar,
-# set "currentevents" => "-"
+require_once( "LanguageUtf8.php" );
+
+#--------------------------------------------------------------------------
+# Language-specific text
+#--------------------------------------------------------------------------
# The names of the namespaces can be set here, but the numbers
# are magical, so don't change or move them! The Namespace class
@@ -20,32 +30,38 @@
7 => "Billede_diskussion",
8 => "MediaWiki",
9 => "MediaWiki_diskussion",
- 10 => "Template",
- 11 => "Template_talk"
+ 10 => "Skabelon",
+ 11 => "Skabelon_diskussion",
+ 12 => "Hjælp",
+ 13 => "Hjælp_diskussion",
+ 14 => "Kategori",
+ 15 => "Kategori_diskussion"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsDa = array(
- "Ingen", "Fast venstre", "Fast højre", "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(
- "Vis altid som PNG",
- "HTML hvis meget simpel ellers PNG",
- "HTML hvis muligt ellers PNG",
- "Lad være som TeX (for tekstbrowsere)",
- "Anbefalet til moderne browsere"
+ MW_MATH_PNG => "Vis altid som PNG",
+ MW_MATH_SIMPLE => "HTML hvis meget simpel ellers PNG",
+ MW_MATH_HTML => "HTML hvis muligt ellers PNG",
+ MW_MATH_SOURCE => "Lad være som TeX (for tekstbrowsere)",
+ MW_MATH_MODERN => "Anbefalet til moderne browsere",
+ MW_MATH_MATHML => "MathML hvis muligt",
);
/* private */ $wgDateFormatsDa = array(
@@ -57,24 +73,24 @@
);
/* private */ $wgUserTogglesDa = array(
- "hover" => "Vis svævende tekst over wikihenvisninger",
+ "hover" => "Vis svævende tekst over wikihenvisninger",
"underline" => "Understreg henvisninger",
- "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<br>(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<br>(ikke for alle browsere)",
"numberheadings" => "Automatisk nummerering af overskrifter",
- "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<br> 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<br> på afsnittets titel (JavaScript)",
"showtoc"=>"Vis indholdsfortegnelse<br>(for artikler med mere end tre afsnit)",
- "rememberpassword" => "Husk adgangskode til næste besøg",
+ "rememberpassword" => "Husk adgangskode til næste besøg",
"editwidth" => "Redigeringsboksen har fuld bredde",
- "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"
+ "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(
@@ -87,8 +103,8 @@
);
/* private */ $wgWeekdayNamesDa = array(
- "søndag", "mandag", "tirsdag", "onsdag", "torsdag",
- "fredag", "lørdag"
+ "søndag", "mandag", "tirsdag", "onsdag", "torsdag",
+ "fredag", "lørdag"
);
/* private */ $wgMonthNamesDa = array(
@@ -110,22 +126,22 @@
"Userlogin" => "",
"Userlogout" => "",
"Preferences" => "Mine brugerindstillinger",
- "Watchlist" => "Min overvågningsliste",
- "Recentchanges" => "Seneste ændringer",
- "Upload" => "Læg filer op",
+ "Watchlist" => "Min overvågningsliste",
+ "Recentchanges" => "Seneste ændringer",
+ "Upload" => "Læg filer op",
"Imagelist" => "Billedliste",
"Listusers" => "Registrerede brugere",
"Statistics" => "Statistik om siden",
- "Randompage" => "Tilfældig artikel",
+ "Randompage" => "Tilfældig artikel",
- "Lonelypages" => "Forældreløse artikler",
- "Unusedimages" => "Forældreløse filer",
-# "Popularpages" => "Populære 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",
@@ -139,14 +155,14 @@
"Recentchangeslinked" => "",
"Movepage" => "",
"Booksources" => "Eksterne bogkilder",
-# "Categories" => "Sidekategorier",
- "Export" => "Eksportér sider i XML format",
+ "Categories" => "Kategorier",
+ "Export" => "Eksportér sider i XML format",
"Version" => "Vis MediaWiki version",
);
/* private */ $wgSysopSpecialPagesDa = array(
"Blockip" => "Bloker en IP-adresse",
- "Asksql" => "Lav en forespørgsel i databasen",
+ "Asksql" => "Lav en forespørgsel i databasen",
"Undelete" => "Se og gendan slettede sider",
"Makesysop" => "Lav en bruger til administrator"
);
@@ -156,6 +172,23 @@
"Unlockdb" => "Gendan skriveadgangen til databasen",
);
+#-------------------------------------------------------------------
+# Default messages
+#-------------------------------------------------------------------
+# Allowed characters in keys are: A-Z, a-z, 0-9, underscore (_) and
+# hyphen (-). If you need more characters, you may be able to change
+# the regex in MagicWord::initRegex
+
+# NOTE: To turn off "Current Events" in the sidebar,
+# set "currentevents" => ""
+
+# NOTE: To turn off "Disclaimers" in the title links,
+# set "disclaimers" => ""
+
+# NOTE: To turn off "Community portal" in the title links,
+# set "portal" => ""
+
+
/* private */ $wgAllMessagesDa = array(
# Bits of text used by many pages:
@@ -165,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" => "Hjælp",
-"helppage" => "Wikipedia:Hjælp",
+"help" => "Hjælp",
+"helppage" => "Wikipedia:Hjælp",
"wikititlesuffix" => "Wikipedia",
"bugreports" => "Fejlrapporter",
"bugreportspage" => "Wikipedia:Fejlrapporter",
@@ -180,12 +213,12 @@
"sitesupportpage" => "Wikipedia:Donation", # If not set, won't appear. Can be wiki page or URL
"faq" => "OSS",
"faqpage" => "Wikipedia:OSS",
-"edithelp" => "Hjælp til redigering",
+"edithelp" => "Hjælp til redigering",
"edithelppage" => "Wikipedia:Hvordan_redigerer_jeg_en_side",
"cancel" => "Afbryd",
"qbfind" => "Find",
"qbbrowse" => "Gennemse",
-"qbedit" => "Redigér",
+"qbedit" => "Redigér",
"qbpageoptions" => "Indstillinger for side",
"qbpageinfo" => "Information om side",
"qbmyoptions" => "Mine indstillinger",
@@ -194,20 +227,20 @@
"currentevents" => "Aktuelle begivenheder",
"errorpagetitle" => "Fejl",
"returnto" => "Tilbage til $1.",
-"fromwikipedia" => "Fra Wikipedia, den frie encyklopædi",
+"fromwikipedia" => "Fra Wikipedia, den frie encyklopædi",
"whatlinkshere" => "Sider med en henvisning hertil",
-"help" => "Hjælp",
-"search" => "Søg",
-"go" => "Udfør",
+"help" => "Hjælp",
+"search" => "Søg",
+"go" => "Udfør",
"history" => "Historie",
"printableversion" => "Printervenlig version",
-"editthispage" => "Redigér side",
+"editthispage" => "Redigér side",
"deletethispage" => "Slet side",
"protectthispage" => "Beskyt side",
"unprotectthispage" => "Fjern beskyttelse af side",
"newpage" => "Ny side",
"talkpage" => "Diskussionssiden",
-"postcomment" => "Tilføj en kommentar",
+"postcomment" => "Tilføj en kommentar",
"articlepage" => "Se artiklen",
"subjectpage" => "Se emnesiden",
"userpage" => "Se brugersiden",
@@ -216,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 <a class=internal href='$wgScriptPath/GNU_FDL'>GNU FDL</a>.",
"printsubtitle" => "(Fra http://da.wikipedia.org)",
"protectedpage" => "Beskyttet side",
"administrators" => "Wikipedia:Administratorer",
-"sysoptitle" => "Sysop-adgang påkrævet",
+"sysoptitle" => "Sysop-adgang påkrævet",
"sysoptext" => "Den funktion du har bedt om kan kun
-udføres af brugere med \"sysop\"-status. Se $1.",
-"developertitle" => "Developer-adgang påkrævet",
+udføres af brugere med \"sysop\"-status. Se $1.",
+"developertitle" => "Developer-adgang påkrævet",
"developertext" => "Den funktion du har bedt om, kan kun
-udføres af brugere med \"developer\"-status. Se $1.",
+udføres af brugere med \"developer\"-status. Se $1.",
"nbytes" => "$1 bytes",
-"go" => "Udfør",
+"go" => "Udfør",
"ok" => "OK",
"sitetitle" => "Wikipedia",
-"sitesubtitle" => "Den frie encyklopædi",
+"sitesubtitle" => "Den frie encyklopædi",
"retrievedfrom" => "Hentet fra \"$1\"",
"newmessages" => "Du har $1.",
"newmessageslink" => "nye beskeder",
-"editsection"=>"redigér",
+"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 sådan specialside findes ikke",
+"nosuchspecialpage" => "En sådan specialside findes ikke",
"nospecialpagetext" => "Du har bedt om en specialside, der ikke
kan genkendes af Wikipediasoftwaren.",
@@ -256,181 +289,181 @@ kan genkendes af Wikipediasoftwaren.",
#
"error" => "Fejl",
"databaseerror" => "Databasefejl",
-"dberrortext" => "Der er sket en syntaksfejl i en databaseforespørgsel.
-Dette kan være på grund af en illegal forespørgsel (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 forsøgte databaseforespørgsel var:
+Den sidst forsøgte databaseforespørgsel var:
<blockquote><tt>$1</tt></blockquote>
fra funktionen \"<tt>$2</tt>\".
MySQL returnerede fejlen \"<tt>$3: $4</tt>\".",
-"dberrortextcl" => "Der er sket en syntaksfejl i en databaseforespørgsel.
-Den sidst forsøgte databaseforespørgsel 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 vælge databasen $1",
-"cachederror" => "Det følgende er en gemt kopi af den ønskede side, og er måske 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å 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.
+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:
<p>$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\".
<p>Dette er ikke en databasefejl, men sandsynligvis en fejl i softwaren.
<p>Send venligst en rapport om dette til en administrator,
-hvor du også nævner URL'en.",
+hvor du også nævner URL'en.",
"internalerror" => "Intern fejl",
"filecopyerror" => "Kunne ikke kopiere filen \"$1\" til \"$2\".",
-"filerenameerror" => "Kunne ikke omdøbe 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 værdi: \"$1\"=\"$2\".",
+"unexpected" => "Uventet værdi: \"$1\"=\"$2\".",
"formerror" => "Fejl: kunne ikke afsende form",
-"badarticleerror" => "Denne funktion kan ikke udføres 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" => "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!!).",
+"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 fortsætte 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" => "<h2>Velkommen, $1!</h2><p>Din konto er blevet
-oprettet. Glem ikke at personliggøre 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 næste gang.",
-"loginproblem" => "<b>Der har været et problem med at få dig logget
-på.</b><br>Prøv igen!",
+"remembermypassword" => "Husk min adgangskode til næste gang.",
+"loginproblem" => "<b>Der har været et problem med at få dig logget
+på.</b><br>Prøv igen!",
"alreadyloggedin" => "<font color=red><b>Bruger $1, du er allerede logget
-på!</b></font><br>\n",
+på!</b></font><br>\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. Vælg
+"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 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
+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\".
-Kontrollér stavemåden igen, eller brug formularen herunder til at oprette en ny brugerkonto.",
-"wrongpassword" => "Den indtastede adgangskode var forkert. Prøv 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 bør 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 bør 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" => "Overvåg denne artikel",
+"minoredit" => "Dette er en mindre ændring.",
+"watchthis" => "Overvåg denne artikel",
"savearticle" => "Gem side",
-"preview" => "Forhåndsvisning",
-"showpreview" => "Forhåndsvisning",
+"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:<br>$2<p>Du kan kontakte $1
eller en af de andre [[Wikipedia:Administratorer|administratorer]] for at diskutere blokeringen.
Din IP-adresse er $3.
-Sørg 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å nuværende tidspunkt ingen tekst på denne side.<br>
+"newarticletext" => "Der er på nuværende tidspunkt ingen tekst på denne side.<br>
Du kan begynde en artikel ved at skrive i boksen herunder.
-(se [[Wikipedia:Hjælp|hjælpen]] for yderligere information).<br>
-Hvis det ikke var din mening, så tryk på '''Tilbage''' eller '''Back''' knappen.",
+(se [[Wikipedia:Hjælp|hjælpen]] for yderligere information).<br>
+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 nødt 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 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
+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å nuværende tidspunkt ingen tekst på denne
+"noarticletext" => "(Der er på nuværende tidspunkt ingen tekst på denne
side)",
"updated" => "(Opdateret)",
"note" => "<strong>Note:</strong> ",
-"previewnote" => "Husk at dette er kun en forhåndsvisning, siden er ikke
+"previewnote" => "Husk at dette er kun en forhåndsvisning, siden er ikke
gemt endnu!",
-"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.",
+"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 nuværende tekst.
-Dine ændringer er vist i den nederste tekstboks.
-Du er nødt til at sammenflette dine ændringer med den eksisterende tekst.
-<b>Kun</b> teksten i den øverste tekstboks vil blive gemt når 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.
+<b>Kun</b> teksten i den øverste tekstboks vil blive gemt når du
trykker \"Gem side\".\n<p>",
"yourtext" => "Din tekst",
"storedversion" => "Den gemte version",
"editingold" => "<strong>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.</strong>\n",
"yourdiff" => "Forskelle",
-"copyrightwarning" => "Læg mærke 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 nåde og kopieret efter
-forgodtbefindene, så skal du ikke lægge det her.<br>
-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.<br>
+Du lover os også, at du skrev teksten selv, kopierede fra en
public domain eller lignende fri ressource.
-<strong>LÆG ALDRIG MATERIALE HER SOM ER BESKYTTET AF ANDRES OPHAVSRET UDEN
+<strong>LÆG ALDRIG MATERIALE HER SOM ER BESKYTTET AF ANDRES OPHAVSRET UDEN
DERES TILLADELSE!</strong>",
"longpagewarning" => "ADVARSEL: Denne side er $1 kilobytes lang; nogle
-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
+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
<a href='$wgScriptPath/$wgMetaNamespace:Politik_for_beskyttede_sider'>politiken for
beskyttede sider</a>.",
@@ -440,64 +473,64 @@ beskyttede sider</a>.",
"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. Kontrollér den URL du brugte til at få adgang til denne side.\n",
-"loadhist" => "Indlæser sidens historik",
-"currentrev" => "Nuværende 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" => "nuværende",
-"next" => "næste",
+"cur" => "nuværende",
+"next" => "næste",
"last" => "forrige",
"orig" => "originale",
-"histlegend" => "Forklaring: (nuværende) = forskel til den nuværende
-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" => "indlæser version for at se forskelle",
+"loadingrev" => "indlæser version for at se forskelle",
"lineno" => "Linje $1:",
-"editcurrent" => "Redigér den nuværende version af denne side",
+"editcurrent" => "Redigér den nuværende version af denne side",
# Search results
#
-"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
+"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\".
-Prøv en anden forespørgsel.",
-"matchtotals" => "Forespørgslen \"$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 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",
+"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" => "næste $1",
+"nextn" => "næste $1",
"viewprevnext" => "Vis ($1) ($2) ($3).",
"showingresults" => "Nedenfor vises <b>$1</b> resultater startende med
nummer <b>$2</b>.",
"showingresultsnum" => "Herunder vises <b>$3</b> resultater startende med nummer <b>$2</b>.",
-"nonefound" => "<strong>Note</strong>: 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",
+"nonefound" => "<strong>Note</strong>: 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" => "
-Søg i navnerum :<br>
+Søg i navnerum :<br>
$1<br>
-$2 List omdirigeringer &nbsp; Søg efter $3 $9",
-"searchdisabled" => "<p>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:</p>
+$2 List omdirigeringer &nbsp; Søg efter $3 $9",
+"searchdisabled" => "<p>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:</p>
",
"googlesearch" => "<!-- SiteSearch Google -->
@@ -526,14 +559,14 @@ value=\"{$wgServer}\" checked> {$wgServer} <br>
# Preferences page
#
"preferences" => "Indstillinger",
-"prefsnologin" => "Ikke logget på",
-"prefsnologintext" => "Du skal være <a href=\"" .
- wfLocalUrl( "Speciel:Userlogin" ) . "\">logget på</a>
-for at ændre brugerindstillinger.",
-"prefslogintext" => "Du logget på som \"$1\".
+"prefsnologin" => "Ikke logget på",
+"prefsnologintext" => "Du skal være <a href=\"" .
+ wfLocalUrl( "Speciel:Userlogin" ) . "\">logget på</a>
+for at ændre brugerindstillinger.",
+"prefslogintext" => "Du logget på som \"$1\".
Dit interne ID-nummer er $2.
-Se [[Wikipedia:Hvordan sætter 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",
@@ -550,96 +583,96 @@ Se [[Wikipedia:Hvordan sætter jeg mine indstillinger]] for en forklaring på de f
"oldpassword" => "Gammel adgangskode",
"newpassword" => "Ny adgangskode",
"retypenew" => "Gentag ny adgangskode",
-"textboxsize" => "Tekstboks-størrelse",
-"rows" => "Rækker",
+"textboxsize" => "Tekstboks-størrelse",
+"rows" => "Rækker",
"columns" => "Kolonner",
-"searchresultshead" => "Indstillinger for søgeresultater",
+"searchresultshead" => "Indstillinger for søgeresultater",
"resultsperpage" => "Resultater pr. side",
"contextlines" => "Linjer pr. resultat",
"contextchars" => "Tegn pr. linje i resultatet",
-"stubthreshold" => "Grænse 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\" når 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" => "Fravælg muligheden for at få e-mail fra andre brugere",
-"defaultns" => "Søg 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" => "Indlæser seneste ændrede sider",
-"rcnote" => "Nedenfor er de seneste <strong>$1</strong> æ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 <strong>$1</strong> ændringer i de
sidste <strong>$2</strong> dage.",
-"rcnotefrom" => "Nedenfor er ændringerne fra <b>$2</b> indtil <b>$1</b> 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 <b>$2</b> indtil <b>$1</b> 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" => "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 <a href=\"" .
- wfLocalUrl( "Speciel:Userlogin" ) . "\">logget på</a>
-for at kunne lægge filer op.",
-"uploadfile" => "Læg filen op",
-"uploaderror" => "Fejl under oplægning af fil",
-"uploadtext" => "<strong>STOP!</strong> Før du lægger filer op her,
-så vær sikker på du har læst og følger Wikipedias <a href=\"" .
+"upload" => "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 <a href=\"" .
+ wfLocalUrl( "Speciel:Userlogin" ) . "\">logget på</a>
+for at kunne lægge filer op.",
+"uploadfile" => "Læg filen op",
+"uploaderror" => "Fejl under oplægning af fil",
+"uploadtext" => "<strong>STOP!</strong> Før du lægger filer op her,
+så vær sikker på du har læst og følger Wikipedias <a href=\"" .
wfLocalUrlE( "Wikipedia:Politik om brug af billeder" ) . "\">politik om brug
af billeder</a>.
-<p>For at se eller søge i billeder, som tidligere er lagt op,
-gå til <a href=\"" . wfLocalUrlE( "Speciel:Imagelist" ) .
+<p>For at se eller søge i billeder, som tidligere er lagt op,
+gå til <a href=\"" . wfLocalUrlE( "Speciel:Imagelist" ) .
"\">listen over billeder</a>.
-Oplægning og sletninger er registreret i <a href=\"" .
+Oplægning og sletninger er registreret i <a href=\"" .
wfLocalUrlE( "Wikipedia:Upload_log" ) . "\">log over oplagte filer</a>.
-<p>Brug formularen herunder til at lægge nye billeder op, der kan bruges
+<p>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.
-Når du vælger 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 gør du ved at sætte et mærke i checkboksen.
-Tryk på \"Læg op\"-knappen for at lægge 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.
<p>De foretrukne formater er JPEG til fotografiske billeder, PNG
-til tegninger og andre små billeder, og OGG til lyd.
-Sørg 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
<b>[[billede:fil.jpg]]</b> eller <b>[[billede:fil.png|alternativ tekst]]</b>
eller <b>[[media:fil.ogg]]</b> for lyd.
-<p>Læg mærke til at præcis som med Wikipedia-sider, så kan og må andre gerne
+<p>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 hjælper encyklopædien, og
-du kan blive blokeret fra at lægge op hvis du misbruger systemet.",
-"uploadlog" => "oplægningslog",
+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).
@@ -648,27 +681,27 @@ op senest. Alle de viste tider er serverens tid (UTC).
",
"filename" => "Filnavn",
"filedesc" => "Beskrivelse",
-"affirmation" => "Jeg bekræfter, 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 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\".",
+"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" => "Oplægning er gennemført med success",
+"successfulupload" => "Oplægning er gennemført med success",
"fileuploaded" => "Filen \"$1\" er lagt op med success.
-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
+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" => "Oplægningsadvarsel",
+"uploadwarning" => "Oplægningsadvarsel",
"savefile" => "Gem fil",
"uploadedimage" => "Lagde \"$1\" op",
-"uploaddisabled" => "Desværre er funktionen til at lægge billeder op afbrudt på denne server.",
+"uploaddisabled" => "Desværre er funktionen til at lægge billeder op afbrudt på denne server.",
# Image list
#
@@ -676,23 +709,24 @@ 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" => "Søg",
+"ilsubmit" => "Søg",
"showlast" => "Vis de sidste $1 billeder sorteret $2.",
"all" => "alle",
"byname" => "efter navn",
"bydate" => "efter dato",
-"bysize" => "efter størrelse",
+"bysize" => "efter størrelse",
"imgdelete" => "slet",
"imgdesc" => "beskrivelse",
-"imglegend" => "Forklaring: (beskrivelse) = vis/redigér billedebeskrivelse.",
+"imglegend" => "Forklaring: (beskrivelse) = vis/redigér billedebeskrivelse.",
"imghistory" => "Billedhistorik",
"revertimg" => "gendan",
"deleteimg" => "slet",
-"imghistlegend" => "Forklaring: (nuværende) = dette er det nuværende billede,
+"deleteimgcompletely" => "slet",
+"imghistlegend" => "Forklaring: (nuværende) = dette er det nuværende billede,
(slet) = slet denne gamle version, (gendan) = gendan en gammel version.
-<br><i>Klik på en dato for at se billedet, som er lagt op den dag</i>.",
+<br><i>Klik på en dato for at se billedet, som er lagt op den dag</i>.",
"imagelinks" => "Billedehenvisninger",
-"linkstoimage" => "De følgende 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
@@ -704,11 +738,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 <b>$2</b> sider som sandsynligvis er
+Hvis man ekskludere disse, så er der <b>$2</b> sider som sandsynligvis er
rigtige artikler.<p>
-Der har ialt været <b>$3</b> viste sider, og <b>$4</b> redigeringer af sider
+Der har ialt været <b>$3</b> viste sider, og <b>$4</b> redigeringer af sider
siden softwaren blev opdateret (25. september 2002).
-Det vil sige, der har været <b>$5</b> gennemsnitlige redigeringer pr. side,
+Det vil sige, der har været <b>$5</b> gennemsnitlige redigeringer pr. side,
og <b>$6</b> visninger pr. redigering.",
"userstatstext" => "Der er <b>$1</b> registrerede brugere.
<b>$2</b> af disse er administratorer (se $3).",
@@ -716,34 +750,34 @@ og <b>$6</b> visninger pr. redigering.",
# Maintenance Page
#
"maintenance" => "Vedligeholdelsesside",
-"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
+"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 følgende artikler henviser til
+"disambiguationstext" => "De følgende artikler henviser til
<i>artikler med flertydige titler</i>. De skulle henvise til en ikke-flertydig
titel i stedet for.<br>En artikel bliver behandlet som flertydig, hvis den er
henvist fra $1.<br>Henvisninger fra andre navnerum er <i>ikke</i> listet her.",
"doubleredirects" => "Dobbelte omdirigeringer",
-"doubleredirectstext" => "<b>Bemærk:</b> Denne liste kan indeholde forkerte
+"doubleredirectstext" => "<b>Bemærk:</b> Denne liste kan indeholde forkerte
resultater. Det er som regel, fordi siden indeholder ekstra tekst under den
-første #REDIRECT.<br>\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
+første #REDIRECT.<br>\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 følgende 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 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).",
+"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",
@@ -754,15 +788,15 @@ henvisning til den samme artikel i $1. Omdirigeringer og underartikler er
# Miscellaneous special pages
#
-"orphans" => "Forældreløse artikler",
-"lonelypages" => "Forældreløse artikler",
+"orphans" => "Forældreløse artikler",
+"lonelypages" => "Forældreløse artikler",
"unusedimages" => "Ubrugte billeder",
-"popularpages" => "Populære artikler",
+"popularpages" => "Populære artikler",
"nviews" => "$1 visninger",
-"wantedpages" => "Ønskede artikler",
+"wantedpages" => "Ønskede artikler",
"nlinks" => "$1 henvisninger",
"allpages" => "Alle artikler",
-"randompage" => "Tilfældig artikel",
+"randompage" => "Tilfældig artikel",
"shortpages" => "Korte artikler",
"longpages" => "Lange artikler",
"listusers" => "Brugerliste",
@@ -771,21 +805,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" => "<p>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
+"unusedimagestext" => "<p>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
-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.
+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",
@@ -793,18 +827,18 @@ og denne liste skal ikke ses som en anbefaling af disse.",
# Email this user
#
"mailnologin" => "Ingen afsenderadresse",
-"mailnologintext" => "Du skal være <a href=\"" .
- wfLocalUrl( "Speciel:Userlogin" ) . "\">logget på</a>
+"mailnologintext" => "Du skal være <a href=\"" .
+ wfLocalUrl( "Speciel:Userlogin" ) . "\">logget på</a>
og have en gyldig e-mailadresse sat i dine <a href=\"" .
wfLocalUrl( "Speciel:Preferences" ) . "\">indstillinger</a>
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.",
@@ -818,65 +852,65 @@ eller har valgt ikke at modtage e-mail fra andre brugere.",
# Watchlist
#
-"watchlist" => "Overvågningsliste",
+"watchlist" => "Overvågningsliste",
"watchlistsub" => "(for bruger \"$1\")",
-"nowatchlist" => "Du har ingenting i din overvågningsliste.",
-"watchnologin" => "Ikke logget på",
-"watchnologintext" => "Du skal være <a href=\"" .
- wfLocalUrl( "Speciel:Userlogin" ) . "\">logget på</a>
-for at kunne ændre din overvågningsliste.",
-"addedwatch" => "Tilføjet til din overvågningsliste",
-"addedwatchtext" => "Siden \"$1\" er blevet tilføjet til din <a href=\"" .
- wfLocalUrl( "Speciel:Watchlist" ) . "\">overvågningsliste</a>.
-Fremtidige ændringer til denne side og den tilhørende diskussionsside vil
-blive listet her, og siden vil fremstå <b>fremhævet</b> i <a href=\"" .
+"nowatchlist" => "Du har ingenting i din overvågningsliste.",
+"watchnologin" => "Ikke logget på",
+"watchnologintext" => "Du skal være <a href=\"" .
+ wfLocalUrl( "Speciel:Userlogin" ) . "\">logget på</a>
+for at kunne ændre din overvågningsliste.",
+"addedwatch" => "Tilføjet til din overvågningsliste",
+"addedwatchtext" => "Siden \"$1\" er blevet tilføjet til din <a href=\"" .
+ wfLocalUrl( "Speciel:Watchlist" ) . "\">overvågningsliste</a>.
+Fremtidige ændringer til denne side og den tilhørende diskussionsside vil
+blive listet her, og siden vil fremstå <b>fremhævet</b> i <a href=\"" .
wfLocalUrl( "Speciel:Recentchanges" ) . "\">listen med de seneste
-ændringer</a> for at gøre det lettere at finde den.</p>
+ændringer</a> for at gøre det lettere at finde den.</p>
-<p>Hvis du senere vil fjerne siden fra din overvågningsliste, så klik
-\"Fjern overvågning\" ude i siden.",
-"removedwatch" => "Fjernet fra overvågningsliste",
+<p>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
-overvågningsliste.",
-"watchthispage" => "Overvåg side",
-"unwatchthispage" => "Fjern overvågning",
+overvågningsliste.",
+"watchthispage" => "Overvåg side",
+"unwatchthispage" => "Fjern overvågning",
"notanarticle" => "Ikke en artikel",
-"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;
+"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...
-<a href='$4'>vis og redigér den komplette liste</a>.)",
-"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...",
+<a href='$4'>vis og redigér den komplette liste</a>.)",
+"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 <b>$2</b> timer.",
+"wlnote" => "Nedenfor er de seneste $1 ændringer i de sidste <b>$2</b> timer.",
# Delete/protect/revert
#
"deletepage" => "Slet side",
-"confirm" => "Bekræft",
+"confirm" => "Bekræft",
"excontent" => "indholdet var:",
-"exbeforeblank" => "indholdet før siden blev tømt var:",
+"exbeforeblank" => "indholdet før siden blev tømt var:",
"exblank" => "siden var tom",
-"confirmdelete" => "Bekræft 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 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
+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" => "Gennemført",
+"actioncomplete" => "Gennemført",
"deletedtext" => "\"$1\" er slettet.
Se $2 for en fortegnelse over de nyeste sletninger.",
"deletedarticle" => "slettet \"$1\"",
@@ -889,7 +923,7 @@ Alle tider er serverens tid (UTC).
"deletionlog" => "sletningslog",
"reverted" => "Gendannet en tidligere version",
"deletecomment" => "Begrundelse for sletning",
-"imagereverted" => "Gendannelse af en tidligere version gennemført med
+"imagereverted" => "Gendannelse af en tidligere version gennemført med
success.",
"rollback" => "Fjern redigeringer",
"rollbacklink" => "fjern redigering",
@@ -905,7 +939,7 @@ Den seneste redigering er foretaget af [[Bruger:$3|$3]] ([[Bruger diskussion:$3|
"editcomment" => "Kommentaren til redigeringen var: \"<i>$1</i>\".",
"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 fået 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]]",
@@ -913,15 +947,15 @@ Se [[Wikipedia:Beskyttet side]] for mere information.",
# Undelete
"undelete" => "Gendan en slettet side",
"undeletepage" => "Se og gendan slettede sider",
-"undeletepagetext" => "De følgende 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\"",
@@ -934,20 +968,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 <b>$1</b> ændringer i de
+"nocontribs" => "Ingen ændringer er fundet som matcher disse kriterier.",
+"ucnote" => "Herunder er denne brugers sidste <b>$1</b> ændringer i de
sidste <b>$2</b> 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 mål",
-"notargettext" => "Du har ikke specificeret en målside eller bruger
-at udføre 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 følgende sider henviser her til:",
+"linkshere" => "De følgende sider henviser her til:",
"nolinkshere" => "Ingen sider henviser her til.",
"isredirect" => "omdirigeringsside",
@@ -956,119 +990,119 @@ at udføre denne funktion på.",
"blockip" => "Bloker bruger",
"blockiptext" => "Brug formularen herunder til at blokere for skriveadgangen
fra en specifik IP-adresse eller et brugernavn.
-Dette må kun gøres 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 været 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 udført med success",
+"blockipsuccesssub" => "Blokering udført med success",
"blockipsuccesstext" => "\"$1\" er blevet blokeret.
<br>Se [[Speciel:Ipblocklist|IP blokeringslisten]] for alle blokeringer.",
-"unblockip" => "Ophæv 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" => "Ophæv blokeringen af denne adresse",
-"ipusuccess" => "\"$1\" har fået ophævet 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" => "ophæv blokering",
+"unblocklink" => "ophæv blokering",
"contribslink" => "bidrag",
"autoblocker" => "Automatisk blokeret fordi du deler IP-adresse med \"$1\". Begrundelse \"$2\".",
# Developer tools
#
-"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.
-<br>Husk at fjerne låsen når du er færdig med din vedligeholdelse.",
-"unlockdbsuccesstext" => "Wikipediadatabasen er låst 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.
+<br>Husk at fjerne låsen når du er færdig med din vedligeholdelse.",
+"unlockdbsuccesstext" => "Wikipediadatabasen er låst op.",
# SQL query
#
-"asksql" => "SQL-forespørgsel",
-"asksqltext" => "Brug formularen herunder til at lave direkte forespørgsler
+"asksql" => "SQL-forespørgsel",
+"asksqltext" => "Brug formularen herunder til at lave direkte forespørgsler
i Wikipediadatabasen.
-Brug enkelte anførselstegn ('sådan 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" => "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
+"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" => "Forespørgsel gennemført med success",
+"querysuccessful" => "Forespørgsel gennemført med success",
# Move page
#
"movepage" => "Flyt side",
-"movepagetext" => "Når du bruger formularen herunder vil du få omdøbt 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. Sørg for at
-[[Speciel:Maintenance|tjekke]] for dobbelte eller dårlige 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.
-Bemærk 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.
<b>ADVARSEL!</b>
-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,
+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 tilfælde er du nødt 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 være registreret bruger og være <a href=\"" .
- wfLocalUrl( "Speciel:Userlogin" ) . "\">logget på</a>
+"movenologin" => "Ikke logget på",
+"movenologintext" => "Du skal være registreret bruger og være <a href=\"" .
+ wfLocalUrl( "Speciel:Userlogin" ) . "\">logget på</a>
for at flytte en side.",
"newtitle" => "Til ny titel",
"movepagebtn" => "Flyt side",
-"pagemovedsub" => "Flytning gennemført",
+"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. Vælg et andet navn.",
-"talkexists" => "Siden blev flyttet korrekt, men den tilhørende
+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 nødt 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 tilhørende diskussionsside blev også flyttet.",
-"talkpagenotmoved" => "Den tilhørende diskussionsside blev
+"movetalk" => "Flyt også \"diskussion\"ssiden, hvis den eksisterer.",
+"talkpagemoved" => "Den tilhørende diskussionsside blev også flyttet.",
+"talkpagenotmoved" => "Den tilhørende diskussionsside blev
<strong>ikke</strong> flyttet.",
);
-class LanguageDa extends Language {
+class LanguageDa extends LanguageUtf8 {
function getDefaultUserOptions () {
$opt = Language::getDefaultUserOptions();
@@ -1128,35 +1162,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 )) . ". " .
@@ -1165,46 +1194,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 1562a4efe869..58ad526b626d 100644
--- a/languages/LanguageDe.php
+++ b/languages/LanguageDe.php
@@ -1,26 +1,38 @@
<?php
+#
+# German localisation for MediaWiki
+#
+# This file is encoded in UTF-8, no byte order mark.
+# For compatibility with Latin-1 installations, please
+# don't add literal characters above U+00ff.
+#
+require_once( "LanguageUtf8.php" );
+
# See Language.php for notes.
if($wgMetaNamespace === FALSE)
$wgMetaNamespace = str_replace( " ", "_", $wgSitename );
/* private */ $wgNamespaceNamesDe = array(
- -2 => "Media",
- -1 => "Spezial",
- 0 => "",
- 1 => "Diskussion",
- 2 => "Benutzer",
- 3 => "Benutzer_Diskussion",
- 4 => $wgMetaNamespace,
- 5 => $wgMetaNamespace. "_Diskussion",
- 6 => "Bild",
- 7 => "Bild_Diskussion",
- 8 => "MediaWiki",
- 9 => "MediaWiki_Diskussion",
- 10 => "Template",
- 11 => "Template_talk"
-
-);
+ NS_MEDIA => "Media",
+ NS_SPECIAL => "Spezial",
+ NS_MAIN => "",
+ NS_TALK => "Diskussion",
+ NS_USER => "Benutzer",
+ NS_USER_TALK => "Benutzer_Diskussion",
+ NS_WIKIPEDIA => $wgMetaNamespace,
+ NS_WIKIPEDIA_TALK => $wgMetaNamespace . "_Diskussion",
+ NS_IMAGE => "Bild",
+ NS_IMAGE_TALK => "Bild_Diskussion",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWiki_Diskussion",
+ NS_TEMPLATE => "Vorlage",
+ NS_TEMPLATE_TALK => "Vorlage_Diskussion",
+ NS_HELP => "Hilfe",
+ NS_HELP_TALK => "Hilfe_Diskussion",
+ NS_CATEGORY => "Kategorie",
+ NS_CATEGORY_TALK => "Kategorie_Diskussion"
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsDe = array(
"Keine", "Links, fest", "Rechts, fest", "Links, schwebend"
@@ -34,36 +46,37 @@ if($wgMetaNamespace === FALSE)
'montparnasse' => "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 möglich als HTML darstellen, sonst PNG",
- "Als TeX belassen (für Textbrowser)",
- "Empfehlenswert für 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 für 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 Absätze anzeigen",
- "editsectiononrightclick" => "Einzelne Absätze 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 geänderte Seiten beobachten",
- "minordefault" => "Alle Änderungen als geringfügig markieren",
+ "watchdefault" => "Neue und geänderte Seiten beobachten",
+ "minordefault" => "Alle Änderungen als geringfügig markieren",
"previewontop" => "Vorschau vor dem Editierfenster anzeigen",
"nocache" => "Seitencache deaktivieren"
);
@@ -81,13 +94,13 @@ if($wgMetaNamespace === FALSE)
);
/* private */ $wgMonthNamesDe = array(
- "Januar", "Februar", "März", "April", "Mai", "Juni",
+ "Januar", "Februar", "März", "April", "Mai", "Juni",
"Juli", "August", "September", "Oktober", "November",
"Dezember"
);
/* private */ $wgMonthAbbreviationsDe = array(
- "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug",
+ "Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug",
"Sep", "Okt", "Nov", "Dez"
);
@@ -96,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" => "Zufälliger Artikel",
+ "Randompage" => "Zufälliger Artikel",
"Lonelypages" => "Verwaiste Artikel",
"Unusedimages" => "Verwaiste Dateien",
"Popularpages" => "Beliebte Artikel",
- "Wantedpages" => "Gewünschte 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)",
@@ -131,7 +144,7 @@ if($wgMetaNamespace === FALSE)
/* private */ $wgSysopSpecialPagesDe = array(
"Blockip" => "Blockiere eine IP-Adresse",
"Asksql" => "Datenbank-Abfrage",
- "Undelete" => "Gelöschte Seiten wiederherstellen"
+ "Undelete" => "Gelöschte Seiten wiederherstellen"
);
/* private */ $wgDeveloperSpecialPagesDe = array(
@@ -143,20 +156,20 @@ if($wgMetaNamespace === FALSE)
# Bits of text used by many pages:
#
-"categories" => "Seiten Kategorien",
+"categories" => "Seitenkategorien",
"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 Benutzeroberfläche]
-und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzrhandbuch] für 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",
@@ -165,13 +178,13 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzrhandbuch
"bugreportspage" => "{$wgMetaNamespace}:Kontakt",
"sitesupport" => "Spenden",
"faq" => "FAQ",
-"faqpage" => "{$wgSitename}:Häufig_gestellte_Fragen",
+"faqpage" => "{$wgSitename}:Häufig_gestellte_Fragen",
"edithelp" => "Bearbeitungshilfe",
"edithelppage" => "{$wgSitename}:Editierhilfe",
"cancel" => "Abbruch",
"qbfind" => "Finden",
-"qbbrowse" => "Blättern",
-"qbedit" => "Ändern",
+"qbbrowse" => "Blättern",
+"qbedit" => "Ändern",
"qbpageoptions" => "Seitenoptionen",
"qbpageinfo" => "Seitendaten",
"qbmyoptions" => "Einstellungen",
@@ -185,7 +198,7 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzrhandbuch
"disclaimers" => "Lizenzbestimmungen",
"disclaimerpage" => "{{ns:4}}:Lizenzbestimmungen",
"errorpagetitle" => "Fehler",
-"returnto" => "Zurück zu $1.",
+"returnto" => "Zurück zu $1.",
"fromwikipedia" => "aus {$wgSitename}, der freien Wissensdatenbank",
"whatlinkshere" => "Was zeigt hierhin",
"help" => "Hilfe",
@@ -194,18 +207,18 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzrhandbuch
"history_short" => "Versionen",
"printableversion" => "Druckversion",
"editthispage" => "Seite bearbeiten",
-"delete" => "löschen",
-"deletethispage" => "Diese Seite löschen",
+"delete" => "löschen",
+"deletethispage" => "Diese Seite löschen",
"undelete_short" => "Wiederherstellen",
-"protect" => "Schützen",
-"protectthispage" => "Artikel schützen",
+"protect" => "Schützen",
+"protectthispage" => "Artikel schützen",
"unprotect" => "Freigeben",
"unprotectthispage" => "Schutz aufheben",
"newpage" => "Neue Seite",
"talkpage" => "Diskussion",
"specialpage" => "Spezialseite",
-"personaltools" => "'Persönliche Werkzeuge",
-"postcomment" => "Kommentar hinzufügen",
+"personaltools" => "'Persönliche Werkzeuge",
+"postcomment" => "Kommentar hinzufügen",
"addsection" => "+",
"articlepage" => "Artikel",
"toolbox" => "Werkzeuge",
@@ -215,21 +228,27 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzrhandbuch
"viewtalkpage" => "Diskussion",
"otherlanguages" => "Andere Sprachen",
"redirectedfrom" => "(Weitergeleitet von $1)",
-"lastmodified" => "Diese Seite wurde zuletzt geändert um $1.",
+"lastmodified" => "Diese Seite wurde zuletzt geändert um $1.",
"viewcount" => "Diese Seite wurde bisher $1 mal abgerufen.",
-"copyright" => "Inhalt ist verfügbar unter der $1.",
-"gnunote" => "Diese Seite ist unter der <a class=internal href='$wgScriptPath/GNU_FDL'>GNU FDL</a> verfügbar.",
-"protectedpage" => "Geschützte Seite",
+"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 <a class=internal href='$wgScriptPath/GNU_FDL'>GNU FDL</a> verfügbar.",
+"protectedpage" => "Geschützte Seite",
"administrators" => "{$wgMetaNamespace}:Administratoren",
"sysoptitle" => "Sysop-Zugang notwendig",
-"sysoptext" => "Dieser Vorgang kann aus Sicherheitsgründen nur von Benutzern mit \"Sysop\"-Status durchgeführt 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 Sicherheitsgründen nur von Benutzern mit \"Entwickler\"-Status durchgeführt werden. Siehe auch $1.",
+"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 Enzyklopädie",
+"sitesubtitle" => "Die freie Enzyklopädie",
+"pagetitle" => "$1 - {{SITENAME}}",
+"sitesubtitle" => "Die freie Wissensdatenbank",
"retrievedfrom" => "Von \"$1\"",
"newmessages" => "Sie haben $1.",
"newmessageslink" => "neue Nachrichten",
@@ -238,7 +257,17 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzrhandbuch
"showtoc" => "Anzeigen",
"hidetoc" => "Verbergen",
"thisisdeleted" => "Ansehen oder wiederherstellen von $1?",
-"restorelink" => "$1 gelöschte Bearbeitungsvorgänge",
+"restorelink" => "$1 gelöschte Bearbeitungsvorgänge",
+"feedlinks" => "Feed:",
+
+# Kurzworte für jeden Namespace, u.a. von MonoBook verwendet
+'nstab-main' => 'Artikel',
+'nstab-user' => 'Benutzerseite',
+'nstab-media' => 'Media',
+'nstab-special' => 'Spezial',
+'nstab-image' => 'Bild',
+'nstab-help' => 'Hilfe',
+'nstab-category' => 'Kategorie',
# Editier-Werkzeugleiste
"bold_sample"=>"Fetter Text",
@@ -249,11 +278,11 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzrhandbuch
"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 einfügen",
+"headline_sample"=>"Ebene 2 Ãœberschrift",
+"headline_tip"=>"Ebene 2 Ãœberschrift",
+"math_sample"=>"Formel hier einfügen",
"math_tip"=>"Mathematische Formel (LaTeX)",
-"nowiki_sample"=>"Unformatierten Text hier einfügen",
+"nowiki_sample"=>"Unformatierten Text hier einfügen",
"nowiki_tip"=>"Unformatierter Text",
"image_sample"=>"Beispiel.jpg",
"image_tip"=>"Bild-Verweis",
@@ -265,16 +294,16 @@ und das [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide Benutzrhandbuch
# Main script and global functions
#
"nosuchaction" => "Diese Aktion gibt es nicht",
-"nosuchactiontext" => "Diese Aktion wird von der MediaWiki-Software nicht unterstützt",
+"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 unterstützt",
+"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 könnte eine illegale Suchanfrage sein (siehe $5),
+Das könnte eine illegale Suchanfrage sein (siehe $5),
oder ein Softwarefehler. Die letzte Datenbankabfrage lautete:
<blockquote><tt>$1</tt></blockquote>
aus der Funktion \"<tt>$2</tt>\".
@@ -283,33 +312,43 @@ MySQL meldete den Fehler \"<tt>$3: $4</tt>\".",
Die letzte Datenbankabfrage lautete: \"$1\" aus der Funktion \"<tt>$2</tt>\".
MySQL meldete den Fehler: \"<tt>$3: $4</tt>\".\n",
"noconnect" => "Konnte keine Verbindung zur Datenbank auf $1 herstellen",
-"nodb" => "Konnte Datenbank $1 nicht auswählen",
-"cachederror" => "Das folgende ist eine Kopie aus dem Cache und möglicherweise 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 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.",
+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 löschen.",
+"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 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<br>(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<br>(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 möglicherweise nicht aktuell:",
+"wrong_wfQuery_params" => "Falsche Parameter für wfQuery()<br />
+Funktion: $1<br />
+Query: $2
+",
+"viewsource" => "Quelltext betrachten",
+"protectedtext" => "Diese Seite ist für das Bearbeiten gesperrt, dafür kann es diverse Gründe geben, siehe [[{[ns:4}}:Geschützte Seiten]].
+
+Sie können den Quelltext dieser Seite betrachten und kopieren:",
+'seriousxhtmlerrors' => 'Tidy entdeckte schwere Fehler im XHTML-Markup.',
# Login and logout pages
#
"logouttitle" => "Benutzer-Abmeldung",
"logouttext" => "Sie sind nun abgemeldet.
-Sie können {$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" => "<h2>Willkommen, $1!</h2><p>Ihr Benutzerkonto wurde eingerichtet.
Vergessen Sie nicht, Ihre Einstellungen anzupassen.",
@@ -318,67 +357,79 @@ Vergessen Sie nicht, Ihre Einstellungen anzupassen.",
"yourname" => "Ihr Benutzername",
"yourpassword" => "Ihr Passwort",
"yourpasswordagain" => "Passwort wiederholen",
-"newusersonly" => " (nur für neue Mitglieder)",
+"newusersonly" => " (nur für neue Mitglieder)",
"remembermypassword" => "Dauerhaftes einloggen",
"loginproblem" => "<b>Es gab ein Problem mit Ihrer Anmeldung.</b><br>Bitte versuchen Sie es nochmal!",
"alreadyloggedin" => "<font color=red><b>Benutzer $1, Sie sind bereits angemeldet!</b></font><br>\n",
"login" => "Anmelden",
+"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 Passwörter stimmen nicht überein.",
-"userexists" => "Dieser Benutzername ist schon vergeben. Bitte wählen 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 müssen 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.
-Überprüfen 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 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.",
+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.",
+"loginend" => "&nbsp;",
+"mailerror" => "Fehler beim Senden von Mail: $1",
# Edit pages
#
"summary" => "Zusammenfassung",
#"subject" => "Betreff/Schlagzeile",
"subject" => "Betreff",
-"minoredit" => "Nur Kleinigkeiten wurden verändert.",
+"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:<br>$2<p>Bitte kontaktieren Sie den Administrator, um über die Blockierung zu sprechen.",
+Als Grund wurde angegeben:<br>$2<p>Bitte kontaktieren Sie den Administrator, um über die Blockierung zu sprechen.",
"whitelistedittitle" => "Zum Bearbeiten ist es erforderlich angemeldet zu sein",
-"whitelistedittext" => "Sie müssen sich [[Spezial:Userlogin|hier anmelden]] um Artikel bearbeiten zu können.",
+"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 müssen sich [[Spezial:Userlogin|hier anmelden]] um Artikel lesen zu können.",
+"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 dürfen müssen Sie sich [[Spezial:Userlogin|hier anmelden]] und die nötigen 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 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 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)",
-"updated" => "(Geändert)",
+"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 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 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' => "<strong>Tipp:</strong> Benutzen Sie den Vorschau-Button, um Ihr neues css/js vor dem Speichern zu testen.",
+"updated" => "(Geändert)",
"note" => "<strong>Hinweis:</strong> ",
"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.",
@@ -386,47 +437,49 @@ Als Grund wurde angegeben:<br>$2<p>Bitte kontaktieren Sie den Administrator, um
"sectionedit" => " (Absatz)",
"commentedit" => " (Kommentar)",
"editconflict" => "Bearbeitungs-Konflikt: $1",
-"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.
+"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.
<b>Nur</b> der Inhalt des oberen Textfeldes wird gespeichert, wenn Sie auf \"Speichern\" klicken!\n<p>",
"yourtext" => "Ihr Text",
"storedversion" => "Gespeicherte Version",
"editingold" => "<strong>ACHTUNG: Sie bearbeiten eine alte Version dieses Artikels.
-Wenn Sie speichern, werden alle neueren Versionen überschrieben.</strong>\n",
+Wenn Sie speichern, werden alle neueren Versionen überschrieben.</strong>\n",
"yourdiff" => "Unterschiede",
"copyrightwarning" => "
-<b>Bitte <font size='+1'>kopieren Sie keine Webseiten</font>, die nicht Ihre eigenen sind, benutzen Sie <fonz size='+1'>keine urheberrechtlich geschützten Werke</font> ohne Erlaubnis des Copyright-Inhabers!</b>
-<p>Sie geben uns hiermit ihre Zusage, dass Sie den Text <strong>selbst verfasst</strong> haben, dass der Text Allgemeingut (<strong>public domain</strong>) ist, oder dass der <strong>Copyright-Inhaber</strong> seine <strong>Zustimmung</strong> gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weisen Sie bitte auf der 'Diskussion:'-Seite darauf hin.
-<p><i>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\".</i>",
-"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.",
+<b>Bitte <font size='+1'>kopieren Sie keine Webseiten</font>, die nicht Ihre eigenen sind, benutzen Sie <font size='+1'>keine urheberrechtlich geschützten Werke</font> ohne Erlaubnis des Copyright-Inhabers!</b>
+<p>Sie geben uns hiermit ihre Zusage, dass Sie den Text <strong>selbst verfasst</strong> haben, dass der Text Allgemeingut (<strong>public domain</strong>) ist, oder dass der <strong>Copyright-Inhaber</strong> seine <strong>Zustimmung</strong> gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weisen Sie bitte auf der 'Diskussion:'-Seite darauf hin.
+<p><i>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\".</i>",
+"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
-<a href='$wgScriptPath/{$wgMetaNamespace}:Geschützte Seiten'>Regeln für geschützte Seiten</a>.",
+<a href='$wgScriptPath/{$wgMetaNamespace}:Geschützte Seiten'>Regeln für geschützte Seiten</a>.",
# History pages
#
-"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",
+"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" => "Nächste",
+"next" => "Nächste",
"last" => "Letzte",
"orig" => "Original",
-"histlegend" => "Legende:
+"histlegend" => "Diff Auswahl: Die Boxen der gewünschten
+Versionen markieren und 'Enter' drücken oder den Button unten klicken/alt-v.<br/>
+Legende:
(Aktuell) = Unterschied zur aktuellen Version,
(Letzte) = Unterschied zur vorherigen Version,
-M = Kleine Änderung",
+M = Kleine Änderung",
# Diffs
#
@@ -434,42 +487,45 @@ M = Kleine Änderung",
"loadingrev" => "lage Versionen zur Unterscheidung",
"lineno" => "Zeile $1:",
"editcurrent" => "Die aktuelle Version dieses Artikels bearbeiten",
+'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" => "Für mehr Information über {$wgSitename}, siehe $1.",
-"searchquery" => "Für 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 kürzer 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.
-Möglicherweise 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 Artikelüberschriften
-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 <a href=\"$1\">neu</a> 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" => "nächste $1",
+"nextn" => "nächste $1",
"viewprevnext" => "Zeige ($1) ($2) ($3).",
"showingresults" => "Hier sind <b>$1</b> Ergebnisse, beginnend mit #<b>$2</b>.",
"showingresultsnum" => "Hier sind <b>$3</b> Ergebnisse, beginnend mit #<b>$2</b>.",
"nonefound" => "<strong>Hinweis</strong>:
-Erfolglose Suchanfragen werden häufig verursacht durch den Versuch, nach 'gewöhnlichen' 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 Namensräumen :<br>
+Suche in Namensräumen :<br>
$1<br>
$2 Zeige auch REDIRECTs &nbsp; Suche nach $3 $9",
-"searchdisabled" => "<p>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.<p>
+"searchdisabled" => "<p>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.<p>
",
"googlesearch" => "<!-- SiteSearch Google -->
@@ -498,14 +554,14 @@ border=\"0\" ALT=\"Google\"></A>
#
"preferences" => "Einstellungen",
"prefsnologin" => "Nicht angemeldet",
-"prefsnologintext" => "Sie müssen <a href=\"" .
+"prefsnologintext" => "Sie müssen <a href=\"" .
wfLocalUrl( "Spezial:Userlogin" ) . "\">angemeldet</a>
-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 zurückgesetzt.",
+"prefsreset" => "Einstellungen wuden auf Standard zurückgesetzt.",
"qbsettings" => "Seitenleiste",
-"changepassword" => "Passwort ändern",
+"changepassword" => "Passwort ändern",
"skin" => "Skin",
"math" => "TeX",
"dateformat" => "Datumsformat",
@@ -515,11 +571,11 @@ Ihre interne ID-Nummer ist $2.",
"math_lexing_error" => "'Lexing'-Fehler",
"math_syntax_error" => "Syntaxfehler",
"saveprefs" => "Einstellungen speichern",
-"resetprefs" => "Einstellungen zurücksetzen",
+"resetprefs" => "Einstellungen zurücksetzen",
"oldpassword" => "Altes Passwort",
"newpassword" => "Neues Passwort",
"retypenew" => "Neues Passwort (nochmal)",
-"textboxsize" => "Textfeld-Grösse",
+"textboxsize" => "Textfeld-Grösse",
"rows" => "Zeilen",
"columns" => "Spalten",
"searchresultshead" => "Suchergebnisse",
@@ -527,36 +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" => "Einfügen aus dem Browser",
+"guesstimezone" => "Einfügen aus dem Browser",
"emailflag" => "Keine E-Mail von anderen Benutzern erhalten",
-"defaultns" => "In diesen Namensräumen soll standardmäßig 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.<br>
Falls Sie neu bei {$wgSitename} sind, lesen Sie bitte die [[{$wgMetaNamespace}:Willkommen|Willkommensseite]] und [[{$wgMetaNamespace}:Erste Schritte|Erste Schritte]].<br>
-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 <b>$1</b> Änderungen der letzten <b>$2</b> Tage. (<b>N</b> - Neuer Artikel; <b>M</b> - kleine Änderung)",
-"rcnotefrom" => "Dies sind die Änderungen seit <b>$2</b> (bis zu <b>$1</b> 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 <b>$1</b> Änderungen der letzten <b>$2</b> Tage. (<b>N</b> - Neuer Artikel; <b>M</b> - kleine Änderung)",
+"rcnotefrom" => "Dies sind die Änderungen seit <b>$2</b> (bis zu <b>$1</b> 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",
@@ -567,11 +624,11 @@ Wenn Sie möchten, dass {$wgSitename} zu einem Erfolg wird, dann fügen Sie bitte
"uploadbtn" => "Dateien hochladen",
"uploadlink" => "Bilder hochladen",
"reupload" => "Erneut hochladen",
-"reuploaddesc" => "Zurück zur Hochladen-Seite.",
+"reuploaddesc" => "Zurück zur Hochladen-Seite.",
"uploadnologin" => "Nicht angemeldet",
-"uploadnologintext" => "Sie müssen <a href=\"" .
+"uploadnologintext" => "Sie müssen <a href=\"" .
wfLocalUrl( "Spezial:Userlogin" ) . "\">angemeldet sein</a>
-um Dateien hochladen zu können.",
+um Dateien hochladen zu können.",
"uploadfile" => "Datei hochladen",
"uploaderror" => "Fehler beim Hochladen",
"uploadtext" => "
@@ -581,15 +638,15 @@ gehen Sie zu der <a href=\"" . wfLocalUrl( "Spezial:Imagelist" ) .
<p>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.
-Bestätigen Sie dann die Copyright-Vereinbarung.
-Schließlich drücken 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.
-<p>Für Photos wird das JPEG-Format, für Zeichnungen und Symbole das PNG-Format bevorzugt.
+<p>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
<b>[[bild:datei.jpg]]</b> oder <b>[[bild:datei.jpg|Beschreibung]]</b>.
-<p>Bitte beachten Sie, dass, genau wie bei den Artikeln, andere Benutzer Ihre Dateien löschen oder verändern können.",
+<p>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.
@@ -597,25 +654,26 @@ Alle Zeiten sind UTC.
<ul>
</ul>
",
-"uploadlogtext" => "Hochgeladene und gelöschte 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 bestätige ich, dass ich das Copyright dieser Datei habe, und diese hiermit unter $1 veröffentliche, 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 müssen bestätigen, 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 müssen mindestens drei Buchstaben haben.",
-"badfilename" => "Der Bildname wurde in \"$1\" geändert.",
+"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.",
+'emptyfile' => "Die hochgeladene Datei ist leer. Der Grund kann ein Tippfehler im Dateinamen sein. Bitte kontrollieren Sie, ob Sie die Datei wirklich hochladen wollen.",
"successfulupload" => "Erfolgreich hochgeladen",
"fileuploaded" => "Die Datei \"$1\" wurde erfolgreich hochgeladen. Bitte
-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
+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",
@@ -632,15 +690,16 @@ gemacht wurde und besondere Angaben zum Copyright, falls notwendig.",
"all" => "alle",
"byname" => "nach Name",
"bydate" => "nach Datum",
-"bysize" => "nach Grösse",
-"imgdelete" => "Löschen",
+"bysize" => "nach Grösse",
+"imgdelete" => "Löschen",
"imgdesc" => "Beschreibung",
"imglegend" => "Legende: (Beschreibung) = Zeige/Bearbeite Bildbeschreibung.",
"imghistory" => "Bild-Versionen",
-"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.",
+"revertimg" => "Zurücksetzen",
+"deleteimg" => "Löschen",
+"deleteimgcompletely" => "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.",
@@ -651,8 +710,8 @@ diese alte Version, (Zurücksetzen) = verwende wieder diese alte Version.",
"sitestats" => "Seitenstatistik",
"userstats" => "Benutzerstatistik",
"sitestatstext" => "Es gibt insgesamt <b>$1</b> Seiten in der Datenbank.
-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 <b>$2</b> Seiten, die als Artikel gelten können.<p>
+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 <b>$2</b> Seiten, die als Artikel gelten können.<p>
Es wurden insgesamt <b>$3</b>&times; Seiten aufgerufen, und <b>$4</b>&times; Seiten bearbeitet.
Daraus ergeben sich <b>$5</b> Bearbeitungen pro Seite, und <b>$6</b> Betrachtungen pro Bearbeitung.",
"userstatstext" => "Es gibt <b>$1</b> registrierte Benutzer.
@@ -661,23 +720,23 @@ Davon haben <b>$2</b> Administrator-Rechte (siehe $3).",
# Maintenance Page
#
"maintenance" => "Wartungsseite",
-"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 <i>Seite zur Begriffsklärung</i>. Sie sollten statt dessen auf die eigentlich gemeinte Seite verweisen.<br>Eine Seite wird als Begriffsklärungsseite behandelt, wenn $1 auf sie verweist.<br>Verweise aus Namensräumen werden hier <i>nicht</i> 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 <i>Seite zur Begriffsklärung</i>. Sie sollten statt dessen auf die eigentlich gemeinte Seite verweisen.<br>Eine Seite wird als Begriffsklärungsseite behandelt, wenn $1 auf sie verweist.<br>Verweise aus Namensräumen werden hier <i>nicht</i> aufgelistet.",
"doubleredirects" => "Doppelte Redirects",
-"doubleredirectstext" => "<b>Achtung:</b> 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.",
+"doubleredirectstext" => "<b>Achtung:</b> 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.<p><strong>Zitate, Buchtitel u.ä. bitte im Originalzustand belassen, also ggf. in alter Rechtschreibung und mit Rechtschreibfehlern!</strong>",
+"mispeelingstext" => "Die folgenden Seiten enthalten falsch geschriebene Worte, wie sie auf $1 definiert sind. In Klammern angegebene Worte geben die korrekte Schreibweise wieder.<p><strong>Zitate, Buchtitel u.ä. bitte im Originalzustand belassen, also ggf. in alter Rechtschreibung und mit Rechtschreibfehlern!</strong>",
"mispeelingspage" => "Liste von Tippfehlern",
"missinglanguagelinks" => "Fehlende Sprachverweise",
"missinglanguagelinksbutton" => "Zeige fehlende Sprachverweise nach",
-"missinglanguagelinkstext" => "Diese Artikel haben <i>keinen</i> Verweis zu ihrem Gegenstück in $1. Redirects und Unterseiten werden <i>nicht</i> angezeigt.",
+"missinglanguagelinkstext" => "Diese Artikel haben <i>keinen</i> Verweis zu ihrem Gegenstück in $1. Redirects und Unterseiten werden <i>nicht</i> angezeigt.",
# Miscellaneous special pages
@@ -687,40 +746,42 @@ Davon haben <b>$2</b> Administrator-Rechte (siehe $3).",
"unusedimages" => "Verwaiste Bilder",
"popularpages" => "Beliebte Seiten",
"nviews" => "$1 Abfragen",
-"wantedpages" => "Gewünschte Seiten",
+"wantedpages" => "Gewünschte Seiten",
"nlinks" => "$1 Verweise",
"allpages" => "Alle Artikel",
-"randompage" => "Zufälliger Artikel",
+"randompage" => "Zufälliger Artikel",
"shortpages" => "Kurze Artikel",
"longpages" => "Lange Artikel",
"listusers" => "Benutzerverzeichnis",
"specialpages" => "Spezialseiten",
"spheading" => "Spezialseiten",
-"sysopspheading" => "Spezialseiten für Sysops",
-"developerspheading" => "Spezialseiten für Entwickler",
-"protectpage" => "Artikel schützen",
+"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" => "<p>Bitte beachten Sie, dass andere Wikis möglicherweise einige dieser Bilder benutzen.",
+"unusedimagestext" => "<p>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 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.",
+"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 müssen <a href=\"" .
+"mailnologintext" => "Sie müssen <a href=\"" .
wfLocalUrl( "Spezial:Userlogin" ) . "\">angemeldet sein</a>
-und eine gültige 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 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.",
+"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 gültige E-Mail-Adresse angegeben, oder möchte 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",
@@ -733,18 +794,18 @@ und eine gültige E-Mail-Adresse haben, um anderen Benutzern E-Mail zu schicken."
# Beobachtungsliste
#
"watchlist" => "Beobachtungsliste",
-"watchlistsub" => "(für Benutzer \"$1\")",
-"nowatchlist" => "Sie haben keine Einträge auf Ihrer Beobachtungsliste.",
+"watchlistsub" => "(für Benutzer \"$1\")",
+"nowatchlist" => "Sie haben keine Einträge auf Ihrer Beobachtungsliste.",
"watchnologin" => "Sie sind nicht angemeldet",
-"watchnologintext" => "Sie müssen <a href=\"" .
+"watchnologintext" => "Sie müssen <a href=\"" .
wfLocalUrl( "Spezial:Userlogin" ) . "\">angemeldet</a>
sein, um Ihre Beobachtungsliste zu bearbeiten.",
-"addedwatch" => "Zur Beobachtungsliste hinzugefügt",
+"addedwatch" => "Zur Beobachtungsliste hinzugefügt",
"addedwatchtext" => "Der Artikel \"$1\" wurde zu Ihrer <a href=\"" .
-wfLocalUrl( "Spezial:Watchlist" ) . "\">Beobachtungsliste</a> hinzugefügt.
-Spätere Änderungen an diesem Artikel und der zugehörigen Diskussions-Seite
+wfLocalUrl( "Spezial:Watchlist" ) . "\">Beobachtungsliste</a> hinzugefügt.
+Spätere Änderungen an diesem Artikel und der zugehörigen Diskussions-Seite
werden dort gelistet und der Artikel wird in der <a href=\"" . wfLocalUrl(
-"Spezial:Recentchanges" ) . "\">Liste der letzten Änderungen</a>
+"Spezial:Recentchanges" ) . "\">Liste der letzten Änderungen</a>
<b>fett</b> angezeigt. <p>Wenn Sie den Artikel wieder von ihrer
Beobachtungsliste entfernen wollen, klicken Sie auf \"Nicht mehr beobachten\"
am Ende des Artikels.",
@@ -753,87 +814,89 @@ am Ende des Artikels.",
"watchthispage" => "Seite beobachten",
"unwatchthispage" => "Nicht mehr beobachten",
"notanarticle" => "Kein Artikel",
-"watchnochange" => "Keine Ihrer beobachteten Artikel wurde während 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... <a href='$4'>komplette Liste zeigen und bearbeiten</a>.)",
-"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 <b>$2</b> 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 <b>$2</b> Stunden.",
"wlshowlast" => "Zeige die letzen $1 Stunden $2 Tage $3",
+"wlsaved" => "Dies ist eine gespeicherte Version Ihrer Beobachtungsliste.",
# Delete/protect/revert
#
-"deletepage" => "Seite löschen",
-"confirm" => "Bestätigen",
+"deletepage" => "Seite löschen",
+"confirm" => "Bestätigen",
"excontent" => "Alter Inhalt:",
"exbeforeblank" => "Inhalt vor dem Leeren der Seite:",
"exblank" => "Seite war leer",
-"confirmdelete" => "Löschung bestätigen",
-"deletesub" => "(Lösche \"$1\")",
-"historywarning" => "WARNUNG: Die Seite die Sie zu löschen 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 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.",
+"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 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).
+"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).
<ul>
</ul>
",
-"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 Aenderungen",
+"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" => "Zurücknahme gescheitert",
-"cantrollback" => "Die Änderung kann nicht zurückgenommen werden; der
+"rollbackfailed" => "Zurücknahme gescheitert",
+"cantrollback" => "Die Änderung kann nicht zurückgenommen werden; der
letzte Autor ist der einzige.",
-"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.
+"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: \"<i>$1</i>\".",
-"revertpage" => "Wiederhergestellt zur letzten Änderung von $1",
+"editcomment" => "Der Änderungskommentar war: \"<i>$1</i>\".",
+"revertpage" => "Wiederhergestellt zur letzten Änderung von $1",
# Undelete
-"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",
+"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 Löschung 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" => "Gelöschte Version vom $1",
+"undeleterevision" => "Gelöschte Version vom $1",
"undeletebtn" => "Wiederherstellen!",
"undeletedarticle" => "\"$1\" wiederhergestellt",
"undeletedtext" => "Der Artikel [[$1]] wurde erfolgreich wiederhergestellt.",
# Contributions
#
-"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 <b>$1</b> Beiträge des Benutzers in den letzten <b>$2</b> Tagen.",
-"uclinks" => "Zeige die letzten $1 Beiträge; 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 <b>$1</b> Beiträge des Benutzers in den letzten <b>$2</b> Tagen.",
+"uclinks" => "Zeige die letzten $1 Beiträge; zeige die letzten $2 Tage.",
"uctop" => " (top)" ,
# What links here
@@ -850,13 +913,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 für 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 müssen einen Grund für die Blockade angeben.",
+"noblockreason" => "Sie müssen einen Grund für die Blockade angeben.",
"blockipsuccesssub" => "Blockade erfolgreich",
"blockipsuccesstext" => "Die IP-Adresse \"$1\" wurde blockiert.
<br>Auf [[Spezial:Ipblocklist|IP block list]] ist eine Liste der Blockaden.",
@@ -868,20 +931,20 @@ Bitte tragen Sie den Grund für die Blockade ein.",
"blocklistline" => "$1, $2 blockierte $3",
"blocklink" => "blockieren",
"unblocklink" => "freigeben",
-"contribslink" => "Beiträge",
+"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 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.",
+"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 Bestätigungsfeld 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.
@@ -891,30 +954,30 @@ Bitte tragen Sie den Grund für die Blockade ein.",
# SQL query
#
"asksql" => "SQL-Abfrage",
-"asksqltext" => "Benutzen Sie das Formular für 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 abschließende ';' wird
-automatisch ergänzt.",
+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\" können 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 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:'''
+"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 wählen die untenstehende Option ab
+*Sie wählen die untenstehende Option ab
-In diesen Fällen müssen Sie die Seite, falls gewünscht, 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 müssen ein registrierter Benutzer und
+"movenologintext" => "Sie müssen ein registrierter Benutzer und
<a href=\"" . wfLocalUrl( "Special:Userlogin" ) . "\">angemeldet</a> sein,
um eine Seite zu verschieben.",
"newtitle" => "Zu neuem Titel",
@@ -922,59 +985,67 @@ um eine Seite zu verschieben.",
"pagemovedsub" => "Verschiebung erfolgreich",
"pagemovedtext" => "Artikel \"[[$1]]\" wurde nach \"[[$2]]\" verschoben.",
"articleexists" => "Unter diesem Namen existiert bereits ein Artikel.
-Bitte wählen 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 möglich.",
+"movetalk" => "Die \"Diskussions\"-Seite mitverschieben, wenn möglich.",
"talkpagemoved" => "Die \"Diskussions\"-Seite wurde ebenfalls verschoben.",
"talkpagenotmoved" => "Die \"Diskussions\"-Seite wurde <strong>nicht</strong> verschoben.",
"export" => "Seiten exportieren",
-"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.",
+"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" => "<b>Fehlendes Bild</b><br><i>$1</i>\n",
+
+#Tooltips:
+'tooltip-atom' => 'Atom-Feed von dieser Seite',
+'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 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-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 können 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 Beiträge [alt-y]',
-'tooltip-login' => 'Sie können 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 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-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 beiträge 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 ausgewählten Versionen dieser Seite vergleichen. [alt-v]',
+
+#Tastatur-Shortcuts
'accesskey-article' => 'a',
+'accesskey-addsection' => '+',
'accesskey-talk' => 't',
'accesskey-edit' => 'e',
'accesskey-viewsource' => 'e',
@@ -1012,55 +1083,69 @@ Diskussions-Seite nicht, da schon eine mit dem neuen Titel existiert. Bitte glei
'accesskey-preview' => 'p',
'accesskey-contributions' => '',
'accesskey-emailuser' => '',
+'accesskey-compareselectedversions' => 'v',
+
"makesysoptitle" => "Mache einen Benutzer zum Administrator",
-"makesysoptext" => "Diese Maske wird von Bürokraten 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" => "<b>Benutzer \"$1\" ist nun ein Administrator.</b>",
"makesysopfail" => "<b>Benutzer \"$1\" konnte nicht zu einem Administrator gemacht werden. (Haben Sie den Namen richtig geschrieben?)</b>",
"makesysop" => "Mache einen Benutzer zum Administrator",
+"bureaucratlogentry" => "Rechte für Benutzer \"$1\" auf \"$2\" gesetzt",
+"rights" => "Rechte:",
+"set_user_rights" => "Benutzerrechte setzen",
+"user_rights_set" => "<b>Benutzerrechte für \"$1\" aktualisiert</b>",
+"set_rights_fail" => "<b>Benutzerrechte für \"$1\" konnten nicht gesetzt werden. (Haben Sie den Namen korrekt eingegeben?)</b>",
"1movedto2" => "$1 wurde nach $2 verschoben",
"allmessages" => "Alle MediaWiki-Meldungen",
-"allmessagestext" => "Dies ist eine Liste aller möglichen Meldungen im MediaWiki-Namensraum.",
-"thumbnail-more" => "vergrößern",
+"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 sekundäre Namensräume; $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:Geschützte Seiten]] für mehr Informationen.",
+"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 geschützt werden?",
"ipbexpiry" => "Ablaufzeit",
"blocklogpage" => "Benutzerblockaden-Logbuch",
-"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.",
+"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 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",
+"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 bestätigen",
-"unprotectcomment" => "Grund für 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 mögliche 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 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_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-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. (Möglicherweise 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",
@@ -1071,15 +1156,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 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.",
+"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();
@@ -1198,11 +1283,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..8704b7b651a3 100644
--- a/languages/LanguageEl.php
+++ b/languages/LanguageEl.php
@@ -2,10 +2,45 @@
require_once( "LanguageUtf8.php" );
+/* private */ $wgWeekdayNamesEl = array(
+ "ΚυÏιακή", "ΔευτέÏα", "ΤÏίτη", "ΤετάÏτη", "Πέμπτη",
+ "ΠαÏασκευή", "Σαββάτο"
+);
+
+/* private */ $wgMonthNamesEl = array(
+ "ΙανουάÏιος", "ΦεβÏουάÏιος", "ΜάÏτιος", "ΑπÏίλιος", "Μάϊος", "ΙοÏνιος",
+ "ΙοÏλιος", "ΑÏγουστος", "ΣεπτέμβÏιος", "ΟκτώβÏιος", "ÎοέμβÏιος",
+ "ΔεκέμβÏιος"
+);
+
+/* private */ $wgMonthAbbreviationsEl = array(
+ "Ιαν". "ΦεβÏ", "ΜάÏÏ„", "ΑπÏ", "Μάïος", "ΙοÏν", "ΙοÏν",
+ "ΙοÏλ", "ΑÏγ", "Σεπτ", "Οκτώβ", "Îοέμβ", "Δεκέμ"
+);
+
class LanguageEl extends LanguageUtf8 {
function fallback8bitEncoding() {
return "windows-1253";
}
+
+ function getMonthName( $key )
+ {
+ global $wgMonthNamesEl;
+ return $wgMonthNamesEl[$key-1];
+ }
+
+ function getMonthAbbreviation( $key )
+ {
+ global $wgMonthAbbreviationsEl;
+ return $wgMonthAbbreviationsEl[$key-1];
+ }
+
+ function getWeekdayName( $key )
+ {
+ global $wgWeekdayNamesEl;
+ return $wgWeekdayNamesEl[$key-1];
+ }
+
}
-?> \ No newline at end of file
+?>
diff --git a/languages/LanguageEo.php b/languages/LanguageEo.php
index a2778b72793c..2f0c6fc70a96 100644
--- a/languages/LanguageEo.php
+++ b/languages/LanguageEo.php
@@ -30,7 +30,7 @@ $wgEditEncoding = "x";
NS_CATEGORY => "Kategorio",
NS_CATEGORY_TALK => "Kategoria_diskuto",
-);
+) + $wgNamespaceNamesEn;
# Heredu apriorajn preferojn: wgDefaultUserOptionsEn
@@ -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",
@@ -446,7 +448,7 @@ Bonvolu kontroli la retadreson (URL) kiun vi uzis por atingi la paÄon.\b",
"searchresults" => "Serĉrezultoj",
"searchhelppage" => "{{ns:4}}:Serĉado",
"searchingwikipedia" => "Priserĉante la {{SITENAME}}n",
-"searchresulttext" => "Por pliaj informoj kiel priserĉi la {{SITENAME}}n, vidu .",
+"searchresulttext" => "Por pliaj informoj kiel priserĉi la {{SITENAME}}n, vidu $1.",
"searchquery" => "Serĉmendo \"$1\"",
"badquery" => "Misformita serĉmendo",
"badquerytext" => "Via serĉmendo ne estis plenumebla.
@@ -655,6 +657,7 @@ kiam Äi estis kreita, kaj kiu kreis Äin; kaj ion ajn, kion vi scias pri Äi.",
"imghistory" => "Historio de alÅutoj",
"revertimg" => "res",
"deleteimg" => "for",
+"deleteimgcompletely" => "for",
"imghistlegend" => "(nun) = ĉi tiu estas la nuna versio de la dosiero, (for) = forigu
ĉi tiun malnovan version, (res) = restarigu ĉi tiun malnovan version.
<br /><i>Por vidi la dosieron laÅ­date, alklaku la daton</i>.",
diff --git a/languages/LanguageEs.php b/languages/LanguageEs.php
index c8e0fd398681..b34bfb6088d9 100644
--- a/languages/LanguageEs.php
+++ b/languages/LanguageEs.php
@@ -1,26 +1,38 @@
<?php
+#
+# Spanish localisation for MediaWiki
+#
+# This file is encoded in UTF-8, no byte order mark.
+# For compatibility with Latin-1 installations, please
+# don't add literal characters above U+00ff.
+#
+
+require_once( "LanguageUtf8.php" );
# The names of the namespaces can be set here, but the numbers
# are magical, so don't change or move them! The Namespace class
# encapsulates some of the magic-ness.
#
/* private */ $wgNamespaceNamesEs = array(
- -2 => "Media",
- -1 => "Especial",
- 0 => "",
- 1 => "Discusión",
- 2 => "Usuario",
- 3 => "Usuario_Discusión",
- 4 => $wgMetaNamespace,
- 5 => "{$wgMetaNamespace}_Discusión",
- 6 => "Imagen",
- 7 => "Imagen_Discusión",
- 8 => "MediaWiki",
- 9 => "MediaWiki_Discusión",
- 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 => "Plantilla",
+ NS_TEMPLATE_TALK => "Plantilla_Discusión",
+ NS_HELP => "Ayuda",
+ NS_HELP_TALK => "Ayuda_Discusión",
+ NS_CATEGORY => "Categoría",
+ NS_CATEGORY_TALK => "Categoría_Discusión",
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsEs = array(
@@ -31,14 +43,15 @@
);
/* private */ $wgSkinNamesEs = array(
- 'standard' => "Estándar",
+ '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 artículos vacíos <a href=\"\" class=\"new\">como este</a> (alternativa: como éste<a href=\"\" class=\"internal\">?</a>).",
- "justify" => "Ajustar párrafos",
+ "highlightbroken" => "Destacar enlaces a artículos vacíos <a href=\"\" class=\"new\">como este</a> (alternativa: como éste<a href=\"\" class=\"internal\">?</a>).",
+ "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 contraseña entre sesiones",
- "editwidth" => "La caja de edición tiene el ancho máximo",
- "editondblclick" => "Editar páginas 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 edición de secciones presionando el boton de la derecha<br> en los titulos de secciones (JavaScript)",
+"editsectiononrightclick"=>"Habilitar la edición de secciones presionando el boton de la derecha<br> en los titulos de secciones (JavaScript)",
"showtoc"=>"Mostrar la tabla de contenidos<br>(para paginas con mas de 3 encabezados)",
- "watchdefault" => "Vigilar artículos nuevos y modificados",
+ "watchdefault" => "Vigilar artículos nuevos y modificados",
"minordefault" => "Marcar todas las ediciones como menores por defecto",
- "previewontop" => "Mostrar la previsualización antes de la caja de edición en lugar de después",
+ "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", "Miércoles", "Jueves", "Viernes", "Sábado"
+"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 imágenes",
+ "Imagelist" => "Lista de imágenes",
"Listusers" => "Usuarios registrados",
- "Statistics" => "Estadísticas del sitio",
- "Randompage" => "Artículo aleatorio",
+ "Statistics" => "Estadísticas del sitio",
+ "Randompage" => "Artículo aleatorio",
- "Lonelypages" => "Artículos huérfanos",
- "Unusedimages" => "Imágenes huérfanas",
- "Popularpages" => "Artículos populares",
- "Wantedpages" => "Artículos más solicitados",
- "Shortpages" => "Artículos 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" => "Artículos largos",
- "Newpages" => "Artículos nuevos",
+ "Longpages" => "Artículos largos",
+ "Newpages" => "Artículos nuevos",
"Ancientpages" => "Articulos mas antiguos",
# "Intl" => "Enlaces Interlenguaje",
- "Allpages" => "Todas las páginas (alfabético)",
+ "Allpages" => "Todas las páginas (alfabético)",
"Ipblocklist" => "Direcciones IP bloqueadas",
- "Maintenance" => "Página de mantenimiento",
+ "Maintenance" => "Página de mantenimiento",
"Specialpages" => "",
"Contributions" => "",
@@ -144,9 +157,9 @@
);
/* private */ $wgSysopSpecialPagesEs = array(
- "Blockip" => "Bloquear una dirección IP",
- "Asksql" => "Búsqueda en la base de datos",
- "Undelete" => "Ver y restaurar páginas 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 edición",
-"edithelppage" => "$wgMetaNamespace:Cómo_se_edita_una_página",
+"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 página",
-"qbpageinfo" => "Información de página",
+"qbpageoptions" => "Opciones de página",
+"qbpageinfo" => "Información de página",
"qbmyoptions" => "Mis opciones",
-"mypage" => "Mi página",
-"mytalk" => "Mi discusión",
+"mypage" => "Mi página",
+"mytalk" => "Mi discusión",
"currentevents" => "Actualidad",
"errorpagetitle" => "Error",
"returnto" => "Regresa a $1.",
"fromwikipedia" => "De $wgSitename, la enciclopedia libre.",
-"whatlinkshere" => "Páginas que enlazan aquí",
+"whatlinkshere" => "Páginas que enlazan aquí",
"help" => "Ayuda",
"search" => "Buscar",
"go" => "Ir",
"history" => "Historia",
-"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",
+"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 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",
+"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 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 <a class=internal href='/wiki/GNU_FDL'>Licencia de Documentación 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 <a class=internal href='/wiki/GNU_FDL'>Licencia de Documentación Libre GNU (GNU FDL)",
"printsubtitle" => "(De http://es.wikipedia.org)",
-"protectedpage" => "Página protegida",
+"protectedpage" => "Página protegida",
"administrators" => "$wgMetaNamespace:Administradores",
"sysoptitle" => "Acceso de Administrador requerido",
-"sysoptext" => "La acción que has requerido sólo 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 acción que has requerido sólo 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 acción",
-"nosuchactiontext" => "La acción 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 página especial",
-"nospecialpagetext" => "Has requerido una página 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 búsqueda 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:
<blockquote><tt>$1</tt></blockquote>El error de retorno de
MySQL fue\"<tt>$3: $4</tt>\".",
"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 función \"$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 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
+"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, después de lo cual volverá a la normalidad.
-El administrador que la bloqueó ofreció esta explicación:
+para mantenimiento de rutina, después de lo cual volverá a la normalidad.
+El administrador que la bloqueó ofreció esta explicación:
<p>$1",
-"missingarticle" => "La base de datos no encontró el texto de una
-página que debería haber encontrado, llamada \"$1\".
+"missingarticle" => "La base de datos no encontró el texto de una
+página que debería haber encontrado, llamada \"$1\".
-<p>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.
+<p>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.
<p>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 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.",
+"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 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!",
+"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 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",
+# 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" => "<h2>Bienvenido(a), $1!</h2><p>Tu cuenta ha sido creada.
No olvides perzonalizar tus preferencia de $wgSitename.",
"loginpagetitle" => "Registrarse/Entrar",
"yourname" => "Tu nombre de usuario",
-"yourpassword" => "Tu contraseña",
-"yourpasswordagain" => "Repite tu contraseña",
-"newusersonly" => " (sólo usuarios nuevos)",
-"remembermypassword" => "Quiero que recuerden mi contraseña entre sesiones.",
-"loginproblem" => "<b>Hubo un problema con tu entrada.</b><br>¡Inténtalo 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" => "<b>Hubo un problema con tu entrada.</b><br>¡Inténtalo otra vez!",
"alreadyloggedin" => "<font color=red><b>Usuario $1, ya entraste!</b></font><br>\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 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)",
+"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 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\".",
+"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 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.",
+"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/título",
-"minoredit" => "Esta es una edición menor.",
-"watchthis" => "Vigila este artículo.",
-"savearticle" => "Grabar la página",
+"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 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:<br>$2<p> 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:<br>$2<p> 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 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)",
+"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" => "<strong>Nota:</strong> ",
-"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.",
+"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" => " (sección)",
+"sectionedit" => " (sección)",
"commentedit" => " (comentario)",
-"editconflict" => "Conflicto de edición: $1",
-"explainconflict" => "Alguien más ha cambiado esta página 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 página 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.
-<b>Sólo</b> el texto en el área de texto superior será grabado cuando presiones
- \"Grabar página\".\n<p>",
+<b>Sólo</b> el texto en el área de texto superior será grabado cuando presiones
+ \"Grabar página\".\n<p>",
"yourtext" => "Tu texto",
-"storedversion" => "Versión almacenada",
-"editingold" => "<strong>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.</strong>\n",
+"storedversion" => "Versión almacenada",
+"editingold" => "<strong>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.</strong>\n",
"yourdiff" => "Diferencias",
-"copyrightwarning" => "Ayuda de edición, caracteres especiales: á é í ó ú Á É Í Ó Ú ü Ü ñ Ñ ¡ ¿ <br><br>Nota por favor que todas las contribuciones a $wgSitename
-se consideran hechas públicas bajo la Licencia de Documentación Libre GNU
+"copyrightwarning" => "Ayuda de edición, caracteres especiales: á é í ó ú à É à Ó Ú ü Ü ñ Ñ ¡ ¿ <br><br>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í. <br>
-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
+y los distribuya libremente, entonces no los pongas aquí. <br>
+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.
- <strong>¡NO USES ESCRITOS CON COPYRIGHT SIN PERMISO!</strong><br>",
-"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.
+ <strong>¡NO USES ESCRITOS CON COPYRIGHT SIN PERMISO!</strong><br>",
+"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 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
-<a href='/wiki/$wgMetaNamespace:Guías_para_páginas_protegidas'>guías para páginas protegidas</a>.",
+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
+<a href='/wiki/$wgMetaNamespace:Guías_para_páginas_protegidas'>guías para páginas protegidas</a>.",
# History pages
#
"revhistory" => "Historia de revisiones",
-"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",
+"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" => "Simbología: (act) = diferencia con la versión actual,
-(prev) = diferencia con la versión previa, M = edición 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 revisión para diff",
-"lineno" => "Línea $1:",
-"editcurrent" => "Edita la versión actual de esta página",
+"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 búsqueda",
-"searchhelppage" => "$wgMetaNamespace:Búsqueda",
+"searchresults" => "Resultados de búsqueda",
+"searchhelppage" => "$wgMetaNamespace:Búsqueda",
"searchingwikipedia" => "Buscando en $wgSitename",
-"searchresulttext" => "Para más información acerca de búsquedas 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 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",
+"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 <b>$1</b> resultados empezando con #<b>$2</b>.",
"showingresultsnum" => "Mostrando abajo <b>$3</b> resultados comenzando con #<b>$2</b>.",
-"nonefound" => "<strong>Nota</strong>: 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",
+"nonefound" => "<strong>Nota</strong>: 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 :<br>
$1<br>
$2 Listar redirecciones Buscar $3 $9",
-"searchdisabled" => "<p>Búsqueda en todo el texto ha sido desactivada temporalmente
+"searchdisabled" => "<p>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 físico próximas. Mientras tanto, puedes hacer una busqueda vía google:</p>
+soporte físico próximas. Mientras tanto, puedes hacer una busqueda vía google:</p>
<!--Busqueda de Sitio Google -->
<FORM method=GET action=\"http://www.google.es/search\">
@@ -493,65 +506,65 @@ value=\"{$wgServer}\" checked> {$wgServer} <br>
wfLocalUrl( "Especial:Userlogin" ) . "\">entrar</a>
para seleccionar preferencias de usuario.",
"prefslogintext" => "Has entrado con el nombre \"$1\".
-Tu número de identificación 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 contraseña",
+"changepassword" => "Cambia contraseña",
"skin" => "Piel",
-"math" => "Cómo se muestran las fórmulas",
+"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" => "función desconocida",
-"math_lexing_error" => "error de léxico",
+"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" => "Contraseña antigua",
-"newpassword" => "Contraseña nueva",
-"retypenew" => "Reescriba la nueva contraseña",
-"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 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",
+"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 número 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 electrónico 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 más recientes a $wgSitename en esta página.
+"recentchangestext" => "Sigue los cambios más recientes a $wgSitename en esta página.
[[$wgMetaNamespace:Bienvenidos|Bienvenidos]]!
-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
+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 podría dañar 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 también [http://meta.wikipedia.org/wiki/Special:Recentchanges discusión reciente en Meta (multilingüe)].",
+Ve también [http://meta.wikipedia.org/wiki/Special:Recentchanges discusión reciente en Meta (multilingüe)].",
"rcloaderr" => "cargando cambios recientes",
-"rcnote" => "Abajo están los últimos <b>$1</b> cambios en los últimos <b>$2</b> días.",
+"rcnote" => "Abajo están los últimos <b>$1</b> cambios en los últimos <b>$2</b> días.",
"rclistfrom" => "Mostrar cambios nuevos desde $1",
-"rcnotefrom" => "Abajo están los cambios desde <b>$2</b> (se muestran hasta <b>$1</b>).",
-"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.",
+"rcnotefrom" => "Abajo están los cambios desde <b>$2</b> (se muestran hasta <b>$1</b>).",
+"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,285 @@ Ve también [http://meta.wikipedia.org/wiki/Special:Recentchanges discusión recie
#
"upload" => "Subir",
"uploadbtn" => "Subir un archivo",
-"uploadlink" => "Subir imágenes",
+"uploadlink" => "Subir imágenes",
"reupload" => "Subir otra vez",
"reuploaddesc" => "Regresar al formulario para subir.",
-"uploadnologin" => "No has iniciado sesión",
-"uploadnologintext" => "Tú debes <a href=\"" .
- wfLocalUrl( "Especial:Userlogin" ) . "\">iniciar sesión</a>
+"uploadnologin" => "No has iniciado sesión",
+"uploadnologintext" => "Tú debes <a href=\"" .
+ wfLocalUrl( "Especial:Userlogin" ) . "\">iniciar sesión</a>
para subir archivos.",
"uploadfile" => "Subir archivo",
"uploaderror" => "Error tratando de subir",
-"uploadtext" => "Para ver o buscar imágenes que se hayan subido
+"uploadtext" => "Para ver o buscar imágenes que se hayan subido
previamente, ve a la <a href=\"" . wfLocalUrlE( "Especial:Imagelist" ) .
-"\">lista de imágenes subidas</a>.
+"\">lista de imágenes subidas</a>.
Los archivos subidos y borrados son registrados en el <a href=\"" .
wfLocalUrlE( "$wgMetaNamespace:Registro de subidas" ) . "\">registro de subidas</a>.
-Consulta también la <a href=\"" . wfLocalUrlE( "$wgMetaNamespace:Política de uso de imágenes" ) .
-"\">política de uso de imágenes</a>.
-<p>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.
+Consulta también la <a href=\"" . wfLocalUrlE( "$wgMetaNamespace:Política de uso de imágenes" ) .
+"\">política de uso de imágenes</a>.
+<p>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 algún tiempo si tienes una conexión a internet lenta.
-<p>Los formatos preferidos son JPEG para imágenes fotográficas, PNG
+Esto puede tomar algún tiempo si tienes una conexión a internet lenta.
+<p>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 artículo, usa un enlace de la forma
+Para incluir la imagen en un artículo, usa un enlace de la forma
<b>[[imagen:archivo.jpg]]</b> o <b>[[imagen:archivo.png|alt text]]</b>
o <b>[[media:archivo.ogg]]</b> para sonidos.
-<p>Por favor recuerda que, al igual que con las páginas $wgSitename, otros pueden
+<p>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, impidiéndote subir más 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 más recientemente. Todas las horas son del servidor (UTC).
+subido más recientemente. Todas las horas son del servidor (UTC).
<ul>
</ul>
",
"filename" => "Nombre del archivo",
"filedesc" => "Sumario",
-"affirmation" => "Afirmo que el dueño del copyright de este archivo
-está de acuerdo en licenciarlo bajo los términos 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 ningún 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 imágenes 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 imágenes no excedan 100k de tamaño.",
+"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 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.",
+"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 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",
+"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" => "Búsqueda",
-"showlast" => "Mostrar las últimas $1 imágenes ordenadas $2.",
+"ilsubmit" => "Búsqueda",
+"showlast" => "Mostrar las últimas $1 imágenes ordenadas $2.",
"all" => "todas",
"byname" => "por nombre",
"bydate" => "por fecha",
-"bysize" => "por tamaño",
+"bysize" => "por tamaño",
"imgdelete" => "borr",
"imgdesc" => "desc",
-"imglegend" => "Simbología: (desc) = mostrar/editar la descripción 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" => "Simbología: (act) = esta es la imagen actual, (borr) = borrar
-esta versión antigua, (rev) = revertir a esta versión antigua.
+"deleteimgcompletely" => "borr",
+"imghistlegend" => "Simbología: (act) = esta es la imagen actual, (borr) = borrar
+esta versión antigua, (rev) = revertir a esta versión antigua.
<br><i>Click en la fecha para ver imagen subida en esa fecha</i>.",
"imagelinks" => "Enlaces a la imagen",
-"linkstoimage" => "Las siguientes páginas enlazan a esta imagen:",
-"nolinkstoimage" => "No hay páginas 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" => "Estadísticas",
-"sitestats" => "Estadísticas del sitio",
-"userstats" => "Estadísticas de usuario",
-"sitestatstext" => "Hay un total de <b>$1</b> 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 <b>$2</b> páginas que probablemente son artículos legítimos.<p>
-Ha habido un total de <b>$3</b> visitas a páginas, y <b>$4</b> ediciones de página
+"statistics" => "Estadísticas",
+"sitestats" => "Estadísticas del sitio",
+"userstats" => "Estadísticas de usuario",
+"sitestatstext" => "Hay un total de <b>$1</b> 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 <b>$2</b> páginas que probablemente son artículos legítimos.<p>
+Ha habido un total de <b>$3</b> visitas a páginas, y <b>$4</b> ediciones de página
desde que el software fue actualizado (Octubre 2002).
-Esto resulta en un promedio de <b>$5</b> ediciones por página,
-y <b>$6</b> visitas por edición.",
+Esto resulta en un promedio de <b>$5</b> ediciones por página,
+y <b>$6</b> visitas por edición.",
"userstatstext" => "Hay <b>$1</b> usuarios registrados.
de los cuales <b>$2</b> son administradores (ver $3).",
# Maintenance Page
#
-"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 <i>página de desambiguación</i>. Deberían enlazar al artículo apropiado.<br>Una página es considerada de desambiguación si está enlazada desde $1.<br>Enlaces desde otros espacios de nombre (Como $wgMetaNamespace: o usuario:) <b>no</b> 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 <i>página de desambiguación</i>. Deberían enlazar al artículo apropiado.<br>Una página es considerada de desambiguación si está enlazada desde $1.<br>Enlaces desde otros espacios de nombre (Como $wgMetaNamespace: o usuario:) <b>no</b> son listados aquí.",
"doubleredirects" => "Redirecciones Dobles",
-"doubleredirectstext" => "<b>Atención:</b> Esta lista puede contener falsos positivos. Eso significa usualmente que hay texto adicional con enlaces bajo el primer #REDIRECT.<br>\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.",
+"doubleredirectstext" => "<b>Atención:</b> Esta lista puede contener falsos positivos. Eso significa usualmente que hay texto adicional con enlaces bajo el primer #REDIRECT.<br>\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 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",
+"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 artículos <b>no</b> enlazan a sus correspondientes en $1. <b>No</b> se muestran redirecciones ni subpáginas.",
+"missinglanguagelinkstext" => "Estos artículos <b>no</b> enlazan a sus correspondientes en $1. <b>No</b> se muestran redirecciones ni subpáginas.",
# Miscellaneous special pages
#
-"orphans" => "Páginas huérfanas",
-"lonelypages" => "Páginas huérfanas",
-"unusedimages" => "Imágenes sin uso",
-"popularpages" => "Páginas populares",
+"orphans" => "Páginas huérfanas",
+"lonelypages" => "Páginas huérfanas",
+"unusedimages" => "Imágenes sin uso",
+"popularpages" => "Páginas populares",
"nviews" => "$1 visitas",
-"wantedpages" => "Páginas requeridas",
+"wantedpages" => "Páginas requeridas",
"nlinks" => "$1 enlaces",
-"allpages" => "Todas las páginas",
+"allpages" => "Todas las páginas",
-"randompage" => "Página aleatoria",
-"shortpages" => "Páginas cortas",
-"longpages" => "Páginas largas",
+"randompage" => "Página aleatoria",
+"shortpages" => "Páginas cortas",
+"longpages" => "Páginas largas",
"listusers" => "Lista de usuarios",
-"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",
+"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 páginas enlazadas desde \"$1\")",
+"rclsub" => "(a páginas enlazadas desde \"$1\")",
"debug" => "Debug",
-"newpages" => "Páginas nuevas",
-"ancientpages" => "Artículos más antiguos",
+"newpages" => "Páginas nuevas",
+"ancientpages" => "Artículos más antiguos",
"intl" => "Enlaces interlenguaje",
-"movethispage" => "Trasladar esta página",
+"movethispage" => "Trasladar esta página",
"unusedimagestext" => "<p>Por favor note que otros sitios web
tales como otras wikipedias pueden enlazar a una imagen
-con un URL directo, y de esa manera todavía 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 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.",
+"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 dirección",
+"mailnologin" => "No enviar dirección",
"mailnologintext" => "Debes <a href=\"" .
- wfLocalUrl( "Especial:Userlogin" ) . "\">inciar sesión</a>
-y tener una dirección electrónica válida en tus <a href=\"" .
+ wfLocalUrl( "Especial:Userlogin" ) . "\">inciar sesión</a>
+y tener una dirección electrónica válida en tus <a href=\"" .
wfLocalUrl( "Especial:Preferences" ) . "\">preferencias</a>
-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.",
+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 electrónico enviado",
-"emailsenttext" => "Tu correo electrónico 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 página en tu lista de seguimiento.",
-"watchnologin" => "No has iniciado sesión",
+"nowatchlist" => "No tienes ninguna página en tu lista de seguimiento.",
+"watchnologin" => "No has iniciado sesión",
"watchnologintext" => "Debes <a href=\"" .
- wfLocalUrl( "Especial:Userlogin" ) . "\">iniciar sesión</a>
+ wfLocalUrl( "Especial:Userlogin" ) . "\">iniciar sesión</a>
para modificar tu lista de seguimiento.",
-"addedwatch" => "Añadido a la lista de seguimiento",
-"addedwatchtext" => "La página \"$1\" ha sido añadida a tu <a href=\"" .
+"addedwatch" => "Añadido a la lista de seguimiento",
+"addedwatchtext" => "La página \"$1\" ha sido añadida a tu <a href=\"" .
wfLocalUrl( "Especial:Watchlist" ) . "\">lista se seguimiento</a>.
-Cambios futuros en esta página y su página de discusión asociada se indicarán ahí, y la página aparecerá <b>en negritas</b> en la <a href=\"" .
- wfLocalUrl( "Especial:Recentchanges" ) . "\">lista de cambios recientes</a> para hacerla más fácil de detectar.</p>
+Cambios futuros en esta página y su página de discusión asociada se indicarán ahí, y la página aparecerá <b>en negritas</b> en la <a href=\"" .
+ wfLocalUrl( "Especial:Recentchanges" ) . "\">lista de cambios recientes</a> para hacerla más fácil de detectar.</p>
-<p>Cuando quieras eliminar la página de tu lista de seguimiento, presiona \"Dejar de vigilar\" en el menú.",
+<p>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 página \"$1\" ha sido eliminada de tu lista de seguimiento.",
-"watchthispage" => "Vigilar esta página",
+"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 artículo",
+"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 páginas en tu lista de seguimiento, sin contar las de discusión;
-$2 páginas 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...
<a href='$4'>mostrar y editar la lista completa</a>.)",
"watchmethod-recent" => "chequeando ediciones recentes en la lista de seguimiento",
"watchmethod-list" => "buscando ediciones recentes en la lista de seguimiento",
-"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 <b>$2</b> 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 <b>$2</b> horas.",
# Delete/protect/revert
#
-"deletepage" => "Borrar esta página",
+"deletepage" => "Borrar esta página",
"confirm" => "Confirma",
"excontent" => "contenido era:",
"exbeforeblank" => "contenido antes de borrar era:",
-"exblank" => "página estaba vacía",
+"exblank" => "página estaba vacía",
"confirmdelete" => "Confirma el borrado",
"deletesub" => "(Borrando \"$1\")",
-"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
+"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 estás haciendo de acuerdo con [[$wgMetaNamespace:Políticas]].",
-"confirmcheck" => "Sí, realmente quiero borrar esto.",
-"actioncomplete" => "Acción 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 más 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 más recientes.
+"dellogpagetext" => "Abajo hay una lista de los borrados más recientes.
Todos los tiempos se muestran en hora del servidor (UTC).
<ul>
</ul>
",
"deletionlog" => "registro de borrados",
-"reverted" => "Recuperar una revisión anterior",
-"deletecomment" => "Razón para el borrado",
-"imagereverted" => "Revertido a una versión 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" => "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.
+"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 edición fue hecha por [[Colaborador:$3|$3]] ([[Colaborador Discusión:$3|DiscusiónTalk]]). ",
+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 edición fue: \"<i>$1</i>\".",
-"revertpage" => "Revertida a la última edición por $1",
+"editcomment" => "El resumen de la edición fue: \"<i>$1</i>\".",
+"revertpage" => "Revertida a la última edición por $1",
# Undelete
-"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",
+"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 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",
+"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 artículo [[$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 +867,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 están los últimos <b>$1</b> cambios de este usuario en los últimos <b>$2</b> días.",
-"uclinks" => "Ver los últimos $1 cambios; ver los últimos $2 días.",
-"uctop" => " (última modificación)" ,
+"ucnote" => "Abajo están los últimos <b>$1</b> cambios de este usuario en los últimos <b>$2</b> 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 página blanco",
-"notargettext" => "No has especificado en qué página
-llevar a cabo esta función.",
+"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 páginas enlazan aquí:",
-"nolinkshere" => "Ninguna página 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 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.",
+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.
<br>Ver [[Especial:Ipblocklist|lista de IP bloqueadas]] para revisar bloqueos.",
-"unblockip" => "Desbloquear dirección IP",
+"unblockip" => "Desbloquear dirección IP",
"unblockiptext" => "Usa el formulario que sigue para restaurar el
-acceso de escritura a una dirección IP previamente bloqueada.",
-"ipusubmit" => "Desbloquea esta dirección",
-"ipusuccess" => "Dirección 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 +917,17 @@ acceso de escritura a una dirección IP previamente bloqueada.",
"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 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.",
+"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.
-<br>Recuerda retirar el bloqueo después de completar las tareas de mantenimiento.",
+<br>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 +936,58 @@ acceso de escritura a una dirección IP previamente bloqueada.",
"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 añadir una carga considerable al servidor, así que
-por favor usa esta función 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" => "Envía la consulta",
-"selectonly" => "Consultas diferentes a \"SELECT\" están restringidas sólo
+"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 página",
-"movepagetext" => "Usando el formulario que sigue renombrará una página,
+"movepage" => "Renombrar página",
+"movepagetext" => "Usando el formulario que sigue renombrará una página,
moviendo toda su historia al nombre nuevo.
-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.
+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 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.
+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.
<b>ADVERTENCIA!</b>
-Este puede ser un cambio drástico e inesperado para una página 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 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\".
+"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, deberás trasladar manualmente el contenido de la página de discusión.",
-"movearticle" => "Renombrar página",
+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 <a href=\"" .
- wfLocalUrl( "Especial:Userlogin" ) . "\">haber iniciado sesión</a>
-para renombrar una página.",
-"newtitle" => "A título nuevo",
-"movepagebtn" => "Renombrar página",
+ wfLocalUrl( "Especial:Userlogin" ) . "\">haber iniciado sesión</a>
+para renombrar una página.",
+"newtitle" => "A título nuevo",
+"movepagebtn" => "Renombrar página",
"pagemovedsub" => "Renombramiento exitoso",
-"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.
+"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 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.",
+"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 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 <strong>no</strong> 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 <strong>no</strong> 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 +1007,6 @@ class LanguageEs extends Language {
}
return false;
}
- #function specialPage( $name ) {
- # return $this->getNsText( Namespace::getSpecial() ) . ":" . $name;
- #}
function getQuickbarSettings() {
global $wgQuickbarSettingsEs;
@@ -1030,28 +1030,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 +1055,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 +1063,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..f118d6c7b805 100644
--- a/languages/LanguageEt.php
+++ b/languages/LanguageEt.php
@@ -22,7 +22,7 @@
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsEt = array(
"Ei_ole", "Püsivalt_vasakul", "Püsivalt paremal", "Ujuvalt vasakul"
@@ -36,7 +36,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesEt = array(
@@ -567,6 +568,7 @@ created and by whom, and anything else you may know about it.",
"imghistory" => "Pildi ajalugu",
"revertimg" => "taas",
"deleteimg" => "del",
+"deleteimgcompletely" => "del",
"imghistlegend" => "Legend: (viim) = see on pildi viimane versioon, (del) = kustuta
see vana versioon, (taas) = taasta see vana versioon.
<br><i>Click on date to see image uploaded on that date</i>.",
diff --git a/languages/LanguageFa.php b/languages/LanguageFa.php
index 00cc74ebc9f3..60876b2c3666 100644
--- a/languages/LanguageFa.php
+++ b/languages/LanguageFa.php
@@ -35,7 +35,7 @@ require_once("LanguageUtf8.php");
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsFa = array(
"نباشد", "ثابت چپ", "ثابت راست", "شناور چپ"
@@ -49,7 +49,8 @@ require_once("LanguageUtf8.php");
'montparnasse' => "مون‌پارناس",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesFa = array(
@@ -720,6 +721,7 @@ you may be blocked from uploading if you abuse the system.",
"imghistory" => "تاریخچه‌ی تصویر",
"revertimg" => "برگرد",
"deleteimg" => "حذÙ",
+"deleteimgcompletely" => "حذÙ",
"imghistlegend" => "شرح: (Ùعلی) = این تصویر Ùعلی است، (حذÙ) = این
نسخه‌ی قدیمی حذ٠شود، (برگرد) = برگرداندن به این نسخه‌ی قدیمی.
<br><i>برای دیدن تصویر بار شده در تاریخ مشخص، روی تاریخ کلیک کنید</i>.",
diff --git a/languages/LanguageFi.php b/languages/LanguageFi.php
index b10be1660cf3..4c0d0dd4c19a 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(
@@ -547,6 +548,7 @@ mistä se on peräisin, milloin se on luotu, kuka sen loi ja mahdollisesti muita
"imghistory" => "Kuvan historia",
"revertimg" => "palauta",
"deleteimg" => "poista",
+"deleteimgcompletely" => "poista",
"imghistlegend" => "Merkinnät: (nyk.) = nykyinen kuva, (poista) = poista
tämä vanha versio, (palauta) = palauta kuva tähän vanhaan versioon.
<br><i>Klikkaa päiväystä nähdäksesi silloin tallennettu kuva</i>.",
diff --git a/languages/LanguageFr.php b/languages/LanguageFr.php
index 1aa2c84dc217..1f11a4e3f40e 100644
--- a/languages/LanguageFr.php
+++ b/languages/LanguageFr.php
@@ -7,7 +7,6 @@
// encapsulates some of the magic-ness.
require_once( "LanguageUtf8.php" );
-
/* private */ $wgNamespaceNamesFr = array(
NS_MEDIA => "Media",
NS_SPECIAL => "Special",
@@ -21,13 +20,13 @@ require_once( "LanguageUtf8.php" );
NS_IMAGE_TALK => "Discussion_Image",
NS_MEDIAWIKI => "MediaWiki",
NS_MEDIAWIKI_TALK => "Discussion_MediaWiki",
- NS_TEMPLATE => "Template",
- NS_TEMPLATE_TALK => "Discussion_Template",
+ NS_TEMPLATE => "Modèle",
+ NS_TEMPLATE_TALK => "Discussion_Modèle",
NS_HELP => "Aide",
NS_HELP_TALK => "Discussion_Aide",
- NS_CATEGORY => "Categorie",
- NS_CATEGORY_TALK => "Discussion_Categorie"
-);
+ NS_CATEGORY => "Catégorie",
+ NS_CATEGORY_TALK => "Discussion_Catégorie"
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsFr = array(
"Aucune", "Gauche", "Droite", "Flottante à gauche"
@@ -41,7 +40,8 @@ require_once( "LanguageUtf8.php" );
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesFr = array(
@@ -76,8 +76,8 @@ require_once( "LanguageUtf8.php" );
/* private */ $wgBookstoreListFr = array(
"Amazon.fr" => "http://www.amazon.fr/exec/obidos/ISBN=$1",
"alapage.fr" => "http://www.alapage.com/mx/?tp=F&type=101&l_isbn=$1&donnee_appel=ALASQ&devise=&",
- "fnac.com" => "http://www3.fnac.com/advanced/book.do?isbn=$isbn",
- "chapitre.com" => "http://www.chapitre.com/frame_rec.asp?isbn=$isbn",
+ "fnac.com" => "http://www3.fnac.com/advanced/book.do?isbn=$1",
+ "chapitre.com" => "http://www.chapitre.com/frame_rec.asp?isbn=$1",
);
/* private */ $wgWeekdayNamesFr = array(
@@ -640,7 +640,7 @@ L'heure indiquée est celle du serveur (UTC).
"filestatus" => "Statut du copyright",
"filesource" => "Source",
"affirmation" => "Je déclare que le détenteur du copyright de ce fichier accepte de le diffuser selon les termes de la $1.",
-"copyrightpage" => "$wgNamespace:Copyright",
+"copyrightpage" => "{{ns:4}}:Copyright",
"copyrightpagename" => "licence {{SITENAME}}",
"uploadedfiles" => "Fichiers copiés",
"noaffirmation" => "Vous devez confirmer que la copie de ce fichier ne viole aucun copyright.",
@@ -675,6 +675,7 @@ Suivez ce lien: ($2) pour accéder à la page de description, et donner des info
"imghistory" => "Historique de l'image",
"revertimg" => "rétab",
"deleteimg" => "suppr",
+"deleteimgcompletely" => "suppr",
"imghistlegend" => "Légende: (actu) = ceci est l'image actuelle, (suppr) = supprimer
cette ancienne version, (rétab) = rétablir cette ancienne version.
<br /><i>Cliquez sur la date pour voir l'image copiée à cette date</i>.",
@@ -1285,12 +1286,14 @@ class LanguageFr extends LanguageUtf8
function getMessage( $key )
{
global $wgAllMessagesFr, $wgAllMessagesEn;
- $m = $wgAllMessagesFr[$key];
-
- if ( "" == $m ) { return $wgAllMessagesEn[$key]; }
- else return $m;
-
+ if( isset( $wgAllMessagesFr[$key] ) ) {
+ return $wgAllMessagesFr[$key];
+ } else {
+ return $wgAllMessagesEn[$key];
+ }
}
+
+ function isRTL() { return false; }
}
?>
diff --git a/languages/LanguageFy.php b/languages/LanguageFy.php
index 96b56ef6b75a..8b1471126411 100644
--- a/languages/LanguageFy.php
+++ b/languages/LanguageFy.php
@@ -29,7 +29,7 @@ if($wgMetaNamespace === FALSE)
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsFy = array(
"Ut", "Lofts fêst", "Rjochts fêst", "Lofsts sweevjend"
@@ -43,7 +43,8 @@ if($wgMetaNamespace === FALSE)
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesFy = array(
@@ -661,6 +662,7 @@ en wat jo fierder mar oan ynformaasje hawwe.",
"imghistory" => "Ofbyldskiednis",
"revertimg" => "tebek",
"deleteimg" => "wisk",
+"deleteimgcompletely" => "wisk",
"imghistlegend" => "Utlis: (no) = dit is it hjoeddeiske ôfbyld,
(wisk) = wiskje dizze âldere ferzje, (tebek) = set ôfbyld tebek nei dizze âldere ferzje.
<br><i>Fia de datum kinne jo it ôfbyld dat doe oanbean besjen</i>.",
diff --git a/languages/LanguageGa.php b/languages/LanguageGa.php
index 886732c806c8..b0ed4d2321fc 100755
--- a/languages/LanguageGa.php
+++ b/languages/LanguageGa.php
@@ -29,7 +29,7 @@ Sourceforge (when that gets added.)
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgDefaultUserOptionsGa = array(
"quickbar" => 1, "underline" => 1, "hover" => 1,
@@ -53,7 +53,8 @@ Sourceforge (when that gets added.)
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesGa = array(
@@ -758,6 +759,7 @@ chruthaíodh é agus rud eile ar bith tá an fhios agat faoi.",
"imghistory" => "Stair an íomhá",
"revertimg" => "ath",
"deleteimg" => "scr",
+"deleteimgcompletely" => "scr",
"imghistlegend" => "Legend: (rea) = seo é an eagrán reatha, (scr) = scrios an
sean-eagrán seo, (ath) = athúsáid an sean-eagrán seo.
<br><i>Bruigh an dáta chun feach ar an íomhá mar a suaslódálaíodh é ar an dáta sin</i>.",
diff --git a/languages/LanguageHe.php b/languages/LanguageHe.php
index c3ce75dfcdaa..6ec9b3f8f7dc 100644
--- a/languages/LanguageHe.php
+++ b/languages/LanguageHe.php
@@ -29,7 +29,7 @@ require_once("LanguageUtf8.php");
14 => "Category",
15 => "Category_talk",
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsHe = array(
"לל×", "קבוע משמ×ל", "קבוע מימין", "צף משמ×ל"
@@ -43,7 +43,8 @@ require_once("LanguageUtf8.php");
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesHe = array(
@@ -526,6 +527,7 @@ $3 $9",
"imghistory" => "היסטורית קובץ תמונה",
"revertimg" => "חזור",
"deleteimg" => "מחק",
+"deleteimgcompletely" => "מחק",
"imghistlegend" => "×ž×§×¨× (נוכ) = זו התמונה הנוכחית, (מחק) = מחק גירסה ישנה זו, (חזור) חזור לגירסה ישנה זו.
<br><i>הקש על ת×ריך לר×ות ×ת התמונה שהועלתה בת×ריך ×–×”</i>.",
"imagelinks" => "קישורי תמונות",
diff --git a/languages/LanguageHi.php b/languages/LanguageHi.php
index 9e52c34772a0..9f1ba39c5907 100644
--- a/languages/LanguageHi.php
+++ b/languages/LanguageHi.php
@@ -25,7 +25,7 @@ require_once( "LanguageUtf8.php" );
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgWeekdayNamesHi = array(
"रविवार", "सोमवार", "मंगलवार", "बà¥à¤§à¤µà¤¾à¤°", "गà¥à¤°à¥à¤µà¤¾à¤°",
@@ -130,6 +130,19 @@ Don't forget to personalize your wikipedia preferences.",
);
class LanguageHi extends LanguageUtf8 {
+ var $digitTransTable = array(
+ "0" => "०",
+ "1" => "१",
+ "2" => "२",
+ "3" => "३",
+ "4" => "४",
+ "5" => "५",
+ "6" => "६",
+ "7" => "७",
+ "8" => "८",
+ "9" => "९"
+ );
+
function getNamespaces() {
global $wgNamespaceNamesHi;
return $wgNamespaceNamesHi;
@@ -168,6 +181,14 @@ class LanguageHi extends LanguageUtf8 {
return Language::getMessage($key);
}
+ function formatNum( $number ) {
+ global $wgTranslateNumerals;
+ if( $wgTranslateNumerals ) {
+ return strtr( $number, $this->digitTransTable );
+ } else {
+ return $number;
+ }
+ }
}
?>
diff --git a/languages/LanguageHu.php b/languages/LanguageHu.php
index f90cee02ff31..347e50b51d55 100644
--- a/languages/LanguageHu.php
+++ b/languages/LanguageHu.php
@@ -10,22 +10,25 @@ require_once("LanguageUtf8.php");
# encapsulates some of the magic-ness.
#
/* private */ $wgNamespaceNamesHu = array(
- -2 => "Media",
- -1 => "Speciális",
- 0 => "",
- 1 => "Vita",
- 2 => "User",
- 3 => "User_vita",
- 4 => "Wikipédia",
- 5 => "Wikipédia_vita",
- 6 => "Kép",
- 7 => "Kép_vita",
- 8 => "MediaWiki",
- 9 => "MediaWiki_vita",
- 10 => "Template",
- 11 => "Template_talk"
-
-);
+ NS_MEDIA => "Média",
+ NS_SPECIAL => "Speciális",
+ NS_MAIN => "",
+ NS_TALK => "Vita",
+ NS_USER => "User",
+ NS_USER_TALK => "User_vita",
+ NS_WIKIPEDIA => "Wikipédia",
+ NS_WIKIPEDIA_TALK => "Wikipédia_vita",
+ NS_IMAGE => "Kép",
+ NS_IMAGE_TALK => "Kép_vita",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWiki_vita",
+ NS_TEMPLATE => "Sablon",
+ NS_TEMPLATE_TALK => "Sablon_vita",
+ NS_HELP => "Segítség",
+ NS_HELP_TALK => "Segítség_vita",
+ NS_CATEGORY => "Kategória",
+ NS_CATEGORY_TALK => "Kategória_vita"
+) + $wgNamespaceNamesEn;
/* Inherit default options; make specific changes via
custom getDefaultUserOptions() if needed. */
@@ -42,7 +45,8 @@ require_once("LanguageUtf8.php");
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesHu = array(
@@ -690,6 +694,7 @@ más információ amit meg tudsz adni.",
"imghistory" => "Kép története",
"revertimg" => "régi",
"deleteimg" => "töröl",
+"deleteimgcompletely" => "töröl",
"imghistlegend" => "Jelmagyarázat: (akt) = ez az aktuális kép,
(töröl) = ezen régi változat törlése,
(régi) = visszaállás erre a régi változatra.
@@ -1031,7 +1036,7 @@ szerint.",
"movearticle" => "Lap mozgatás",
"movenologin" => "Nincs belépve",
"movenologintext" => "Ahhoz hogy mozgass egy lapot <a href=\"" .
- wfLocalUrl( "Speciál:Belépés" ) . "\">be kell lépned</a>.",
+ wfLocalUrl( "Speciális:Belépés" ) . "\">be kell lépned</a>.",
"newtitle" => "Az új névre",
"movepagebtn" => "Lap mozgatása",
"pagemovedsub" => "Ãtmozgatás sikeres",
@@ -1168,9 +1173,9 @@ class LanguageHu extends LanguageUtf8 {
{
if ( $adj ) { $ts = $this->userAdjust( $ts ); }
- $d = substr( $ts, 0, 4 ) . " " .
+ $d = substr( $ts, 0, 4 ) . ". " .
$this->getMonthName( substr( $ts, 4, 2 ) ) . " ".
- (0 + substr( $ts, 6, 2 ));
+ (0 + substr( $ts, 6, 2 )) . ".";
return $d;
}
diff --git a/languages/LanguageIa.php b/languages/LanguageIa.php
index d12914928786..e97fbee8806a 100644
--- a/languages/LanguageIa.php
+++ b/languages/LanguageIa.php
@@ -24,7 +24,7 @@
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsIa = array(
"Necun", "Fixe a sinistra", "Fixe a dextera", "Flottante a sinistra"
@@ -38,7 +38,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesIa = array(
@@ -600,6 +601,7 @@ a su proposito.",
"imghistory" => "Chronologia del imagine",
"revertimg" => "rev",
"deleteimg" => "elim",
+"deleteimgcompletely" => "elim",
"imghistlegend" => "Legend: (actu) = iste es le imagine actual, (elim) = elimina
iste version antique, (rev) = reverte a iste version antique.
<br><i>Clica super le data pro vider le imagine cargate in ille die.</i>",
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/LanguageIs.php b/languages/LanguageIs.php
new file mode 100644
index 000000000000..4dea0dfaab64
--- /dev/null
+++ b/languages/LanguageIs.php
@@ -0,0 +1,1392 @@
+<?php
+#--------------------------------------------------------------------------
+# Language-specific text
+#--------------------------------------------------------------------------
+
+# NOTE: To turn off "Current Events" in the sidebar,
+# set "currentevents" => "-"
+
+# The names of the namespaces can be set here, but the numbers
+# are magical, so don't change or move them! The Namespace class
+# encapsulates some of the magic-ness.
+#
+
+require_once( "LanguageUtf8.php" );
+
+if($wgMetaNamespace === FALSE)
+ $wgMetaNamespace = str_replace( " ", "_", $wgSitename );
+
+/* private */ $wgNamespaceNamesIs = array(
+ NS_MEDIA => 'Miðlar',
+ NS_SPECIAL => 'Kerfissíða', # Special
+ NS_MAIN => '',
+ NS_TALK => 'Spjall', # Talk
+ NS_USER => 'Notandi',
+ NS_USER_TALK => 'Notandaspjall',
+ NS_WIKIPEDIA => $wgMetaNamespace,
+ NS_WIKIPEDIA_TALK => $wgMetaNamespace . 'spjall',
+ NS_IMAGE => 'Mynd',
+ NS_IMAGE_TALK => 'Myndaspjall',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWikispjall',
+ NS_TEMPLATE => 'Snið',
+ NS_TEMPLATE_TALK => 'Sniðaspjall',
+ NS_HELP => 'Hjálp',
+ NS_HELP_TALK => 'Hjálparspjall',
+ NS_CATEGORY => 'Flokkur',
+ NS_CATEGORY_TALK => 'Flokkaspjall'
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgDefaultUserOptionsIs = array(
+ "date" => 2
+) + $wgDefaultUserOptionsEn;
+
+# Note to translators:
+# Please include the English words as synonyms. This allows people
+# from other wikis to contribute more easily.
+#
+/* private */ $wgMagicWordsIs = array(
+# ID CASE SYNONYMS
+ MAG_REDIRECT => array( 0, '#redirect', '#tilvísun' ),
+ MAG_NOTOC => array( 0, '__NOTOC__' ),
+ MAG_FORCETOC => array( 0, '__FORCETOC__' ),
+ MAG_TOC => array( 0, '__TOC__' ),
+ 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' )
+);
+
+
+/* private */ $wgQuickbarSettingsIs = array(
+ "Sleppa", "Fast vinstra megin", "Fast hægra megin", "Fljótandi til vinstri"
+);
+
+/* private */ $wgSkinNamesIs = array(
+ "Venjulegt", "Gamaldags", "Kölnarblátt", "Paddington", "Montparnasse"
+);
+
+/* private */ $wgDateFormatsIs = array(
+ "Alveg sama",
+ "Janúar 15, 2001",
+ "15 janúar 2001",
+ "2001 janúar 15",
+ "2001-01-15"
+);
+
+/* private */ $wgMathNamesIs = array(
+ "Alltaf birta PNG mynd",
+ "HTML fyrir einfaldar jöfnur annars PNG",
+ "HTML ef hægt er, annars PNG",
+ "Sýna TeX jöfnu (fyrir textavafra)",
+ "Mælt með fyrir nýja vafra",
+ 'MathML'
+);
+
+/* private */ $wgUserTogglesIs = array(
+ "hover" => "Sýna hjálpartexta á wiki hlekkjum",
+ "underline" => "Undirstrika hlekki",
+ "highlightbroken" => "Sýna brotna hlekki <a href=\"\" class=\"new\">svona</a> (annars: svona<a href=\"\" class=\"internal\">?</a>).",
+ "justify" => "Jafna málsgreinar",
+ "hideminor" => "Fela minniháttar breytingar",
+ "usenewrc" => "Endurbætt nýjar tengingar (ekki fyrir alla vafra)",
+ "numberheadings" => "Númera fyrirsagnir sjálfkrafa",
+ "editondblclick" => "Breyta síðu ef tvísmellt er á hlekkinn (JavaScript)",
+ "editsection"=>"Leyfa breytingar á hluta síðna með [edit] hlekkjum",
+ "editsectiononrightclick"=>"Leyfa breytingar á hluta síðna með því að hægrismella á titla (JavaScript)",
+ "showtoc"=>"Sýna efnisyfirlit",
+ "rememberpassword" => "Muna lykilorð",
+ "editwidth" => "Innsláttarsvæði hefur fulla breidd",
+ "watchdefault" => "Bæta síðum sem þú breytir við eftirlitslista",
+ "minordefault" => "Láta breytingar vera sjálfgefnar sem minniháttar",
+ "previewontop" => "Setja prufuhnapp fyrir framan breytingahnapp",
+ "nocache" => "Slökkva á flýtivistun síðna"
+);
+
+/* private */ $wgBookstoreListIs = array(
+ "AddALL" => "http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN",
+ "PriceSCAN" => "http://www.pricescan.com/books/bookDetail.asp?isbn=$1",
+ "Barnes & Noble" => "http://shop.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1",
+ "Amazon.com" => "http://www.amazon.com/exec/obidos/ISBN=$1"
+);
+
+
+/* private */ $wgWeekdayNamesIs = array(
+ "sunnudagur", "mánudagur", "þriðjudagur", "miðvikudagur", "fimmtudagur",
+ "föstudagur", "laugardagur"
+);
+
+/* private */ $wgMonthNamesIs = array(
+ "janúar", "febrúar", "mars", "apríl", "maí", "júní",
+ "júlí", "ágúst", "september", "október", "nóvember",
+ "desember"
+);
+
+/* private */ $wgMonthAbbreviationsIs = array(
+ "jan", "feb", "mar", "apr", "maí", "jún", "júl", "ágú",
+ "sep", "okt", "nóv", "des"
+);
+
+# All special pages have to be listed here: a description of ""
+# will make them not show up on the "Special Pages" page, which
+# is the right thing for some of them (such as the "targeted" ones).
+#
+/* private */ $wgValidSpecialPagesIs = array(
+ "Userlogin" => "Innskráning",
+ "Userlogout" => "Útskrá",
+ "Preferences" => "Stilla notendaviðmót",
+ "Watchlist" => "Eftirlitslistinn minn",
+ "Recentchanges" => "Nýlega uppfærðar síður",
+ "Upload" => "Hlaða inn myndum",
+ "Imagelist" => "Myndalisti",
+ "Listusers" => "Skráðir notendur",
+ "Statistics" => "Notkunartölur",
+ "Randompage" => "Velja grein af handahófi",
+
+ "Lonelypages" => "Munaðarlausar greinar",
+ "Unusedimages" => "Munaðarlausar myndir",
+ "Popularpages" => "Vinsælar greinar",
+ "Wantedpages" => "Eftirlýstar greinar",
+ "Shortpages" => "Stuttar greinar",
+ "Longpages" => "Langar greinar",
+ "Newpages" => "Nýlegar greinar",
+ "Ancientpages" => "Elstu greinarnar",
+ "Deadendpages" => "Endastöðvar",
+# "Intl" => "Tenglar í síður á erlendum málum",
+ "Allpages" => "Allar síður eftir titli",
+
+ "Ipblocklist" => "Bannaðir notendur/IP tölur",
+ "Maintenance" => "Viðhaldssíða",
+ "Specialpages" => "Sérstakar síður",
+ "Contributions" => "Framlög",
+ "Emailuser" => "Senda notanda tölvupóst",
+ "Whatlinkshere" => "Hvað vísar hingað",
+ "Recentchangeslinked" => "",
+ "Movepage" => "Færa síðu",
+ "Booksources" => "Bókabúðir",
+# "Categories" => "Síðuflokkar",
+ "Export" => "XML útgáfa af síðu",
+);
+
+/* private */ $wgSysopSpecialPagesIs = array(
+ "Blockip" => "Banna notanda/IP tölu",
+ "Asksql" => "Leita í gagnagrunni",
+ "Undelete" => "Endurbyggja síður sem hefur verið eytt"
+);
+
+/* private */ $wgDeveloperSpecialPagesIs = array(
+ "Lockdb" => "Gera gagnagrunninn óskrifanlegan (read-only)",
+ "Unlockdb" => "Gera gagnagrunninn skrifanlegan aftur",
+ "Debug" => "Aflúsunarupplýsingar"
+);
+
+#-------------------------------------------------------------------
+# Default messages
+#-------------------------------------------------------------------
+# Allowed characters in keys are: A-Z, a-z, 0-9, underscore (_) and
+# hyphen (-). If you need more characters, you may be able to change
+# the regex in MagicWord::initRegex
+$wgAllMessagesIs = array(
+#'1movedto2' => "$1 moved to $2",
+#'1movedto2_redir' => "$1 moved to $2 over redirect",
+#'Monobook.css' => "/* edit this file to customize the monobook skin for the entire site */",
+'Monobook.js' => "/* tooltips and access keys */
+ta = new Object();
+ta['pt-userpage'] = new Array('.','Notendasíðan mín');
+ta['pt-anonuserpage'] = new Array('.','Notendasíðan fyrir IP töluna þína');
+ta['pt-mytalk'] = new Array('n','Spallsíðan mín');
+ta['pt-anontalk'] = new Array('n','Spjallsíðan fyrir þessa IP tölu');
+ta['pt-preferences'] = new Array('','Almennar stillingar');
+ta['pt-watchlist'] = new Array('l','Vaktlistinn.');
+ta['pt-mycontris'] = new Array('y','Listi yfir framlög þín');
+ta['pt-login'] = new Array('o','Þú ert hvattur/hvött til að innskrá þig, það er hinsvegar ekki nauðsynlegt.');
+ta['pt-anonlogin'] = new Array('o','Þú ert hvattur/hvött til að innskrá þig, það er hinsvegar ekki nauðsynlegt.');
+ta['pt-logout'] = new Array('o','Útskráning');
+ta['ca-talk'] = new Array('t','Spallsíða þessarar síðu');
+ta['ca-edit'] = new Array('e','Þú getur breytt síðu þessari, vinsamlegast notaðu Forsýn hnappin áður en þú vistar');
+ta['ca-addsection'] = new Array('+','Viðbótarumræða.');
+ta['ca-viewsource'] = new Array('e','Síða þessi er vernduð, þú getur skoðað wikikóða hennar.');
+ta['ca-history'] = new Array('h','Eldri útgáfur af síðunni.');
+ta['ca-protect'] = new Array('=','Vernda þessa síðu');
+ta['ca-delete'] = new Array('d','Eyða þessari síðu');
+ta['ca-undelete'] = new Array('d','Endurvekja breytingar á síðu þessari fyrir en henni var eitt');
+ta['ca-move'] = new Array('m','Færa þessa síðu');
+ta['ca-nomove'] = new Array('','Þér er óheimild að færa þessa síðu');
+ta['ca-watch'] = new Array('w','Bæta þessari síðu við á vaktlistann');
+ta['ca-unwatch'] = new Array('w','Fjarlægja þessa síðu af vaktlistanum');
+ta['search'] = new Array('f','Leit');
+ta['p-logo'] = new Array('','Forsíða');
+ta['n-mainpage'] = new Array('z','Forsíða Wikipedia');
+ta['n-portal'] = new Array('','Um verkefnið, hvernig er hægt að hjálpa og hvar á að byrja');
+ta['n-currentevents'] = new Array('','Líðandi atburðir');
+ta['n-recentchanges'] = new Array('r','Listi yfir nýlegar breytingar.');
+ta['n-randompage'] = new Array('x','Handahófsvalin síða');
+ta['n-help'] = new Array('','Efnisyfirlit yfir hjálparsíður.');
+ta['n-sitesupport'] = new Array('','Fjárframlagssíða Wikimedia');
+ta['t-whatlinkshere'] = new Array('j','Ãtengilisti');
+ta['t-recentchangeslinked'] = new Array('k','Nýlegar breitingar á ítengdum síðum');
+ta['feed-rss'] = new Array('','RSS fyrir þessa síðu');
+ta['feed-atom'] = new Array('','Atom fyrir þessa síðu');
+ta['t-contributions'] = new Array('','Sýna framlagslista þessa notanda');
+ta['t-emailuser'] = new Array('','Senda notanda þessum póst');
+ta['t-upload'] = new Array('u','Innhlaða myndum eða margmiðlunarskrám');
+ta['t-specialpages'] = new Array('q','Listi yfir kerfissíður');
+ta['ca-nstab-main'] = new Array('c','Sýna síðuna');
+ta['ca-nstab-user'] = new Array('c','Sýna notendasíðuna');
+ta['ca-nstab-media'] = new Array('c','Sýna margmiðlunarsíðuna');
+ta['ca-nstab-special'] = new Array('','Þetta er kerfissíða, þér er óhæft að breyta henni.');
+ta['ca-nstab-wp'] = new Array('a','Sýna verkefnasíðuna');
+ta['ca-nstab-image'] = new Array('c','Sýna myndasíðuna');
+ta['ca-nstab-mediawiki'] = new Array('c','Sýna kerfisskilaboðin');
+ta['ca-nstab-template'] = new Array('c','View the template');
+ta['ca-nstab-help'] = new Array('c','Sýna hjálparsíðuna');
+ta['ca-nstab-category'] = new Array('c','Sýna efnisflokkasíðuna');",
+'about' => "Um",
+'aboutpage' => "Wikipedia:Um",
+'aboutwikipedia' => "Um Wikipedia",
+#'accesskey-compareselectedversions' => "v",
+#'accesskey-minoredit' => "i",
+#'accesskey-preview' => "p",
+#'accesskey-save' => "s",
+#'accesskey-search' => "f",
+'accmailtext' => "Lykilorðið fyrir '$1' hefur verið sent á $2.",
+'accmailtitle' => "Leyniorð sent.",
+#'acct_creation_throttle_hit' => "Sorry, you have already created $1 accounts. You can't make any more.",
+#'actioncomplete' => "Action complete",
+'addedwatch' => "Bætt á vaktlistann",
+'addedwatchtext' => "Síðunni \"$1\" hefur verið bætt á [[Special:Watchlist|Vaktlistann]] þinn.
+Frekari breytingar á henni eða spallsíðu hennar munu verða sýndar þar.
+Þar að auki verður síða þessi '''feitletruð''' á [[Special:Recentchanges|Nýlegum breytingum]]
+svo auðveldara sé að sjá hana þar meðal fjöldans.
+
+<p>Til að fjarlægja síðu þessa af vaktlistanum þarft þú að ýta á tengilinn er merktur er \"afvakta\".",
+#'addsection' => "+",
+'administrators' => "Wikipedia:Stjórnendur",
+'affirmation' => "Ég staðfesti að rétthafi þessa efnis veitir leyfi
+fyrir notkun þess undir $1. Eða að efni þetta er í
+almannaeign.",
+'all' => "allt",
+'allmessages' => "Allar kerfismeldingar",
+'allmessagestext' => "Þetta er listi yfir allar meldingar kerfisins í MediaWiki: nafnarýminu.",
+'allpages' => "Allar síður",
+#'alphaindexline' => "$1 to $2",
+'alreadyloggedin' => "<font color=red><b>Notandinn $1 er þegar innskráður!</b></font><br />",
+'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]]). ",
+'ancientpages' => "Elstu síður",
+#'and' => "and",
+#'anontalk' => "Talk for this IP",
+#'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.'' ",
+#'anonymous' => "Anonymous user(s) of Wikipedia",
+#'article' => "Content page",
+'articleexists' => "Annaðhvort er þegar til síða undir þessum titli,
+eða sá titill sem þú hefur valið er ekki gildur.
+Vinsamlegast veldu annan titil.",
+#'articlepage' => "View content page",
+'asksql' => "Gagnagrunnsfyrirspurn",
+#'autoblocker' => "Autoblocked because you share an IP address with \"$1\". Reason \"$2\".",
+#'badarticleerror' => "This action cannot be performed on this page.",
+#'badfilename' => "Image name has been changed to \"$1\".",
+#'badfiletype' => "\".$1\" is not a recommended image file format.",
+#'badipaddress' => "Invalid IP address",
+#'badquery' => "Badly formed search query",
+#'blanknamespace' => "(Main)",
+'blockedtext' => "Your user name or IP address has been blocked by $1.
+The reason given is this:<br />''$2''<p>You may contact $1 or one of the other
+[[Wikipedia:Administrators|administrators]] to discuss the block.
+
+Note that you may not use the \"email this user\" feature unless you have a valid email address registered in your [[Special:Preferences|user preferences]].
+
+Your IP address is $3. Please include this address in any queries you make.
+",
+#'blockedtitle' => "User is blocked",
+'blockip' => "Banna notanda",
+#'blockipsuccesssub' => "Block succeeded",
+#'blocklink' => "block",
+#'blocklistline' => "$1, $2 blocked $3 (expires $4)",
+#'blocklogentry' => "blocked \"$1\" with an expiry time of $2",
+#'blocklogpage' => "Block_log",
+'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.",
+'bold_sample' => "Feitletraður texti",
+'bold_tip' => "Feitletraður texti",
+#'booksources' => "Book sources",
+'booksourcetext' => "Below is a list of links to other sites that
+sell new and used books, and may also have further information
+about books you are looking for.Wikipedia is not affiliated with any of these businesses, and
+this list should not be construed as an endorsement.",
+#'brokenredirects' => "Broken Redirects",
+#'brokenredirectstext' => "The following redirects link to a non-existing pages.",
+#'bugreports' => "Bug reports",
+'bugreportspage' => "Wikipedia:Bug_reports",
+#'bureaucratlog' => "Bureaucrat_log",
+#'bureaucratlogentry' => "Rights for user \"$1\" set \"$2\"",
+#'bureaucrattext' => "The action you have requested can only be performed by sysops with \"bureaucrat\" status.",
+#'bureaucrattitle' => "Bureaucrat access required",
+'bydate' => "eftir dagsetningu",
+'byname' => "eftir nafni",
+'bysize' => "eftir stærð",
+#'cachederror' => "The following is a cached copy of the requested page, and may not be up to date.",
+'cancel' => "Hætta við",
+#'cannotdelete' => "Could not delete the page or image specified. (It may have already been deleted by someone else.)",
+#'cantrollback' => "Cannot revert edit; last contributor is only author of this page.",
+'categories' => "Efnisflokkar",
+'category' => "flokkur",
+'category_header' => "Greinar í flokknum \"$1\"",
+#'categoryarticlecount' => "There are $1 articles in this category.",
+'changepassword' => "Breyta lykilorði",
+'changes' => "Breytingar",
+#'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''.",
+#'columns' => "Columns",
+#'commentedit' => " (comment)",
+#'compareselectedversions' => "Compare selected versions",
+'confirm' => "Staðfesta",
+'confirmcheck' => "Eyða.",
+'confirmdelete' => "Staðfesting á eyðingu",
+'confirmdeletetext' => "Þú ert um það bil að eyða síðu eða mynd ásamt
+breytingaskrá hennar úr gagnagrunninum.
+Vinsamlegast staðfestu hér bæði að þetta sé vilji þinn
+og að þú skiljir afleiðingarnar. Þar að auki að þetta
+sé í samræmi við [[Wikipedia:Policy|almenna stefnu]].",
+#'confirmprotect' => "Confirm protection",
+#'confirmprotecttext' => "Do you really want to protect this page?",
+#'confirmunprotect' => "Confirm unprotection",
+#'confirmunprotecttext' => "Do you really want to unprotect this page?",
+#'contextchars' => "Characters of context per line",
+#'contextlines' => "Lines to show per hit",
+#'contribslink' => "contribs",
+#'contribsub' => "For $1",
+'contributions' => "Framlög notanda",
+#'copyright' => "Content is available under $1.",
+'copyrightpage' => "Wikipedia:Höfundarréttur",
+'copyrightpagename' => "Höfundarréttarreglum Wikipedia",
+'copyrightwarning' => "Please note that all contributions to Wikipedia are
+considered to be released under the GNU Free Documentation License
+(see $1 for details).
+If you don't want your writing to be edited mercilessly and redistributed
+at will, then don't submit it here.<br />
+You are also promising us that you wrote this yourself, or copied it from a
+public domain or similar free resource.
+<strong>DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!</strong>",
+#'couldntremove' => "Couldn't remove item '$1'...",
+#'createaccount' => "Create new account",
+#'createaccountmail' => "by email",
+#'creditspage' => "Page credits",
+'cur' => "nú",
+'currentevents' => "Líðandi stund",
+#'currentrev' => "Current revision",
+'databaseerror' => "Gagnagrunnsvilla",
+#'dateformat' => "Date format",
+#'deadendpages' => "Dead-end pages",
+'debug' => "Aflúsa",
+#'defaultns' => "Search in these namespaces by default:",
+'defemailsubject' => "Wikipedia e-mail",
+'delete' => "Eyða",
+'deletecomment' => "Ãstæða",
+#'deletedarticle' => "deleted \"$1\"",
+'deletedtext' => "\"$1\" hefur verið eytt. Sjá lista yfir nýlegar eyðingar á $2.",
+'deleteimg' => "eyða",
+#'deletepage' => "Delete page",
+'deletesub' => "(Eyði: \"$1\")",
+'deletethispage' => "Eyða þessari síðu",
+#'deletionlog' => "deletion log",
+#'dellogpage' => "Deletion_log",
+#'developerspheading' => "For developer use only",
+#'developertitle' => "Developer access required",
+#'diff' => "diff",
+#'difference' => "(Difference between revisions)",
+#'disambiguations' => "Disambiguation pages",
+'disambiguationspage' => "Wikipedia:Links_to_disambiguating_pages",
+#'disambiguationstext' => "The following pages link to a <i>disambiguation page</i>. They should link to the appropriate topic instead.<br />A page is treated as dismbiguation if it is linked from $1.<br />Links from other namespaces are <i>not</i> listed here.",
+'disclaimerpage' => "Wikipedia:General_disclaimer",
+#'disclaimers' => "Disclaimers",
+#'doubleredirects' => "Double Redirects",
+#'editcomment' => "The edit comment was: \"<i>$1</i>\".",
+#'editconflict' => "Edit conflict: $1",
+#'editcurrent' => "Edit the current version of this page",
+'edithelp' => "Breytingarhjálp",
+'edithelppage' => "Help:Editing",
+#'editing' => "Editing $1",
+#'editsection' => "edit",
+'editthispage' => "Breyta þessari síðu",
+#'emailflag' => "Disable e-mail from other users",
+'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.<br /><br />Your real name, if you choose to provide it, will be used for giving you attribution for your work.",
+#'emailfrom' => "From",
+#'emailmessage' => "Message",
+#'emailpage' => "E-mail user",
+#'emailsend' => "Send",
+#'emailsent' => "E-mail sent",
+#'emailsenttext' => "Your e-mail message has been sent.",
+#'emailsubject' => "Subject",
+#'emailto' => "To",
+#'emailuser' => "E-mail this user",
+'error' => "Villa",
+'errorpagetitle' => "Villa",
+#'exbeforeblank' => "content before blanking was:",
+#'exblank' => "page was empty",
+#'excontent' => "content was:",
+#'export' => "Export pages",
+#'exportcuronly' => "Include only the current revision, not the full history",
+'extlink_sample' => "http://www.example.com titill tengils",
+'extlink_tip' => "Ytri tengill (muna að setja http:// á undan)",
+#'faq' => "FAQ",
+'faqpage' => "Wikipedia:FAQ",
+'feedlinks' => "Nippan:",
+#'filecopyerror' => "Could not copy file \"$1\" to \"$2\".",
+#'filedeleteerror' => "Could not delete file \"$1\".",
+'filedesc' => "Lýsing",
+#'fileexists' => "A file with this name exists already, please check $1 if you are not sure if you want to change it.",
+'filename' => "Skráarnafn",
+#'filenotfound' => "Could not find file \"$1\".",
+#'filerenameerror' => "Could not rename file \"$1\" to \"$2\".",
+#'filesource' => "Source",
+#'filestatus' => "Copyright status",
+'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.",
+#'formerror' => "Error: could not submit form",
+'fromwikipedia' => "Úr Wikipedia, frjálsu alfræðiorðabókinni",
+'fundraising_notice' => "Ef þú vilt styðja wikipedia getur þú gert það í verki með að <a href=\"http://wikimediafoundation.org/fundraising\">láta fé af hendi rakna</a>. Verið er að safna fyrir <a href=\"http://meta.wikimedia.org/wiki/What_we_use_the_money_for\">ýmsum hlutum</a>.",
+#'getimagelist' => "fetching image list",
+'go' => "Ãfram",
+'googlesearch' => "
+<!-- SiteSearch Google -->
+<FORM method=GET action=\"http://www.google.com/search\">
+<TABLE bgcolor=\"#FFFFFF\"><tr><td>
+<A HREF=\"http://www.google.com/\">
+<IMG SRC=\"http://www.google.com/logos/Logo_40wht.gif\"
+border=\"0\" ALT=\"Google\"></A>
+</td>
+<td>
+<INPUT TYPE=text name=q size=31 maxlength=255 value=\"$1\">
+<INPUT type=submit name=btnG VALUE=\"Google Search\">
+<font size=-1>
+<input type=hidden name=domains value=\"http://is.wikipedia.org\"><br /><input type=radio name=sitesearch value=\"\"> WWW <input type=radio name=sitesearch value=\"http://is.wikipedia.org\" checked> http://is.wikipedia.org <br />
+<input type='hidden' name='ie' value='$2'>
+<input type='hidden' name='oe' value='$2'>
+</font>
+</td></tr></TABLE>
+</FORM>
+<!-- SiteSearch Google -->",
+#'guesstimezone' => "Fill in from browser",
+#'headline_sample' => "Headline text",
+#'headline_tip' => "Level 2 headline",
+'help' => "Hjálp",
+'helppage' => "Hjálp:Efnisyfirlit",
+'hide' => "Fela",
+'hidetoc' => "fela",
+#'hist' => "hist",
+'history' => "Forsaga síðu",
+#'history_copyright' => "-",
+'history_short' => "Breytingaskrá",
+#'historywarning' => "Warning: The page you are about to delete has a history: ",
+'hr_tip' => "Lárétt lína (notist sparlega)",
+#'ignorewarning' => "Ignore warning and save file anyway.",
+'ilshowmatch' => "Sýna allar myndir með nöfn sem passa við",
+'ilsubmit' => "Leita",
+'image_sample' => "Sýnishorn.jpeg",
+'image_tip' => "Setja inn mynd",
+'imagelinks' => "Myndatenglar",
+'imagelist' => "Skráalisti",
+'imagelisttext' => "Hér fyrir neðan er $1 skrám raðað $2.",
+#'imagepage' => "View image page",
+#'imagereverted' => "Revert to earlier version was successful.",
+'imgdelete' => "eyða",
+'imgdesc' => "lýsing",
+'imghistory' => "Breytingaskrá myndar",
+'imglegend' => "Skýringar: (lýsing) = sýna og/eða breyta lýsingu skráar.",
+#'import' => "Import pages",
+#'importfailed' => "Import failed: $1",
+#'importhistoryconflict' => "Conflicting history revision exists (may have imported this page before)",
+#'importnotext' => "Empty or no text",
+#'importsuccess' => "Import succeeded!",
+#'importtext' => "Please export the file from the source wiki using the Special:Export utility, save it to your disk and upload it here.",
+#'info_short' => "Information",
+#'infobox' => "Click a button to get an example text",
+#'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",
+#'infosubtitle' => "Information for page",
+#'internalerror' => "Internal error",
+#'intl' => "Interlanguage links",
+'ipaddress' => "IP Tala/notendanafn",
+#'ipb_expiry_invalid' => "Expiry time invalid.",
+'ipbexpiry' => "Rennur út eftir",
+'ipblocklist' => "Bannaðar notendur og IP tölur",
+'ipbreason' => "Ãstæða",
+'ipbsubmit' => "Banna notanda",
+#'ipusubmit' => "Unblock this address",
+#'ipusuccess' => "\"$1\" unblocked",
+#'isbn' => "ISBN",
+#'isredirect' => "redirect page",
+'italic_sample' => "Skáletraður texti",
+'italic_tip' => "Skáletraður texti",
+#'iteminvalidname' => "Problem with item '$1', invalid name...",
+#'largefile' => "It is recommended that images not exceed 100k in size.",
+#'last' => "last",
+'lastmodified' => "Þessari síðu var síðast breytt $1.",
+#'lastmodifiedby' => "This page was last modified $1 by $2.",
+#'lineno' => "Line $1:",
+'link_sample' => "Titill tengils",
+'link_tip' => "Innri tengill",
+#'linklistsub' => "(List of links)",
+#'linkshere' => "The following pages link to here:",
+'linkstoimage' => "Eftirfarandi síður tengjast í mynd þessa:",
+'linktrail' => "/^([a-z]+)(.*)\$/sD",
+'listadmins' => "Stjórnendalisti",
+#'listform' => "list",
+'listusers' => "Notendalisti",
+#'loadhist' => "Loading page history",
+#'loadingrev' => "loading revision for diff",
+#'localtime' => "Local time display",
+#'lockbtn' => "Lock database",
+#'lockconfirm' => "Yes, I really want to lock the database.",
+#'lockdb' => "Lock database",
+#'lockdbsuccesssub' => "Database lock succeeded",
+#'lockdbsuccesstext' => "The database has been locked. <br />Remember to remove the lock after your maintenance is complete.",
+#'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.",
+#'locknoconfirm' => "You did not check the confirmation box.",
+#'login' => "Log in",
+#'loginend' => "&nbsp;",
+'loginerror' => "Innskráningarvilla",
+#'loginpagetitle' => "User login",
+#'loginproblem' => "<b>There has been a problem with your login.</b><br />Try again!",
+'loginprompt' => "You must have cookies enabled to log in to Wikipedia.",
+#'loginreqtext' => "You must [[special:Userlogin|login]] to view other pages.",
+#'loginreqtitle' => "Login Required",
+'loginsuccess' => "You are now logged in to Wikipedia as \"$1\".",
+#'loginsuccesstitle' => "Login successful",
+'logout' => "Útskráning",
+'logouttext' => "You are now logged out.
+You can continue to use Wikipedia anonymously, or you can log in
+again as the same or as a different user. Note that some pages may
+continue to be displayed as if you were still logged in, until you clear
+your browser cache
+",
+#'logouttitle' => "User logout",
+'lonelypages' => "Munaðarlausar síður",
+'longpages' => "Langar síður",
+#'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.",
+#'mailerror' => "Error sending mail: $1",
+#'mailmypassword' => "Mail me a new password",
+#'mailnologin' => "No send address",
+'mailnologintext' => "You must be <a href=\"{{localurl:Special:Userlogin\">logged in</a>
+and have a valid e-mail address in your <a href=\"/wiki/Special:Preferences\">preferences</a>
+to send e-mail to other users.",
+'mainpage' => "Forsíða",
+#'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.",
+#'mainpagetext' => "Wiki software successfully installed.",
+'maintenance' => "Viðhaldssíða",
+#'maintenancebacklink' => "Back to 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 ;-)",
+#'makesysop' => "Make a user into a sysop",
+#'makesysopfail' => "<b>User \"$1\" could not be made into a sysop. (Did you enter the name correctly?)</b>",
+#'makesysopname' => "Name of the user:",
+#'makesysopok' => "<b>User \"$1\" is now a sysop</b>",
+#'makesysopsubmit' => "Make this 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",
+#'makesysoptitle' => "Make a user into a sysop",
+#'matchtotals' => "The query \"$1\" matched $2 page titles and the text of $3 pages.",
+#'math' => "Rendering math",
+#'math_bad_output' => "Can't write to or create math output directory",
+#'math_bad_tmpdir' => "Can't write to or create math temp directory",
+#'math_failure' => "Failed to parse",
+#'math_image_error' => "PNG conversion failed; check for correct installation of latex, dvips, gs, and convert",
+#'math_lexing_error' => "lexing error",
+#'math_notexvc' => "Missing texvc executable; please see math/README to configure.",
+'math_sample' => "Formúla setjist hér",
+#'math_syntax_error' => "syntax error",
+'math_tip' => "Stærðfræðiformúla (LaTeX)",
+#'math_unknown_error' => "unknown error",
+#'math_unknown_function' => "unknown function ",
+'media_sample' => "Sýnishorn.ogg",
+'media_tip' => "Tengill í margmiðlunarskrá",
+#'minlength' => "Image names must be at least three letters.",
+'minoredit' => "Minniháttar breyting",
+#'minoreditletter' => "M",
+#'mispeelings' => "Pages with misspellings",
+#'mispeelingspage' => "List of common misspellings",
+#'mispeelingstext' => "The following pages contain a common misspelling, which are listed on $1. The correct spelling might be given (like this).",
+#'missingarticle' => "The database did not find the text of a page that it should have found, named \"$1\". <p>This is usually caused by following an outdated diff or history link to a page that has been deleted. <p>If this is not the case, you may have found a bug in the software. Please report this to an administrator, making note of the URL.",
+#'missingimage' => "<b>Missing image</b><br /><i>$1</i> ",
+#'missinglanguagelinks' => "Missing Language Links",
+#'missinglanguagelinksbutton' => "Find missing language links for",
+#'missinglanguagelinkstext' => "These pages do <i>not</i> link to their counterpart in $1. Redirects and subpages are <i>not</i> shown.",
+#'moredotdotdot' => "More...",
+'move' => "Færa",
+'movearticle' => "Færa",
+#'movedto' => "moved to",
+#'movenologin' => "Not logged in",
+'movenologintext' => "You must be a registered user and <a href=\"/wiki/Special:Userlogin\">logged in</a>
+to move a page.",
+#'movepage' => "Move page",
+#'movepagebtn' => "Move page",
+#'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.",
+#'movepagetext' => "Using the form below will rename a page, moving all
+# of its history to the new name.
+# The old title will become a redirect page to the new title.
+# Links to the old page title will not be changed; be sure to
+# [[Special:Maintenance|check]] for double or broken redirects.
+# You are responsible for making sure that links continue to
+# point where they are supposed to go.
+#
+# Note that the page will '''not''' be moved if there is already
+# a page at the new title, unless it is empty or a redirect and has no
+# past edit history. This means that you can rename a page back to where
+# it was just renamed from if you make a mistake, and you cannot overwrite
+# an existing page.
+#
+# <b>WARNING!</b>
+# This can be a drastic and unexpected change for a popular page;
+# please be sure you understand the consequences of this before
+# proceeding.",
+#'movetalk' => "Move \"talk\" page as well, if applicable.",
+'movethispage' => "Færa þessa síðu",
+'mycontris' => "Framlög",
+'mypage' => "Mín síða",
+'mytalk' => "Spjall",
+'navigation' => "Flakk",
+#'nbytes' => "$1 bytes",
+#'nchanges' => "$1 changes",
+#'newarticle' => "(New)",
+'newarticletext' => "You've followed a link to a page that doesn't exist yet.
+To create the page, start typing in the box below
+(see the [[Wikipedia:Help|help page]] for more info).
+If you are here by mistake, just click your browser's '''back''' button.",
+#'newmessages' => "You have $1.",
+#'newmessageslink' => "new messages",
+#'newpage' => "New page",
+#'newpageletter' => "N",
+'newpages' => "Nýjar síður",
+'newpassword' => "Nýja lykilorðið",
+#'newtitle' => "To new title",
+#'newusersonly' => " (new users only)",
+'newwindow' => "(í nýjum glugga)",
+#'next' => "next",
+#'nextn' => "next $1",
+#'nextpage' => "Next page ($1)",
+#'nlinks' => "$1 links",
+#'noaffirmation' => "You must affirm that your upload does not violate any copyrights.",
+#'noarticletext' => "(There is currently no text in this page)",
+#'noblockreason' => "You must supply a reason for the block.",
+#'noconnect' => "Sorry! The wiki is experiencing some technical difficulties, and cannot contact the database server. <br /> $1",
+#'nocontribs' => "No changes were found matching these criteria.",
+'nocookieslogin' => "Wikipedia uses cookies to log in users. You have cookies disabled. Please enable them and try again.",
+'nocookiesnew' => "The user account was created, but you are not logged in. Wikipedia uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.",
+#'nocreativecommons' => "Creative Commons RDF metadata disabled for this server.",
+#'nocredits' => "There is no credits info available for this page.",
+#'nodb' => "Could not select database $1",
+#'nodublincore' => "Dublin Core RDF metadata disabled for this server.",
+#'noemail' => "There is no e-mail address recorded for user \"$1\".",
+#'noemailtext' => "This user has not specified a valid e-mail address, or has chosen not to receive e-mail from other users.",
+#'noemailtitle' => "No e-mail address",
+#'nogomatch' => "No page with this exact title exists, trying full text search.",
+#'nohistory' => "There is no edit history for this page.",
+#'nolinkshere' => "No pages link to here.",
+#'nolinkstoimage' => "There are no pages that link to this image.",
+#'noname' => "You have not specified a valid user name.",
+#'nonefound' => "<strong>Note</strong>: unsuccessful searches are often caused by searching for common words like \"have\" and \"from\", which are not indexed, or by specifying more than one search term (only pages containing all of the search terms will appear in the result).",
+#'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",
+#'nosuchuser' => "There is no user by the name \"$1\". Check your spelling, or use the form below to create a new user account.",
+#'notacceptable' => "The wiki server can't provide data in a format your client can read.",
+#'notanarticle' => "Not a content page",
+#'notargettext' => "You have not specified a target page or user to perform this function on.",
+#'notargettitle' => "No target",
+#'note' => "<strong>Note:</strong> ",
+#'notextmatches' => "No page text matches",
+#'notitlematches' => "No page title matches",
+#'notloggedin' => "Not logged in",
+'nowatchlist' => "Vaktlistinn er tómur.",
+#'nowiki_sample' => "Insert non-formatted text here",
+#'nowiki_tip' => "Ignore wiki formatting",
+'nstab-category' => "Efnisflokkur",
+'nstab-help' => "Hjálp",
+'nstab-image' => "Mynd",
+'nstab-main' => "Grein",
+#'nstab-media' => "Media",
+'nstab-mediawiki' => "Skilaboð",
+#'nstab-special' => "Special",
+'nstab-template' => "Forsnið",
+#'nstab-user' => "User page",
+'nstab-wp' => "Um",
+#'numauthors' => "Number of distinct authors (article): ",
+#'numedits' => "Number of edits (article): ",
+#'numtalkauthors' => "Number of distinct authors (discussion page): ",
+#'numtalkedits' => "Number of edits (discussion page): ",
+#'numwatchers' => "Number of watchers: ",
+#'nviews' => "$1 views",
+#'ok' => "OK",
+'oldpassword' => "Gamla lykilorðið",
+#'orig' => "orig",
+#'orphans' => "Orphaned pages",
+#'othercontribs' => "Based on work by $1.",
+#'otherlanguages' => "Other languages",
+#'others' => "others",
+#'pagemovedsub' => "Move succeeded",
+#'pagemovedtext' => "Page \"[[$1]]\" moved to \"[[$2]]\".",
+'pagetitle' => "$1 - Wikipedia",
+'passwordremindertext' => "Someone (probably you, from IP address $1)
+requested that we send you a new Wikipedia login password.
+The password for user \"$2\" is now \"$3\".
+You should log in and change your password now.",
+'passwordremindertitle' => "Password reminder from Wikipedia",
+#'passwordsent' => "A new password has been sent to the e-mail address registered for \"$1\". Please log in again after you receive it.",
+#'perfcached' => "The following data is cached and may not be completely up to date:",
+#'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:",
+'personaltools' => "Tenglar",
+#'popularpages' => "Popular pages",
+'portal' => "Samfélagsgátt",
+'portal-url' => "Wikipedia:Samfélagsgátt",
+#'postcomment' => "Post a comment",
+'poweredby' => "Wikipedia is powered by [http://www.mediawiki.org/ MediaWiki], an open source wiki engine.",
+#'powersearch' => "Search",
+#'powersearchtext' => "
+# Search in namespaces :<br />
+# $1<br />
+# $2 List redirects &nbsp; Search for $3 $9",
+'preferences' => "Stillingar",
+'prefs-help-userdata' => "* <strong>Real name</strong> (optional): if you choose to provide it this will be used for giving you attribution for your work.<br/>
+* <strong>Email</strong> (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.",
+#'prefs-misc' => "Misc settings",
+'prefs-personal' => "Notendaupplýsingar",
+#'prefs-rc' => "Recent changes and stub display",
+'prefslogintext' => "You are logged in as \"$1\".
+Your internal ID number is $2.
+
+See [[Wikipedia:User preferences help]] for help deciphering the options.",
+#'prefsnologin' => "Not logged in",
+'prefsnologintext' => "You must be <a href=\"/wiki/Special:Userlogin\">logged in</a>
+to set user preferences.",
+#'prefsreset' => "Preferences have been reset from storage.",
+#'preview' => "Preview",
+#'previewconflict' => "This preview reflects the text in the upper text editing area as it will appear if you choose to save.",
+#'previewnote' => "Remember that this is only a preview, and has not yet been saved!",
+#'prevn' => "previous $1",
+'printableversion' => "Prentvæn útgáfa",
+'printsubtitle' => "(From http://is.wikipedia.org)",
+'protect' => "Vernda",
+#'protectcomment' => "Reason for protecting",
+#'protectedarticle' => "protected [[$1]]",
+#'protectedpage' => "Protected page",
+'protectedpagewarning' => "WARNING: This page has been locked so that only
+users with sysop privileges can edit it. Be sure you are following the
+<a href='/w/wiki.phtml/Wikipedia:Protected_page_guidelines'>protected page
+guidelines</a>.",
+'protectedtext' => "This page has been locked to prevent editing; there are
+a number of reasons why this may be so, please see
+[[Wikipedia:Protected page]].
+
+You can view and copy the source of this page:",
+#'protectlogpage' => "Protection_log",
+'protectlogtext' => "Below is a list of page locks/unlocks.
+See [[Wikipedia:Protected page]] for more information.",
+'protectpage' => "Vernda síðu",
+#'protectreason' => "(give a reason)",
+#'protectsub' => "(Protecting \"$1\")",
+#'protectthispage' => "Protect this page",
+#'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. ",
+#'qbbrowse' => "Browse",
+'qbedit' => "Breyta",
+#'qbfind' => "Find",
+#'qbmyoptions' => "My pages",
+#'qbpageinfo' => "Context",
+#'qbpageoptions' => "This page",
+'qbsettings' => "Valblaðsstillingar",
+#'qbsettingsnote' => "This preference only works in the 'Standard' and the 'CologneBlue' skin.",
+#'qbspecialpages' => "Special pages",
+#'querybtn' => "Submit query",
+#'querysuccessful' => "Query successful",
+'randompage' => "Handahófsvalin síða",
+#'range_block_disabled' => "The sysop ability to create range blocks is disabled.",
+#'rchide' => "in $4 form; $1 minor edits; $2 secondary namespaces; $3 multiple edits.",
+'rclinks' => "Sýna síðustu $1 breytingar síðustu $2 daga<br />$3",
+'rclistfrom' => "Sýna breytingar frá og með $1",
+#'rcliu' => "; $1 edits from logged in users",
+#'rcloaderr' => "Loading recent changes",
+#'rclsub' => "(to pages linked from \"$1\")",
+'rcnote' => "Að neðan eru síðustu <strong>$1</strong> breytingar síðustu <strong>$2</strong> daga.",
+#'rcnotefrom' => "Below are the changes since <b>$2</b> (up to <b>$1</b> shown).",
+#'readonly' => "Database locked",
+#'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: <p>$1",
+#'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.",
+'recentchanges' => "Nýlegar breytingar",
+#'recentchangescount' => "Number of titles in recent changes",
+'recentchangeslinked' => "Skyldar breytingar",
+#'recentchangestext' => "Track the most recent changes to the wiki on this page.",
+#'redirectedfrom' => "(Redirected from $1)",
+'remembermypassword' => "Muna lykilorðið milli heimsókna.",
+'removechecked' => "Fjarlægja merktar síður af vaktlistanum",
+'removedwatch' => "Fjarlægt af vaktlistanum",
+'removedwatchtext' => "Síðan \"$1\" hefur verið fjarlægð af vaktlistanum.",
+'removingchecked' => "Fjarlægi umbeðnar síðu(r) af vaktlistanum...",
+#'resetprefs' => "Reset preferences",
+#'restorelink' => "$1 deleted edits",
+#'resultsperpage' => "Hits to show per page",
+#'retrievedfrom' => "Retrieved from \"$1\"",
+'returnto' => "Tilbaka: $1.",
+'retypenew' => "Endurtaktu nýja lykilorðið",
+#'reupload' => "Re-upload",
+#'reuploaddesc' => "Return to the upload form.",
+#'reverted' => "Reverted to earlier revision",
+#'revertimg' => "rev",
+#'revertpage' => "Reverted edit of $2, changed back to last version by $1",
+#'revhistory' => "Revision history",
+#'revisionasof' => "Revision as of $1",
+#'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. ",
+#'rfcurl' => "http://www.faqs.org/rfcs/rfc$1.html",
+#'rights' => "Rights:",
+#'rollback' => "Roll back edits",
+#'rollback_short' => "Rollback",
+#'rollbackfailed' => "Rollback failed",
+#'rollbacklink' => "rollback",
+#'rows' => "Rows",
+'savearticle' => "Vista",
+'savedprefs' => "Stillingarnar þínar hafa verið vistaðar.",
+#'savefile' => "Save file",
+#'saveprefs' => "Save preferences",
+'search' => "Leit",
+#'searchdisabled' => "<p>Sorry! Full text search has been disabled temporarily, for performance reasons. In the meantime, you can use the Google search below, which may be out of date.</p>",
+'searchhelppage' => "Wikipedia:Searching",
+'searchingwikipedia' => "Searching Wikipedia",
+#'searchquery' => "For query \"$1\"",
+#'searchresults' => "Search results",
+#'searchresultshead' => "Search result settings",
+'searchresulttext' => "For more information about searching Wikipedia, see $1.",
+#'sectionedit' => " (section)",
+#'selectnewerversionfordiff' => "Select a newer version for comparison",
+#'selectolderversionfordiff' => "Select an older version for comparison",
+#'selectonly' => "Only read-only queries are allowed.",
+#'selflinks' => "Pages with Self Links",
+#'selflinkstext' => "The following pages contain a link to themselves, which they should not.",
+#'seriousxhtmlerrors' => "There were serious xhtml markup errors detected by tidy.",
+#'servertime' => "Server time is now",
+#'set_rights_fail' => "<b>User rights for \"$1\" could not be set. (Did you enter the name correctly?)</b>",
+#'set_user_rights' => "Set user rights",
+#'setbureaucratflag' => "Set bureaucrat flag",
+'shortpages' => "Stuttar síður",
+'show' => "Sýna",
+'showhideminor' => "$1 minniháttar breytingar | $2 breytingar eftir vélmenni | $3 breytingar eftir notendur",
+#'showingresults' => "Showing below <b>$1</b> results starting with #<b>$2</b>.",
+#'showingresultsnum' => "Showing below <b>$3</b> results starting with #<b>$2</b>.",
+'showlast' => "Sýna síðustu $1 skrár raðaðar $2.",
+'showpreview' => "Forsýn",
+#'showtoc' => "show",
+#'sig_tip' => "Your signature with timestamp",
+#'sitestats' => "Site statistics",
+'sitestatstext' => "There are '''$1''' total pages in the database.
+This includes \"talk\" pages, pages about Wikipedia, minimal \"stub\"
+pages, redirects, and others that probably don't qualify as content pages.
+Excluding those, there are '''$2''' pages that are probably legitimate
+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.",
+'sitesubtitle' => "Frjálsa alfræðiorðabókin",
+'sitesupport' => "Framlög",
+'sitetitle' => "Wikipedia",
+#'siteuser' => "Wikipedia user $1",
+#'siteusers' => "Wikipedia user(s) $1",
+'skin' => "Þema",
+'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:",
+#'spamprotectiontitle' => "Spam protection filter",
+#'specialpage' => "Special Page",
+'specialpages' => "Sérstakar síður",
+#'spheading' => "Special pages for all users",
+#'sqlislogged' => "Please note that all queries are logged.",
+#'sqlquery' => "Enter query",
+'statistics' => "Tölfræði",
+#'storedversion' => "Stored version",
+#'stubthreshold' => "Threshold for stub display",
+'subcategories' => "Undirflokkar",
+#'subcategorycount' => "There are $1 subcategories to this category.",
+#'subject' => "Subject/headline",
+#'subjectpage' => "View subject",
+#'successfulupload' => "Successful upload",
+'summary' => "Breytingar",
+'sysopspheading' => "Aðeins fyrir stjórnendur",
+#'sysoptext' => "The action you have requested can only be performed by users with \"sysop\" status. See $1.",
+#'sysoptitle' => "Sysop access required",
+#'tableform' => "table",
+'talk' => "Umræða",
+#'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.",
+'talkpage' => "Ræða um þessa síðu",
+#'talkpagemoved' => "The corresponding talk page was also moved.",
+'talkpagenotmoved' => "Samsvarandi spjallsíða var <strong>ekki</strong> færð.",
+#'talkpagetext' => "<!-- MediaWiki:talkpagetext -->",
+'textboxsize' => "Textbox dimensions",
+#'textmatches' => "Page text matches",
+#'thisisdeleted' => "View or restore $1?",
+#'thumbnail-more' => "Enlarge",
+'timezonelegend' => "Tímabelti",
+#'timezoneoffset' => "Offset",
+#'timezonetext' => "Enter number of hours your local time differs from server time (UTC).",
+#'titlematches' => "Article title matches",
+'toc' => "Efnisyfirlit",
+'toolbox' => "Verkfæri",
+#'tooltip-compareselectedversions' => "See the differences between the two selected versions of this page. [alt-v]",
+#'tooltip-minoredit' => "Mark this as a minor edit [alt-i]",
+#'tooltip-preview' => "Preview your changes, please use this before saving! [alt-p]",
+#'tooltip-save' => "Save your changes [alt-s]",
+#'tooltip-search' => "Search this wiki [alt-f]",
+#'uclinks' => "View the last $1 changes; view the last $2 days.",
+#'ucnote' => "Below are this user's last <b>$1</b> changes in the last <b>$2</b> days.",
+#'uctop' => " (top)",
+#'unblockip' => "Unblock user",
+#'unblockiptext' => "Use the form below to restore write access to a previously blocked IP address or username.",
+#'unblocklink' => "unblock",
+#'unblocklogentry' => "unblocked \"$1\"",
+#'undelete' => "Restore deleted page",
+#'undelete_short' => "Undelete $1 edits",
+#'undeletearticle' => "Restore deleted page",
+#'undeletebtn' => "Restore!",
+#'undeletedarticle' => "restored \"$1\"",
+'undeletedtext' => "[[$1]] has been successfully restored.
+See [[Wikipedia:Deletion_log]] for a record of recent deletions and restorations.",
+#'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.",
+#'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.",
+#'undeleterevision' => "Deleted revision as of $1",
+#'undeleterevisions' => "$1 revisions archived",
+#'unexpected' => "Unexpected value: \"$1\"=\"$2\".",
+#'unlockbtn' => "Unlock database",
+#'unlockconfirm' => "Yes, I really want to unlock the database.",
+#'unlockdb' => "Unlock database",
+#'unlockdbsuccesssub' => "Database lock removed",
+#'unlockdbsuccesstext' => "The database has been unlocked.",
+#'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.",
+'unprotect' => "Afvernda",
+#'unprotectcomment' => "Reason for unprotecting",
+#'unprotectedarticle' => "unprotected [[$1]]",
+#'unprotectsub' => "(Unprotecting \"$1\")",
+#'unprotectthispage' => "Unprotect this page",
+'unusedimages' => "Ónotaðar skrár",
+#'unusedimagestext' => "<p>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.",
+'unwatch' => "Afvakta",
+#'unwatchthispage' => "Stop watching",
+#'updated' => "(Updated)",
+'upload' => "Hlaða inn skrá",
+#'uploadbtn' => "Upload file",
+#'uploaddisabled' => "Sorry, uploading is disabled.",
+#'uploadedfiles' => "Uploaded files",
+#'uploadedimage' => "uploaded \"$1\"",
+#'uploaderror' => "Upload error",
+'uploadfile' => "Hlaða inn mynd, hljóðskrá, skjali o.s.f.",
+#'uploadlink' => "Upload images",
+#'uploadlog' => "upload log",
+#'uploadlogpage' => "Upload_log",
+#'uploadlogpagetext' => "Below is a list of the most recent file uploads. All times shown are server time (UTC). <ul> </ul> ",
+'uploadnologin' => "Óinnskráð(ur)",
+'uploadnologintext' => "You must be <a href=\"/wiki/Special:Userlogin\">logged in</a>
+to upload files.",
+'uploadtext' => "<strong>STOP!</strong> Before you upload here,
+make sure to read and follow the <a href=\"/wiki/Special:Image_use_policy\">image use policy</a>.
+<p>If a file with the name you are specifying already
+exists on the wiki, it'll be replaced without warning.
+So unless you mean to update a file, it's a good idea
+to first check if such a file exists.
+<p>To view or search previously uploaded images,
+go to the <a href=\"/wiki/Special:Imagelist\">list of uploaded images</a>.
+Uploads and deletions are logged on the <a href=\"/wiki/Wikipedia:Upload_log\">upload log</a>.
+</p><p>Use the form below to upload new image files for use in
+illustrating your pages.
+On most browsers, you will see a \"Browse...\" button, which will
+bring up your operating system's standard file open dialog.
+Choosing a file will fill the name of that file into the text
+field next to the button.
+You must also check the box affirming that you are not
+violating any copyrights by uploading the file.
+Press the \"Upload\" button to finish the upload.
+This may take some time if you have a slow internet connection.
+<p>The preferred formats are JPEG for photographic images, PNG
+for drawings and other iconic images, and OGG for sounds.
+Please name your files descriptively to avoid confusion.
+To include the image in a page, use a link in the form
+<b>[[Image:file.jpg]]</b> or <b>[[Image:file.png|alt text]]</b>
+or <b>[[Media:file.ogg]]</b> for sounds.
+<p>Please note that as with wiki pages, others may edit or
+delete your uploads if they think it serves the project, and
+you may be blocked from uploading if you abuse the system.",
+#'uploadwarning' => "Upload warning",
+#'usenewcategorypage' => "1
+#
+#Set first character to \"0\" to disable the new category page layout.",
+#'user_rights_set' => "<b>User rights for \"$1\" updated</b>",
+#'usercssjsyoucanpreview' => "<strong>Tip:</strong> 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!'''",
+#'userexists' => "The user name you entered is already in use. Please choose a different name.",
+#'userjspreview' => "'''Remember that you are only testing/previewing your user javascript, it has not yet been saved!'''",
+'userlogin' => "Innskrá",
+'userlogout' => "Útskrá",
+#'usermailererror' => "Mail object returned error: ",
+#'userpage' => "View user page",
+#'userstats' => "User statistics",
+#'userstatstext' => "There are '''$1''' registered users. '''$2''' of these are administrators (see $3).",
+'version' => "Útgáfa",
+#'viewcount' => "This page has been accessed $1 times.",
+#'viewprevnext' => "View ($1) ($2) ($3).",
+#'viewsource' => "View source",
+'viewtalkpage' => "Skoða umræðu",
+'wantedpages' => "Eftirsóttar síður",
+'watch' => "Vakta",
+'watchdetails' => "($1 síður vaktaðar fyrir utan spjallsíður;
+$2 samtals breyttar síður frá síðasta cutoff;
+$3...
+<a href='$4'>sýna og breyta heildarlistanum</a>.)",
+'watcheditlist' => "Þetta er listi yfir þínar vöktuðu síður raðað í
+stafrófsröð. Merktu við þær síður sem þú vilt fjarlægja
+af vaktlistanum og ýttu á 'fjarlægja merktar' takkan
+neðst á skjánum.",
+'watchlist' => "Vaktlisti",
+'watchlistcontains' => "à vaktlistanum eru $1 síður.",
+'watchlistsub' => "(fyrir notandan \"$1\")",
+'watchmethod-list' => "leita að breytingum í vöktuðum síðum",
+'watchmethod-recent' => "kanna hvort nýlegar breytingar innihalda vaktaðar síður",
+'watchnochange' => "Engri síðu á vaktlistanum þínum hefur verið breytt á tilgreindu tímabili.",
+'watchnologin' => "Óinnskráð(ur)",
+'watchnologintext' => "Þú verður að vera [[Special:Userlogin|skráður inn]] til að geta breytt vaktlistanum.",
+'watchthis' => "Vakta",
+'watchthispage' => "Vakta þessa síðu",
+'welcomecreation' => "<h2>Welcome, $1!</h2><p>Your account has been created.
+Don't forget to change your Wikipedia preferences.",
+'whatlinkshere' => "Hvað tengist hingað",
+#'whitelistacctext' => "To be allowed to create accounts in this Wiki you have to [[Special:Userlogin|log]] in and have the appropriate permissions.",
+'whitelistacctitle' => "Þér er óheimilt að skrá þig sem notanda.",
+'whitelistedittext' => "Þú verður að [[Special:Userlogin|skrá þig inn]] til að geta breytt síðum.",
+'whitelistedittitle' => "Þú verður að skrá þig inn til að geta breytt síðum.",
+'whitelistreadtext' => "Þú verður að [[Special:Userlogin|skrá þig inn]] til að lesa síður.",
+'whitelistreadtitle' => "Notandi verður að skrá sig inn til að geta lesið.",
+'wikipediapage' => "Sýna verkefnissíðu",
+'wikititlesuffix' => "Wikipedia, frjálsa alfræðiorðabókin",
+'wlnote' => "Að neðan eru síðustu <b>$1</b> breytingar síðustu <b>$2</b> klukkutíma.",
+'wlsaved' => "Þetta er vistuð útgáfa af vaktlistanum þínum.",
+'wlshowlast' => "Sýna síðustu $1 klukkutíma, $2 daga, $3",
+#'wrong_wfQuery_params' => "Incorrect parameters to wfQuery()<br /> Function: $1<br /> Query: $2 ",
+'wrongpassword' => "Uppgefið lykilorð er rangt. Vinsamlegast reyndu aftur.",
+#'yourdiff' => "Differences",
+'youremail' => "Tölvupóstfangið þitt*",
+'yourname' => "Notendanafn",
+'yournick' => "Gælunafnið þitt (fyrir undirskriftir)",
+'yourpassword' => "Lykilorð",
+'yourpasswordagain' => "Lykilorð (aftur)",
+'yourrealname' => "Fullt nafn þitt*",
+#'yourtext' => "Your text",
+# Math
+ 'mw_math_png' => "Alltaf birta PNG mynd",
+ 'mw_math_simple' => "HTML fyrir einfaldar jöfnur annars PNG",
+ 'mw_math_html' => "HTML ef hægt er, annars PNG",
+ 'mw_math_source' => "Sýna TeX jöfnu (fyrir textavafra)",
+ 'mw_math_modern' => "Mælt með fyrir nýja vafra",
+ 'mw_math_mathml' => 'MathML',
+);
+
+
+#--------------------------------------------------------------------------
+# Internationalisation code
+#--------------------------------------------------------------------------
+
+class LanguageIs extends LanguageUtf8 {
+
+ function getDefaultUserOptions () {
+ global $wgDefaultUserOptionsIs;
+ return $wgDefaultUserOptionsIs;
+ }
+
+ function getBookstoreList () {
+ global $wgBookstoreListIs;
+ return $wgBookstoreListIs;
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesIs;
+ return $wgNamespaceNamesIs;
+ }
+
+ function getNsText( $index ) {
+ global $wgNamespaceNamesIs;
+ return $wgNamespaceNamesIs[$index];
+ }
+
+ function getNsIndex( $text ) {
+ global $wgNamespaceNamesIs;
+
+ foreach ( $wgNamespaceNamesIs as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ return false;
+ }
+
+ function specialPage( $name ) {
+ return $this->getNsText( Namespace::getSpecial() ) . ":" . $name;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsIs;
+ return $wgQuickbarSettingsIs;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesIs;
+ return $wgSkinNamesIs;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsIs;
+ return $wgDateFormatsIs;
+ }
+
+ function getUserToggles() {
+ global $wgUserTogglesIs;
+ return $wgUserTogglesIs;
+ }
+
+ function getMonthName( $key )
+ {
+ global $wgMonthNamesIs;
+ return $wgMonthNamesIs[$key-1];
+ }
+
+ /* by default we just return base form */
+ function getMonthNameGen( $key )
+ {
+ global $wgMonthNamesIs;
+ return $wgMonthNamesIs[$key-1];
+ }
+
+ function getMonthAbbreviation( $key )
+ {
+ global $wgMonthAbbreviationsIs;
+ return $wgMonthAbbreviationsIs[$key-1];
+ }
+
+ function getWeekdayName( $key )
+ {
+ global $wgWeekdayNamesIs;
+ return $wgWeekdayNamesIs[$key-1];
+ }
+
+ function userAdjust( $ts )
+ {
+ global $wgUser, $wgLocalTZoffset;
+
+ $diff = $wgUser->getOption( "timecorrection" );
+ if ( ! is_numeric( $diff ) ) {
+ $diff = isset( $wgLocalTZoffset ) ? $wgLocalTZoffset : 0;
+ }
+ if ( 0 == $diff ) { return $ts; }
+
+ $t = mktime( ( (int)substr( $ts, 8, 2) ) + $diff,
+ (int)substr( $ts, 10, 2 ), (int)substr( $ts, 12, 2 ),
+ (int)substr( $ts, 4, 2 ), (int)substr( $ts, 6, 2 ),
+ (int)substr( $ts, 0, 4 ) );
+ return date( "YmdHis", $t );
+ }
+ function date( $ts, $adj = false )
+ {
+ 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->time( $ts, $adj ) . ", " . $this->date( $ts, $adj );
+ }
+
+ function rfc1123( $ts )
+ {
+ return date( "D, d M Y H:i:s T", $ts );
+ }
+
+ function getValidSpecialPages()
+ {
+ global $wgValidSpecialPagesIs;
+ return $wgValidSpecialPagesIs;
+ }
+
+ function getSysopSpecialPages()
+ {
+ global $wgSysopSpecialPagesIs;
+ return $wgSysopSpecialPagesIs;
+ }
+
+ function getDeveloperSpecialPages()
+ {
+ global $wgDeveloperSpecialPagesIs;
+ return $wgDeveloperSpecialPagesIs;
+ }
+
+ function getMessage( $key )
+ {
+ global $wgAllMessagesIs;
+ return $wgAllMessagesIs[$key];
+ }
+
+ function getAllMessages()
+ {
+ global $wgAllMessagesIs;
+ return $wgAllMessagesIs;
+ }
+
+ function getMathNames() {
+ global $wgMathNamesIs;
+ return $wgMathNamesIs;
+ }
+
+ function iconv( $in, $out, $string ) {
+ # For most languages, this is a wrapper for iconv
+ return iconv( $in, $out, $string );
+ }
+
+ function ucfirst( $string ) {
+ # For most languages, this is a wrapper for ucfirst()
+ return ucfirst( $string );
+ }
+
+ function checkTitleEncoding( $s ) {
+ global $wgInputEncoding;
+
+ # Check for UTF-8 URLs; Internet Explorer produces these if you
+ # type non-ASCII chars in the URL bar or follow unescaped links.
+ $ishigh = preg_match( '/[\x80-\xff]/', $s);
+ $isutf = ($ishigh ? preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s ) : true );
+
+ if( ($wgInputEncoding != "utf-8") and $ishigh and $isutf )
+ return iconv( "UTF-8", $wgInputEncoding, $s );
+
+ if( ($wgInputEncoding == "utf-8") and $ishigh and !$isutf )
+ return utf8_encode( $s );
+
+ # Other languages can safely leave this function, or replace
+ # it with one to detect and convert another legacy encoding.
+ return $s;
+ }
+
+ function stripForSearch( $in ) {
+ # Some languages have special punctuation to strip out
+ # or characters which need to be converted for MySQL's
+ # indexing to grok it correctly. Make such changes here.
+ return $in;
+ }
+
+
+ function setAltEncoding() {
+ # Some languages may have an alternate char encoding option
+ # (Esperanto X-coding, Japanese furigana conversion, etc)
+ # If 'altencoding' is checked in user prefs, this gives a
+ # chance to swap out the default encoding settings.
+ #global $wgInputEncoding, $wgOutputEncoding, $wgEditEncoding;
+ }
+
+ function recodeForEdit( $s ) {
+ # For some languages we'll want to explicitly specify
+ # which characters make it into the edit box raw
+ # or are converted in some way or another.
+ # Note that if wgOutputEncoding is different from
+ # wgInputEncoding, this text will be further converted
+ # to wgOutputEncoding.
+ global $wgInputEncoding, $wgEditEncoding;
+ if( $wgEditEncoding == "" or
+ $wgEditEncoding == $wgInputEncoding ) {
+ return $s;
+ } else {
+ return $this->iconv( $wgInputEncoding, $wgEditEncoding, $s );
+ }
+ }
+
+ function recodeInput( $s ) {
+ # Take the previous into account.
+ global $wgInputEncoding, $wgOutputEncoding, $wgEditEncoding;
+ if($wgEditEncoding != "") {
+ $enc = $wgEditEncoding;
+ } else {
+ $enc = $wgOutputEncoding;
+ }
+ if( $enc == $wgInputEncoding ) {
+ return $s;
+ } else {
+ return $this->iconv( $enc, $wgInputEncoding, $s );
+ }
+ }
+
+ # For right-to-left language support
+ function isRTL() { return false; }
+
+ function getMagicWords()
+ {
+ global $wgMagicWordsIs;
+ return $wgMagicWordsIs;
+ }
+
+ # Fill a MagicWord object with data from here
+ function getMagic( &$mw )
+ {
+ $raw = $this->getMagicWords(); # don't worry, it's reference counted not deep copy
+ $rawEntry = $raw[$mw->mId];
+ $mw->mCaseSensitive = $rawEntry[0];
+ $mw->mSynonyms = array_slice( $rawEntry, 1 );
+ }
+}
+
+# @include_once( "Language" . ucfirst( $wgLanguageCode ) . ".php" );
+
+?>
+
diff --git a/languages/LanguageIt.php b/languages/LanguageIt.php
index 7db0bbb9ea18..c34d36b5b732 100644
--- a/languages/LanguageIt.php
+++ b/languages/LanguageIt.php
@@ -8,22 +8,26 @@
# 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"
+
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsIt = array(
"Nessuno", "Fisso a sinistra", "Fisso a destra", "Fluttuante a sinistra"
@@ -37,7 +41,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgUserTogglesIt = array(
@@ -515,6 +520,7 @@ Segui questo link: ($2) per modificare la pagina di descrizione del file che hai
"imghistory" => "Storia di questa immagine",
"revertimg" => "ripr",
"deleteimg" => "canc",
+"deleteimgcompletely" => "canc",
"imghistlegend" => "Legenda: (cur) = immagine corrente, (canc) = cancella questa vecchia versione, (ripr) = ripristina questa vecchia versione come versione attuale.
<br><i>Clicca su una data per vedere tutte le immagini che sono state caricate in quella data </i>.",
"imagelinks" => "Link alle immagini",
diff --git a/languages/LanguageJa.php b/languages/LanguageJa.php
index adbdeafd1223..a40dbad22f83 100644
--- a/languages/LanguageJa.php
+++ b/languages/LanguageJa.php
@@ -10,25 +10,28 @@ require_once( "LanguageUtf8.php" );
# 隠匿ã—ã¾ã™ã€‚
#
/* private */ $wgNamespaceNamesJa = array(
- -2 => "Media",
- -1 => "特別" /* "Special" */,
- 0 => "",
- 1 => "ノート" /* "Talk" */,
- 2 => "利用者" /* "User" */,
- 3 => "利用者â€ä¼šè©±" /* "User_talk" */,
- 4 => "Wikipedia" /* "Wikipedia" */,
- 5 => "Wikipediaâ€ãƒŽãƒ¼ãƒˆ" /* "Wikipedia_talk" */,
- 6 => "ç”»åƒ" /* "Image" */,
- 7 => "ç”»åƒâ€ãƒŽãƒ¼ãƒˆ" /* "Image_talk" */,
- 8 => "MediaWiki",
- 9 => "MediaWikiノート",
- 10 => "Template",
- 11 => "Template_talk"
-
-);
+ NS_MEDIA => "Media", /* Media */
+ NS_SPECIAL => "特別", /* Special */
+ NS_MAIN => "",
+ NS_TALK => "ノート", /* Talk */
+ NS_USER => "利用者", /* User */
+ NS_USER_TALK => "利用者â€ä¼šè©±", /* User_talk */
+ NS_WIKIPEDIA => $wgMetaNamespace, /* Wikipedia */
+ NS_WIKIPEDIA_TALK => "{$wgMetaNamespace}â€ãƒŽãƒ¼ãƒˆ", /* Wikipedia_talk */
+ NS_IMAGE => "ç”»åƒ", /* Image */
+ NS_IMAGE_TALK => "ç”»åƒâ€ãƒŽãƒ¼ãƒˆ", /* Image_talk */
+ NS_MEDIAWIKI => "MediaWiki", /* MediaWiki */
+ NS_MEDIAWIKI_TALK => "MediaWikiâ€ãƒŽãƒ¼ãƒˆ", /* MediaWiki_talk */
+ NS_TEMPLATE => "Template", /* Template */
+ NS_TEMPLATE_TALK => "Templateâ€ãƒŽãƒ¼ãƒˆ", /* Template_talk */
+ NS_HELP => "ヘルプ", /* Help */
+ NS_HELP_TALK => "ヘルプâ€ãƒŽãƒ¼ãƒˆ", /* Help_talk */
+ NS_CATEGORY => "Category", /* Category */
+ NS_CATEGORY_TALK => "Categoryâ€ãƒŽãƒ¼ãƒˆ" /* Category_talk */
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsJa = array(
- "None", "Fixed left", "Fixed right", "Floating left"
+ "ãªã—", "左端", "å³ç«¯", "ウィンドウã®å·¦ä¸Šã«å›ºå®š"
);
/* private */ $wgSkinNamesJa = array(
@@ -39,22 +42,37 @@ require_once( "LanguageUtf8.php" );
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ 'myskin' => "MySkin"
+);
+
+/* private */ $wgMathNamesJa = array(
+ "常ã«PNG",
+ "シンプルãªæ•°å¼ã¯HTMLã€ãれ以外ã¯PNG",
+ "ã§ãã‚‹é™ã‚ŠHTMLã€ã•ã‚‚ãªã‘ã‚Œã°PNG",
+ "TeXã®ã¾ã¾ã«ã™ã‚‹ (テキストブラウザå‘ã‘)",
+ "å¯èƒ½ãªã‚‰ã°MathMLを使ㆠ(実験中ã®æ©Ÿèƒ½)"
);
/* private */ $wgUserTogglesJa = array(
- "hover" => "Show hoverbox over wiki links",
- "underline" => "Underline links",
- "highlightbroken" => "Highlight links to empty topics",
- "justify" => "Justify paragraphs",
- "hideminor" => "Hide minor edits in recent changes",
- "numberheadings" => "Auto-number headings",
- "showtoolbar" => "Show edit toolbar",
- "rememberpassword" => "Remember password across sessions",
- "editwidth" => "Edit box has full width",
- "editondblclick" => "Edit pages on double click (JavaScript)",
- "watchdefault" => "Watch new and modified articles",
- "minordefault" => "Mark all edits minor by default"
+ "hover" => "ウィキリンクã«ãƒ„ールãƒãƒƒãƒ—を表示ã™ã‚‹",
+ "underline" => "リンクã«ã‚¢ãƒ³ãƒ€ãƒ¼ãƒ©ã‚¤ãƒ³ã‚’ã¤ã‘ã‚‹",
+ "highlightbroken" => "未作æˆã®ãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯ã‚’ãƒã‚¤ãƒ©ã‚¤ãƒˆã™ã‚‹",
+ "justify" => "段è½ã‚’å‡ç­‰å‰²ã‚Šä»˜ã‘ã™ã‚‹",
+ "hideminor" => "最近更新ã—ãŸãƒšãƒ¼ã‚¸ã‹ã‚‰ç´°éƒ¨ã®ç·¨é›†ã‚’éš ã™",
+ "usenewrc" => "最近更新ã—ãŸãƒšãƒ¼ã‚¸ã‚’æ‹¡å¼µã™ã‚‹ (å…¨ã¦ã®ãƒ–ラウザã§ä½¿ãˆã¾ã›ã‚“)",
+ "numberheadings" => "見出ã—ã«ç•ªå·ã‚’振る",
+ "showtoolbar" => "編集ボタンを表示ã™ã‚‹",
+ "editondblclick" => "ダブルクリックã§ç·¨é›†ã™ã‚‹ (JavaScript)",
+ "editsection" => "セクション編集を有効ã«ã™ã‚‹",
+ "editsectiononrightclick" => "セクションタイトルã®å³ã‚¯ãƒªãƒƒã‚¯ã§ã‚»ã‚¯ã‚·ãƒ§ãƒ³ç·¨é›†ã‚’è¡Œãˆã‚‹ã‚ˆã†ã«ã™ã‚‹ (JavaScript)",
+ "showtoc" => "目次を表示ã™ã‚‹ (4ã¤ä»¥ä¸Šã®è¦‹å‡ºã—ãŒã‚るページ)",
+ "rememberpassword" => "セッションを越ãˆã¦ãƒ‘スワードを記憶ã™ã‚‹",
+ "editwidth" => "テキストボックスを横幅ã„ã£ã±ã„ã«è¡¨ç¤ºã™ã‚‹",
+ "watchdefault" => "編集ã—ãŸè¨˜äº‹ã‚’ウォッãƒãƒªã‚¹ãƒˆã«è¿½åŠ ã™ã‚‹",
+ "minordefault" => "細部ã®ç·¨é›†ã‚’デフォルトã§ãƒã‚§ãƒƒã‚¯ã™ã‚‹",
+ "previewontop" => "プレビューをテキストボックスã®å‰ã«é…ç½®ã™ã‚‹",
+ "nocache" => "ページをキャッシュã—ãªã„"
);
/* private */ $wgWeekdayNamesJa = array(
@@ -62,10 +80,13 @@ require_once( "LanguageUtf8.php" );
"金曜日", "土曜日"
);
-/* private */ $wgMonthNamesJa = array( # ???
- "一月", "二月", "三月", "四月", "五月", "六月",
- "七月", "八月", "ä¹æœˆ", "å月", "å一月",
- "å二月"
+/* private */ $wgWeekdayAbbreviationsJa = array(
+ "æ—¥", "月", "ç«", "æ°´", "木", "金", "土"
+);
+
+/* private */ $wgMonthNamesJa = array(
+ "1月", "2月", "3月", "4月", "5月", "6月",
+ "7月", "8月", "9月", "10月", "11月", "12月"
);
/* private */ $wgMonthAbbreviationsJa = array(
@@ -80,7 +101,6 @@ require_once( "LanguageUtf8.php" );
# "" (空文字列) ã¨ã„ã†èª¬æ˜Žã«ã™ã‚‹ã¨ã€Œç‰¹æ®Šé ã€é ã«æŽ²è¼‰ã—ã¾ã›ã‚“。
# ã“ã‚Œã¯å¹¾ã¤ã‹ (「targetedã€ã¨ã‹) ã«å¯¾ã—ã¦ã¯é©å½“ãªã“ã¨ã§ã™ã€‚
-
/* private */ $wgValidSpecialPagesJa = array(
"Userlogin" => "",
"Userlogout" => "",
@@ -133,17 +153,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 +176,7 @@ require_once( "LanguageUtf8.php" );
"currentevents" => "最近ã®å‡ºæ¥äº‹",
"errorpagetitle" => "エラー",
"returnto" => "$1 ã«æˆ»ã‚‹ã€‚",
-"fromwikipedia" => "出典: フリー百科事典『ウィキペディア(Wikipedia)ã€",
+"fromwikipedia" => "出典: フリー百科事典『ウィキペディア({{SITENAME}})ã€",
"whatlinkshere" => "ã“ã“ã«ãƒªãƒ³ã‚¯ã—ã¦ã„るページ",
"help" => "ヘルプ",
"search" => "検索",
@@ -174,7 +194,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 +203,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
#
@@ -201,7 +221,7 @@ require_once( "LanguageUtf8.php" );
"dberrortext" => "データベース検索ã®æ–‡æ³•ã‚¨ãƒ©ãƒ¼ã€‚
検索å•åˆã‚ã›ãŒé–“é•ã£ã¦ã„ã‚‹ã‹($5 ã‚’å‚ç…§),
ã‚ã‚‹ã„ã¯ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒã‚°ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
-最後ã«å®Ÿè¡Œã‚’試ã¿ãŸå•ã„åˆã‚ã›:
+最後ã«å®Ÿè¡Œã‚’試ã¿ãŸå•ã„åˆã‚ã›:
<blockquote><tt>$1</tt></blockquote>
from within function \"<tt>$2</tt>\".
MySQL returned error \"<tt>$3: $4</tt>\".",
@@ -209,10 +229,11 @@ MySQL returned error \"<tt>$3: $4</tt>\".",
"nodb" => "$1 ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’é¸æŠžã§ãã¾ã›ã‚“。",
"readonly" => "データベースã¯ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™",
"enterlockreason" => "ロックã™ã‚‹ç†ç”±ã‚’入力ã—ã¦ä¸‹ã•ã„。ロックãŒè§£é™¤ã•ã‚Œã‚‹ã®ãŒã„ã¤ã«ãªã‚‹ã‹ã®è¦‹ç©ã‚‚ã‚Šã«ã¤ã„ã¦ã‚‚è¿°ã¹ã¦ä¸‹ã•ã„。",
-"readonlytext" => "ウィキペディア・データベースã¯ç¾åœ¨ã€æ–°ã—ã„記事ã®è¿½åŠ ã‚„修正をå—ã‘付ã‘ãªã„「ロックã€çŠ¶æ…‹ã«ãªã£ã¦ã„ã¾ã™ã€‚ã“ã‚Œã¯ãŠãらãã¯å®šæœŸçš„ãªãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã®ãŸã‚ã§ã€ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹çµ‚了後ã¯æ­£å¸¸ãªçŠ¶æ…‹ã«å¾©å¸°ã—ã¾ã™ã€‚
+"readonlytext" => "ウィキペディア・データベースã¯ç¾åœ¨ã€æ–°ã—ã„記事ã®è¿½åŠ ã‚„修正をå—ã‘付ã‘ãªã„「ロックã€çŠ¶æ…‹ã«ãªã£ã¦ã„ã¾ã™ã€‚
+ã“ã‚Œã¯ãŠãらãã¯å®šæœŸçš„ãªãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã®ãŸã‚ã§ã€ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹çµ‚了後ã¯æ­£å¸¸ãªçŠ¶æ…‹ã«å¾©å¸°ã—ã¾ã™ã€‚
データベースをロックã—ãŸç®¡ç†è€…ã¯æ¬¡ã®ã‚ˆã†ãªèª¬æ˜Žã‚’ã—ã¦ã„ã¾ã™ï¼š
<p>$1
-<p>The Wikipedia database is currently locked to new
+<p>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:
@@ -230,7 +251,7 @@ that it should have found, named \"$1\".
"filedeleteerror" => "ファイル\"$1\"を削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚Could not delete file \"$1\".",
"filenotfound" => "ファイルを\"$1\"ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚Could not find file \"$1\".",
"unexpected" => "エラー:\"$1\" 㨠\"$2\" ãŒåŒã˜ã§ã™ã€‚Unexpected value: \"$1\"=\"$2\".",
-"formerror" => "エラー: フォームをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ Error: could not submit form",
+"formerror" => "エラー: フォームをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ Error: could not submit form",
"badarticleerror" => "ã“ã®å‹•ä½œã¯ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯ã¨ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。 This action cannot be performed on this page.",
"cannotdelete" => "指定ã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã€ã¾ãŸã¯ç”»åƒã‚’削除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ Could not delete the page or image specified.",
@@ -242,7 +263,7 @@ that it should have found, named \"$1\".
ウィキペディアを匿åã§ä½¿ã„続ã†ã“ã¨ãŒã§ãã¾ã™ã€‚
ã‚ã‚‹ã„ã¯ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦å…ƒã®ã€ã‚ã‚‹ã„ã¯åˆ¥ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ã—ã¦ä½¿ã†ã“ã¨ã‚‚ã§ãã¾ã™ã€‚
<P>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" => "<h2>$1 ã•ã‚“ã€ã‚ˆã†ã“ã!</h2><p>ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒã§ãã¾ã—ãŸã€‚
@@ -270,13 +291,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\" ã®ãƒ¡ãƒ¼ãƒ«ãƒ»ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“。",
@@ -300,7 +321,7 @@ again as the same or as a different user.\n",
"previewnote" => "ã“ã‚Œã¯ãƒ—レビューã§ã™ã€‚ã¾ã ä¿å­˜ã•ã‚Œã¦ã„ã¾ã›ã‚“!",
"previewconflict" => "ã“ã®ãƒ—レビューã¯ã€ä¸Šã®æ–‡ç« ç·¨é›†ã‚¨ãƒªã‚¢ã®æ–‡ç« ã‚’ä¿å­˜ã—ãŸå ´åˆã«
ã©ã†è¦‹ãˆã‚‹ã‚ˆã†ã«ãªã‚‹ã‹ã‚’示ã™ã‚‚ã®ã§ã™ã€‚
-<p>" /* "This preview reflects the text in the upper
+<p>" /* "This preview reflects the text in the upper
text editing area as it will appear if you choose to save." */,
"editing" => "Editing $1",
"editconflict" => "編集競åˆ: $1",
@@ -327,7 +348,7 @@ press \"Save page\".\n<p>" */,
revision of this page.
If you save it, any changes made since this revision will be lost.</strong>\n" */
"yourdiff" => "ã‚ãªãŸã®æ›´æ–°å†…容",
-"copyrightwarning" => "Wikipediaã«æŠ•ç¨¿ã•ã‚ŒãŸæ–‡æ›¸ã¯ã€ã™ã¹ã¦ GNU Free Documentation License ã«ã‚ˆã£ã¦ç™ºè¡Œã•ã‚ŒãŸã‚‚ã®ã¨ã¿ãªã•ã‚Œã¾ã™ã®ã§ã€ç•™æ„ã—ã¦ãã ã•ã„。
+"copyrightwarning" => "{{SITENAME}}ã«æŠ•ç¨¿ã•ã‚ŒãŸæ–‡æ›¸ã¯ã€ã™ã¹ã¦ GNU Free Documentation License ã«ã‚ˆã£ã¦ç™ºè¡Œã•ã‚ŒãŸã‚‚ã®ã¨ã¿ãªã•ã‚Œã¾ã™ã®ã§ã€ç•™æ„ã—ã¦ãã ã•ã„。
<p>(詳細㯠$1 ã‚’å‚ç…§, ã¾ãŸã€å‚考ã¾ã§ã«éžå…¬å¼æ—¥æœ¬èªžè¨³ã¯ &lt;http://www.opensource.jp/fdl/fdl.ja.html&gt; をå‚ç…§)。
<p>ã‚ãªãŸã®æ–‡ç« ãŒä»–人ã«ã‚ˆã£ã¦è‡ªç”±ã«ç·¨é›†ã€é…布ã•ã‚Œã‚‹ã“ã¨ã‚’望ã¾ãªã„å ´åˆã¯ã€æŠ•ç¨¿ã‚’控ãˆã¦ä¸‹ã•ã„。
<p>ã¾ãŸã€ã‚ãªãŸã®æŠ•ç¨¿ã™ã‚‹æ–‡ç« ã¯ã‚ãªãŸè‡ªèº«ã«ã‚ˆã£ã¦æ›¸ã‹ã‚ŒãŸã‚‚ã®ã§ã‚ã‚‹ã‹ã€ãƒ‘ブリック・ドメインã‹ãã‚Œã«é¡žã™ã‚‹è‡ªç”±ãªãƒªã‚½ãƒ¼ã‚¹ã‹ã‚‰ã®è¤‡è£½ã§ã‚ã‚‹ã“ã¨ã‚’ç´„æŸã—ã¦ä¸‹ã•ã„。
@@ -364,20 +385,23 @@ 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" => "å•ã„åˆã‚ã›ã‚’処ç†ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
ã“ã‚Œã¯ãŠãらãã€3文字未満ã®èªžã‚’検索ã—よã†ã¨ã—ãŸãŸã‚ã§ã™ãŒã€ã“ã‚Œã«ã¯ã¾ã å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。
-例ãˆã°ã€Œé­š and and 大ãã•ã€ã®ã‚ˆã†ã«ã€è¡¨ç¾ã‚’誤記ã—ã¦ã„ã‚‹ã®ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。" /* "We could not process your query.
+例ãˆã°ã€Œé­š and and 大ãã•ã€ã®ã‚ˆã†ã«ã€è¡¨ç¾ã‚’誤記ã—ã¦ã„ã‚‹ã®ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。"
+ /* "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" => "å•ã„åˆã‚ã›ã€Œ$1ã€ã¯ $2 ã®è¨˜äº‹ã®é¡ŒåŠã³ $3 ã®è¨˜äº‹ã®æœ¬æ–‡ã¨ä¸€è‡´ã—ã¾ã—ãŸã€‚" /* "The query \"$1\" matched $2 article titles
+"matchtotals" => "å•ã„åˆã‚ã›ã€Œ$1ã€ã¯ $2 ã®è¨˜äº‹ã®é¡ŒåŠã³ $3 ã®è¨˜äº‹ã®æœ¬æ–‡ã¨ä¸€è‡´ã—ã¾ã—ãŸã€‚"
+ /* "The query \"$1\" matched $2 article titles
and the text of $3 articles." */,
"titlematches" => "記事ã®é¡Œã¨ä¸€è‡´" /* "Article title matches" */,
"notitlematches" => "記事ã®é¡Œã¨ã¯ä¸€è‡´ã—ã¾ã›ã‚“ã§ã—ãŸ" /* "No article title matches" */,
@@ -387,23 +411,24 @@ and the text of $3 articles." */,
"nextn" => "次 $1" /* "next $1" */,
"viewprevnext" => "($1) ($2) ($3) を見る" /* "View ($1) ($2) ($3)." */,
"showingresults" => "$2 ã‹ã‚‰ã® $1 個ã®çµæžœã‚’次ã«ç¤ºã—ã¾ã™" /* "Showing below <b>$1</b> results starting with #<b>$2</b>." */,
-"nonefound" => "<strong>Note</strong>: 検索ãŒã†ã¾ãã„ã‹ãªã„ã®ã¯ã€ã€Œã‚ã‚‹ã€ã‚„「ã‹ã‚‰ã€ã®ã‚ˆã†ãªä¸€èˆ¬çš„ãªèªžã§ç´¢å¼•ä»˜ã‘ã•ã‚Œã¦ã„ãªã„ã¨ã‹ã€è¤‡æ•°ã®æ¤œç´¢èªžã‚’指定ã—ã¦ã„ã‚‹ (å…¨ã¦ã®æ¤œç´¢èªžã‚’å«ã‚€é ã ã‘ãŒçµæžœã«ç¤ºã•ã‚Œã¾ã™ã€‚) ã¨ã‹ã®ãŸã‚ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。" /* "<strong>Note</strong>: unsuccessful searches are
+"nonefound" => "<strong>Note</strong>: 検索ãŒã†ã¾ãã„ã‹ãªã„ã®ã¯ã€ã€Œã‚ã‚‹ã€ã‚„「ã‹ã‚‰ã€ã®ã‚ˆã†ãªä¸€èˆ¬çš„ãªèªžã§ç´¢å¼•ä»˜ã‘ã•ã‚Œã¦ã„ãªã„ã¨ã‹ã€
+複数ã®æ¤œç´¢èªžã‚’指定ã—ã¦ã„ã‚‹ (å…¨ã¦ã®æ¤œç´¢èªžã‚’å«ã‚€é ã ã‘ãŒçµæžœã«ç¤ºã•ã‚Œã¾ã™ã€‚) ã¨ã‹ã®ãŸã‚ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。"
+ /* "<strong>Note</strong>: unsuccessful searches are
often caused by searching for common words like \"have\" and \"from\",
which are not indexed, or by specifying more than one search term (only pages
containing all of the search terms will appear in the result)." */,
# Preferences page ユーザーオプション設定é 
#
-"preferences" => "オプション" /* "Preferences" */,
+"preferences" => "オプション" /* "Preferences" */,
"prefsnologin" => "ログインã—ã¦ã„ã¾ã›ã‚“" /* "Not logged in" */,
"prefsnologintext" => "ユーザーオプションを変更ã™ã‚‹ãŸã‚ã«ã¯ã€
-<a href=\"" .
- wfLocalUrl( "特別:Userlogin" ) . "\">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+<a href=\"{{localurle:Special:Userlogin}}\">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
/* "You must be <a href=\"" .
wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a>
to set user preferences." */,
"prefsreset" => "ユーザー設定ã¯åˆæœŸåŒ–ã•ã‚Œã¾ã—ãŸã€‚" /* "Preferences have been reset from storage." */,
-"qbsettings" => "クイックãƒãƒ¼è¨­å®š" /* "Quickbar settings" */,
+"qbsettings" => "クイックãƒãƒ¼è¨­å®š" /* "Quickbar settings" */,
"changepassword" => "パスワード変更" /* "Change password" */,
"skin" => "外装" /* "Skin" */,
"saveprefs" => "設定ã®ä¿å­˜" /* "Save preferences" */,
@@ -411,7 +436,7 @@ to set user preferences." */,
"oldpassword" => "å¤ã„パスワード" /* "Old password" */,
"newpassword" => "æ–°ã—ã„パスワード" /* "New password" */,
"retypenew" => "æ–°ã—ã„パスワードをå†å…¥åŠ›ã—ã¦ä¸‹ã•ã„" /* "Retype new password" */,
-"textboxsize" => "テキストボックスã®å¤§ãã•" /* "Textbox dimensions" */,
+"textboxsize" => "テキストボックスã®å¤§ãã•" /* "Editing" */,
"rows" => "縦" /* "Rows" */,
"columns" => "横" /* "Columns" */,
"searchresultshead" => "検索çµæžœã®è¡¨ç¤º" /* "Search result settings" */,
@@ -430,16 +455,17 @@ from server time (UTC)." */,
#
"recentchanges" => "最近更新ã—ãŸãƒšãƒ¼ã‚¸",
"recentchangestext" => "最近付ã‘加ãˆã‚‰ã‚ŒãŸå¤‰æ›´ã¯ã“ã®ãƒšãƒ¼ã‚¸ã§ç¢ºèªã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
-[[Wikipedia:æ–°è¦å‚加者ã®æ–¹ã€ã‚ˆã†ã“ã]]ï¼
+[[{{ns:4}}:æ–°è¦å‚加者ã®æ–¹ã€ã‚ˆã†ã“ã]]ï¼
以下ã®ãƒšãƒ¼ã‚¸ã‚‚å‚ç…§ã—ã¦ä¸‹ã•ã„:
[[wikipedia:ウィキペディア よãã‚る質å•é›†]],
-[[Wikipedia:ウィキペディアã®åŸºæœ¬æ–¹é‡ã¨ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³]]
-(特ã«[[Wikipedia:記事åã®ã¤ã‘æ–¹]],
-[[Wikipedia:中立的ãªè¦³ç‚¹]]),
-[[Wikipedia:ウィキペディアã§èµ·ã“ã—ãŒã¡ãªé–“é•ã„]].
+[[{{ns:4}}:ウィキペディアã®åŸºæœ¬æ–¹é‡ã¨ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³]]
+(特ã«[[{{ns:4}}:記事åã®ã¤ã‘æ–¹]],
+[[{{ns:4}}:中立的ãªè¦³ç‚¹]]),
+[[{{ns:4}}:ウィキペディアã§èµ·ã“ã—ãŒã¡ãªé–“é•ã„]].
-ウィキペディアãŒæˆåŠŸã™ã‚‹ãŸã‚ã«ã¯ã€ã‚ãªãŸã®æŠ•ç¨¿ã™ã‚‹å†…容ãŒä»–人ã®è‘—作権ãªã©ã«ã‚ˆã£ã¦æŸç¸›ã•ã‚Œã¦ã„ãªã„ã“ã¨ãŒã¨ã¦ã‚‚é‡è¦ã§ã™ã€‚[[Wikipedia:著作権]]
-法的責任å•é¡Œã¯ã€ãƒ—ロジェクトã«è‡´å‘½å‚·ã‚’与ãˆã‚‹ã“ã¨ã‚‚ã‚ã‚‹å•é¡Œã§ã™ã€‚他人ã®è‘—作物ãªã©ã‚’æµç”¨ã™ã‚‹ã“ã¨ã¯çµ¶å¯¾ã«é¿ã‘ã¦ãã ã•ã„。ã¾ãŸæ¬¡ã®ãƒšãƒ¼ã‚¸ã‚‚å‚ç…§ã—ã¦ä¸‹ã•ã„。[http://meta.wikipedia.org/wiki/Special:Recentchanges recent meta discussion]"
+ウィキペディアãŒæˆåŠŸã™ã‚‹ãŸã‚ã«ã¯ã€ã‚ãªãŸã®æŠ•ç¨¿ã™ã‚‹å†…容ãŒä»–人ã®è‘—作権ãªã©ã«ã‚ˆã£ã¦æŸç¸›ã•ã‚Œã¦ã„ãªã„ã“ã¨ãŒã¨ã¦ã‚‚é‡è¦ã§ã™ã€‚[[{{ns:4}}:著作権]]
+法的責任å•é¡Œã¯ã€ãƒ—ロジェクトã«è‡´å‘½å‚·ã‚’与ãˆã‚‹ã“ã¨ã‚‚ã‚ã‚‹å•é¡Œã§ã™ã€‚他人ã®è‘—作物ãªã©ã‚’æµç”¨ã™ã‚‹ã“ã¨ã¯çµ¶å¯¾ã«é¿ã‘ã¦ãã ã•ã„。
+ã¾ãŸæ¬¡ã®ãƒšãƒ¼ã‚¸ã‚‚å‚ç…§ã—ã¦ä¸‹ã•ã„。[http://meta.wikipedia.org/wiki/Special:Recentchanges recent meta discussion]"
/* Track the most recent changes to Wikipedia on this page.
[[Wikipedia:Welcome,_newcomers|Welcome, newcomers]]!
@@ -454,7 +480,8 @@ material restricted by others' [[wikipedia:Copyrights|copyrights]].
The legal liability could really hurt the project, so please don't do it.
See also the [http://meta.wikipedia.org/wiki/Special:Recentchanges recent meta discussion]. */,
"rcloaderr" => "最近ã®æ›´æ–°æƒ…報をダウンロード中" /* "Loading recent changes" */,
-"rcnote" => "以下ã¯æœ€è¿‘<strong>$2</strong>日間ã®<strong>$1</strong>件ã®æ›´æ–°ã§ã™ã€‚" /* "Below are the last <strong>$1</strong> changes in last <strong>$2</strong> days." */,
+"rcnote" => "以下ã¯æœ€è¿‘<strong>$2</strong>日間ã®<strong>$1</strong>件ã®æ›´æ–°ã§ã™ã€‚"
+ /* "Below are the last <strong>$1</strong> changes in last <strong>$2</strong> days." */,
# "rclinks" => "最近$2時間/$3日間ã®$1件分を表示ã™ã‚‹" /* "Show last $1 changes in last $2 hours / last $3 days" */,
"rclinks" => "最近$2日間ã®$1件分を表示ã™ã‚‹" /* "Show last $1 changes in last $2 days." */,
"rchide" => "in $4 form; $1 minor edits; $2 secondary namespaces; $3 multiple edits.",
@@ -475,24 +502,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" => "ユーザーオプションを変更ã™ã‚‹ãŸã‚ã«ã¯ã€
-<a href=\"" .
- wfLocalUrl( "特別:Userlogin" ) . "\">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+<a href=\"{{localurle:Special:Userlogin}}\">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
-You must be <a href=\"" .
- wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a>
+You must be <a href=\"{{localurle:Special:Userlogin}}\">logged in</a>
to upload files.",
"uploadfile" => "ファイルã®ã‚¢ãƒƒãƒ—ロード Upload file",
"uploaderror" => "アップロード エラー Upload error",
-"uploadtext" => "<strong>ã”注æ„ï¼</strong>
-ã“ã“ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロードã™ã‚‹å‰ã«ã€ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã®<a href=\"" .
-wfLocalUrlE( "Wikipedia:ç”»åƒåˆ©ç”¨ã®æ–¹é‡" ) . "\">ç”»åƒåˆ©ç”¨ã®æ–¹é‡</a>ã‚’
+"uploadtext" => "<strong>ã”注æ„ï¼</strong>
+ã“ã“ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロードã™ã‚‹å‰ã«ã€ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã®<a href={{localurle:Project:ç”»åƒåˆ©ç”¨ã®æ–¹é‡}}" .
+ "\">ç”»åƒåˆ©ç”¨ã®æ–¹é‡</a>ã‚’
よã読んã§ã€æ–¹é‡ã«åã™ã‚‹ã“ã¨ã®ãªã„よã†ã«ã—ã¦ä¸‹ã•ã„。.
<p>
ã“ã‚Œã¾ã§ã«ã‚¢ãƒƒãƒ—ロードã•ã‚ŒãŸã‚¤ãƒ¡ãƒ¼ã‚¸ã®ä¸€è¦§ã‚„検索ã«ã¯ã€
-<a href=\"" . wfLocalUrlE( "特別:Imagelist" ) .
-"\">ç”»åƒãƒªã‚¹ãƒˆ</a>ãŒä¾¿åˆ©ã§ã™ã€‚
-アップロードã¨å‰Šé™¤ã®è¨˜éŒ²ã¯<a href=\"" .
-wfLocalUrlE( "Wikipedia:Upload_log" ) . "\">ã«ã‚ã‚Šã¾ã™ã€‚</a>.
+<a href=\"{{localurle:Special:Imagelist}}\">ç”»åƒãƒªã‚¹ãƒˆ</a>ãŒä¾¿åˆ©ã§ã™ã€‚
+アップロードã¨å‰Šé™¤ã®è¨˜éŒ²ã¯<a href=\"{{localurle:Project:Upload_log}}\">ã«ã‚ã‚Šã¾ã™ã€‚</a>.
<p>記事ã«å¿…è¦ãªç”»åƒã‚’æ–°ã—ãアップロードã™ã‚‹å ´åˆã«ã¯ã€ä»¥ä¸‹ã®ãƒ•ã‚©ãƒ¼ãƒ ã‚’利用ã—ã¦ä¸‹ã•ã„。
ã»ã¨ã‚“ã©ã®ãƒ–ラウザーã§ã¯ã€\"Browse\"ã¨ã„ã†ãƒœã‚¿ãƒ³ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ãã®ãƒœã‚¿ãƒ³ã‚’押ã™ã¨ã€
@@ -512,7 +535,7 @@ wfLocalUrlE( "Wikipedia:Upload_log" ) . "\">ã«ã‚ã‚Šã¾ã™ã€‚</a>.
ç”»åƒã‚’記事ã«çµ„ã¿å…¥ã‚Œã‚‹ãŸã‚ã«ã¯ã€æ¬¡ã®ã‚ˆã†ãªãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã§ãƒªãƒ³ã‚¯ã‚’張りã¾ã™ã€‚
<b>[[ç”»åƒ:file.jpg]]</b> <b>[[ç”»åƒ:file.png|説明文]]</b>
-ã¾ãŸã€ã‚µã‚¦ãƒ³ãƒ‰ã«ã¯ <b>[[media:file.ogg]]</b> を用ã„ã¾ã™ã€‚
+ã¾ãŸã€ã‚µã‚¦ãƒ³ãƒ‰ã«ã¯ <b>[[{{ns:-2}}:file.ogg]]</b> を用ã„ã¾ã™ã€‚
<p>
ウィキペディアã®ä»–ã®ãƒšãƒ¼ã‚¸ã¨åŒã˜ãã€ã‚ãªãŸãŒã‚¢ãƒƒãƒ—ロードã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚‚ã€ã‚ˆã‚Š
よã„百科事典作æˆã®ãŸã‚ã«ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚ˆã£ã¦ç·¨é›†ã€å‰Šé™¤ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚
@@ -564,7 +587,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" => "アップロードã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«",
@@ -575,15 +598,16 @@ any copyrights." */,
"ignorewarning" => "警告を無視ã—ã€ä¿å­˜ã—ã¦ã—ã¾ã†" /* "Ignore warning and save file anyway." */,
"minlength" => "ファイルåã¯3文字以上ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚" /* "Image names must be at least three letters." */,
"badfilename" => "ファイルåã¯\"$1\"ã¸å¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚" /* "Image name has been changed to \"$1\"." */,
-"badfiletype" => "\".$1\" ã¯æŽ¨å¥¨ã•ã‚Œã¦ã„るファイルフォーマットã§ã¯ã‚ã‚Šã¾ã›ã‚“。" /*
+"badfiletype" => "\".$1\" ã¯æŽ¨å¥¨ã•ã‚Œã¦ã„るファイルフォーマットã§ã¯ã‚ã‚Šã¾ã›ã‚“。" /*
"\".$1\" is not a recommended image file format." */,
-"largefile" => "ファイルサイズã¯100キロãƒã‚¤ãƒˆä»¥ä¸‹ã«æŠ‘ãˆã‚‹ã“ã¨ãŒæŽ¨å¥¨ã•ã‚Œã¦ã„ã¾ã™ã€‚" /* It is recommended that images not exceed 100k in size." */,
+"largefile" => "ファイルサイズã¯100キロãƒã‚¤ãƒˆä»¥ä¸‹ã«æŠ‘ãˆã‚‹ã“ã¨ãŒæŽ¨å¥¨ã•ã‚Œã¦ã„ã¾ã™ã€‚"
+ /* It is recommended that images not exceed 100k in size." */,
"successfulupload" => "アップロードæˆåŠŸ" /* "Successful upload" */,
"fileuploaded" => "ファイル\"$1\ã¯ç„¡äº‹ã«ã‚¢ãƒƒãƒ—ロードã•ã‚Œã¾ã—ãŸã€‚
以下ã®ãƒªãƒ³ã‚¯($2)をクリックã—ã€ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¤ã„ã¦ã®æƒ…å ±ï¼å‡ºå…¸ã€è£½ä½œè€…や時期ã€
ãã®ä»–知ã£ã¦ã„る情報を書ã込んã§ä¸‹ã•ã„。
-" /* " "File \"$1\" uploaded successfully.
+" /* " "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." */,
@@ -610,6 +634,7 @@ created and by whom, and anything else you may know about it." */,
"imghistory" => "ç”»åƒã®å±¥æ­´",
"revertimg" => "差戻",
"deleteimg" => "削除",
+"deleteimgcompletely" => "削除",
"imghistlegend" => "凡例: (最新)=最新版ã®ç”»åƒ, (削除)=ã“ã®ç‰ˆã®ç”»åƒã‚’削除, (差戻)=ã“ã®ç‰ˆã®ç”»åƒã«å·®ã—戻ã™<br><b>アップロードã•ã‚ŒãŸç”»åƒã‚’見るã«ã¯æ—¥ä»˜ã‚’クリックã—ã¾ã™ã€‚</b>",
"imagelinks" => "リンク",
"linkstoimage" => "ã“ã®ç”»åƒã«ãƒªãƒ³ã‚¯ã—ã¦ã„るページã®ä¸€è¦§:",
@@ -620,7 +645,11 @@ created and by whom, and anything else you may know about it." */,
"statistics" => "アクセス統計",
"sitestats" => "サイト全体ã®çµ±è¨ˆ",
"userstats" => "ユーザー登録統計",
-"sitestatstext" => "<p>データベース内ã«ã¯ <b>$1</b> ページã®ãƒ‡ãƒ¼ã‚¿ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®æ•°å­—ã«ã¯ã€Œä¼šè©±ãƒšãƒ¼ã‚¸ã€ã‚„「Wikipedia関連ã®ãƒšãƒ¼ã‚¸ã€ã€ã€Œæ›¸ãã‹ã‘ã®ãƒšãƒ¼ã‚¸ã€ã€ã€Œãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã€ãªã©ã€è¨˜äº‹ã¨ã¯ã¿ãªã›ãªã„ページãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ã“れらを除ã„ãŸã€è¨˜äº‹ã¨ã¿ãªã•ã‚Œã‚‹ãƒšãƒ¼ã‚¸æ•°ã¯ç´„ <b>$2</b> ページã«ãªã‚Šã¾ã™ã€‚</p><p>ページã®ç·é–²è¦§å›žæ•°ã¯ <b>$3</b> 回ã§ã™ã€‚ã¾ãŸã€ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®æ›´æ–°(2002/06/20)以æ¥ã€<b>$4</b> 回ã®ç·¨é›†ãŒè¡Œã‚ã‚Œã¾ã—ãŸã€‚å¹³å‡ã™ã‚‹ã¨ã€ï¼‘ページã‚ãŸã‚Š <b>$5</b> 回ã®ç·¨é›†ãŒè¡Œã‚ã‚Œã€ï¼‘編集ã‚ãŸã‚Š <b>$6</b> 回閲覧ã•ã‚Œã¦ã„ã¾ã™ã€‚</p>",
+"sitestatstext" => "<p>データベース内ã«ã¯ <b>$1</b> ページã®ãƒ‡ãƒ¼ã‚¿ãŒã‚ã‚Šã¾ã™ã€‚
+ã“ã®æ•°å­—ã«ã¯ã€Œä¼šè©±ãƒšãƒ¼ã‚¸ã€ã‚„「{{SITENAME}}関連ã®ãƒšãƒ¼ã‚¸ã€ã€ã€Œæ›¸ãã‹ã‘ã®ãƒšãƒ¼ã‚¸ã€ã€ã€Œãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã€ãªã©ã€è¨˜äº‹ã¨ã¯ã¿ãªã›ãªã„ページãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚
+ã“れらを除ã„ãŸã€è¨˜äº‹ã¨ã¿ãªã•ã‚Œã‚‹ãƒšãƒ¼ã‚¸æ•°ã¯ç´„ <b>$2</b> ページã«ãªã‚Šã¾ã™ã€‚</p>
+<p>ページã®ç·é–²è¦§å›žæ•°ã¯ <b>$3</b> 回ã§ã™ã€‚ã¾ãŸã€ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®æ›´æ–°(2002/06/20)以æ¥ã€<b>$4</b> 回ã®ç·¨é›†ãŒè¡Œã‚ã‚Œã¾ã—ãŸã€‚
+å¹³å‡ã™ã‚‹ã¨ã€ï¼‘ページã‚ãŸã‚Š <b>$5</b> 回ã®ç·¨é›†ãŒè¡Œã‚ã‚Œã€ï¼‘編集ã‚ãŸã‚Š <b>$6</b> 回閲覧ã•ã‚Œã¦ã„ã¾ã™ã€‚</p>",
"userstatstext" => "登録済ã¿ã®åˆ©ç”¨è€…㯠<b>$1</b> 人ã§ã€å†… <b>$2</b> 人ãŒç®¡ç†è€…権é™ã‚’æŒã£ã¦ã„ã¾ã™ã€‚($3ã‚’å‚ç…§)",
# Miscellaneous special pages
@@ -647,7 +676,8 @@ created and by whom, and anything else you may know about it." */,
"debug" => "デãƒãƒƒã‚° (debug)",
"newpages" => "æ–°ã—ã„ページ",
"movethispage" => "ã“ã®ãƒšãƒ¼ã‚¸ã‚’移動ã™ã‚‹",
-"unusedimagestext" => "<p>ã”注æ„:他言語版ã®ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã‚‚å«ã‚ã€ä»–ã®ã‚¦ã‚§ãƒ–サイトãŒURLを直接用ã„ã¦ç”»åƒã«ãƒªãƒ³ã‚¯ã—ã¦ã„ã‚‹å ´åˆã‚‚ã‚ã‚Šã¾ã™ã€‚以下ã®ç”»åƒä¸€è¦§ã«ã¯ã€ãã®ã‚ˆã†ãªå½¢ã§åˆ©ç”¨ã•ã‚Œã¦ã„ã‚‹ç”»åƒãŒå«ã¾ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚",
+"unusedimagestext" => "<p>ã”注æ„:他言語版ã®ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã‚‚å«ã‚ã€ä»–ã®ã‚¦ã‚§ãƒ–サイトãŒURLを直接用ã„ã¦ç”»åƒã«ãƒªãƒ³ã‚¯ã—ã¦ã„ã‚‹å ´åˆã‚‚ã‚ã‚Šã¾ã™ã€‚
+以下ã®ç”»åƒä¸€è¦§ã«ã¯ã€ãã®ã‚ˆã†ãªå½¢ã§åˆ©ç”¨ã•ã‚Œã¦ã„ã‚‹ç”»åƒãŒå«ã¾ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚",
"booksources" => "文献資料",
"booksourcetext" => "以下ã®ãƒªã‚¹ãƒˆã¯ã€æ–°æœ¬ã€å¤æœ¬ãªã©ã‚’販売ã—ã¦ã„る外部サイトã¸ã®ãƒªãƒ³ã‚¯ã§ã™ã€‚
ã‚ãªãŸãŒãŠæŽ¢ã—ã®æœ¬ã«ã¤ã„ã¦ã€æ›´ã«è©³ã—ã„情報ãŒæä¾›ã•ã‚Œã¦ã„ã‚‹å ´åˆã‚‚ã‚ã‚Šã¾ã™ï½¡
@@ -657,11 +687,9 @@ created and by whom, and anything else you may know about it." */,
#
"mailnologin" => "é€ä¿¡å…ˆã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã‚ã‚Šã¾ã›ã‚“。" /* No send address"*/,
"mailnologintext" => "ログインã—ã¦ã„ã¾ã›ã‚“。メールをé€ä¿¡ã™ã‚‹ãŸã‚ã«ã¯ã€
-ã‚ãªãŸã®é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’<a href=\"" .
- wfLocalUrl( "Special:ユーザーオプション" ) . "\">ユーザーオプション</a>
+ã‚ãªãŸã®é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’<a href=\"{{localurle:Special:Userlogin}}\">ユーザーオプション</a>
ã§æŒ‡å®šã—ã€
-<a href=\"" .
- wfLocalUrl( "特別:Userlogin" ) . "\">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+<a href=\"{{localurle:Special:Userlogin\">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
/* You must be <a href=\"" .
wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a>
and have a valid e-mail address in your <a href=\"" .
@@ -698,19 +726,17 @@ or has chosen not to receive e-mail from other users." */,
"nowatchlist" => "ã‚ãªãŸã®ã‚¦ã‚©ãƒƒãƒãƒªã‚¹ãƒˆã¯ç©ºã§ã™ã€‚" /* "You have no items on your watchlist." */,
"watchnologin" => "ログインã—ã¦ã„ã¾ã›ã‚“" /* "Not logged in" */,
"watchnologintext" => "ウォッãƒãƒªã‚¹ãƒˆã‚’変更ã™ã‚‹ãŸã‚ã«ã¯ã€
-<a href=\"" .
- wfLocalUrl( "特別:Userlogin" ) . "\">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
+<a href=\"{{localurle:Special:Userlogin}}\">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚"
/* "You must be <a href=\"" .
wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a>
to modify your watchlist." */,
"addedwatch" => "ウォッãƒãƒªã‚¹ãƒˆã«åŠ ãˆã¾ã—ãŸ" /* "Added to watchlist" */,
"addedwatchtext" => "ページ\"$1\" ã‚’ã‚ãªãŸã®
-<a href=\"" .
- wfLocalUrl( "特別:Watchlist" ) . "\">ウォッãƒãƒªã‚¹ãƒˆ</a>
+<a href=\"{{localurle:Special:Watchlist}}\">ウォッãƒãƒªã‚¹ãƒˆ</a>
ã«è¿½åŠ ã—ã¾ã—ãŸã€‚
ã“ã®ãƒšãƒ¼ã‚¸ã¨ã€ä»˜å±žã®ãƒŽãƒ¼ãƒˆã®ãƒšãƒ¼ã‚¸ã«å¤‰æ›´ãŒã‚ã£ãŸéš›ã«ã¯ãれをウォッãƒãƒªã‚¹ãƒˆã§
知るã“ã¨ãŒã§ãã¾ã™ã€‚ã¾ãŸã€
-<a href=\"" . wfLocalUrl( "特別:Recentchanges" ) . "\">最近更新ã—ãŸãƒšãƒ¼ã‚¸</a> ã§ã¯
+<a href=\"{{localurle:Special:Recentchanges}}\">最近更新ã—ãŸãƒšãƒ¼ã‚¸</a> ã§ã¯
ウォッãƒãƒªã‚¹ãƒˆã«å«ã¾ã‚Œã¦ã„るページã¯<b>ボールド体</b>ã§è¡¨ç¤ºã•ã‚Œã€è¦‹ã¤ã‘ã‚„ã™ã
ãªã‚Šã¾ã™ã€‚</p>
@@ -722,7 +748,7 @@ to modify your watchlist." */,
Future changes to this page and its associated Talk page will be listed there,
and the page will appear <b>bolded</b> in the <a href=\"" .
wfLocalUrl( "Special:Recentchanges" ) . "\">list of recent changes</a> to
-make it easier to pick out.</p>
+make it easier to pick out.</p>
<p>If you want to remove the page from your watchlist later, click \"Stop watching\" in the sidebar." */
@@ -741,13 +767,13 @@ make it easier to pick out.</p>
"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.
@@ -772,7 +798,8 @@ All times shown are server time (UTC).
"contributions" => "ユーザーã®æŠ•ç¨¿è¨˜éŒ²",
"contribsub" => "ユーザーå:$1",
"nocontribs" => "ユーザーã®æŠ•ç¨¿è¨˜éŒ²ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚",
-"ucnote" => "以下ã«ç¤ºã™ã®ãŒéŽåŽ»<b>$2</b>日間ã«ãŠã‘ã‚‹ã€æœ€å¤§<b>$1</b>件ã®æŠ•ç¨¿ãƒ»ç·¨é›†ã§ã™ã€‚" /*Below are this user's last <b>$1</b> changes in the last <b>$2</b> days."*/,
+"ucnote" => "以下ã«ç¤ºã™ã®ãŒéŽåŽ»<b>$2</b>日間ã«ãŠã‘ã‚‹ã€æœ€å¤§<b>$1</b>件ã®æŠ•ç¨¿ãƒ»ç·¨é›†ã§ã™ã€‚"
+ /*Below are this user's last <b>$1</b> changes in the last <b>$2</b> days."*/,
"uclinks" => "$1 件ã®æŠ•ç¨¿ãƒ»ç·¨é›†ã‚’見る。; $2日間分ã®æŠ•ç¨¿ãƒ»ç·¨é›†ã‚’見る。
View the last $1 changes; view the last $2 days.",
@@ -794,7 +821,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 +863,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.
<br>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 +905,7 @@ proceeding." */,
"movearticle" => "ページã®ç§»å‹•",
"movenologin" => "ログインã—ã¦ã„ã¾ã›ã‚“",
"movenologintext" => "ã“ã®æ©Ÿèƒ½ã‚’利用ã™ã‚‹ãŸã‚ã«ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ç™»éŒ²ã‚’ã—ã¦ã€
-<a href=\"" .
- wfLocalUrl( "特別:Userlogin" ) . "\">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒ
+<a href=\"{{localurle:Special:Userlogin}}\">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒ
ã‚ã‚Šã¾ã™ã€‚",
"newtitle" => "æ–°ã—ã„ページã¸" /* "To new title" */,
"movepagebtn" => "ページを移動" /* "Move page" */,
@@ -926,6 +952,10 @@ class LanguageJa extends LanguageUtf8 {
return $wgSkinNamesJa;
}
+ function getMathNames() {
+ global $wgMathNamesJa;
+ return $wgMathNamesJa;
+ }
function getUserToggles() {
global $wgUserTogglesJa;
@@ -951,14 +981,20 @@ class LanguageJa extends LanguageUtf8 {
}
# Inherit default userAdjust()
-
+
function date( $ts, $adj = false )
{
+ global $wgWeekdayAbbreviationsJa;
if ( $adj ) { $ts = $this->userAdjust( $ts ); }
+ $x = getdate(mktime(( (int)substr( $ts, 8, 2) ) + $diff,
+ (int)substr( $ts, 10, 2 ), (int)substr( $ts, 12, 2 ),
+ (int)substr( $ts, 4, 2 ), (int)substr( $ts, 6, 2 ),
+ (int)substr( $ts, 0, 4 )));
$d = substr( $ts, 0, 4 ) . "å¹´" .
- $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) .
- (0 + substr( $ts, 6, 2 )) . "æ—¥";
+ $this->getMonthAbbreviation( substr( $ts, 4, 2 ) ) .
+ (0 + substr( $ts, 6, 2 )) . "æ—¥ (" .
+ $wgWeekdayAbbreviationsJa[$x["wday"]] . ")";
return $d;
}
@@ -972,7 +1008,7 @@ class LanguageJa extends LanguageUtf8 {
function timeanddate( $ts, $adj = false )
{
- return $this->time( $ts, $adj ) . " " . $this->date( $ts, $adj );
+ return $this->date( $ts, $adj ) . " " . $this->time( $ts, $adj );
}
# Inherit default rfc1123()
@@ -998,7 +1034,7 @@ class LanguageJa extends LanguageUtf8 {
function getMessage( $key )
{
global $wgAllMessagesJa;
- if(array_key_exists($key, $wgAllMessagesJa))
+ if(array_key_exists($key, $wgAllMessagesJa))
return $wgAllMessagesJa[$key];
else
return Language::getMessage($key);
diff --git a/languages/LanguageKo.php b/languages/LanguageKo.php
index 3f320116704d..a9b2d9faa7ff 100644
--- a/languages/LanguageKo.php
+++ b/languages/LanguageKo.php
@@ -13,8 +13,8 @@ require_once( "LanguageUtf8.php" );
1 => "토론", # Talk
2 => "사용ìž", # User
3 => "사용ìží† ë¡ ", # User_talk
- 4 => "위키백과", # Wikipedia
- 5 => "위키백과토론",# Wikipedia_talk
+ 4 => $wgMetaNamespace, # Wikipedia
+ 5 => "{$wgMetaNamespace}토론",# Wikipedia_talk
6 => "그림", # Image
7 => "그림토론" ,# Image_talk
8 => "MediaWiki",
@@ -22,7 +22,7 @@ require_once( "LanguageUtf8.php" );
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
# I always compare this file with japanese file, when I'm confused.
# And DefaultUserOption isn't there in japanese one. What's
@@ -47,7 +47,8 @@ require_once( "LanguageUtf8.php" );
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgUserTogglesKo = array(
@@ -167,17 +168,17 @@ require_once( "LanguageUtf8.php" );
#
"mainpage" => "대문",
"about" => "소개",
-"aboutwikipedia" => "위키백과란",
-"aboutpage" => "위키백과:소개",
+"aboutwikipedia" => "{{SITENAME}}란",
+"aboutpage" => "{{ns:4}}:소개",
"help" => "ë„움ë§",
-"helppage" => "위키백과:ë„움ë§",
-"wikititlesuffix" => "위키백과",
+"helppage" => "{{ns:4}}:ë„움ë§",
+"wikititlesuffix" => "{{SITENAME}}",
"bugreports" => "벌레 발견",
-"bugreportspage" => "위키백과:벌레_발견",
+"bugreportspage" => "{{ns:4}}:벌레_발견",
"faq" => "잦ì€ì§ˆë¬¸(FAQ)",
-"faqpage" => "위키백과:잦ì€ì§ˆë¬¸(FAQ)",
+"faqpage" => "{{ns:4}}:잦ì€ì§ˆë¬¸(FAQ)",
"edithelp" => "편집 ë„움ë§",
-"edithelppage" => "위키백과:문서_편집_방법",
+"edithelppage" => "{{ns:4}}:문서_편집_방법",
"cancel" => "취소",
"qbfind" => "찾기",
@@ -197,7 +198,7 @@ require_once( "LanguageUtf8.php" );
"currentevents" => "ìš”ì¦˜ì˜ í™”ì œ",
"errorpagetitle" => "오류",
"returnto" => "$1(으)ë¡œ ëŒì•„가기.",
-"fromwikipedia" => "위키백과, 우리 모ë‘ì˜ ë°±ê³¼ì‚¬ì „.",
+"fromwikipedia" => "{{SITENAME}}, 우리 모ë‘ì˜ ë°±ê³¼ì‚¬ì „.",
"whatlinkshere" => "여길 가리키는 문서",
"help" => "ë„움ë§",
"search" => "찾기",
@@ -216,7 +217,7 @@ require_once( "LanguageUtf8.php" );
"viewcount" => "ì´ ë¬¸ì„œëŠ” ì´ $1번 ì½í˜”습니다.",
"printsubtitle" => "(http://www.wikipedia.orgì—ì„œ)",
"protectedpage" => "보호ë˜ëŠ” 문서",
-"administrators" => "위키백과:관리ìž",
+"administrators" => "{{ns:4}}:관리ìž",
"sysoptitle" => "Sysop 권한 필요",
"sysoptext" => "해당 actionì€ \"Sysop\"만 실행할 수 있습니다.
참조 $1.",
@@ -226,17 +227,17 @@ require_once( "LanguageUtf8.php" );
"nbytes" => "$1 ë°”ì´íŠ¸",
"go" => "가기",
"ok" => "확ì¸",
-"sitetitle" => "위키백과",
+"sitetitle" => "{{SITENAME}}",
"sitesubtitle" => "우리 모ë‘ì˜ ë°±ê³¼ì‚¬ì „",
"retrievedfrom" => "\"$1\"ì—ì„œ",
# Main script and global functions
#
"nosuchaction" => "그런 actionì€ ì—†ìŠµë‹ˆë‹¤.",
-"nosuchactiontext" => "위키백과 무른모는 URLë¡œ 주어진 actionì„
+"nosuchactiontext" => "{{SITENAME}} 무른모는 URLë¡œ 주어진 actionì„
모릅니다.",
"nosuchspecialpage" => "틀린 특수기능",
-"nospecialpagetext" => "위키백과는 요청한 특수기능ì„
+"nospecialpagetext" => "{{SITENAME}}는 요청한 특수기능ì„
모릅니다.",
# General errors
@@ -278,8 +279,8 @@ Please report this to an administrator, making note of the URL.",
# Login and logout pages
#
"logouttitle" => "나옴",
-"logouttext" => "위키백과ì—ì„œ 나왔습니다.
-ì´ëŒ€ë¡œ ì´ë¦„ì—†ì´ ìœ„í‚¤ë°±ê³¼ë¥¼ ì´ìš©í•˜ê±°ë‚˜, 방금 ì‚¬ìš©í–ˆë˜ ë˜ì´ë¦„, í˜¹ì€ ë‹¤ë¥¸ ë˜ì´ë¦„으로 들어가서 ì´ìš©í•˜ì„¸ìš”.\n",
+"logouttext" => "{{SITENAME}}ì—ì„œ 나왔습니다.
+ì´ëŒ€ë¡œ ì´ë¦„ì—†ì´ {{SITENAME}}를 ì´ìš©í•˜ê±°ë‚˜, 방금 ì‚¬ìš©í–ˆë˜ ë˜ì´ë¦„, í˜¹ì€ ë‹¤ë¥¸ ë˜ì´ë¦„으로 들어가서 ì´ìš©í•˜ì„¸ìš”.\n",
"welcomecreation" => "<h2>$1 님, 환ì˜í•©ë‹ˆë‹¤!</h2><p>ë˜ì´ë¦„ì´ ë§Œë“¤ì–´ 졌습니다.
ê°œì¸ ë§žì¶¤ì—ì„œ ìžìž˜í•œ í™˜ê²½ë“¤ì„ ë°”ê¾¸ì–´ 보세요.",
@@ -306,16 +307,16 @@ Please report this to an administrator, making note of the URL.",
"loginerror" => "들어가기 오류",
"noname" => "ë˜ì´ë¦„ì´ í‹€ë¦½ë‹ˆë‹¤.",
"loginsuccesstitle" => "들어가기 성공",
-"loginsuccess" => "\"$1\" ìœ„í‚¤ë°±ê³¼ì— ë“¤ì–´ì™”ìŠµë‹ˆë‹¤.",
+"loginsuccess" => "\"$1\" {{SITENAME}}ì— ë“¤ì–´ì™”ìŠµë‹ˆë‹¤.",
"nosuchuser" => "\"$1\"란 ë˜ì´ë¦„ì€ ì—†ìŠµë‹ˆë‹¤.".
"ì² ìžê°€ 맞는지 확ì¸í•˜ê³ , ì•„ì§ ë˜ì´ë¦„ì´ ì—†ë‹¤ë©´, 아래를 채워 ë˜ì´ë¦„ì„ ìƒˆë¡œì´ ë§Œë“œì„¸ìš”.",
"wrongpassword" => "암호가 틀립니다. 다시 ì‹œë„하세요.",
"mailmypassword" => "새 암호를 누리편지로 보냅니다.",
-"passwordremindertitle" => "위키백과ì—ì„œ 보내는 새 암호",
+"passwordremindertitle" => "{{SITENAME}}ì—ì„œ 보내는 새 암호",
"passwordremindertext" => "누군가가 (IP $1 ì„ ì‚¬ìš©í–ˆë˜, ì•„ë§ˆë„ ë‹¹ì‹ ì´)
-새 위키백과 암호를 보내달ë¼ê³  부íƒí–ˆìŠµë‹ˆë‹¤.
+새 {{SITENAME}} 암호를 보내달ë¼ê³  부íƒí–ˆìŠµë‹ˆë‹¤.
ë˜ì´ë¦„ \"$2\"ì˜ ì•”í˜¸ëŠ” ì´ì œ \"$3\"입니다.
-새 암호로 ìœ„í‚¤ë°±ê³¼ì— ë“¤ì–´ì™€ì„œ, 암호를 바꾸세요.",
+새 암호로 {{SITENAME}}ì— ë“¤ì–´ì™€ì„œ, 암호를 바꾸세요.",
"noemail" => "ë˜ì´ë¦„ \"$1\"ì— ë”¸ë¦° 누리편지주소정보가 없습니다.",
"passwordsent" => "\"$1\"ì˜ ìƒˆ 암호를 누리편지로 보냈습니다.
암호를 받고 다시 들어오세요.",
@@ -356,7 +357,7 @@ text editing area as it will appear if you choose to save.",
"editingold" => "<strong>경고: 지금 옛날 ë²„ì ¼ì˜ ë¬¸ì„œë¥¼ 고치고 있습니다.
만약, 지금 여기서 ì €ìž¥ì„ í•˜ë©´, ê·¸ ë•Œ ì´í›„ì˜ ëª¨ë“  ë²„ì ¼ì„ ìžƒê²Œ ë©ë‹ˆë‹¤.</strong>\n",
"yourdiff" => "ì°¨ì´",
-"copyrightwarning" => "ìœ„í‚¤ë°±ê³¼ì— ë‹¹ì‹ ì´ ê¸°ì—¬í•œ ê²ƒì€ ëª¨ë‘ GNU ìžìœ  문서 사용허가서(GFDL)
+"copyrightwarning" => "{{SITENAME}}ì— ë‹¹ì‹ ì´ ê¸°ì—¬í•œ ê²ƒì€ ëª¨ë‘ GNU ìžìœ  문서 사용허가서(GFDL)
($1참조)ì— ë”°ë¼ ë°°í¬ë©ë‹ˆë‹¤.
ë‹¹ì‹ ì´ ì¨ ë„£ì€ ë‚´ìš©ì´ ì œí•œì—†ì´ ê³ ì³ì§€ê³ , 재배í¬ë˜ëŠ” ê²ƒì´ ì‹«ë‹¤ë©´, 저장하지 마십시오.ì— ë°˜ëŒ€í•  ë•Œì—는, ì—¬ê¸°ì— ì“°ì§€ 마시길 ë°”ëžë‹ˆë‹¤.<br>
ë˜í•œ, 여기 ì¨ ë„£ì€ ë‚´ìš©ì„ ìŠ¤ìŠ¤ë¡œ ì¼ìŒì„, í˜¹ì€ ëª¨ë‘ì—게 ê³µê°œëœ ìžë£Œì—ì„œ 빌어왔ìŒì„
@@ -391,9 +392,9 @@ text editing area as it will appear if you choose to save.",
# Search results
#
"searchresults" => "찾아본 결과",
-"searchhelppage" => "위키백과:찾기",
-"searchingwikipedia" => "위키백과 찾기",
-"searchresulttext" => "위키백과 ì°¾ê¸°ì— ëŒ€í•´ ìžì„¸í•œ 정보는 $1 를 보세요.",
+"searchhelppage" => "{{ns:4}}:찾기",
+"searchingwikipedia" => "{{SITENAME}} 찾기",
+"searchresulttext" => "{{SITENAME}} ì°¾ê¸°ì— ëŒ€í•´ ìžì„¸í•œ 정보는 $1 를 보세요.",
"searchquery" => "ì—´ì‡ ë§ \"$1\"",
"badquery" => "좋지 ì•Šì€ ì—´ì‡ ë§",
@@ -442,8 +443,7 @@ $2 List redirects &nbsp; Search for $3 $9",
#
"preferences" => "ê°œì¸ ë§žì¶¤",
"prefsnologin" => "나와 있습니다.",
-"prefsnologintext" => "<a href=\"" .
- wfLocalUrl( "특수기능:Userlogin" ) . "\">들어와</a> ìžˆì„ ë•Œì—만,
+"prefsnologintext" => "<a href=\"{{localurle:Special:Userlogin}}\">들어와</a> ìžˆì„ ë•Œì—만,
# Special:Userlogin => 특수기능:들어가기 ê°œì¸ í™˜ê²½ì„ ë§žì¶œ 수 있습니다.",
"prefslogintext" => "ë‹¹ì‹ ì€ \"$1\", 맞죠?
ë‹¹ì‹ ì˜ ë‚´ë¶€ ID 번호는 $2입니다.",
@@ -476,15 +476,15 @@ $2 List redirects &nbsp; Search for $3 $9",
"recentchanges" => "최근 바뀜",
"recentchangestext" => "아래 ë‚˜ì—´ëœ ë¬¸ì„œë“¤ì´ ìµœê·¼ì— ë°”ë€Œì—ˆìŠµë‹ˆë‹¤.
-[[위키백과:새내기_환ì˜|새내기, 환ì˜í•©ë‹ˆë‹¤]]!
-ìƒˆë‚´ê¸°ë“¤ì€ ë‹¤ìŒ ë¬¸ì„œë¥¼ ì½ì–´ 보세요.: [[위키백과:잦ì€ì§ˆë¬¸(FAQ)|위키백과 잦ì€ì§ˆë¬¸(FAQ)]],
-[[위키백과:정책과 지침|위키백과 정책]]
-(특별히 [[위키백과:제목달기 규칙|제목달기 규칙]],
-[[위키백과:중립ì ì¸ ì‹œê°|중립ì ì¸ ì‹œê°]]),
-그리고 [[위키백과:범하기_쉬운_실수|범하기 쉬운 실수]].
+[[{{ns:4}}:새내기_환ì˜|새내기, 환ì˜í•©ë‹ˆë‹¤]]!
+ìƒˆë‚´ê¸°ë“¤ì€ ë‹¤ìŒ ë¬¸ì„œë¥¼ ì½ì–´ 보세요.: [[{{ns:4}}:잦ì€ì§ˆë¬¸(FAQ)|{{SITENAME}} 잦ì€ì§ˆë¬¸(FAQ)]],
+[[{{ns:4}}:정책과 지침|{{SITENAME}} 정책]]
+(특별히 [[{{ns:4}}:제목달기 규칙|제목달기 규칙]],
+[[{{ns:4}}:중립ì ì¸ ì‹œê°|중립ì ì¸ ì‹œê°]]),
+그리고 [[{{ns:4}}:범하기_쉬운_실수|범하기 쉬운 실수]].
-위키백과가 성공하려면, ì—¬ëŸ¬ë¶„ì´ ì €ìž‘ê¶Œì— ì €ì´‰ë˜ëŠ” ë‚´ìš©ì„ ì´ê³³ì— ì¨ ë„£ì§€ 않는 것ì´
-매우 중요합니다.' [[위키백과:저작권|저작권]].
+{{SITENAME}}ê°€ 성공하려면, ì—¬ëŸ¬ë¶„ì´ ì €ìž‘ê¶Œì— ì €ì´‰ë˜ëŠ” ë‚´ìš©ì„ ì´ê³³ì— ì¨ ë„£ì§€ 않는 것ì´
+매우 중요합니다.' [[{{ns:4}}:저작권|저작권]].
ë²•ì  ë¬¸ì œê°€ 프로ì íŠ¸ë¥¼ ë§ì¹  수 있습니다. ì €ìž‘ê¶Œì— ìœ ì˜í•´ 주세요.
ë˜, [http://meta.wikipedia.org/wiki/Special:Recentchanges 최근 메타 토론]ë„
ì½ì–´ 보세요.",
@@ -514,22 +514,18 @@ $2 List redirects &nbsp; Search for $3 $9",
"reupload" => "다시 올리기",
"reuploaddesc" => "올리기 틀로 ëŒì•„ê°",
"uploadnologin" => "나와있습니다.",
-"uploadnologintext" => "ìœ„í‚¤ë°±ê³¼ì— <a href=\"" .
- wfLocalUrl( "특수기능:Userlogin" ) . "\">들어와</a> ìžˆì„ ë•Œì—만
+"uploadnologintext" => "{{SITENAME}}ì— <a href=\"{{localurle:Special:Userlogin}}\">들어와</a> ìžˆì„ ë•Œì—만
# special:userlogin 특수기능:들어가기
파ì¼ì„ 올릴 수 있습니다.",
"uploadfile" => "íŒŒì¼ ì˜¬ë¦¬ê¸°",
"uploaderror" => "올리기 오류",
"uploadtext" => "<strong>ìž ê¹!</strong> 여기 ê·¸ë¦¼ì„ ì˜¬ë¦¬ê¸° ì „ì—,
-ìœ„í‚¤ë°±ê³¼ì˜ <a href=\"" .
-wfLocalUrlE( "위키백과:Image_use_policy" ) . "\">그림 사용 ì •ì±…</a>ì½ê³  ë”°ë¼ ì£¼ì„¸ìš”.
+{{SITENAME}}ì˜ <a href=\"{{localurle:Project:Image_use_policy}}\">그림 사용 ì •ì±…</a>ì½ê³  ë”°ë¼ ì£¼ì„¸ìš”.
<p>
-ì´ë¯¸ 올ë¼ì˜¨ ê·¸ë¦¼ì„ ì°¾ì•„ 보려면, <a href=\"" . wfLocalUrlE( "특수기능:Imagelist" ) .
-"\">올ë¼ì˜¨ 그림 목ë¡</a>으로 가세요.
+ì´ë¯¸ 올ë¼ì˜¨ ê·¸ë¦¼ì„ ì°¾ì•„ 보려면, <a href=\"{{localurle:Special:Imagelist}}\">올ë¼ì˜¨ 그림 목ë¡</a>으로 가세요.
# Special:Image list 특수기능:그림_목ë¡
-ê·¸ë¦¼ì„ ì˜¬ë¦¬ê±°ë‚˜ 지우면 <a href=\"" .
-wfLocalUrlE( "위키백과:올리기_기ë¡" ) . "\">올리기 기ë¡</a>ì— ê·¸ ì‚¬ì‹¤ì´ ë‚¨ìŠµë‹ˆë‹¤.
-# 위키백과:올리기_ê¸°ë¡ ìœ„í‚¤ë°±ê³¼:올리기_기ë¡
+ê·¸ë¦¼ì„ ì˜¬ë¦¬ê±°ë‚˜ 지우면 <a href=\"{{localurle:Project:올리기_기ë¡}}\">올리기 기ë¡</a>ì— ê·¸ ì‚¬ì‹¤ì´ ë‚¨ìŠµë‹ˆë‹¤.
+# {{ns:4}}:올리기_ê¸°ë¡ {{ns:4}}:올리기_기ë¡
<p>
ë°‘ì— ìžˆëŠ” í‹€ì„ ì´ìš©í•´ì„œ ë¬¸ì„œì— ë‹´ì„ íŒŒì¼ì„ 올리세요.
@@ -541,7 +537,7 @@ wfLocalUrlE( "위키백과:올리기_기ë¡" ) . "\">올리기 기ë¡</a>ì— ê·¸
마지막으로, \"올리기\" 단추를 누르면 올ë¼ê°‘니다. 누리그물 ì—°ê²°ì´ ëŠë¦¬ë©´,
ì‹œê°„ì´ ê±¸ë¦´ 수 있습니다.
<p>
-위키백과는 ì‚¬ì§„ì€ JPEG형ì‹ì„, 보통 그림, ì•„ì´ì½˜ì€ PNG형ì‹ì„, 소리는
+{{SITENAME}}는 ì‚¬ì§„ì€ JPEG형ì‹ì„, 보통 그림, ì•„ì´ì½˜ì€ PNG형ì‹ì„, 소리는
OGG형ì‹ì„ ë” ì¢‹ì•„í•©ë‹ˆë‹¤.
ì´ë¦„ì€ í–‡ê°ˆë¦¬ì§€ ì•Šê³ , ë‚´ìš©ì„ ìž˜ 나타내는 것으로 지어주세요. ê·¸ë¦¼ì„ ë¬¸ì„œì—
ë‹´ì„ ë•Œì—는 <b>[[image:file.jpg]]</b> ë˜ëŠ” <b>[[image:file.png|alt text]]</b>
@@ -562,8 +558,8 @@ OGG형ì‹ì„ ë” ì¢‹ì•„í•©ë‹ˆë‹¤.
"filedesc" => "짧ì€ì„¤ëª…",
"affirmation" => "파ì¼ì˜ 저작권ìžê°€
$1ì˜ ì¡°ê±´ìœ¼ë¡œ ì‚¬ìš©ì„ í—ˆê°€í–ˆìŒì„ 확ì¸í•©ë‹ˆë‹¤.",
-"copyrightpage" => "위키백과:저작권",
-"copyrightpagename" => "위키백과 저작권",
+"copyrightpage" => "{{ns:4}}:저작권",
+"copyrightpagename" => "{{SITENAME}} 저작권",
"uploadedfiles" => "íŒŒì¼ ì˜¬ë¦¬ê¸°",
"noaffirmation" => "올리는 파ì¼ì´ ì–´ë–¤ 저작권ì—ë„ ì €ì´‰ë˜ì§€ ì•ŠìŒì„
확ì¸í•´ì•¼ 합니다.",
@@ -602,6 +598,7 @@ $1ì˜ ì¡°ê±´ìœ¼ë¡œ ì‚¬ìš©ì„ í—ˆê°€í–ˆìŒì„ 확ì¸í•©ë‹ˆë‹¤.",
"imghistory" => "그림역사",
"revertimg" => "ëŒë¦¼",
"deleteimg" => "지우기",
+"deleteimgcompletely" => "지우기",
"imghistlegend" => "ìƒì„¸ì„¤ëª…: (현재) = í˜„ìž¬ì˜ ê·¸ë¦¼ìž…ë‹ˆë‹¤, (지움) = 옛 ë²„ì ¼ì„ ì§€ì›ë‹ˆë‹¤, (ëŒë¦¼) = 옛 버젼으로 ë˜ëŒë ¤ 놓습니다.
<br><i>특정 ë‚ ì§œì— ì˜¬ë¼ì˜¨ ê·¸ë¦¼ì„ ë³´ë ¤ë©´, 날짜를 ì°ì–´ 주세요</i>.",
"imagelinks" => "그림고리",
@@ -614,7 +611,7 @@ $1ì˜ ì¡°ê±´ìœ¼ë¡œ ì‚¬ìš©ì„ í—ˆê°€í–ˆìŒì„ 확ì¸í•©ë‹ˆë‹¤.",
"sitestats" => "누리터 통계",
"userstats" => "ì‚¬ìš©ìž í†µê³„",
"sitestatstext" => "ì´ê³³ 정보창고(DB)ì—는 ì´ <b>$1</b>ê°œì˜ ë¬¸ì„œê°€ 있습니다.
-ì´ ìˆ«ìžëŠ” \"토론\" 문서, 위키백과 ìžì²´ì— 관한 문서, ìžë¼ê¸°ë¥¼ 기다리는 \"씨앗\" 문서,
+ì´ ìˆ«ìžëŠ” \"토론\" 문서, {{SITENAME}} ìžì²´ì— 관한 문서, ìžë¼ê¸°ë¥¼ 기다리는 \"씨앗\" 문서,
넘겨주기 문서, 그리고 ì•„ì§ ì‚¬ì „í•­ëª©ìœ¼ë¡œ 부족한 ë¬¸ì„œë“¤ì„ ëª¨ë‘ í¬í•¨í•œ 것입니다.
ì´ë“¤ì„ 제외하면, <b>$2</b>ê°œì˜ ë¬¸ì„œê°€ 있습니다.<p>
ë˜, 무른모 업그레ì´ë“œê°€ ìžˆì—ˆë˜ 2002ë…„ 7ì›” 20ì¼ ì´ëž˜, ì—¬ëŸ¬ë¶„ì€ ì´ <b>$3</b>번 문서를
@@ -631,7 +628,7 @@ $1ì˜ ì¡°ê±´ìœ¼ë¡œ ì‚¬ìš©ì„ í—ˆê°€í–ˆìŒì„ 확ì¸í•©ë‹ˆë‹¤.",
"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" => "위키백과:Links_to_disambiguating_pages",
+"disambiguationspage" => "{{ns:4}}:Links_to_disambiguating_pages",
"disambiguationstext" => "The following articles link to a <i>disambiguation page</i>. They should link to the appropriate topic instead.<br>A page is treated as dismbiguation if it is linked from $1.<br>Links from other namespaces are <i>not</i> listed here.",
"doubleredirects" => "Double Redirects",
"doubleredirectstext" => "<b>Attention:</b> This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.<br>\nEach row contains links to the first and second redirect, as well as the first line of the second redirect text, usually giving the \"real\" taget article, which the first redirect should point to.",
@@ -666,21 +663,19 @@ $1ì˜ ì¡°ê±´ìœ¼ë¡œ ì‚¬ìš©ì„ í—ˆê°€í–ˆìŒì„ 확ì¸í•©ë‹ˆë‹¤.",
"debug" => "Debug",
"newpages" => "새 문서",
"movethispage" => "문서 옮기기",
-"unusedimagestext" => "<p>ë‹¤ìŒ ê·¸ë¦¼ì¤‘ ì–´ë–¤ 것ì€, 다른 ì–¸ì–´ì˜ ìœ„í‚¤ë°±ê³¼ë“± 다른
+"unusedimagestext" => "<p>ë‹¤ìŒ ê·¸ë¦¼ì¤‘ ì–´ë–¤ 것ì€, 다른 ì–¸ì–´ì˜ {{SITENAME}}등 다른
누리터ì—ì„œ URL바로걸기로 사용하고 ìžˆì„ ì§€ë„ ëª¨ë¦…ë‹ˆë‹¤.",
"booksources" => "외부 책방",
"booksourcetext" => "새책ì´ë‚˜ í—Œì±…ì„ íŒŒëŠ” 몇몇 누리터입니다. 찾고 있는 ì±…ì˜
정보를 ë‹´ê³  ìžˆì„ ìˆ˜ 있습니다.
-위키백과는 ë‹¤ìŒ ì¤‘ ì–´ë–¤ ê¸°ì—…ê³¼ë„ ê´€ë ¨ì´ ì—†ìœ¼ë©°,
+{{SITENAME}}는 ë‹¤ìŒ ì¤‘ ì–´ë–¤ ê¸°ì—…ê³¼ë„ ê´€ë ¨ì´ ì—†ìœ¼ë©°,
아래 목ë¡ì´ ìƒì—…ì  ê´‘ê³ ë¡œ 오해ë˜ì§€ 않기를 ë°”ëžë‹ˆë‹¤.",
# Email this user
#
"mailnologin" => "누리편지주소 ì—†ìŒ",
-"mailnologintext" => "ìœ„í‚¤ë°±ê³¼ì— <a href=\"" .
- wfLocalUrl( "특수기능:Userlogin" ) . "\">들어와</a> ìžˆì„ ë•Œ, ë˜,
-<a href=\"" .
- wfLocalUrl( "특수기능:Preferences" ) . "\">ê°œì¸ ë§žì¶¤</a>ì—
+"mailnologintext" => "{{SITENAME}}ì— <a href=\"{{localurle:Special:Userlogin}}\">들어와</a> ìžˆì„ ë•Œ, ë˜,
+<a href=\"{{localurle:Special:Preferences}}\">ê°œì¸ ë§žì¶¤</a>ì—
ìžê¸°ì˜ 누리편지주소를 ê¸°ì–µì‹œì¼°ì„ ë•Œì—만,
다른 사용ìžì—게 편지를 보낼 수 있습니다.",
"emailuser" => "사용ìžì—게 편지쓰기",
@@ -706,15 +701,12 @@ $1ì˜ ì¡°ê±´ìœ¼ë¡œ ì‚¬ìš©ì„ í—ˆê°€í–ˆìŒì„ 확ì¸í•©ë‹ˆë‹¤.",
"watchlistsub" => "(\"$1\"ì˜)",
"nowatchlist" => "눈여겨보는 문서가 ì•„ì§ ì—†ìŠµë‹ˆë‹¤.",
"watchnologin" => "나와있습니다.",
-"watchnologintext" => "<a href=\"" .
- wfLocalUrl( "특수기능:Userlogin" ) . "\">들어와</a>
+"watchnologintext" => "<a href=\"{{localurle:Special:Userlogin}}\">들어와</a>
ìžˆì„ ë•Œì—만 눈여겨보기 목ë¡ì„ ë³¼ 수 있습니다.",
"addedwatch" => "눈여겨 봅니다.",
"addedwatchtext" => "앞으로 \"$1\"문서와 딸린 토론를
-<a href=\"" .
- wfLocalUrl( "특수기능:Watchlist" ) . "\">눈여겨보기 목ë¡</a>ì—ì„œ
-관찰할 수 있으며,<a href=\"" .
- wfLocalUrl( "특수기능:Recentchanges" ) . "\">최근 바뀜</a>ì—는 금방 눈ì—
+<a href=\"{{localurle:Special:Watchlist}}\">눈여겨보기 목ë¡</a>ì—ì„œ
+관찰할 수 있으며,<a href=\"{{localurle:Special:Recentchanges}}\">최근 바뀜</a>ì—는 금방 눈ì—
ë„ë„ë¡ <b>ë‘í„°ìš´ 글씨체</b>ë¡œ 나타납니다.</p>
<p>ë” ì´ìƒ 눈여겨 보지 ì•Šì•„ë„ ë  ë•Œì—는, ì˜†ì˜ \"눈여겨 보지 ì•ŠìŒ\"ì„ ëˆ„ë¥´ë©´ ë©ë‹ˆë‹¤.",
@@ -734,7 +726,7 @@ $1ì˜ ì¡°ê±´ìœ¼ë¡œ ì‚¬ìš©ì„ í—ˆê°€í–ˆìŒì„ 확ì¸í•©ë‹ˆë‹¤.",
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
-[[위키백과:Policy]].",
+[[{{ns:4}}:Policy]].",
"confirmcheck" => "Yes, I really want to delete this.",
"actioncomplete" => "Action complete",
"deletedtext" => "\"$1\" has been deleted.
@@ -764,7 +756,7 @@ will not be automatically replaced.",
"undeletebtn" => "Restore!",
"undeletedarticle" => "restored \"$1\"",
"undeletedtext" => "The article [[$1]] has been successfully restored.
-See [[위키백과:Deletion_log]] for a record of recent deletions and restorations.",
+See [[{{ns:4}}:Deletion_log]] for a record of recent deletions and restorations.",
# Contributions
#
@@ -791,7 +783,7 @@ See [[위키백과:Deletion_log]] for a record of recent deletions and restorati
"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 [[위키백과:Policy|Wikipedia policy]].
+accordance with [[{{ns:4}}:Policy|Wikipedia policy]].
Fill in a specific reason below (for example, citing particular
pages that were vandalized).",
"ipaddress" => "IP Address",
@@ -864,8 +856,7 @@ Wikipedia developers.",
옮기는 ê²ƒì´ ì˜³ë‹¤ëŠ” í™•ì‹ ì´ ë“¤ ë•Œì—만 진행하세요.",
"movearticle" => "문서 옮기기",
"movenologin" => "나와 있습니다.",
-"movenologintext" => "ìœ„í‚¤ë°±ê³¼ì— <a href=\"" .
- wfLocalUrl( "특수기능:Userlogin" ) . "\">들어와</a> ìžˆì„ ë•Œì—만
+"movenologintext" => "{{SITENAME}}ì— <a href=\"{{localurle:Special:Userlogin}}\">들어와</a> ìžˆì„ ë•Œì—만
문서를 옮길 수 있습니다.",
"newtitle" => "새 ì´ë¦„",
"movepagebtn" => "옮기기",
diff --git a/languages/LanguageLa.php b/languages/LanguageLa.php
index b724bee3b340..bfa3a771fd58 100644
--- a/languages/LanguageLa.php
+++ b/languages/LanguageLa.php
@@ -24,7 +24,7 @@
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsLa = array(
"Nullus", "Constituere a sinistra", "Constituere a dextra", "Innens a sinistra"
@@ -38,7 +38,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesLa = array(
diff --git a/languages/LanguageLatin1.php b/languages/LanguageLatin1.php
new file mode 100644
index 000000000000..c81a3ca1b011
--- /dev/null
+++ b/languages/LanguageLatin1.php
@@ -0,0 +1,256 @@
+<?php
+# Copyright (C) 2004 Brion Vibber <brion@pobox.com>
+# http://www.mediawiki.org/
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+# http://www.gnu.org/copyleft/gpl.html
+
+#
+# Latin-1 compatibility layer hack.
+#
+# Enable by setting "$wgUseLatin1 = true;" in LocalSettings.php
+# (Preferably at install time so you get the messages right!)
+#
+# This will replace anything that can't be described in Latin-1 with
+# an ugly question mark (?) so don't use this mode on languages that
+# aren't suited to it!
+#
+
+$wgInputEncoding = "ISO-8859-1";
+$wgOutputEncoding = "ISO-8859-1";
+
+function utf8_decode_array( $arr ) {
+ if( !is_array( $arr ) ) {
+ wfDebugDieBacktrace( "utf8_decode_array given non-array" );
+ }
+ return array_map( "utf8_decode", $arr );
+}
+
+#
+# This is a proxy object; the Language instance handed to us speaks
+# UTF-8, while the wiki outside speaks Latin-1. We translate as
+# necessary so neither knows the other is in the wrong charset.
+#
+class LanguageLatin1 {
+ var $lang;
+
+ function LanguageLatin1( &$language ) {
+ $this->lang =& $language;
+ }
+
+ function getDefaultUserOptions() {
+ return $this->lang->getDefaultUserOptions();
+ }
+
+ function getBookstoreList() {
+ return utf8_decode_array( $this->lang->getBookstoreList() );
+ }
+
+ function getNamespaces() {
+ return utf8_decode_array( $this->lang->getNamespaces() );
+ }
+
+ function getNsText( $index ) {
+ return utf8_decode( $this->lang->getNsText( $index ) );
+ }
+
+ function getNsIndex( $text ) {
+ return $this->lang->getNsIndex( utf8_encode( $text ) );
+ }
+
+ function specialPage( $name ) {
+ # At least one function calls this with Special:Undelete/Article_title, so it needs encoding
+ return utf8_decode( $this->lang->specialPage( utf8_encode( $name ) ) );
+ }
+
+ function getQuickbarSettings() {
+ return utf8_decode_array( $this->lang->getQuickbarSettings() );
+ }
+
+ function getSkinNames() {
+ return utf8_decode_array( $this->lang->getSkinNames() );
+ }
+
+ function getMathNames() {
+ return utf8_decode_array( $this->lang->getMathNames() );
+ }
+
+ function getDateFormats() {
+ return utf8_decode_array( $this->lang->getDateFormats() );
+ }
+
+ function getUserToggles() {
+ return utf8_decode_array( $this->lang->getUserToggles() );
+ }
+
+ function getUserToggle( $tog ) {
+ return utf8_decode( $this->lang->getUserToggle( $tog ) );
+ }
+
+ function getLanguageNames() {
+ return utf8_decode_array( $this->lang->getLanguageNames() );
+ }
+
+ function getLanguageName( $code ) {
+ return utf8_decode( $this->lang->getLanguageName( $code ) );
+ }
+
+ function getMonthName( $key ) {
+ return utf8_decode( $this->lang->getMonthName( $key ) );
+ }
+
+ function getMonthNameGen( $key ) {
+ return utf8_decode( $this->lang->getMonthNameGen( $key ) );
+ }
+
+ function getMonthAbbreviation( $key ) {
+ return utf8_decode( $this->lang->getMonthAbbreviation( $key ) );
+ }
+
+ function getWeekdayName( $key ) {
+ return utf8_decode( $this->lang->getWeekdayName( $key ) );
+ }
+
+ function userAdjust( $ts ) {
+ return $this->lang->userAdjust( $ts );
+ }
+
+ function date( $ts, $adj = false ) {
+ return utf8_decode( $this->lang->date( $ts, $adj ) );
+ }
+
+ function time( $ts, $adj = false, $seconds = false ) {
+ return utf8_decode( $this->lang->time( $ts, $adj ) );
+ }
+
+ function timeanddate( $ts, $adj = false ) {
+ return utf8_decode( $this->lang->timeanddate( $ts, $adj ) );
+ }
+
+ function rfc1123( $ts ) {
+ # ASCII by definition
+ return $this->lang->rfc1123( $ts );
+ }
+
+ function getValidSpecialPages() {
+ return utf8_decode_array( $this->lang->getValidSpecialPages() );
+ }
+
+ function getSysopSpecialPages() {
+ return utf8_decode_array( $this->lang->getSysopSpecialPages() );
+ }
+
+ function getDeveloperSpecialPages() {
+ return utf8_decode_array( $this->lang->getDeveloperSpecialPages() );
+ }
+
+ function getMessage( $key ) {
+ return utf8_decode( $this->lang->getMessage( $key ) );
+ }
+
+ function getAllMessages() {
+ return utf8_decode_array( $this->lang->getAllMessages() );
+ }
+
+ function iconv( $in, $out, $string ) {
+ # Use 8-bit version
+ return Language::iconv( $in, $out, $string );
+ }
+
+ function ucfirst( $string ) {
+ # Use 8-bit version
+ return Language::ucfirst( $string );
+ }
+
+ function lcfirst( $s ) {
+ # Use 8-bit version
+ return Language::lcfirst( $s );
+ }
+
+ function checkTitleEncoding( $s ) {
+ # Use 8-bit version
+ return Language::checkTitleEncoding( $s );
+ }
+
+ function stripForSearch( $in ) {
+ # Use 8-bit version
+ return Language::stripForSearch( $in );
+ }
+
+ function firstChar( $s ) {
+ # Use 8-bit version
+ return Language::firstChar( $s );
+ }
+
+ function setAltEncoding() {
+ # Not sure if this should be handled
+ $this->lang->setAltEncoding();
+ }
+
+ function recodeForEdit( $s ) {
+ # Use 8-bit version
+ return Language::recodeForEdit( $s );
+ }
+
+ function recodeInput( $s ) {
+ # Use 8-bit version
+ return Language::recodeInput( $s );
+ }
+
+ function isRTL() {
+ # boolean
+ return $this->lang->isRTL();
+ }
+
+ function linkPrefixExtension() {
+ # boolean
+ return $this->lang->linkPrefixExtension();
+ }
+
+ function &getMagicWords() {
+ return utf8_decode_array( $this->lang->getMagicWords() );
+ }
+
+ function getMagic( &$mw ) {
+ # Not sure how to handle this.
+ # A moot point perhaps as few language files currently
+ # assign localised magic words, and none of the ones we
+ # need backwards compatibility for.
+ return $this->lang->getMagic( $mw );
+ }
+
+ function emphasize( $text ) {
+ # It's unlikely that the emphasis markup itself will
+ # include any non-ASCII chars.
+ return $this->lang->emphasize( $text );
+ }
+
+ function formatNum( $number ) {
+ # Probably not necessary...
+ return utf8_decode( $this->lang->formatNum( $number ) );
+ }
+
+ function listToText( $l ) {
+ # It's unlikely that the list markup itself will
+ # include any non-ASCII chars. (?)
+ return $this->lang->listToText( $l );
+ }
+
+ function truncate( $string, $length, $ellipsis = "" ) {
+ return Language::truncate( $string, $length, $ellipsis );
+ }
+}
+
+?>
diff --git a/languages/LanguageMs.php b/languages/LanguageMs.php
index 0df38ebf85bd..1c561a208b56 100644
--- a/languages/LanguageMs.php
+++ b/languages/LanguageMs.php
@@ -26,10 +26,10 @@
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsMs = array(
- "Tiada", "Tetap sebelah kiri", "Tetap sebelah kanan", "Berubah-ubah sebelah kiri"
+ "Tiada", "Tetap sebelah kiri", "Tetap sebelah kanan", "Berubah-ubah sebelah kiri"
);
/* private */ $wgSkinNamesMs = array(
@@ -40,7 +40,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesMs = array(
@@ -158,7 +159,7 @@
# Bits of text used by many pages:
#
"linktrail" => "/^([a-z]+)(.*)\$/sD",
-"mainpage" => "Laman Utama Pangkalan Pengetahuan", #"Knowledgebase Home",
+"mainpage" => "Laman Utama Pangkalan Pengetahuan", #"Knowledgebase Home",
"mainpagetext" => "Aturcara Wiki berjaya dipasang.",
"about" => "Maklumat",
"aboutwikipedia" => "Maklumat Wikipedia",
@@ -184,7 +185,7 @@
"currentevents" => "Status Terkini",
"errorpagetitle" => "Ralat",
"returnto" => "Kembali ke $1.", #"Return to $1.",
-"fromwikipedia" => "Dari Wikipedia, ensaiklopedia bebas", # "From Wikipedia, the free encylcopedia
+"fromwikipedia" => "Dari Wikipedia, ensaiklopedia bebas", # "From Wikipedia, the free encylcopedia
"whatlinkshere" => "Halaman yang dihubungkan ke sini", #"Pages that link here",
"help" => "Bantuan",
"search" => "Cari",
@@ -195,7 +196,7 @@
"deletethispage" => "Buang halaman ini", #"Delete this page",
"protectthispage" => "Lindungi halaman ini", #"Protect this page",
"unprotectthispage" => "Nyah lindung halaman ini", #"Unprotect this page",
-"newpage" => "(cipta) Halaman baru", # (create) "New page"
+"newpage" => "(cipta) Halaman baru", # (create) "New page"
"talkpage" => "Bincang halaman ini",
"articlepage" => "Lihat rencana",# "View article",
"subjectpage" => "Halaman subjek",
@@ -216,7 +217,7 @@
wfLocalUrl( "Istimewa:Listadministrators" ) . "\">Sistem Pentadbir</a>
yang boleh melakukannya.", #"Only the <a href=\"" .wfLocalUrl( "Special:Listadministrators" ) . "\">administrators</a>can do that.",
"developertitle" => "Kemasukan pembangun diperlukan", # "Developer access required",
-"developertext" => "Tindakan/arahan yg di minta/diperlukanhanya boleh di tunjukan oleh pengguna dengan status \"developer\".
+"developertext" => "Tindakan/arahan yg di minta/diperlukanhanya boleh di tunjukan oleh pengguna dengan status \"developer\".
Lihat $1.", # "The action you have requested can only be performed by users with \"developer\" status.See $1.",
"nbytes" => "$1 bait",
"go" => "Pergi",
@@ -238,12 +239,12 @@ Lihat $1.", # "The action you have requested can only be performed by users with
"nosuchspecialpage" => "Tiada halaman istimewa tersebut", #"No such special page",
"nospecialpagetext" => "Anda telah meminta halaman istimewa yang tidak dikenalpasti oleh perisian Wikipedia.", #"You have requested a special page that is not recognized by the Wikipedia software.",
-# General errors =>Ralat umum
+# General errors =>Ralat umum
#
"error" => "Ralat",
"databaseerror" => "Ralat pangkalan data", #"Database error",
"dberrortext" => "Berlaku ralat sintaksis pada permintaan pangkalan data.
-Ini kerana berlaku permintaan carian yang tidak dibenarkan (lihat $5),
+Ini kerana berlaku permintaan carian yang tidak dibenarkan (lihat $5),
atau mungkin menunjukkan ralat di dalam perisian.
Percubaan terakhir permintaan pangkalan data ialah :
<blockquote><tt>$1</tt></blockquote>
@@ -257,11 +258,11 @@ MySQL returned error \"$3: $4\".\n",
"noconnect" => "Tidak dapat menghubungkan ke DB oleh $1", #"Could not connect to DB on $1",
"nodb" => "Tidak dapat memilih pangkalan data $1", #"Could not select database $1",
"readonly" => "Pangkalan data dikunci", #"Database locked",
-"enterlockreason" => "Masukan sebab/alasan untuk dikunci,
+"enterlockreason" => "Masukan sebab/alasan untuk dikunci,
termasuk anggaran apabila kunci telah di buka",
-"readonlytext" => "Pangkalan data Wikipedia sedang di kunci kepada
+"readonlytext" => "Pangkalan data Wikipedia sedang di kunci kepada
kemasukan baru.
-Pentadbir yang menutup
+Pentadbir yang menutup
memberikan penjelasan berikut:
<p>$1",
"rencana hilang"=>"Pengkalan data tidak menjumpai teks bagi laman yang patut dijumpai, bernama\"$1\".
@@ -279,7 +280,7 @@ memberikan penjelasan berikut:
"unexpected" => "Nilai di luar jangkaan: \"$1\"=\"$2\".", # Unexpected value: \"$1\"=\"$2\".",
"formerror" => "Ralat: Tidak dapat menghantar borang", #Error: could not submit form",
"badarticleerror" => "Arahan ini tidak boleh dilaksanakan di halaman ini.", #This action cannot be performed on this page.",
-"cannotdelete" => "Tidak dapat menghilangkan halaman atau imej yang telah ditetapkan.",
+"cannotdelete" => "Tidak dapat menghilangkan halaman atau imej yang telah ditetapkan.",
"badtitle" => "Tajuk tidak sesuai", #Bad title",
"badtitletext" => "Tajuk halaman yang diminta tidak sah, kosong atau salah sambungan dengan antara-bahasa atau tajuk antara-wiki.", #The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title.",
"perfdisabled" => "Maaf! keupayaan ini dilumpuhkan seketika kerana ia melambatkan pengkalan data sehingga tidak dapat digunakan.", # "Sorry! This feature has been temporarily disabled because it slows the database down to the point that no one can use the wiki.",
@@ -288,7 +289,7 @@ memberikan penjelasan berikut:
# Login and logout pages
#
"logouttitle" => "Pengguna Keluar", #User logout
-"logouttext" => "Anda telah keluar dari sistem.
+"logouttext" => "Anda telah keluar dari sistem.
Anda boleh terus membaca maklumat, tetapi tidak boleh mengemaskininya atau anda boleh masuk semula sebagai pengguna yang sama atau pengguna berbeza.\n",
"welcomecreation" => "<h2>Selamat datang, $1!</h2><p>Akaun anda telah dibuka.
@@ -303,10 +304,10 @@ Sila kemaskini konfigurasi butir-butir diri anda.", #"<h2>Welcome, $1!</h2><p>Yo
"loginproblem" => "<b>Terdapat masalah dengan data kemasukan.</b><br>Cuba semula!", # There has been a problem with your login.</b><br>Try again!",
"alreadyloggedin" => "<font color=red><b>Pengguna $1, anda telah berjaya masuk!</b></font><br>\n",
-"areyounew" =>"Sekiranya anda baru dalam Wikipedia dan ingin mendapatkan akaun pengguna,
+"areyounew" =>"Sekiranya anda baru dalam Wikipedia dan ingin mendapatkan akaun pengguna,
masukan nama pengguna, kemudia taip kata laluan dan ulang semula kata laluan.
-Alamat email anda adalah tidak diwajibkan;sekiranya kehilangan kata laluan
-boleh diminta melalui email yg diberikan.<br>\n",
+Alamat email anda adalah tidak diwajibkan;sekiranya kehilangan kata laluan
+boleh diminta melalui email yg diberikan.<br>\n",
"login" => "Masuk", #Log in
"userlogin" => "Laluan masuk", #Log in
@@ -315,20 +316,20 @@ boleh diminta melalui email yg diberikan.<br>\n",
"notloggedin" => "Not logged in",
"createaccount" => "Buka akaun baru", #Create new account",
"badretype" => "Kata laluan yang dimasukkan adalah salah.", #The passwords you entered do not match.",
-"userexists" => "Nama pengguna yang dimasukkan telah digunakan.Sila gunakan nama lain.",
+"userexists" => "Nama pengguna yang dimasukkan telah digunakan.Sila gunakan nama lain.",
"youremail" => "Email anda", #Your e-mail",
"yournick" => "Nama samaran (untuk pengenalan)", #Your nickname (for signatures)",
-"emailforlost" => "Sekiranya terlupa kata laluan, anda boleh dapatkan
-yang baru yang akan
-diemail ke email
-anda.",
+"emailforlost" => "Sekiranya terlupa kata laluan, anda boleh dapatkan
+yang baru yang akan
+diemail ke email
+anda.",
"loginerror" => "Salah masuk", #Login error",
"noname" => "Nama pengguna tidak sah.", #You have not specified a valid user name.",
"loginsuccesstitle" => "Berjaya masuk", #Login successful",
"loginsuccess" => "Berjaya masuk dalam Wikipedia sebagai \"$1\".", #You are now logged in to Wikipedia as \"$1\".",
"nosuchuser" => "Tiada pengguna seperti nama \"$1\". #There is no user by the name \"$1\".
-Periksa ejaan, atau guna borang di bawah untuk membuka akaun baru.",
-"wrongpassword" => "Kata laluan yang dimasukan adalah salah.Sila cuba semula.",
+Periksa ejaan, atau guna borang di bawah untuk membuka akaun baru.",
+"wrongpassword" => "Kata laluan yang dimasukan adalah salah.Sila cuba semula.",
"mailmypassword" => "Emailkan kata laluan baru", #Mail me a new password",
"passwordremindertitle" => "Peringatan kata laluan dari Wikipedia", #Password reminder from Wikipedia",
"passwordremindertext" => "Seseorang (mungkin anda, dari alamat IP $1) #IP Someone (probably you, from IP address $1)
@@ -336,7 +337,7 @@ meminta di hantar kata laluan Wikipedia yang baru.#requested that we send you a
Kata laluan untuk pengguna \"$2\" ialah \"$3\". #The password for user \"$2\" is now \"$3\".
Anda perlu masuk semula dan tukar kata laluan dengan segera.", #You should log in and change your password now.",
"noemail" => "Tiada alamat email yang direkodkan untuk pengguna \"$1\".",
-"passwordsent" => "Kata laluan baru telah di emailkan kepada email yang
+"passwordsent" => "Kata laluan baru telah di emailkan kepada email yang
didaftarkan untuk \"$1\".
Sila masuk setelah menerima email tersebut.", #Please log in again after you receive it.",
@@ -353,42 +354,42 @@ Sila masuk setelah menerima email tersebut.", #Please log in again after you rec
Alasannya kerana :<br>$2<p>Anda boleh menghubungi sistem admin untuk
membincangkan sebab-sebabnya.",
"newarticle" => "(Baru)", #"(New)",
-"newarticletext" =>
-"Letakkan teks anda
-di sini
-untuk
+"newarticletext" =>
+"Letakkan teks anda
+di sini
+untuk
halaman baru.",
"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" => "(Tidak ada teks dalam halaman ini)",
"updated" => "(Dikemaskini)", #"(Updated)",
"note" => "<strong>Nota:</strong> ",
"previewnote" => "Ingatan bahawa ini hanyalah paparan, belum disimpan lagi!", #"Remember that this is only a preview, and has not yet been saved!",
-"previewconflict" => "Paparan ini ada kaitan dengan teks pada bahagian atas dan
-akan terpapar apabila anda memilih untuk menyimpannya.",
+"previewconflict" => "Paparan ini ada kaitan dengan teks pada bahagian atas dan
+akan terpapar apabila anda memilih untuk menyimpannya.",
"editing" => "Menyunting $1", #"Editing $1",
"sectionedit" => " (section)",
"editconflict" => "Sunting konflik", #"Edit conflict: $1",
-"explainconflict" => "Orang lain telah mengemaskini halaman ini sejak anda
+"explainconflict" => "Orang lain telah mengemaskini halaman ini sejak anda
mula mengemaskininya.
Bahagian atas teks mengandungi halaman teks yang terkini.
Perubahan yang anda lakukan akan ditunjukkan pada bahagian bawah teks.
Anda hanya perlu mencantumkan perubahan-perubahan dalam teks.
<b>Hanya</b> teks pada bahagian atas akan hanya disimpan apabila anda
-menekan \"Simpan halaman\".\n<p>",
+menekan \"Simpan halaman\".\n<p>",
"yourtext" => "Teks anda", #"Your text",
"storedversion" => "Simpan versi", #"Stored version",
"editingold" => "<strong>AMARAN: Anda mengemaskini halaman revisi yang ketinggalan tarikh.
-Jika anda menyimpannya,
+Jika anda menyimpannya,
sebarang perubahan yang dibuat sejak revisi ini akan hilang.</strong>\n",
"yourdiff" => "Perbezaan", #"Differences",
-"copyrightwarning" => "Semua sumbangan terhadap Wikipedia adalah
-tertakluk di bawah GNU Free Documentation License
-(lihat $1 untuk maklumat lebih lanjut).
-Jika anda tidak mahu tulisan anda disunting dan/atau disebarkan ke halaman
-web percuma yang lain, jangan hantarnya ke sini.
-Anda juga perlu akui bahawa ini adalah hasil tulisan anda sendiri, atau anda
-menyalinnya daripada domain awam atau mana-mana sumber percuma yang sama.
-<p><strong><font color=\"red\">JANGAN HANTAR SEBARANG KARYA HAK CIPTA ORANG LAIN TANPA KEBENARAN.</font></strong></p> <p><strong><font color=\"red\">JANGAN SALIN DARIPADA HALAMAN WEB YANG LAIN.</font></strong></p> ",
+"copyrightwarning" => "Semua sumbangan terhadap Wikipedia adalah
+tertakluk di bawah GNU Free Documentation License
+(lihat $1 untuk maklumat lebih lanjut).
+Jika anda tidak mahu tulisan anda disunting dan/atau disebarkan ke halaman
+web percuma yang lain, jangan hantarnya ke sini.
+Anda juga perlu akui bahawa ini adalah hasil tulisan anda sendiri, atau anda
+menyalinnya daripada domain awam atau mana-mana sumber percuma yang sama.
+<p><strong><font color=\"red\">JANGAN HANTAR SEBARANG KARYA HAK CIPTA ORANG LAIN TANPA KEBENARAN.</font></strong></p> <p><strong><font color=\"red\">JANGAN SALIN DARIPADA HALAMAN WEB YANG LAIN.</font></strong></p> ",
"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.",
@@ -405,7 +406,7 @@ guidelines</a>.",
"revhistory" => "Sejarah revisi", #"Revision history",
"nohistory" => "Tidak ada sejarah kemaskini untuk halaman ini", #"There is no edit history for this page.",
"revnotfound" => "Revisi tidak dijumpai", #"Revision not found",
-"revnotfoundtext" => "Revisi lama untuk halaman ini yang anda minta tidak dapat dijumpai.
+"revnotfoundtext" => "Revisi lama untuk halaman ini yang anda minta tidak dapat dijumpai.
Sila semak URL yang digunakan untuk mengakses halaman ini.\n", #"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" => "Muatturun halaman sejarah", #"Loading page history",
"currentrev" => "Revisi terkini", #"Current revision",
@@ -414,7 +415,7 @@ Sila semak URL yang digunakan untuk mengakses halaman ini.\n", #"The old revisio
"next" => "next",
"last" => "last",
"orig" => "orig",
-"histlegend" => "Lagenda: (cur) = perbezaan dengan versi terkini,
+"histlegend" => "Lagenda: (cur) = perbezaan dengan versi terkini,
(last) = perbezaan dengan versi terdahulu", #"Legend: (cur) = difference with current version,(last) = difference with preceding version",
# Diffs
@@ -432,13 +433,13 @@ Sila semak URL yang digunakan untuk mengakses halaman ini.\n", #"The old revisio
"searchresulttext" => "Untuk maklumat lanjut tentang carian dalam Wikipedia, lihat $1.", #"For more information about searching Wikipedia, see $1.",
"searchquery" => "Untuk kueri \"$1\"", #"For query \"$1\"",
"badquery" => "Format kueri carian salah", #"Badly formed search query",
-"badquerytext" => "Kami tidak dapat memproses kueri anda.
-Ini mungkin disebabkan anda cuba mencari perkataan yang kurang
-daripada tiga huruf, yang mana masih belum disokong oleh sistem ini.
-Ataupun anda tersalah taip ekspresi untuk kueri,
-contohnya \"fish and and scales\".
-Sila cuba kueri yang lain.",
-"matchtotals" => "Kueri \"$1\" sepadan dengan tajuk halaman $2 dan teks
+"badquerytext" => "Kami tidak dapat memproses kueri anda.
+Ini mungkin disebabkan anda cuba mencari perkataan yang kurang
+daripada tiga huruf, yang mana masih belum disokong oleh sistem ini.
+Ataupun anda tersalah taip ekspresi untuk kueri,
+contohnya \"fish and and scales\".
+Sila cuba kueri yang lain.",
+"matchtotals" => "Kueri \"$1\" sepadan dengan tajuk halaman $2 dan teks
halaman $3.", #"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" => "Tajuk artikel yang sepadan", #"Article title matches",
@@ -450,9 +451,9 @@ halaman $3.", #"The query \"$1\" matched $2 page titles and the text of $3 pages
"viewprevnext" => "Papar ($1) ($2) ($3).", #"View ($1) ($2) ($3).",
"showingresults" => "Di bawah menunjukkan <b>$1</b> hasil carian bermula dengan #<b>$2</b>.", #"Showing below <b>$1</b> results starting with #<b>$2</b>.",
"showingresultsnum" => "Di bawah menunjukkan <b>$3</b> hasil carian bermula dengan #<b>$2</b>.", #"Showing below <b>$3</b> results starting with #<b>$2</b>.",
-"nonefound" => "<strong>Nota</strong>:Kegagalan enjin carian
-biasanya disebabkan pencarian perkataan seperti \"have\" and \"from\",
-yang mana bukan dalam senarai indeks atau dengan dikhususkan lebih dari
+"nonefound" => "<strong>Nota</strong>:Kegagalan enjin carian
+biasanya disebabkan pencarian perkataan seperti \"have\" and \"from\",
+yang mana bukan dalam senarai indeks atau dengan dikhususkan lebih dari
satu istilah carian(hanya halaman).", # "<strong>Note</strong>: unsuccessful searches are often caused by searching for common words like \"have\" and \"from\",which are not indexed, or by specifying more than one search term (only pages containing all of the search terms will appear in the result).",
"powersearch" => "Cari", #"Search",
"powersearchtext" => "
@@ -469,11 +470,11 @@ $2 List redirects &nbsp; Search for $3 $9",
wfLocalUrl( "Istimewa:Userlogin" ) . "\">mendaftar masuk</a>
untuk tetapkan butir-butir diri anda.", #"You must be <a href=\"" .
"prefslogintext" => "Anda telah masuk sebagai \"$1\".
-Nombor ID anda ialah $2.",
+Nombor ID anda ialah $2.",
"prefsreset" => "Konfigurasi telah diubah ke asal dari storan", #"Preferences have been reset from storage.",
-"qbsettings" => "Konfigurasi quickbar", #"Quickbar settings",
+"qbsettings" => "Konfigurasi quickbar", #"Quickbar settings",
"changepassword" => "Tukar kata laluan", #"Change password",
"skin" => "Skin",
"math" => "Rendering math",
@@ -488,7 +489,7 @@ Nombor ID anda ialah $2.",
"oldpassword" => "Kata laluan lama", #"Old password",
"newpassword" => "Kata laluan baru", #"New password",
"retypenew" => "Taip semula kata laluan baru", #"Retype new password",
-"textboxsize" => "Dimensi kotak teks", #"Textbox dimensions",
+"textboxsize" => "Dimensi kotak teks", #"Editing",
"rows" => "Baris", #"Rows",
"columns" => "Lajur", #"Columns",
"searchresultshead" => "Konfigurasi hasil carian", #"Search result settings",
@@ -498,7 +499,7 @@ Nombor ID anda ialah $2.",
"stubthreshold" => "Threshold for stub display",
"recentchangescount" => "Bilangan tajuk dalam perubahan terkini", #"Number of titles in recent changes",
"savedprefs" => "Konfigurasi butir-butir diri anda telah disimpan", #"Your preferences have been saved.",
-"timezonetext" => "Masukkan perbezaan jam antara waktu
+"timezonetext" => "Masukkan perbezaan jam antara waktu
tempatan anda dengan waktu pelayan (UTC).", #"Enter number of hours your local time differs from server time (Kuala Lumpur, which is GMT+8).",
"localtime" => "Waktu tempatan", #"Local time",
"timezoneoffset" => "Imbang", #"Offset",
@@ -519,9 +520,9 @@ Sila lihat halaman-halaman ini: [[Wikipedia:FAQ|Wikipedia FAQ]],
[[Wikipedia:Pandangan semulajadi|pandangan semulajadi]]),
dan [[Wikipedia: Kesalahan biasa Wikipedia|kesalahan biasa Wikipedia]].
-Jika anda mahu melihat Wikipedia berjaya, adalah sangat penting anda
+Jika anda mahu melihat Wikipedia berjaya, adalah sangat penting anda
tidak memasukkan material [[Wikipedia:Hak cipta|hak cipta]] orang lain.
-Perkara ini boleh memusnahkan laman web ini,
+Perkara ini boleh memusnahkan laman web ini,
jadi sila patuhi amaran ini.",
"rcloaderr" => "Muatturun perubahan terkini", #"Loading recent changes",
"rcnote" => "Di bawah adalah <strong>$1</strong> kemaskini terakhir dalam <strong>$2</strong> hari lepas.", #"Below are the last <strong>$1</strong> changes in last <strong>$2</strong> days.",
@@ -552,7 +553,7 @@ jadi sila patuhi amaran ini.",
"uploadnologin" => "Tidak mendaftar masuk", #"Not logged in",
"uploadnologintext" => "Anda mesti <a href=\"" .
wfLocalUrl( "Istimewa:Userlogin" ) . "\">pengguna</a>
-untuk muatnaik fail.",
+untuk muatnaik fail.",
"uploadfile" => "Muatnaik fail", #"Upload file",
"uploaderror" => "Muatnaik ralat", #"Upload error",
"uploadtext" => "<strong>STOP!</strong> Before you upload here,
@@ -584,30 +585,30 @@ delete your uploads if they think it serves the encyclopedia, and
you may be blocked from uploading if you abuse the system.",
"uploadlog" => "muatnaik log", #"upload log",
"uploadlogpage" => "Muatnaik_log", #"Upload_log",
-"uploadlogpagetext" => "Di bawah ini adalah senarai terkini fail yang dimuatnaik.
+"uploadlogpagetext" => "Di bawah ini adalah senarai terkini fail yang dimuatnaik.
Semua waktu yang ditunjukkan adalah waktu pelayan (UTC).
<ul>
</ul>
",
"filename" => "Filename",
"filedesc" => "Ringkasan", #"Summary",
-"affirmation" => "Saya berikrar bahawa pemilik hak cipta fail ini
+"affirmation" => "Saya berikrar bahawa pemilik hak cipta fail ini
telah bersetuju untuk melesenkannya di bawah terma $1.", #"I affirm that the copyright holder of this file agrees to license it under the terms of the $1.",
"copyrightpage" => "Wikipedia:Hak cipta",
"copyrightpagename" => "Hak cipta Wikipedia",
"uploadedfiles" => "Fail yang telah dimuatnaik", #"Uploaded files",
-"noaffirmation" => "Anda mesti berikrar bahawa fail yang dimuatnaik tidak
+"noaffirmation" => "Anda mesti berikrar bahawa fail yang dimuatnaik tidak
tertakluk di bawah sebarang hak cipta.", #"You must affirm that your upload does not violate any copyrights.",
"ignorewarning" => "Abaikan amaran dan simpan fail sahaja", #"Ignore warning and save file anyway.",
"minlength" => "Nama imej mesti sekurang-kurangnya tiga huruf.", #"Image names must be at least three letters.",
"badfilename" => "Nama imej telah ditukar kepada \"$1\".", #"Image name has been changed to \"$1\".",
-"badfiletype" => "\".$1\" ialah fail format imej yg tidak di sarankan.",
-"largefile" => "Disarankan agar saiz imej tidak melebihi 100k.",
+"badfiletype" => "\".$1\" ialah fail format imej yg tidak di sarankan.",
+"largefile" => "Disarankan agar saiz imej tidak melebihi 100k.",
"successfulupload" => "Berjaya dimuaturun", #"Successful upload",
-"fileuploaded" => "Fail \"$1\" berjaya dimuaturun.
-Sila patuhi pautan : ($2) pada halaman deskripsi dan isikan maklumat
-tentang fail tersebut, seperti fail itu dari mana, bila ia dibuat dan
-oleh siapa, dan lain-lain yang anda ketahui.",
+"fileuploaded" => "Fail \"$1\" berjaya dimuaturun.
+Sila patuhi pautan : ($2) pada halaman deskripsi dan isikan maklumat
+tentang fail tersebut, seperti fail itu dari mana, bila ia dibuat dan
+oleh siapa, dan lain-lain yang anda ketahui.",
"uploadwarning" => "Amaran muaturun", # Upload warning",
"savefile" => "Simpan fail", #"Save file",
"uploadedimage" => "Telah dimuaturun \"$1\"", #"uploaded \"$1\"",
@@ -630,6 +631,7 @@ oleh siapa, dan lain-lain yang anda ketahui.",
"imghistory" => "Sejarah imej", #"Image history",
"revertimg" => "rev",
"deleteimg" => "del",
+"deleteimgcompletely" => "del",
"imghistlegend" => "Legend: (cur) = this is the current image, (del) = delete
this old version, (rev) = revert to this old version.
<br><i>Click on date to see image uploaded on that date</i>.",
@@ -642,25 +644,25 @@ this old version, (rev) = revert to this old version.
"statistics" => "Statistik", #"Statistics",
"sitestats" => "Laman statistik", #"Site statistics",
"userstats" => "Statistik pengguna", #"User statistics",
-"sitestatstext" => "Terdapat <b>$1</b> jumlah halaman dalam pangkalan data.
-Ini termasuk halaman \"talk\", halaman tentang Wikipedia, halaman minimum \"stub\",
-alih semula dan lain-lain yang mungkin tidak termasuk dalam
+"sitestatstext" => "Terdapat <b>$1</b> jumlah halaman dalam pangkalan data.
+Ini termasuk halaman \"talk\", halaman tentang Wikipedia, halaman minimum \"stub\",
+alih semula dan lain-lain yang mungkin tidak termasuk dalam
halaman penuh.
Selain itu, terdapat halaman <b>$2</b> yang mungkin halaman penuh. <p>
-Terdapat sejumlah <b>$3</b> halaman yang disiarkan, dan sejumlah <b>$4</b>
+Terdapat sejumlah <b>$3</b> halaman yang disiarkan, dan sejumlah <b>$4</b>
halaman yang telah diedit sejak ia dihasilkan.
-Ini menjadikan <b>$5</b> purata halaman yang disunting, dan <b>$6</b> paparan yang disunting.",
-"userstatstext" => "Terdapat <b>$1<b/> pengguna berdaftar.
-<b>$2<b/> daripadanya adalah pentadbir (lihat $3).",
+Ini menjadikan <b>$5</b> purata halaman yang disunting, dan <b>$6</b> paparan yang disunting.",
+"userstatstext" => "Terdapat <b>$1<b/> pengguna berdaftar.
+<b>$2<b/> daripadanya adalah pentadbir (lihat $3).",
# Maintenance Page
#
"maintenance" => "Halaman penyelenggaraan", #"Maintenance page",
-"maintnancepagetext" => "Halaman ini termasuk beberapa peralatan untuk penyelenggaraan setiap hari. Terdapat sesetengah fungsi yang berkecenderungan untuk mengganggu pangkalan data, jadi tolong jangan tekan kekunci 'reload' selepas membuat pembetulan;-)",
+"maintnancepagetext" => "Halaman ini termasuk beberapa peralatan untuk penyelenggaraan setiap hari. Terdapat sesetengah fungsi yang berkecenderungan untuk mengganggu pangkalan data, jadi tolong jangan tekan kekunci 'reload' selepas membuat pembetulan;-)",
"maintenancebacklink" => "Kembali ke halaman penyelenggaran", #"Back to Maintenance Page",
"disambiguations" => "Halaman yang tidak samar", #"Disambiguation pages",
"disambiguationspage" => "Wikipedia:Pautan_ke_halaman_yang_tidak_samar", #"Wikipedia:Links_to_disambiguating_pages",
-"disambiguationstext" => "Halaman-halaman yang berikutnya bersambung ke satu <i>halaman yang tidak samar</i>. Halaman-halaman tersebut sepatutnya bersambung ke topik-topik yang berkenaan.<br>Satu halaman dianggap sebagai tidak samar jika ia disambung dari $1.<br>Pautan dari ruang nama yang lain <i>tidak</i> tersenarai di sini.",
+"disambiguationstext" => "Halaman-halaman yang berikutnya bersambung ke satu <i>halaman yang tidak samar</i>. Halaman-halaman tersebut sepatutnya bersambung ke topik-topik yang berkenaan.<br>Satu halaman dianggap sebagai tidak samar jika ia disambung dari $1.<br>Pautan dari ruang nama yang lain <i>tidak</i> tersenarai di sini.",
"doubleredirects" => "Peralihan Halaman Berganda", #"Double Redirects",
"doubleredirectstext" => "<b>Perhatian:</b> Senarai ini mungkin tidak tepat. Ini biasanya bermaksud terdapat tambahan teks dengan pautan di bawah #REDIRECT yang pertama.<br>\nSetiap baris mengandungi pautan kepada peralihan halaman yang pertama dan kedua, sebagaimana baris pertama bagi teks peralihan halaman kedua, biasanya memberikan halaman sasaran \"sebenar\" yang sepatutnya peralihan pertama disambungkan.",
"brokenredirects" => "Peralihan Halaman Rosak", #"Broken Redirects",
@@ -672,7 +674,7 @@ Ini menjadikan <b>$5</b> purata halaman yang disunting, dan <b>$6</b> paparan ya
"mispeelingspage" => "Senarai kesilapan ejaan", #"List of common misspellings",
"missinglanguagelinks" => "Pautan bahasa yang hilang", #"Missing Language Links",
"missinglanguagelinksbutton" => "Cari pautan bahasa yang hilang untuk", #"Find missing language links for",
-"missinglanguagelinkstext" => "Halaman ini <i>tidak boleh</i> berpaut pada bahagian pusingan dalam $1. Mengarah semula dan sub halaman <i>tidak</i>akan ditunjukkan.",
+"missinglanguagelinkstext" => "Halaman ini <i>tidak boleh</i> berpaut pada bahagian pusingan dalam $1. Mengarah semula dan sub halaman <i>tidak</i>akan ditunjukkan.",
# Miscellaneous special pages
@@ -701,34 +703,34 @@ Ini menjadikan <b>$5</b> purata halaman yang disunting, dan <b>$6</b> paparan ya
"ancientpages" => "Oldest articles",
"intl" => "Interlanguage links",
"movethispage" => "Pindah halaman ini",
-"unusedimagestext" => "<p>Sila ambil perhatian laman web
-yang lain mungkin boleh berpaut secara
-terus dengan URL, dan mungkin masih di
-senaraikan selain masih aktif digunakan.",
+"unusedimagestext" => "<p>Sila ambil perhatian laman web
+yang lain mungkin boleh berpaut secara
+terus dengan URL, dan mungkin masih di
+senaraikan selain masih aktif digunakan.",
"booksources" => "Sumber buku",
-"booksourcetext" => "Di bawah ini merupakan senarai untuk ke
-pautan lain yang menjual buku baru dan yang telah digunakan,
-dan mungkin mempunyai maklumat lanjut tentang buku yang anda sedang cari.
-Wikipedia tidak bergabung dengan mana-mana perniagaan di atas,
-dan senarai ini sepatutnya tidak ditafsirkan sebagai sokongan.",
+"booksourcetext" => "Di bawah ini merupakan senarai untuk ke
+pautan lain yang menjual buku baru dan yang telah digunakan,
+dan mungkin mempunyai maklumat lanjut tentang buku yang anda sedang cari.
+Wikipedia tidak bergabung dengan mana-mana perniagaan di atas,
+dan senarai ini sepatutnya tidak ditafsirkan sebagai sokongan.",
"alphaindexline" => "$1 to $2",
# Email this user
#
"mailnologin" => "Tidak dibenarkan hantar alamat", #"No send address",
-"mailnologintext" => "Anda mesti <a href=\"" . wfLocalUrl( "Istimewa:Userlogin"). "\logged in</a> dan mempunyai alamat email yang sah di <a href=\"". wfLocalUrl( "Istimewa:Preferences") . "\"preferences</a> untuk menghantar email kepada pengguna lain.",
+"mailnologintext" => "Anda mesti <a href=\"" . wfLocalUrl( "Istimewa:Userlogin"). "\logged in</a> dan mempunyai alamat email yang sah di <a href=\"". wfLocalUrl( "Istimewa:Preferences") . "\"preferences</a> untuk menghantar email kepada pengguna lain.",
#"You must be <a href=\"" . wfLocalUrl( "Special:Userlogin" ) . "\">logged in</a> and have a valid e-mail address in your <#a href=\"" . wfLocalUrl( "Special:Preferences" ) . "\">preferences</a> to send e-mail to other users.",
"emailuser" => "E-mail pengguna ini", #"E-mail this user",
"emailpage" => "E-mail pengguna", #"E-mail user",
-"emailpagetext" => "Sekiranya pengguna ini memasuki alamat email yang sah dalam kecenderungan pengguna, borang dibawah akan menghantar satu pesanan. Alamat email yg diisi pada kecenderungan pengguna akan muncul seperti \"From\"alamat email, jadi penerima boleh membalas email tersebut.",
+"emailpagetext" => "Sekiranya pengguna ini memasuki alamat email yang sah dalam kecenderungan pengguna, borang dibawah akan menghantar satu pesanan. Alamat email yg diisi pada kecenderungan pengguna akan muncul seperti \"From\"alamat email, jadi penerima boleh membalas email tersebut.",
#"If this user has entered a valid e-mail address in is 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 wi#ll be able to reply.",
"noemailtitle" => "Tiada alamat email", #"No e-mail address",
-"noemailtext" => "Pengguna ini tidak mengkhususkan alamat email yang sah, atau telah memilih untuk tidak mendapat email dari pengguna yang lain.",
+"noemailtext" => "Pengguna ini tidak mengkhususkan alamat email yang sah, atau telah memilih untuk tidak mendapat email dari pengguna yang lain.",
#"This user has not specified a valid e-mail address, or has chosen not to receive e-mail from other users.",
"emailfrom" => "Daripada", #"From",
@@ -745,20 +747,20 @@ dan senarai ini sepatutnya tidak ditafsirkan sebagai sokongan.",
"watchlistsub" => "( untuk pengguna \"$1\")", #"(for user \"$1\")",
"nowatchlist" => "Tiada apa-apa dalam senarai pilihan.", #"You have no items on your watchlist.",
"watchnologin" => "Tidak memasuki sistem", #"Not logged in",
-"watchnologintext" => "Anda mesti < a href=\"".
- wfLocalUrl( "Istimewa:Userlogin" ) ."\">mendaftar masuk<a/>
-untuk mengubah senarai pilihan.",
+"watchnologintext" => "Anda mesti < a href=\"".
+ wfLocalUrl( "Istimewa:Userlogin" ) ."\">mendaftar masuk<a/>
+untuk mengubah senarai pilihan.",
"addedwatch" => "Tambah ke senarai pilihan",
-"addedwatchtext" => "Halaman \"$1\" telah ditambah pada <a href=\"".
- wfLocalUrl( "Istimewa:Watchlist") . "\">senarai pilihan</a>.
-Perubahan halaman dan gabungan halaman Perbualan pada masa akan datang
+"addedwatchtext" => "Halaman \"$1\" telah ditambah pada <a href=\"".
+ wfLocalUrl( "Istimewa:Watchlist") . "\">senarai pilihan</a>.
+Perubahan halaman dan gabungan halaman Perbualan pada masa akan datang
akan disenaraikan di sini, dan halaman itu akan muncul <b>bolded</b> dalam <a href=\"".
- wfLocalUrl( "Istimewa:Recentchanges" ) . "\">senarai perubahan terkini</a>
- supaya lebih mudah dibawa keluar.</p>
+ wfLocalUrl( "Istimewa:Recentchanges" ) . "\">senarai perubahan terkini</a>
+ supaya lebih mudah dibawa keluar.</p>
-<p>Sekiranya anda ingin menghapuskan halaman dalam senarai pilihan kemudian, klik \"Berhenti dari senarai pilihan\" pada bar disebelah.",
+<p>Sekiranya anda ingin menghapuskan halaman dalam senarai pilihan kemudian, klik \"Berhenti dari senarai pilihan\" pada bar disebelah.",
"removedwatch" => "Keluarkan dari senarai pilihan", #"Removed from watchlist",
-"removedwatchtext" => "Halaman \"$1\"telah dikeluarkan dari senarai pilihan.",
+"removedwatchtext" => "Halaman \"$1\"telah dikeluarkan dari senarai pilihan.",
"watchthispage" => "Tambah ke senarai pilihan",
"unwatchthispage" => "Berhenti dari senarai pilihan", #"Stop watching",
"notanarticle" => "Not a page",
@@ -773,10 +775,10 @@ akan disenaraikan di sini, dan halaman itu akan muncul <b>bolded</b> dalam <a hr
"confirmdelete" => "Sah keluarkan", #"Confirm delete",
"deletesub" => "(Keluarkan \"$1\")", #"(Deleting \"$1\")",
"historywarning" => "Amaran: Laman yang anda ingin padamkan mempunyai sejarah:",
-"confirmdeletetext" => "Anda akan mengeluarkan terus halaman atau
-imej ini dengan semua sejarahnya dari pangkalan data. Sila pastikan
-yang anda memang mahu berbuat demikian, bahawa anda faham segala
-akibatnya, dan apa yang anda lakukan ini adalah mengikut
+"confirmdeletetext" => "Anda akan mengeluarkan terus halaman atau
+imej ini dengan semua sejarahnya dari pangkalan data. Sila pastikan
+yang anda memang mahu berbuat demikian, bahawa anda faham segala
+akibatnya, dan apa yang anda lakukan ini adalah mengikut
[[Wikipedia:Polisi]].",
"confirmcheck" => "Ya, saya mahu keluarkan halaman ini", #"Yes, I really want to delete this.",
"actioncomplete" => "Proses selesai", #"Action complete",
@@ -798,11 +800,11 @@ Semua waktu yang ditunjukkan adalah waktu pelayan (UTC).
"rollbackfailed" => "gagal kembali asal",
"cantrollback" => "Cannot revert edit; last contributor is only author of this article.",
"alreadyrolled" => "Cannot rollback last edit of [[$1]]
-by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already.
+by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already.
Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). ",
# only shown if there is an edit comment
-"editcomment" => "The edit comment was: \"<i>$1</i>\".",
+"editcomment" => "The edit comment was: \"<i>$1</i>\".",
"revertpage" => "Kembali kesuntingan akhir oleh $1",
# Undelete
@@ -811,10 +813,10 @@ Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). ",
"undeletepagetext" => "Halaman-halaman berikutnya telah dikeluarkan tapi masih ada di dalam capaian dan boleh dimasukkan semula. Capaian tersebut mungkin akan dikemaskini secara berkala", #"The following pages have been deleted but are still in the archive and can be restored. The archive may be periodically cleaned out.",
"undeletearticle" => "Masukkan semula halaman yang telah dikeluarkan", #"Restore deleted article",
"undeleterevisions" => "$1 revisi dicapai", #"$1 revisions archived",
-"undeletehistory" => "Jika anda masukkan semula halaman tersebut,
+"undeletehistory" => "Jika anda masukkan semula halaman tersebut,
semua revisi akan dimasukkan semula ke dalam sejarah.
Jika satu halaman telah dibuat dengan nama yang sama setelah penghapusan,
-revisi yang telah dimasukkan semula akan kelihatan dalam sejarah dahulu,
+revisi yang telah dimasukkan semula akan kelihatan dalam sejarah dahulu,
dan revisi terkini bagi halaman baru tidak akan digantikan secara automatik.", #"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" => "Revisi yang telah dikeluarkan seperti $1", #"Deleted revision as of $1",
"undeletebtn" => "Masukkan semula!", #"Restore!",
@@ -836,22 +838,22 @@ Lihat [[Wikipedia:Log_penghapusan]] untuk rekod terkini penghapusan dan kemasuka
#
"whatlinkshere" => "Pautan ke halaman ini",
"notargettitle" => "Tiada sasaran", #"No target",
-"notargettext" => "Anda tidak menspesifikasikan halaman
-atau pengguna sasaran untuk melaksanakan fungsi ini.",
+"notargettext" => "Anda tidak menspesifikasikan halaman
+atau pengguna sasaran untuk melaksanakan fungsi ini.",
"linklistsub" => "(Senarai pautan)", #"(List of links)",
"linkshere" => "Halaman-halaman berikut mempunyai pautan ke sini:", #"The following pages link to here:",
"nolinkshere" => "Tiada halaman mempunyai pautan ke sini.", #"No pages link to here.",
"isredirect" => "alih semula halaman", #"redirect page",
-# Block/unblock IP
+# Block/unblock IP
#
"blockip" => "Blok IP", #"Block IP",
-"blockiptext" => "Gunakan borang di bawah untuk blok
-capaian kemaskini daripada alamat IP atau pengguna tertentu.
-Ini perlu dilakukan untuk mencegah vandalisme,
-dan mengikut [[Wikipedia:Polisi|Polisi Wikipedia]].
-Masukkan alasan anda di bawah (contohnya mengambil
-halaman tertentu yang telah dirosakkan).",
+"blockiptext" => "Gunakan borang di bawah untuk blok
+capaian kemaskini daripada alamat IP atau pengguna tertentu.
+Ini perlu dilakukan untuk mencegah vandalisme,
+dan mengikut [[Wikipedia:Polisi|Polisi Wikipedia]].
+Masukkan alasan anda di bawah (contohnya mengambil
+halaman tertentu yang telah dirosakkan).",
"ipaddress" => "Alamat IP atau pengguna", #"IP Address or Username",
"ipbreason" => "Alasan", #"Reason",
"ipbsubmit" => "Hantar", #"Submit",
@@ -861,8 +863,8 @@ halaman tertentu yang telah dirosakkan).",
"blockipsuccesstext" => "Alamat IP atau pengguna \"$1\" telah diblok.
<br>Lihat [[Istimewa:Ipblocklist|IP and user block list]] untuk semak pemblokan.", #"The IP address or username \"$1\" has been blocked.
"unblockip" => "Lepaskan semula alamat IP atau pengguna dari diblok", #"Unblock IP address or user",
-"unblockiptext" => "Gunakan borang di bawah untuk masukkan semula
-capaian kemaskini ke alamat IP atau pengguna yang telah diblok sebelumnya.",
+"unblockiptext" => "Gunakan borang di bawah untuk masukkan semula
+capaian kemaskini ke alamat IP atau pengguna yang telah diblok sebelumnya.",
"ipusubmit" => "Lepaskan semula alamat ini dari diblok", #"Unblock this address",
"ipusuccess" => "Alamat IP atau pengguna \"$1\" dilepaskan dari diblok", #"IP address or user \"$1\" unblocked",
"ipblocklist" => "Senarai alamat IP dan pengguna yang diblok", #"List of blocked IP addresses and users",
@@ -875,14 +877,14 @@ capaian kemaskini ke alamat IP atau pengguna yang telah diblok sebelumnya.",
#
"lockdb" => "Kunci pangkalan data", #"Lock database",
"unlockdb" => "Buka semula pangkalan data dari dikunci", #"Unlock database",
-"lockdbtext" => "Mengunci pangkalan data akan menghalang pengguna dari
-menyunting halaman, menukar konfigurasi pengguna, sunting senarai pilihan mereka,
+"lockdbtext" => "Mengunci pangkalan data akan menghalang pengguna dari
+menyunting halaman, menukar konfigurasi pengguna, sunting senarai pilihan mereka,
dan lain-lain perkara yang melibatkan kemaskini terhadap pangkalan data.
-Sila pastikan anda mahu berbuat demikian, dan anda akan buka semula pangkalan
+Sila pastikan anda mahu berbuat demikian, dan anda akan buka semula pangkalan
data apabila penyelenggaraan telah selesai.",
-"unlockdbtext" => "Membuka semula pangkalan data dari dikunci akan
-membolehkan pengguna mengedit halaman, menukar konfigurasi pengguna,
-menyunting senarai pilihan mereka dan lain-lain perkara yang melibatkan
+"unlockdbtext" => "Membuka semula pangkalan data dari dikunci akan
+membolehkan pengguna mengedit halaman, menukar konfigurasi pengguna,
+menyunting senarai pilihan mereka dan lain-lain perkara yang melibatkan
kemaskini terhadap pangkalan data. Sila pastikan anda mahu berbuat demikian.",
"lockconfirm" => "Ya, saya memang mahu mengunci pangkalan data ini.", #"Yes, I really want to lock the database.",
"unlockconfirm" => "Ya, saya memang mahu membuka semula pangkalan data ini dari dikunci.", #"Yes, I really want to unlock the database.",
@@ -898,26 +900,26 @@ kemaskini terhadap pangkalan data. Sila pastikan anda mahu berbuat demikian.",
# SQL query
#
"asksql" => "Kueri SQL", #"SQL query",
-"asksqltext" => "Gunakan borang di bawah untuk membuat kueri langsung
+"asksqltext" => "Gunakan borang di bawah untuk membuat kueri langsung
bagi pangkalan data Wikipedia.
-Gunakan pembuka kata tunggal ('seperti ini') untuk menghadkan rangkaian
-string. Ini selalunya menambah beban terhadap pelayan, jadi sila gunakan
-fungsi ini dengan cermat.",
+Gunakan pembuka kata tunggal ('seperti ini') untuk menghadkan rangkaian
+string. Ini selalunya menambah beban terhadap pelayan, jadi sila gunakan
+fungsi ini dengan cermat.",
"sqlislogged" => "Harap maklum semua pertanyaan dilogkan.",
"sqlquery" => "Masukkan kueri", #"Enter query",
"querybtn" => "Hantar kueri", #"Submit query",
-"selectonly" => "Kueri selain dari \"SELECT\" adalah tidak dibenarkan
+"selectonly" => "Kueri selain dari \"SELECT\" adalah tidak dibenarkan
kepada pembangun Wikipedia.", #"Queries other than \"SELECT\" are restricted to
"querysuccessful" => "Kueri berjaya", #"Query successful",
# Move page
#
"movepage" => "Alih Halaman", #"Move page",
-"movepagetext" => "Borang di bawah digunakan untuk menukar halaman,
-mengalihkan semua data kepada nama baru.
+"movepagetext" => "Borang di bawah digunakan untuk menukar halaman,
+mengalihkan semua data kepada nama baru.
Tajuk yang lama akan terus dialih kepada tajuk yang baru.
-Pautan kepada tajuk yang lama tidak akan berubah, dan halaman
-perbualan tidak akan dikeluarkan sekiranya perlu.
+Pautan kepada tajuk yang lama tidak akan berubah, dan halaman
+perbualan tidak akan dikeluarkan sekiranya perlu.
@@ -927,10 +929,10 @@ perbualan tidak akan dikeluarkan sekiranya perlu.
-<b>AMARAN!</b>
-Ini menjadikan perubahan yang tidak dijangka dan drastik
-bagi halaman popular. Sila pastikan anda faham selok
-belok borang ini sebelum anda teruskan.",
+<b>AMARAN!</b>
+Ini menjadikan perubahan yang tidak dijangka dan drastik
+bagi halaman popular. Sila pastikan anda faham selok
+belok borang ini sebelum anda teruskan.",
"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
@@ -939,16 +941,16 @@ belok borang ini sebelum anda teruskan.",
In those cases, you will have to move or merge the page manually if desired.",
"movearticle" => "Alih halaman", #"Move page",
"movenologin" => "Tidak masuk sistem", #"Not logged in",
-"movenologintext" => "Anda mesti menjadi pengguna berdaftar dan <a href=\"" .
- wfLocalUrl( "Istimewa:Userlogin") . "\">logged in</a>
-untuk mengalihkan halaman.",
+"movenologintext" => "Anda mesti menjadi pengguna berdaftar dan <a href=\"" .
+ wfLocalUrl( "Istimewa:Userlogin") . "\">logged in</a>
+untuk mengalihkan halaman.",
"newtitle" => "Tajuk baru", #"To new title",
"movepagebtn" => "Alih halaman", #"Move page",
"pagemovedsub" => "Pengalihan berjaya", #"Move succeeded",
"pagemovedtext" => "Halaman \"[[$1]]\" ditukar kepada \"[[$2]]\".", #"Page \"[[$1]]\" moved to \"[[$2]]\".",
-"articleexists" => "Halaman dengan nama tersebut telah wujud,
-atau nama yang dipilih tidak sah.
-Sila pilih nama lain.",
+"articleexists" => "Halaman dengan nama tersebut telah wujud,
+atau nama yang dipilih tidak sah.
+Sila pilih nama lain.",
"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.",
@@ -1006,7 +1008,7 @@ class LanguageMs extends LanguageUtf8 {
global $wgMathNamesMs;
return $wgMathNamesMs;
}
-
+
function getDateFormats() {
global $wgDateFormatsMs;
return $wgDateFormatsMs;
@@ -1029,7 +1031,7 @@ class LanguageMs extends LanguageUtf8 {
global $wgMonthNamesMs;
return $wgMonthNamesMs[$key-1];
}
-
+
function getMonthRegex()
{
global $wgMonthNamesMs;
diff --git a/languages/LanguageNl.php b/languages/LanguageNl.php
index 38bbe829d004..6d0c15ced2d8 100644
--- a/languages/LanguageNl.php
+++ b/languages/LanguageNl.php
@@ -1,28 +1,39 @@
<?php
+#
+# Nederlands localisation for MediaWiki
+#
+# This file is encoded in UTF-8, no byte order mark.
+# For compatibility with Latin-1 installations, please
+# don't add literal characters above U+00ff.
+#
-/* WARNING: This file is still in ISO-8859-1. */
+require_once( "LanguageUtf8.php" );
# The names of the namespaces can be set here, but the numbers
# are magical, so don't change or move them! The Namespace class
# encapsulates some of the magic-ness.
/* private */ $wgNamespaceNamesNl = array(
- -2 => "Media",
- -1 => "Speciaal",
- 0 => "",
- 1 => "Overleg",
- 2 => "Gebruiker",
- 3 => "Overleg_gebruiker",
- 4 => "Wikipedia",
- 5 => "Overleg_Wikipedia",
- 6 => "Afbeelding",
- 7 => "Overleg_afbeelding",
- 8 => "MediaWiki",
- 9 => "Overleg_MediaWiki",
- 10 => "Template",
- 11 => "Template_talk"
-
-);
+ NS_MEDIA => "Media",
+ NS_SPECIAL => "Speciaal",
+ NS_MAIN => "",
+ NS_TALK => "Overleg",
+ NS_USER => "Gebruiker",
+ NS_USER_TALK => "Overleg_gebruiker",
+ NS_WIKIPEDIA => $wgMetaNamespace,
+ NS_WIKIPEDIA_TALK => "Overleg_$wgMetaNamespace",
+ NS_IMAGE => "Afbeelding",
+ NS_IMAGE_TALK => "Overleg_afbeelding",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "Overleg_MediaWiki",
+ NS_TEMPLATE => "Sjabloon",
+ NS_TEMPLATE_TALK => "Overleg_sjabloon",
+ NS_HELP => "Help",
+ NS_HELP_TALK => "Overleg_help",
+ NS_CATEGORY => "Categorie",
+ NS_CATEGORY_TALK => "Overleg_categorie"
+
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsNl = array(
"Uitgeschakeld", "Links vast", "Rechts vast", "Links zwevend"
@@ -36,7 +47,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesNl = array(
@@ -144,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",
@@ -199,7 +211,7 @@
"gnunote" => "Alle tekst op deze pagina valt onder de <a class=internal href='/wiki/Gnu_Vrije_Documentatie_Licentie'>GNU FDL</a>.",
"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",
@@ -207,9 +219,9 @@
"nbytes" => "$1 bytes",
"go" => "OK",
"ok" => "OK",
-"sitetitle" => "<span style=\"text-transform: none\">Wikipedia NL</span>", # Okay, HERE's an ugly hack. There should be a cleaner way to do this.
+"sitetitle" => "<span style=\"text-transform: none\">{{SITENAME}} NL</span>", # 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",
@@ -222,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
@@ -246,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:
<p>$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\" kopiëren 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.",
@@ -268,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" => "<h2>Welkom, $1!</h2><p>Uw gebruikersprofiel is aangemaakt. U kunt nu uw persoonlijke voorkeuren instellen.",
@@ -296,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.",
@@ -316,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:<br>$2<p>. 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.<p>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:<br>$2<p>. 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}}.<p>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",
@@ -342,7 +354,7 @@ Gelieve na ontvangst opnieuw aan te melden.",
"storedversion" => "Opgeslagen versie",
"editingold" => "<strong>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.</strong>\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'.<br> Hierbij belooft u ons tevens dat u deze tekst zelf hebt geschreven, of overgenomen uit een vrije, openbare bron.<br> <strong>GEBRUIK GEEN MATERIAAL DAT BESCHERMD WORDT DOOR AUTEURSRECHT, TENZIJ JE DAARTOE TOESTEMMING HEBT!</strong>",
+"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'.<br> Hierbij belooft u ons tevens dat u deze tekst zelf hebt geschreven, of overgenomen uit een vrije, openbare bron.<br> <strong>GEBRUIK GEEN MATERIAAL DAT BESCHERMD WORDT DOOR AUTEURSRECHT, TENZIJ JE DAARTOE TOESTEMMING HEBT!</strong>",
"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.",
@@ -372,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 <a HREF=\"http://nl.wikipedia.org/wiki/Wikipedia:Verboden_woorden\">Verboden woorden</a>.",
+"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 <a HREF=\"http://nl.wikipedia.org/wiki/{{ns:4}}:Verboden_woorden\">Verboden woorden</a>.",
"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",
@@ -389,9 +401,9 @@ Gelieve na ontvangst opnieuw aan te melden.",
"viewprevnext" => "($1) ($2) ($3) bekijken.",
"showingresults" => "Hieronder <b>$1</b> resultaten vanaf nummer <b>$2</b>.",
"showingresultsnum" => "Hieronder <b>$3</b> resultaten vanaf nummer <b>$2</b>.",
-"nonefound" => "<strong>Merk op:</strong> 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).
+"nonefound" => "<strong>Merk op:</strong> 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 <a HREF=\"http://pliny.wikipedia.org/tools/wikisearch.php\">multi-wikipedia zoeker</a> in de andere Wikipedia's, of buiten Wikipedia in een <a href=\"http://encyclopedie.zoekhulp.nl/?refer=Wikipedia.nl\">andere encyclopedie</a>. 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 <a HREF=\"http://pliny.wikipedia.org/tools/wikisearch.php\">multi-wikipedia zoeker</a> in de andere {{SITENAME}}'s, of buiten {{SITENAME}} in een <a href=\"http://encyclopedie.zoekhulp.nl/?refer=Wikipedia.nl\">andere encyclopedie</a>. 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" => "
@@ -399,8 +411,8 @@ Het kan natuurlijk dat er gewoon nog geen artikel aanwezig op Wikipedia NL over
$1<br>
$2 Toon redirects &nbsp; 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.<p>
-Via google kunt u zoeken op Wikipedia. <br>
+ Hierdoor is in de interne zoekfunctie van {{SITENAME}} (vermoedelijk) niet beschikbaar voor onbepaalde duur.<p>
+Via google kunt u zoeken op {{SITENAME}}. <br>
<form method=\"get\" action=\"http://www.google.com/search\">
<table bgcolor=\"#ffffff\" style=\"width: 752px; height: 76px;\"><tbody><tr><td>
<a href=\"http://www.google.com/\">
@@ -408,16 +420,16 @@ Via google kunt u zoeken op Wikipedia. <br>
</td>
<td>
<input type=\"text\" name=\"q\" size=\"31\" maxlength=\"255\" value=\"\">
-<input type=\"submit\" name=\"btnG\" value=\"Met Google zoeken in Wikipedia\">
+<input type=\"submit\" name=\"btnG\" value=\"Met Google zoeken in {{SITENAME}}\">
<font size=\"-1\">
-<input type=\"hidden\" name=\"domains\" value=\"http://nl.wikipedia.org\"><br><input type=\"radio\" name=\"sitesearch\" value=\"\">Het volledige internet<input type=\"radio\" name=\"sitesearch\" value=\"http://nl.wikipedia.org\" checked=\"checked\">Wikipedia NL<br>
+<input type=\"hidden\" name=\"domains\" value=\"http://nl.wikipedia.org\"><br><input type=\"radio\" name=\"sitesearch\" value=\"\">Het volledige internet<input type=\"radio\" name=\"sitesearch\" value=\"http://nl.wikipedia.org\" checked=\"checked\">{{SITENAME}} NL<br>
</font>
</td></tr></tbody></table>
</form>
<p> 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)",
@@ -429,11 +441,11 @@ Enkel de pagina's die geen prefix (zoals Wikipedia:, Gebruiker: of Overleg:) heb
wfLocalUrl( "Special:Userlogin" ) . "\">aangemeld</a> 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",
@@ -457,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:",
@@ -469,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. <br>
-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].<p>
-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. <br>
+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].<p>
+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 <strong>$1</strong> laatste wijzigingen gedaan in de laatste <strong>$2</strong> dagen.",
"rcnotefrom" => "Veranderingen sinds <b>$2</b> (met een maximum van <b>$1</b> veranderingen).",
@@ -503,16 +515,16 @@ om bestanden te uploaden.",
"uploadfile" => "upload bestand",
"uploaderror" => "upload fout",
"uploadtext" => "<strong>STOP!</strong> Voor u iets hier upload,
-wees zeker dat het in overeenkomst is met het Wikipedia NL <a href=\"" .
-wfLocalUrlE( "Wikipedia:Beleid_voor_gebruik_van_afbeeldingen" ) . "\">afbeeldingsbeleid</a>.
+wees zeker dat het in overeenkomst is met het {{SITENAME}} NL <a href=\"" .
+wfLocalUrlE( "{{ns:4}}:Beleid_voor_gebruik_van_afbeeldingen" ) . "\">afbeeldingsbeleid</a>.
<p>Om de reeds ge-uploade bestanden te bekijken of te zoeken ga naar de <a href=\"" . wfLocalUrlE( "Speciaal:Imagelist" ) .
"\">lijst van ge-uploade bestanden</a>.
Uploads en verwijderingen worden bijgehouden in het <a href=\"" .
-wfLocalUrlE( "Wikipedia:Upload_logboek" ) . "\">upload logboek</a>.
+wfLocalUrlE( "{{ns:4}}:Upload_logboek" ) . "\">upload logboek</a>.
<p>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.
<p>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; <b>[[afbeelding:uw_foto.jpg]]</b> of <b>[[afbeelding:uw_logo.png|alt text]]</b> of <b>[[media:uw_geluid.ogg]]</b> voor audio.
-<p>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.",
+<p>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).
@@ -524,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.",
@@ -558,6 +570,7 @@ Geef uw bestanden een duidelijk omschrijvende naam om verwarring te voorkomen. O
"imghistory" => "Geschiedenis van de afbeelding",
"revertimg" => "rev",
"deleteimg" => "verw",
+"deleteimgcompletely" => "verw",
"imghistlegend" => "Verklaring: (cur)= huidige afbeelding, (verw) = verwijder de oude versie, (rev) = breng oude versie terug.<br>
<i>Klik op de datum om de afbeeldingen die ge-upload zijn op die datum te zien</i>.",
"imagelinks" => "Afbeeldingsverwijzingen",
@@ -567,20 +580,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 <b>$1</b> 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 <b>$2</b> artikels.<p>
+"sitestatstext" => "Er zijn <b>$1</b> 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 <b>$2</b> artikels.<p>
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. <br>Als doorverwijspagina's worden die pagina's beschouwd waar vanaf $1 naar verwezen wordt.<br>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. <br>Als doorverwijspagina's worden die pagina's beschouwd waar vanaf $1 naar verwezen wordt.<br>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" => "<b>Let op:</b> 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.<br>\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",
@@ -620,9 +633,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" => "<p>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" => "<p>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. <p>Deze dienst is enkel ter uwer informatie. Wikipedia NL heeft <u>geen enkele</u> 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. <p>Deze dienst is enkel ter uwer informatie. {{SITENAME}} NL heeft <u>geen enkele</u> relatie met deze websites.",
"alphaindexline" => "$1 tot $2",
# Email this user
@@ -695,7 +708,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.",
@@ -724,7 +737,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
@@ -782,18 +795,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
@@ -822,157 +835,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 f61cf40a1546..332dcbcfcfd8 100644
--- a/languages/LanguageNo.php
+++ b/languages/LanguageNo.php
@@ -8,22 +8,25 @@
# encapsulates some of the magic-ness.
#
/* private */ $wgNamespaceNamesNo = array(
- -2 => "Medium",
- -1 => "Spesial",
- 0 => "",
- 1 => "Diskusjon",
- 2 => "Bruker",
- 3 => "Brukerdiskusjon",
- 4 => "Wikipedia",
- 5 => "Wikipedia-diskusjon",
- 6 => "Bilde",
- 7 => "Bildediskusjon",
- 8 => "MediaWiki",
- 9 => "MediaWiki-diskusjon",
- 10 => "Template",
- 11 => "Template_talk"
-
-);
+ NS_MEDIA => "Medium",
+ NS_SPECIAL => "Spesial",
+ NS_MAIN => "",
+ NS_TALK => "Diskusjon",
+ NS_USER => "Bruker",
+ NS_USER_TALK => "Brukerdiskusjon",
+ NS_WIKIPEDIA => "Wikipedia",
+ NS_WIKIPEDIA_TALK => "Wikipedia-diskusjon",
+ NS_IMAGE => "Bilde",
+ NS_IMAGE_TALK => "Bildediskusjon",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWiki-diskusjon",
+ NS_TEMPLATE => "Mal",
+ NS_TEMPLATE_TALK => "Maldiskusjon",
+ NS_HELP => "Hjelp",
+ NS_HELP_TALK => "Hjelpdiskusjon",
+ NS_CATEGORY => "Kategori",
+ NS_CATEGORY_TALK => "Kategoridiskusjon",
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsNo = array(
"Ingen", "Fast venstre", "Fast høyre", "Flytende venstre"
@@ -37,7 +40,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesNo = array(
@@ -649,6 +653,7 @@ og av hvem, og andre ting du vet om filen.",
"imghistory" => "Billedhistorikk",
"revertimg" => "gjenopprett",
"deleteimg" => "slett",
+"deleteimgcompletely" => "slett",
"imghistlegend" => "Forklaring: (nå) = dette er det nåværende bilde,
(slett) = slett denne gamle versjonen, (gjenopprett) = gjenopprett en gammel versjon.
<br><i>Klikk på en dato for å se bildet som ble lastet opp da</i>.",
@@ -1159,8 +1164,12 @@ class LanguageNo extends LanguageUtf8 {
function getMessage( $key )
{
- global $wgAllMessagesNo;
- return $wgAllMessagesNo[$key];
+ global $wgAllMessagesNo;
+ if( isset( $wgAllMessagesNo[$key] ) ) {
+ return $wgAllMessagesNo[$key];
+ } else {
+ return ""; # ??
+ }
}
# Inherit ucfirst()
diff --git a/languages/LanguageOc.php b/languages/LanguageOc.php
index c2249b8a8bfd..7aaa2195387c 100644
--- a/languages/LanguageOc.php
+++ b/languages/LanguageOc.php
@@ -21,7 +21,7 @@ require_once( "LanguageUtf8.php" );
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsOc = array(
"Cap", "Esquèr", "Drech", "Flotejant a esquèr"
@@ -35,7 +35,8 @@ require_once( "LanguageUtf8.php" );
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesOc = array(
@@ -576,6 +577,7 @@ Suivez ce lien: ($2) pour accéder à la page de description, et donner des info
"imghistory" => "Historique de l'image",
"revertimg" => "rétab",
"deleteimg" => "suppr",
+"deleteimgcompletely" => "suppr",
"imghistlegend" => "Légende: (actu) = ceci est l'image actuelle, (suppr) = supprimer
cette ancienne version, (rétab) = rétablir cette ancienne version.
<br><i>Cliquez sur la date pour voir l'image copiée à cette date</i>.",
diff --git a/languages/LanguagePl.php b/languages/LanguagePl.php
index 76ef80b6642d..31212820e155 100644
--- a/languages/LanguagePl.php
+++ b/languages/LanguagePl.php
@@ -1,6 +1,8 @@
<?php
require_once("LanguageUtf8.php");
+# FIXME: Lots of hardcoded Wikipedia-related text needs to be cleaned up.
+
# NOTE: To turn off "Current Events" in the sidebar,
# set "currentevents" => "-"
@@ -8,22 +10,36 @@ require_once("LanguageUtf8.php");
# are magical, so don't change or move them! The Namespace class
# encapsulates some of the magic-ness.
#
+
+# Yucky hardcoding hack:
+if( $wgMetaNamespace == "Wikipedia" ) {
+ $wgMetaTalkNamespace = "Dyskusja_Wikipedii";
+} elseif( $wgMetaNamespace == "Wikisłownik" ) {
+ $wgMetaTalkNamespace = "Wikidyskusja";
+} else {
+ $wgMetaTalkNamespace = "Dyskusja_$wgMetaNamespace";
+}
+
/* private */ $wgNamespaceNamesPl = array(
- -2 => "Media",
- -1 => "Specjalna",
- 0 => "",
- 1 => "Dyskusja",
- 2 => "Wikipedysta",
- 3 => "Dyskusja_wikipedysty",
- 4 => "Wikipedia",
- 5 => "Dyskusja_Wikipedii",
- 6 => "Grafika",
- 7 => "Dyskusja_grafiki",
- 8 => "MediaWiki",
- 9 => "Dyskusja_MediaWiki",
- 10 => "Źródła",
- 11 => "Dyskusja źródeł"
-);
+ NS_MEDIA => "Media",
+ NS_SPECIAL => "Specjalna",
+ NS_MAIN => "",
+ NS_TALK => "Dyskusja",
+ NS_USER => "Wikipedysta",
+ NS_USER_TALK => "Dyskusja_Wikipedysty",
+ NS_WIKIPEDIA => $wgMetaNamespace,
+ NS_WIKIPEDIA_TALK => $wgMetaTalkNamespace,
+ NS_IMAGE => "Grafika",
+ NS_IMAGE_TALK => "Dyskusja_grafiki",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "Dyskusja_MediaWiki",
+ NS_TEMPLATE => "Szablon",
+ NS_TEMPLATE_TALK => "Dyskusja_szablonu",
+ NS_HELP => "Pomoc",
+ NS_HELP_TALK => "Dyskusja_pomocy",
+ NS_CATEGORY => "Kategoria",
+ NS_CATEGORY_TALK => "Dyskusja_kategorii"
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsPl = array(
"Brak", "Stały, z lewej", "Stały, z prawej", "Unoszący się, z lewej"
@@ -37,7 +53,8 @@ require_once("LanguageUtf8.php");
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesPl = array(
@@ -163,18 +180,18 @@ require_once("LanguageUtf8.php");
"mainpagetext" => "Instalacja oprogramowania powiodła się.",
"about" => "O Wikipedii",
"aboutwikipedia" => "O Wikipedii",
-"aboutpage" => "Wikipedia:O_Wikipedii",
+"aboutpage" => "{{ns:4}}:O_Wikipedii",
"help" => "Pomoc",
-"helppage" => "Wikipedia:Pomoc",
-"wikititlesuffix" => "Wikipedia",
+"helppage" => "{{ns:4}}:Pomoc",
+"wikititlesuffix" => "{{SITENAME}}",
"bugreports" => "Raport o błędach",
-"bugreportspage" => "Wikipedia:Błędy",
+"bugreportspage" => "{{ns:4}}:Błędy",
"sitesupport" => "Dary pieniężne",
"sitesupportpage" => "http://wikimediafoundation.org/fundraising", # If not set, won't appear. Can be wiki page or URL
"faq" => "FAQ",
-"faqpage" => "Wikipedia:FAQ",
+"faqpage" => "{{ns:4}}:FAQ",
"edithelp" => "Pomoc w edycji",
-"edithelppage" => "Wikipedia:Jak_edytować_stronę",
+"edithelppage" => "{{ns:4}}:Jak_edytować_stronę",
"cancel" => "Anuluj",
"qbfind" => "Znajdź",
"qbbrowse" => "PrzeglÄ…danie",
@@ -214,7 +231,7 @@ require_once("LanguageUtf8.php");
"gnunote" => "udostępniana jest w oparciu o licencję <a class=internal href='/wiki/GNU_FDL'>GNU FDL</a>; możesz ją samodzielnie uzupełnić lub poprawić.",
"printsubtitle" => "(z http://pl.wikipedia.org)",
"protectedpage" => "Strona zabezpieczona",
-"administrators" => "Wikipedia:Administratorzy",
+"administrators" => "{{ns:4}}:Administratorzy",
"sysoptitle" => "Wymagane prawa dostępu administratora",
"sysoptext" => "Ta operacja może być wykonana tylko przez
użytkowania o statusie \"administrator\".
@@ -226,7 +243,7 @@ Zobacz $1.",
"nbytes" => "$1 bajtów",
"go" => "OK",
"ok" => "OK",
-"sitetitle" => "Wikipedia",
+"sitetitle" => "{{SITENAME}}",
"sitesubtitle" => "Wolna Encyklopedia",
"retrievedfrom" => "Źródło: \"$1\"",
"newmessages" => "Masz $1.",
@@ -263,7 +280,7 @@ Ostatnie, nieudane zapytanie to:
\"$1\"
wywołane zostało przez funkcję \"$2\".
MySQL zgłosił błąd \"$3: $4\".\n",
-"noconnect" => "Wikipedia ma chwilowo problemy techniczne. Nie można połączyć się z serwerem bazy danych. Przepraszamy!",
+"noconnect" => "{{SITENAME}} ma chwilowo problemy techniczne. Nie można połączyć się z serwerem bazy danych. Przepraszamy!",
"nodb" => "Nie można odnaleźć bazy danych $1",
"cachederror" => "Poniższy tekst strony jest kopią znajdującą się w pamięci podręcznej i może być już niekatualny.",
"readonly" => "Baza danych jest zablokowana",
@@ -300,7 +317,7 @@ czasu UTC. Przepraszamy!",
"perfdisabledstub" => "Oto ostatnia zapisana wersja strony z $1",
"viewsource" => "Tekst źródłowy",
"protectedtext" => "Wyłączono możliwość edycji tej strony; istnieje kilka powodów
-dla których jest to robione - zobacz [[Wikipedia:Strona_zabezpieczona]]
+dla których jest to robione - zobacz [[{{ns:4}}:Strona_zabezpieczona]]
Tekst źródłowy strony można w dalszym ciągu podejrzeć i skopiować.",
@@ -342,7 +359,7 @@ Nie zapomnij dostosować <i>preferencji</i>.",
Sprawdź pisownię lub użyj poniższego formularza by utworzyć nowe konto.",
"wrongpassword" => "Podane przez Ciebie hasło jest nieprawidłowe. Spróbuj jeszcze raz.",
"mailmypassword" => "Wyślij mi nowe hasło",
-"passwordremindertitle" => "Wikipedia przypomina o haśle",
+"passwordremindertitle" => "{{SITENAME}} przypomina o haśle",
"passwordremindertext" => "KtoÅ› (prawdopodobnie Ty, spod adresu $1)
poprosił od nas o wysłanie nowego hasła dostępu do Wikipedii.
Aktualne hasło dla użytkownika \"$2\" to \"$3\".
@@ -363,7 +380,7 @@ Po otrzymaniu go zaloguj siÄ™ ponownie.",
"blockedtitle" => "Użytkownik jest zablokowany",
"blockedtext" => "Twoje konto lub adres IP zostały zablokowane przez $1.
Podany powód to:<br>$2.<p>W celu wyjaśnienia sprawy zablokowania możesz się skontaktować z $1 lub innym
-[[Wikipedia:Administratorzy|administratorem]].",
+[[{{ns:4}}:Administratorzy|administratorem]].",
"newarticle" => "(Nowy)",
"newarticletext" => "Nie ma jeszcze artykułu o tym tytule. W poniższym polu można wpisać pierwszy jego fragment. Jeśli nie to było Twoim zamiarem, wciśnij po prostu ''Wstecz''.",
"anontalkpagetext" => "---- ''To jest strona dyskusyjna dla użytkowników
@@ -410,7 +427,7 @@ artykułu. Proponujemy przenieść jej tekst do prywatnego pliku
"protectedpagewarning" => "UWAGA: Modyfikacja tej strony została zablokowana.
Mogą ją edytować jedynie użytkownicy z prawami administracyjnymi.
Upewnij się, że postępujesz zgodnie z
-<a href='/wiki/Wikipedia:Blokowanie_stron'>zasadami dotyczÄ…cymi
+<a href='/wiki/{{ns:4}}:Blokowanie_stron'>zasadami dotyczÄ…cymi
zablokowanych stron</a>.",
@@ -442,7 +459,7 @@ Sprawdź proszę URL użyty przez Ciebie by uzyskać dostęp do tej strony.\n",
# Search results
#
"searchresults" => "Wyniki wyszukiwania",
-"searchhelppage" => "Wikipedia:Przeszukiwanie",
+"searchhelppage" => "{{ns:4}}:Przeszukiwanie",
"searchingwikipedia" => "Przeszukiwanie Wikipedii",
"searchresulttext" => "Aby dowiedzieć się więcej o przeszukiwaniu Wikipedii, zobacz $1.",
"searchquery" => "Dla zapytania \"$1\"",
@@ -511,7 +528,7 @@ value=\"{$wgServer}\" checked> {$wgServer} <br>
przez zmianÄ… swoich preferencji.",
"prefslogintext" => "Zalogowano Cię jako \"$1\". Twój numer identyfikacyjny to $2.
-Zobacz [[Wikipedia:Preferencje]], aby poznać znaczenie poszczególnych opcji.",
+Zobacz [[{{ns:4}}:Preferencje]], aby poznać znaczenie poszczególnych opcji.",
"prefsreset" => "Preferencje domyślne zostały odtworzone.",
"qbsettings" => "Pasek szybkiego dostępu",
"changepassword" => "Zmiana hasła",
@@ -553,7 +570,7 @@ lub \"1\" (czas zimowy).",
"recentchanges" => "Ostatnie zmiany",
"recentchangestext" => "Ta strona przedstawia historiÄ™ ostatnich zmian w polskiej Wikipedii.
-[[Wikipedia:Powitanie nowicjuszy|Witaj]]! Jeśli jesteś tu po raz pierwszy, zapoznaj się, proszę, z tymi stronami: [[wikipedia:FAQ|Wikipedia FAQ]], [[Wikipedia:Zasady i wskazówki|polityka Wikipedii]] (a zwłaszcza [[Wikipedia:Nazewnictwo|konwencje nazywania stron]], [[Wikipedia:Neutralny punkt widzenia|neutralny punkt widzenia]]) oraz [[Wikipedia:Najczęstsze nieporozumienia|najczęstsze nieporozumienia]].
+[[{{ns:4}}:Powitanie nowicjuszy|Witaj]]! Jeśli jesteś tu po raz pierwszy, zapoznaj się, proszę, z tymi stronami: [[{{ns:4}}:FAQ|{{SITENAME}} FAQ]], [[{{ns:4}}:Zasady i wskazówki|polityka Wikipedii]] (a zwłaszcza [[{{ns:4}}:Nazewnictwo|konwencje nazywania stron]], [[{{ns:4}}:Neutralny punkt widzenia|neutralny punkt widzenia]]) oraz [[{{ns:4}}:Najczęstsze nieporozumienia|najczęstsze nieporozumienia]].
Jeśli zależy Ci na dalszym rozwoju Wikipedii, nie dodawaj materiałów zastrzeżonych prawami autorskimi. Złamanie tej zasady mogłyby narazić projekt Wikipedii na poważne konsekwencje prawne. Zobacz także [http://meta.wikipedia.org/wiki/Special:Recentchanges ostatnie zmiany na stronach dyskusyjnych projektu].",
"rcloaderr" => "ÅadujÄ™ ostatnie zmiany",
@@ -586,15 +603,15 @@ przed przesłaniem pików.",
"uploadfile" => "Prześlij plik",
"uploaderror" => "Błąd przesyłki",
"uploadtext" => "<strong>STOP!</strong> Zanim prześlesz plik,
-przeczytaj <a href=\"" . wfLocalUrlE( "Wikipedia:Zasady_dołączania_plików" ) .
+przeczytaj <a href=\"" . wfLocalUrlE( "{{ns:4}}:Zasady_dołączania_plików" ) .
"\">zasady dołączania plików</a> i upewnij się, że przesyłając pozostaniesz z
nimi w zgodzie.
<p>Jeśli chcesz przejrzeć lub przeszukać dotychczas przesłane pliki,
przejdź do <a href=\"" . wfLocalUrlE( "Specjalna:Imagelist" ) .
"\">listy dołączonych plików</a>.
Wszystkie przesyłki i skasowania są odnotowane na
-specjalnych wykazach (<a href=\"" . wfLocalUrlE( "Wikipedia:Dołączone" ) .
-"\">dołączone</a>, <a href=\"" . wfLocalUrlE( "Wikipedia:Usunięte" ) .
+specjalnych wykazach (<a href=\"" . wfLocalUrlE( "{{ns:4}}:Dołączone" ) .
+"\">dołączone</a>, <a href=\"" . wfLocalUrlE( "{{ns:4}}:Usunięte" ) .
"\">usunięte</a>).
<p>By przesłać nowy plik mający zilustrować Twój artykuł skorzystaj
z poniższego formularza.
@@ -627,7 +644,7 @@ Wszystkie czasy odnoszÄ… siÄ™ do strefy czasu uniwersalnego (UTC).
"filedesc" => "Opis",
"affirmation" => "Potwierdzam, że właściciel praw autorskich do tego pliku
zgadza się udzielić licencji zgodnie z $1.",
-"copyrightpage" => "Wikipedia:Prawa_autorskie",
+"copyrightpage" => "{{ns:4}}:Prawa_autorskie",
"copyrightpagename" => "prawami autorskimi Wikipedii",
"uploadedfiles" => "Przesłane pliki",
"noaffirmation" => "Musisz potwierdzić, że Twoja przesyłka nie narusza żadnych
@@ -665,6 +682,7 @@ i cokolwiek co wiesz o pliku, a wydaje Ci się ważne.",
"imghistory" => "Historia pliku",
"revertimg" => "przywróć",
"deleteimg" => "usuń",
+"deleteimgcompletely" => "usuń",
"imghistlegend" => "Legenda: (bież) = to jest obecny plik, (usuń) = usuń
tę starszą wersję, (przywróć) = przywróć tę starszą wersję.
<br><i>Kliknij na datę aby zobaczyć jakie pliki przesłano tego dnia</i>.",
@@ -696,7 +714,7 @@ pomagających w prostej administracji. Niektóre z nich obciążają bazę danyc
więc, by ich nie nadużywać.",
"maintenancebacklink" => "Powrót do strony prostej administracji",
"disambiguations" => "Strony ujednoznaczniajÄ…ce",
-"disambiguationspage" => "Wikipedia:Strony_ujednoznaczniajÄ…ce",
+"disambiguationspage" => "{{ns:4}}:Strony_ujednoznaczniajÄ…ce",
"disambiguationstext" => "Poniższe artykuły odwołują się do <i>stron
ujednoznaczniających</i>, a powinny odwoływać się bezpośrednio do hasła
związanego z treścią artykułu.<br>Strona uznawana jest za ujednoznaczniającą
@@ -760,7 +778,7 @@ na tej liście mimo, że żadna strona tej Wikipedii nie odwołuje się do nich.
"booksourcetext" => "Oto lista linków do innych witryn,
które pośredniczą w sprzedaży nowych i używanych książek i mogą podać
informacje o książkach, których szukasz.
-Wikipedia nie jest stowarzyszona z żadnym ze sprzedawców,
+{{SITENAME}} nie jest stowarzyszona z żadnym ze sprzedawców,
a ta lista nie powinna być interpretowana jako świadectwo udziału w zyskach.",
"alphaindexline" => "$1 --> $2",
@@ -847,7 +865,7 @@ Zaznacz, które z nich mamy usunąć z listy i kliknij przycisk
lub plik z bazy danych razem z dotyczÄ…cÄ… ich historiÄ….
Potwierdź, proszę, swoje zamiary, tzn., że rozumiesz konsekwencje,
i że robisz to w zgodzie z
-[[Wikipedia:Zasady i wskazówki|zasadami Wikipedii]].",
+[[{{ns:4}}:Zasady i wskazówki|zasadami Wikipedii]].",
"confirmcheck" => "Tak, naprawdę chcę usunąć.",
"actioncomplete" => "Operacja wykonana",
@@ -892,7 +910,7 @@ pozostanie bez zmian.",
"undeletebtn" => "Odtwórz!",
"undeletedarticle" => "odtworzono \"$1\"",
"undeletedtext" => "Pomyślnie odtworzono stronę [[$1]].
-Zobacz [[Wikipedia:Usunięte]], jeśli chcesz przejrzeć rejestr ostatnio
+Zobacz [[{{ns:4}}:Usunięte]], jeśli chcesz przejrzeć rejestr ostatnio
skasowanych i odtworzonych stron.",
# Contributions
@@ -924,7 +942,7 @@ ta operacja ma być wykonana.",
"blockiptext" => "Użyj poniższego formularza aby zablokować prawo
zapisu spod określonego adresu IP.
Powinno się to robić jedynie by zapobiec wandalizmowi, a zarazem
-w zgodzie z [[Wikipedia:Zasady i wskazówki|zasadami Wikipedii]].
+w zgodzie z [[{{ns:4}}:Zasady i wskazówki|zasadami Wikipedii]].
Podaj powód (np. umieszczając nazwy stron, na których dopuszczono
siÄ™ wandalizmu).",
"ipaddress" => "Adres IP",
diff --git a/languages/LanguagePt.php b/languages/LanguagePt.php
index 8a07adda9443..525a54dd593a 100644
--- a/languages/LanguagePt.php
+++ b/languages/LanguagePt.php
@@ -11,21 +11,26 @@
# and Rodrigo Calanca Nishino from Portuguese Wikipedia
#
/* private */ $wgNamespaceNamesPt = array(
- -1 => "Especial",
- 0 => "",
- 1 => "Discussão",
- 2 => "Usuário",
- 3 => "Usuário_Discussão",
- 4 => "Wikipedia",
- 5 => "Wikipedia_Discussão",
- 6 => "Imagem",
- 7 => "Imagem_Discussão",
- 8 => "MediaWiki",
- 9 => "MediaWiki_Discussão",
- 10 => "Template",
- 11 => "Template_talk"
-
-);
+ NS_MEDIA => "Media",
+ NS_SPECIAL => "Especial",
+ NS_MAIN => "",
+ NS_TALK => "Discussão",
+ NS_USER => "Usuário",
+ NS_USER_TALK => "Usuário_Discussão",
+ NS_WIKIPEDIA => $wgMetaNamespace,
+ NS_WIKIPEDIA_TALK => "{$wgMetaNamespace}_Discussão",
+ NS_IMAGE => "Imagem",
+ NS_IMAGE_TALK => "Imagem_Discussão",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWiki_Discussão",
+ NS_TEMPLATE => "Predefinição",
+ NS_TEMPLATE_TALK => "Predefinição_Discussão",
+ NS_HELP => "Ajuda",
+ NS_HELP_TALK => "Ajuda_Discussão",
+ NS_CATEGORY => "Categoria",
+ NS_CATEGORY_TALK => "Categoria_Discussão"
+
+) + $wgNamespaceNamesEn;
/* private */ $wgDefaultUserOptionsPt = array(
"quickbar" => 1, "underline" => 1, "hover" => 1,
@@ -38,7 +43,7 @@
);
/* private */ $wgQuickbarSettingsPt = array(
- "Nada", "Fixado à esquerda", "Fixado à direita", "Flutuando à Esquerda"
+ "Nada", "Fixado � esquerda", "Fixado � direita", "Flutuando � Esquerda"
);
/* private */ $wgSkinNamesPt = array(
@@ -49,7 +54,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesPt = array(
@@ -161,7 +167,7 @@
/* private */ $wgDeveloperSpecialPagesPt = array(
"Lockdb" => "Torna o banco de dados como apenas leitura",
- "Unlockdb" => "Restaura o acesso à escrita no banco de dados",
+ "Unlockdb" => "Restaura o acesso � escrita no banco de dados",
"Debug" => "\'Debugar\' informações"
);
@@ -179,17 +185,17 @@
"mainpage" => "Página principal",
"mainpagetext" => "Software Wiki instalado com sucesso.",
"about" => "Sobre",
-"aboutwikipedia" => "Sobre a Wikipedia",
-"aboutpage" => "Wikipedia:Sobre",
+"aboutwikipedia" => "Sobre a {{SITENAME}}",
+"aboutpage" => "{{ns:4}}:Sobre",
"help" => "Ajuda",
-"helppage" => "Wikipedia:Ajuda",
-"wikititlesuffix" => "Wikipedia",
+"helppage" => "{{ns:4}}:Ajuda",
+"wikititlesuffix" => "{{SITENAME}}",
"bugreports" => "Reportagem de 'bugs'",
-"bugreportspage" => "Wikipedia:Reportag_Bug",
+"bugreportspage" => "{{ns:4}}:Reportag_Bug",
"faq" => "FAQ",
-"faqpage" => "Wikipedia:FAQ",
+"faqpage" => "{{ns:4}}:FAQ",
"edithelp" => "Ajuda de edição",
-"edithelppage" => "Wikipedia:Como_editar_uma_página",
+"edithelppage" => "{{ns:4}}:Como_editar_uma_página",
"cancel" => "Cancela",
"qbfind" => "Procura",
"qbbrowse" => "Folhear",
@@ -202,7 +208,7 @@
"currentevents" => "Eventos atuais",
"errorpagetitle" => "Erro",
"returnto" => "Retorna para $1.",
-"fromwikipedia" => "Origem: Wikipedia, a enciclopédia livre.",
+"fromwikipedia" => "Origem: {{SITENAME}}, a enciclopédia livre.",
"whatlinkshere" => "Páginas que se ligam a essa",
"help" => "Ajuda",
"search" => "Busca",
@@ -229,7 +235,7 @@
"gnunote" => "Todo o texto é disponível sob os termos da <a class=internal href='$wgScriptPath/GNU_FDL'>GNU Free Documentation License</a>.",
"printsubtitle" => "(De http://www.wikipedia.org/pt)",
"protectedpage" => "Página protegida",
-"administrators" => "Wikipedia:Administradores",
+"administrators" => "{{ns:4}}:Administradores",
"sysoptitle" => "Acesso de OpSys necessário",
"sysoptext" => "A ação que você requisitou só pode ser
executada por usuários com status de \"opsys\".
@@ -241,7 +247,7 @@ Veja $1.",
"nbytes" => "$1 bytes",
"go" => "vai",
"ok" => "OK",
-"sitetitle" => "Wikipedia",
+"sitetitle" => "{{SITENAME}}",
"sitesubtitle" => "A enciclopédia livre",
"retrievedfrom" => "Retirado de \"$1\"",
"newmessages" => "You have $1.",
@@ -255,10 +261,10 @@ Veja $1.",
#
"nosuchaction" => "Ação não existente",
"nosuchactiontext" => "A ação especificada pela URL não é
-reconhecida pelo programa da Wikipedia",
+reconhecida pelo programa da {{SITENAME}}",
"nosuchspecialpage" => "Não exista esta página especial",
"nospecialpagetext" => "Você requisitou uma página especial que não é
-reconhecida pelo software da Wikipedia.",
+reconhecida pelo software da {{SITENAME}}.",
# General errors
#
@@ -284,7 +290,7 @@ dificuldades técnicas, e não pode contatar o servidor de bando de dados.",
solicitada, e pode não estar atualizada.",
"readonly" => "Banco de dados somente para leitura",
"enterlockreason" => "Entre com um motivo para trancá-lo, incluindo uma estimativa de quando poderá novamente ser escrito",
-"readonlytext" => "O Banco-de-dados da Wikipedia está atualmente bloqueado para novos
+"readonlytext" => "O Banco-de-dados da {{SITENAME}} está atualmente bloqueado para novos
artigos e outras modificações, provávelmente por uma manutenção rotineira no Bando de Dados,
mais tarde voltará ao normal.
@@ -317,11 +323,11 @@ porque tornava o banco de dados lento demais a ponto de impossibilitar o wiki.",
#
"logouttitle" => "Saída de utilizador",
"logouttext" => "Você agora não está mais autenticado.
-Você pode continuar a usar a Wikipedia anonimamente, ou pode se autenticar
+Você pode continuar a usar a {{SITENAME}} anonimamente, ou pode se autenticar
novamente como o mesmo utilizador ou como um utilizador diferente.\n",
"welcomecreation" => "<h2>Bem-vindo, $1!</h2><p>Sua conta foi criada.
-Não se esqueça de personalizar suas preferências na Wikipedia.",
+Não se esqueça de personalizar suas preferências na {{SITENAME}}.",
"loginpagetitle" => "Login de usuário",
"yourname" => "Seu nome de usuário",
@@ -332,7 +338,7 @@ Não se esqueça de personalizar suas preferências na Wikipedia.",
"loginproblem" => "<b>Houve um problema com a sua autenticação.</b><br>Tente novamente!",
"alreadyloggedin" => "<font color=red><b>Utilizador $1, você já está autenticado!</b></font><br>\n",
-"areyounew" => "Se você é novo(a) na Wikipedia e quer fazer uma conta de utilizador, entre com um nome de utilizador e depois digite e re-digite uma senha. Seu e-mail é opcional - se você perder a sua senha, você pode requisitar para que ela seja enviada para o endereço que você informou.<br>\n",
+"areyounew" => "Se você é novo(a) na {{SITENAME}} e quer fazer uma conta de utilizador, entre com um nome de utilizador e depois digite e re-digite uma senha. Seu e-mail é opcional - se você perder a sua senha, você pode requisitar para que ela seja enviada para o endereço que você informou.<br>\n",
"login" => "Entrar",
"userlogin" => "Entrar",
@@ -345,16 +351,16 @@ Não se esqueça de personalizar suas preferências na Wikipedia.",
"userexists" => "O nome de usuário que você digitou já existe. Por favor, escolha um nome diferente.",
"youremail" => "Seu e-mail*",
"yournick" => "Seu apelido (para assinaturas)",
-"emailforlost" => "* Colocar o endereço de e-mail é opcional. Mas permite que as pessoas entrem em contato com você sem que você tenha que revelar seu e-mail à elas, e também é útil se você se esquecer da sua senha.",
+"emailforlost" => "* Colocar o endereço de e-mail é opcional. Mas permite que as pessoas entrem em contato com você sem que você tenha que revelar seu e-mail � elas, e também é útil se você se esquecer da sua senha.",
"loginerror" => "Erro de autenticação",
"noname" => "Você não colocou um nome de usuário válido.",
"loginsuccesstitle" => "Login bem sucedido",
-"loginsuccess" => "Agora você está logado na Wikipedia como \"$1\".",
+"loginsuccess" => "Agora você está logado na {{SITENAME}} como \"$1\".",
"nosuchuser" => "Não há nenhum usuário com o nome \"$1\".
Verifique sua grafia, ou utilize o formulário a baixo para criar uma nova conta de usuário.",
"wrongpassword" => "A senha que você entrou é inválida. Por favor tente novamente.",
"mailmypassword" => "Envie uma nova senha por e-mail",
-"passwordremindertitle" => "Lembrador de senhas da Wikipedia",
+"passwordremindertitle" => "Lembrador de senhas da {{SITENAME}}",
"passwordremindertext" => "Alguém (provavelmente você, do endereço de IP $1)
solicitou que nós lhe enviássemos uma nova senha para login.
A senha para o usuário \"$2\" é a partir de agora \"$3\".
@@ -376,7 +382,7 @@ Por favor, reconecte-se ao recebê-lo.",
"blockedtitle" => "Usuário está bloqueado",
"blockedtext" => "Seu nome de usuário ou numero de IP foi bloqueado por $1.
O motivo é:<br>''$2''<p>Você pode contactar $1 ou outro
-[[Wikipedia:administradores|administrador]] para discutir sobre o bloqueio.",
+[[{{ns:4}}:administradores|administrador]] para discutir sobre o bloqueio.",
"whitelistedittitle" => "Login necessário para edição",
"whitelistedittext" => "Você precisa se [[Especial:Userlogin|logar]] para editar artigos.",
"whitelistreadtitle" => "Login necessário para leitura",
@@ -389,7 +395,7 @@ O motivo é:<br>''$2''<p>Você pode contactar $1 ou outro
"newarticletext" =>
"Você seguiu um link para um artigo que não existe mais.
Para criar a página, começe escrevendo na caixa a baixo
-(veja [[Wikipedia:Ajuda| a página de ajuda]] para mais informações).
+(veja [[{{ns:4}}:Ajuda| a página de ajuda]] para mais informações).
Se você chegou aqui por engano, apenas clique no botão '''volta''' do seu navegador.",
"anontalkpagetext" => "---- ''Esta é a página de discussão para um usuário anônimo que não criou uma conta ainda ou que não a usa. Então nós temos que usar o endereço numérico de IP para identificá-lo(la). Um endereço de IP pode ser compartilhado por vários usuários. Se você é um usuário anônimo e acha irrelevante que os comentários sejam direcionados a você, por favor [[Especial:Userlogin|crie uma conta ou autentifique-se]] para evitar futuras confusões com outros usuários anônimos.'' ",
@@ -412,7 +418,7 @@ Você terá que mesclar suas modificações no texto existente.
"editingold" => "<strong>CUIDADO: Você está editando uma revisão desatualizada deste artigo.
Se você salvá-lo, todas as mudanças feitas a partir desta revisão serão perdidas.</strong>\n",
"yourdiff" => "Diferenças",
-"copyrightwarning" => "Por favor note que todas as contribuições à Wikipedia são consideradas lançadas sobre a GNU Free Documentation License
+"copyrightwarning" => "Por favor note que todas as contribuições � {{SITENAME}} são consideradas lançadas sobre a GNU Free Documentation License
(veja $1 para detalhes).
Se você não quer que seu texto esteja sobre estes termos, então não os envie.<br>
Você também promete que está nos enviando um artigo escrito por você mesmo, ou extraindo de uma fonte de domínio público similar.
@@ -450,9 +456,9 @@ Por favor verifique a URL que você usou para acessar esta página.\n",
# Resultados da Busca
#
"searchresults" => "Buscar resultados",
-"searchhelppage" => "Wikipedia:Procurando",
-"searchingwikipedia" => "Busca na Wikipedia",
-"searchresulttext" => "Para mais informações sobre busca na Wikipedia, veja $1.",
+"searchhelppage" => "{{ns:4}}:Procurando",
+"searchingwikipedia" => "Busca na {{SITENAME}}",
+"searchresulttext" => "Para mais informações sobre busca na {{SITENAME}}, veja $1.",
"searchquery" => "Para pedido de busca \"$1\"",
"badquery" => "Linha de busca incorretamente formada",
"badquerytext" => "Nós não pudemos processar seu pedido de busca.
@@ -484,13 +490,12 @@ $2 Lista redireciona &nbsp; Procura por $3 $9",
#
"preferences" => "Preferências",
"prefsnologin" => "Não autenticado",
-"prefsnologintext" => "Você precisa estar <a href=\"" .
- wfLocalUrl( "Especial:Userlogin" ) . "\">autenticado</a>
+"prefsnologintext" => "Você precisa estar <a href=\"{{localurle:Special:Userlogin}}\">autenticado</a>
para definir suas preferências.",
"prefslogintext" => "Você está autenticado como \"$1\".
Seu número identificador interno é $2.
-veja [[Wikipedia:Ajuda_preferências_de_usuários]] para aprender a decifrar as opções.",
+veja [[{{ns:4}}:Ajuda_preferências_de_usuários]] para aprender a decifrar as opções.",
"prefsreset" => "Preferências foram reconfiguradas.",
"qbsettings" => "Configurações da Barra Rápida",
"changepassword" => "Mudar senha",
@@ -529,15 +534,15 @@ veja [[Wikipedia:Ajuda_preferências_de_usuários]] para aprender a decifrar as
#
"changes" => "mudanças",
"recentchanges" => "Mudanças Recentes",
-"recentchangestext" => "Veja as mais novas mudanças na Wikipedia nesta página.
-[[Wikipedia:Bem Vindo,_novatos|Bem Vindo, novatos]]!
-Por favor, dê uma olhada nestas páginas: [[wikipedia:FAQ|FAQ da Wikipedia]],
-[[Wikipedia:Políticas e Normas| Política da Wikipedia]]
-(especialmente [[wikipedia:Convenções de nomenclatura|convenções de nomenclatura]],
-[[wikipedia:Ponto de vista neutro|Ponto de vista neutro]]),
-e [[wikipedia:Most common Wikipedia faux pas|most common Wikipedia faux pas]].
-
-Se você quer ver a Wikipedia crescer, é muito importante que você não adicione material restrito por outras [[wikipedia:Copyrights|copyrights]].
+"recentchangestext" => "Veja as mais novas mudanças na {{SITENAME}} nesta página.
+[[{{ns:4}}:Bem Vindo,_novatos|Bem Vindo, novatos]]!
+Por favor, dê uma olhada nestas páginas: [[{{ns:4}}:FAQ|FAQ da {{SITENAME}}]],
+[[{{ns:4}}:Políticas e Normas| Política da {{SITENAME}}]]
+(especialmente [[{{ns:4}}:Convenções de nomenclatura|convenções de nomenclatura]],
+[[{{ns:4}}:Ponto de vista neutro|Ponto de vista neutro]]),
+e [[{{ns:4}}:Most common {{SITENAME}} faux pas|most common {{SITENAME}} faux pas]].
+
+Se você quer ver a {{SITENAME}} crescer, é muito importante que você não adicione material restrito por outras [[{{ns:4}}:Copyrights|copyrights]].
Um problema legal poderia realmente prejudicar o projeto de maneira que pedimos, por avor, não faça isso.
Veja também [http://meta.wikipedia.org/wiki/Special:Recentchanges recent meta discussion].",
"rcloaderr" => "Carregando alterações recentes",
@@ -567,19 +572,15 @@ Veja também [http://meta.wikipedia.org/wiki/Special:Recentchanges recent meta d
"reupload" => "Re-carregar",
"reuploaddesc" => "Retornar ao formulário de Uploads.",
"uploadnologin" => "Não autenticado",
-"uploadnologintext" => "Você deve estar<a href=\"" .
- wfLocalUrl( "Special:Userlogin" ) . "\">autenticado</a>
+"uploadnologintext" => "Você deve estar<a href=\"{{localurle:Special:Userlogin}}\">autenticado</a>
para carregar arquivos.",
"uploadfile" => "Carregar imagens, sons, documentos etc.",
"uploaderror" => "Erro ao Carregar",
"uploadtext" => "<strong>PARE!</strong> Antes de você carregar arquivos aqui,
-tenha certeza de ter lido e estar em acordo com a <a href=\"" .
-wfLocalUrlE( "Wikipedia:Política_de_imagens" ) . "\">política de uso de imagens da Wikipedia</a>.
+tenha certeza de ter lido e estar em acordo com a <a href=\"{{localurle:Project:Política_de_imagens}}\">política de uso de imagens da {{SITENAME}}</a>.
<p>Para ver ou procurar imagens carregadas,
-vá à <a href=\"" . wfLocalUrlE( "Especial:ListadeImagens" ) .
-"\">lista de imagens carregadas</a>.
-Uploads e deleções são armazenados no <a href=\"" .
-wfLocalUrlE( "Wikipedia:Upload_log" ) . "\">log de uploads</a>.
+vá � <a href=\"{{localurle:Special:Imagelist}}\">lista de imagens carregadas</a>.
+Uploads e deleções são armazenados no <a href=\"{{localurle:Project:Upload_log}}\">log de uploads</a>.
<p>Use o formulário a seguir para carregar arquivos de imagens para ilustrar seus artigos. Na maioria dos navegadores, você verá um botão \"Browse...\" , que trárá o diálogo padrão de abertura de arquivo padrão do seu Sistema Operacional.
Ao escolher um arquivo, o campo de texto próximo ao botão será preenchido.
Você tembém deve confirmar que não está carregando nenhum arquivo protegido por Diretos Autorais.
@@ -590,7 +591,7 @@ para ilustrações, e OGG para sons.
Por favor, nomeie seus arquivos de forma descritiva para evitar confusões.
Para incluir uma imagem em um artigo, use um link na forma <b>[[image:arquivo.jpg]]</b> ou <b>[[image:arquivo.png|texto descritivo]]</b>
ou <b>[[media:audio.ogg]]</b> para sons.
-<p>Por favor, note que com as páginas da Wikipedia, outros usuários podem modificar ou deletar seus uploads se eles acharem que isto seja útil à wikipedia, e você possa estar bloqueado para uploads devido a abusos do sistema.",
+<p>Por favor, note que com as páginas da {{SITENAME}}, outros usuários podem modificar ou deletar seus uploads se eles acharem que isto seja útil � {{SITENAME}}, e você possa estar bloqueado para uploads devido a abusos do sistema.",
"uploadlog" => "log de uploads",
"uploadlogpage" => "Log_de_Uploads",
"uploadlogpagetext" => "Segue uma lista dos uploads mais recentes.
@@ -601,8 +602,8 @@ Todas as datas mostradas são do servidor (UTC).
"filename" => "Nome do arquivo",
"filedesc" => "Sumário",
"affirmation" => "Eu afirmo que o proprietário deste arquivo concorda em licenciá-lo sob os termos da $1.",
-"copyrightpage" => "Wikipedia:Copyrights",
-"copyrightpagename" => "Direitos Autorais da Wikipedia",
+"copyrightpage" => "{{ns:4}}:Copyrights",
+"copyrightpagename" => "Direitos Autorais da {{SITENAME}}",
"uploadedfiles" => "Arquivos carregados",
"noaffirmation" => "Você tem que afirmar que o carregamento deste arquivo não fere nenhum direito autoral.",
@@ -613,7 +614,7 @@ Todas as datas mostradas são do servidor (UTC).
"largefile" => "É recomendado que as imagens não tenham mais que 100k de tamanho.",
"successfulupload" => "Carregamento efetuado com sucesso",
"fileuploaded" => "Arquivo \"$1\" carregado com sucesso.
-Por favor, siga este link : ($2) para ir à página de descrição e preencha-a com informações sobre o arquivo, como de onde veio , quando e por quem foi criada, e qualquer outra coisa a mais que você saiba.",
+Por favor, siga este link : ($2) para ir � página de descrição e preencha-a com informações sobre o arquivo, como de onde veio , quando e por quem foi criada, e qualquer outra coisa a mais que você saiba.",
"uploadwarning" => "Aviso de Upload",
"savefile" => "Salvar arquivo",
"uploadedimage" => "\"$1\" carregado",
@@ -636,6 +637,7 @@ Por favor, siga este link : ($2) para ir à página de descrição e preencha-a
"imghistory" => "Histórico das imagens",
"revertimg" => "rev",
"deleteimg" => "del",
+"deleteimgcompletely" => "del",
"imghistlegend" => "Legenda: (cur) = esta é a imagem atual, (del) = deletar
esta versão antiga, (rev) = reverter para esta versão antiga.
<br><i>Clique em data para ver das imagens carregadas nesta data</i>.",
@@ -649,7 +651,7 @@ esta versão antiga, (rev) = reverter para esta versão antiga.
"sitestats" => "Estatísticas do Site",
"userstats" => "Estatística dos usuários",
"sitestatstext" => "Há atualmente um total de <b>$1</b> páginas em nosso banco de dados.
-Isto inclui páginas \"talk\", páginas sobre a Wikipedia, páginas de rascunho, redirecionamentos, e outras que provavelmente não são qualificadas como artigos.
+Isto inclui páginas \"talk\", páginas sobre a {{SITENAME}}, páginas de rascunho, redirecionamentos, e outras que provavelmente não são qualificadas como artigos.
Excluindo estas, há <b>$2</b> páginas que provavelmente são artigos legitimos .<p>
Há um total de <b>$3</b> páginas vistas, e <b>$4</b> edições de página
desde a última atualização do software (Janeiro de 2004).
@@ -660,10 +662,10 @@ Destes, <b>$2</b> são administradores (veja $3).",
# Maintenance Page
#
"maintenance" => "Página de Manutenção",
-"maintnancepagetext" => "Esta página possui diversas ferramentas úteis para a manutenção diária da Wikipedia. Algumas destas funções costumam estressar o banco de dados, então, por favor, não pressione o botão de Recarregar para cada item que você consertar ;-)",
+"maintnancepagetext" => "Esta página possui diversas ferramentas úteis para a manutenção diária da {{SITENAME}}. Algumas destas funções costumam estressar o banco de dados, então, por favor, não pressione o botão de Recarregar para cada item que você consertar ;-)",
"maintenancebacklink" => "Voltar para a página de Manutenção",
"disambiguations" => "Páginas de desambiguamento",
-"disambiguationspage" => "Wikipedia:Links_para_desambiguar_páginas",
+"disambiguationspage" => "{{ns:4}}:Links_para_desambiguar_páginas",
"disambiguationstext" => "Os artigos a seguir apontam para uma <i>página de desambiguamento</i>. Ao invés disso, eles deveriam apontar para um tópico apropriado.<br> Uma página é tratada como disambiguamento se ela é por $1.<br>Links de outros namespaces <i>não</i> estão listados aqui.",
"doubleredirects" => "Double Redirects",
"doubleredirectstext" => "<b>Atenção:</b> Esta lista pode conter positivos falsos. O que usualmente significa que há texto adicional com links depois do primeiro #REDIRECT.<br>\nCada linha contem links para o primeiro e segundo redirecionamento, bem como a primeira linha do segundo texto redirecionado , geralmente dando o artigo alvo \"real\" , para onde o primeiro redirecionamento deveria apontar.",
@@ -709,17 +711,14 @@ Destes, <b>$2</b> são administradores (veja $3).",
as Wikipedias internacionais podem apontar para uma imagem com uma URL direta, e por isto pode estar aparecendo aqui mesmo estando em uso ativo.",
"booksources" => "Fontes de livros",
"booksourcetext" => "Segue uma lista de links para outros sites que vendem livros novos e usados , e podem ter informações adicionais sobre livros que você esteja procurando.
-A Wikipedia não é afiliada a nenhum destes empreendimentos, e a lista não deve ser construída como apoio.",
+A {{SITENAME}} não é afiliada a nenhum destes empreendimentos, e a lista não deve ser construída como apoio.",
"alphaindexline" => "$1 para $2",
# Email this user
#
"mailnologin" => "No send address",
-"mailnologintext" => "Você deve estar <a href=\"" .
- wfLocalUrl( "Special:Userlogin" ) . "\">autenticado</a>
-e ter um e-mail válido em suas <a href=\"" .
-
- wfLocalUrl( "Special:Preferences" ) . "\">preferências</a>
+"mailnologintext" => "Você deve estar <a href=\"{{localurle:Special:Userlogin}}\">autenticado</a>
+e ter um e-mail válido em suas <a href=\"{{localurle:Special:Preferences}}\">preferências</a>
para poder enviar e-mails para outros usuários.",
"emailuser" => "Contactar usuário",
"emailpage" => "Enviar e-mail ao usuário",
@@ -741,15 +740,12 @@ O endereço de e-mail que você disponibilizou em suas preferências aparecerá
"watchlistsub" => "(do usuário \"$1\")",
"nowatchlist" => "Você não está monitorando nenhum artigo.",
"watchnologin" => "Não está autenticado",
-"watchnologintext" => "Você deve estar <a href=\"" .
- wfLocalUrl( "Special:Userlogin" ) . "\">autenticado</a>
+"watchnologintext" => "Você deve estar <a href=\"{{localurle:Special:Userlogin}}\">autenticado</a>
para modificar sua lista de artigos interessantes.",
-"addedwatch" => "Adicionados à lista",
-"addedwatchtext" => "A página \"$1\" foi adicionada a sua <a href=\"" .
- wfLocalUrl( "Especial:Watchlist" ) . "\">lista de artigos de vosso interesse</a>.
+"addedwatch" => "Adicionados � lista",
+"addedwatchtext" => "A página \"$1\" foi adicionada a sua <a href=\"{{localurle:Special:Watchlist}}\">lista de artigos de vosso interesse</a>.
Modificações futuras neste artigo e páginas Talk associadas serão listadas aqui,
-e a página aparecerá <b>negritada</b> na <a href=\"" .
- wfLocalUrl( "Especial:Recentchanges" ) . "\">lista de mudanças recentes</a> para que
+e a página aparecerá <b>negritada</b> na <a href=\"{{localurle:Special:Recentchanges}}\">lista de mudanças recentes</a> para que
possa pegá-lo com maior facilidade.</p>
<p>Se você quiser remover futuramente o artigo da sua lista monitoramento, clique em \"Desinteressar-se\" na barra lateral.",
@@ -785,7 +781,7 @@ $3...
"deletesub" => "(Apagando \"$1\")",
"historywarning" => "Atenção: A página que você quer deletar tem um histório: ",
"confirmdeletetext" => "Você está prestes a deletar permanentemente uma página ou imagem junto com todo seu histórico do banco de dados.
-Por favor, confirme que você realmente pretende fazer isto, que você compreende as consequências, e que você está fazendo isto em acordo com a [[Wikipedia:Policy| Política da Wkipedia]].",
+Por favor, confirme que você realmente pretende fazer isto, que você compreende as consequências, e que você está fazendo isto em acordo com a [[{{ns:4}}:Policy| Política da Wkipedia]].",
"confirmcheck" => "Sim, eu realmente desejo apagar este arquivo.",
"actioncomplete" => "Ação efetuada com sucesso",
"deletedtext" => "\"$1\" foi deletada.
@@ -825,7 +821,7 @@ Se uma nova página foi criada com o mesmo nome desde a deleção, as revisões
"undeletebtn" => "Restaurar!",
"undeletedarticle" => " \"$1\" restaurado",
"undeletedtext" => "O artigo [[$1]] foi restaurado com sucesso.
-Veja [[Wikipedia:Deletion_log]] for a record of recent deletions and restorations.",
+Veja [[{{ns:4}}:Deletion_log]] for a record of recent deletions and restorations.",
# Contributions
#
@@ -844,14 +840,14 @@ Veja [[Wikipedia:Deletion_log]] for a record of recent deletions and restoration
"notargettext" => "Você não especificou um alvo ou usuário para performar esta função.",
"linklistsub" => "(Lista de ligações)",
"linkshere" => "Os seguintes artigos contém ligações que apontam para cá:",
-"nolinkshere" => "Nenhuma página relaciona-se à esta.",
+"nolinkshere" => "Nenhuma página relaciona-se � esta.",
"isredirect" => "página de redirecionamento",
# Block/unblock IP
#
"blockip" => "Bloquear endereço de IP",
-"blockiptext" => "Utilize o formulário de e-mail à seguir para bloquear o acesso a escrita de um endereço específico de IP.
-Isto só pode ser feito para previnir vandalismo , e em acordo com a [[Wikipedia:Policy|política da Wikipedia]].
+"blockiptext" => "Utilize o formulário de e-mail � seguir para bloquear o acesso a escrita de um endereço específico de IP.
+Isto só pode ser feito para previnir vandalismo , e em acordo com a [[{{ns:4}}:Policy|política da {{SITENAME}}]].
Preencha com um motivo específico (por exemplo, citando páginas que sofreram vandalismo).",
"ipaddress" => "Endereço de IP",
"ipbreason" => "Motivo",
@@ -885,9 +881,9 @@ Por favor confirme que você realmente pretende fazer isto, e que você vai desb
"locknoconfirm" => "Você não checou a caixa de confirmação.",
"lockdbsuccesssub" => "Tranca bem sucedida",
"unlockdbsuccesssub" => "Destranca bem sucedida",
-"lockdbsuccesstext" => "O banco de dados da Wikipedia foi trancado.
+"lockdbsuccesstext" => "O banco de dados da {{SITENAME}} foi trancado.
<br>Lembre-se de remover a tranca após a manutenção.",
-"unlockdbsuccesstext" => "O bando de dados da Wikipedia foi destrancado.",
+"unlockdbsuccesstext" => "O bando de dados da {{SITENAME}} foi destrancado.",
# SQL query
#
@@ -898,7 +894,7 @@ Isto pode frequentemente sobrecarregar o servidor , sendo assim, por favor use e
"sqlislogged" => "Por favor, note de todas as pesquisas são registradas (log).",
"sqlquery" => "Entrar com pesquisa",
"querybtn" => "Enviar pesquisa",
-"selectonly" => "Pesquisas diferentes de \"SELECT\" são restritas a desenvolvedores da Wikipedia.",
+"selectonly" => "Pesquisas diferentes de \"SELECT\" são restritas a desenvolvedores da {{SITENAME}}.",
"querysuccessful" => "Pesquisa bem sucedida",
# Move page
@@ -922,8 +918,7 @@ por favor tenha certeza de que compreende as consequencias disto antes de proced
Nestes casos, você terá que mover ou mesclar a página manualmente se desejar .",
"movearticle" => "Mover página",
"movenologin" => "Não Autenticado",
-"movenologintext" => "Você deve ser um usuário registrado e <a href=\"" .
- wfLocalUrl( "Especial:Userlogin" ) . "\">autenticado</a>
+"movenologintext" => "Você deve ser um usuário registrado e <a href=\"{{localurle:Special:Userlogin}}\">autenticado</a>
para mover uma página.",
"newtitle" => "Pata novo título",
"movepagebtn" => "Mover página",
diff --git a/languages/LanguageRo.php b/languages/LanguageRo.php
index 64e03316f9f6..914cd102e441 100644
--- a/languages/LanguageRo.php
+++ b/languages/LanguageRo.php
@@ -10,22 +10,26 @@ require_once("LanguageUtf8.php");
# encapsulates some of the magic-ness.
#
/* private */ $wgNamespaceNamesRo = array(
- -2 => "Media",
- -1 => "Special",
- 0 => "",
- 1 => "Discuţie",
- 2 => "Utilizator",
- 3 => "Discuţie_Utilizator",
- 4 => "Wikipedia",
- 5 => "Discuţie_Wikipedia",
- 6 => "Imagine",
- 7 => "Discuţie_Imagine",
- 8 => "MediaWiki",
- 9 => "MediaWiki_talk",
- 10 => "Template",
- 11 => "Template_talk"
-
-);
+ NS_MESIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_MAIN => '',
+ NS_TALK => 'Discuţie',
+ NS_USER => 'Utilizator',
+ NS_USER_TALK => 'Discuţie_Utilizator',
+ NS_WIKIPEDIA => 'Wikipedia',
+ NS_WIKIPEDIA_TALK => 'Discuţie_Wikipedia',
+ NS_IMAGE => 'Imagine',
+ NS_IMAGE_TALK => 'Discuţie_Imagine',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Discuţie_MediaWiki',
+ NS_TEMPLATE => 'Format',
+ NS_TEMPLATE_TALK => 'Discuţie_Format',
+ NS_HELP => 'Ajutor',
+ NS_HELP_TALK => 'Discuţie_Ajutor',
+ NS_CATEGORY => 'Categorie',
+ NS_CATEGORY_TALK => 'Discuţie_Categorie'
+
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsRo = array(
"Fără", "Fixă, în stânga", "Fixă, în dreapta", "Liberă"
@@ -39,7 +43,8 @@ require_once("LanguageUtf8.php");
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesRo = array(
@@ -674,6 +679,7 @@ Vă rugăm să vizitaţi această legătură: ($2) pentru a descrie fişierul ş
"imghistory" => "Istoria imaginii",
"revertimg" => "rev",
"deleteimg" => "ÅŸterg",
+"deleteimgcompletely" => "ÅŸterg",
"imghistlegend" => "Legend: (actuală) = versiunea curentă a imaginii, (şterg) = şterge această versiune veche, (rev) = revino la această versiune veche.
<br><i>Apăsaţi pe dată pentru a vedea versiunea trimisă la data respectivă</i>.",
"imagelinks" => "Legăturile imaginii",
diff --git a/languages/LanguageRu.php b/languages/LanguageRu.php
index b5e76c73582a..9209c767f661 100644
--- a/languages/LanguageRu.php
+++ b/languages/LanguageRu.php
@@ -29,7 +29,7 @@ if($wgMetaNamespace === FALSE)
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsRu = array(
"Убрать", "ФикÑированный Ñлева", "ФикÑированный Ñправа", "Плавающий Ñлева"
@@ -43,7 +43,8 @@ if($wgMetaNamespace === FALSE)
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesRu = array(
@@ -595,6 +596,7 @@ wfLocalUrlE( "$wgMetaNamespace:Журнал закачек" ) . "\">журнал
"imghistory" => "Журнал изображениÑ",
"revertimg" => "откат.",
"deleteimg" => "удал.",
+"deleteimgcompletely" => "удал.",
"imghistlegend" => "ПоÑÑнениÑ: (тек.) = Ñто - текущее изображение, (удал.) = удалить Ñту Ñтарую верÑию, (откат.) = откатитьÑÑ Ð½Ð° Ñту Ñтарую верÑию.
<br><i>Выберите дату, чтобы поÑмотреть ÑпиÑок изображений, загруженных на Ñту дату</i>.",
"imagelinks" => "СÑылки изображениÑ",
diff --git a/languages/LanguageSc.php b/languages/LanguageSc.php
index 3a4c24feb662..700791cc89b0 100644
--- a/languages/LanguageSc.php
+++ b/languages/LanguageSc.php
@@ -19,7 +19,7 @@ require_once( "LanguageUtf8.php" );
5 => "Wikipedia_discussioni",
6 => "Immàgini",
7 => "Immàgini_contièndha"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsSc = array(
"Nessuno", "Fisso a sinistra", "Fisso a destra", "Fluttuante a sinistra"
@@ -502,6 +502,7 @@ Segui questo link: ($2) per modificare la pagina di descrizione del file che hai
"imghistory" => "Storia di questa immagine",
"revertimg" => "ripr",
"deleteimg" => "canc",
+"deleteimgcompletely" => "canc",
"imghistlegend" => "Legenda: (cur) = immagine corrente, (canc) = cancella questa vecchia versione, (ripr) = ripristina questa vecchia versione come versione attuale.
<br><i>Clicca su una data per vedere tutte le immagini che sono state caricate in quella data </i>.",
"imagelinks" => "Link alle immagini",
diff --git a/languages/LanguageSk.php b/languages/LanguageSk.php
index 6df1d6975bec..df003c6cccab 100644
--- a/languages/LanguageSk.php
+++ b/languages/LanguageSk.php
@@ -21,7 +21,7 @@ require_once("LanguageUtf8.php");
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsSk = array(
"None", "Fixed left", "Fixed right", "Floating left"
@@ -35,7 +35,8 @@ require_once("LanguageUtf8.php");
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesSk = array(
@@ -61,7 +62,7 @@ require_once("LanguageUtf8.php");
"watchdefault" => "Upozorňuj na nové a novu upravené stránky",
"minordefault" => "OznaÄ vÅ¡etky zmeny ako drobné",
"previewontop" => "Zobrazuj ukážku pred editovacím oknom, a nie až za ním"
-
+
);
/* private */ $wgWeekdayNamesSk = array(
@@ -238,7 +239,7 @@ Prosím ohláste túto chybu správcovi, uveÄte aj linku (URL).",
"filedeleteerror" => "Neviem vymazať súbor \"$1\".",
"filenotfound" => "Neviem nájsť súbor \"$1\".",
"unexpected" => "NeÄakaná hodnota: \"$1\"=\"$2\".",
-"formerror" => "Chyba: neviem odoslať formulár",
+"formerror" => "Chyba: neviem odoslať formulár",
"badarticleerror" => "Na tejto stránke túto akciu vykonať nemožno.",
"cannotdelete" => "Neviem vymazať danú stránku alebo obrázok. (Možno to už vymazal niekto iný.)",
"badtitle" => "Zlý nadpis",
@@ -307,7 +308,7 @@ The reason given is this:<br>''$2''<p>You may contact $1 or one of the other
"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
+To create the page, start typing in the box below
(see the [[Wikipedia:Help|help page]] for more info).
If you are here by mistake, just click your browser's '''back''' button.",
"anontalkpagetext" => "---- ''This is the discussion page for an anonymous user who has not created an account yet or who does not use it. We therefore have to use the numerical [[IP address]] to identify him/her. Such an IP address can be shared by several users. If you are an anonymous user and feel that irrelevant comments have been directed at you, please [[Special:Userlogin|create an account or log in]] to avoid future confusion with other anonymous users.'' ",
@@ -414,7 +415,7 @@ to set user preferences.",
"prefslogintext" => "You are logged in as \"$1\".
Your internal ID number is $2.",
"prefsreset" => "Preferences have been reset from storage.",
-"qbsettings" => "Quickbar settings",
+"qbsettings" => "Quickbar settings",
"changepassword" => "Change password",
"skin" => "Skin",
"math" => "Rendering math",
@@ -428,7 +429,7 @@ Your internal ID number is $2.",
"oldpassword" => "Old password",
"newpassword" => "New password",
"retypenew" => "Retype new password",
-"textboxsize" => "Textbox dimensions",
+"textboxsize" => "Editing",
"rows" => "Rows",
"columns" => "Columns",
"searchresultshead" => "Search result settings",
@@ -565,6 +566,7 @@ created and by whom, and anything else you may know about it.",
"imghistory" => "Image history",
"revertimg" => "rev",
"deleteimg" => "del",
+"deleteimgcompletely" => "del",
"imghistlegend" => "Legend: (cur) = this is the current image, (del) = delete
this old version, (rev) = revert to this old version.
<br><i>Click on date to see image uploaded on that date</i>.",
@@ -965,7 +967,7 @@ class LanguageSk extends LanguageUtf8 {
return $wgAllMessagesSk[$key];
return Language::getMessage( $key );
}
-
+
function fallback8bitEncoding() {
return "iso-8859-2"; #?
}
diff --git a/languages/LanguageSl.php b/languages/LanguageSl.php
index 2e0f02708651..e9cc57e7edad 100644
--- a/languages/LanguageSl.php
+++ b/languages/LanguageSl.php
@@ -37,7 +37,7 @@ require_once( "LanguageUtf8.php" );
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsSl = array(
"Brez", "Levo nepomiÄno", "Desno nepomiÄno", "Levo leteÄe"
@@ -51,7 +51,8 @@ require_once( "LanguageUtf8.php" );
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesSl = array(
@@ -587,6 +588,7 @@ izdelana in kdo jo je izdelal ali karkoli bi Å¡e vedeli o njej.",
"imghistory" => "Zgodovina slike",
"revertimg" => "vrn",
"deleteimg" => "bri",
+"deleteimgcompletely" => "bri",
"imghistlegend" => "Napotek: (tre) = trenutna slika, (bri) = briši
zadnjo inaÄico, (vrn) = vrni sliko na to zadnjo inaÄico.
<br><i>Klikni na datum, da vidiš katera slika je bila tedaj naložena</i>.",
diff --git a/languages/LanguageSq.php b/languages/LanguageSq.php
index 237f76d432e8..cc501333b29e 100644
--- a/languages/LanguageSq.php
+++ b/languages/LanguageSq.php
@@ -26,7 +26,7 @@ require_once("LanguageUtf8.php");
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsSq = array(
"Asgjë", "Lidhur majtas", "Lidhur djathtas", "Fluturo majtas"
@@ -40,7 +40,8 @@ require_once("LanguageUtf8.php");
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesSq = array(
@@ -666,6 +667,7 @@ tjetër që na duhet të dimë për të.",
"imghistory" => "Historia e skedarit",
"revertimg" => "ktheje",
"deleteimg" => "gris",
+"deleteimgcompletely" => "gris",
"imghistlegend" => "Legjendë: (tani) = ky është skedari i tanishëm, (gris) = grise
këtë version të vjetër, (ktheje) = ktheje në këtë version të vjetër.
<br><i>Shtyp datën për të parë skedarin e dhënë në atë ditë</i>.",
diff --git a/languages/LanguageSr.php b/languages/LanguageSr.php
index a80faf0bad8c..d91d8d3d4392 100644
--- a/languages/LanguageSr.php
+++ b/languages/LanguageSr.php
@@ -1,6 +1,6 @@
<?php
-include( "LanguageUtf8.php" );
+require_once( "LanguageUtf8.php" );
# NOTE: To turn off "Current Events" in the sidebar,
# set "currentevents" => "-"
@@ -22,7 +22,7 @@ include( "LanguageUtf8.php" );
7 => "Разговор_о_Ñлици",
8 => "МедијаВики",
9 => "Разговор_о_МедијаВикију"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsSr = array(
"Ðикаква", "Причвршћена лево", "Причвршћена деÑно", "Плутајућа лево"
@@ -685,6 +685,7 @@ or <b>[[media:file.ogg]]</b> за звукове.
"imghistory" => "ИÑторија Ñлике",
"revertimg" => "врт",
"deleteimg" => "обр",
+"deleteimgcompletely" => "обр",
"imghistlegend" => "Објашњење: (трен) = ово је тренутна Ñлика, (обр) = обриши
ову Ñтару верзију, (врт) = врати на ову Ñтару верзију.
<br><i>Кликните на датум давидите Ñлику поÑлату тог датума</i>.",
diff --git a/languages/LanguageSv.php b/languages/LanguageSv.php
index 760367f0bce1..510ce724b5db 100644
--- a/languages/LanguageSv.php
+++ b/languages/LanguageSv.php
@@ -1,67 +1,102 @@
<?php
+#
+# Swedish localisation for MediaWiki
+#
+# This file is encoded in UTF-8, no byte order mark.
+# For compatibility with Latin-1 installations, please
+# don't add literal characters above U+00ff.
+#
-// NOTE: To turn off "Current Events" in the sidebar,
-// set "currentevents" => "-"
-//
-// The names of the namespaces can be set here, but the numbers
-// are magical, so don't change or move them! The Namespace class
-// encapsulates some of the magic-ness.
-//
+require_once( "LanguageUtf8.php" );
-/* private */ $wgNamespaceNamesSv = array(
- -2 => "Media",
- -1 => "Special",
- 0 => "",
- 1 => "Diskussion",
- 2 => "Användare",
- 3 => "Användare_diskussion",
- 4 => "Wikipedia",
- 5 => "Wikipedia_diskussion",
- 6 => "Bild",
- 7 => "Bild_diskussion",
- 8 => "MediaWiki",
- 9 => "MediaWiki_diskussion",
- 10 => "Template",
- 11 => "Template_talk"
+// $Id$
-);
+/* private */ $wgNamespaceNamesSv = array(
+ NS_MEDIA => "Media",
+ NS_SPECIAL => "Special",
+ NS_MAIN => "",
+ NS_TALK => "Diskussion",
+ NS_USER => "Användare",
+ NS_USER_TALK => "Användardiskussion",
+ NS_WIKIPEDIA => $wgMetaNamespace,
+ NS_WIKIPEDIA_TALK => $wgMetaNamespace . "diskussion",
+ NS_IMAGE => "Bild",
+ NS_IMAGE_TALK => "Bilddiskussion",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWiki_diskussion",
+ NS_TEMPLATE => "Mall",
+ NS_TEMPLATE_TALK => "Malldiskussion",
+ NS_HELP => "Hjälp",
+ NS_HELP_TALK => "Hjälp_diskussion",
+ NS_CATEGORY => "Kategori",
+ NS_CATEGORY_TALK => "Kategoridiskussion"
+) + $wgNamespaceNamesEn;
/* inherit standard defaults */
/* private */ $wgQuickbarSettingsSv = array(
- "Ingen", "Fast vänster", "Fast höger", "Flytande vänster"
+ "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 );
+define( "MW_MATH_SIMPLE", 1 );
+define( "MW_MATH_HTML", 2 );
+define( "MW_MATH_SOURCE", 3 );
+define( "MW_MATH_MODERN", 4 );
+define( "MW_MATH_MATHML", 5 );
+
+/* private */ $wgMathNamesSv = array(
+ MW_MATH_PNG => "Rendera alltid PNG",
+ 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 inställning",
+ "Januari 15, 2001",
+ "15 Januari 2001",
+ "2001 Januari 15",
+ "2001-01-15"
);
/* private */ $wgUserTogglesSv = array(
- "hover" => "Svävande text över wikilänkar",
- "underline" => "Understrukna länkar",
- "highlightbroken" => "Röda länkar till tomma sidor",
+ "hover" => "Svävande text över wikilänkar",
+ "underline" => "Understryk länkar",
+ "highlightbroken" => "Formatera trasiga länkar <a href=\"\" class=\"new\">så här</a>
+(alternativt: så här<a href=\"\" class=\"internal\">?</a>).",
"justify" => "Justera indrag",
- "hideminor" => "Göm små redigeringar vid senaste ändring",
- "usenewrc" => "Avancerad 'Senaste ändringar'",
- "numberheadings" => "Automatisk numrering av överskrifter",
- "showtoolbar" => "Show edit toolbar",
- "rememberpassword" => "Kom ihåg lösenord till nästa besök",
+ "hideminor" => "Göm mindre redigeringar vid senaste ändring",
+ "usenewrc" => "Avancerad 'Senaste ändringar'",
+ "numberheadings" => "Automatisk numrering av överskrifter",
+ "showtoolbar" => "Visa redigeringverktygsrad",
+ "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]-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"
+ "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(
@@ -76,8 +111,8 @@
languages! */
/* private */ $wgWeekdayNamesSv = array(
- "söndag", "måndag", "tisdag", "onsdag", "torsdag",
- "fredag", "lördag"
+ "söndag", "måndag", "tisdag", "onsdag", "torsdag",
+ "fredag", "lördag"
);
/* private */ $wgMonthNamesSv = array(
@@ -100,62 +135,64 @@
$wgValidSpecialPagesSv = array(
"Userlogin" => "",
"Userlogout" => "",
- "Preferences" => "Mina användarinställningar",
- "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 användare",
+ "Listusers" => "Registrerade användare",
"Statistics" => "Sidstatistik",
- "Randompage" => "Slumpmässig sida",
- "Lonelypages" => "Föräldralösa sidor",
- "Unusedimages" => "Föräldralösa filer",
- "Popularpages" => "Populära 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" => "Långa artiklar",
+ "Longpages" => "LÃ¥nga artiklar",
"Newpages" => "De nyaste artiklarna",
"Ancientpages" => "Oldest pages",
"Allpages" => "Alla sidor efter titel",
"Ipblocklist" => "Blockerade IP adresser",
- "Maintenance" => "Underhållssida",
+ "Maintenance" => "Underhållssida",
"Specialpages" => "Specialsidor",
"Contributions" => "",
- "Emailuser" => "E-postanvändare",
+ "Emailuser" => "E-postanvändare",
"Whatlinkshere" => "",
"Recentchangeslinked" => "",
"Movepage" => "",
- "Booksources" => "Externa bokkällor",
+ "Booksources" => "Externa bokkällor",
"Export" => "XML export",
"Version" => "Version",
);
/* private */ $wgSysopSpecialPagesSv = array(
"Blockip" => "Blockera en IP-adress",
- "Asksql" => "Gör en sökning i databasen",
- "Undelete" => "Se och återställ raderade sidor"
+ "Asksql" => "Gör en sökning i databasen",
+ "Undelete" => "Se och återställ raderade sidor"
);
/* private */ $wgDeveloperSpecialPagesSv = array(
"Lockdb" => "Skrivskydda databasen",
- "Unlockdb" => "Återställ 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',
"about" => "Om",
-"aboutwikipedia" => "Om Wikipedia",
-"aboutpage" => "Wikipedia:Om",
-
-"help" => "Hjälp",
-"helppage" => "Wikipedia:Hjälp",
+"aboutwikipedia" => "Om {{SITENAME}}",
+"aboutpage" => "{{ns:4}}:Om",
+'article' => 'Artikel',
+"help" => "Hjälp",
+"helppage" => "Wikipedia:Hjälp",
"wikititlesuffix" => "Wikipedia",
"bugreports" => "Felrapporter",
"bugreportspage" => "Wikipedia:Felrapporter",
@@ -163,131 +200,159 @@ $wgValidSpecialPagesSv = array(
"sitesupportpage" => "", # If not set, won't appear. Can be wiki page or URL
"faq" => "FAQ",
"faqpage" => "Wikipedia:FAQ",
-"edithelp" => "Redigeringshjälp",
+"edithelp" => "Redigeringshjälp",
"edithelppage" => "Wikipedia:Hur_redigerar_jag_en_sida",
"cancel" => "Avbryt",
-"qbfind" => "SnabbSök",
-"qbbrowse" => "Genomsök",
+"qbfind" => "SnabbSök",
+"qbbrowse" => "Genomsök",
"qbedit" => "Redigera",
-"qbpageoptions" => "Sidinställningar",
+"qbpageoptions" => "Sidinställningar",
"qbpageinfo" => "Sidinformation",
-"qbmyoptions" => "Mina inställningar",
+"qbmyoptions" => "Mina inställningar",
"mypage" => "Min sida",
"mytalk" => "Min diskussion",
"currentevents" => "-",
"errorpagetitle" => "Fel",
"returnto" => "Tillbaka till $1.",
-"fromwikipedia" => "Från Wikipedia, den fria encyklopedin.",
-"whatlinkshere" => "Vilka sidor länkar hit?",
-"help" => "Hjälp",
-"search" => "Sök",
+"fromwikipedia" => "Från Wikipedia, den fria encyklopedin.",
+"whatlinkshere" => "Vilka sidor länkar hit?",
+"help" => "Hjälp",
+"search" => "Sök",
"history" => "Versionshistorik",
-"printableversion" => "Skrivarvänlig version",
-"editthispage" => "Redigera den här sidan",
-"deletethispage" => "Radera den här sidan",
-"protectthispage" => "Skydda den här sidan",
-"unprotectthispage" => "Ta bort skydd av denna sida",
+"history_short" => "Historik",
+"printableversion" => "Skrivarvänlig version",
+"edit" => "Redigera",
+"editthispage" => "Redigera den här sidan",
+"delete" => "Ta bort",
+"deletethispage" => "Ta bort den här sidan",
+"protect" => "Skydda",
+"protectthispage" => "Skydda den här sidan",
+"unprotect" => "Ta bort skydd",
+"unprotectthispage" => "Ta bort skydd från den här sidan",
"newpage" => "Ny sida",
"talkpage" => "Diskussionssida",
-"postcomment" => "Skriv ett inlägg",
+"personaltools" => "Personliga verktyg",
+"postcomment" => "Skicka en kommentar",
+"addsection" => "+",
"articlepage" => "Visa artikel",
-"subjectpage" => "Ämnessida",
-"userpage" => "Visa användarsida",
+"subjectpage" => "Ämnessida",
+"talk" => "Diskussion",
+"toolbox" => "Verktygslåda",
+"userpage" => "Visa användarsida",
"wikipediapage" => "Visa metasida",
"imagepage" => "Visa bildsida",
-"otherlanguages" => "Andra språk",
-"redirectedfrom" => "(Omdirigerad från $1)",
-"lastmodified" => "Denna sida blev senast ändrad $1.",
-"viewcount" => "Denna sida har visats $1 gånger.",
-"gnunote" => "Denna sida är publicerad under <a class=internal href='$wgScriptPath/GNU_FDL'>GNU FDL</a>.",
-"printsubtitle" => "(Från http://sv.wikipedia.org)",
+"viewtalkpage" => "Visa diskussion",
+"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:Administratörer",
-"sysoptitle" => "Sysop-behörighet krävs",
-"sysoptext" => "Denna funktion kan bara utföras av användare 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" => "Utvecklarbehörighet krävs",
-"developertext" => "Denna funktion kan bara utföras av användare 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.",
-"nbyte" => " bytes",
-"go" => "Utför",
+"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" => "Utför",
"ok" => "OK",
-"sitetitle" => "Wikipedia",
+"sitetitle" => "{{SITENAME}}",
+"pagetitle" => "$1 - {{SITENAME}}",
"sitesubtitle" => "Den fria encyklopedin",
-"retrievedfrom" => "Hämtat från \"$1\"",
+"retrievedfrom" => "Hämtad från \"$1\"",
"newmessages" => "Du har $1.",
"newmessageslink" => "nya meddelanden",
"editsection" => "edit",
-"toc" => "Innehåll",
+"toc" => "Innehåll",
"showtoc" => "visa",
-"hidetoc" => "göm",
-"thisisdeleted" => "Visa eller återställ $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" => "Användarsida",
+"nstab-media" => "Media",
+"nstab-special" => "Speciell",
+"nstab-wp" => "Om",
+"nstab-image" => "Bild",
+"nstab-mediawiki" => "Meddelande",
+"nstab-template" => "Mall",
+"nstab-help" => "Hjälp",
+"nstab-category" => "Kategori",
+
// Main script and global functions
//
"nosuchaction" => "Funktionen finns inte",
"nosuchactiontext" => "Den funktion som specificerats i URL:en kan inte
hittas av Wikipediaprogramvaran",
-"nosuchspecialpage" => "Sådan 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 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:
+"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:
<blockquote><tt>$1</tt></blockquote>
-från funktionen \"<tt>$2</tt>\".
+från funktionen \"<tt>$2</tt>\".
MySQL returnerade felen \"$3<tt>: $4</tt>\".",
-"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:
+"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:
<p>$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 vänligen en rapport om detta till en administratör, där du också nämner
+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" => "Oväntat värde: \"$1\"=\"$2\".",
-"formerror" => "Fel: Kunde inte sända formulär",
-"badarticleerror" => "Denna funktion kan inte utföras på denna sida.",
+"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 tillåten, tom eller sidan
-är felaktigt länkad från en Wikipedia på ett annat språk.",
+"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 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" => "<h2>Välkommen, $1!</h2><p>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" => "<b>Det var svårt att logga in dig .</b><br>Pröva igen!",
-"alreadyloggedin" => "<font color=red><b>Användare $1, du är redan inloggad !</b></font><br>\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" => "<h2>Välkommen, $1!</h2><p>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" => "<b>Det var svårt att logga in dig .</b><br>Pröva igen!",
+"alreadyloggedin" => "<font color=red><b>Användare $1, du är redan inloggad !</b></font><br>\n",
"login" => "Logga in",
"userlogin" => "Logga in",
@@ -295,189 +360,189 @@ igen som samma eller annan användare.\n",
"userlogout" => "Logga ut",
"notloggedin" => "Ej inloggad",
"createaccount" => "Skapa ett konto",
-"badretype" => "De lösenord du uppgett överenstämmer inte med varandra.",
-"userexists" => "Detta användarnamn används redan. Ange ett annat användarnamn.",
+"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 glömt ditt lösenord, så kan du få ett nytt lösenord 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 användarnamn 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 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.",
+"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 här artikeln",
+"minoredit" => "Detta är en mindre ändring",
+"watchthis" => "Bevaka den här artikeln",
"savearticle" => "Spara",
-"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:<br>''$2''<p>Ta kontakt med $1 eller en av de andra
-[[Wikipedia:Administratörer|administratörerna]] för att diskutera varför du blivit spärrad", // "
+"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:<br>''$2''<p>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 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.)",
+"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" => "<strong>Notera:</strong> ",
-"previewnote" => "Observera att detta är en förhandsvisning, och att sidan ännu inte sparats!",
-"previewconflict" => "Denna förhandsvisning är resultatet av den
-redigerbara texten ovanför,
-så som det kommer att se ut om du väljer 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" => "Någon har ändrat denna sida 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.
-<b>Bara</b> texten i den översta textboxen sparas om du trycker \"Spara sida\".\n<p>",
+"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.
+<b>Bara</b> texten i den översta textboxen sparas om du trycker \"Spara sida\".\n<p>",
"yourtext" => "Din text",
"storedversion" => "Din sparade version",
"editingold" => "<strong>VARNING: Du redigerar en gammal version
-av denna sida. Om du sparar den, kommer alla ändringar på denns sida föregående revison att bli överskrivna.</strong>\n",
+av den här sidan. Om du sparar den, kommer alla ändringar på denns sida föregående revison att bli överskrivna.</strong>\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 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.<br>
-Du lovar oss också att du skrev texten själv, eller kopierade från public domain eller liknande fri resurs.<BR>
-<strong>LÄGG ALDRIG UT UPPHOVSRÄTTSSKYDDAT MATERIAL HÄR UTAN FÖRFATTARENS TILLÅTELSE!</strong>",
-
-"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 <a href='$wgScriptPath/$wgMetaNamespace:Skyddade sidor'>skyddade sidor</a>",
+(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.<br>
+Du lovar oss också att du skrev texten själv, eller kopierade från public domain eller liknande fri resurs.<BR>
+<strong>LÄGG ALDRIG UT UPPHOVSRÄTTSSKYDDAT MATERIAL HÄR UTAN FÖRFATTARENS TILLÅTELSE!</strong>",
+
+"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 <a href='$wgScriptPath/$wgMetaNamespace:Skyddade sidor'>skyddade sidor</a>",
// History pages
//
"revhistory" => "Versionshistoria",
-"nohistory" => "Det finns ingen versionshistoria för denna sida.",
+"nohistory" => "Det finns ingen versionshistoria för den här sidan.",
"revnotfound" => "Versionen hittades inte",
-"revnotfoundtext" => "Den gamla versionen av den sida du frågade efter kan inte hittas. Kontrollera den URL du använde för att nå denna sida.\n",
-"loadhist" => "Läser 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 från $1",
+"revisionasof" => "Versionen från $1",
"cur" => "nuvarande",
-"next" => "nästa",
-"last" => "föregående",
+"next" => "nästa",
+"last" => "föregående",
"orig" => "original",
-"histlegend" => "Förklaring: (nuvarande) = skillnad mot den nuvarande versionen,
- (föregående) = skillnad mot den föregående 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" => "läser version för att se skillnad",
+"loadingrev" => "läser version för att se skillnad",
"lineno" => "Rad $1:",
-"editcurrent" => "Redigera den nuvarande versionen av denna sida",
+"editcurrent" => "Redigera den nuvarande versionen av den här sidan",
// Search results
//
-"searchresults" => "Sökresultat",
-"searchhelppage" => "Wikipedia:Sökning",
-"searchingwikipedia" => "Sökning på Wikipedia",
-"searchresulttext" => "För mer information om sökning 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 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
+"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 ö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",
+"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 <b>$1</b> resultat som startar med nummer <b>$2</b>.",
-"nonefound" => "<strong>Note</strong>: 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",
+"nonefound" => "<strong>Note</strong>: 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" => "
-Sök i namnutrymme :<br>
+Sök i namnutrymme :<br>
$1<br>
-$2 List redirects &nbsp; Sök efter $3 $9",
+$2 List redirects &nbsp; Sök efter $3 $9",
// Preferences page
//
-"preferences" => "Inställningar",
-"prefsnologin" => "Du är inte inloggad",
-"prefsnologintext" => "Du måste vara <a href=\"" .
+"preferences" => "Inställningar",
+"prefsnologin" => "Du är inte inloggad",
+"prefsnologintext" => "Du måste vara <a href=\"" .
wfLocalUrl( "Special:Userlogin" ) . "\">inloggad</a>
-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",
+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 inställningar",
-"resetprefs" => "Återställ inställningar",
-"oldpassword" => "Gammalt lösenord",
-"newpassword" => "Nytt lösenord",
-"retypenew" => "Skriv om nytt lösenord",
+"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" => "Inställningar för sökresultat",
+"searchresultshead" => "Inställningar för sökresultat",
"resultsperpage" => "Resultat att visa per sida",
"contextlines" => "Linjer att visa per sida",
-"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
+"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 inställd efter svensk tid eller skulle man till exempel för svensk vintertid, endast ha \"1\" (och \"2\" när 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" => "Utjämna",
-"emailflag" => "Hindra andra användare från 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å denna sida.",
-"rcloaderr" => "Läser senaste redigerade sidor",
-"rcnote" => "Nedanför är de senaste <strong>$1</strong> ändringarna under de sista <strong>$2</strong> dagarna.",
-"rcnotefrom" => "Nedanför är ändringarna från <b>$2</b> till <b>$1</b> 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.",
+"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 <strong>$1</strong> ändringarna under de sista <strong>$2</strong> dagarna.",
+"rcnotefrom" => "Nedanför är ändringarna från <b>$2</b> till <b>$1</b> 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" => "göm",
+"hide" => "göm",
"show" => "visa",
"tableform" => "tabell",
"listform" => "lista",
-"nchanges" => "$1 ändringar",
+"nchanges" => "$1 ändringar",
"minoreditletter" => "M",
"newpageletter" => "N",
@@ -486,59 +551,59 @@ Den blir automatiskt inställd efter svensk tid eller skulle man till exempel för
"upload" => "Ladda upp",
"uploadbtn" => "Ladda upp fil",
"uploadlink" => "Ladda upp bild",
-"reupload" => "återuppladdning",
-"reuploaddesc" => "Tillbaka till uppladdningsformulär.",
+"reupload" => "Ã¥teruppladdning",
+"reuploaddesc" => "Tillbaka till uppladdningsformulär.",
"uploadnologin" => "Inte inloggad",
-"uploadnologintext" => "Du måste vara <a href=\"" .
+"uploadnologintext" => "Du måste vara <a href=\"" .
wfLocalUrl( "Special:Userlogin" ) . "\">inloggad</a>
-för att kunna ladda upp filer.",
+för att kunna ladda upp filer.",
"uploadfile" => "Ladda upp fil",
"uploaderror" => "Uppladdnings fel",
-"uploadtext" => "<strong>STOPP!</strong> Innan du laddar upp här,
-så måste du ha läst och följa Wikipedias <a href=\"" .
+"uploadtext" => "<strong>STOPP!</strong> Innan du laddar upp här,
+så måste du ha läst och följa Wikipedias <a href=\"" .
wfLocalUrlE( "Wikipedia:Policy om bruk av bilder" ) . "\">policy om hur
-bilder får användas</a>.
-<p>För att visa eller söka tidigare uppladdade bilder gå till
+bilder får användas</a>.
+<p>För att visa eller söka tidigare uppladdade bilder gå till
<a href=\"" . wfLocalUrlE( "Special:Imagelist" ) .
-"\">lista över uppladdade bilder</a>.
+"\">lista över uppladdade bilder</a>.
Uppladdningar och borttagningar loggas i <a href=\"" .
wfLocalUrlE( "Wikipedia:Upload_log" ) . "\">uppladdnings logg</a>.
-<p>Använd formuläret nedan för att ladda upp nya filer, som
+<p>Använd formuläret nedan för att ladda upp nya filer, som
du kan illustrera dina artiklar med.
-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.
-<p>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: <b>[[bild:filnamn.jpg]]</b> eller <b>[[bild:filnamn.png|alternativ text]]</b>
-eller <b>[[media:filnamn.ogg]]</b> om det är en ljudfil.
-<p>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.",
+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.
+<p>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: <b>[[bild:filnamn.jpg]]</b> eller <b>[[bild:filnamn.png|alternativ text]]</b>
+eller <b>[[media:filnamn.ogg]]</b> om det är en ljudfil.
+<p>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 följer 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).
<ul>
</ul>
",
"filename" => "Filnamn",
"filedesc" => "Beskrivning",
-"affirmation" => "Jag bekräftar att ägaren till upphovsrätten accepterar att licensiera enligt följande 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 måste bekräfta att uppladdningen inte kränker någon 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 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.",
+"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.
-Följ denna länk: ($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.",
+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\"",
@@ -546,10 +611,10 @@ när den skapades och vem som gjort den och allt annat du vet om den.",
// Image list
//
"imagelist" => "Bildlista",
-"imagelisttext" => "Nedan är en lista med $1 bilder sorterad $2",
-"getimagelist" => "hämta bildlista",
+"imagelisttext" => "Nedan är en lista med $1 bilder sorterad $2",
+"getimagelist" => "hämta bildlista",
"ilshowmatch" => "Visa alla bilder med namn som matchar",
-"ilsubmit" => "Sök",
+"ilsubmit" => "Sök",
"showlast" => "Visa de senaste $1 bilderna sorterad $2.",
"all" => "alla",
"byname" => "efter namn",
@@ -559,84 +624,85 @@ när den skapades och vem som gjort den och allt annat du vet om den.",
"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.
-<br><i>Klicka på ett datum för att se bilden som laddades upp den dagen</i>.", //"
-"imagelinks" => "Bildlänk",
-"linkstoimage" => "De följande sidorna länkar till denna bild:",
-"nolinkstoimage" => "Det finns ingen sida som länkar till denna bild.",
+"deleteimgcompletely" => "radera",
+"imghistlegend" => "Legend: (nuvarande) = detta är den nuvarande bilden,
+(ta bort) = ta bort den gamla version, (återgå) = återgå till en gammal version.
+<br><i>Klicka på ett datum för att se bilden som laddades upp den dagen</i>.", //"
+"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" => "Användarstatistik",
-"sitestatstext" => "Det är <b>$1</b> sidor i databasen.
+"userstats" => "Användarstatistik",
+"sitestatstext" => "Det är <b>$1</b> 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 ovanstående så är det <b>$2</b> sidor som anses som riktiga artiklar.<p>
-Det har varit totalt <b>$3</b> sidvisningar och det har varit <b>$4</b> sidor som har ändrats
+Om man tar bort ovanstående så är det <b>$2</b> sidor som anses som riktiga artiklar.<p>
+Det har varit totalt <b>$3</b> sidvisningar och det har varit <b>$4</b> sidor som har ändrats
sedan uppdateringen av mjukvaran (1 december 2002).
-Det vill säga <b>$5</b> ändringar per sida genomsnittligt,
-och <b>$6</b> sidvisningar per ändring.",
-"userstatstext" => "Det är <b>$1</b> registrerade användare.
-<b>$2</b> av dem är administratörer (se $3).",
+Det vill säga <b>$5</b> ändringar per sida genomsnittligt,
+och <b>$6</b> sidvisningar per ändring.",
+"userstatstext" => "Det är <b>$1</b> registrerade användare.
+<b>$2</b> av dem är administratörer (se $3).",
// Maintenance Page
//
-"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 <i>sidor med tvetydliga titlar</i>. De ska länka till en sidor med en korrekt titel.<br>En sida behandlar som tvetydig om den länkar från $1. <br>Länkar från andra namngrupper är <i>inte</i> listade här.",
+"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 <i>sidor med tvetydliga titlar</i>. De ska länka till en sidor med en korrekt titel.<br>En sida behandlar som tvetydig om den länkar från $1. <br>Länkar från andra namngrupper är <i>inte</i> listade här.",
"doubleredirects" => "Dubbla omdirigeringar",
-"doubleredirectstext" => "<b>OBS:</b> Denna lista kan innehålla falska resultat. Detta betyder normalt att det finns ytterligare text under den första #REDIRECT.<br>\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.",
+"doubleredirectstext" => "<b>OBS:</b> Den här listan kan innehålla falska resultat. Detta betyder normalt att det finns ytterligare text under den första #REDIRECT.<br>\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" => "Följande sidor innerhåller vanliga felstavningar, som visas i $1. Den korrekta stavningen kanske ska se ut såhär.",
+"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 språklänkar",
-"missinglanguagelinksbutton" => "Sök efter saknade språklänkar för",
-"missinglanguagelinkstext" => "De här artiklarna är <i>inte</i> länkade
+"missinglanguagelinks" => "Saknade språklänkar",
+"missinglanguagelinksbutton" => "Sök efter saknade språklänkar för",
+"missinglanguagelinkstext" => "De här artiklarna är <i>inte</i> länkade
till deras i $1. Redirects och undersidor visas <i>inte</i>.",
// Miscellaneous special pages
//
-"orphans" => "Föräldralösa sidor",
-"lonelypages" => "Föräldralösa sidor",
-"unusedimages" => "Oanvända bilder",
-"popularpages" => "Populära 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 länkar",
+"wantedpages" => "Önskelista",
+"nlinks" => "$1 länkar",
"allpages" => "Alla sidor",
"randompage" => "Slumpartikel",
"shortpages" => "Korta sidor",
-"longpages" => "Långa sidor",
-"listusers" => "Användarlista",
+"longpages" => "LÃ¥nga sidor",
+"listusers" => "Användarlista",
"specialpages" => "Speciella sidor",
"spheading" => "Speciella sidor",
-"sysopspheading" => "Speciella sidor för sysop",
-"developerspheading" => "Speciella sidor för utvecklare",
+"sysopspheading" => "Speciella sidor för sysop",
+"developerspheading" => "Speciella sidor för utvecklare",
"protectpage" => "Skydda sida",
-"recentchangeslinked" => "Relaterade ändringar",
-"rclsub" => "(till sidor som är länkade från \"$1\")",
+"recentchangeslinked" => "Relaterade ändringar",
+"rclsub" => "(till sidor som är länkade från \"$1\")",
"debug" => "Debug",
"newpages" => "Nya sidor",
-"movethispage" => "Flytta den här sidan",
-"unusedimagestext" => "<p>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 <b>inget</b> affärssamarbete med ovanstående företag och ska inte heller tolkas som en uppmuntran.",
+"movethispage" => "Flytta den här sidan",
+"unusedimagestext" => "<p>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 <b>inget</b> affärssamarbete med ovanstående företag och ska inte heller tolkas som en uppmuntran.",
// Email this user
//
@@ -644,141 +710,143 @@ Wikipedia har <b>inget</b> affärssamarbete med ovanstående företag och ska inte
"mailnologintext" => "Du ska vara<a href=\"" .
wfLocalUrl( "Special:Userlogin" ) . "\">inloggad</a>
och ha angivit en korrekt epost-adress i dina <a href=\"" .
- wfLocalUrl( "Special:Preferences" ) . "\">användarinställningar</a>
-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.",
+ wfLocalUrl( "Special:Preferences" ) . "\">användarinställningar</a>
+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 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",
+"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" => "(för användare \"$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 vara<a href=\"" .
wfLocalUrl( "Special:Userlogin" ) . "\">inloggad</a>
-för att kunna göra ändringar på din övervakningslista.",
-"addedwatch" => "Tillagd på övervakningslistan",
-"addedwatchtext" => "Sidan \"$1\" har satts upp på din <a href=\"" .
- wfLocalUrl( "Special:Watchlist" ) . "\">övervakningslista</a>.
-Framtida ändringar av den här sidan och dess diskussionssida vill listas där,
+för att kunna göra ändringar på din övervakningslista.",
+"addedwatch" => "Tillagd på övervakningslistan",
+"addedwatchtext" => "Sidan \"$1\" har satts upp på din <a href=\"" .
+ wfLocalUrl( "Special:Watchlist" ) . "\">övervakningslista</a>.
+Framtida ändringar av den här sidan och dess diskussionssida vill listas där,
och sidan kommer att markeras med <b>fet stil</b> i <a href=\"" .
- wfLocalUrl( "Special:Recentchanges" ) . "\">listan över de senaste ändringarna
-</a> för att lättare kunna hittas</p>
-
-<p>Om du vill ta bort denna sida 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",
+ wfLocalUrl( "Special:Recentchanges" ) . "\">listan över de senaste ändringarna
+</a> för att lättare kunna hittas</p>
+
+<p>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',
// Delete/protect/revert
//
"deletepage" => "Ta bort sida",
-"confirm" => "Bekräfta",
-"excontent" => "före radering:",
-"exbeforeblank" => "före tömning:",
+"confirm" => "Bekräfta",
+"excontent" => "före radering:",
+"exbeforeblank" => "före tömning:",
"exblank" => "sidan var tom",
-"confirmdelete" => "Bekräfta borttagning",
+"confirmdelete" => "Bekräfta borttagning",
"deletesub" => "(Tar bort \"$1\")",
-"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
+"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 här.", //"
-"actioncomplete" => "Genomfört",
+"confirmcheck" => "Ja, jag vill verkligen ta bort det här.", //"
+"actioncomplete" => "Genomfört",
"deletedtext" => "\"$1\" har blivit borttagen.
-Se $2 för 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 följer serverns klocka (UTC).
+"dellogpagetext" => "Nedan är en lista över de senaste borttagningarna.
+De tidsangivelser som anges följer serverns klocka (UTC).
<ul>
</ul>
",
"deletionlog" => "borttagningslogg",
-"reverted" => "Återgått till yngre version",
+"reverted" => "Återgått till yngre version",
"deletecomment" => "Anledningen till borttagning",
-"imagereverted" => "Återställandet av nyare artikelversion lyckades",
+"imagereverted" => "Återställandet av nyare artikelversion lyckades",
// Undelete
//
-"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",
+"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 å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.",
+"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" => "Å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",
+"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" => "Användarbidrag",
+"contributions" => "Användarbidrag",
"mycontris" => "Mina bidrag",
-"contribsub" => "För $1",
-"nocontribs" => "Inga ändringar var funna som motsvarar dessa kriterier",
-"ucnote" => "Nedan visas dennes användares senaste <b>$1</b> ändringar, under de senaste <b>$2</b> 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 <b>$1</b> ändringar, under de senaste <b>$2</b> dagarna.",
+"uclinks" => "Visa de senaste $1 ändringarna. Visa de senaste $2 dagarna.",
"uctop" => " (top)",
// What links here
//
-"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",
+"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" => "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]].
+"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 här IP-adressen",
+"ipbsubmit" => "Blockera den här IP-adressen",
"badipaddress" => "Du har inte skrivit IP-adressen korrekt.",
-"noblockreason" => "Du måste ange en anledning till varför du blockerar.",
+"noblockreason" => "Du måste ange en anledning till varför du blockerar.",
"blockipsuccesssub" => "Blockeringen lyckades",
"blockipsuccesstext" => "IP-adressen \"$1\" har blockerats.
-<br>Se [[Speciel:Ipblocklist|IP blockeringslistan]] för alla blockeringar.",
+<br>Se [[Speciel:Ipblocklist|IP blockeringslistan]] för alla blockeringar.",
"unblockip" => "Ta bort blockering av IP-adress",
-"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 denna adress",
-"ipusuccess" => "Blockeringen för 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",
@@ -786,174 +854,294 @@ Fyll i anledningen till blockering nedan (till exempel vilka artiklar som klottr
// Developer tools
//
-"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.
-<br>Kom ihåg att ta bort låsningen när du är färdig med ditt underhåll.",
-"unlockdbsuccesstext" => "Wikipediadatabasen är upplåst.",
+"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.
+<br>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-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 denna funktion 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",
+"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" => "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. Länkar till den gamla sidan kommer inte att ändras. Om det finns en diskussionssida kommer den inte att flyttas. <b>OBS!</b> Detta kan innebära en drastisk ändring på en populär sida; var säker på att du inser konsekvenserna i förväg.",
+"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.
+Länkar till den gamla sidan kommer inte att ändras. Om det finns en diskussionssida
+kommer den inte att flyttas.
+
+<b>OBS!</b> 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 måste vara registrerad användare och ha <a href=\"" .
+"movenologintext" => "Du måste vara registrerad användare och ha <a href=\"" .
wfLocalUrl( "Speciel:Userlogin" ) . "\">loggat in</a>
-för 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. Välj ett annat namn.",
-"talkexists" => "Sidan flyttades korrekt, men den tilhörande diskussionssidan kunde inte flyttas, eftersom det redan existerar en sida med denna nya titel. Du måste 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 <strong>inte</strong>.",
-);
-
-class LanguageSv extends Language {
-
- function getNamespaces() {
- global $wgNamespaceNamesSv;
- return $wgNamespaceNamesSv;
- }
+# Move page
+#
+"movepage" => "Move page",
+"movepagetext" => "Using the form below will rename a page, moving all
+of its history to the new name.
+The old title will become a redirect page to the new title.
+Links to the old page title will not be changed; be sure to
+[[Special:Maintenance|check]] for double or broken redirects.
+You are responsible for making sure that links continue to
+point where they are supposed to go.
+
+Note that the page will '''not''' be moved if there is already
+a page at the new title, unless it is empty or a redirect and has no
+past edit history. This means that you can rename a page back to where
+it was just renamed from if you make a mistake, and you cannot overwrite
+an existing page.
+
+<b>WARNING!</b>
+This can be a drastic and unexpected change for a popular page;
+please be sure you understand the consequences of this before
+proceeding.",
+"movepagetalktext" => "The associated talk page, if any, will be automatically moved along with it '''unless:'''
+*You are moving the page across namespaces,
+*A non-empty talk page already exists under the new name, or
+*You uncheck the box below.
+
+In those cases, you will have to move or merge the page manually if desired.",
+"movearticle" => "Move page",
+"movenologin" => "Not logged in",
+"movenologintext" => "You must be a registered user and <a href=\"{{localurl:Special:Userlogin}}\">logged in</a>
+to move a page.",
+"newtitle" => "To new title",
+"movepagebtn" => "Move page",
+"pagemovedsub" => "Move succeeded",
+"pagemovedtext" => "Page \"[[$1]]\" moved to \"[[$2]]\".",
+"articleexists" => "A page of that name already exists, or the
+name you have chosen is not valid.
+Please choose another name.",
+"talkexists" => "The page itself was moved successfully, but the
+talk page could not be moved because one already exists at the new
+title. Please merge them manually.",
+"movedto" => "moved to",
+"movetalk" => "Move \"talk\" page as well, if applicable.",
+"talkpagemoved" => "The corresponding talk page was also moved.",
+"talkpagenotmoved" => "The corresponding talk page was <strong>not</strong> moved.",
+"1movedto2" => "$1 moved to $2",
+
+// Export
+
+"export" => "Exportera sidor",
+"exporttext" => "Du kan exportera texten och redigeringshistoriken av en specifik
+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 tillgängliga i Metawiki-namespacet.",
+
+# Thumbnails
+
+"thumbnail-more" => "Förstora",
+"missingimage" => "<b>Bild saknas</b><br /><i>$1</i>\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 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 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' => '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 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' => '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 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 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 utfört av $1.",
+"siteusers" => "$wgSitename användare $1"
- 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..fca6fff8ad20 100644
--- a/languages/LanguageTa.php
+++ b/languages/LanguageTa.php
@@ -29,7 +29,7 @@ require_once( "LanguageUtf8.php" );
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsTa = array(
"எதà¯à®µà¯à®®à®¿à®²à¯à®²à¯ˆ", "இடம௠நிலைதà¯à®¤", "வலம௠நிலைதà¯à®¤", "இடம௠மிதபà¯à®ªà¯"
@@ -43,7 +43,8 @@ require_once( "LanguageUtf8.php" );
'montparnasse' => "மொணà¯à®Ÿà¯à®ªà®¾à®°à¯à®©à®¾à®šà¯‡ (Montparnasse)",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesTa = array(
@@ -623,6 +624,7 @@ border=\"0\" ALT=\"Google\"></A>
"imghistory" => "படிம வரலாறà¯",
"revertimg" => "மீளà¯",
"deleteimg" => "நீகà¯à®•à¯",
+"deleteimgcompletely" => "நீகà¯à®•à¯",
"imghistlegend" => "கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®Ÿà¯ அடà¯à®Ÿà®µà®£à¯ˆ: (நடபà¯à®ªà¯) = இத௠நடபà¯à®ªà®¿à®²à¯à®³à¯à®³ (current) படிமமà¯, (நீகà¯à®•à¯) = இநà¯à®¤ பழைய பதிபà¯à®ªà¯ˆ நீகà¯à®•à¯, (திரà¯à®®à¯à®ªà¯) = இப௠பழைய பதிபà¯à®ªà¯à®•à¯à®•à¯à®¤à¯ திரà¯à®®à¯à®ªà¯.
<br><i>அநà¯à®¤à®¤à¯ திகதியில௠பதிவேறà¯à®±à®®à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ படிமஙà¯à®•à®³à¯ˆà®ªà¯ பாரà¯à®ªà¯à®ªà®¤à®±à¯à®•à¯, திகதி மீத௠சொடà¯à®•à¯à®•à®µà¯à®®à¯</i>.",
"imagelinks" => "படிம இணைபà¯à®ªà¯à®•à®³à¯",
diff --git a/languages/LanguageTh.php b/languages/LanguageTh.php
index e36c9b7f5644..ad94c00bbde2 100644
--- a/languages/LanguageTh.php
+++ b/languages/LanguageTh.php
@@ -20,7 +20,7 @@
10 => "Template",
11 => "Template_talk"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsTh = array(
"ไม่มี", "อยู่ทางซ้าย", "อยู่ทางขวา", "ลอยทางซ้าย"
@@ -34,7 +34,8 @@
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesTh = array(
@@ -147,7 +148,7 @@
#-------------------------------------------------------------------
# Default messages
#-------------------------------------------------------------------
-# Allowed characters in keys are: A-Z, a-z, 0-9, underscore (_) and
+# Allowed characters in keys are: A-Z, a-z, 0-9, underscore (_) and
# hyphen (-). If you need more characters, you may be able to change
# the regex in MagicWord::initRegex
@@ -293,7 +294,7 @@ Please report this to an administrator, making note of the URL.",
"filedeleteerror" => "Could not delete file \"$1\".",
"filenotfound" => "Could not find file \"$1\".",
"unexpected" => "Unexpected value: \"$1\"=\"$2\".",
-"formerror" => "Error: could not submit form",
+"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",
@@ -348,8 +349,8 @@ Don't forget to personalize your wikipedia preferences.",
"youremail" => "อีเมล์ของคุณ*",
"yournick" => "Your nickname (for signatures)",
"emailforlost" => "* Entering an email address is optional. But it enables people to
-contact you through the website without you having to reveal your
-email address to them, and it also helps you if you forget your
+contact you through the website without you having to reveal your
+email address to them, and it also helps you if you forget your
password.",
"loginerror" => "Login error",
"nocookiesnew" => "The user account was created, but you are not logged in. $wgSitename uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.",
@@ -383,14 +384,14 @@ Please log in again after you receive it.",
"blockedtitle" => "User is blocked",
"blockedtext" => "Your user name or IP address has been blocked by $1.
The reason given is this:<br>''$2''<p>You may contact $1 or one of the other
-[[$wgMetaNamespace:Administrators|administrators]] to discuss the block.
+[[$wgMetaNamespace:Administrators|administrators]] to discuss the block.
-Note that you may not use the \"email this user\" feature unless you have a valid email address registered in your [[Special:Preferences|user preferences]].
+Note that you may not use the \"email this user\" feature unless you have a valid email address registered in your [[Special:Preferences|user preferences]].
Your IP address is $3. Please include this address in any queries you make.
==Note to AOL users==
-Due to continuing acts of vandalism by one particular AOL user, Wikipedia often blocks AOL proxies. Unfortunately, a single proxy server may be used by a large number of AOL users, and hence innocent AOL users are often inadvertently blocked. We apologise for any inconvenience caused.
+Due to continuing acts of vandalism by one particular AOL user, Wikipedia often blocks AOL proxies. Unfortunately, a single proxy server may be used by a large number of AOL users, and hence innocent AOL users are often inadvertently blocked. We apologise for any inconvenience caused.
If this happens to you, please email an administrator, using an AOL email address. Be sure to include the IP address given above.
",
@@ -405,7 +406,7 @@ If this happens to you, please email an administrator, using an AOL email addres
"newarticle" => "(New)",
"newarticletext" =>
"คุณได้ตามลิงà¸à¹Œà¸—ี่นำไปยังหน้าที่ยังไม่ปราà¸à¸à¸­à¸¢à¸¹à¹ˆ
-เพื่อเริ่มสร้างหน้าใหม่ พิมพ์ลงในà¸à¸¥à¹ˆà¸­à¸‡à¸‚้างล่างนี้
+เพื่อเริ่มสร้างหน้าใหม่ พิมพ์ลงในà¸à¸¥à¹ˆà¸­à¸‡à¸‚้างล่างนี้
(ดู[[$wgMetaNamespace:ความช่วยเหลือ|หน้าความช่วยเหลือ]]สำหรับข้อมูลเพิ่มเติม)
If you are here by mistake, just click your browser's '''back''' button.",
"anontalkpagetext" => "---- ''This is the discussion page for an anonymous user who has not created an account yet or who does not use it. We therefore have to use the numerical [[IP address]] to identify him/her. Such an IP address can be shared by several users. If you are an anonymous user and feel that irrelevant comments have been directed at you, please [[Special:Userlogin|create an account or log in]] to avoid future confusion with other anonymous users.'' ",
@@ -546,7 +547,7 @@ Your internal ID number is $2.
See [[$wgMetaNamespace:User preferences help]] for help deciphering the options.",
"prefsreset" => "Preferences have been reset from storage.",
-"qbsettings" => "Quickbar settings",
+"qbsettings" => "Quickbar settings",
"changepassword" => "Change password",
"skin" => "Skin",
"math" => "Rendering math",
@@ -561,7 +562,7 @@ See [[$wgMetaNamespace:User preferences help]] for help deciphering the options.
"oldpassword" => "Old password",
"newpassword" => "New password",
"retypenew" => "Retype new password",
-"textboxsize" => "Textbox dimensions",
+"textboxsize" => "Editing",
"rows" => "Rows",
"columns" => "Columns",
"searchresultshead" => "Search result settings",
@@ -700,6 +701,7 @@ created and by whom, and anything else you may know about it.",
"imghistory" => "Image history",
"revertimg" => "rev",
"deleteimg" => "del",
+"deleteimgcompletely" => "del",
"imghistlegend" => "Legend: (cur) = this is the current image, (del) = delete
this old version, (rev) = revert to this old version.
<br><i>Click on date to see image uploaded on that date</i>.",
@@ -758,7 +760,7 @@ That comes to <b>$5</b> average edits per page, and <b>$6</b> views per edit.",
"randompage" => "Random page",
"shortpages" => "Short pages",
"longpages" => "Long pages",
-"deadendpages" => "Dead-end pages",
+"deadendpages" => "Dead-end pages",
"listusers" => "User list",
"specialpages" => "Special pages",
"spheading" => "Special pages for all users",
@@ -888,11 +890,11 @@ All times shown are server time (UTC).
"rollbackfailed" => "Rollback failed",
"cantrollback" => "Cannot revert edit; last contributor is only author of this article.",
"alreadyrolled" => "Cannot rollback last edit of [[$1]]
-by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already.
+by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already.
Last edit was by [[User:$3|$3]] ([[User talk:$3|Talk]]). ",
# only shown if there is an edit comment
-"editcomment" => "The edit comment was: \"<i>$1</i>\".",
+"editcomment" => "The edit comment was: \"<i>$1</i>\".",
"revertpage" => "Reverted to last edit by $1",
"protectlogpage" => "Protection_log",
"protectlogtext" => "Below is a list of page locks/unlocks.
@@ -968,7 +970,7 @@ to a previously blocked IP address or username.",
"autoblocker" => "Autoblocked because you share an IP address with \"$1\". Reason \"$2\".",
"blocklogpage" => "Block_log",
"blocklogentry" => 'blocked "$1"',
-"blocklogtext" => "This is a log of user blocking and unblocking actions. Automatically
+"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"',
@@ -1112,7 +1114,7 @@ class LanguageTh extends LanguageUtf8 {
global $wgMathNamesTh;
return $wgMathNamesTh;
}
-
+
function getDateFormats() {
global $wgDateFormatsTh;
return $wgDateFormatsTh;
@@ -1164,7 +1166,7 @@ class LanguageTh extends LanguageUtf8 {
global $wgAllMessagesTh;
return $wgAllMessagesTh[$key];
}
-
+
function getAllMessages()
{
global $wgAllMessagesTh;
diff --git a/languages/LanguageTlh.php b/languages/LanguageTlh.php
new file mode 100644
index 000000000000..a63d84b4bc10
--- /dev/null
+++ b/languages/LanguageTlh.php
@@ -0,0 +1,56 @@
+<?php
+
+# Hooray for Klingon, the most controversial language addition to date
+
+require_once( "LanguageUtf8.php" );
+
+if ( $wgMetaNamespace == "Wikipedia" ) {
+ $wgMetaNamespace = "wIqIpe'DIya";
+}
+
+/* private */ $wgNamespaceNamesTlh = array(
+ NS_MEDIA => "Doch",
+ NS_SPECIAL => "le'",
+ NS_MAIN => "",
+ NS_TALK => "ja'chuq",
+ NS_USER => "lo'wI'",
+ NS_USER_TALK => "lo'wI'_ja'chuq",
+ NS_WIKIPEDIA => $wgMetaNamespace,
+ NS_WIKIPEDIA_TALK => $wgMetaNamespace . "_ja'chuq",
+ NS_IMAGE => "nagh_beQ",
+ NS_IMAGE_TALK => "nagh_beQ_ja'chuq",
+ NS_MEDIAWIKI => "MediaWiki",
+ NS_MEDIAWIKI_TALK => "MediaWiki_ja'chuq",
+ NS_TEMPLATE => "chen'ay'",
+ NS_TEMPLATE_TALK => "chen'ay'_ja'chuq",
+ NS_HELP => "QaH",
+ NS_HELP_TALK => "QaH_ja'chuq",
+ NS_CATEGORY => "Segh",
+ NS_CATEGORY_TALK => "Segh_ja'chuq"
+) + $wgNamespaceNamesEn;
+
+class LanguageTlh extends LanguageUtf8
+{
+ function getNamespaces() {
+ global $wgNamespaceNamesTlh;
+ return $wgNamespaceNamesTlh;
+ }
+
+ function getNsText( $index ) {
+ global $wgNamespaceNamesTlh;
+ return $wgNamespaceNamesTlh[$index];
+ }
+
+ function getNsIndex( $text ) {
+ global $wgNamespaceNamesTlh;
+
+ foreach ( $wgNamespaceNamesTlh as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ return false;
+ }
+}
+
+?>
+
+
diff --git a/languages/LanguageUk.php b/languages/LanguageUk.php
index 0ade181e1aa1..d8563c26dc94 100755
--- a/languages/LanguageUk.php
+++ b/languages/LanguageUk.php
@@ -23,7 +23,7 @@ require_once( "LanguageUtf8.php" );
7 => "ЗображеннÑ_обговореннÑ",
8 => "MediaWiki",
9 => "MediaWiki_обговореннÑ"
-);
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsUk = array(
"Ðе показувати панель", "ФікÑована зліва", "ФікÑована Ñправа", "Плаваюча зліва"
@@ -37,7 +37,8 @@ require_once( "LanguageUtf8.php" );
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesUk = array(
@@ -630,6 +631,7 @@ wfLocalUrlE( "$wgMetaNamespace:Журнал завантажень" ) . "\">жу
"imghistory" => "Журнал зображеннÑ",
"revertimg" => "відкот.",
"deleteimg" => "вилуч.",
+"deleteimgcompletely" => "вилуч.",
"imghistlegend" => "ПоÑÑненнÑ: (поточ.) = це - поточне зображеннÑ, (вилуч.) = вилучити цю Ñтару верÑÑ–ÑŽ, (відкот.) = відкотитиÑÑ Ð´Ð¾ цієї Ñтарої верÑÑ–Ñ—.
<br><i>Виберіть дату, щоб переглÑнути ÑпиÑок зображень, звантажених на цю дату</i>.",
"imagelinks" => "ПоÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ",
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 26d8fdd411e6..22c7832f7417 100644
--- a/languages/LanguageUtf8.php
+++ b/languages/LanguageUtf8.php
@@ -1,8 +1,8 @@
<?php
if( defined( "MEDIAWIKI" ) ) {
-$wgInputEncoding = "utf-8";
-$wgOutputEncoding = "utf-8";
+$wgInputEncoding = "UTF-8";
+$wgOutputEncoding = "UTF-8";
$wikiUpperChars = $wgMemc->get( $key1 = "$wgDBname:utf8:upper" );
$wikiLowerChars = $wgMemc->get( $key2 = "$wgDBname:utf8:lower" );
@@ -19,17 +19,17 @@ class LanguageUtf8 extends Language {
function ucfirst( $string ) {
# For most languages, this is a wrapper for ucfirst()
# But that doesn't work right in a UTF-8 locale
- global $wikiUpperChars, $wikiLowerChars;
+ global $wikiUpperChars;
return preg_replace (
- "/^([\\x00-\\x7f]|[\\xc0-\\xff][\\x80-\\xbf]*)/e",
+ "/^([a-z]|[\\xc0-\\xff][\\x80-\\xbf]*)/e",
"strtr ( \"\$1\" , \$wikiUpperChars )",
$string );
}
function lcfirst( $string ) {
- global $wikiUpperChars, $wikiLowerChars;
+ global $wikiLowerChars;
return preg_replace (
- "/^([\\x00-\\x7f]|[\\xc0-\\xff][\\x80-\\xbf]*)/e",
+ "/^([A-Z]|[\\xc0-\\xff][\\x80-\\xbf]*)/e",
"strtr ( \"\$1\" , \$wikiLowerChars )",
$string );
}
@@ -64,6 +64,51 @@ class LanguageUtf8 extends Language {
return $this->iconv( $this->fallback8bitEncoding(), "utf-8", $s );
}
+
+ function firstChar( $s ) {
+ preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})/', $s, $matches);
+
+ return isset( $matches[1] ) ? $matches[1] : "";
+ }
+
+ # Crop a string from the beginning or end to a certain number of bytes.
+ # (Bytes are used because our storage has limited byte lengths for some
+ # columns in the database.) Multibyte charsets will need to make sure that
+ # only whole characters are included!
+ #
+ # $length does not include the optional ellipsis.
+ # If $length is negative, snip from the beginning
+ function truncate( $string, $length, $ellipsis = "" ) {
+ if( $length == 0 ) {
+ return $ellipsis;
+ }
+ if ( strlen( $string ) <= abs( $length ) ) {
+ return $string;
+ }
+ if( $length > 0 ) {
+ $string = substr( $string, 0, $length );
+ $char = ord( $string[strlen( $string ) - 1] );
+ if ($char >= 0xc0) {
+ # We got the first byte only of a multibyte char; remove it.
+ $string = substr( $string, 0, -1 );
+ } elseif( $char >= 0x80 &&
+ preg_match( '/^(.*)(?:[\xe0-\xef][\x80-\xbf]|' .
+ '[\xf0-\xf7][\x80-\xbf]{1,2})$/', $string, $m ) ) {
+ # We chopped in the middle of a character; remove it
+ $string = $m[1];
+ }
+ return $string . $ellipsis;
+ } else {
+ $string = substr( $string, $length );
+ $char = ord( $string[0] );
+ if( $char >= 0x80 && $char < 0xc0 ) {
+ # We chopped in the middle of a character; remove the whole thing
+ $string = preg_replace( '/^[\x80-\xbf]+/', '', $string );
+ }
+ return $ellipsis . $string;
+ }
+ }
}
} # ifdef MEDIAWIKI
diff --git a/languages/LanguageWa.php b/languages/LanguageWa.php
new file mode 100644
index 000000000000..135ba877d7d6
--- /dev/null
+++ b/languages/LanguageWa.php
@@ -0,0 +1,1322 @@
+<?php
+
+require_once( "LanguageUtf8.php" );
+
+# NOTE: cweri après "NOTE:" po des racsegnes so des ratournaedjes
+# k' i gn a.
+
+# NOTE: To turn off "Current Events" in the sidebar,
+# set "currentevents" => "-"
+
+# The names of the namespaces can be set here, but the numbers
+# are magical, so don't change or move them! The Namespace class
+# encapsulates some of the magic-ness.
+#
+/* private */ $wgNamespaceNamesWa = array(
+ NS_MEDIA => "Media", /* Media */
+ NS_SPECIAL => "Sipeciås", /* Special */
+ NS_MAIN => "",
+ NS_TALK => "Copene", /* Talk */
+ NS_USER => "Uzeu", /* User */
+ NS_USER_TALK => "Uzeu_copene", /* User_talk */
+ NS_WIKIPEDIA => "Wikipedia", /* Wikipedia */
+ NS_WIKIPEDIA_TALK => "Wikipedia_copene", /* Wikipedia_talk */
+ NS_IMAGE => "Imådje", /* Image */
+ NS_IMAGE_TALK => "Imådje_copene", /* Image_talk */
+ NS_MEDIAWIKI => "MediaWiki", /* MediaWiki */
+ NS_MEDIAWIKI_TALK => "MediaWiki_copene", /* MediaWiki_talk */
+ NS_TEMPLATE => "Modele",
+ NS_TEMPLATE_TALK => "Modele_copene",
+ NS_HELP => "Aidance",
+ NS_HELP_TALK => "Aidance_copene",
+ NS_CATEGORY => "Categoreye",
+ NS_CATEGORY_TALK => "Categoreye_copene",
+) + $wgNamespaceNamesEn;
+
+/* private */ $wgQuickbarSettingsWa = array(
+ "Nole bår", "Aclawêye a hintche", "Aclawêye a droete", "Flotante a hintche"
+);
+
+/* private */ $wgSkinNamesWa = array(
+ "Sitandård", "Nostaldjike", "Bleu Cologne", "Paddington", "Montparnasse"
+);
+
+/* private */ $wgMathNamesWa = array(
+ "Håyner tofer come ene imådje PNG",
+ "Håyner en HTML si c'&nbsp;est foirt simpe, ôtmint e PNG",
+ "Håyner en HTML si c'&nbsp;est possibe, ôtmint e PNG",
+ "El leyî e TeX (po les betchteus e môde tecse)",
+ "Ricmandé po les betchteus modienes"
+);
+
+/* private */ $wgDateFormatsWa = array( /* cwè fé chal ??? */
+ "Nole preferince",
+ "January 15, 2001",
+ "15 January 2001",
+ "2001 January 15",
+ "2001-01-15"
+);
+
+/* private */ $wgUserTogglesWa = array(
+ "hover" => "Racsegnes cwand on passe so les loyéns",
+ "underline" => "Sorlignî les loyéns",
+ "highlightbroken" => "Håyner les vudes loyéns
+ <a href=\"\" class=\"new\">come çouchal</a><br> &nbsp;&nbsp;&nbsp;
+ (oudonbén: come çouchal<a href=\"\" class=\"internal\">?</a>).",
+ "justify" => "Djustifyî les hagnons",
+ "hideminor" => "Èn nén moster les <i>dierins candjmints</i> mineurs",
+ "usenewrc" => "Ramidrés <i>dierins candjmints</i> (nén tos les betchteus)",
+ "numberheadings" => "Limerotaedje otomatike des tites",
+ "editondblclick" => "Candjî les pådjes avou on dobe-clitch (JavaScript)",
+ "editsection" => "Eployî les loyéns «[candjî]» po candjî rén k'&nbsp;ene seccion",
+ "editsectiononrightclick" => "Candjî les seccions avou on dobe-clitch sol tite (JavaScript)",
+ "showtoc" => "Mostrer l'&nbsp;tåvlea d'&nbsp;ådvins<br>(po ls årtikes avou pus di 3 seccions)",
+ "rememberpassword" => "Rimimbrer li scret inte les sessions",
+ "editwidth" => "Li boesse d'&nbsp;aspougnaedje prind tote li lårdjeu",
+ "watchdefault" => "Shuve les årtikes ki dj'&nbsp;fwai ou ki dj'&nbsp;candje",
+ "minordefault" => "Prémete mes candjmints come mineurs",
+ "previewontop" => "Prévey l'&nbsp;årtike å dzeu del boesse d'&nbsp;aspougnaedje",
+ "nocache" => "Èn nén eployî d'&nbsp;muchete pol håynaedje des pådjes"
+);
+
+/* private */ $wgBookstoreListWa = array(
+ "AddALL" => "http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN",
+ "PriceSCAN" => "http://www.pricescan.com/books/bookDetail.asp?isbn=$1",
+ "Barnes & Noble" => "http://shop.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1",
+ "Amazon.com" => "http://www.amazon.com/exec/obidos/ISBN=$1"
+);
+
+/* private */ $wgWeekdayNamesWa = array(
+ "dimegne", "londi", "mårdi", "mierkidi", "djudi",
+ "vénrdi", "semdi"
+);
+
+/* private */ $wgMonthNamesWa = array(
+ "djanvî", "fevrî", "måss", "avri", "may", "djun",
+ "djulete", "awousse", "setimbe", "octôbe", "nôvimbe",
+ "decimbe"
+);
+
+/* private */ $wgMonthAbbreviationsWa = array(
+ "dja", "fev", "mås", "avr", "may", "djn", "djl", "awo",
+ "set", "oct", "nôv", "dec"
+);
+
+# All special pages have to be listed here: a description of ""
+# will make them not show up on the "Special Pages" page, which
+# is the right thing for some of them (such as the "targeted" ones).
+#
+####
+#### Li no des pådjes ni s' pout nén (co?) ratourner
+#### Name of the pages is not (yet?) translatable
+####
+/* private */ $wgValidSpecialPagesWa = array(
+ "Userlogin" => "",
+ "Userlogout" => "",
+ "Preferences" => "Candjî mes preferinces",
+ "Watchlist" => "Mes pådjes shuvowes",
+ "Recentchanges" => "Dierins candjmints",
+ "Upload" => "Eberweter des imådjes",
+ "Imagelist" => "Djivêye des imådjes",
+ "Listusers" => "Uzeus eredjîstrés",
+ "Statistics" => "Sitatistikes del waibe",
+ "Randompage" => "Ã…rtike a l'&nbsp;astcheyance",
+
+ "Lonelypages" => "Årtikes ôrfulins",
+ "Unusedimages" => "Imådjes ôrfulinnes",
+ "Popularpages" => "Årtikes les pus léjhous",
+ "Wantedpages" => "Ã…rtikes les pus rcwerous",
+ "Shortpages" => "Ã…rtikes les pus courts",
+ "Longpages" => "Ã…rtikes les pus longous",
+ "Newpages" => "Årtikes novelmint askepyîs",
+ "Ancientpages" => "Årtikes les pus vîs",
+ "Intl" => "Loyéns eterlingaedjes",
+ "Allpages" => "Totes les påjdes reléjhowes sol tite",
+
+ "Ipblocklist" => "Uzeus/adresses IP di blokés",
+ "Maintenance" => "PÃ¥dje di manaedjmint",
+ "Specialpages" => "",
+ "Contributions" => "",
+ "Emailuser" => "",
+ "Whatlinkshere" => "",
+ "Recentchangeslinked" => "",
+ "Movepage" => "",
+ "Booksources" => "External book sources", # co a fé
+ "Categories" => "Categoreyes des pådjes",
+ "Export" => "XML page export", # co a fé
+
+);
+
+/* private */ $wgSysopSpecialPagesWa = array(
+ "Makesysop" => "Diner a èn uzeu on livea di manaedjeu",
+ "Blockip" => "Bloker èn uzeu/ene adresse IP",
+ "Asksql" => "Query the database", # co a fé
+ "Undelete" => "Rapexhî des disfacêyès pådjes"
+);
+
+/* private */ $wgDeveloperSpecialPagesWa = array(
+ "Lockdb" => "Mete li båze di dnêyes e môde seulmint-lére",
+ "Unlockdb" => "Rimete l'&nbsp;accès po scrire al båze di dnêyes",
+ "Debug" => "Informåcion di disbugaedje"
+);
+
+/* private */ $wgAllMessagesWa = array(
+
+# Bits of text used by many pages:
+#
+# the [] is only for *bytes*, real chars should be one by one :-(
+#"linktrail" => "/^(?:å|â|ê|î|ô|û|ç|é|è|[a-z]+)(.*)\$/sD",
+"linktrail" => "/^(å|â|ê|î|ô|û|ç|é|è|[a-z]+)(.*)\$/sD",
+"categories" => "Categoreyes des pådjes",
+"category" => "categoreye",
+"category_header" => "Årtikes el categoreye «%s»",
+"subcategories" => "Dizo-categoreyes",
+"mainpage" => "Mwaisse pådje",
+"mainpagetext" => "Li programe Wiki a stî astalé a l'&nbsp;idêye.",
+"about" => "Ã… dfait",
+"aboutwikipedia" => "Ã… dfait di Wikipedia",
+"aboutpage" => "Wikipedia:Ã… dfait",
+"help" => "Aidance",
+"helppage" => "Wikipedia:Aidance",
+"wikititlesuffix" => "Wikipedia",
+"bugreports" => "Rapoirts di bugs",
+"bugreportspage" => "Wikipedia:Rapoirts di bugs",
+"sitesupport" => "Ecwårlaedje",
+"sitesupportpage" => "", # If not set, won't appear. Can be wiki page or URL
+"faq" => "FAQ", # co a fé
+"faqpage" => "Wikipedia:FAQ", # co a fé
+"edithelp" => "Aidance",
+"edithelppage" => "Wikipedia:Kimint_candjî_ene_pådje",
+"cancel" => "Rinoncî",
+"qbfind" => "Trover",
+"qbbrowse" => "Foyter",
+"qbedit" => "Candjî",
+"qbpageoptions" => "Cisse pådje ci",
+"qbpageinfo" => "Contecse",
+"qbmyoptions" => "Mes pådjes",
+"qbspecialpages" => "Pådjes sipeciåles",
+"moredotdotdot" => "Co dpus...",
+"mypage" => "Mi pådje",
+"mytalk" => "Mi copinaedje",
+#"currentevents" => "-", /* pol dismete */
+"currentevents" => "Actouwålités",
+"errorpagetitle" => "Aroke",
+"returnto" => "Rivni al pådje «$1».",
+"fromwikipedia" => "Èn årtike di Wikipedia, li libe eciclopedeye.",
+"help" => "Aidance",
+"search" => "Cweri",
+"history" => "Istwere del pådje",
+"printableversion" => "Modêye sicrirece-amishtåve",
+"editthispage" => "Candjî&nbsp;l'&nbsp;pådje",
+"deletethispage" => "Disfacer l'&nbsp;pådje",
+"protectthispage" => "Protedjî l'&nbsp;pådje",
+"unprotectthispage" => "Disprotedjî l'&nbsp;pådje",
+"newpage" => "Novele pådje",
+"talkpage" => "Copene sol pådje",
+"postcomment" => "Sicrire on comintaire",
+"articlepage" => "Vey l'&nbsp;Ã¥rtike",
+"subjectpage" => "Vey li sudjet", # For compatibility
+"userpage" => "Vey li pådje di l'&nbsp;uzeu",
+"wikipediapage" => "Vey li meta-pådje",
+"imagepage" => "Vey li pådje di l'&nbsp;imådje",
+"viewtalkpage" => "Vey li pådje di copene",
+"otherlanguages" => "Ôtes lingaedjes",
+"redirectedfrom" => "(Redjiblé di $1)",
+"lastmodified" => "Cisse pådje a stî candjeye pol dierin côp li $1.",
+"viewcount" => "Cisse pådje la a stî léjhowe $1 côps.",
+"gnunote" => "Tos les tecses chal sont dizo l'&nbsp;libe licince <a class=internal href='/wiki/GFDL'>GFDL (licince di documintåcion libe di GNU)</a>.",
+"printsubtitle" => "(di http://wikipedia.walon.org)",
+"protectedpage" => "PÃ¥dje protedjeye",
+"administrators" => "Wikipedia:Manaedjeus",
+"sysoptitle" => "I vs fåt esse manaedjeu",
+"sysoptext" => "The action you have requested can only be
+performed by users with \"sysop\" status.
+See $1.", # co a fé
+"developertitle" => "I vs fåt esse diswalpeu",
+"developertext" => "The action you have requested can only be
+performed by users with \"developer\" status.
+See $1.", # co a fé
+"nbytes" => "$1 octets",
+"go" => "Potchî",
+"ok" => "'l est bon",
+"sitetitle" => "Wikipedia",
+"sitesubtitle" => "Li libe eciclopedeye",
+"retrievedfrom" => "Prin del pådje «$1»",
+"newmessages" => "Vos avoz des $1.",
+"newmessageslink" => "noveas messaedjes",
+"editsection" => "candjî",
+"toc" => "Ã…dvins",
+"showtoc" => "mostrer",
+"hidetoc" => "catchî",
+"thisisdeleted" => "Vey ou rapexhî $1?",
+"restorelink" => "$1 candjmints disfacés",
+
+# Main script and global functions
+#
+"nosuchaction" => "Nole sifwaite accion",
+"nosuchactiontext" => "L'&nbsp;accion specifieye pal hårdêye n'&nbsp;est
+nén ricnoxhowe på wiki.",
+"nosuchspecialpage" => "Nole sifwaite pådje",
+"nospecialpagetext" => "Vos avoz dmandé ene pådje sipeciåle ki n'&nbsp;est
+nén ricnoxhowe på wiki.",
+
+# General errors
+#
+"error" => "Aroke",
+"databaseerror" => "Åk n'&nbsp;a nén stî avou l'&nbsp;båze di dnêyes",
+"dberrortext" => "A database query syntax error has occurred.
+This could be because of an illegal search query (see $5),
+or it may indicate a bug in the software.
+The last attempted database query was:
+<blockquote><tt>$1</tt></blockquote>
+from within function \"<tt>$2</tt>\".
+MySQL returned error \"<tt>$3: $4</tt>\".", # co a fé
+"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", # co a fé
+"noconnect" => "Mande escuzes! Li wiki a des rujhes tecnikes pol moumint, eyet c'&nbsp;est nén possibe di s'&nbsp;raloyî al båze di dnêyes.",
+"nodb" => "Dji n'&nbsp;sai tchoezi l'&nbsp;båze di dnêyes $1",
+"cachederror" => "The following is a cached copy of the requested page, and may not be up to date.", # co a fé
+"readonly" => "Database locked", # co a fé
+"enterlockreason" => "Enter a reason for the lock, including an estimate
+of when the lock will be released", # co a fé
+"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:
+<p>$1", # co a fé
+"missingarticle" => "The database did not find the text of a page
+that it should have found, named \"$1\".
+
+<p>This is usually caused by following an outdated diff or history link to a
+page that has been deleted.
+
+<p>If this is not the case, you may have found a bug in the software.
+Please report this to an administrator, making note of the URL.", # co a fé
+"internalerror" => "Divintrinne aroke",
+"filecopyerror" => "Dji n'&nbsp;a savou copyî l'&nbsp;fitchî «$1» viè «$2».",
+"filerenameerror" => "Dji n'&nbsp;a savou rlomer l'&nbsp;fitchî «$1» e «$2».",
+"filedeleteerror" => "Dji n'&nbsp;a savou disfacer l'&nbsp;fitchî «$1».",
+"filenotfound" => "Dji n'&nbsp;a savou trover l'&nbsp;fitchî «$1».",
+"unexpected" => "Valixhance nén ratindowe: «$1»=«$2».",
+"formerror" => "Error: could not submit form", # co a fé
+"badarticleerror" => "This action cannot be performed on this page.", # co a fé
+"cannotdelete" => "Could not delete the page or image specified. (It may have already been deleted by someone else.)", # co a fé
+"badtitle" => "MÃ¥va tite",
+"badtitletext" => "The requested page title was invalid, empty, or
+an incorrectly linked inter-language or inter-wiki title.", # co a fé
+"perfdisabled" => "Mande escuzes! mins cisse fonccionålité ci a stî essoctêye
+pol moumint pask'&nbsp;ele est trop pezante pol båze di dnêyes, ki dvént
+si télmint londjinne k'&nbsp;on s'&nbsp;endè pout pus siervi a môde di djin.",
+"perfdisabledsub" => "Vochal ene copeye k'&nbsp;a stî schapêye di $1:",
+"wrong_wfQuery_params" => "Parametes incoreks po wfQuery()<br />
+Fonccion: $1<br />
+Cweraedje: $2
+",
+"viewsource" => "Vey côde sourdant",
+"protectedtext" => "Cisse pådje chal a stî protedjeye siconte des candjmints;
+i gn a sacwantès råjhons po çoula, loukîz
+[[{{ns:4}}:PÃ¥dje protedjeye]] s'&nbsp;i vs plait.
+
+Mins nerén vos ploz vey eyet copyî li côde sourdant del pådje:",
+
+
+# Login and logout pages
+#
+"logouttitle" => "Dislodjaedje",
+"logouttext" => "Vos vs avoz dislodjî.
+Vos ploz continouwer a naivyî so {{SITENAME}} anonimmint, oudonbén
+vos relodjî dizo l'&nbsp;minme uzeu ou dizo èn uzeu diferin.",
+
+"welcomecreation" => "<h2>Bénvnowe, $1!</h2>
+<p>
+Vosse conte a stî ahivé.
+Èn rovyîz nén di candjî les preferinces di {{SITENAME}} a vosse môde.",
+
+"loginpagetitle" => "Elodjaedje",
+"yourname" => "Vosse no d'&nbsp;elodjaedje",
+"yourpassword" => "Vosse sicret",
+"yourpasswordagain" => "Ritapez vosse sicret",
+"newusersonly" => " (seulmint po les noveas uzeus)",
+"remembermypassword" => "Rimimbrer m'&nbsp;sicret inte les sessions.",
+"loginproblem" => "<b>Åk n'&nbsp;a nén stî tot vs elodjant.</b><br />Rissayîz!",
+"alreadyloggedin" => "<font color=red><b>Uzeu $1, vos estoz ddja elodjî!</b></font><br />",
+
+"areyounew" => "Si vos estoz novea so {{SITENAME}} et ki vos vloz
+on conte d'&nbsp;uzeu, tapez on no no d'&nbsp;uzeu ki vos vloz eployî,
+et poy deus côps on on scret (li minme, on côp dins tchake boesse).
+Come rawete vos ploz (mins c'&nbsp;est nén oblidjî) dner voste adresse
+emile; ça vént a pont si vos rovyîz vosse sicret, po dmander k'&nbsp;on
+vs evoye èn ôte pa emile.<br>\n",
+
+"login" => "S'&nbsp;elodjî",
+"loginprompt" => "Vos dvoz permete les coûkes po vs elodjî so Wikipedia.",
+"userlogin" => "S' elodjî", # pont d' "nbsp" chal
+"logout" => "Si dislodjî",
+"userlogout" => "Si dislodjî",
+"notloggedin" => "Nén elodjî",
+"createaccount" => "Ahiver on novea conte",
+"createaccountmail" => "pa emile",
+"badretype" => "Vos avoz dné deus screts diferins.",
+"userexists" => "Li no d'&nbsp;uzeu ki vs avoz tchoezi est ddja eployî. Tchoezixhoz è èn ôte s'&nbsp;i vs plait.",
+"youremail" => "Vost emile*",
+"yournick" => "Vosse no metou (po les sinateures)",
+"emailforlost" => "Les tchamps avou ene sitoele (*)
+èn sont nén obligatweres.<br />
+L'&nbsp;adresse emile, si vos ndè dnez ene, vos permetrè di rçure et
+d'&nbsp;evoyî des emiles å dtruviè di cisse waibe chal, sins vos dveur
+diner voste adresse emile, çoula vos srè eto foirt ahessåve si vos rovyîz
+måy vosse sicret (on novea scret vos pôrè-st esse evoyî pa emile).<br />
+Vosse vraiy no, si vos l'&nbsp;dinez, pôrè esse eployî po mete a costé
+di vos ovraedjes.",
+"loginerror" => "Aroke d'&nbsp;elodjaedje",
+"nocookiesnew" => "Li conte a stî ahivé, mins vos n'&nbsp;estoz nén elodjî. {{SITENAME}} eploye des coûkes po l'&nbsp;elodjaedje des uzeus. Vos avoz dismetou l'&nbsp;sopoirt des coûkes dins vosse betchteu waibe; rimetoz l'&nbsp;en alaedje et relodjîz vs avou vosse novea no d'&nbsp;elodjaedje eyet scret, s'&nbsp;i vs plait.",
+"nocookieslogin" => "{{SITENAME}} eploye des coûkes po l'&nbsp;elodjaedje des uzeus. Vos avoz dismetou l'&nbsp;sopoirt des coûkes dins vosse betchteu waibe; rimetoz l'&nbsp;en alaedje et relodjîz vs s'&nbsp;i vs plait.",
+"noname" => "Vos n'&nbsp;avoz nén dné di no d'&nbsp;uzeu valide.",
+"loginsuccesstitle" => "Vos estoz elodjî",
+"loginsuccess" => "L'&nbsp;elodjaedje a stî comifåt, asteure vos estoz elodjî dins {{SITENAME}} dizo l'&nbsp;no d'&nbsp;uzeu «$1».",
+"nosuchuser" => "I gn a nou uzeu dizo l'&nbsp;no «$1».
+Verifyîz çou k'&nbsp;vos avoz tapé, oudonbén rimplixhoz les ôtes tchamps
+et clitchîz sol boton po-z ahiver on novea conte.",
+"wrongpassword" => "Li scret ki vs avoz dné est måva. Rissayîz s'&nbsp;i vs plait.",
+"mailmypassword" => "M'&nbsp;emiler on novea scret",
+"passwordremindertitle" => "Rimimbraedje do scret po Wikipedia",
+"passwordremindertext" => "Ene sakî (probåblumint vos minme, avou l' adresse IP $1)
+a dmandé k' on vs emile on novea scret po vs elodjî so Wikipedia.
+Li scret po l' uzeu «$2» est asteure «$3».
+Po pus di såvrité, vos dvrîz vos elodjî eyet rcandjî vosse sicret å pus abeye.", # pont d' "&nbsp;" chal, ca c' est po-z esse emilé.
+"noemail" => "I gn a pont d'&nbsp;adresse emile di cnoxhowe po l'&nbsp;uzeu «$1».",
+"passwordsent" => "On novea scret a stî emilé a l'&nbsp;adresse emile
+racsegneye po l'&nbsp;uzeu «$1».
+Relodjîz vs avou ç'&nbsp;noû scret on côp ki vos l'&nbsp;åroz rçuvou s'&nbsp;i vs plait.",
+
+# Edit pages
+#
+"summary" => "Rascourti",
+"subject" => "Sudjet/tiestire",
+"minoredit" => "C'&nbsp;est on candjmint mineur",
+"watchthis" => "Shure cist årtike",
+"savearticle" => "Schaper l'&nbsp;pådje",
+"preview" => "Vey divant",
+"showpreview" => "Vey divant",
+"blockedtitle" => "L'&nbsp;uzeu est bloké",
+"blockedtext" => "Your user name or IP address has been blocked by $1.
+The reason given is this:<br>''$2''<p>You may contact $1 or one of the other
+[[Wikipedia:Manaedjeus|administrators]] to discuss the block.
+
+Note that you may not use the \"email this user\" feature unless you have a valid email address registered in your [[Sipeciås:Preferences|user preferences]].
+
+Your IP address is $3. Please include this address in any queries you make.
+
+==Note to AOL users==
+Due to continuing acts of vandalism by one particular AOL user, Wikipedia often blocks AOL proxies. Unfortunately, a single proxy server may be used by a large number of AOL users, and hence innocent AOL users are often inadvertently blocked. We apologise for any inconvenience caused.
+
+If this happens to you, please email an administrator, using an AOL email address. Be sure to include the IP address given above.
+", # co a fé
+"whitelistedittitle" => "S'&nbsp;elodjî po candjî",
+"whitelistedittext" => "I vs fåt [[Sipeciås:Userlogin|elodjî]] po pleur candjî les årtikes.",
+"whitelistreadtitle" => "S'&nbsp;elodjî po lére",
+"whitelistreadtext" => "I vs fåt [[Sipeciås:Userlogin|elodjî]] po pleur lére les årtikes.",
+"whitelistacctitle" => "Vos n'&nbsp;avoz nén l'&nbsp;permission d'&nbsp;ahiver on conte chal",
+"whitelistacctext" => "Po pleur ahiver on conte so ç'&nbsp;Wiki chal, vos dvoz esse [[Sipeciås:Userlogin|elodjî]] ey aveur les bounès permissions.",
+"accmailtitle" => "Li scret a stî evoyî.",
+"accmailtext" => "Li scret po «$1» a stî evoyî a $2.",
+"newarticle" => "(Novea)",
+"newarticletext" =>
+"Vos avoz clitchî so on loyén viè ene pådje ki n'&nbsp;egzistêye nén co.
+Mins '''vos''' l'&nbsp;poloz askepyî! Po çoula, vos n'&nbsp;avoz k'&nbsp;a
+cmincî a taper vosse tecse dins l'&nbsp;boesse di tecse chal pa dzo
+(alez vey li [[Wikipedia:Aidance|pådje d'&nbsp;aidance]] po pus
+d'&nbsp;informåcion).
+Si vos n'&nbsp;voloz nén scrire cisse pådje chal, clitchîz simplumint
+sol boton '''En erî''' di vosse betchteu waibe po rivni al pådje di dvant.",
+"anontalkpagetext" => "---- ''Çouchal c'&nbsp;est li pådje di copene po
+èn uzeu anonime ki n'&nbsp;a nén (co) fwait on conte por lu s'&nbsp;elodjî,
+ou ki nel eploye nén. Do côp, on doet eployî si [[adresse IP]] limerike po
+l'&nbsp;idintifyî. Come ene sifwaite adresse IP pout esse eployeye pa pus
+d'&nbsp;èn uzeu, i s'&nbsp;pout ki vos voeyoz chal des rimåkes et des
+messaedjes ki n'&nbsp;sont nén por vos, loukîz s'&nbsp;i vs plait po
+[[Sipeciås:Userlogin|fé on novea conte ou s'&nbsp;elodjî]] po n'&nbsp;pus
+aveur di confuzion avou des ôtes uzeus anonimes.'' ",
+"noarticletext" => "(I gn a pol moumint nou tecse e cisse pådje chal)",
+"updated" => "(Ramidré)",
+"note" => "<strong>Note:</strong> ",
+"previewnote" => "Èn rovyîz nén ki c'&nbsp;est djusse on
+prévoeyaedje, li pådje n'&nbsp;est nén co schapêye!",
+"previewconflict" => "Ci prévoeyaedje ci mostere kimint kel tecse del
+boesse di tecse do dzeu sereut håyné si vos decidez di clitchî so «schaper».",
+"editing" => "Candjant $1",
+"sectionedit" => " (seccion)",
+"commentedit" => " (comintaire)",
+"editconflict" => "Conflit inte deus candjmints: $1",
+"explainconflict" => "Ene sakî a candjî l'&nbsp;pådje do tins ki vos
+estîz a scrire.
+Li boesse di tecse do dzeur mostere li tecse del pådje come il est
+pol moumint sol sierveu.
+Li tecse da vosse est sol boesse di tecse do dzo.
+Les diferinces sont håynêyes å mitan.
+Vos dvoz mete vos candjmints dins l'&nbsp;tecse d'&nbsp;asteure (Ã¥ dzeur)
+si vos lez vloz co evoyî.
+<b>Seulmint</b> li tecse do dzeur serè candjî cwand vos clitchroz sol
+boton «Schaper l'nbsp;pådje».\n<p>",
+"yourtext" => "Li tecse da vosse",
+"storedversion" => "Modêye sol sierveu",
+"editingold" => "<strong>ASTEME: Vos estoz ki candje ene viye modêye
+del pådje. Si vos l'&nbsp;schapez, tos les candjmints k'&nbsp;ont stî
+fwaits dispoy adon si vont piede.</strong>\n",
+"yourdiff" => "Diferinces",
+"copyrightwarning" => "Notez ki totes les contribucions fwaites po {{SITENAME}}
+dvèt esse dizo li licince di documintåcion libe di GNU
+(GFDL, loukîz $1 po pus di racsegnes).
+Si&nbsp;vos n'&nbsp;voloz nén ki vosse tecse poye esse candjî eyet spårdou
+pa tot l'&nbsp;minme kî, adon nel evoyîz nén chal.
+<br>
+Vos nos acertinez eto ki vos avoz scrît l'&nbsp;tecse vos minme, oudonbén
+l'&nbsp;avoz copyî d'&nbsp;on sourdant libe (dominne publik ou on sourdant
+pareymint libe).
+<br>
+<strong>N'&nbsp;EVOYÎZ NÉN DES TECSES DIZO ABONDROETS SINS PERMISSION&nbsp;!</strong>",
+"longpagewarning" => "ASTEME: Cisse pådje fwait $1 kilo-octets; des
+betchteus waibes k'&nbsp;i gn a polèt aveut des rujhes po-z aspougnî
+des pådjes k'&nbsp;aprepièt ou di pus di 32&nbsp;Ko.
+Vos dvrîz tuzer a pårti l'&nbsp;pådje e pus ptits bokets.",
+"readonlywarning" => "ASTEME: On-z overe sol båze di dnêyes pol moumint, ey elle a stî metowe e mode seulmint-lére.
+Do côp, vos n'&nbsp;såroz schaper vos candjmints asteure; motoit vos dvrîz copyî et aclaper l'&nbsp;tecse dins on fitchî da vosse pol poleur rimete sol {{SITENAME}} pus tård.",
+"protectedpagewarning" => "ASTEME: Cisse pådje chal a stî protedjeye siconte
+des candjmints, seulmint les uzeus avou èn accès di manaedjeu el polèt candjî.
+Acertinez vs ki vos shuvoz les
+<a href='/wiki/Wikipedia:Rîles_po_les_pådjes_protedjeyes'>rîles po les pådjes
+protedjeyes</a>.",
+
+# History pages
+#
+"revhistory" => "Istwere des modêyes",
+"nohistory" => "I gn a pont d'&nbsp;istwere des modêyes po cisse pådje chal.",
+"revnotfound" => "Modêye nén trovêye",
+"revnotfoundtext" => "Li viye modêye del pådje ki vos avoz dmandé n'&nbsp;a nén stî trovêye.
+Verifyîz l'&nbsp;hårdêye ki vs avoz eployî po-z ariver sol pådje s'&nbsp;i vs plait.\n",
+"loadhist" => "Tcherdjaedje del pådje di l'&nbsp;istwere",
+"currentrev" => "Modêye d'&nbsp;asteure",
+"revisionasof" => "Modêye do $1",
+"cur" => "ast.",
+"next" => "shuv.",
+"last" => "dif.",
+"orig" => "oridj.",
+"histlegend" => "Ledjinde: (ast.) = diferince avou l'&nbsp;modêye d'&nbsp;asteure,
+(dif.) = diferince avou l'&nbsp;modêye di dvant, M = candjmint mineur",
+
+# Diffs
+#
+"difference" => "(Diferinces inte les modêyes)",
+"loadingrev" => "tcherdjaedje del modêye po les diferinces",
+"lineno" => "Roye $1:",
+"editcurrent" => "Candjî li modêye do moumint di cisse pådje chal",
+
+# Search results
+#
+"searchresults" => "Rizultats do cweraedje",
+"searchhelppage" => "Wikipedia:Cweraedje",
+"searchingwikipedia" => "Cweraedje so Wikipedia",
+"searchresulttext" => "Po pus di racsegnes sol manire di fé des cweraedjes so Wikipedia, loukîz $1.",
+"searchquery" => "Pol cweraedje «$1»",
+"badquery" => "Badly formed search query", # co a fé
+"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.", # co a fé
+"matchtotals" => "Li cweraedje «$1» a trové $2 årtikes avou l'&nbsp;tite
+ki corespond eyet $3 årtikes avou l'&nbsp;tecse ki corespond.",
+"nogomatch" => "I n'&nbsp;a nole pådje avou ç'&nbsp;tite la, dji saye on cweraedje dins l'&nbsp;tecse des årtikes.",
+"titlematches" => "Ã…rtikes avou on tites ki corespond",
+"notitlematches" => "Nol årtike avou on tite ki corespond",
+"textmatches" => "Ã…rtikes avou do tecse ki corespond",
+"notextmatches" => "Nol årtike avou do tecse ki corespond",
+"prevn" => "$1 di dvant",
+"nextn" => "$1 shuvants",
+"viewprevnext" => "Vey ($1) ($2) ($3).",
+"showingresults" => "Chal pa dzo <b>$1</b> rizultats a pårti do limero <b>$2</b>.",
+"showingresultsnum" => "Chal pa dzo <b>$3</b> rizultats a pårti do limero <b>$2</b>.",
+"nonefound" => "<strong>Note</strong>: des cweraedjes ki n'&nbsp;dinèt nou rzultat c'&nbsp;est sovint li cweraedje di ptits mots trop corants (come «les», «des») ki n'&nbsp;sont nén indecsés, oudonbén des cweraedjes di pus d'&nbsp;on mot (seulmint les pådjes avou tos les mots dmandés sront håynêyes dins l'&nbsp;rizultat do cweraedje).",
+"powersearch" => "Cweri",
+"powersearchtext" => "
+Cweraedje ezès espåces di nos&nbsp;:<br>
+$1<br>
+$2 Håyner les redjiblaedjes &nbsp; Cweri après $3 $9",
+"searchdisabled" => "<p>Mande escuzes! Li cweraedje å dvins des årtikes a stî dismetou
+pol moumint, cåze ki l'&nbsp;sierveu est fortcherdjî.
+Tot ratindant, vos ploz eployî Google po fé les rcweraedjes,
+mins çoula pout esse ene miete vî.</p>
+
+<!-- SiteSearch Google -->
+<FORM method=GET action=\"http://www.google.com/search\">
+<TABLE bgcolor=\"#FFFFFF\"><tr><td>
+<A HREF=\"http://www.google.com/\">
+<IMG SRC=\"http://www.google.com/logos/Logo_40wht.gif\"
+border=\"0\" ALT=\"Google\"></A>
+</td>
+<td>
+<INPUT TYPE=text name=q size=31 maxlength=255 value=\"$1\">
+<INPUT type=submit name=btnG VALUE=\"Cweri avou Google\">
+<font size=-1>
+<input type=hidden name=domains value=\"{$wgServer}\"><br>
+<input type=radio name=sitesearch value=\"\"> sol waibe
+<input type=radio name=sitesearch value=\"{$wgServer}\" checked> so {$wgServer} <br>
+<input type='hidden' name='hl' value='wa'>
+<input type='hidden' name='ie' value='$2'>
+<input type='hidden' name='oe' value='$2'>
+</font>
+</td></tr></TABLE>
+</FORM>
+<!-- SiteSearch Google -->",
+"blanknamespace" => "(Mwaisse)",
+
+# Preferences page
+#
+"preferences" => "Preferinces",
+"prefsnologin" => "Vos n'&nbsp;estoz nén elodjî",
+"prefsnologintext" => "I vs fåt esse <a href=\"" .
+ wfLocalUrl( "Sipeciås:Userlogin" ) . "\">elodjî</a>
+po pleur candjî vos preferinces.",
+"prefslogintext" => "Vos estoz elodjî dizo l'&nbsp;uzeu «$1».
+Vosse divintrin idintifiant est l'&nbsp;limero $2.
+
+Loukîz a [[Wikipedia:Aidance so les preferinces]] po saveur çou k'&nbsp;c'&nbsp;est tchaeke des tchuzes des preferinces des uzeus.",
+"prefsreset" => "Les preferinces ont stî rmetowes come d'&nbsp;avance a
+pårti des wårdêyès valixhances.",
+"qbsettings" => "Apontiaedjes pol bår di menu",
+"changepassword" => "Candjî l'&nbsp;sicret",
+"skin" => "Pea",
+"math" => "HÃ¥ynaedje des formules matematikes",
+"dateformat" => "Cogne del date",
+"math_failure" => "Failed to parse", # co a fé
+"math_unknown_error" => "aroke nén cnoxhowe",
+"math_unknown_function" => "fonccion nén cnoxhowe ",
+"math_lexing_error" => "lexing error", # co a fé
+"math_syntax_error" => "aroke di sintacse",
+"saveprefs" => "Schaper les preferinces",
+"resetprefs" => "Rimete les prémetowès valixhances",
+"oldpassword" => "Vî scret",
+"newpassword" => "Noû scret",
+"retypenew" => "Ritapez l'&nbsp;noû scret",
+"textboxsize" => "Grandeu del boesse di tecse",
+"rows" => "Royes",
+"columns" => "Colones",
+"searchresultshead" => "HÃ¥ynaedje des rzultats di cweraedje",
+"resultsperpage" => "Nombe di responses a håyner so en pådje",
+"contextlines" => "Nombe di royes a håyner po ene response",
+"contextchars" => "Nombe di caracteres di contecse pa roye",
+"stubthreshold" => "Grandeu minimom po håyner les courts årtikes",
+"recentchangescount" => "Nombe di tites dins les <i>dierins candjmints</i>",
+"savedprefs" => "Vos preferinces ont stî schapêyes.",
+"timezonetext" => "Tapez li nombe d'&nbsp;eures di diferince avou
+l'&nbsp;tins univiersel (UTC).",
+"localtime" => "Håyner l'&nbsp;eure locåle",
+"timezoneoffset" => "Diferince d'&nbsp;eures",
+"servertime" => "Server time is now", # co a fé
+"guesstimezone" => "Fill in from browser", # co a fé
+"emailflag" => "Èn nén riçure des emiles des ôtes uzeus",
+"defaultns" => "Prémetous spåces di nos pol cweraedje:",
+
+# Recent changes
+#
+"changes" => "candjmints",
+"recentchanges" => "Dierins candjmints",
+"recentchangestext" => "Shuvoz chal les dierins candjmints k'&nbsp;i gn a yeu
+dzo Wikipedia.",
+"rcloaderr" => "Tcherdjant les dierins candjmints",
+"rcnote" => "Chal pa dzo les <strong>$1</strong> dierins candjmints des dierins <strong>$2</strong> djoûs.",
+"rcnotefrom" => "Chal pa dzo les candjmints dispoy li <b>$2</b> (disk'&nbsp;a <b>$1</b> di mostrés).",
+"rclistfrom" => "Mostrer les candjmints k'&nbsp;i gn a yeu a pårti do $1",
+# "rclinks" => "Mostrer les $1 dierins candjmints des dierins $2 djoûs.",
+"showhideminor" => "$1 candmints mineurs",
+"rclinks" => "Mostrer les $1 dierins candjmints des dierins $2 djoûs; $3",
+"rchide" => "e $4; $1 candjmints mineurs; $2 nos d'&nbsp;espåces segondaires; $3 candjmints multipes.",
+"rcliu" => "; $1 candjmints pa des uzeus eredjîstrés",
+"diff" => "dif.",
+"hist" => "ist.",
+"hide" => "cat.",
+"show" => "håy.",
+"tableform" => "tåvlea",
+"listform" => "djivêye",
+"nchanges" => "$1 candjmints",
+"minoreditletter" => "M",
+"newpageletter" => "N",
+
+# Upload
+#
+"upload" => "Eberweter on fitchî",
+"uploadbtn" => "Eberweter",
+"uploadlink" => "Eberweter des imådjes",
+"reupload" => "Reberweter",
+"reuploaddesc" => "Rivni al pådje d'&nbsp;eberwetaedje.",
+"uploadnologin" => "Nén elodjî",
+"uploadnologintext" => "I vs fåt esse <a href=\"" .
+ wfLocalUrl( "Sipeciås:Userlogin" ) . "\">elodjî</a> por
+vos pleur eberweter des fitchîs.",
+"uploadfile" => "Eberweter des imådjes, des sons, evnd.",
+"uploaderror" => "Aroke d'&nbsp;eberwetaedje",
+"uploadtext" => "<strong>ASTEME!</strong> Divant d'&nbsp;eberweter on
+fitchî chal, léjhoz et s'&nbsp;vos asseurer di bén shure
+les <a href=\"" .
+wfLocalUrlE( "Wikipedia:Rîles_po_l'_eployaedje_des_imådjes" ) . "\">rîles po
+l'&nbsp;eployaedje des imådjes</a> di Wikipedia.
+<p>
+Si on fitchî avou l'&nbsp;minme no egzistêye dedja, i srè replaecî
+sins adviertixhmint pa l'&nbsp;ci ki vos årîz eberweté.
+Dj'&nbsp;ô bén ki, a moens ki vos vôrîz mete a djoû on fitchî tot
+l'&nbsp;replaeçant pa on pus noû, vos dvrîz tofer vos acertiner
+k'&nbsp;i n'&nbsp;a nén ddja on fitchî do minme no.
+<p>
+Po håyner ou cweri des imådjes k'&nbsp;ont ddja stî rçuvowes,
+alez sol <a href=\"" . wfLocalUrlE( "Sipeciås:Imagelist" ) .
+"\">djivêye des imådjes dedja eberwetêyes</a>.
+Les eberwetaedjes et disfaçaedjes sont metous èn on <a href=\"" .
+wfLocalUrlE( "Wikipedia:Djournå_des_eberwetaedjes" ) . "\">djournå des eberwetaedjes</a>.
+<p>
+Eployîz les boesses d'&nbsp;intrêye chal pa dzo po-z eberweter
+des noveas fitchîs d'&nbsp;imådjes po vos årtikes.
+Sol plupårt des betchteus, vos voeroz on boton «Foyter...» (ou «Browse...»)
+ki vs permetrè di foyter dins les ridants del deure plake da vosse
+po tchoezi l'&nbsp;fitchî, çou ki rimplirè otomaticmint li tchamp
+do no do fitchî k'&nbsp;est a costé.
+Vos dvoz eto clitchî sol boesse por vos acertiner ki vos n'&nbsp;violez
+nou abondroet et ki l'&nbsp;fitchî ki vos evoyîz si pout bén eployî
+dins l'&nbsp;Wikipedia.
+Clitchîz sol boton «Eberweter» po-z evoyî l'&nbsp;fitchî sol sierveu.
+çoula pout prinde do tins si l'&nbsp;raloyaedje al daegntoele est
+londjin.
+<p>
+Les cognes di fitchîs k'&nbsp;on-z a ptchî c'&nbsp;est li JPEG po
+les imådjes foto, eyet li PNG po les dessins, mapes, drapeas, imådjetes...
+et li OGG po les sons.
+S'&nbsp;i vs plait, dinez a vosse fitchî on no ki dit bén çou
+k'&nbsp;c'&nbsp;est, c'&nbsp;est pus åjhey insi.
+Po håyner l'&nbsp;imådje dins èn årtike, eployîz on loyén del
+foûme <b>[[imådje:fitchî.jpg]]</b> ou <b>[[imådje:fitchî.png|tecse po les betchteus nén grafikes]]</b>
+ou co <b>[[media:fitchî.ogg]]</b> po les sons.
+<p>
+Notez bén ki, tot come po les pådjes del Wikipedia, les ôtès djins polèt
+candjî ou disfacer vos eberwetaedjes s'&nbsp;i pinsèt ki c'&nbsp;est mî
+po l'&nbsp;eciclopedeye; eyet vos ploz esse espaitchî d'&nbsp;eberweter
+des fitchîs si vos n'&nbsp;rispectez nén l'&nbsp;sistinme.",
+"uploadlog" => "djournå des eberwetaedjes",
+"uploadlogpage" => "Djournå_des_eberwetaedjes",
+"uploadlogpagetext" => "Chal pa dzo li djivêye des dierins eberwetaedjes.
+Totes les eures sont metowes e tins univiersel (UTC).
+<ul>
+</ul>
+",
+"filename" => "No do fitchî",
+"filedesc" => "Discrijhaedje",
+"filestatus" => "Abondroets ey eployaedje",
+"filesource" => "Sourdant",
+"affirmation" => "Dj'&nbsp;acertinêye ki l'&nbsp;djin k'&nbsp;a les
+abondroets po ci fitchî chal est d'&nbsp;acoird di l'&nbsp;eplaidî dizo
+les condicions del $1.",
+"copyrightpage" => "Wikipedia:Abondroets",
+"copyrightpagename" => "Abondroets Wikipedia",
+"uploadedfiles" => "Fitchîs eberwetés",
+"noaffirmation" => "Vos dvoz acertiner ki l'&nbsp;fitchî ki vos eberwetez
+pout bén esse eployî sins aler siconte des abondroets do fitchî.",
+"ignorewarning" => "Passer houte des adviertixhmints eyet schaper tot l'&nbsp;minme li fitchî.",
+"minlength" => "Les imådjes divèt aveur des nos di pol moens troes letes.",
+"badfilename" => "Li no d'&nbsp;l'&nbsp;imådje a stî candjî a «$1».",
+"badfiletype" => "«.$1» n'&nbsp;est nén ene sôre d'&nbsp;imådje ricmandêye.",
+"largefile" => "C'&nbsp;est mî ki les imådjes åyexhe ene grandeu di moens di 100&nbsp;Ko.",
+"successfulupload" => "L'&nbsp;eberwetaedje a stî comifåt",
+"fileuploaded" => "L'&nbsp;eberwetaedje do fitchî «$1» a stî å paire des pôces.
+Shuvoz ci loyén chal: ($2) pol pådje di discrijhaedje eyet rimplixhoz les
+informåcions sol fitchî, come di wice k'&nbsp;i vént, cwand il a stî
+fwait, et pa kî, et tot l'&nbsp;minme kéne informåcion interessante ki vos ploz
+saveur å dfait do fitchî.",
+"uploadwarning" => "Adviertixhmint so l'&nbsp;eberwetaedje",
+"savefile" => "Schaper l'&nbsp;fitchî",
+"uploadedimage" => "eberwetaedje di «$1»",
+
+# Image list
+#
+"imagelist" => "Djivêye des imådjes",
+"imagelisttext" => "Chal pa dzo c'&nbsp;est ene djivêye di $1 imådjes relîtes $2.",
+"getimagelist" => "fetching image list", # co a fé
+"ilshowmatch" => "Mostrer totes les imådjes avou des nos ki corespondèt a",
+"ilsubmit" => "Cweri",
+"showlast" => "Mostrer les $1 dierinnès imådjes relîtes $2.",
+"all" => "totes",
+"byname" => "påzès nos",
+"bydate" => "pazès dates",
+"bysize" => "pa grandeu",
+"imgdelete" => "oist.",
+"imgdesc" => "disc.",
+"imglegend" => "Ledjinde: (disc.) = håyner/candjî l'&nbsp;discrijhaedje di l'&nbsp;imådje.",
+"imghistory" => "Istwere di l'&nbsp;imådje",
+"revertimg" => "mod.",
+"deleteimg" => "oist.",
+"deleteimgcompletely" => "oist.",
+"imghistlegend" => "Ledjinde: (ast.) = c'&nbsp;est l'&nbsp;imådje k'&nbsp;i gn a asteure, (oist.) = oister (disfacer)
+cisse viye modêye la, (mod.) = rivni a cisse viye modêye la.
+<br><i>Clitchîz sol date po vey l'&nbsp;imådje evoyeye a cisse date la.</i>",
+"imagelinks" => "Loyéns viè ciste imådje chal",
+"linkstoimage" => "Les pådjes shuvantes eployèt ciste imådje chal:",
+"nolinkstoimage" => "I n'&nbsp;a nole pådje k'&nbsp;eploye ciste imådje chal.",
+
+# Statistics
+#
+"statistics" => "Sitatistikes",
+"sitestats" => "Sitatistikes del waibe",
+"userstats" => "Sitatistikes des uzeus",
+"sitestatstext" => "I gn a <b>$1</b> pådjes å totå el båze di dnêyes.
+Çoula tot contant les pådjes di «Copenes», les pådjes å dfait di Wikipedia,
+les pådjes «stub» (pådjes sins waire di contnou), les redjiblaedjes,
+eyet co ds ôtes ki n'&nbsp;sont nén vormint des årtikes.
+Si on n'&nbsp;conte nén ces la, i gn a <b>$2</b> pådjes ki sont
+probåblumint des vraiys årtikes.<p>
+I gn a-st avou å totå <b>$3</b> riwaitaedjes di pådjes, eyet <b>$4</b>
+candjmints do contnou des pådjes dispoy li 20 di djulete 2003.
+Dj'&nbsp;ô bén k'&nbsp;i gn a ene moyene di <b>$5</b> candjmints par pådje,
+eyet <b>$6</b> riwaitaedjes po on candjmint.",
+"userstatstext" => "I gn a <b>$1</b> uzeus d'&nbsp;eredjîstrés.
+<b>$2</b> di zels sont eto des manaedjeus (riloukîz a $3).
+
+<p><h2>Des ôtes pus spepieusès statistikes</h2><p>
+Des pus spepieusès statistikes åd dilong des moes sont
+<a href='/stats/WA/Sitemap.htm' class='internal'>chal</a>.
+", # NOTE: loyén viè les statistikes
+
+# Maintenance Page
+#
+"maintenance" => "PÃ¥dje di manaedjmint",
+"maintnancepagetext" => "Cisse pådje chal a sacwantès ahessåvès usteyes
+po manaedjî les årtikes. Sacwantes di ces fonccions chal polèt esse
+sitréndåves pol båze di dnêyes, do côp on vs dimandrè di n'&nbsp;nén
+clitchî sol boton «rafrister» di vosse betchteu a tchaeke côp
+ki vos fjhoz on ptit candjmint ;-)",
+"maintenancebacklink" => "Rivni al pådje di manaedjmint",
+"disambiguations" => "PÃ¥djes d'&nbsp;omonimeye",
+"disambiguationspage" => "Wikipedia:Loyéns_viè_les_pådjes_d'_omonimeye",
+"disambiguationstext" => "Les årtikes shuvants ont des loyéns viè en <i>pådje d'&nbsp;omonimeye</i>. I dvrént purade loyî viè l'&nbsp;bon årtike.<br>
+Ene pådje est considerêye come pådje d'&nbsp;omonimeye si elle aparexhe e $1.<br>
+Les loyéns a pårti d'&nbsp;ôtes espåces di lomaedje èn sont <i>nén</i> håynés chal.",
+"doubleredirects" => "Dobes redjiblaedjes",
+"doubleredirectstext" => "<b>Asteme:</b> Cisse djivêye chal pout aveur des fås pôzitifs. Dj'&nbsp;ô bén k'&nbsp;i pout aveur do tecse di pus, avou des loyéns, après li prumî «#REDIRECT».<br>\n
+Tchaeke roye a-st on loyén viè l'&nbsp;prumî eyet l'&nbsp;deujhinme redjiblaedje, avou on mostraedje del prumire roye do tecse do deujhinme redjiblaedje, çou ki å pus sovint dene li «vraiy» årtike såme, ki l'&nbsp;prumî redjiblaedje dvreut evoyî viè lu.",
+"brokenredirects" => "Pierdous redjiblaedjes",
+"brokenredirectstext" => "Les redjiblaedjes shuvants evoyèt so ene pådje ki n'&nbsp;egzistêye nén.",
+"selflinks" => "Pådjes avou des loyéns viè zeles minmes",
+"selflinkstext" => "Les pådjes shuvantes ont on loyén viè zeles minmes, çou ki n'&nbsp;si dvreut nén fé.",
+"mispeelings" => "PÃ¥djes avou des flotches",
+"mispeelingstext" => "Les pådjes shuvantes ont ene ou sacwante
+flotche, di cenes metowes so $1. Li scrijhaedje corek pout esse mostré inte
+åtchetes a costé do mot må scrît.",
+"mispeelingspage" => "Djivêye des flotches les pus corantes",
+"missinglanguagelinks" => "Loyéns di lingaedjes ki mankèt",
+"missinglanguagelinksbutton" => "Trover les loyéns di lingaedjes ki mankèt po",
+"missinglanguagelinkstext" => "Ces årtikes chal èn loynut <i>nén</i> viè leu-z omologues so «$1». Les redjiblaedjes eyet les dzo-pådjes èn sont <i>nén</i> mostrêyes.",
+
+
+# Miscellaneous special pages
+#
+"orphans" => "Pådjes ôrfulinnes",
+"lonelypages" => "Pådjes ôrfulinnes",
+"unusedimages" => "Imådjes nén eployeyes",
+"popularpages" => "Pådjes les pus léjhowes",
+"nviews" => "léjhowe $1 côps",
+"wantedpages" => "PÃ¥djes les pus rcwerowes",
+"nlinks" => "$1 loyéns",
+"allpages" => "Totes les pådjes",
+"randompage" => "Ã…rtike a l'&nbsp;astcheyance", # TODO: trop longou?
+"shortpages" => "Coûtès pådjes",
+"longpages" => "Longowès pådjes",
+"listusers" => "Djivêye des uzeus",
+"specialpages" => "Pådjes sipeciåles",
+"spheading" => "Pådjes sipeciåles po tos ls uzeus",
+"sysopspheading" => "Pådjes sipeciåles po les manaedjeus",
+"developerspheading" => "Pådjes sipeciåles po les diswalpeus",
+"protectpage" => "Protedjî l'&nbsp;pådje",
+"recentchangeslinked" => "Candjmints aloyîs",
+"rclsub" => "(ezès pådjes ki «$1» a-st on loyén dzeu)",
+"debug" => "Disbugaedje",
+"newpages" => "Novelès pådjes",
+"ancientpages" => "Viyådjes",
+"intl" => "Loyéns eterlingaedjes",
+"movethispage" => "Displaecî cisse pådje",
+"unusedimagestext" => "<p>Notez tot l'&nbsp;minme ki d'&nbsp;ôtès waibes,
+come li cenes des ôtes Wikipedias, polèt aveur des loyéns viè ces imådjes la
+gråcès a ene direke hårdêye. Do côp, ces imådjes aparexhèt chal, mågré
+k'&nbsp;ele soeyexhe eployeyes.",
+"booksources" => "Sourdants po les lives",
+"booksourcetext" => "Chal pa dzo c'&nbsp;est ene djivêye di hårdêyes viè
+des waibes ki vindèt des lives, noûs ou di deujhinme mwin, et ki polèt
+aveur pus d'&nbsp;informåcions å dfait des lives ki vos cweroz après.
+{{SITENAME}} n'&nbsp;a rén a vey avou ces eterprijhes la, eyet cisse djivêye
+chal èn doet nén esse veyowe come èn aspoya ou nerén ene reclame.",
+"alphaindexline" => "di $1 a $2",
+
+# Email this user
+#
+"mailnologin" => "Nole adresse d'&nbsp;evoyeu",
+"mailnologintext" => "Po-z evoyî èn emile a èn ôte uzeu i vs fåt esse <a href=\"" .
+ wfLocalUrl( "Sipeciås:Userlogin" ) . "\">elodjî</a>
+eyet aveur ene adresse emile d'&nbsp;evoyeu ki soeye valide
+dins vos <a href=\"" .
+ wfLocalUrl( "Sipeciås:Preferences" ) . "\">preferinces</a>.",
+"emailuser" => "Emiler a l'&nbsp;uzeu",
+"emailpage" => "Emilaedje a èn uzeu",
+"emailpagetext" => "Si cist uzeu chal a dné ene adresse emile valide dins
+ses preferins, vos lyi ploz evoyî èn emile a pårti di cisse pådje chal.
+L'&nbsp;adresse emile k'&nbsp;i gn a dins vos preferinces serè-st eployeye
+come adresse di l'&nbsp;evoyeu (adresse «From:» di l'&nbsp;emile),
+po ki l'&nbsp;riçuveu poye risponde.",
+"noemailtitle" => "Pont d'&nbsp;adresse emile",
+"noemailtext" => "Cist uzeu chal n'&nbsp;a nén dné d'&nbsp;adresse emile
+valide, ou n'&nbsp;vout nén rçure des emiles des ôtes uzeus.
+Do côp, c'&nbsp;est nén possibe di lyi evoyî èn emile.",
+"emailfrom" => "Di",
+"emailto" => "Po",
+"emailsubject" => "Sudjet",
+"emailmessage" => "Messaedje",
+"emailsend" => "Evoyî",
+"emailsent" => "Emile evoyî",
+"emailsenttext" => "Vost emilaedje a stî evoyî comifåt.",
+
+# Watchlist
+#
+"watchlist" => "Mes pådjes shuvowes",
+"watchlistsub" => "(po l'&nbsp;uzeu «$1»)",
+"nowatchlist" => "Vosse djivêye des pådjes a shuve est vude.",
+"watchnologin" => "Vos n'&nbsp;estoz nén elodjî",
+"watchnologintext" => "I vs fåt esse <a href=\"" .
+ wfLocalUrl( "Sipeciås:Userlogin" ) . "\">elodjî</a>
+po pleur candjî vosse djivêye des pådjes a shuve.",
+"addedwatch" => "Radjouté ås shuvous",
+"addedwatchtext" => "Li pådje «$1» a stî radjoutêye a vosse <a href=\"" .
+ wfLocalUrl( "Sipeciås:Watchlist" ) . "\">djivêye des pådjes a shuve</a>.
+Tos les candjmints k'&nbsp;i gn årè di cisse pådje chal, eyet di si pådje
+di copene, seront håynés chal, eyet li pådje serè metowe e <b>cråssès letes</b>
+el <a href=\"" .
+ wfLocalUrl( "Sipeciås:Recentchanges" ) . "\">djivêye des dierins candjmints</a> po k'&nbsp;ça soeye pus åjhey por vos del rimårker.</p>
+<p>
+Si vos vloz bodjî l'&nbsp;pådje foû di vosse djivêye des shuvous,
+clitchîz so «Èn pus shuve li pådje» dins l'&nbsp;bår di menu sol costé.",
+"removedwatchtext" => "Li pådje «$1» a stî bodjeye foû di vosse djivêye des pådjes a shuve.",
+"watchthispage" => "Shuve cisse pådje",
+"unwatchthispage" => "Èn pus shuve li pådje",
+"notanarticle" => "Nén èn årtike",
+"watchnochange" => "Nole des pådjes di vosse djivêye di pådjes a shuve n'&nbsp;a stî candjeye dins l'&nbsp;termene di tins dmandêye.",
+"watchdetails" => "($1 pådjes shuvowes, sins conter les pådjes di copene;
+$2 total pages edited since cutoff;
+$3...
+<a href='$4'>mostrer eyet candjî l'&bsp;djivêye etire</a>.)", # co a fé
+"watchmethod-recent" => "checking recent edits for watched pages", # co a fé
+"watchmethod-list" => "checking watched pages for recent edits", # co a fé
+"removechecked" => "Bodjî les cayets tchoezis foû del djivêye des pådjes a shuve",
+"watchlistcontains" => "I gn a $1 pådjes e vossse djivêye des pådjes a shuve.",
+"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.", # co a fé
+"removingchecked" => "Removing requested items from watchlist...", # co a fé
+"couldntremove" => "Couldn't remove item '$1'...", # co a fé
+"iteminvalidname" => "Åk n'&nbsp;a nén stî avou «$1», no nén valide...",
+"wlnote" => "Chal pa dzo les $1 dierins candjmints des <b>$2</b> dierinnès eures.",
+"wlshowlast" => "Mostrer les dierin(nè)s $1 eures, $2 djoûs $3",
+
+
+# Delete/protect/revert
+#
+"deletepage" => "Disfacer l'&nbsp;pådje",
+"confirm" => "Acertiner",
+"excontent" => "li contnou esteut:",
+"exbeforeblank" => "li contnou dvant l'&nbsp;disfaçaedje esteut:",
+"exblank" => "li pådje esteut vude",
+"confirmdelete" => "Acertinaedje do disfaçaedje",
+"deletesub" => "(Djisfaçaedje di «$1»)",
+"historywarning" => "Adviertixhmint: Li pådje ki vos alez disfacer a-st ene istwere: ",
+"confirmdeletetext" => "Vos alez disfacer po tofer del båze di dnêyes ene
+pådje ou ene imådje, avou tote si istwere.
+Acertinez s'&nbsp;i vs plait ki c'&nbsp;est bén çoula ki vos vloz fé,
+ki vos comprindoz les consecwinces, et ki vos fjhoz çoula
+tot [[Wikipedia:Rîles a shure|shuvant les rîles]].",
+"confirmcheck" => "Oyi, dji vou vormint disfacer ci fitchî chal.",
+"actioncomplete" => "Fwait",
+"deletedtext" => "Li pådje «$1» a stî disfacêye. Loukîz li $2 po ene
+djivêye des dierins disfaçaedjes.",
+"deletedarticle" => "pådje «$1» disfacêye",
+"dellogpage" => "Djournå_des_disfaçaedjes",
+"dellogpagetext" => "Chal pa dzo c'&nbsp;est l'&nbsp;djivêye des dierins
+disfaçaedjes. Totes les dates et eures sont-st e tins univiersel (UTC).
+<ul>
+</ul>
+",
+"deletionlog" => "djournå des disfaçaedjes",
+"reverted" => "Rimetou ene modêye di dvant",
+"deletecomment" => "Råjhon do disfaçaedje",
+"imagereverted" => "Li rmetaedje del modêye di dvant a stî comifåt.",
+"rollback" => "Roll back edits", # co a fé
+"rollbacklink" => "rollback", # co a fé
+"rollbackfailed" => "Rollback failed", # co a fé
+"cantrollback" => "Cannot revert edit; last contributor is only author of this article.", # co a fé
+"alreadyrolled" => "Cannot rollback last edit of [[$1]]
+by [[Uzeu:$2|$2]] ([[Uzeu copene:$2|Copene]]); someone else has edited or rolled back the article already.
+
+Li dierin candjmint a stî fwait pa [[Uzeu:$3|$3]] ([[Uzeu copene:$3|Copene]]). ",
+# only shown if there is an edit comment
+"editcomment" => "The edit comment was: \"<i>$1</i>\".", # co a fé
+"revertpage" => "Rivnou å dierin candjmint da $1",
+"protectlogpage" => "Protection_log", # co a fé
+"protectlogtext" => "Chal pa dzo c'&nbsp;est ene djivêye des protedjaedjes
+et disprotedjaedjes des pådjes.
+Loukîz [[{{ns:4}}:Pådje protedjeye]] po pus di racsegnes.",
+"protectedarticle" => "[[$1]] protedjî",
+"unprotectedarticle" => "[[$1]] disprotedjî",
+
+# Undelete
+"undelete" => "Rapexhî des disfacêyès pådjes",
+"undeletepage" => "Vey et rapexhî des disfacêyès pådjes",
+"undeletepagetext" => "Les pådjes shuvantes ont stî disfacêyes mins ele sont
+co ezès årtchives, do côp ele polèt esse rapexheyes.
+Les årtchives sont netieyes di tins en tins.",
+"undeletearticle" => "Rapexhî on disfacé årtike",
+"undeleterevisions" => "$1 modêyes ezès årtchives",
+"undeletehistory" => "Si vos rapexhîz l'&nbsp;pådje, l'&nbsp;istwere del pådje
+serè rapexheye eto, avou totes les modêyes co ezès årtchives.
+Si ene novele pådje avou l'&nbsp;minme a stî askepieye dispoy li disfaçaedje
+di cisse chal, les rapexheyès modêyes seront metowes e l'&nbsp;istwere mins
+c'&nbsp;est l'&nbsp;modêye do moumint, et nén l'&nbsp;cisse rapexheye, ki
+srè håynêye.",
+"undeleterevision" => "Modêye disfacêye li $1",
+"undeletebtn" => "Rapexhî!",
+"undeletedarticle" => "a rapexhî l'&nbsp;pådje «$1»",
+"undeletedtext" => "L'&nbsp;årtike [[$1]] a stî rapexhî comifåt.
+Loukîz [[Wikipedia:Djournå_des_disfaçaedjes]] po ene djivêye des dierins
+disfaçaedjes eyet rapexhaedjes.",
+
+# Contributions
+#
+"contributions" => "Ovraedjes di l'&nbsp;uzeu", /* TODO: problinme di longeu */
+"mycontris" => "Mes contribucions",
+"contribsub" => "Po l'&nbsp;uzeu $1",
+"nocontribs" => "Nou candjmint di trové ki corespondreut a ç'&nbsp;critere la.",
+"ucnote" => "Chal pa dzo les <b>$1</b> dierins candjmints di l'&nbsp;uzeu so les <b>$2</b> dierins djoûs.",
+"uclinks" => "Vey les $1 dierins candjmints; vey les $2 dierins djoûs.",
+"uctop" => " (top)" ,
+
+# What links here
+#
+"whatlinkshere" => "PÃ¥djes ki loynut chal",
+"notargettitle" => "No target", # co a fé
+"notargettext" => "You have not specified a target page or user
+to perform this function on.", # co a fé
+"linklistsub" => "(Djivêye des loyéns)",
+"linkshere" => "Les pådjes ki shuvèt ont des loyéns viè cisse ci:",
+"nolinkshere" => "Nole pådje avou des loyéns viè cisse ci.",
+"isredirect" => "pådje di redjiblaedje",
+
+# Block/unblock IP
+#
+"blockip" => "Bloker èn uzeu",
+"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 [[Wikipedia:Rîles a shure|{{SITENAME}} policy]].
+Fill in a specific reason below (for example, citing particular
+pages that were vandalized).", # co a fé
+"ipaddress" => "Adresse IP/no d'&nbsp;uzeu",
+"ipbreason" => "RÃ¥jhon",
+"ipbsubmit" => "Bloker cist uzeu",
+"badipaddress" => "Nol uzeu avou ç'&nbsp;no la.",
+"noblockreason" => "Vos dvoz dner ene råjhon pol blocaedje.",
+"blockipsuccesssub" => "Li blocaedje a stî comifåt",
+"blockipsuccesstext" => "«$1» a stî bloké.
+<br>Loukîz li [[Sipeciås:Ipblocklist|Djivêye des blocaedjes]] po candjî on blocaedje.",
+"unblockip" => "Disbloker èn uzeu",
+"unblockiptext" => "Use the form below to restore write access
+to a previously blocked IP address.", # co a fé
+"ipusubmit" => "Unblock this address", # co a fé
+"ipusuccess" => "«%s» a stî disbloké",
+"ipblocklist" => "Djivêye d'&nbsp;adresses IP et di nos d'&nbsp;uzeus ki sont blokés",
+"blocklistline" => "$1, $2 a bloké $3",
+"blocklink" => "bloker",
+"unblocklink" => "disbloker",
+"contribslink" => "contribs", # co a fé
+"autoblocker" => "Bloké otomaticmint paski vos eployîz li minme adresse IP ki «%s». Råjhon do blocaedje «%s».",
+"blocklogpage" => "Block_log", # co a fé
+"blocklogentry" => '«$1» a stî bloké',
+"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.", # co a fé
+"unblocklogentry" => '«$1» a stî disbloké',
+
+# Developer tools
+#
+"lockdb" => "Lock database", # co a fé
+"unlockdb" => "Unlock database", # co a fé
+"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.", # co a fé
+"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.", # co a fé
+"lockconfirm" => "Yes, I really want to lock the database.", # co a fé
+"unlockconfirm" => "Yes, I really want to unlock the database.", # co a fé
+"lockbtn" => "Lock database", # co a fé
+"unlockbtn" => "Unlock database", # co a fé
+"locknoconfirm" => "You did not check the confirmation box.", # co a fé
+"lockdbsuccesssub" => "Database lock succeeded", # co a fé
+"unlockdbsuccesssub" => "Database lock removed", # co a fé
+"lockdbsuccesstext" => "The database has been locked.
+<br>Remember to remove the lock after your maintenance is complete.", # co a fé
+"unlockdbsuccesstext" => "The database has been unlocked.", # co a fé
+
+# SQL query
+#
+"asksql" => "SQL query", # co a fé
+"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.", # co a fé
+"sqlislogged" => "Please note that all queries are logged.", # co a fé
+"sqlquery" => "Enter query", # co a fé
+"querybtn" => "Submit query", # co a fé
+"selectonly" => "Only read-only queries are allowed.", # co a fé
+"querysuccessful" => "Query successful", # co a fé
+
+# Move page
+#
+"movepage" => "Displaecî l'&nbsp;pådje",
+"movepagetext" => "Chal vos ploz candjî l'&nbsp;no d'&nbsp;ene pådje,
+dj'&nbsp;ô bén displaecî l'&nbsp;pådje, eyet si istwere, viè l'&nbsp;novea no.
+Li vî tite divénrè-st ene pådje di redjiblaedje viè l'&nbsp;novele/
+Les loyéns viè l'&nbsp;viye pådje èn seront nén candjîs; acertinez vs di
+[[Sipeciås:Maintenance|verifyî]] s'&nbsp;i n'&nbsp;a nén des dobes
+ou crons redjiblaedjes.
+Vos estoz responsåve di fé çou k'&nbsp;i fåt po k'&nbsp;les loyéns
+continouwexhe di moenner la k'&nbsp;i fåt.
+
+Notez k'anbsp;el pådje èn serè '''nén''' displaeceye s'anbsp;i gn a ddja ene
+pådje avou l'&nbsp;novea tite, a moens k'&nbsp;ele soeye vude, ou ene pådje
+di redjiblaedje, et k'&nbsp;ele n'&nbsp;Ã¥ye nole istwere.
+Çoula vout dire ki vos ploz ri-displaecî ene pådje viè l'&nbsp;no k'&nbsp;ele
+aveut djusse divant, et insi disfé vosse prumî displaeçaedje, å cas ou vos vs
+rindrîz conte ki vos avoz fwait ene flotche; ey eto ki vos n'&nbsp;poloz nén
+spotchî par accidint ene pådje k'&nbsp;egzistêye dedja.
+
+<b>ASTEME!</b>
+On displaeçaedje pout esse on consecant et nén atindou candjmint po ene
+pådje foirt léjhowe; s'&nbsp;i vs plait tuzez bén åzès consecwinces divant
+d'&nbsp;continouwer.",
+"movepagetalktext" => "Li pådje di copene associeye, s'&nbsp;end a ene, serè
+displaeceye otomaticmint avou, '''a moens ki:'''
+*Vos displaecîz l'&nbsp;pådje d'&nbsp;èn espåce di lomaedje a èn ôte,
+*Ene pådje di copene nén vude egzistêye dedja dizo l'&nbsp;novea no,
+*Vos disclitchrîz l'&nbsp;boesse a clitchî chal pa dzo.
+
+Dins ces cas la, vos dvroz displaecî l'&nbsp;pådje di copene al mwin, ou rcopyî
+si contnou, si vos l'&nbsp;vloz mete adlé l'&nbsp;novea no
+d'&nbsp;l'&nbsp;Ã¥rtike.",
+"movearticle" => "Displaecî di",
+"movenologin" => "Nén elodjî",
+"movenologintext" => "I vs fåt esse èn uzeu eredjîstré eyet esse <a href=\"" .
+ wfLocalUrl( "Sipeciås:Userlogin" ) . "\">elodjî</a> por vos
+pleur displaecî ene pådje.",
+"newtitle" => "Viè l'&nbsp;novea tite",
+"movepagebtn" => "Displaecî",
+"pagemovedsub" => "Li displaeçaedje a stî comifåt",
+"pagemovedtext" => "Li pådje «[[$1]]» a stî displaeceye viè «[[$2]]».",
+"articleexists" => "Ene pådje egzistêye dedja avou ç'&nbsp;no la, oudonbén
+li no k'&nbsp;vos avoz tchoezi n'&nbsp;est nén valide.
+Tchoezixhoz è èn ôte s'&nbsp;i vs plait.",
+"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.", # co a fé
+"movedto" => "displaecî viè",
+"movetalk" => "Displaecî li pådje di copene avou, si ça astchait.",
+"talkpagemoved" => "Li pådje di copene corespondante a stî displaeceye avou.",
+"talkpagenotmoved" => "Li pådje di copene corespondante n'&nbsp;a <strong>nén</strong> stî displaeceye.",
+
+"export" => "Export pages", # co a fé
+"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.", # co a fé
+"exportcuronly" => "Inclure fok li modêye do moumint, nén tote l'&nbsp;istwere",
+
+# Namespace 8 related
+
+"allmessages" => "Tos les messaedjes",
+"allmessagestext" => "Çouchal est ene djivêye di tos les messaedjes k'&nbsp;i gn a dins l'&nbsp;espåce di lomaedje ''MediaWiki:''",
+);
+
+#--------------------------------------------------------------------------
+# Internationalisation code
+#--------------------------------------------------------------------------
+
+class LanguageWa extends LanguageUtf8 {
+
+ function getBookstoreList () {
+ global $wgBookstoreListWa ;
+ return $wgBookstoreListWa ;
+ }
+
+ function getNamespaces() {
+ global $wgNamespaceNamesWa;
+ return $wgNamespaceNamesWa;
+ }
+
+ function getNsText( $index ) {
+ global $wgNamespaceNamesWa;
+ return $wgNamespaceNamesWa[$index];
+ }
+
+ function getNsIndex( $text ) {
+ global $wgNamespaceNamesWa;
+
+ foreach ( $wgNamespaceNamesWa as $i => $n ) {
+ if ( 0 == strcasecmp( $n, $text ) ) { return $i; }
+ }
+ return false;
+ }
+
+ function getQuickbarSettings() {
+ global $wgQuickbarSettingsWa;
+ return $wgQuickbarSettingsWa;
+ }
+
+ function getSkinNames() {
+ global $wgSkinNamesWa;
+ return $wgSkinNamesWa;
+ }
+
+ function getMathNames() {
+ global $wgMathNamesWa;
+ return $wgMathNamesWa;
+ }
+
+ function getDateFormats() {
+ global $wgDateFormatsWa;
+ return $wgDateFormatsWa;
+ }
+
+ function getUserToggles() {
+ global $wgUserTogglesWa;
+ return $wgUserTogglesWa;
+ }
+
+ function getMonthName( $key )
+ {
+ global $wgMonthNamesWa;
+ return $wgMonthNamesWa[$key-1];
+ }
+
+ /* by default we just return base form */
+ function getMonthNameGen( $key )
+ {
+ global $wgMonthNamesWa;
+ return $wgMonthNamesWa[$key-1];
+ }
+
+ function getMonthAbbreviation( $key )
+ {
+ global $wgMonthAbbreviationsWa;
+ return $wgMonthAbbreviationsWa[$key-1];
+ }
+
+ function getWeekdayName( $key )
+ {
+ global $wgWeekdayNamesWa;
+ return $wgWeekdayNamesWa[$key-1];
+ }
+
+ # Inherit userAdjust()
+
+ ###
+ ### Dates in Walloon are "1î d' <monthname>" for 1st of the month,
+ ### "<day> di <monthname>" for months starting by a consoun, and
+ ### "<day> d' <monthname>" for months starting with a vowel
+ ###
+ function date( $ts, $adj = false )
+ {
+ global $wgAmericanDates, $wgUser, $wgUseDynamicDates;
+
+ if ( $adj ) { $ts = $this->userAdjust( $ts ); }
+
+ $m = substr( $ts, 4, 2 );
+ $n = substr( $ts, 6, 2 );
+
+ if ($n == 1) {
+ $d = "1î d'&nbsp;" . $this->getMonthName( $m ) .
+ " " . substr( $ts, 0, 4 );
+ } else if ($n == 2 || $n == 3 || $n == 20 || $n == 22 || $n == 23) {
+ $d = (0 + $n) . " d'&nbsp;" . $this->getMonthName( $m ) .
+ " " . substr( $ts, 0, 4 );
+ } else if ($m == 4 || $m == 8 || $m == 10) {
+ $d = (0 + $n) . " d'&nbsp;" . $this->getMonthName( $m ) .
+ " " . substr( $ts, 0, 4 );
+ } else {
+ $d = (0 + $n) . " di " . $this->getMonthName( $m ) .
+ " " . 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->time( $ts, $adj ) . " " . $this->date( $ts, $adj );
+ return $this->date( $ts, $adj ) . " a " . $this->time( $ts, $adj );
+ }
+
+ # Inherit rfc1123()
+
+ function getValidSpecialPages()
+ {
+ global $wgValidSpecialPagesWa;
+ return $wgValidSpecialPagesWa;
+ }
+
+ function getSysopSpecialPages()
+ {
+ global $wgSysopSpecialPagesWa;
+ return $wgSysopSpecialPagesWa;
+ }
+
+ function getDeveloperSpecialPages()
+ {
+ global $wgDeveloperSpecialPagesWa;
+ return $wgDeveloperSpecialPagesWa;
+ }
+
+ function getMessage( $key )
+ {
+ global $wgAllMessagesWa;
+
+ if(array_key_exists($key, $wgAllMessagesWa))
+ return $wgAllMessagesWa[$key];
+ else
+ return Language::getMessage($key);
+ }
+
+ function getAllMessages()
+ {
+ global $wgAllMessagesWa;
+ return $wgAllMessagesWa;
+ }
+
+}
+
+?>
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 3f714cf81504..a4e9d9e317f2 100644
--- a/languages/LanguageZh.php
+++ b/languages/LanguageZh.php
@@ -9,22 +9,26 @@ require_once( "LanguageUtf8.php" );
# encapsulates some of the magic-ness.
#
/* private */ $wgNamespaceNamesZh = array(
- -2 => "Media",
- -1 => "Special",
- 0 => "",
- 1 => "Talk",
- 2 => "User",
- 3 => "User_talk",
- 4 => "Wikipedia",
- 5 => "Wikipedia_talk",
- 6 => "Image",
- 7 => "Image_talk",
- 8 => "MediaWiki",
- 9 => "MediaWiki_talk",
- 10 => "Template",
- 11 => "Template_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"
+
+) + $wgNamespaceNamesEn;
/* private */ $wgQuickbarSettingsZh = array(
"æ— ", /* "None" */
@@ -41,7 +45,8 @@ require_once( "LanguageUtf8.php" );
'montparnasse' => "Montparnasse",
'davinci' => "DaVinci",
'mono' => "Mono",
- 'monobook' => "MonoBook"
+ 'monobook' => "MonoBook",
+ "myskin" => "MySkin"
);
/* private */ $wgMathNamesZh = array(
@@ -636,6 +641,7 @@ wfLocalUrlE( "Wikipedia:上载纪录" ) . "\">上载纪录</a>内。
"imghistory" => "图åƒåŽ†å²",
"revertimg" => "å¤",
"deleteimg" => "删",
+"deleteimgcompletely" => "删",
"imghistlegend" => "egend: (现) = ç›®å‰çš„图åƒï¼Œ(删) = 删除旧版本,
(å¤) = æ¢å¤åˆ°æ—§ç‰ˆæœ¬ã€‚
<br><i>点击日期查看当天上载的图åƒ</i>.",
diff --git a/languages/Names.php b/languages/Names.php
new file mode 100644
index 000000000000..00174130e773
--- /dev/null
+++ b/languages/Names.php
@@ -0,0 +1,206 @@
+<?php
+/* private */ $wgLanguageNames = array(
+ 'aa' => 'Afar', # Afar
+ 'ab' => 'Abkhazian', # Abkhazian - FIXME
+ 'af' => 'Afrikaans', # Afrikaans
+ 'ak' => 'Akana', # Akan
+ 'an' => 'Aragon&eacute;s', # Aragonese
+ 'als' => 'Els&auml;ssisch', # Alsatian
+ 'am' => '&#4768;&#4635;&#4653;&#4763;', # Amharic
+ 'ar' => '&#1575;&#1604;&#1593;&#1585;&#1576;&#1610;&#1577;', # Arabic
+ 'arc' => '&#1813;&#1829;&#1810;&#1834;&#1848;&#1821;&#1819;', # Aramaic
+ 'as' => '&#2437;&#2488;&#2478;&#2496;&#2527;&#2494;', # Assamese
+ 'ast' => 'Asturianu', # Asturian, See BUG [1004836]
+ 'av' => '&#1040;&#1074;&#1072;&#1088;', # Avar
+ 'ay' => 'Aymar', # Aymara
+ 'az' => 'Az&#601;rbaycan', # Azerbaijani
+ 'ba' => '&#1041;&#1072;&#1096;&#1185;&#1086;&#1088;&#1090;', # Bashkir
+ 'be' => '&#1041;&#1077;&#1083;&#1072;&#1088;&#1091;&#1089;&#1082;&#1072;&#1103;', # Belarusian ''or'' Byelarussian
+ 'bg' => '&#1041;&#1098;&#1083;&#1075;&#1072;&#1088;&#1089;&#1082;&#1080;', # Bulgarian
+ 'bh' => '&#2349;&#2379;&#2332;&#2346;&#2369;&#2352;&#2368;', # Bihara
+ 'bi' => 'Bislama', # Bislama
+ 'bn' => '&#2476;&#2494;&#2434;&#2482;&#2494; - (Bangla)', # Bengali
+ 'bm' => 'Bambara',
+ 'bo' => 'Bod skad', # Tibetan
+ 'br' => 'Brezhoneg', # Breton
+ 'bs' => 'Bosanski', # Bosnian
+ 'ca' => 'Catal&agrave;', # Catalan
+ 'ce' => '&#1053;&#1086;&#1093;&#1095;&#1080;&#1081;&#1085;', # Chechen
+ 'ch' => 'Chamoru', # Chamorro
+ 'cho' => 'Choctaw',
+ 'chr' => '&#5091;&#5043;&#5033;', # Cherokee
+ 'chy' => 'Tsets&ecirc;hest&acirc;hese', # Cheyenne
+ 'co' => 'Corsu', # Corsican
+ 'cr' => 'Nehiyaw', # Cree
+ 'cs' => '&#268;esky', # Czech
+ 'csb' => 'Kasz&euml;bscziej', # Cassubian - FIXME
+ 'cv' => '&#1063;&#1233;&#1074;&#1072;&#1096; - (&#264;&#259;va&#349;)', # 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' => '&#917;&#955;&#955;&#951;&#957;&#953;&#954;&#940;', # Greek
+ 'en' => 'English', # English
+ 'eo' => 'Esperanto', # Esperanto
+ 'es' => 'Espa&ntilde;ol', # Spanish
+ 'et' => 'Eesti', # Estonian
+ 'eu' => 'Euskara', # Basque
+ 'fa' => '&#1601;&#1575;&#1585;&#1587;&#1740;', # Persian
+ 'ff' => 'Fulfulde', # Fulfulde
+ 'fi' => 'Suomi', # Finnish
+ 'fj' => 'Na Vosa Vakaviti', # Fijian
+ 'fo' => 'F&oslash;royskt', # Faroese
+ 'fr' => 'Fran&ccedil;ais', # French
+ 'fy' => 'Frysk', # Frisian
+ 'ga' => 'Gaeilge', # Irish
+ 'gd' => 'G&agrave;idhlig', # Scots Gaelic
+ 'gl' => 'Galego', # Gallegan
+ 'gn' => 'Ava&ntilde;e\'&#7869;', # Guarani
+ 'gu' => '&#2711;&#2753;&#2716;&#2736;&#2750;&#2724;&#2752;', # Gujarati
+ 'gv' => 'Gaelg', # Manx
+ 'ha' => '&#1607;&#1614;&#1608;&#1615;&#1587;&#1614;', # Hausa
+ 'haw' => 'Hawai`i', # Hawaiian
+ 'he' => '&#1506;&#1489;&#1512;&#1497;&#1514;', # Hebrew
+ 'hi' => '&#2361;&#2367;&#2344;&#2381;&#2342;&#2368;', # Hindi
+ 'ho' => 'Hiri Motu',
+ 'hr' => 'Hrvatski', # Croatian
+ 'ht' => 'Haitian', # Haitian (FIXME!)
+ 'hu' => 'Magyar', # Hungarian
+ 'hy' => '&#1344;&#1377;&#1397;&#1381;&#1408;&#1381;&#1398;', # 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&ntilde;upiak', # Inupiak
+ 'io' => 'Ido', # Ido
+ 'is' => '&Iacute;slenska', # Icelandic, according to Jeedo@irc
+ 'it' => 'Italiano', # Italian
+ 'iu' => '&#5123;&#5316;&#5251;&#5198;&#5200;&#5222;', # Inuktitut
+ 'ja' => '&#26085;&#26412;&#35486;', # Japanese
+ 'jv' => 'Bahasa Jawa', # Javanese
+ 'ka' => '&#4325;&#4304;&#4320;&#4311;&#4323;&#4314;&#4312;', # Georgian
+ 'kg' => 'Kongo', # Kongo (FIXME!)
+ 'ki' => 'Kikuyu', # Kikuyu (FIXME!)
+ 'kj' => 'Kuanyama', # Kuanyama (FIXME!)
+ 'kk' => '&#1179;&#1072;&#1079;&#1072;&#1179;&#1096;&#1072;', # Kazakh
+ 'kl' => 'Kalaallisut', # Greenlandic
+ 'km' => '&#6039;&#6070;&#6047;&#6070;&#6017;&#6098;&#6040;&#6082;&#6042;', # Cambodian
+ 'kn' => '&#3221;&#3240;&#3277;&#3240;&#3233;', # Kannada
+ 'ko' => '&#54620;&#44397;&#50612;', # Korean
+ 'kr' => 'Kanuri',
+ 'ks' => '&#2325;&#2358;&#2381;&#2350;&#2368;&#2352;&#2368; - (&#1603;&#1588;&#1605;&#1610;&#1585;&#1610;)', # Kashmiri
+ 'ku' => 'Kurd&icirc;', # Kurdish
+ 'kv' => 'Komi',
+ 'kw' => 'Kernewek', # Cornish
+ 'ky' => 'K&#305;rg&#305;zca', # Kirghiz
+ 'la' => 'Latina', # Latin
+ 'lb' => 'L&euml;tzebuergesch', # Luxemburguish
+ 'lg' => 'Luganda', # Ganda
+ 'li' => 'Limburgs', # Limburgian
+ 'ln' => 'Lingala', # Lingala
+ 'lo' => 'Pha xa lao', # Laotian
+ 'lt' => 'Lietuvi&#371;', # Lithuanian
+ 'lv' => 'Latvie&scaron;u', # Latvian
+ 'mg' => 'Malagasy', # Malagasy - FIXME
+ 'mh' => 'Ebon', # Marshallese
+ 'mi' => 'M&#257;ori', # Maori
+ 'mk' => '&#1052;&#1072;&#1082;&#1077;&#1076;&#1086;&#1085;&#1089;&#1082;&#1080;', # Macedonian
+ 'ml' => '&#3374;&#3378;&#3375;&#3390;&#3379;&#3330;', # Malayalam
+ 'mn' => '&#1052;&#1086;&#1085;&#1075;&#1086;&#1083;', # Mongoloian
+ 'mo' => 'Moldoveana', # Moldovan
+ 'mr' => '&#2350;&#2352;&#2366;&#2336;&#2368;', # Marathi
+ 'ms' => 'Bahasa Melayu', # Malay
+ 'mt' => 'bil-Malti', # Maltese
+ 'mus' => 'Muscogee',
+ 'my' => 'Myanmasa', # Burmese
+ 'na' => 'Nauru', # Nauruan
+ 'nb' => 'Bokm&aring;l', # Norwegian (Bokmal)
+ 'nah' => 'Nahuatl',
+ 'nds' => 'Plattd&uuml;&uuml;tsch', # Low German ''or'' Low Saxon
+ 'ne' => '&#2344;&#2375;&#2346;&#2366;&#2354;&#2368;', # Nepali
+ 'ng' => 'Ndonga',
+ 'nl' => 'Nederlands', # Dutch
+ 'nb' => 'Norsk', # Norwegian [currently using old '''no''' code]
+ 'ne' => '&#2344;&#2375;&#2346;&#2366;&#2354;&#2368;', # Nepali
+ 'nn' => 'Nynorsk' , # (Norwegian) Nynorsk
+ 'no' => 'Norsk', # Norwegian
+ 'nv' => 'Din&eacute; bizaad', # Navajo
+ 'ny' => 'Chi-Chewa', # Chichewa
+ 'oc' => 'Occitan', # Occitan
+ 'om' => 'Oromoo', # Oromo
+ 'or' => 'Oriya', # Oriya - FIXME
+ 'pa' => '&#2346;&#2306;&#2332;&#2366;&#2348;&#2368; / &#2602;&#2588;&#2622;&#2604;&#2624; / &#1662;&#1606;&#1580;&#1575;&#1576;&#1610;', # Punjabi
+ 'pi' => '&#2346;&#2366;&#2367;&#2356;', # Pali
+ 'pl' => 'Polski', # Polish
+ 'ps' => '&#1662;&#1690;&#1578;&#1608;', # Pashto
+ 'pt' => 'Portugu&ecirc;s', # Portuguese
+ 'qu' => 'Runa Simi', # Quechua
+ 'rm' => 'Rumantsch', # Raeto-Romance
+ 'rn' => 'Kirundi', # Kirundi
+ 'ro' => 'Rom&acirc;n&#259;', # Romanian
+ 'roa-rup' => 'Arm&#226;neashti', # Aromanian
+ 'ru' => '&#1056;&#1091;&#1089;&#1089;&#1082;&#1080;&#1081;', # Russian
+ 'rw' => 'Kinyarwanda',
+ 'sa' => '&#2360;&#2306;&#2360;&#2381;&#2325;&#2371;&#2340;', # Sanskrit
+ 'sc' => 'Sardu', # Sardinian
+ 'sd' => '&#2360;&#2367;&#2344;&#2343;&#2367;', # Sindhi
+ 'se' => 'S&aacute;megiella', # (Northern) Sami
+ 'sg' => 'Sangro',
+# 'sh' => '&#1057;&#1088;&#1087;&#1089;&#1082;&#1086;&#1093;&#1088;&#1074;&#1072;&#1090;&#1089;&#1082;&#1080; (Srbskohrvatski)', ## Serbocroatian -- Obsolete
+ 'si' => 'Simhala', # Sinhalese
+ 'simple' => 'Simple English',
+ 'sk' => 'Sloven&#269;ina', # Slovak
+ 'sl' => 'Sloven&scaron;&#269;ina', # Slovenian
+ 'sm' => 'Gagana Samoa', # Samoan
+ 'sn' => 'chiShona', # Shona
+ 'so' => 'Soomaaliga', # Somali
+ 'sq' => 'Shqip', # Albanian
+ 'sr' => '&#1057;&#1088;&#1087;&#1089;&#1082;&#1080; / Srpski', # Serbian
+ 'ss' => 'SiSwati', # Swati
+ 'st' => 'seSotho', # (Southern) Sotho
+ 'su' => 'Bahasa Sunda', # Sundanese
+ 'sv' => 'Svenska', # Swedish
+ 'sw' => 'Kiswahili', # Swahili
+ 'ta' => '&#2980;&#2990;&#3007;&#2996;&#3021;', # Tamil
+ 'te' => '&#3108;&#3142;&#3122;&#3137;&#3095;&#3137;', # Telugu
+ 'tg' => '&#1058;&#1086;&#1207;&#1080;&#1082;&#1251;', # Tajik
+ 'th' => '&#3652;&#3607;&#3618;', # Thai
+ 'ti' => 'Tigrinya', # Tigrinya - FIXME
+ 'tk' => '&#1578;&#1585;&#1603;&#1605;&#1606; / &#1058;&#1091;&#1088;&#1082;&#1084;&#1077;&#1085;', # 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&uuml;rk&ccedil;e', # Turkish
+ 'ts' => 'Xitsonga', # Tsonga
+ 'tt' => 'Tatar', # Tatar
+ 'tw' => 'Twi', # Twi -- FIXME
+ 'ty' => 'Reo M&#257;`ohi', # Tahitian
+ 'ug' => 'Oyghurque', # Uyghur
+ 'uk' => '&#1059;&#1082;&#1088;&#1072;&#1111;&#1085;&#1089;&#1100;&#1082;&#1072;', # Ukrainian
+ 'ur' => '&#1575;&#1585;&#1583;&#1608;', # Urdu
+ 'uz' => '&#1038;&#1079;&#1073;&#1077;&#1082;', # Uzbek
+ 've' => 'Venda', # Venda
+ 'vi' => 'Ti&#7871;ng Vi&#7879;t', # Vietnamese
+ 'vo' => 'Volap&uuml;k', # Volapük
+ 'wa' => 'Walon', # Walloon
+ 'wo' => 'Wollof', # Wolof
+ 'xh' => 'isiXhosa', # Xhosan
+ 'yi' => '&#1497;&#1497;&#1460;&#1491;&#1497;&#1513;', # Yiddish
+ 'yo' => 'Yor&ugrave;b&aacute;', # Yoruba
+ 'za' => '(Cuengh)', # Zhuang
+ 'zh' => '&#20013;&#25991;', # (Zh&#333;ng Wén) - Chinese
+ 'zh-cfr' => '&#38313;&#21335;&#35486;', # Min-nan
+ 'zh-cn' => '&#20013;&#25991;(&#31616;&#20307;)', # Simplified
+ 'zh-tw' => '&#20013;&#25991;(&#32321;&#20307;)', # Traditional
+ 'zu' => 'isiZulu', # Zulu
+);
+?>
diff --git a/languages/wikipedia/de.lang b/languages/wikipedia/de.lang
new file mode 100644
index 000000000000..0d716e347f54
--- /dev/null
+++ b/languages/wikipedia/de.lang
@@ -0,0 +1,189 @@
+MediaWiki 1.3.0beta3 language file
+a:699:{s:10:"categories";s:17:"Eingeordnet unter";s:8:"category";s:9:"Kategorie";s:15:"category_header";s:29:"Artikel in der Kategorie "$1"";s:13:"subcategories";s:15:"Unterkategorien";s:9:"linktrail";s:26:"/^([ä|ö|ü|ß|a-z]+)(.*)$/sD";s:8:"mainpage";s:10:"Hauptseite";s:12:"mainpagetext";s:48:"Die Wiki-Software wurde erfolgreich installiert.";s:17:"mainpagedocfooter";s:234:"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.";s:6:"portal";s:16:"Wikipedia-Portal";s:10:"portal-url";s:16:"Wikipedia:Portal";s:5:"about";s:4:"Über";s:14:"aboutwikipedia";s:14:"Über Wikipedia";s:9:"aboutpage";s:9:"Wikipedia";s:7:"article";s:7:"Artikel";s:4:"help";s:5:"Hilfe";s:8:"helppage";s:15:"Wikipedia:Hilfe";s:15:"wikititlesuffix";s:9:"Wikipedia";s:10:"bugreports";s:9:"Impressum";s:14:"bugreportspage";s:19:"Wikipedia:Impressum";s:11:"sitesupport";s:20:"Spenden an Wikimedia";s:3:"faq";s:3:"FAQ";s:7:"faqpage";s:33:"Wikipedia:Häufig_gestellte_Fragen";s:8:"edithelp";s:17:"Bearbeitungshilfe";s:9:"newwindow";s:25:"(öffnet in neuem Fenster)";s:12:"edithelppage";s:26:"Wikipedia:Seite_bearbeiten";s:6:"cancel";s:7:"Abbruch";s:6:"qbfind";s:6:"Finden";s:8:"qbbrowse";s:8:"Blättern";s:6:"qbedit";s:6:"Ändern";s:13:"qbpageoptions";s:14:"Seitenoptionen";s:10:"qbpageinfo";s:11:"Seitendaten";s:11:"qbmyoptions";s:13:"Einstellungen";s:14:"qbspecialpages";s:13:"Spezialseiten";s:13:"moredotdotdot";s:7:"Mehr...";s:6:"mypage";s:12:"Eigene Seite";s:6:"mytalk";s:17:"Eigene Diskussion";s:8:"anontalk";s:26:"Diskussionsseite dieser IP";s:10:"navigation";s:10:"Navigation";s:13:"currentevents";s:19:"Aktuelle Ereignisse";s:11:"disclaimers";s:18:"Lizenzbestimmungen";s:14:"disclaimerpage";s:28:"Wikipedia:Lizenzbestimmungen";s:14:"errorpagetitle";s:6:"Fehler";s:8:"returnto";s:14:"Zurück zur $1.";s:13:"fromwikipedia";s:53:"<small>aus Wikipedia, der freien Enzyklopädie</small>";s:13:"whatlinkshere";s:21:"Links auf diese Seite";s:6:"search";s:5:"Suche";s:2:"go";s:3:"Los";s:7:"history";s:9:"Versionen";s:13:"history_short";s:9:"Versionen";s:16:"printableversion";s:12:"Druckversion";s:4:"edit";s:10:"bearbeiten";s:12:"editthispage";s:16:"Seite bearbeiten";s:6:"delete";s:7:"löschen";s:14:"deletethispage";s:13:"Seite löschen";s:14:"undelete_short";s:16:"Wiederherstellen";s:7:"protect";s:8:"schützen";s:15:"protectthispage";s:14:"Seite schützen";s:9:"unprotect";s:9:"freigeben";s:17:"unprotectthispage";s:15:"Schutz aufheben";s:7:"newpage";s:10:"Neue Seite";s:8:"talkpage";s:10:"Diskussion";s:11:"specialpage";s:12:"Spezialseite";s:13:"personaltools";s:21:"Persönliche Werkzeuge";s:11:"postcomment";s:20:"Kommentar hinzufügen";s:10:"addsection";s:1:"+";s:11:"articlepage";s:7:"Artikel";s:11:"subjectpage";s:16:"betrachte Medium";s:4:"talk";s:10:"Diskussion";s:7:"toolbox";s:9:"Werkzeuge";s:8:"userpage";s:13:"Benutzerseite";s:13:"wikipediapage";s:9:"Meta-Text";s:9:"imagepage";s:9:"Bildseite";s:12:"viewtalkpage";s:10:"Diskussion";s:14:"otherlanguages";s:15:"Andere Sprachen";s:14:"redirectedfrom";s:23:"(Weitergeleitet von $1)";s:12:"lastmodified";s:149:"<a href="http://de.wikipedia.org/wiki/Wikipedia:Impressum" class="intern" title="Impressum">Impressum</a> | Diese Seite wurde zuletzt geändert um $1.";s:9:"viewcount";s:42:"Diese Seite wurde bisher $1 mal abgerufen.";s:9:"copyright";s:50:"<br />
+Der Inhalt dieser Seite steht unter der $1.";s:9:"poweredby";s:86:"Wikipedia benutzt [http://www.mediawiki.org/ MediaWiki], eine Open Source Wiki-Engine.";s:13:"printsubtitle";s:30:"(Von http://de.wikipedia.org )";s:13:"protectedpage";s:89:"<a href='/wiki/Wikipedia:Geschützte Seiten' title="Geschützte Seite">Geschützte Seite</a>";s:14:"administrators";s:25:"Wikipedia:Administratoren";s:10:"sysoptitle";s:22:"Sysop-Zugang notwendig";s:9:"sysoptext";s:115:"Dieser Vorgang kann aus Sicherheitsgründen nur von Benutzern mit "Sysop"-Status durchgeführt werden. Siehe auch $1.";s:14:"developertitle";s:27:"Entwickler-Zugang notwendig";s:13:"developertext";s:120:"Dieser Vorgang kann aus Sicherheitsgründen nur von Benutzern mit "Entwickler"-Status durchgeführt werden. Siehe auch $1.";s:15:"bureaucrattitle";s:30:"Bürokraten-Rechte erforderlich";s:14:"bureaucrattext";s:63:"Diese Aktion kann nur mit Bürokraten-Rechten ausgeführt werden.";s:6:"nbytes";s:7:"$1 Byte";s:2:"ok";s:2:"OK";s:9:"sitetitle";s:9:"Wikipedia";s:9:"pagetitle";s:14:"$1 - Wikipedia";s:12:"sitesubtitle";s:26:"Die freie Wissensdatenbank";s:13:"retrievedfrom";s:8:"Von "$1"";s:11:"newmessages";s:13:"Sie haben $1.";s:15:"newmessageslink";s:16:"neue Nachrichten";s:11:"editsection";s:10:"bearbeiten";s:3:"toc";s:18:"Inhaltsverzeichnis";s:7:"showtoc";s:8:"Anzeigen";s:7:"hidetoc";s:9:"Verbergen";s:13:"thisisdeleted";s:37:"Ansehen oder wiederherstellen von $1?";s:11:"restorelink";s:29:"$1 alten gelöschten Versionen";s:9:"feedlinks";s:5:"Feed:";s:10:"nstab-main";s:7:"Artikel";s:10:"nstab-user";s:13:"Benutzerseite";s:11:"nstab-media";s:5:"Media";s:13:"nstab-special";s:7:"Spezial";s:8:"nstab-wp";s:7:"Artikel";s:11:"nstab-image";s:4:"Bild";s:15:"nstab-mediawiki";s:7:"Message";s:14:"nstab-template";s:7:"Vorlage";s:10:"nstab-help";s:5:"Hilfe";s:14:"nstab-category";s:9:"Kategorie";s:12:"nosuchaction";s:26:"Diese Aktion gibt es nicht";s:16:"nosuchactiontext";s:62:"Diese Aktion wird von der MediaWiki-Software nicht unterstützt";s:17:"nosuchspecialpage";s:32:"Diese Spezialseite gibt es nicht";s:17:"nospecialpagetext";s:68:"Diese Spezialseite wird von der MediaWiki-Software nicht unterstützt";s:5:"error";s:6:"Fehler";s:13:"databaseerror";s:23:"Fehler in der Datenbank";s:11:"dberrortext";s:279:"Es gab einen Syntaxfehler in der Datenbankabfrage.
+Das könnte eine illegale Suchanfrage sein (siehe $5),
+oder ein Softwarefehler. Die letzte Datenbankabfrage lautete:
+<blockquote><tt>$1</tt></blockquote>
+aus der Funktion "<tt>$2</tt>".
+MySQL meldete den Fehler "<tt>$3: $4</tt>".";s:13:"dberrortextcl";s:172:"Es gab einen Syntaxfehler in der Datenbankabfrage.
+Die letzte Datenbankabfrage lautete: "$1" aus der Funktion "<tt>$2</tt>".
+MySQL meldete den Fehler: "<tt>$3: $4</tt>".
+";s:9:"noconnect";s:512:"Leider konnte keine Verbindung zur Datenbank aufgebaut werden. Der Datenbankserver scheint nicht erreichbar zu sein. Bitte versuchen Sie es später noch einmal oder besuchen Sie unsere <a href="http://de.wikipedia.org/wiki/Hauptseite" title="Hauptseite">Hauptseite</a>.
+
+Nähere Informationen zur aktuellen Verfügbarkeit der Wikipedia finden Sie in der Regel unter: <a href="http://openfacts.berlios.de/index-en.phtml?title=Wikipedia_Status">http://openfacts.berlios.de/index-en.phtml?title=Wikipedia_Status</a>.";s:4:"nodb";s:512:"Leider konnte keine Verbindung zur Datenbank aufgebaut werden. Der Datenbankserver scheint nicht erreichbar zu sein. Bitte versuchen Sie es später noch einmal oder besuchen Sie unsere <a href="http://de.wikipedia.org/wiki/Hauptseite" title="Hauptseite">Hauptseite</a>.
+
+Nähere Informationen zur aktuellen Verfügbarkeit der Wikipedia finden Sie in der Regel unter: <a href="http://openfacts.berlios.de/index-en.phtml?title=Wikipedia_Status">http://openfacts.berlios.de/index-en.phtml?title=Wikipedia_Status</a>.";s:11:"cachederror";s:75:"Das Folgende ist eine Kopie aus dem Cache und möglicherweise nicht aktuell.";s:8:"readonly";s:22:"Datenbank ist gesperrt";s:15:"enterlockreason";s:122:"Bitte geben Sie einen Grund an, warum die Datenbank
+gesperrt werden soll und eine Abschätzung über die Dauer der Sperrung";s:12:"readonlytext";s:122:"Die Wikipedia-Datenbank ist vorübergehend gesperrt, z.B. für Wartungsarbeiten. Bitte versuchen Sie es später noch einmal.
+";s:14:"missingarticle";s:197:"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.";s:13:"internalerror";s:15:"Interner Fehler";s:13:"filecopyerror";s:43:"Konnte Datei "$1" nicht nach "$2" kopieren.";s:15:"filerenameerror";s:45:"Konnte Datei "$1" nicht nach "$2" umbenennen.";s:15:"filedeleteerror";s:32:"Konnte Datei "$1" nicht löschen.";s:12:"filenotfound";s:31:"Konnte Datei "$1" nicht finden.";s:10:"unexpected";s:29:"Unerwarteter Wert: "$1"="$2".";s:9:"formerror";s:42:"Fehler: Konnte Formular nicht verarbeiten.";s:15:"badarticleerror";s:61:"Diese Aktion kann auf diesen Artikel nicht angewendet werden.";s:12:"cannotdelete";s:94:"Kann gewählte Seite nicht löschen, möglicherweise wurde sie schon von jemand anderem gelöscht.";s:8:"badtitle";s:16:"Ungültiger Titel";s:12:"badtitletext";s:108:"Der Titel der angeforderten Seite war ungültig, leer, oder ein ungültiger Sprachlink von einem anderen Wiki.";s:12:"perfdisabled";s:89:"Diese Funktion wurde wegen Überlastung des Servers vorübergehend (teilweise) deaktiviert.";s:15:"perfdisabledsub";s:81:"Die online-Aktualisierung ist derzeit nicht möglich.
+Dies ist der Stand von $1:";s:10:"perfcached";s:80:"Die folgenden Daten stammen aus dem Cache und sind möglicherweise nicht aktuell:";s:20:"wrong_wfQuery_params";s:66:"falsche Parameter für wfQuery()<br>
+Funktion: $1<br>
+Abfrage: $2";s:10:"viewsource";s:20:"Quelltext betrachten";s:13:"protectedtext";s:184:"Diese Seite ist für das Bearbeiten gesperrt, dafür kann es diverse Gründe geben, siehe [[Wikipedia:Geschützte Seiten]]
+
+Sie können den Quelltext dieser Seite betrachten und kopieren:";s:18:"seriousxhtmlerrors";s:46:"Tidy entdeckte schwere Fehler im XHTML-Markup.";s:11:"logouttitle";s:18:"Benutzer-Abmeldung";s:10:"logouttext";s:151:"Sie sind nun abgemeldet.
+Sie können Wikipedia jetzt anonym weiterbenutzen, oder sich unter demselben oder einem anderen Benutzernamen wieder anmelden.";s:15:"welcomecreation";s:245:"<h2>Willkommen, $1!</h2><p>Ihr Benutzerkonto wurde eingerichtet.
+Vergessen Sie nicht, Ihre Wikipedia-Einstellungen anzupassen. Schauen Sie doch auf unserer <a href="http://de.wikipedia.org/wiki/Wikipedia:Willkommen">Willkommensseite</a> vorbei!";s:14:"loginpagetitle";s:18:"Benutzer-Anmeldung";s:8:"yourname";s:16:"Ihr Benutzername";s:12:"yourpassword";s:12:"Ihr Passwort";s:17:"yourpasswordagain";s:20:"Passwort wiederholen";s:12:"newusersonly";s:26:" (nur für neue Mitglieder)";s:18:"remembermypassword";s:21:"dauerhaftes Einloggen";s:12:"loginproblem";s:81:"<b>Es gab ein Problem mit Ihrer Anmeldung.</b><br>Bitte versuchen Sie es nochmal!";s:15:"alreadyloggedin";s:76:"<font color=red><b>Benutzer $1, Sie sind bereits angemeldet!</b></font><br>
+";s:5:"login";s:8:"Anmelden";s:11:"loginprompt";s:325:"Zum Anmelden bei Wikipedia müssen <a href="http://de.wikipedia.org/wiki/Cookie">Cookie</a>s erlaubt sein. Bitte beachten Sie unsere Hinweise zur <a href="http://de.wikipedia.org/wiki/Wikipedia:Anmeldung">Anmeldung</a>: Insbesondere können Benutzeraccounts nicht wieder gelöscht werden, wenn einmal mit ihnen gearbeitet wurde!";s:9:"userlogin";s:8:"Anmelden";s:6:"logout";s:8:"Abmelden";s:10:"userlogout";s:8:"Abmelden";s:11:"notloggedin";s:16:"Nicht angemeldet";s:13:"createaccount";s:27:"Neues Benutzerkonto anlegen";s:17:"createaccountmail";s:10:"über eMail";s:9:"badretype";s:44:"Die beiden Passwörter stimmen nicht überein.";s:10:"userexists";s:71:"Dieser Benutzername ist schon vergeben. Bitte wählen Sie einen anderen.";s:9:"youremail";s:35:"Ihre E-Mail-Adresse (keine Pflicht)";s:12:"yourrealname";s:31:"Ihr echter Name (keine Pflicht)";s:8:"yournick";s:64:"Ihre Unterschrift in Diskussionen (mit <nowiki>-- ~~~~</nowiki>)";s:12:"emailforlost";s:100:"Falls Sie Ihr Passwort vergessen haben, kann Ihnen ein neues an Ihre E-Mail-Adresse gesendet werden.";s:19:"prefs-help-userdata";s:400:"<!-- * <strong>Real name</strong> (optional): if you choose to provide it this will be used for giving you attribution for your work.<br/> -->
+* <strong>E-Mail-Adresse</strong> (optional): Erlaubt es anderen Leuten, Ihnen über ein Web-Interface E-Mails zu senden, ohne dass Ihre E-Mail-Adresse nach außen sichtbar ist. Erlaubt auch das Zusenden eines neuen Passworts, sollten Sie Ihr altes vergessen.";s:10:"loginerror";s:24:"Fehler bei der Anmeldung";s:12:"nocookiesnew";s:213:"Der Benutzerzugang wurde erstellt, aber Sie sind nicht eingeloggt. Wikipedia benötigt für diese Funktion Cookies, bitte aktivieren Sie diese und loggen sich dann mit Ihrem neuen Benutzernamen und dem Passwort ein.";s:14:"nocookieslogin";s:136:"Wikipedia benutzt Cookies zum Einloggen der Benutzer. Sie haben Cookies deaktiviert, bitte aktivieren Sie diese und versuchen es erneut.";s:6:"noname";s:39:"Sie müssen einen Benutzernamen angeben.";s:17:"loginsuccesstitle";s:21:"Anmeldung erfolgreich";s:12:"loginsuccess";s:49:"Sie sind jetzt als "$1" bei Wikipedia angemeldet.";s:10:"nosuchuser";s:115:"Der Benutzername "$1" existiert nicht.
+Überprüfen Sie die Schreibweise, oder melden Sie sich als neuer Benutzer an.";s:13:"wrongpassword";s:55:"Das Passwort ist falsch. Bitte versuchen Sie es erneut.";s:14:"mailmypassword";s:27:"Ein neues Passwort schicken";s:21:"passwordremindertitle";s:18:"Wikipedia-Passwort";s:20:"passwordremindertext";s:194:"Jemand (IP-Adresse $1)
+hat um ein neues Passwort für die Anmeldung bei Wikipedia gebeten.
+Das Passwort für Benutzer "$2" lautet nun "$3".
+Sie sollten sich jetzt anmelden und Ihr Passwort ändern.";s:7:"noemail";s:49:"Benutzer "$1" hat keine E-Mail-Adresse angegeben.";s:12:"passwordsent";s:124:"Ein neues Passwort wurde an die E-Mail-Adresse von Benutzer "$1" gesendet.
+Bitte melden Sie sich an, sobald Sie es erhalten.";s:8:"loginend";s:11:"Willkommen!";s:9:"mailerror";s:31:"Fehler beim Senden von Mail: $1";s:11:"bold_sample";s:11:"Fetter Text";s:8:"bold_tip";s:11:"Fetter Text";s:13:"italic_sample";s:13:"Kursiver Text";s:10:"italic_tip";s:13:"Kursiver Text";s:11:"link_sample";s:9:"Link-Text";s:8:"link_tip";s:13:"Interner Link";s:14:"extlink_sample";s:32:"http://www.beispiel.de Link-Text";s:11:"extlink_tip";s:32:"Externer Link (http:// beachten)";s:15:"headline_sample";s:19:"Ebene 2 Überschrift";s:12:"headline_tip";s:19:"Ebene 2 Überschrift";s:11:"math_sample";s:20:"Formel hier einfügen";s:8:"math_tip";s:28:"Mathematische Formel (LaTeX)";s:13:"nowiki_sample";s:33:"Unformatierten Text hier einfügen";s:10:"nowiki_tip";s:19:"Unformatierter Text";s:12:"image_sample";s:12:"Beispiel.jpg";s:9:"image_tip";s:12:"Bild-Verweis";s:12:"media_sample";s:12:"Beispiel.mp3";s:9:"media_tip";s:19:"Mediendatei-Verweis";s:7:"sig_tip";s:29:"Ihre Signatur mit Zeitstempel";s:6:"hr_tip";s:37:"Horizontale Linie (sparsam verwenden)";s:7:"infobox";s:60:"Klicken Sie einen Button, um einen Beispieltext zu erhalten.";s:13:"infobox_alert";s:144:"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";s:7:"summary";s:144:"<a href="http://de.wikipedia.org/wiki/Wikipedia:Zusammenfassung" title="Bitte kurz die vorgenommenen Änderungen beschreiben">Zusammenfassung</a>";s:7:"subject";s:7:"Betreff";s:9:"minoredit";s:35:"Nur Kleinigkeiten wurden verändert.";s:9:"watchthis";s:25:"Diesen Artikel beobachten";s:11:"savearticle";s:15:"Seite speichern";s:7:"preview";s:8:"Vorschau";s:11:"showpreview";s:15:"Vorschau zeigen";s:12:"blockedtitle";s:22:"Benutzer ist blockiert";s:11:"blockedtext";s:251:"Ihr Benutzername oder Ihre IP-Adresse wurde von $1 blockiert.
+Als Grund wurde angegeben:<p><i>$2</i><p>Bitte kontaktieren Sie den Administrator, um über die Blockierung zu sprechen oder wenden Sie sich an [mailto:info@wikipedia.de info@wikipedia.de].";s:18:"whitelistedittitle";s:53:"Zum Bearbeiten ist es erforderlich angemeldet zu sein";s:17:"whitelistedittext";s:85:"Sie müssen sich [[Spezial:Userlogin|hier anmelden]], um Artikel bearbeiten zu können.";s:18:"whitelistreadtitle";s:48:"Zum Lesen ist es erforderlich angemeldet zu sein";s:17:"whitelistreadtext";s:80:"Sie müssen sich [[Spezial:Userlogin|hier anmelden]], um Artikel lesen zu können.";s:17:"whitelistacctitle";s:51:"Sie sind nicht berechtigt einen Account zu erzeugen";s:16:"whitelistacctext";s:135:"Um in diesem Wiki Accounts anlegen zu dürfen, müssen Sie sich [[Spezial:Userlogin|hier anmelden]] und die nötigen Berechtigungen haben.";s:13:"loginreqtitle";s:22:"Anmeldung erforderlich";s:12:"loginreqtext";s:86:"Sie müssen sich [[Spezial:Userlogin|anmelden]], um andere Seiten betrachten zu können.";s:12:"accmailtitle";s:26:"Passwort wurde verschickt.";s:11:"accmailtext";s:42:"Das Passwort von $1 wurde an $2 geschickt.";s:10:"newarticle";s:5:"(Neu)";s:14:"newarticletext";s:437:"<div style="font-size:small;color:#003333;border-width:1px;border-style:solid;border-color:#aaaaaa;padding:3px">
+Sie sind einem Link zu einer Seite gefolgt, die noch nicht existiert. In der Edit-Box unten können Sie einen neuen Artikel anlegen (siehe [[Wikipedia:Erste Schritte|Erste Schritte]]). Wenn Sie irrtümlich hier gelandet sind und keinen Artikel verfassen wollen, klicken Sie einfach auf den Zurück-Button des Browsers.
+</div>";s:12:"talkpagetext";s:31:"<!-- MediaWiki:talkpagetext -->";s:16:"anontalkpagetext";s:406:"----
+''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 denken, dass auf dieser Seite irrelevante Kommentare an Sie gerichtet wurden, [[Spezial:Userlogin|melden Sie sich bitte an]], um zukünftige Verwirrung zu vermeiden.''";s:13:"noarticletext";s:107:"(Dieser Artikel existiert noch nicht. Wählen Sie '''Seite bearbeiten''' aus, wenn sie ihn anlegen möchten.)";s:14:"clearyourcache";s:214:"'''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''.";s:22:"usercssjsyoucanpreview";s:105:"<strong>Tipp:</strong> Benutzen Sie den Vorschau-Button, um Ihr neues css/js vor dem Speichern zu testen.";s:14:"usercsspreview";s:273:"== Vorschau ihres Benutzer-CSS. ==
+'''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''.";s:13:"userjspreview";s:280:"== Vorschau Ihres Benutzer-Javascript. ==
+'''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''.";s:7:"updated";s:10:"(Geändert)";s:4:"note";s:26:"<strong>Hinweis:</strong> ";s:11:"previewnote";s:69:"Dies ist nur eine Vorschau, der Artikel wurde noch nicht gespeichert!";s:15:"previewconflict";s:116:"Diese Vorschau gibt den Inhalt des oberen Textfeldes wieder; so wird der Artikel aussehen, wenn Sie jetzt speichern.";s:7:"editing";s:17:"Bearbeiten von $1";s:11:"sectionedit";s:9:" (Absatz)";s:11:"commentedit";s:12:" (Kommentar)";s:12:"editconflict";s:25:"Bearbeitungs-Konflikt: $1";s:15:"explainconflict";s:345:"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.
+<b>Nur</b> der Inhalt des oberen Textfeldes wird gespeichert, wenn Sie auf "Speichern" klicken!
+<p>";s:8:"yourtext";s:8:"Ihr Text";s:13:"storedversion";s:20:"Gespeicherte Version";s:10:"editingold";s:172:"<strong><span style="color:red">ACHTUNG</span>: Sie bearbeiten eine alte Version dieses Artikels.
+Wenn Sie speichern, werden alle neueren Versionen überschrieben.</strong>";s:8:"yourdiff";s:12:"Unterschiede";s:16:"copyrightwarning";s:1138:"<div style="border-width:2px;background:#ffffff;border-style:solid;border-color:#0000bb;padding:6px"><div><b>Bitte kopieren Sie keine fremden Webseiten und urheberrechtlich geschützten Werke ohne Erlaubnis der Inhaber!</b></p>
+<p><u>Sie</u> versichern hiermit, dass Sie den Text selbst verfasst haben, dass der Text Allgemeingut (public domain) ist, oder dass der Inhaber der Urheberrechte der Lizenzierung unter der GNU-FDL zugestimmt hat.</div>
+<div>
+Alle Beiträge zur Wikipedia fallen unter die <b><a href="http://de.wikipedia.org/wiki/GNU_Freie_Dokumentationslizenz" title="GNU-FDL">GNU Freie Dokumentationslizenz</a></b>. Falls Sie nicht möchten, dass Ihr Text verändert und verbreitet wird, dann drücken Sie nicht auf "Speichern".</div>
+<div>
+Wurde dieser Text bereits anderswo veröffentlicht, weisen Sie bitte auf der Diskussionsseite des Artikels darauf hin.</div></div><div style="margin-top:5px;border-width:1px;border-style:solid;border-color:#aaaaaa;padding:3px">
+<a href="http://de.wikipedia.org/wiki/Wikipedia:Sonderzeichen" title="Wikipedia:Sonderzeichen">Sonderzeichen</a>:<tt> Ä Ö Ü ä ö ü ß * [ | ] { } ~</tt></div>";s:15:"longpagewarning";s:546:"<div style="border-width:1px;background:#ffffff;border-style:solid;border-color:#bbbbbb;padding:6px">
+<font color="red" size=+1>WARNUNG:</font> Diese Seite ist $1 kB groß; einige Browser könnten Probleme haben, Seiten zu bearbeiten, die größer als 32&nbsp;kB sind.
+Überlegen Sie bitte, ob eine Aufteilung der Seite in kleinere Abschnitte möglich ist. Angemeldete Benutzer werden darauf hingewiesen, dass sie längere Seiten durch Einschalten der Option "Links zum Bearbeiten einzelner Absätze anzeigen" abschnittsweise bearbeiten können.
+</div>";s:15:"readonlywarning";s:245:"WARNUNG: Für Wartungsarbeiten wurde die Datenbank gesperrt, so dass Ihre Änderungen derzeit nicht
+gespeichert werden können. Sichern Sie den Text bitte lokal auf Ihrem Computer und versuchen Sie die Änderungen später in Wikipedia zu übertragen.";s:20:"protectedpagewarning";s:212:"WARNUNG: Diese Seite wurde gesperrt, so dass sie nur durch Benutzer mit Sysop-Rechten bearbeitet werden kann. Beachten Sie bitte die
+<a href='/wiki/Wikipedia:Geschützte Seiten'>Regeln für geschützte Seiten</a>.";s:10:"revhistory";s:17:"Frühere Versionen";s:9:"nohistory";s:49:"Es gibt keine früheren Versionen dieses Artikels.";s:11:"revnotfound";s:33:"Keine früheren Versionen gefunden";s:15:"revnotfoundtext";s:123:"Die Version dieses Artikels, nach der Sie suchen, konnte nicht gefunden werden. Bitte überprüfen Sie die URL dieser Seite.
+";s:8:"loadhist";s:33:"Lade Liste mit früheren Versionen";s:10:"currentrev";s:16:"Aktuelle Version";s:12:"revisionasof";s:14:"Version von $1";s:3:"cur";s:7:"Aktuell";s:4:"next";s:7:"Nächste";s:4:"last";s:6:"Letzte";s:4:"orig";s:8:"Original";s:10:"histlegend";s:122:"Legende:
+(Aktuell) = Unterschied zur aktuellen Version,
+(Letzte) = Unterschied zur vorigen Version,
+K = Kleine Änderung";s:10:"difference";s:32:"(Unterschied zwischen Versionen)";s:10:"loadingrev";s:33:"lade Versionen zur Unterscheidung";s:6:"lineno";s:9:"Zeile $1:";s:11:"editcurrent";s:47:"Die aktuelle Version dieses Artikels bearbeiten";s:25:"selectnewerversionfordiff";s:43:"Eine neuere Version zum Vergleich auswählen";s:25:"selectolderversionfordiff";s:43:"Eine ältere Version zum Vergleich auswählen";s:23:"compareselectedversions";s:30:"Gewählte Versionen vergleichen";s:13:"searchresults";s:14:"Suchergebnisse";s:14:"searchhelppage";s:15:"Wikipedia:Suche";s:18:"searchingwikipedia";s:21:"Wikipedia durchsuchen";s:16:"searchresulttext";s:46:"Für mehr Information über Wikipedia, siehe $1.";s:11:"searchquery";s:24:"Für die Suchanfrage "$1"";s:8:"badquery";s:19:"Falsche Suchanfrage";s:12:"badquerytext";s:317:"Wir konnten Ihre Suchanfrage nicht verarbeiten.
+Vermutlich haben Sie versucht, ein Wort zu suchen, das kürzer als zwei Buchstaben ist.
+Dies funktioniert im Moment noch nicht.
+Möglicherweise haben Sie auch die Anfrage falsch formuliert, z.B.
+"Lohn und und Steuern".
+Bitte versuchen Sie eine anders formulierte Anfrage.";s:11:"matchtotals";s:89:"Die Anfrage "$1" stimmt mit $2 Artikelüberschriften
+und dem Text von $3 Artikeln überein.";s:9:"nogomatch";s:339:"Es existiert kein Artikel mit diesem Namen. Bitte versuchen
+Sie die Volltextsuche oder legen Sie den Artikel <a href="$1">neu</a> an.
+<small><br>(Bitte beachten Sie dabei aber die Hinweise auf <a href="http://de.wikipedia.org/wiki/Wikipedia:Neue Seite anlegen">Wikipedia:Neue Seite anlegen</a> bezüglich der verwaisten Artikel!)</small>";s:12:"titlematches";s:35:"Übereinstimmungen mit Überschriften";s:14:"notitlematches";s:23:"Keine Übereinstimmungen";s:11:"textmatches";s:28:"Übereinstimmungen mit Texten";s:13:"notextmatches";s:23:"Keine Übereinstimmungen";s:5:"prevn";s:9:"vorige $1";s:5:"nextn";s:10:"nächste $1";s:12:"viewprevnext";s:21:"Zeige ($1) ($2) ($3).";s:14:"showingresults";s:63:"Hier sind <b>$1</b> Ergebnisse, beginnend mit <b>Nummer $2</b>.";s:17:"showingresultsnum";s:63:"Hier sind <b>$3</b> Ergebnisse, beginnend mit <b>Nummer $2</b>.";s:9:"nonefound";s:159:"<strong>Hinweis</strong>:
+Erfolglose Suchanfragen werden häufig verursacht durch den Versuch, nach 'gewöhnlichen' Worten zu suchen; diese sind nicht indiziert.";s:11:"powersearch";s:5:"Suche";s:15:"powersearchtext";s:83:"Suche in Namensräumen:<br>
+$1<br>
+$2 Zeige auch REDIRECTs &nbsp; Suche nach $3 $9";s:14:"searchdisabled";s:195:"<p>Die Volltextsuche wurde wegen Überlastung temporär deaktiviert. Derweil können Sie entweder folgende Google- oder Yahoo-Suche verwenden, die allerdings nicht den aktuellen Stand widerspiegeln.";s:12:"googlesearch";s:1562:"<p>Oder betrachten Sie eine <a href="http://de.wikipedia.org/w/wiki.phtml?title=Spezial:Allpages&from=$1">Liste</a> mit Artikeln, die im Alphabet <small>(Großschreibung!)</small> auf den Suchbegriff folgen.
+<p>
+<table width=100% border=0>
+<tr valign="bottom">
+<td width="40">&nbsp;</td>
+<td width="45%" align="left"><FORM method=GET action="http://www.google.com/search">
+<A HREF="http://www.google.com/"><IMG SRC="http://www.google.com/logos/Logo_40wht.gif" border="0" ALT="Google"></A><p>
+<INPUT TYPE=text name=q size=31 maxlength=255 value="$1"><INPUT type=submit name=btnG VALUE="Google Suche"><p>
+<input type=hidden name=domains value="http://de.wikipedia.org"> <input type='hidden' name='ie' value='$2'> <input type='hidden' name='oe' value='$2'><input type=radio name=sitesearch value="">World Wide Web<input type=radio name=sitesearch value="http://de.wikipedia.org" checked> http://de.wikipedia.org</FORM></td>
+<td width="40">&nbsp;</td>
+<td width="45%" align="left">
+
+<form method=get action="http://search.yahoo.com/search">
+<A HREF="http://www.yahoo.com/"><IMG SRC="http://us.i1.yimg.com/us.yimg.com/i/yahootogo/y150purp2.gif" border="0" ALT="Yahoo"></A><p>
+ <input type="hidden" name="x" value="op"> <input name="va" size=31 maxlength=255 value="$1"> <input type="submit" value="Yahoo! Suche"><p>
+<input type="hidden" name="va_vt" value="any"> <input type="radio" name="vs" value="">World Wide Web<input type="radio" name="vs" value="de.wikipedia.org" checked>de.wikipedia.org </form></td>
+<td width="40">&nbsp;</td>
+</tr>
+</table>";s:14:"blanknamespace";s:8:"(Haupt-)";s:11:"preferences";s:13:"Einstellungen";s:12:"prefsnologin";s:16:"Nicht angemeldet";s:16:"prefsnologintext";s:98:"Sie müssen <a href="/wiki/Spezial:Userlogin">angemeldet</a>
+sein, um Ihre Einstellungen zu ändern.";s:14:"prefslogintext";s:175:"{| width="100%"
+| align=left |
+Sie sind angemeldet als "$1". Ihre interne Benutzer-ID ist $2.
+| align="right" |
+[[Wikipedia:Einstellungen|Hilfe zu den Einstellungen]]
+|}";s:10:"prefsreset";s:48:"Einstellungen wurden auf Standard zurückgesetzt.";s:10:"qbsettings";s:12:"Seitenleiste";s:14:"qbsettingsnote";s:62:"Diese Einstellung wirkt nur im Standard- und CologneBlue-Skin.";s:14:"changepassword";s:15:"Passwort ändern";s:4:"skin";s:4:"Skin";s:4:"math";s:3:"TeX";s:10:"dateformat";s:12:"Datumsformat";s:12:"math_failure";s:13:"Parser-Fehler";s:18:"math_unknown_error";s:18:"Unbekannter Fehler";s:21:"math_unknown_function";s:20:"Unbekannte Funktion ";s:17:"math_lexing_error";s:15:"'Lexing'-Fehler";s:17:"math_syntax_error";s:12:"Syntaxfehler";s:16:"math_image_error";s:34:"die PNG-Konvertierung schlug fehl.";s:15:"math_bad_tmpdir";s:86:"Kann das Temporärverzeichnis für mathematische Formeln nicht anlegen oder beschreiben.";s:15:"math_bad_output";s:82:"Kann das Zielverzeichnis für mathematische Formeln nicht anlegen oder beschreiben.";s:12:"math_notexvc";s:78:"Das texvc-Programm kann nicht gefunden werden. Bitte beachten Sie math/README.";s:14:"prefs-personal";s:13:"Benutzerdaten";s:8:"prefs-rc";s:44:"Letzte Änderungen und Anzeige kurzer Artikel";s:10:"prefs-misc";s:26:"Verschiedene Einstellungen";s:9:"saveprefs";s:23:"Einstellungen speichern";s:10:"resetprefs";s:26:"Einstellungen zurücksetzen";s:11:"oldpassword";s:14:"Altes Passwort";s:11:"newpassword";s:14:"Neues Passwort";s:9:"retypenew";s:24:"Neues Passwort (nochmal)";s:11:"textboxsize";s:14:"Textfeld-Größe";s:4:"rows";s:6:"Zeilen";s:7:"columns";s:7:"Spalten";s:17:"searchresultshead";s:14:"Suchergebnisse";s:14:"resultsperpage";s:17:"Treffer pro Seite";s:12:"contextlines";s:18:"Zeilen pro Treffer";s:12:"contextchars";s:17:"Zeichen pro Zeile";s:13:"stubthreshold";s:27:"Kurze Artikel markieren bis";s:18:"recentchangescount";s:26:"Anzahl "Letzte Änderungen"";s:10:"savedprefs";s:38:"Ihre Einstellungen wurden gespeichert.";s:14:"timezonelegend";s:8:"Zeitzone";s:12:"timezonetext";s:81:"Geben Sie die Anzahl der Stunden ein, die zwischen Ihrer Zeitzone und UTC liegen.";s:9:"localtime";s:8:"Ortszeit";s:14:"timezoneoffset";s:11:"Unterschied";s:10:"servertime";s:28:"Aktuelle Zeit auf dem Server";s:13:"guesstimezone";s:24:"Einfügen aus dem Browser";s:9:"emailflag";s:43:"Keine E-Mail von anderen Benutzern erhalten";s:9:"defaultns";s:57:"In diesen Namensräumen soll standardmäßig gesucht werden:";s:7:"changes";s:10:"Änderungen";s:13:"recentchanges";s:17:"Letzte Änderungen";s:17:"recentchangestext";s:533:"
+Diese Seite wird beim Laden automatisch aktualisiert. Angezeigt werden Seiten, die zuletzt bearbeitet wurden, sowie die Zeit und der Name des Autors.<br>
+Falls Sie neu bei Wikipedia sind, lesen Sie bitte die [[Wikipedia:Willkommen|Willkommensseite]] und [[Wikipedia:Erste Schritte|Erste Schritte]].<br>
+Wenn Sie möchten, dass Wikipedia zu einem Erfolg wird, dann fügen Sie bitte keine Texte hinzu, die dem [[Wikipedia:Urheberrechte beachten|Urheberrecht]] anderer unterliegen. Dies könnte dem Projekt sonst schweren Schaden zufügen.";s:9:"rcloaderr";s:22:"Lade letzte Änderungen";s:6:"rcnote";s:60:"Die letzten <b>$1</b> Änderungen der letzten <b>$2</b> Tage.";s:10:"rcnotefrom";s:67:"Dies sind die Änderungen seit <b>$2</b> (bis zu <b>$1</b> gezeigt).";s:10:"rclistfrom";s:23:"neue Änderungen seit $1";s:13:"showhideminor";s:20:"kleine Änderungen $1";s:7:"rclinks";s:56:"Zeige die letzten $1 Änderungen der letzten $2 Tage oder";s:6:"rchide";s:84:"in $4 form; $1 kleine Änderungen; $2 sekundäre Namensräume; $3 mehrfache Änderungen.";s:5:"rcliu";s:42:"; $1 Änderungen durch eingeloggte Benutzer";s:4:"diff";s:11:"Unterschied";s:4:"hist";s:9:"Versionen";s:4:"hide";s:10:"ausblenden";s:4:"show";s:10:"einblenden";s:9:"tableform";s:7:"Tabelle";s:8:"listform";s:5:"Liste";s:8:"nchanges";s:13:"$1 Änderungen";s:15:"minoreditletter";s:1:"K";s:13:"newpageletter";s:1:"N";s:6:"upload";s:9:"Hochladen";s:9:"uploadbtn";s:17:"Dateien hochladen";s:10:"uploadlink";s:16:"Bilder hochladen";s:8:"reupload";s:16:"Erneut hochladen";s:12:"reuploaddesc";s:27:"Zurück zur Hochladen-Seite.";s:13:"uploadnologin";s:16:"Nicht angemeldet";s:17:"uploadnologintext";s:96:"Sie müssen <a href="/wiki/Spezial:Userlogin">angemeldet sein</a>
+um Dateien hochladen zu können.";s:10:"uploadfile";s:15:"Datei hochladen";s:11:"uploaderror";s:21:"Fehler beim Hochladen";s:10:"uploadtext";s:1492:"Hier laden Sie Bilder und andere Dateien auf den Wikipedia-Server hoch. So gehts:
+<ul>
+<li>Klicken Sie auf <font color="darkblue">[Durchsuchen]</font> und wählen Sie die Datei aus
+<li>Bei <font color="darkblue">[Beschreibung]</font> bitte unbedingt <b>Lizenzstatus</b> ("GNU-FDL" oder "Public Domain")<br>und <b>Bildquelle</b> (z. B. "selbst fotografiert") angeben
+<li>Bestätigen Sie das Copyright
+<li>Klicken Sie <font color="darkblue">[Dateien hochladen]</font> - das kann etwas dauern
+</ul>
+
+Siehe auch: <a href="http://de.wikipedia.org/wiki/Wikipedia:Bilder">Wikipedia:Bilder</a><br>
+
+
+<b>Wichtig:</b>
+<ul>
+<li>Alle hochgeladenen Dateien müssen <a href="http://de.wikipedia.org/wiki/Gemeinfreiheit">Public Domain</a> oder unter der <a href="http://de.wikipedia.org/wiki/GNU_FDL">GNU-Lizenz</a> freigegeben sein.<br>Bilder ohne Lizenzhinweis müssen wir leider löschen.
+<li>Abgebildete Personen, sofern sie nicht Personen des öffentlichen Interesses sind,<br>müssen der freien Verwendung zugestimmt haben (bitte bei Beschreibung eintragen)
+<li>Fotos möglichst im JPEG-Format, für Zeichnungen und Symbole das <a href="http://de.wikipedia.org/wiki/Portable_Network_Graphics">PNG</a>-Format
+<li>Nicht empfohlene Formate sind: ".doc" und ".txt". Sollten Sie solche Dateien hochladen, müssen Sie damit rechnen, dass sie umgehend gelöscht werden.
+</ul>
+<p>Bitte beachten Sie, dass andere Benutzer, genau wie bei den Artikeln, hochgeladene Dateien löschen oder verändern können.";s:9:"uploadlog";s:13:"Datei-Logbuch";s:13:"uploadlogpage";s:13:"Datei-Logbuch";s:17:"uploadlogpagetext";s:87:"Hier ist die Liste der letzten hochgeladenen Dateien.
+Alle Zeiten sind UTC.
+<ul>
+</ul>
+";s:8:"filename";s:9:"Dateiname";s:8:"filedesc";s:12:"Beschreibung";s:10:"filestatus";s:16:"Copyright-Status";s:10:"filesource";s:6:"Quelle";s:11:"affirmation";s:213:"Hiermit versichere ich, dass der Urheber dieser Datei einer Veröffentlichung unter den oben genannten und auf der Seite "$1" detailliert beschriebenen Bedingungen zustimmt, bzw. dass die Datei "Public Domain" ist.";s:13:"copyrightpage";s:32:"Wikipedia:Urheberrechte beachten";s:17:"copyrightpagename";s:32:"Wikipedia:Urheberrechte beachten";s:13:"uploadedfiles";s:20:"Hochgeladene Dateien";s:13:"noaffirmation";s:89:"Sie müssen bestätigen, dass das Hochladen der Datei keine Copyright-Verletzung darstellt.";s:13:"ignorewarning";s:48:"Warnung ignorieren und Datei trotzdem speichern.";s:9:"minlength";s:52:"Bilddateien müssen mindestens drei Buchstaben haben.";s:11:"badfilename";s:36:"Der Bildname wurde in "$1" geändert.";s:11:"badfiletype";s:105:"".$1" ist kein empfohlenes Dateiformat.<br>
+Empfohlene Dateiformate sind: <b>jpg/jpeg</b> und <b>png</b>";s:9:"largefile";s:44:"Bitte keine Bilder über 100 KByte hochladen.";s:16:"successfulupload";s:23:"Erfolgreich hochgeladen";s:12:"fileuploaded";s:768:"Die Datei "$1" wurde erfolgreich hochgeladen.<br />
+Bitte verwenden Sie <b>jetzt</b> diesen ($2) Link zur Beschreibungsseite und füllen Sie die Informationen über die Datei aus, insbesondere geben Sie dort bitte an, welcher Lizenz die Datei unterliegt, weiterhin die Herkunft der Datei, von wem und wann sie erstellt wurde. <b>Bilder, denen auf der Bildbeschreibungsseite keine Lizenzangaben hinzugefügt werden, werden ohne Rückfrage gelöscht!</b>
+<p />
+Mit <tt><nowiki>[[bild:$1|thumb|Beschreibung]]</nowiki></tt> bauen Sie eine Thumbnail-Ansicht des Bilds in einen Artikel ein. Mehr dazu auf <a href="/wiki/Wikipedia:Bilder">Wikipedia:Bilder</a>
+<p />
+Alle hochgeladene Bilder finden Sie in der <a href="/wiki/Spezial:Imagelist">Liste hochgeladener Bilder</a>.";s:13:"uploadwarning";s:7:"Warnung";s:8:"savefile";s:15:"Datei speichern";s:13:"uploadedimage";s:16:""$1" hochgeladen";s:14:"uploaddisabled";s:46:"Entschuldigung, das Hochladen ist deaktiviert.";s:9:"imagelist";s:11:"Bilderliste";s:13:"imagelisttext";s:48:"Hier ist eine Liste von $1 Bildern, sortiert $2.";s:12:"getimagelist";s:16:"Lade Bilderliste";s:11:"ilshowmatch";s:27:"Zeige alle Bilder mit Namen";s:8:"ilsubmit";s:5:"Suche";s:8:"showlast";s:41:"Zeige die letzten $1 Bilder, sortiert $2.";s:3:"all";s:4:"alle";s:6:"byname";s:9:"nach Name";s:6:"bydate";s:10:"nach Datum";s:6:"bysize";s:10:"nach Größe";s:9:"imgdelete";s:7:"Löschen";s:7:"imgdesc";s:12:"Beschreibung";s:9:"imglegend";s:59:"Legende: (Beschreibung) = Zeige/Bearbeite Bildbeschreibung.";s:10:"imghistory";s:14:"Bild-Versionen";s:9:"revertimg";s:12:"Zurücksetzen";s:9:"deleteimg";s:7:"Löschen";s:13:"imghistlegend";s:141:"Legende: (aktuell) = dies ist das aktuelle Bild, (Löschen) = lösche
+diese alte Version, (Zurücksetzen) = verwende wieder diese alte Version.";s:10:"imagelinks";s:12:"Bildverweise";s:12:"linkstoimage";s:43:"Die folgenden Artikel benutzen dieses Bild:";s:14:"nolinkstoimage";s:33:"Kein Artikel benutzt dieses Bild.";s:10:"statistics";s:9:"Statistik";s:9:"sitestats";s:15:"Seitenstatistik";s:9:"userstats";s:17:"Benutzerstatistik";s:13:"sitestatstext";s:541:"Es gibt insgesamt <b>$1</b> Seiten in der Datenbank.
+Das schließt Diskussionsseiten, Seiten über Wikipedia, extrem kurze Artikel, Weiterleitungen und andere Seiten ein, die nicht als Artikel gelten können.
+Diese ausgenommen, gibt es <b>$2</b> Seiten, die als Artikel gelten können.<p>
+Es wurden insgesamt <b>$3</b>&times; Seiten aufgerufen, und <b>$4</b>&times; Seiten bearbeitet.
+Daraus ergeben sich <b>$5</b> Bearbeitungen pro Seite, und <b>$6</b> Betrachtungen pro Bearbeitung.
+<p>
+Weitere Statistiken siehe unter [[Wikipedia:Statistik]].";s:13:"userstatstext";s:95:"Es gibt <b>$1</b> registrierte Benutzer.
+Davon haben <b>$2</b> Administrator-Rechte (siehe $3).";s:11:"maintenance";s:13:"Wartungsseite";s:18:"maintnancepagetext";s:203:"Diese Seite enthält mehrere praktische Funktionen zur täglichen Wartung von Wikipedia. Einige dieser Funktionen können die Datenbank stark beanspruchen, also bitte nicht nach jeder Änderung neu laden ;-)";s:19:"maintenancebacklink";s:24:"Zurück zur Wartungsseite";s:15:"disambiguations";s:22:"Begriffsklärungsseiten";s:19:"disambiguationspage";s:25:"Wikipedia:Begriffsklärung";s:19:"disambiguationstext";s:293:"Die folgenden Artikel verweisen auf eine <i>Seite zur Begriffsklärung</i>. Sie sollten statt dessen auf die eigentlich gemeinte Seite verweisen.<br>Eine Seite wird als Begriffsklärungsseite behandelt, wenn $1 auf sie verweist.<br>Verweise aus Namensräumen werden hier <i>nicht</i> aufgelistet.";s:15:"doubleredirects";s:18:"Doppelte Redirects";s:19:"doubleredirectstext";s:661:"Diese Liste enthält die Redirects, die erst über einen weiteren Redirect auf einen Artikel verweisen. Solche Konstrukte entstehen vor allem, wenn Artikel verschoben werden, auf die mit Redirects gelinkt wurde. Dies ist für unsere Besucher besonders unschön, da sie einen zusätzlichen Klick machen müssen, um zum Artikel zu gelangen. Um dies zu beheben, muss hier der Text in Klammern in den Artikeltext des ersten Artikels eingefügt werden.
+
+<b>Achtung:</b> Die 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.";s:15:"brokenredirects";s:17:"Kaputte Redirects";s:19:"brokenredirectstext";s:74:"Die folgenden Redirects leiten zu einem nicht existierenden Artikel weiter";s:9:"selflinks";s:37:"Seiten, die auf sich selbst verweisen";s:13:"selflinkstext";s:71:"Die folgenden Artikel verweisen auf sich selbst, was sie nicht sollten.";s:11:"mispeelings";s:38:"Seiten mit falsch geschriebenen Worten";s:15:"mispeelingstext";s:298:"Die folgenden Seiten enthalten falsch geschriebene Worte, wie sie auf $1 definiert sind. In Klammern angegebene Worte geben die korrekte Schreibweise wieder.<p><strong>Zitate, Buchtitel u.ä. bitte im Originalzustand belassen, also ggf. in alter Rechtschreibung und mit Rechtschreibfehlern!</strong>";s:15:"mispeelingspage";s:21:"Liste von Tippfehlern";s:20:"missinglanguagelinks";s:23:"Fehlende Sprachverweise";s:26:"missinglanguagelinksbutton";s:34:"Zeige fehlende Sprachverweise nach";s:24:"missinglanguagelinkstext";s:125:"Diese Artikel haben <i>keinen</i> Verweis zu ihrem Gegenstück in $1. Redirects und Unterseiten werden <i>nicht</i> angezeigt.";s:7:"orphans";s:16:"Verwaiste Seiten";s:11:"lonelypages";s:16:"Verwaiste Seiten";s:12:"unusedimages";s:16:"Verwaiste Bilder";s:12:"popularpages";s:15:"Beliebte Seiten";s:6:"nviews";s:11:"$1 Abfragen";s:11:"wantedpages";s:17:"Gewünschte Seiten";s:6:"nlinks";s:11:"$1 Verweise";s:8:"allpages";s:12:"Alle Artikel";s:10:"randompage";s:18:"Zufälliger Artikel";s:10:"shortpages";s:13:"Kurze Artikel";s:9:"longpages";s:13:"Lange Artikel";s:12:"deadendpages";s:17:"Sackgassenartikel";s:9:"listusers";s:19:"Benutzerverzeichnis";s:10:"listadmins";s:11:"Admins list";s:12:"specialpages";s:13:"Spezialseiten";s:9:"spheading";s:51:"Spezialseiten</h2> (leider einige deaktiviert!)<h2>";s:14:"sysopspheading";s:24:"Spezialseiten für Sysops";s:18:"developerspheading";s:28:"Spezialseiten für Entwickler";s:11:"protectpage";s:16:"Artikel schützen";s:19:"recentchangeslinked";s:16:"Verlinkte Seiten";s:6:"rclsub";s:34:"(von auf "$1" verlinkten Artikeln)";s:5:"debug";s:5:"Debug";s:8:"newpages";s:12:"Neue Artikel";s:12:"ancientpages";s:15:"Älteste Artikel";s:4:"intl";s:14:"InterWikiLinks";s:4:"move";s:11:"verschieben";s:12:"movethispage";s:19:"Artikel verschieben";s:16:"unusedimagestext";s:86:"<p>Bitte beachten Sie, dass andere Wikis möglicherweise einige dieser Bilder benutzen.";s:11:"booksources";s:14:"Buchhandlungen";s:14:"booksourcetext";s:241:"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. Wikipedia ist mit keinem dieser Anbieter geschäftlich verbunden.";s:4:"isbn";s:4:"ISBN";s:6:"rfcurl";s:35:"http://www.faqs.org/rfcs/rfc$1.html";s:14:"alphaindexline";s:9:"$1 bis $2";s:7:"version";s:7:"Version";s:11:"mailnologin";s:26:"Sie sind nicht angemeldet.";s:15:"mailnologintext";s:150:"Sie müssen <a href="/wiki/Spezial:Userlogin">angemeldet sein</a>
+und eine gültige E-Mail-Adresse haben, um anderen Benutzern eine E-Mail zu schicken.";s:9:"emailuser";s:25:"E-Mail an diesen Benutzer";s:9:"emailpage";s:18:"E-Mail an Benutzer";s:13:"emailpagetext";s:245:"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.";s:15:"usermailererror";s:41:"Das Mail-Objekt gab einen Fehler zurück: ";s:15:"defemailsubject";s:16:"Wikipedia e-mail";s:12:"noemailtitle";s:20:"Keine E-Mail-Adresse";s:11:"noemailtext";s:117:"Dieser Benutzer hat keine gültige E-Mail-Adresse angegeben, oder möchte keine E-Mail von anderen Benutzern empfangen.";s:9:"emailfrom";s:3:"Von";s:7:"emailto";s:2:"An";s:12:"emailsubject";s:7:"Betreff";s:12:"emailmessage";s:9:"Nachricht";s:9:"emailsend";s:6:"Senden";s:9:"emailsent";s:17:"E-Mail verschickt";s:13:"emailsenttext";s:29:"Ihre E-Mail wurde verschickt.";s:9:"watchlist";s:17:"Beobachtungsliste";s:12:"watchlistsub";s:19:"(für Benutzer "$1")";s:11:"nowatchlist";s:53:"Sie haben keine Einträge auf Ihrer Beobachtungsliste.";s:12:"watchnologin";s:25:"Sie sind nicht angemeldet";s:16:"watchnologintext";s:106:"Sie müssen <a href="/wiki/Spezial:Userlogin">angemeldet</a>
+sein, um Ihre Beobachtungsliste zu bearbeiten.";s:10:"addedwatch";s:34:"Zur Beobachtungsliste hinzugefügt.";s:14:"addedwatchtext";s:423:"Der Artikel "$1" wurde zu Ihrer [[Spezial:Watchlist|Beobachtungsliste]] hinzugefügt.
+
+Spätere Änderungen an diesem Artikel und der zugehörigen Diskussionsseite werden dort gelistet und der Artikel wird in der [[Spezial:Recentchanges|Liste der letzten Änderungen]] '''fett''' angezeigt.
+
+Wenn Sie den Artikel wieder von Ihrer
+Beobachtungsliste entfernen wollen, klicken Sie auf der Artikelseite auf "Nicht mehr beobachten".";s:12:"removedwatch";s:34:"Von der Beobachtungsliste entfernt";s:16:"removedwatchtext";s:82:"Der Artikel "$1" wurde von Ihrer [[Spezial:Watchlist|Beobachtungsliste]] entfernt.";s:5:"watch";s:10:"beobachten";s:13:"watchthispage";s:16:"Seite beobachten";s:7:"unwatch";s:21:"nicht mehr beobachten";s:15:"unwatchthispage";s:21:"Nicht mehr beobachten";s:12:"notanarticle";s:12:"Kein Artikel";s:13:"watchnochange";s:89:"Keine der Seiten, die Sie beobachten, wurde während des angezeigten Zeitraums bearbeitet.";s:12:"watchdetails";s:167:"($1 Artikel werden beobachtet (ohne Diskussionsseiten);
+$2 Artikel im eingestellten Zeitraum bearbeitet;
+$3... <a href='$4'>komplette Liste zeigen und bearbeiten</a>.)";s:18:"watchmethod-recent";s:62:"überprüfen der letzten Bearbeitungen für die Beobachtungsliste";s:16:"watchmethod-list";s:59:"überprüfen der Beobachtungsliste nach letzten Bearbeitungen";s:13:"removechecked";s:26:"Markierte Einträge löschen";s:17:"watchlistcontains";s:41:"Ihre Beobachtungsliste enthält $1 Seiten.";s:13:"watcheditlist";s:219:"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.";s:15:"removingchecked";s:69:"Wunschgemäß werden die Einträge aus der Beobachtungsliste entfernt...";s:13:"couldntremove";s:46:"Der Eintrag '$1' kann nicht gelöscht werden...";s:15:"iteminvalidname";s:48:"Problem mit dem Eintrag '$1', ungültiger Name...";s:6:"wlnote";s:66:"Es folgen die letzten $1 Änderungen der letzten <b>$2</b> Stunden.";s:10:"wlshowlast";s:45:"Zeige die letzten $1 Stunden $2 Tage, oder $3";s:7:"wlsaved";s:59:"Dies ist eine gespeicherte Version Ihrer Beobachtungsliste.";s:10:"deletepage";s:13:"Seite löschen";s:7:"confirm";s:10:"Bestätigen";s:9:"excontent";s:13:"Alter Inhalt:";s:13:"exbeforeblank";s:32:"Inhalt vor dem Leeren der Seite:";s:7:"exblank";s:14:"Seite war leer";s:13:"confirmdelete";s:19:"Löschung bestätigen";s:9:"deletesub";s:13:"(Lösche "$1")";s:14:"historywarning";s:74:"WARNUNG: Die Seite, die Sie löschen möchten, hat
+eine Versionsgeschichte:";s:17:"confirmdeletetext";s:299:"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 [[Wikipedia:Leitlinien|den Wikipedia-Leitlinien]] handeln.";s:12:"confirmcheck";s:43:"Ja, ich möchte den Löschvorgang fortsetzen.";s:14:"actioncomplete";s:14:"Aktion beendet";s:11:"deletedtext";s:72:""$1" wurde gelöscht.
+Im $2 finden Sie eine Liste der letzten Löschungen.";s:14:"deletedarticle";s:21:"[[$1]] wurde gelöscht";s:10:"dellogpage";s:13:"Lösch-Logbuch";s:14:"dellogpagetext";s:61:"Hier ist eine Liste der letzten Löschungen (UTC).
+<ul>
+</ul>
+";s:11:"deletionlog";s:13:"Lösch-Logbuch";s:8:"reverted";s:35:"Auf eine alte Version zurückgesetzt";s:13:"deletecomment";s:18:"Grund der Löschung";s:13:"imagereverted";s:51:"Das Bild wurde auf eine alte Version zurückgesetzt.";s:8:"rollback";s:26:"Zurücknahme der Änderungen";s:14:"rollback_short";s:8:"Rollback";s:12:"rollbacklink";s:8:"Rollback";s:14:"rollbackfailed";s:23:"Zurücknahme gescheitert";s:12:"cantrollback";s:80:"Die Änderung kann nicht zurückgenommen werden; der
+letzte Autor ist der einzige.";s:13:"alreadyrolled";s:259:"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]]
+([[Benutzer Diskussion:$3|Diskussion]])";s:11:"editcomment";s:40:"Der Änderungskommentar war: "<i>$1</i>".";s:10:"revertpage";s:80:"Änderungen von $2 rückgängig gemacht und letzte Version von $1 wiederhergestellt";s:14:"protectlogpage";s:20:"Seitenschutz-Logbuch";s:14:"protectlogtext";s:106:"Dies ist eine Liste der blockierten Seiten.
+Siehe [[Wikipedia:Geschützte Seiten]] für mehr Informationen.";s:16:"protectedarticle";s:15:"schützte [[$1]]";s:18:"unprotectedarticle";s:30:"hob den Schutz von [[$1]] auf.";s:10:"protectsub";s:18:"(Sperren von "$1")";s:18:"confirmprotecttext";s:43:"Soll diese Seite wirklich geschützt werden?";s:14:"confirmprotect";s:19:"Sperrung bestätigen";s:14:"protectcomment";s:18:"Grund der Sperrung";s:12:"unprotectsub";s:33:"(Aufhebung der Sperrung von "$1")";s:20:"confirmunprotecttext";s:55:"Wollen Sie wirklich die Sperrung dieser Seite aufheben?";s:16:"confirmunprotect";s:33:"Aufhebung der Sperrung bestätigen";s:16:"unprotectcomment";s:35:"Grund für das Aufheben der Sperrung";s:13:"protectreason";s:34:"(Bitte Grund der Sperrung angeben)";s:8:"undelete";s:32:"Gelöschte Seite wiederherstellen";s:12:"undeletepage";s:33:"Gelöschte Seiten wiederherstellen";s:16:"undeletepagetext";s:107:"Die folgenden Seiten wurden gelöscht, sind aber immer noch
+gespeichert und können wiederhergestellt werden.";s:15:"undeletearticle";s:35:"Gelöschten Artikel wiederherstellen";s:17:"undeleterevisions";s:23:"$1 Versionen archiviert";s:15:"undeletehistory";s:251:"Wenn Sie diese Seite wiederherstellen, werden auch alle alten
+Versionen wiederhergestellt. Wenn seit der Löschung ein neuer Artikel gleichen
+Namens erstellt wurde, werden die wiederhergestellten Versionen als alte Versionen
+dieses Artikels erscheinen.";s:16:"undeleterevision";s:24:"Gelöschte Version vom $1";s:11:"undeletebtn";s:17:"Wiederherstellen!";s:16:"undeletedarticle";s:30:"[[$1]] wurde wiederhergestellt";s:13:"undeletedtext";s:55:"Der Artikel [[$1]] wurde erfolgreich wiederhergestellt.";s:13:"contributions";s:16:"Benutzerbeiträge";s:9:"mycontris";s:15:"Eigene Beiträge";s:10:"contribsub";s:6:"Für $1";s:10:"nocontribs";s:56:"Es wurden keine Änderungen für diese Kriterien gefunden.";s:6:"ucnote";s:86:"Dies sind die letzten <b>$1</b> Beiträge des Benutzers in den letzten <b>$2</b> Tagen.";s:7:"uclinks";s:57:"Zeige die letzten $1 Beiträge; zeige die letzten $2 Tage.";s:5:"uctop";s:10:" (aktuell)";s:13:"notargettitle";s:22:"Kein Artikel angegeben";s:12:"notargettext";s:79:"Sie haben nicht angegeben, auf welche Seite Sie diese Funktion anwenden wollen.";s:11:"linklistsub";s:20:"(Liste der Verweise)";s:9:"linkshere";s:245:"<p>Die folgenden Seiten verweisen hierher:</p>
+<p><small><i>(Manche Seiten werden u.U. mehrfach gelistet, können in seltenen Fällen aber auch fehlen. Dies rührt von alten Fehlern in der Software her, ist aber ansonsten harmlos.)</i></small></p>";s:11:"nolinkshere";s:30:"Kein Artikel verweist hierher.";s:10:"isredirect";s:19:"Weiterleitungsseite";s:7:"blockip";s:21:"IP-Adresse blockieren";s:11:"blockiptext";s:371:"Benutzen Sie das Formular, um eine IP-Adresse oder einen Benutzer zu blockieren. Um einen angemeldeten Benutzer zu blockieren, tragen Sie einfach den Benutzernamen statts der IP-Adresse ein.
+Dies sollte nur erfolgen, um Vandalismus zu verhindern, in Übereinstimmung mit den [[Wikipedia:Leitlinien|Wikipedia-Leitlinien]].
+Bitte tragen Sie den Grund für die Blockade ein.";s:9:"ipaddress";s:10:"IP-Adresse";s:9:"ipbexpiry";s:10:"Ablaufzeit";s:9:"ipbreason";s:5:"Grund";s:9:"ipbsubmit";s:18:"Adresse blockieren";s:12:"badipaddress";s:39:"Die IP-Adresse hat ein falsches Format.";s:13:"noblockreason";s:48:"Sie müssen einen Grund für die Blockade angeben.";s:17:"blockipsuccesssub";s:20:"Blockade erfolgreich";s:18:"blockipsuccesstext";s:124:"Die IP-Adresse [[Benutzer:$1]] wurde blockiert.
+<br>Auf [[Spezial:Ipblocklist|IP block list]] ist eine Liste der Blockaden.";s:9:"unblockip";s:20:"IP-Adresse freigeben";s:13:"unblockiptext";s:69:"Benutzen Sie das Formular, um eine blockierte IP-Adresse freizugeben.";s:9:"ipusubmit";s:23:"Diese Adresse freigeben";s:10:"ipusuccess";s:33:"IP-Adresse "$1" wurde freigegeben";s:11:"ipblocklist";s:29:"Liste blockierter IP-Adressen";s:13:"blocklistline";s:36:"$1, $2 blockierte $3, gültig bis: $4";s:9:"blocklink";s:10:"blockieren";s:11:"unblocklink";s:9:"freigeben";s:12:"contribslink";s:8:"Beiträge";s:11:"autoblocker";s:91:"Automatische Blockierung, da Sie eine IP-Adresse benutzen mit [[Benutzer:$1]]. Grund: "$2".";s:12:"blocklogpage";s:25:"Benutzerblockaden-Logbuch";s:13:"blocklogentry";s:94:"blockiert [[Benutzer:$1]] - ([[Spezial:Contributions/$1|Beiträge]]) für einen Zeitraum von: $2";s:12:"blocklogtext";s:206:"Dies ist ein Log über Sperrungen und Entsperrungen von Benutzern. Automatisch geblockte IP-Adressen werden nicht erfasst. Siehe [[Spezial:Ipblocklist|IP block list]] für eine Liste der gesperrten Benutzern.";s:15:"unblocklogentry";s:39:"Blockade von [[Benutzer:$1]] aufgehoben";s:20:"range_block_disabled";s:67:"Die Möglichkeit, ganze Adressräume zu sperren, ist nicht aktiviert.";s:18:"ipb_expiry_invalid";s:20:"Ablaufzeit ungültig.";s:16:"ip_range_invalid";s:22:"Ungültiger IP-Bereich.";s:12:"proxyblocker";s:12:"Proxyblocker";s:16:"proxyblockreason";s:188:"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.";s:17:"proxyblocksuccess";s:8:"Fertig.
+";s:6:"lockdb";s:17:"Datenbank sperren";s:8:"unlockdb";s:19:"Datenbank freigeben";s:10:"lockdbtext";s:185:"Mit dem Sperren der Datenbank werden alle Änderungen an Benutzereinstellungen, Beobachtungslisten, Artikeln usw. verhindert. Bitte bestätigen Sie Ihre Absicht, die Datenbank zu sperren.";s:12:"unlockdbtext";s:131:"Das Aufheben der Datenbank-Sperre wird alle Änderungen wieder zulassen. Bitte bestätigen Sie Ihre Absicht, die Sperrung aufzuheben.";s:11:"lockconfirm";s:37:"Ja, ich möchte die Datenbank sperren.";s:13:"unlockconfirm";s:39:"Ja, ich möchte die Datenbank freigeben.";s:7:"lockbtn";s:17:"Datenbank sperren";s:9:"unlockbtn";s:19:"Datenbank freigeben";s:13:"locknoconfirm";s:46:"Sie haben das Bestätigungsfeld nicht markiert.";s:16:"lockdbsuccesssub";s:36:"Datenbank wurde erfolgreich gesperrt";s:18:"unlockdbsuccesssub";s:39:"Datenbank wurde erfolgreich freigegeben";s:17:"lockdbsuccesstext";s:124:"Die Wikipedia-Datenbank wurde gesperrt.
+<br>Bitte geben Sie die Datenbank wieder frei, sobald die Wartung abgeschlossen ist.";s:19:"unlockdbsuccesstext";s:42:"Die Wikipedia-Datenbank wurde freigegeben.";s:6:"asksql";s:11:"SQL-Abfrage";s:10:"asksqltext";s:219:"Benutzen Sie das Formular für eine direkte
+Datenbank-Abfrage. Verwenden Sie einzelne Hochkommata ('so'), um Text zu begrenzen.
+Bitte diese Funktion vorsichtig benutzen! Das abschließende ';' wird
+automatisch ergänzt.";s:11:"sqlislogged";s:67:"Bitte beachten Sie, dass alle SQL-Abfragen mitprotokolliert werden.";s:8:"sqlquery";s:16:"Abfrage eingeben";s:8:"querybtn";s:15:"Abfrage starten";s:10:"selectonly";s:71:"Andere Abfragen als "SELECT" können nur von Entwicklern benutzt werden.";s:15:"querysuccessful";s:19:"Abfrage erfolgreich";s:14:"makesysoptitle";s:29:"Administratorrechte verleihen";s:13:"makesysoptext";s:140:"Dieses Formular dient dazu, Benutzern Administratorrechte zu verleihen. Gib den Benutzernamen ins Textfeld ein und drücke den Submit-Button.";s:13:"makesysopname";s:19:"Name des Benutzers:";s:15:"makesysopsubmit";s:39:"Gib diesem Benutzer Administratorrechte";s:11:"makesysopok";s:44:"<b>Benutzer '$1' ist jetzt Administrator</b>";s:13:"makesysopfail";s:120:"<b>Dem Benutzer '$1' konnten keine Administratorrechte gewährt werden. Hast du den Benutzernamen korrekt eingegeben?</b>";s:17:"setbureaucratflag";s:28:"Setze Bürokraten Winkelement";s:13:"bureaucratlog";s:14:"Bureaucrat_log";s:18:"bureaucratlogentry";s:41:"Rechte für Benutzer "$1" auf "$2" gesetzt";s:6:"rights";s:7:"Rechte:";s:15:"set_user_rights";s:21:"Benutzerrechte setzen";s:15:"user_rights_set";s:43:"<b>Benutzerrechte für "$1" aktualisiert</b>";s:15:"set_rights_fail";s:102:"<b>Benutzerrechte für "$1" konnten nicht gesetzt werden. (Haben Sie den Namen korrekt eingegeben?)</b>";s:9:"makesysop";s:38:"Mache einen Benutzer zum Administrator";s:8:"movepage";s:19:"Artikel verschieben";s:12:"movepagetext";s:233:"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.";s:16:"movepagetalktext";s:338:"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 wählen die untenstehende Option ab
+
+In diesen Fällen müssen Sie die Seite, falls gewünscht, von Hand verschieben.";s:11:"movearticle";s:19:"Artikel verschieben";s:11:"movenologin";s:25:"Sie sind nicht angemeldet";s:15:"movenologintext";s:127:"Sie müssen ein registrierter Benutzer und
+<a href="/wiki/Special:Userlogin">angemeldet</a> sein,
+um eine Seite zu verschieben.";s:8:"newtitle";s:14:"Zu neuem Titel";s:11:"movepagebtn";s:19:"Artikel verschieben";s:12:"pagemovedsub";s:24:"Verschiebung erfolgreich";s:13:"pagemovedtext";s:196:"Artikel "[[$1]]" wurde nach "[[$2]]" verschoben.
+<small>Bitte verwenden Sie den Link 'Links auf diese Seite' der verschobenen Seite, um eventuell entstandene Redirect-Ketten zu erkennen.</small>";s:13:"articleexists";s:87:"Unter diesem Namen existiert bereits ein Artikel.
+Bitte wählen Sie einen anderen Namen.";s:10:"talkexists";s:169:"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.";s:7:"movedto";s:15:"verschoben nach";s:8:"movetalk";s:50:"Die Diskussionsseite mitverschieben, wenn möglich.";s:13:"talkpagemoved";s:48:"Die Diskussionsseite wurde ebenfalls verschoben.";s:16:"talkpagenotmoved";s:61:"Die Diskussionsseite wurde <strong>nicht</strong> verschoben.";s:9:"1movedto2";s:27:"$1 wurde nach $2 verschoben";s:6:"export";s:18:"Seiten exportieren";s:10:"exporttext";s:306:"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.
+
+Einfach die entsprechenden Artikeltitel in dieses Feld eintragen.";s:13:"exportcuronly";s:46:"Nur die aktuelle Version der Seite exportieren";s:11:"allmessages";s:24:"Alle MediaWiki-Meldungen";s:15:"allmessagestext";s:69:"Dies ist eine Liste aller möglichen Meldungen im MediaWiki-Namensraum";s:14:"thumbnail-more";s:10:"vergrößern";s:12:"missingimage";s:19:"Bild nicht gefunden";s:6:"import";s:18:"Seiten importieren";s:10:"importtext";s:127:"Bitte exportieren Sie die Seite vom Quellwiki mittels Spezial:Export und laden Sie die Datei dann über diese Seite wieder hoch.";s:12:"importfailed";s:25:"Import fehlgeschlagen: $1";s:12:"importnotext";s:19:"Leer oder kein Text";s:13:"importsuccess";s:19:"Import erfolgreich!";s:21:"importhistoryconflict";s:126:"Es existieren bereits ältere Versionen, die mit diesen kollidieren. (Möglicherweise wurde die Seite bereits vorher importiert)";s:16:"accesskey-search";s:1:"f";s:19:"accesskey-minoredit";s:1:"i";s:14:"accesskey-save";s:1:"s";s:17:"accesskey-preview";s:1:"p";s:33:"accesskey-compareselectedversions";s:1:"v";s:14:"tooltip-search";s:14:"Suchen [alt-f]";s:17:"tooltip-minoredit";s:43:"Diese Änderung als klein markieren. [alt-i]";s:12:"tooltip-save";s:28:"Änderungen speichern [alt-s]";s:15:"tooltip-preview";s:85:"Vorschau der Änderungen an dieser Seite. Benutzen Sie dies vor dem Speichern! [alt-p]";s:31:"tooltip-compareselectedversions";s:83:"Unterschiede zwischen zwei ausgewählten Versionen dieser Seite vergleichen. [alt-v]";s:12:"Monobook.css";s:97:"/*Großbuchstaben*/
+
+.portlet h5,.portlet h6,#p-personal ul,#p-cactions li a{text-transform:none;}";s:12:"nodublincore";s:61:"Dublin-Core-RDF-Metadaten sind für diesen Server deaktiviert.";s:17:"nocreativecommons";s:66:"Creative-Commons-RDF-Metadaten sind für diesen Server deaktiviert.";s:13:"notacceptable";s:70:"Der Wiki-Server kann die Daten für Ihr Ausgabegerät nicht aufbereiten.";s:9:"anonymous";s:33:"Anonyme(r) Benutzer der Wikipedia";s:8:"siteuser";s:21:"Wikipedia-Benutzer $1";s:14:"lastmodifiedby";s:48:"Diese Seite wurde zuletzt geändert um $1 von $2.";s:3:"and";s:3:"und";s:13:"othercontribs";s:30:"Basiert auf der Arbeit von $1.";s:9:"siteusers";s:21:"Wikipedia-Benutzer $1";s:19:"spamprotectiontitle";s:16:"Spamschutzfilter";s:18:"spamprotectiontext";s:214:"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:";s:16:"subcategorycount";s:39:"Diese Kategorie hat $1 Unterkategorien.";s:20:"categoryarticlecount";s:39:"Dieser Kategorie gehören $1 Artikel an.";s:18:"usenewcategorypage";s:70:"1
+
+Set first character to "0" to disable the new category page layout.";s:11:"Monobook.js";s:3693:"/* tooltips and access keys */ ta = new Object(); ta['pt-userpage'] = new Array('.','meine Benutzerseite'); ta['pt-anonuserpage'] = new Array('.','The user page for the ip you\'re editing as'); ta['pt-mytalk'] = new Array('n','meine Diskussionsseite'); ta['pt-anontalk'] = new Array('n','Diskussion über Beiträge dieser IP-Adresse'); ta['pt-preferences'] = new Array('','meine Einstellungen'); ta['pt-watchlist'] = new Array('l','Die Liste der beobachteten Seiten.'); ta['pt-mycontris'] = new Array('y','Liste meiner Beiträge'); ta['pt-login'] = new Array('o','Sich einzuloggen wird zwar gerne gesehen, ist aber keine Pflicht.'); ta['pt-anonlogin'] = new Array('o','Sich einzuloggen wird zwar gerne gesehen, ist aber keine Pflicht.'); ta['pt-logout'] = new Array('o','Ausloggen'); ta['ca-article'] = new Array('a','Artikel ansehen'); ta['ca-talk'] = new Array('t','Diskussion zum Artikelinhalt'); ta['ca-edit'] = new Array('e','Du kannst diese Seite bearbeiten. Bitte benutze die Vorschau vor dem Speichern.'); ta['ca-addsection'] = new Array('+','Füge dieser Diskussion einen Kommentar zu.'); ta['ca-viewsource'] = new Array('e','Dies Seite ist geschützt. Du Kannst den Quelltext betrachten.'); ta['ca-history'] = new Array('h','Frühere Versionen dieser Seite.'); ta['ca-protect'] = new Array('=','Seite beschützen'); ta['ca-delete'] = new Array('d','entsorge diese Seite'); ta['ca-undelete'] = new Array('d','schwupps, da isses wieder'); ta['ca-move'] = new Array('m','durchs Verschieben wird die Seite umbenannt'); ta['ca-nomove'] = new Array('','Du darfst diese Seite nicht verschieben'); ta['ca-watch'] = new Array('w','Füge diese Seite Deiner Beobachtungsliste hinzu'); ta['ca-unwatch'] = new Array('w','Entferne diese Seite von Deiner Beobachtungsliste'); ta['search'] = new Array('f','Durchsuche dieses Wiki'); ta['p-logo'] = new Array('','Hauptseite'); ta['n-mainpage'] = new Array('z','Besuche die Hauptseite'); ta['n-portal'] = new Array('','Über das Projekt, was Du tun kanns, wo was zu finden ist'); ta['n-currentevents'] = new Array('','Finde Hintergrundinformationen über aktuelle Ereignisse'); ta['n-recentchanges'] = new Array('r','Die Liste der letzten Änderungen in diesem Wiki.'); ta['n-randompage'] = new Array('x','Lade ein zufällige Seite'); ta['n-help'] = new Array('','Der Ort zum Herausfinden.'); ta['n-sitesupport'] = new Array('','Unterstütze uns'); ta['t-whatlinkshere'] = new Array('j','Liste alller Wikipediaseiten, die hierher zeigen'); ta['t-recentchangeslinked'] = new Array('k','Letzte Änderungen der Seiten die von hier verlinkt sind'); ta['feed-rss'] = new Array('','RSS-Feed für diese Seite'); ta['feed-atom'] = new Array('','Atom-Feed für diese Seite'); ta['t-contributions'] = new Array('','Betrachte die Liste der Beiträge dieses Benutzers'); ta['t-emailuser'] = new Array('','Sende diesem Benutzer eine E-Mail'); ta['t-upload'] = new Array('u','Lade Bilder oder Mediadateien hoch'); ta['t-specialpages'] = new Array('q','Liste aller Spezialseiten'); ta['ca-nstab-main'] = new Array('c','Betrachte Artikelinhalt'); ta['ca-nstab-user'] = new Array('c','Betrachte Benutzerseite'); ta['ca-nstab-media'] = new Array('c','Betrachte Mediaseite'); ta['ca-nstab-special'] = new Array('','Dies ist eine Spezialseite, sie kann nicht bearbeitet werden.'); ta['ca-nstab-wp'] = new Array('a','Betrachte die Projektseite'); ta['ca-nstab-image'] = new Array('c','Betrachte die Bildseite'); ta['ca-nstab-mediawiki'] = new Array('c','Betrachte die Systemmeldung'); ta['ca-nstab-template'] = new Array('c','Betrachte die Vorlage'); ta['ca-nstab-help'] = new Array('c','Betrachte die Hilfsseite'); ta['ca-nstab-category'] = new Array('c','Betrachte die Kategorienseite');";} \ No newline at end of file
diff --git a/languages/wikipedia/en.lang b/languages/wikipedia/en.lang
new file mode 100644
index 000000000000..2a9d99aaf2f8
--- /dev/null
+++ b/languages/wikipedia/en.lang
@@ -0,0 +1,372 @@
+MediaWiki 1.3.0beta3 language file
+a:699:{s:10:"categories";s:10:"Categories";s:8:"category";s:8:"category";s:15:"category_header";s:25:"Articles in category "$1"";s:13:"subcategories";s:13:"Subcategories";s:9:"linktrail";s:18:"/^([a-z]+)(.*)$/sD";s:8:"mainpage";s:9:"Main Page";s:12:"mainpagetext";s:37:"Wiki software successfully installed.";s:17:"mainpagedocfooter";s:214:"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.";s:6:"portal";s:16:"Community portal";s:10:"portal-url";s:26:"Wikipedia:Community Portal";s:5:"about";s:5:"About";s:14:"aboutwikipedia";s:18:"About {{SITENAME}}";s:9:"aboutpage";s:14:"{{ns:4}}:About";s:7:"article";s:12:"Content page";s:4:"help";s:4:"Help";s:8:"helppage";s:13:"Help:Contents";s:15:"wikititlesuffix";s:32:"Wikipedia, the free encyclopedia";s:10:"bugreports";s:10:"Contact us";s:14:"bugreportspage";s:20:"Wikipedia:Contact_us";s:11:"sitesupport";s:9:"Donations";s:3:"faq";s:3:"FAQ";s:7:"faqpage";s:18:"{{ns:project}}:FAQ";s:8:"edithelp";s:12:"Editing help";s:9:"newwindow";s:21:"(opens in new window)";s:12:"edithelppage";s:33:"{{ns:project}}:How_to_edit_a_page";s:6:"cancel";s:6:"Cancel";s:6:"qbfind";s:4:"Find";s:8:"qbbrowse";s:6:"Browse";s:6:"qbedit";s:4:"Edit";s:13:"qbpageoptions";s:9:"This page";s:10:"qbpageinfo";s:7:"Context";s:11:"qbmyoptions";s:8:"My pages";s:14:"qbspecialpages";s:13:"Special pages";s:13:"moredotdotdot";s:7:"More...";s:6:"mypage";s:7:"My page";s:6:"mytalk";s:7:"My talk";s:8:"anontalk";s:16:"Talk for this IP";s:10:"navigation";s:10:"Navigation";s:13:"currentevents";s:14:"Current events";s:11:"disclaimers";s:11:"Disclaimers";s:14:"disclaimerpage";s:28:"Wikipedia:General_disclaimer";s:14:"errorpagetitle";s:5:"Error";s:8:"returnto";s:13:"Return to $1.";s:13:"fromwikipedia";s:56:"<small>From {{SITENAME}}, the free encyclopedia.</small>";s:13:"whatlinkshere";s:15:"What links here";s:6:"search";s:6:"Search";s:2:"go";s:2:"Go";s:7:"history";s:12:"Page history";s:13:"history_short";s:7:"History";s:16:"printableversion";s:17:"Printable version";s:4:"edit";s:4:"Edit";s:12:"editthispage";s:14:"Edit this page";s:6:"delete";s:6:"Delete";s:14:"deletethispage";s:16:"Delete this page";s:14:"undelete_short";s:8:"Undelete";s:7:"protect";s:7:"Protect";s:15:"protectthispage";s:17:"Protect this page";s:9:"unprotect";s:9:"Unprotect";s:17:"unprotectthispage";s:17:"Remove protection";s:7:"newpage";s:8:"New page";s:8:"talkpage";s:17:"Discuss this page";s:11:"specialpage";s:12:"Special Page";s:13:"personaltools";s:14:"Personal tools";s:11:"postcomment";s:14:"Post a comment";s:10:"addsection";s:1:"+";s:11:"articlepage";s:12:"View article";s:11:"subjectpage";s:12:"View subject";s:4:"talk";s:10:"Discussion";s:7:"toolbox";s:7:"Toolbox";s:8:"userpage";s:14:"View user page";s:13:"wikipediapage";s:17:"View project page";s:9:"imagepage";s:15:"View image page";s:12:"viewtalkpage";s:15:"&lt; Discussion";s:14:"otherlanguages";s:15:"Other languages";s:14:"redirectedfrom";s:20:"(Redirected from $1)";s:12:"lastmodified";s:31:"This page was last modified $1.";s:9:"viewcount";s:37:"This page has been accessed $1 times.";s:9:"copyright";s:282:"All text is available under the terms of the <a class='internal' href="{{localurle:Wikipedia:Text_of_the_GNU_Free_Documentation_License}}">GNU Free Documentation License</a> (see <b><a class='internal' href="{{localurle:Wikipedia:Copyrights}}">Copyrights</a></b> for details).<br />";s:9:"poweredby";s:90:"Wikipedia is powered by [http://www.mediawiki.org/ MediaWiki], an open source wiki engine.";s:13:"printsubtitle";s:17:"(From {{SERVER}})";s:13:"protectedpage";s:73:"<a href='{{localurle:Project:This_page_is_protected}}'>Protected page</a>";s:14:"administrators";s:23:"{{ns:4}}:Administrators";s:10:"sysoptitle";s:21:"Sysop access required";s:9:"sysoptext";s:95:"The action you have requested can only be
+performed by users with "sysop" capability.
+See $1.";s:14:"developertitle";s:25:"Developer access required";s:13:"developertext";s:99:"The action you have requested can only be
+performed by users with "developer" capability.
+See $1.";s:15:"bureaucrattitle";s:26:"Bureaucrat access required";s:14:"bureaucrattext";s:88:"The action you have requested can only be
+performed by sysops with "bureaucrat" status.";s:6:"nbytes";s:8:"$1 bytes";s:2:"ok";s:2:"OK";s:9:"sitetitle";s:9:"Wikipedia";s:9:"pagetitle";s:14:"$1 - Wikipedia";s:12:"sitesubtitle";s:21:"The Free Encyclopedia";s:13:"retrievedfrom";s:19:"Retrieved from "$1"";s:11:"newmessages";s:12:"You have $1.";s:15:"newmessageslink";s:12:"new messages";s:11:"editsection";s:4:"edit";s:3:"toc";s:17:"Table of contents";s:7:"showtoc";s:4:"show";s:7:"hidetoc";s:4:"hide";s:13:"thisisdeleted";s:19:"View or restore $1?";s:11:"restorelink";s:16:"$1 deleted edits";s:9:"feedlinks";s:5:"Feed:";s:10:"nstab-main";s:7:"Article";s:10:"nstab-user";s:9:"User page";s:11:"nstab-media";s:10:"Media page";s:13:"nstab-special";s:12:"Special page";s:8:"nstab-wp";s:12:"Project page";s:11:"nstab-image";s:5:"Image";s:15:"nstab-mediawiki";s:14:"MediaWiki page";s:14:"nstab-template";s:8:"Template";s:10:"nstab-help";s:4:"Help";s:14:"nstab-category";s:8:"Category";s:12:"nosuchaction";s:14:"No such action";s:16:"nosuchactiontext";s:61:"The action specified by the URL is not
+recognized by the wiki";s:17:"nosuchspecialpage";s:20:"No such special page";s:17:"nospecialpagetext";s:69:"You have requested a special page that is not
+recognized by the wiki.";s:5:"error";s:5:"Error";s:13:"databaseerror";s:14:"Database error";s:11:"dberrortext";s:296:"A database query syntax error has occurred.
+This could be because of an illegal search query (see $5),
+or it may indicate a bug in the software.
+The last attempted database query was:
+<blockquote><tt>$1</tt></blockquote>
+from within function "<tt>$2</tt>".
+MySQL returned error "<tt>$3: $4</tt>".";s:13:"dberrortextcl";s:146:"A database query syntax error has occurred.
+The last attempted database query was:
+"$1"
+from within function "$2".
+MySQL returned error "$3: $4".
+";s:9:"noconnect";s:455:"Wikipedia is currently experiencing technical difficulties, and is unable to contact the database server. Please try again later. We apologise for the inconvenience.<br><br>Editors may use <a href="http://openfacts.berlios.de/index-en.phtml?title=Wikipedia_Status"><b>OpenFacts</b></a> as a backup wiki. There is also an active <a href="http://en.wikipedia.org/wiki/Internet_Relay_Chat">IRC</a> channel on <b>irc.freenode.net</b> called <b>#wikipedia</b>.";s:4:"nodb";s:28:"Could not select database $1";s:11:"cachederror";s:80:"The following is a cached copy of the requested page, and may not be up to date.";s:8:"readonly";s:15:"Database locked";s:15:"enterlockreason";s:84:"Enter a reason for the lock, including an estimate
+of when the lock will be released";s:12:"readonlytext";s:218:"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:
+<p>$1";s:14:"missingarticle";s:324:"The database did not find the text of a page
+that it should have found, named "$1".
+
+<p>This is usually caused by following an outdated diff or history link to a
+page that has been deleted.
+
+<p>If this is not the case, you may have found a bug in the software.
+Please report this to an administrator, making note of the URL.";s:13:"internalerror";s:14:"Internal error";s:13:"filecopyerror";s:33:"Could not copy file "$1" to "$2".";s:15:"filerenameerror";s:35:"Could not rename file "$1" to "$2".";s:15:"filedeleteerror";s:27:"Could not delete file "$1".";s:12:"filenotfound";s:25:"Could not find file "$1".";s:10:"unexpected";s:28:"Unexpected value: "$1"="$2".";s:9:"formerror";s:28:"Error: could not submit form";s:15:"badarticleerror";s:45:"This action cannot be performed on this page.";s:12:"cannotdelete";s:97:"Could not delete the page or image specified. (It may have already been deleted by someone else.)";s:8:"badtitle";s:9:"Bad title";s:12:"badtitletext";s:105:"The requested page title was invalid, empty, or
+an incorrectly linked inter-language or inter-wiki title.";s:12:"perfdisabled";s:127:"Sorry! This feature has been temporarily disabled
+because it slows the database down to the point that no one can use
+the wiki.";s:15:"perfdisabledsub";s:28:"Here's a saved copy from $1:";s:10:"perfcached";s:66:"The following data is cached and may not be completely up to date:";s:20:"wrong_wfQuery_params";s:69:"Incorrect parameters to wfQuery()<br />
+Function: $1<br />
+Query: $2
+";s:10:"viewsource";s:11:"View source";s:13:"protectedtext";s:196:"This page has been locked to prevent editing. There are
+a number of reasons why this may be so; please see
+[[Wikipedia:This page is protected]].
+
+You can view and copy the source of this page:";s:18:"seriousxhtmlerrors";s:56:"There were serious xhtml markup errors detected by tidy.";s:11:"logouttitle";s:11:"User logout";s:10:"logouttext";s:251:"You are now logged out.
+This computer may be used to browse and edit Wikipedia without a user name, or for another user to log on. Note that some pages may
+continue to be displayed as if you were still logged in, until you clear
+your browser cache.";s:15:"welcomecreation";s:105:"<h2>Welcome, $1!</h2><p>Your account has been created.
+Don't forget to change your Wikipedia preferences.";s:14:"loginpagetitle";s:10:"User login";s:8:"yourname";s:13:"Your username";s:12:"yourpassword";s:13:"Your password";s:17:"yourpasswordagain";s:15:"Retype password";s:12:"newusersonly";s:17:" (new users only)";s:18:"remembermypassword";s:37:"Remember my password across sessions.";s:12:"loginproblem";s:71:"<b>There has been a problem with your login.</b><br />Please try again.";s:15:"alreadyloggedin";s:72:"<font color=red><b>User $1, you are already logged in! </b></font><br />";s:5:"login";s:6:"Log in";s:11:"loginprompt";s:182:"<b>Not a registered user yet?</b> A free account gives you many <a href="{{localurle:Wikipedia:Why_create_an_account?}}">benefits</a>, and registering below takes only a few seconds.";s:9:"userlogin";s:6:"Log in";s:6:"logout";s:7:"Log out";s:10:"userlogout";s:7:"Log out";s:11:"notloggedin";s:13:"Not logged in";s:13:"createaccount";s:18:"Create new account";s:17:"createaccountmail";s:8:"by email";s:9:"badretype";s:39:"The passwords you entered do not match.";s:10:"userexists";s:76:"The user name you entered is already in use. Please choose a different name.";s:9:"youremail";s:23:"Your e-mail (optional)*";s:12:"yourrealname";s:15:"Your real name*";s:8:"yournick";s:30:"Your nickname (for signatures)";s:12:"emailforlost";s:6:"&nbsp;";s:19:"prefs-help-userdata";s:208:"* <strong>Email</strong> (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.";s:10:"loginerror";s:11:"Login error";s:12:"nocookiesnew";s:192:"The user account was created, but you are not logged in. Wikipedia uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.";s:14:"nocookieslogin";s:100:"Wikipedia uses cookies to log in users. You have cookies disabled. Please enable them and try again.";s:6:"noname";s:41:"You have not specified a valid user name.";s:17:"loginsuccesstitle";s:16:"Login successful";s:12:"loginsuccess";s:43:"You are now logged in to Wikipedia as "$1".";s:10:"nosuchuser";s:107:"There is no user by the name "$1".
+Check your spelling, or use the form below to create a new user account.";s:13:"wrongpassword";s:56:"The password you entered is incorrect. Please try again.";s:14:"mailmypassword";s:22:"Mail me a new password";s:21:"passwordremindertitle";s:32:"Password reminder from Wikipedia";s:20:"passwordremindertext";s:189:"Someone (probably you, from IP address $1)
+requested that we send you a new Wikipedia login password.
+The password for user "$2" is now "$3".
+You should log in and change your password now.";s:7:"noemail";s:50:"There is no e-mail address recorded for user "$1".";s:12:"passwordsent";s:113:"A new password has been sent to the e-mail address
+registered for "$1".
+Please log in again after you receive it.";s:8:"loginend";s:991:"To register, just select a <a href="{{localurle:Wikipedia:Username}}">username</a> and password and click "Create new account". Avoid choosing a username that is the name of a politician, military or religious figure or event. Avoid usernames that are offensive, inflammatory or confusing. Please pick a readable name, not just a number. Usernames on the English Wikipedia must start with an initial capital letter.
+
+
+If you need more information about logging in, see the <a href="{{localurle:Wikipedia:How_to_log_in}}">How to log in</a> article.<br /><br />
+
+Returning users only need to fill in their username and password.<br /><br />
+
+You must have <a href="{{localurle:HTTP_cookie}}">cookies</a> enabled to log in to Wikipedia.<br /><br />
+
+*Entering an email address is optional, and no email confirmation is required. But it enables people to contact you through the website without you having to reveal your email address to them, and it also helps you if you forget your password.";s:9:"mailerror";s:22:"Error sending mail: $1";s:11:"bold_sample";s:9:"Bold text";s:8:"bold_tip";s:9:"Bold text";s:13:"italic_sample";s:11:"Italic text";s:10:"italic_tip";s:11:"Italic text";s:11:"link_sample";s:10:"Link title";s:8:"link_tip";s:13:"Internal link";s:14:"extlink_sample";s:33:"http://www.example.com link title";s:11:"extlink_tip";s:39:"External link (remember http:// prefix)";s:15:"headline_sample";s:13:"Headline text";s:12:"headline_tip";s:16:"Level 2 headline";s:11:"math_sample";s:19:"Insert formula here";s:8:"math_tip";s:28:"Mathematical formula (LaTeX)";s:13:"nowiki_sample";s:30:"Insert non-formatted text here";s:10:"nowiki_tip";s:22:"Ignore wiki formatting";s:12:"image_sample";s:11:"Example.jpg";s:9:"image_tip";s:14:"Embedded image";s:12:"media_sample";s:11:"Example.ogg";s:9:"media_tip";s:15:"Media file link";s:7:"sig_tip";s:29:"Your signature with timestamp";s:6:"hr_tip";s:31:"Horizontal line (use sparingly)";s:7:"infobox";s:37:"Click a button to get an example text";s:13:"infobox_alert";s:135:"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";s:7:"summary";s:135:"<a href="{{localurle:project:Edit_summary}}" class='internal' title="Briefly describe the changes you have made here">Edit summary</a>";s:7:"subject";s:16:"Subject/headline";s:9:"minoredit";s:20:"This is a minor edit";s:9:"watchthis";s:15:"Watch this page";s:11:"savearticle";s:9:"Save page";s:7:"preview";s:7:"Preview";s:11:"showpreview";s:12:"Show preview";s:12:"blockedtitle";s:15:"User is blocked";s:11:"blockedtext";s:2380:"You have attempted to edit a page, either by clicking the "Edit" tab or by following a red link.
+
+Your user name or IP address has been [[{{ns:Project}}:Blocking policy|blocked]] by $1.
+The reason given is this:<br/>''$2''<p>You can [[{{ns:special}}:emailuser/$4|email $4]] or one of the other
+[[{{ns:Project}}:list of administrators|administrators]] to discuss the block. If you believe that our [[{{ns:Project}}:Blocking policy|blocking policy]] was violated, you may discuss the block publicly on the [http://mail.wikipedia.org/mailman/listinfo/wikien-l WikiEN-L mailing list].
+
+Note that you may not use the "email this user" feature unless you have a Wikipedia account and a valid email address registered in your [[{{ns:Special}}:Preferences|user preferences]].
+
+Your IP address is $3. Please include this address in any queries you make.
+
+If you need to see the wiki text of an article, you may wish to use the [[{{ns:Special}}:Export|Export pages]] feature.
+
+==Innocent?==
+
+Sometimes IP ranges or shared proxies are blocked from editing Wikipedia. This means that lots of innocent people can't edit. If this is the case, it should be explained in the reason given above.
+
+Also, some individual dynamic IP addresses may be blocked, usually for a 24 hour period. Occasionally, users with dynamic IPs will be blocked accidentally, due to that fact that their present IP was previously used by a blocked user.
+
+We apologise for any inconvenience this may cause. If this problem affects you repeatedly, and you would like to help us resolve this issue, you will need to contact a [[{{ns:project}}:administrator|Wikipedia administrator]] and your [[internet service provider]] (ISP). The administrator should be able to obtain the time, date, and IP address used for the inappropriate behaviour in question, and describe what the problem was. You can then pass this information on to your ISP, explaining that you are unable to edit Wikipedia due to the inappropriate actions of another person using this ISP, and ask them to remedy the problem.
+
+==Just reading?==
+You are not blocked from reading pages, only from editing them. If you were only intending to read a page and are seeing this message, you probably followed a red link. These are links to pages that do not exist, so they take users to an editing screen. You should have no problem if you follow only blue links.";s:18:"whitelistedittitle";s:22:"Login required to edit";s:17:"whitelistedittext";s:61:"You have to [[{{ns:Special}}:Userlogin|login]] to edit pages.";s:18:"whitelistreadtitle";s:22:"Login required to read";s:17:"whitelistreadtext";s:61:"You have to [[{{ns:Special}}:Userlogin|login]] to read pages.";s:17:"whitelistacctitle";s:40:"You are not allowed to create an account";s:16:"whitelistacctext";s:124:"To be allowed to create accounts in this Wiki you have to [[Special:Userlogin|log]] in and have the appropriate permissions.";s:13:"loginreqtitle";s:14:"Login Required";s:12:"loginreqtext";s:64:"You must [[{{ns:special}}:Userlogin|login]] to view other pages.";s:12:"accmailtitle";s:14:"Password sent.";s:11:"accmailtext";s:42:"The Password for '$1' has been sent to $2.";s:10:"newarticle";s:5:"(New)";s:14:"newarticletext";s:693:"<div style="font-size:small;color:#003333;border-width:1px;border-style:solid;border-color:#aaaaaa;padding:3px">
+You are at a page that does not exist yet. To create an article on this topic, type in the box below (see the '''[[Wikipedia:Help|help page]]''' and '''[[Wikipedia:Your first article|your first article guide]]''' for more info). '''Please do not''' create an article about yourself, or an article to promote a product or business, as it would be in '''serious violation''' of [[Wikipedia:Policy|Wikipedia's policies]] and removed without notice. Your addition to the encyclopedia will be visible immediately, so please '''only test in the [[wikipedia:sandbox|sandbox]]'''.
+</div>";s:12:"talkpagetext";s:31:"<!-- MediaWiki:talkpagetext -->";s:16:"anontalkpagetext";s:450:"----''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 [[{{ns:Special}}:Userlogin|create an account or log in]] to avoid future confusion with other anonymous users.''";s:13:"noarticletext";s:106:"(Wikipedia does not have an article on this topic yet. To start the article, click <b>Edit this page</b>.)";s:14:"clearyourcache";s:214:"'''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''.";s:22:"usercssjsyoucanpreview";s:90:"<strong>Tip:</strong> Use the 'Show preview' button to test your new css/js before saving.";s:14:"usercsspreview";s:85:"'''Remember that you are only previewing your user CSS, it has not yet been saved!'''";s:13:"userjspreview";s:100:"'''Remember that you are only testing/previewing your user javascript, it has not yet been saved!'''";s:7:"updated";s:9:"(Updated)";s:4:"note";s:23:"<strong>Note:</strong> ";s:11:"previewnote";s:65:"Remember that this is only a preview, and has not yet been saved!";s:15:"previewconflict";s:102:"This preview reflects the text in the upper
+text editing area as it will appear if you choose to save.";s:7:"editing";s:10:"Editing $1";s:11:"sectionedit";s:10:" (section)";s:11:"commentedit";s:10:" (comment)";s:12:"editconflict";s:17:"Edit conflict: $1";s:15:"explainconflict";s:328:"Someone else has changed this page since you
+started editing it.
+The upper text area contains the page text as it currently exists.
+Your changes are shown in the lower text area.
+You will have to merge your changes into the existing text.
+<b>Only</b> the text in the upper text area will be saved when you
+press "Save page".
+<p>";s:8:"yourtext";s:9:"Your text";s:13:"storedversion";s:14:"Stored version";s:10:"editingold";s:147:"<strong>WARNING: You are editing an out-of-date
+revision of this page.
+If you save it, any changes made since this revision will be lost.</strong>
+";s:8:"yourdiff";s:11:"Differences";s:16:"copyrightwarning";s:495:"All contributions to Wikipedia are released under the GNU Free Documentation License (see $1 for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it. <br />
+By submitting your work you promise you wrote it yourself, or copied it from <a href="{{localurle:Public_domain}}">public domain</a> resources &#8212; this does <strong>not</strong> include most web pages. <strong>DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!</strong>";s:15:"longpagewarning";s:361:"<div style="border-width:1px;border-style:solid;border-color:#aaaaaa;padding:3px">
+WARNING: <a href="{{localurle:Wikipedia:Page_size}}">This page is $1 kilobytes long</a>; some
+browsers may have problems editing pages approaching or longer than 32 kB.
+Please consider breaking the page into smaller <a href="{{localurle:Wikipedia:Section}}">sections</a>.
+</div>";s:15:"readonlywarning";s:185:"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.";s:20:"protectedpagewarning";s:200:"WARNING: This page has been locked so that only
+users with sysop privileges can edit it. Be sure you are following the
+<a href="{{localurle:Project:Protection_policy}}">protected page
+guidelines</a>.";s:10:"revhistory";s:16:"Revision history";s:9:"nohistory";s:39:"There is no edit history for this page.";s:11:"revnotfound";s:18:"Revision not found";s:15:"revnotfoundtext";s:114:"The old revision of the page you asked for could not be found.
+Please check the URL you used to access this page.
+";s:8:"loadhist";s:20:"Loading page history";s:10:"currentrev";s:16:"Current revision";s:12:"revisionasof";s:17:"Revision as of $1";s:3:"cur";s:3:"cur";s:4:"next";s:4:"next";s:4:"last";s:4:"last";s:4:"orig";s:4:"orig";s:10:"histlegend";s:115:"Legend: (cur) = difference with current version,
+(last) = difference with preceding version, <b>m</b> = minor edit";s:10:"difference";s:30:"(Difference between revisions)";s:10:"loadingrev";s:25:"loading revision for diff";s:6:"lineno";s:8:"Line $1:";s:11:"editcurrent";s:37:"Edit the current version of this page";s:25:"selectnewerversionfordiff";s:37:"Select a newer version for comparison";s:25:"selectolderversionfordiff";s:38:"Select an older version for comparison";s:23:"compareselectedversions";s:25:"Compare selected versions";s:13:"searchresults";s:14:"Search results";s:14:"searchhelppage";s:19:"Wikipedia:Searching";s:18:"searchingwikipedia";s:19:"Searching Wikipedia";s:16:"searchresulttext";s:58:"For more information about searching {{SITENAME}}, see $1.";s:11:"searchquery";s:14:"For query "$1"";s:8:"badquery";s:25:"Badly formed search query";s:12:"badquerytext";s:273:"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.";s:11:"matchtotals";s:63:"The query "$1" matched $2 page titles
+and the text of $3 pages.";s:9:"nogomatch";s:68:"No page with this exact title exists; trying to find similar titles.";s:12:"titlematches";s:21:"Article title matches";s:14:"notitlematches";s:156:"No article title matches. Try the Google or Yahoo! searches below for a full-text search. Note that their caches of Wikipedia content may not be up-to-date.";s:11:"textmatches";s:17:"Page text matches";s:13:"notextmatches";s:20:"No page text matches";s:5:"prevn";s:11:"previous $1";s:5:"nextn";s:7:"next $1";s:12:"viewprevnext";s:20:"View ($1) ($2) ($3).";s:14:"showingresults";s:57:"Showing below <b>$1</b> results starting with #<b>$2</b>.";s:17:"showingresultsnum";s:57:"Showing below <b>$3</b> results starting with #<b>$2</b>.";s:9:"nonefound";s:256:"<strong>Note</strong>: unsuccessful searches are
+often caused by searching for common words like "have" and "from",
+which are not indexed, or by specifying more than one search term (only pages
+containing all of the search terms will appear in the result).";s:11:"powersearch";s:6:"Search";s:15:"powersearchtext";s:80:"
+Search in namespaces :<br />
+$1<br />
+$2 List redirects &nbsp; Search for $3 $9";s:14:"searchdisabled";s:205:"<p>Sorry! Full text search has been disabled for performance reasons. In the meantime, you can use the Google or Yahoo! searches below. Note that their copies of Wikipedia content may be out of date.</p>";s:12:"googlesearch";s:2050:"<p>
+<table border="0" class="plainlinks">
+
+<!-- SiteSearch Google -->
+<tr><td valign="top" align="center">
+<a href="http://www.google.com/">
+<img src="http://www.google.com/logos/Logo_40wht.gif" border="0" alt="Google" title="Google">
+</a>
+</td>
+<td width="100%">
+<form method=get action="http://www.google.com/search">
+<input type="text" name="q" size=31 maxlength=255 value="$1">
+<input type="submit" name="btnG" value="Google Search">
+<input type="hidden" name="domains" value="http://en.wikipedia.org">
+<input type="hidden" name="ie" value="$2">
+<input type="hidden" name="oe" value="$2">
+<br>
+<font size=-1>
+<input type="radio" name="sitesearch" id="gWWW" value=""><label for="gWWW">WWW</label>
+<input type="radio" name="sitesearch" id="gwiki" value="{{SERVER}}" checked><label for="gwiki">{{SERVER}}</label>
+</font>
+</form>
+</td></tr>
+<!-- SiteSearch Google -->
+
+<!-- Spacing -->
+<tr><td colspan=2>&nbsp;</td></tr>
+<!-- Spacing -->
+
+<!-- Yahoo! search -->
+<tr><td valign="top" align="center">
+<a href="http://search.yahoo.com/">
+<img src="http://us.i1.yimg.com/us.yimg.com/i/us/search/ysan/ysanlogo.gif" border="0" alt="Yahoo!" title="Yahoo!" vspace="5">
+</a>
+</td>
+<td width="100%">
+<form method=get action="http://search.yahoo.com/search">
+<input type="hidden" name="x" value="op">
+<input type="hidden" name="va_vt" value="any">
+<input type="text" name="va" size="31" value="$1">
+<input type="submit" value="Yahoo! Search">
+<br>
+<font size=-1>
+<input type="radio" name="vs" id="yWWW" value=""><label for="yWWW">WWW</label>
+<input type="radio" name="vs" id="ywiki" value="{{SERVER}}" checked><label for="ywiki">{{SERVER}}</label>
+</font>
+</form>
+</td></tr>
+<!-- Yahoo! search -->
+
+</table>
+
+You may use the following link to create an article of this title if it doesn't exist or edit it if it exists: <a class="new" href="/w/wiki.phtml?title=$1&action=edit">$1</a>
+<br><br>
+<b>Note</b>: We recommend that you search Wikipedia before creating a new article to avoid duplicating an existing one, which may be under a different name or spelling.";s:14:"blanknamespace";s:6:"(Main)";s:11:"preferences";s:11:"Preferences";s:12:"prefsnologin";s:13:"Not logged in";s:16:"prefsnologintext";s:92:"You must be <a href="{{localurle:Special:Userlogin}}">logged in</a>
+to set user preferences.";s:14:"prefslogintext";s:193:"You are logged in as "$1".
+Your internal ID number is $2.
+
+See [[m:MediaWiki User's Guide: Setting preferences|MediaWiki User's Guide: Setting preferences]] for help deciphering the options.";s:10:"prefsreset";s:41:"Preferences have been reset from storage.";s:10:"qbsettings";s:17:"Quickbar settings";s:14:"qbsettingsnote";s:72:"This preference only works in the 'Standard' and the 'CologneBlue' skin.";s:14:"changepassword";s:15:"Change password";s:4:"skin";s:4:"Skin";s:4:"math";s:14:"Rendering math";s:10:"dateformat";s:11:"Date format";s:12:"math_failure";s:15:"Failed to parse";s:18:"math_unknown_error";s:13:"unknown error";s:21:"math_unknown_function";s:17:"unknown function ";s:17:"math_lexing_error";s:12:"lexing error";s:17:"math_syntax_error";s:12:"syntax error";s:16:"math_image_error";s:86:"PNG conversion failed; check for correct installation of latex, dvips, gs, and convert";s:15:"math_bad_tmpdir";s:44:"Can't write to or create math temp directory";s:15:"math_bad_output";s:46:"Can't write to or create math output directory";s:12:"math_notexvc";s:62:"Missing texvc executable; please see math/README to configure.";s:14:"prefs-personal";s:9:"User data";s:8:"prefs-rc";s:31:"Recent changes and stub display";s:10:"prefs-misc";s:13:"Misc settings";s:9:"saveprefs";s:16:"Save preferences";s:10:"resetprefs";s:17:"Reset preferences";s:11:"oldpassword";s:12:"Old password";s:11:"newpassword";s:12:"New password";s:9:"retypenew";s:19:"Retype new password";s:11:"textboxsize";s:7:"Editing";s:4:"rows";s:24:"Editbox dimensions: Rows";s:7:"columns";s:7:"Columns";s:17:"searchresultshead";s:22:"Search result settings";s:14:"resultsperpage";s:21:"Hits to show per page";s:12:"contextlines";s:21:"Lines to show per hit";s:12:"contextchars";s:30:"Characters of context per line";s:13:"stubthreshold";s:26:"Threshold for stub display";s:18:"recentchangescount";s:34:"Number of titles in recent changes";s:10:"savedprefs";s:33:"Your preferences have been saved.";s:14:"timezonelegend";s:9:"Time zone";s:12:"timezonetext";s:69:"Enter number of hours your local time differs
+from server time (UTC).";s:9:"localtime";s:18:"Local time display";s:14:"timezoneoffset";s:6:"Offset";s:10:"servertime";s:18:"Server time is now";s:13:"guesstimezone";s:20:"Fill in from browser";s:9:"emailflag";s:31:"Disable e-mail from other users";s:9:"defaultns";s:38:"Search in these namespaces by default:";s:7:"changes";s:7:"changes";s:13:"recentchanges";s:14:"Recent changes";s:17:"recentchangestext";s:55:"Track the most recent changes to the wiki on this page.";s:9:"rcloaderr";s:22:"Loading recent changes";s:6:"rcnote";s:84:"Below are the last <strong>$1</strong> changes in the last <strong>$2</strong> days.";s:10:"rcnotefrom";s:62:"Below are the changes since <b>$2</b> (up to <b>$1</b> shown).";s:10:"rclistfrom";s:33:"Show new changes starting from $1";s:13:"showhideminor";s:45:"$1 minor edits | $2 bots | $3 logged in users";s:7:"rclinks";s:44:"Show last $1 changes in last $2 days<br />$3";s:6:"rchide";s:71:"in $4 form; $1 minor edits; $2 secondary namespaces; $3 multiple edits.";s:5:"rcliu";s:31:"; $1 edits from logged in users";s:4:"diff";s:4:"diff";s:4:"hist";s:4:"hist";s:4:"hide";s:4:"hide";s:4:"show";s:4:"show";s:9:"tableform";s:5:"table";s:8:"listform";s:4:"list";s:8:"nchanges";s:10:"$1 changes";s:15:"minoreditletter";s:1:"m";s:13:"newpageletter";s:1:"N";s:6:"upload";s:11:"Upload file";s:9:"uploadbtn";s:11:"Upload file";s:10:"uploadlink";s:13:"Upload images";s:8:"reupload";s:9:"Re-upload";s:12:"reuploaddesc";s:26:"Return to the upload form.";s:13:"uploadnologin";s:13:"Not logged in";s:17:"uploadnologintext";s:84:"You must be <a href="{{localurle:Special:Userlogin}}">logged in</a>
+to upload files.";s:10:"uploadfile";s:37:"Upload images, sounds, documents etc.";s:11:"uploaderror";s:12:"Upload error";s:10:"uploadtext";s:2366:"Use this page to upload files from your local hard disk.
+
+<div style="border: 1px solid grey; background: #ddf; padding: 7px; margin: 0 auto;"><strong>Notice:</strong> Your file is likely to get deleted if you do not follow the following guidelines:
+
+<ul><li>Provide <em>detailed</em> information on the source of the file. If you made it yourself, say so. If you got it from the Internet, provide a link to the page.<br>&nbsp;</li>
+
+<li>Specify the <em>licence</em> of the file. Add <tt>&#123;{GFDL}}</tt> if the file is licenced under the <a href="{{localurle:project:Text_of_the_GNU_Free_Documentation_License}}">GNU FDL</a>, <tt>&#123;{PD}}</tt> if it is in the <a href="{{localurle:Public_domain}}">public domain</a>, etc. See <a href="{{localurle:Project:Image_copyright_tags}}">Image copyright tags</a> for more of these.<br>&nbsp;</li>
+
+<li>Place a link to the file (or an image tag, if it is an image) in a relevant article, or use the description page to describe what the file contains (preferably both). In the case of an image, describe what the image depicts. In the case of sound files, describe what it is.<br>&nbsp;</li>
+
+<li>To include the image in an article, use a link in the form <tt>[[Image:File.jpg]]</tt> or <tt>[[Image:File.png|alt text]]</tt> or <tt>[[Media:File.ogg]]</tt> for sounds. To include an image as a
+thumbnail, use <tt>[[Image:File.jpg|thumb|Caption]]</tt><br>&nbsp;</li>
+
+<li><strong>Use a sensible filename!</strong> Please name your file, say, "Eiffel Tower, Paris, at night.jpg" in preference to "etpan1024c.jpg" or somesuch. This will prevent your upload from replacing an already-existing file without warning. (You can check for existing images in the <a class='internal' href="{{localurle:Special:Imagelist}}">list of uploaded images</a>.)<br>&nbsp;</li>
+
+See <a href="{{localurle:Project:Uploading_images}}">{{ns:project}}:Uploading images</a> for information on how this upload form works, how to use images in articles, and what file formats are preferred for what types of images.
+</div>
+
+<p>To upload a file, type the path and filename to the file on your hard disk in the box below (or use the <i>Browse</i> button to display a dialog box). Enter <strong>all</strong> the necessary information in the <i>Summary</i> field, click the checkbox to acknowledge the copyright, and finally click <i>Upload file</i>.</p>";s:9:"uploadlog";s:10:"upload log";s:13:"uploadlogpage";s:10:"Upload_log";s:17:"uploadlogpagetext";s:99:"Below is a list of the most recent file uploads.
+All times shown are server time (UTC).
+<ul>
+</ul>
+";s:8:"filename";s:8:"Filename";s:8:"filedesc";s:7:"Summary";s:10:"filestatus";s:16:"Copyright status";s:10:"filesource";s:6:"Source";s:11:"affirmation";s:95:"I affirm that the copyright holder of this file
+agrees to license it under the terms of the $1.";s:13:"copyrightpage";s:20:"Wikipedia:Copyrights";s:17:"copyrightpagename";s:22:"{{SITENAME}} copyright";s:13:"uploadedfiles";s:14:"Uploaded files";s:13:"noaffirmation";s:65:"You must affirm that your upload does not violate
+any copyrights.";s:13:"ignorewarning";s:36:"Ignore warning and save file anyway.";s:9:"minlength";s:43:"Image names must be at least three letters.";s:11:"badfilename";s:36:"Image name has been changed to "$1".";s:11:"badfiletype";s:45:"".$1" is not a recommended image file format.";s:9:"largefile";s:54:"It is recommended that images not exceed 100k in size.";s:16:"successfulupload";s:17:"Successful upload";s:12:"fileuploaded";s:226:"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.";s:13:"uploadwarning";s:14:"Upload warning";s:8:"savefile";s:9:"Save file";s:13:"uploadedimage";s:13:"uploaded "$1"";s:14:"uploaddisabled";s:183:"Uploading is temporarily disabled while we're on temporary, overstressed servers.
+
+Once the regular setup is back online (sorry, no time estimate), upload should be available again.";s:9:"imagelist";s:10:"Image list";s:13:"imagelisttext";s:39:"Below is a list of $1 images sorted $2.";s:12:"getimagelist";s:19:"fetching image list";s:11:"ilshowmatch";s:35:"Show all images with names matching";s:8:"ilsubmit";s:6:"Search";s:8:"showlast";s:30:"Show last $1 images sorted $2.";s:3:"all";s:3:"all";s:6:"byname";s:7:"by name";s:6:"bydate";s:7:"by date";s:6:"bysize";s:7:"by size";s:9:"imgdelete";s:3:"del";s:7:"imgdesc";s:4:"desc";s:9:"imglegend";s:45:"Legend: (desc) = show/edit image description.";s:10:"imghistory";s:13:"Image history";s:9:"revertimg";s:3:"rev";s:9:"deleteimg";s:3:"del";s:13:"imghistlegend";s:174:"Legend: (cur) = this is the current image, (del) = delete
+this old version, (rev) = revert to this old version.
+<br /><i>Click on date to see image uploaded on that date</i>.";s:10:"imagelinks";s:11:"Image links";s:12:"linkstoimage";s:39:"The following pages link to this image:";s:14:"nolinkstoimage";s:43:"There are no pages that link to this image.";s:10:"statistics";s:10:"Statistics";s:9:"sitestats";s:15:"Site statistics";s:9:"userstats";s:15:"User statistics";s:13:"sitestatstext";s:758:"There are '''$1''' total pages in the database. This includes "talk" pages, pages about Wikipedia, minimal "stub" pages, redirects, and others that probably don't qualify as articles. Excluding those, there are '''$2''' pages that are probably legitimate articles.
+There have been a total of '''$4''' page edits since the software was upgraded (July 20, 2002). That comes to '''$5''' average edits per page.
+
+For more detailed statistics see:
+*[http://www.wikipedia.org/wikistats/EN/Sitemap.htm Wikistats]
+<!--[http://en.wikipedia.org/stats Usage statistics]-->
+*[http://wikimedia.org/stats/en.wikipedia.org Usage statistics]
+*[http://wikimedia.org/stats/live Live server traffic charts]
+*[http://en.wikipedia.org/wiki/Wikipedia:Statistics Growth statistics]";s:13:"userstatstext";s:83:"There are '''$1''' registered users.
+'''$2''' of these are administrators (see $3).";s:11:"maintenance";s:16:"Maintenance page";s:18:"maintnancepagetext";s:176:"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 ;-)";s:19:"maintenancebacklink";s:24:"Back to Maintenance Page";s:15:"disambiguations";s:20:"Disambiguation pages";s:19:"disambiguationspage";s:39:"Wikipedia:Links_to_disambiguating_pages";s:19:"disambiguationstext";s:234:"The following pages link to a <i>disambiguation page</i>. They should link to the appropriate topic instead.<br />A page is treated as dismbiguation if it is linked from $1.<br />Links from other namespaces are <i>not</i> listed here.";s:15:"doubleredirects";s:16:"Double Redirects";s:19:"doubleredirectstext";s:338:"<b>Attention:</b> This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.<br />
+Each 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.";s:15:"brokenredirects";s:16:"Broken Redirects";s:19:"brokenredirectstext";s:53:"The following redirects link to a non-existing pages.";s:9:"selflinks";s:21:"Pages with Self Links";s:13:"selflinkstext";s:72:"The following pages contain a link to themselves, which they should not.";s:11:"mispeelings";s:23:"Pages with misspellings";s:15:"mispeelingstext";s:122:"The following pages contain a common misspelling, which are listed on $1. The correct spelling might be given (like this).";s:15:"mispeelingspage";s:27:"List of common misspellings";s:20:"missinglanguagelinks";s:22:"Missing Language Links";s:26:"missinglanguagelinksbutton";s:31:"Find missing language links for";s:24:"missinglanguagelinkstext";s:103:"These pages do <i>not</i> link to their counterpart in $1. Redirects and subpages are <i>not</i> shown.";s:7:"orphans";s:14:"Orphaned pages";s:11:"lonelypages";s:14:"Orphaned pages";s:12:"unusedimages";s:13:"Unused images";s:12:"popularpages";s:13:"Popular pages";s:6:"nviews";s:8:"$1 views";s:11:"wantedpages";s:12:"Wanted pages";s:6:"nlinks";s:8:"$1 links";s:8:"allpages";s:9:"All pages";s:10:"randompage";s:11:"Random page";s:10:"shortpages";s:11:"Short pages";s:9:"longpages";s:10:"Long pages";s:12:"deadendpages";s:14:"Dead-end pages";s:9:"listusers";s:9:"User list";s:10:"listadmins";s:11:"Admins list";s:12:"specialpages";s:13:"Special pages";s:9:"spheading";s:27:"Special pages for all users";s:14:"sysopspheading";s:18:"For sysop use only";s:18:"developerspheading";s:22:"For developer use only";s:11:"protectpage";s:12:"Protect page";s:19:"recentchangeslinked";s:15:"Related changes";s:6:"rclsub";s:27:"(to pages linked from "$1")";s:5:"debug";s:5:"Debug";s:8:"newpages";s:9:"New pages";s:12:"ancientpages";s:12:"Oldest pages";s:4:"intl";s:19:"Interlanguage links";s:4:"move";s:4:"Move";s:12:"movethispage";s:14:"Move this page";s:16:"unusedimagestext";s:136:"<p>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.";s:11:"booksources";s:12:"Book sources";s:14:"booksourcetext";s:258:"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.";s:4:"isbn";s:4:"ISBN";s:6:"rfcurl";s:35:"http://www.faqs.org/rfcs/rfc$1.html";s:14:"alphaindexline";s:8:"$1 to $2";s:7:"version";s:7:"Version";s:11:"mailnologin";s:15:"No send address";s:15:"mailnologintext";s:197:"You must be <a href="{{localurl:Special:Userlogin}}">logged in</a>
+and have a valid e-mail address in your <a href="{{localurle:Special:Preferences}}">preferences</a>
+to send e-mail to other users.";s:9:"emailuser";s:16:"E-mail this user";s:9:"emailpage";s:11:"E-mail user";s:13:"emailpagetext";s:265:"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.";s:15:"usermailererror";s:28:"Mail object returned error: ";s:15:"defemailsubject";s:19:"{{SITENAME}} e-mail";s:12:"noemailtitle";s:17:"No e-mail address";s:11:"noemailtext";s:105:"This user has not specified a valid e-mail address,
+or has chosen not to receive e-mail from other users.";s:9:"emailfrom";s:4:"From";s:7:"emailto";s:2:"To";s:12:"emailsubject";s:7:"Subject";s:12:"emailmessage";s:7:"Message";s:9:"emailsend";s:4:"Send";s:9:"emailsent";s:11:"E-mail sent";s:13:"emailsenttext";s:34:"Your e-mail message has been sent.";s:9:"watchlist";s:12:"My watchlist";s:12:"watchlistsub";s:15:"(for user "$1")";s:11:"nowatchlist";s:36:"You have no items on your watchlist.";s:12:"watchnologin";s:13:"Not logged in";s:16:"watchnologintext";s:85:"You must be <a href="/wiki/Special:Userlogin">logged in</a>
+to modify your watchlist.";s:10:"addedwatch";s:18:"Added to watchlist";s:14:"addedwatchtext";s:390:"The page "[[$1]]" has been added to your [[{{ns:-1}}:Watchlist|Watchlist]].
+Future changes to this page and its associated Talk or article page will be listed there,
+and the page will appear '''bolded''' in the [[{{ns:-1}}:Recentchanges|list of recent changes]] to
+make it easier to pick out.
+
+If you want to remove the page from your watchlist later, click the "unwatch" tab in the header.";s:12:"removedwatch";s:22:"Removed from watchlist";s:16:"removedwatchtext";s:51:"The page "$1" has been removed from your watchlist.";s:5:"watch";s:5:"Watch";s:13:"watchthispage";s:15:"Watch this page";s:7:"unwatch";s:7:"Unwatch";s:15:"unwatchthispage";s:13:"Stop watching";s:12:"notanarticle";s:18:"Not a content page";s:13:"watchnochange";s:68:"None of your watched items were edited in the time period displayed.";s:12:"watchdetails";s:238:"You have $1 pages on your watchlist (not counting talk pages); you can <a href='$4'>display and edit the complete list</a>. In the time period selected below, users have made $2 edits to articles in the English version of Wikipedia. $3...";s:18:"watchmethod-recent";s:39:"Checking recent edits for watched pages";s:16:"watchmethod-list";s:39:"Checking watched pages for recent edits";s:13:"removechecked";s:35:"Remove checked items from watchlist";s:17:"watchlistcontains";s:33:"Your watchlist contains $1 pages.";s:13:"watcheditlist";s:181:"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.";s:15:"removingchecked";s:42:"Removing requested items from watchlist...";s:13:"couldntremove";s:28:"Couldn't remove item '$1'...";s:15:"iteminvalidname";s:39:"Problem with item '$1', invalid name...";s:6:"wlnote";s:58:"Below are the last $1 changes in the last <b>$2</b> hours.";s:10:"wlshowlast";s:29:"Show last $1 hours $2 days $3";s:7:"wlsaved";s:42:"This is a saved version of your watchlist.";s:10:"deletepage";s:11:"Delete page";s:7:"confirm";s:7:"Confirm";s:9:"excontent";s:12:"content was:";s:13:"exbeforeblank";s:28:"content before blanking was:";s:7:"exblank";s:14:"page was empty";s:13:"confirmdelete";s:14:"Confirm delete";s:9:"deletesub";s:15:"(Deleting "$1")";s:14:"historywarning";s:57:"Warning: The page you are about to delete has a history: ";s:17:"confirmdeletetext";s:255:"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:Project}}:Policy]].";s:12:"confirmcheck";s:34:"Yes, I really want to delete this.";s:14:"actioncomplete";s:15:"Action complete";s:11:"deletedtext";s:63:""$1" has been deleted.
+See $2 for a record of recent deletions.";s:14:"deletedarticle";s:12:"deleted "$1"";s:10:"dellogpage";s:12:"Deletion_log";s:14:"dellogpagetext";s:96:"Below is a list of the most recent deletions.
+All times shown are server time (UTC).
+<ul>
+</ul>
+";s:11:"deletionlog";s:12:"deletion log";s:8:"reverted";s:28:"Reverted to earlier revision";s:13:"deletecomment";s:19:"Reason for deletion";s:13:"imagereverted";s:41:"Revert to earlier version was successful.";s:8:"rollback";s:15:"Roll back edits";s:14:"rollback_short";s:8:"Rollback";s:12:"rollbacklink";s:8:"rollback";s:14:"rollbackfailed";s:15:"Rollback failed";s:12:"cantrollback";s:81:"Could not revert the edit as the last contributor is the only author of this page";s:13:"alreadyrolled";s:222:"Cannot rollback last edit of [[$1]]
+by [[{{ns:user}}:$2|$2]] ([[{{ns:User_talk}}:$2|Talk]]); someone else has edited or rolled back the page already.
+
+Last edit was by [[{{ns:User}}:$3|$3]] ([[{{ns:User_talk}}:$3|Talk]]).";s:11:"editcomment";s:34:"The edit comment was: "<i>$1</i>".";s:10:"revertpage";s:42:"Reverted edits by $2 to last version by $1";s:14:"protectlogpage";s:14:"Protection_log";s:14:"protectlogtext";s:139:"Below is a list of page locks/unlocks.
+See [[{{ns:project}}:Protected page]] and [[{{ns:project}}:Protection policy]] for more information.";s:16:"protectedarticle";s:16:"protected [[$1]]";s:18:"unprotectedarticle";s:18:"unprotected [[$1]]";s:10:"protectsub";s:17:"(Protecting "$1")";s:18:"confirmprotecttext";s:40:"Do you really want to protect this page?";s:14:"confirmprotect";s:18:"Confirm protection";s:14:"protectcomment";s:21:"Reason for protecting";s:12:"unprotectsub";s:19:"(Unprotecting "$1")";s:20:"confirmunprotecttext";s:42:"Do you really want to unprotect this page?";s:16:"confirmunprotect";s:20:"Confirm unprotection";s:16:"unprotectcomment";s:23:"Reason for unprotecting";s:13:"protectreason";s:28:"(replace this with a reason)";s:8:"undelete";s:20:"Restore deleted page";s:12:"undeletepage";s:30:"View and restore deleted pages";s:16:"undeletepagetext";s:132:"The following pages have been deleted but are still in the archive and
+can be restored. The archive may be periodically cleaned out.";s:15:"undeletearticle";s:20:"Restore deleted page";s:17:"undeleterevisions";s:21:"$1 revisions archived";s:15:"undeletehistory";s:276:"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.";s:16:"undeleterevision";s:25:"Deleted revision as of $1";s:11:"undeletebtn";s:8:"Restore!";s:16:"undeletedarticle";s:13:"restored "$1"";s:13:"undeletedtext";s:134:"The page [[$1]] has been successfully restored.
+See [[{{ns:project}}:Deletion_log]] for a record of recent deletions and restorations.";s:13:"contributions";s:18:"User contributions";s:9:"mycontris";s:16:"My contributions";s:10:"contribsub";s:6:"For $1";s:10:"nocontribs";s:46:"No changes were found matching these criteria.";s:6:"ucnote";s:72:"Below are this user's last <b>$1</b> changes in the last <b>$2</b> days.";s:7:"uclinks";s:48:"View the last $1 changes; view the last $2 days.";s:5:"uctop";s:6:" (top)";s:13:"notargettitle";s:9:"No target";s:12:"notargettext";s:73:"You have not specified a target page or user
+to perform this function on.";s:11:"linklistsub";s:15:"(List of links)";s:9:"linkshere";s:33:"The following pages link to here:";s:11:"nolinkshere";s:22:"No pages link to here.";s:10:"isredirect";s:13:"redirect page";s:7:"blockip";s:10:"Block user";s:11:"blockiptext";s:732:"Use the form below to block write access from a specific IP address or username. This should be done only in accordance with [[{{ns:project}}:blocking policy|policy]]. Fill in a specific reason below (for example, citing particular pages that were vandalized).
+
+Expiry times are entered in the GNU standard format, which is described in the [http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html tar manual], e.g. "1 hour", "2 days", "next Wednesday", "1 January 2017". Alternatively, a block may be "indefinite" or "infinite".
+
+For information about blocking ranges of addresses, see [[meta:Range blocks|Range blocks]]. To unblock someone see the [[{{ns:Special}}:Ipblocklist|list of blocked IP addresses and usernames]].";s:9:"ipaddress";s:19:"IP Address/username";s:9:"ipbexpiry";s:6:"Expiry";s:9:"ipbreason";s:6:"Reason";s:9:"ipbsubmit";s:15:"Block this user";s:12:"badipaddress";s:18:"Invalid IP address";s:13:"noblockreason";s:39:"You must supply a reason for the block.";s:17:"blockipsuccesssub";s:15:"Block succeeded";s:18:"blockipsuccesstext";s:95:""$1" has been blocked.
+<br />See [[{{ns:Special:Ipblocklist}}|IP block list]] to review blocks.";s:9:"unblockip";s:12:"Unblock user";s:13:"unblockiptext";s:90:"Use the form below to restore write access
+to a previously blocked IP address or username.";s:9:"ipusubmit";s:20:"Unblock this address";s:10:"ipusuccess";s:14:""$1" unblocked";s:11:"ipblocklist";s:42:"List of blocked IP addresses and usernames";s:13:"blocklistline";s:30:"$1, $2 blocked $3 (expires $4)";s:9:"blocklink";s:5:"block";s:11:"unblocklink";s:7:"unblock";s:12:"contribslink";s:8:"contribs";s:11:"autoblocker";s:132:"Autoblocked because your IP address has been recently used by "'''$1'''". The reason given for $1's block is as follows: "'''$2'''".";s:12:"blocklogpage";s:9:"Block_log";s:13:"blocklogentry";s:38:"blocked "$1" with an expiry time of $2";s:12:"blocklogtext";s:214:"This is a log of user blocking and unblocking actions. Automatically
+blocked IP addresses are not listed. See the [[{{ns:Special}}:Ipblocklist|IP block list]] for
+the list of currently operational bans and blocks.";s:15:"unblocklogentry";s:14:"unblocked "$1"";s:20:"range_block_disabled";s:53:"The sysop ability to create range blocks is disabled.";s:18:"ipb_expiry_invalid";s:20:"Expiry time invalid.";s:16:"ip_range_invalid";s:18:"Invalid IP range.
+";s:12:"proxyblocker";s:13:"Proxy blocker";s:16:"proxyblockreason";s:173:"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.";s:17:"proxyblocksuccess";s:6:"Done.
+";s:6:"lockdb";s:13:"Lock database";s:8:"unlockdb";s:15:"Unlock database";s:10:"lockdbtext";s:294:"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.";s:12:"unlockdbtext";s:227:"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.";s:11:"lockconfirm";s:40:"Yes, I really want to lock the database.";s:13:"unlockconfirm";s:42:"Yes, I really want to unlock the database.";s:7:"lockbtn";s:13:"Lock database";s:9:"unlockbtn";s:15:"Unlock database";s:13:"locknoconfirm";s:39:"You did not check the confirmation box.";s:16:"lockdbsuccesssub";s:23:"Database lock succeeded";s:18:"unlockdbsuccesssub";s:21:"Database lock removed";s:17:"lockdbsuccesstext";s:99:"The database has been locked.
+<br />Remember to remove the lock after your maintenance is complete.";s:19:"unlockdbsuccesstext";s:31:"The database has been unlocked.";s:6:"asksql";s:9:"SQL query";s:10:"asksqltext";s:209:"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.";s:11:"sqlislogged";s:86:"Please note that all queries are logged: http://en.wikipedia.org/upload/sqllog_mFhyRe6";s:8:"sqlquery";s:11:"Enter query";s:8:"querybtn";s:12:"Submit query";s:10:"selectonly";s:35:"Only read-only queries are allowed.";s:15:"querysuccessful";s:16:"Query successful";s:14:"makesysoptitle";s:24:"Make a user into a sysop";s:13:"makesysoptext";s:169:"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";s:13:"makesysopname";s:17:"Name of the user:";s:15:"makesysopsubmit";s:27:"Make this user into a sysop";s:11:"makesysopok";s:31:"<b>User "$1" is now a sysop</b>";s:13:"makesysopfail";s:84:"<b>User "$1" could not be made into a sysop. (Did you enter the name correctly?)</b>";s:17:"setbureaucratflag";s:19:"Set bureaucrat flag";s:13:"bureaucratlog";s:14:"Bureaucrat_log";s:18:"bureaucratlogentry";s:29:"Rights for user "$1" set "$2"";s:6:"rights";s:7:"Rights:";s:15:"set_user_rights";s:15:"Set user rights";s:15:"user_rights_set";s:35:"<b>User rights for "$1" updated</b>";s:15:"set_rights_fail";s:81:"<b>User rights for "$1" could not be set. (Did you enter the name correctly?)</b>";s:9:"makesysop";s:24:"Make a user into a sysop";s:8:"movepage";s:9:"Move page";s:12:"movepagetext";s:840:"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 check for double-redirects (using "What links here")''' after the move.
+You are responsible for making sure that links continue to
+point where they are supposed to go.
+
+Note that the page will '''not''' be moved if there is already
+a page at the new title, unless it is empty or a redirect and has no
+past edit history. This means that you can rename a page back to where
+it was just renamed from if you make a mistake, and you cannot overwrite
+an existing page.
+
+<b>WARNING!</b>
+This can be a drastic and unexpected change for a popular page;
+please be sure you understand the consequences of this before
+proceeding.";s:16:"movepagetalktext";s:438:"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. Please contact an [[{{ns:Project}}:Administrators|Administrator]] if you cannot do so, but '''do not''' just copy and paste the contents.";s:11:"movearticle";s:9:"Move page";s:11:"movenologin";s:13:"Not logged in";s:15:"movenologintext";s:105:"You must be a registered user and <a href="{{localurle:Special:Userlogin}}">logged in</a>
+to move a page.";s:8:"newtitle";s:12:"To new title";s:11:"movepagebtn";s:9:"Move page";s:12:"pagemovedsub";s:14:"Move succeeded";s:13:"pagemovedtext";s:173:"Page "[[$1]]" moved to "[[$2]]".
+
+<strong>Please [[{{ns:Special}}:Whatlinkshere/$2|check]] if this move has created any double-redirects, and fix them if necessary.</strong>";s:13:"articleexists";s:213:"A page of that name already exists, or the name you have chosen is not valid. Please choose another name, or contact an <a href="{{localurle:Wikipedia:Administrators}}">Administrator</a> to help you with the move.";s:10:"talkexists";s:285:"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. Contact an <a href="/wiki/Wikipedia:Administrators">Administrator</a> if you cannot do so, but DO NOT just copy and paste the contents.";s:7:"movedto";s:8:"moved to";s:8:"movetalk";s:40:"Move "talk" page as well, if applicable.";s:13:"talkpagemoved";s:43:"The corresponding talk page was also moved.";s:16:"talkpagenotmoved";s:59:"The corresponding talk page was <strong>not</strong> moved.";s:9:"1movedto2";s:14:"$1 moved to $2";s:6:"export";s:12:"Export pages";s:10:"exporttext";s:622:"You can export the text and editing history of a particular page or set of pages wrapped in some XML. In the future, this may then be imported into another wiki running MediaWiki software, although there is no support for this feature in the current version.
+
+To export article pages, enter the titles in the text box below, one title per line, and select whether you want the current version as well as all old versions, with the page history lines, or just the current version with the info about the last edit.
+
+In the latter case you can also use a link, e.g. [[{{ns:Special}}:Export/Train]] for the article [[Train]].";s:13:"exportcuronly";s:55:"Include only the current revision, not the full history";s:11:"allmessages";s:19:"All system messages";s:15:"allmessagestext";s:76:"This is a list of all system messages available in the MediaWiki: namespace.";s:14:"thumbnail-more";s:7:"Enlarge";s:12:"missingimage";s:36:"<b>Missing image</b><br /><i>$1</i>
+";s:6:"import";s:12:"Import pages";s:10:"importtext";s:118:"Please export the file from the source wiki using the Special:Export utility, save it to your disk and upload it here.";s:12:"importfailed";s:17:"Import failed: $1";s:12:"importnotext";s:16:"Empty or no text";s:13:"importsuccess";s:17:"Import succeeded!";s:21:"importhistoryconflict";s:72:"Conflicting history revision exists (may have imported this page before)";s:16:"accesskey-search";s:1:"f";s:19:"accesskey-minoredit";s:1:"i";s:14:"accesskey-save";s:1:"s";s:17:"accesskey-preview";s:1:"p";s:33:"accesskey-compareselectedversions";s:1:"v";s:14:"tooltip-search";s:24:"Search this wiki [alt-f]";s:17:"tooltip-minoredit";s:33:"Mark this as a minor edit [alt-i]";s:12:"tooltip-save";s:25:"Save your changes [alt-s]";s:15:"tooltip-preview";s:60:"Preview your changes, please use this before saving! [alt-p]";s:31:"tooltip-compareselectedversions";s:75:"See the differences between the two selected versions of this page. [alt-v]";s:12:"Monobook.css";s:67:"a { text-decoration: underline }
+#siteNotice { padding-left: 4px; }";s:12:"nodublincore";s:50:"Dublin Core RDF metadata disabled for this server.";s:17:"nocreativecommons";s:55:"Creative Commons RDF metadata disabled for this server.";s:13:"notacceptable";s:68:"The wiki server can't provide data in a format your client can read.";s:9:"anonymous";s:33:"Anonymous user(s) of {{SITENAME}}";s:8:"siteuser";s:17:"Wikipedia user $1";s:14:"lastmodifiedby";s:37:"This page was last modified $1 by $2.";s:3:"and";s:3:"and";s:13:"othercontribs";s:20:"Based on work by $1.";s:9:"siteusers";s:20:"Wikipedia user(s) $1";s:19:"spamprotectiontitle";s:22:"Spam protection filter";s:18:"spamprotectiontext";s:214:"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:";s:16:"subcategorycount";s:44:"There are $1 subcategories to this category.";s:20:"categoryarticlecount";s:39:"There are $1 articles in this category.";s:18:"usenewcategorypage";s:70:"1
+
+Set first character to "0" to disable the new category page layout.";s:11:"Monobook.js";s:3547:"/* 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');
+";} \ No newline at end of file
diff --git a/languages/wikipedia/fr.lang b/languages/wikipedia/fr.lang
new file mode 100644
index 000000000000..c30217e25556
--- /dev/null
+++ b/languages/wikipedia/fr.lang
@@ -0,0 +1,320 @@
+MediaWiki 1.3.0beta3 language file
+a:699:{s:10:"categories";s:11:"Catégories";s:8:"category";s:10:"catégorie";s:15:"category_header";s:36:"Articles dans la catégorie « $1 »";s:13:"subcategories";s:16:"Sous-catégories";s:9:"linktrail";s:36:"/^([a-zàâçéèêîôû]+)(.*)$/sD";s:8:"mainpage";s:7:"Accueil";s:12:"mainpagetext";s:30:"Logiciel Wikipédia installé.";s:17:"mainpagedocfooter";s:212:"Consultez la [http://meta.wikipedia.org/wiki/MediaWiki_i18n documentation de personnalisation de l'interface] et le [http://meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide guide des utilisateurs] pour de l'aide.";s:6:"portal";s:19:"Accueil communauté";s:10:"portal-url";s:30:"Wikipédia:Portail communauté";s:5:"about";s:9:"À propos";s:14:"aboutwikipedia";s:23:"À propos de Wikipédia";s:9:"aboutpage";s:20:"Wikipédia:À propos";s:7:"article";s:7:"Article";s:4:"help";s:4:"Aide";s:8:"helppage";s:15:"Wikipédia:Aide";s:15:"wikititlesuffix";s:10:"Wikipédia";s:10:"bugreports";s:17:"Rapport d'erreurs";s:14:"bugreportspage";s:28:"Wikipédia:Rapport d'erreurs";s:11:"sitesupport";s:12:"Faire un don";s:3:"faq";s:3:"FAQ";s:7:"faqpage";s:14:"Wikipédia:FAQ";s:8:"edithelp";s:4:"Aide";s:9:"newwindow";s:29:"(ouvre une nouvelle fenêtre)";s:12:"edithelppage";s:36:"Wikipédia:Comment modifier une page";s:6:"cancel";s:7:"Annuler";s:6:"qbfind";s:10:"Rechercher";s:8:"qbbrowse";s:8:"Défiler";s:6:"qbedit";s:7:"Éditer";s:13:"qbpageoptions";s:14:"Page d'options";s:10:"qbpageinfo";s:19:"Page d'informations";s:11:"qbmyoptions";s:11:"Mes options";s:14:"qbspecialpages";s:16:"Pages spéciales";s:13:"moredotdotdot";s:10:"Et plus...";s:6:"mypage";s:7:"Ma page";s:6:"mytalk";s:21:"Ma page de discussion";s:8:"anontalk";s:32:"Page de discussion pour cette IP";s:10:"navigation";s:10:"Navigation";s:13:"currentevents";s:11:"Actualités";s:11:"disclaimers";s:1:"-";s:14:"disclaimerpage";s:36:"Wikipédia:Avertissements généraux";s:14:"errorpagetitle";s:6:"Erreur";s:8:"returnto";s:22:"Revenir à la page $1.";s:13:"fromwikipedia";s:63:"<small>Un article de Wikipédia, l'encyclopédie libre.</small>";s:13:"whatlinkshere";s:12:"Pages liées";s:6:"search";s:10:"Rechercher";s:2:"go";s:9:"Consulter";s:7:"history";s:10:"Historique";s:13:"history_short";s:10:"Historique";s:16:"printableversion";s:18:"Version imprimable";s:4:"edit";s:8:"Modifier";s:12:"editthispage";s:19:"Modifier cette page";s:6:"delete";s:9:"supprimer";s:14:"deletethispage";s:20:"Supprimer cette page";s:14:"undelete_short";s:17:"Restaurer (court)";s:7:"protect";s:9:"Protéger";s:15:"protectthispage";s:20:"Protéger cette page";s:9:"unprotect";s:12:"Déprotéger";s:17:"unprotectthispage";s:23:"Déprotéger cette page";s:7:"newpage";s:13:"Nouvelle page";s:8:"talkpage";s:18:"Page de discussion";s:11:"specialpage";s:16:"Pages spéciales";s:13:"personaltools";s:17:"Outils personnels";s:11:"postcomment";s:22:"Ajouter un commentaire";s:10:"addsection";s:1:"+";s:11:"articlepage";s:14:"Voir l'article";s:11:"subjectpage";s:10:"Page sujet";s:4:"talk";s:10:"Discussion";s:7:"toolbox";s:16:"Boîte à outils";s:8:"userpage";s:16:"Page utilisateur";s:13:"wikipediapage";s:10:"Page méta";s:9:"imagepage";s:10:"Page image";s:12:"viewtalkpage";s:18:"Page de discussion";s:14:"otherlanguages";s:14:"Autres langues";s:14:"redirectedfrom";s:21:"(Redirigé depuis $1)";s:12:"lastmodified";s:42:"Dernière modification de cette page : $1.";s:9:"viewcount";s:38:"Cette page a été consultée $1 fois.";s:9:"copyright";s:60:"Le contenu est disponible selon les termes de la licence $1.";s:9:"poweredby";s:96:"Wikipédia fonctionne avec [http://www.mediawiki.org/ MediaWiki], un moteur de wiki open source.";s:13:"printsubtitle";s:28:"(de http://fr.wikipedia.org)";s:13:"protectedpage";s:15:"Page protégée";s:14:"administrators";s:26:"Wikipédia:Administrateurs";s:10:"sysoptitle";s:28:"Accès administrateur requis";s:9:"sysoptext";s:127:"L'action que vous avez tentée ne peut être effectuée que par un utilisateur ayant le statut d'« administrateur ».
+Voir $1.";s:14:"developertitle";s:26:"Accès développeur requis";s:13:"developertext";s:127:"L'action que vous avez tentée ne peut être effectuée que par un utilisateur ayant le statut de « développeur ».
+Voir $1.";s:15:"bureaucrattitle";s:30:"Accès bureaucrate nécessaire";s:14:"bureaucrattext";s:137:"L'action que vous avez demandée ne peut être effectuée que par un administrateur ayant les droits de &laquo;&nbsp;bureaucrate&nbsp;».";s:6:"nbytes";s:9:"$1 octets";s:2:"ok";s:2:"OK";s:9:"sitetitle";s:10:"Wikipédia";s:9:"pagetitle";s:15:"$1 - Wikipédia";s:12:"sitesubtitle";s:21:"L'encyclopédie libre";s:13:"retrievedfrom";s:24:"Récupérée de « $1 »";s:11:"newmessages";s:16:"Vous avez de $1.";s:15:"newmessageslink";s:17:"nouveaux messages";s:11:"editsection";s:8:"modifier";s:3:"toc";s:8:"Sommaire";s:7:"showtoc";s:7:"montrer";s:7:"hidetoc";s:6:"cacher";s:13:"thisisdeleted";s:25:"Afficher ou restaurer $1?";s:11:"restorelink";s:26:"$1 modifications effacées";s:9:"feedlinks";s:7:"Nourrir";s:10:"nstab-main";s:7:"Article";s:10:"nstab-user";s:16:"Page utilisateur";s:11:"nstab-media";s:5:"Media";s:13:"nstab-special";s:8:"Spécial";s:8:"nstab-wp";s:9:"À propos";s:11:"nstab-image";s:5:"Image";s:15:"nstab-mediawiki";s:7:"Message";s:14:"nstab-template";s:7:"Modèle";s:10:"nstab-help";s:4:"Aide";s:14:"nstab-category";s:10:"Catégorie";s:12:"nosuchaction";s:15:"Action inconnue";s:16:"nosuchactiontext";s:78:"L'action spécifiée dans l'URL n'est pas reconnue par le logiciel Wikipédia.";s:17:"nosuchspecialpage";s:26:"Page spéciale inexistante";s:17:"nospecialpagetext";s:73:"Vous avez demandé une page spéciale qui n'est pas reconnue par le wiki.";s:5:"error";s:6:"Erreur";s:13:"databaseerror";s:23:"Erreur base de données";s:11:"dberrortext";s:339:"Erreur de syntaxe dans la base de données. Cette erreur peut être causée par une requête de recherche incorrecte (voir $5), ou une erreur dans le logiciel. La dernière requête traitée par la base de données était :
+<blockquote><tt>$1</tt></blockquote>
+depuis la fonction "<tt>$2</tt>".
+MySQL a renvoyé l'erreur "<tt>$3: $4</tt>".";s:13:"dberrortextcl";s:194:"Il y a une erreur de syntaxe de requête à la base de données.
+La dernière requête tentée vers la base était :
+"$1"
+contenant la fonction "$2".
+MySQL a retourné cette erreur "$3: $4".";s:9:"noconnect";s:119:"Désolé ! Suite à des problèmes techniques, il est impossible de se connecter à la base de données pour le moment.";s:4:"nodb";s:47:"Sélection impossible de la base de données $1";s:11:"cachederror";s:71:"Ceci est une copie de la page demandée. Elle peut ne pas être à jour";s:8:"readonly";s:47:"Mises à jour bloquées sur la base de données";s:15:"enterlockreason";s:67:"Indiquez la raison du blocage, ainsi qu'une estimation de sa durée";s:12:"readonlytext";s:265:"Les ajouts et mises à jour de la base de données Wikipédia sont actuellement bloqués, probablement pour permettre des actions de maintenance, après quoi, tout rentrera dans l'ordre. Voici la raison pour laquelle l'administrateur a bloqué la base&nbsp;:
+<p>$1";s:14:"missingarticle";s:298:"La base de données n'a pas pu trouver le texte d'une page existante dont le titre est "$1".
+Ce n'est pas une erreur de la base de données mais plus probablement un bogue du logiciel Wikipédia.
+Veuillez rapporter cette erreur à un administrateur, en lui indiquant l'adresse de la page fautive.";s:13:"internalerror";s:14:"Erreur interne";s:13:"filecopyerror";s:36:"Impossible de copier "$1" vers "$2".";s:15:"filerenameerror";s:36:"Impossible de renommer "$1" en "$2".";s:15:"filedeleteerror";s:29:"Impossible de supprimer "$1".";s:12:"filenotfound";s:25:"Fichier "$1" introuvable.";s:10:"unexpected";s:40:"Valeur inattendue : « $1 » = « $2 ».";s:9:"formerror";s:51:"Erreur&nbsp;: impossible de soumettre le formulaire";s:15:"badarticleerror";s:57:"Cette action ne peut pas être effectuée sur cette page.";s:12:"cannotdelete";s:53:"Impossible de supprimer la page ou l'image indiquée.";s:8:"badtitle";s:13:"Mauvais titre";s:12:"badtitletext";s:84:"Le titre de la page demandée est invalide, vide ou le lien interlangue est invalide";s:12:"perfdisabled";s:169:"Désolé&nbsp;! Cette fonctionnalité est temporairement désactivée
+car elle ralentit la base de données à un point tel que plus personne
+ne peut utiliser le wiki.";s:15:"perfdisabledsub";s:45:"Ceci est une copie de sauvegarde de $1&nbsp;:";s:10:"perfcached";s:60:"Ceci est une version en cache, et peut ne pas être à jour:";s:20:"wrong_wfQuery_params";s:69:"Incorrect parameters to wfQuery()<br />
+Function: $1<br />
+Query: $2
+";s:10:"viewsource";s:20:"Voir le texte source";s:13:"protectedtext";s:152:"Cette page a été bloquée pour empêcher sa modification. Consultez [[Wikipédia:Page protégée]] pour connaître les différentes raisons possibles.";s:18:"seriousxhtmlerrors";s:45:"Tidy a détecté de sérieuses erreurs xhtml.";s:11:"logouttitle";s:12:"Déconnexion";s:10:"logouttext";s:160:"Vous êtes à présent déconnecté(e).
+Vous pouvez continuer à utiliser Wikipédia de façon anonyme, ou vous reconnecter, éventuellement sous un autre nom.
+";s:15:"welcomecreation";s:160:"<h2>Bienvenue, $1&nbsp;!</h2><p>Votre compte d'utilisateur a été créé.
+N'oubliez pas de personnaliser votre Wikipédia en consultant la page Préférences.";s:14:"loginpagetitle";s:17:"Votre identifiant";s:8:"yourname";s:23:"Votre nom d'utilisateur";s:12:"yourpassword";s:18:"Votre mot de passe";s:17:"yourpasswordagain";s:36:"Entrez à nouveau votre mot de passe";s:12:"newusersonly";s:35:" (nouveaux utilisateurs uniquement)";s:18:"remembermypassword";s:40:"Se souvenir de mon mot de passe (cookie)";s:12:"loginproblem";s:65:"<b>Problème d'identification.</b><br />Essayez à nouveau&nbsp;!";s:15:"alreadyloggedin";s:87:"<font color=red><b>Utilisateur $1, vous êtes déjà identifié&nbsp;!</b></font><br />";s:5:"login";s:14:"Identification";s:11:"loginprompt";s:74:"Vous devez accepter les cookies pour pouvoir vous connecter à Wikipédia.";s:9:"userlogin";s:14:"Identification";s:6:"logout";s:12:"Déconnexion";s:10:"userlogout";s:12:"Déconnexion";s:11:"notloggedin";s:13:"Non connecté";s:13:"createaccount";s:24:"Créer un nouveau compte";s:17:"createaccountmail";s:12:"par courriel";s:9:"badretype";s:67:"Les deux mots de passe que vous avez saisis ne sont pas identiques.";s:10:"userexists";s:91:"Le nom d'utilisateur que vous avez saisi est déjà utilisé. Veuillez en choisir un autre.";s:9:"youremail";s:25:"Mon adresse électronique";s:12:"yourrealname";s:10:"Votre nom*";s:8:"yournick";s:32:"Mon surnom (pour les signatures)";s:12:"emailforlost";s:126:"Si vous égarez votre mot de passe, vous pouvez demander à ce qu'un nouveau vous soit envoyé à votre adresse électronique.";s:19:"prefs-help-userdata";s:318:"* <strong>Votre nom</strong> (optionel): si vous le spécifiez, il sera utilisé pour l'attribution de vos contributions.
+* <strong>Adresse électronique</strong> (optionel): permet de vous contacter depuis le site sans dévoiler votre adresse, et utilisée pour vous envoyer un nouveau mot de passe si vous l'oubliez.";s:10:"loginerror";s:26:"Problème d'identification";s:12:"nocookiesnew";s:275:"Le compte utilisateur a été créé mais vous n'êtes pas connecté. Wikipédia utilise les cookies pour enregistrer les utilisateurs. Votre navigateur n'accepte pas les cookies. Merci d'en modifier les réglages puis connectez-vous avec votre nouveau login et mot de passe.";s:14:"nocookieslogin";s:122:"Wikipédia utilise les cookies pour la connexion. Vos cookies sont désactivés. Merci de les activer et reconnectez-vous.";s:6:"noname";s:43:"Vous n'avez pas saisi de nom d'utilisateur.";s:17:"loginsuccesstitle";s:24:"Identification réussie.";s:12:"loginsuccess";s:70:"Vous êtes actuellement connecté sur Wikipédia en tant que « $1 ».";s:10:"nosuchuser";s:163:"L'utilisateur "$1" n'existe pas.
+Vérifiez que vous avez bien orthographié le nom, ou utilisez le formulaire ci-dessous pour créer un nouveau compte utilisateur.";s:13:"wrongpassword";s:50:"Le mot de passe est incorrect. Essayez à nouveau.";s:14:"mailmypassword";s:35:"Envoyez-moi un nouveau mot de passe";s:21:"passwordremindertitle";s:41:"Votre nouveau mot de passe sur Wikipédia";s:20:"passwordremindertext";s:290:"Quelqu'un (probablement vous) ayant l'adresse IP $1 a demandé à ce qu'un nouveau mot de passe vous soit envoyé pour votre accès au wiki.
+Le mot de passe de l'utilisateur "$2" est à présent "$3".
+Nous vous conseillons de vous connecter et de modifier ce mot de passe dès que possible.";s:7:"noemail";s:76:"Aucune adresse électronique n'a été enregistrée pour l'utilisateur "$1".";s:12:"passwordsent";s:143:"Un nouveau mot de passe a été envoyé à l'adresse électronique de l'utilisateur "$1".
+Veuillez vous identifier dès que vous l'aurez reçu.";s:8:"loginend";s:6:"&nbsp;";s:9:"mailerror";s:34:"Erreur en envoyant le courriel: $1";s:11:"bold_sample";s:13:"Texte en gras";s:8:"bold_tip";s:13:"Texte en gras";s:13:"italic_sample";s:14:"Texte italique";s:10:"italic_tip";s:17:"Texte en italique";s:11:"link_sample";s:15:"Exemple de lien";s:8:"link_tip";s:12:"Lien interne";s:14:"extlink_sample";s:33:"http://www.exemple.com comme lien";s:11:"extlink_tip";s:48:"Lien externe (ne pas oublier le prefixe http://)";s:15:"headline_sample";s:17:"Libellé du titre";s:12:"headline_tip";s:25:"Titre de deuxième niveau";s:11:"math_sample";s:35:"Tapez une formule mathématique ici";s:8:"math_tip";s:30:"Formule mathématiques (LaTeX)";s:13:"nowiki_sample";s:34:"Insérer un texte non formaté ici";s:10:"nowiki_tip";s:28:"Ignorer la mise en page wiki";s:12:"image_sample";s:11:"Exemple.jpg";s:9:"image_tip";s:29:"Image chargée sur le serveur";s:12:"media_sample";s:11:"Exemple.mp3";s:9:"media_tip";s:19:"Fichier multimédia";s:7:"sig_tip";s:28:"Votre signature avec la date";s:6:"hr_tip";s:44:"Ligne horizontale (à utiliser modérément)";s:7:"infobox";s:53:"Cliquez sur un bouton pour obtenir un texte d'exemple";s:13:"infobox_alert";s:138:"Entrez le texte que vous voulez formater.\n Il sera montré dans l'infobox pour pouvoir être copié-collé.\nExemple:\n$1\ndeviendra:\n$2";s:7:"summary";s:8:"Résumé";s:7:"subject";s:11:"Sujet/titre";s:9:"minoredit";s:21:"Modification mineure.";s:9:"watchthis";s:18:"Suivre cet article";s:11:"savearticle";s:11:"Sauvegarder";s:7:"preview";s:14:"Prévisualiser";s:11:"showpreview";s:17:"Prévisualisation";s:12:"blockedtitle";s:19:"Utilisateur bloqué";s:11:"blockedtext";s:213:"Votre compte utilisateur ou votre adresse IP ont été bloqués par $1 pour la raison suivante :<br />$2<p>Vous pouvez contacter $1 ou un des autres [[Wikipédia:Administrateurs|administrateurs]] pour en discuter.";s:18:"whitelistedittitle";s:26:"Login requis pour rédiger";s:17:"whitelistedittext";s:70:"Vous devez être [[Special:Userlogin|connecté]] pour pouvoir rédiger";s:18:"whitelistreadtitle";s:22:"Login requis pour lire";s:17:"whitelistreadtext";s:79:"Vous devez être [[Special:Userlogin|connecté]] pour pouvoir lire les articles";s:17:"whitelistacctitle";s:46:"Vous n'êtes pas autorisé à créer un compte";s:16:"whitelistacctext";s:124:"Pour créer un compte sur ce Wiki, vous devez être [[Special:Userlogin|connecté]] et disposer des permissions appropriées";s:13:"loginreqtitle";s:29:"Nom d'utilisateur nécessaire";s:12:"loginreqtext";s:75:"Vous devez vous [[Special:Userlogin|connecter]] pour voir les autres pages.";s:12:"accmailtitle";s:21:"Mot de passe envoyé.";s:11:"accmailtext";s:46:"Le mot de passe de '$1' a été envoyé à $2.";s:10:"newarticle";s:9:"(Nouveau)";s:14:"newarticletext";s:617:"<div style="font-size:small;color:#003333;border-width:1px;border-style:solid;border-color:#aaaaaa;padding:3px">Vous êtes sur une page qui n'existe pas encore. Pour créer cette page, entrez votre texte dans la boîte ci-dessous (consulter '''[[Wikipedia:Aide|aide]]''' pour plus d'informations). Si vous êtes ici par erreur, cliquez sur le bouton ''retour'' de votre navigateur. Vos modifications, une fois enregistrées, seraient immédiatement visibles dans l'encyclopédie&nbsp;: si vous désirez seulement tester le fonctionnement, merci de le faire sur cette [[Wikipédia:Bac à sable|page d'essai]]'''.</div>";s:12:"talkpagetext";s:31:"<!-- MediaWiki:talkpagetext -->";s:16:"anontalkpagetext";s:539:"---- ''Ceci est la page de discussion pour un utilisateur anonyme qui n'a pas encore créé un compte ou qui ne l'utilise pas. Pour cette raison, nous devons utiliser l'[[adresse IP]] numérique pour l'identifier. Une adresse de ce type peut être partagée entre plusieurs utilisateurs. Si vous êtes un utilisateur anonyme et si vous constatez que des commentaires qui ne vous concernent pas vous ont été adressés, vous pouvez [[Special:Userlogin|créer un compte ou vous connecter]] afin d'éviter toute future confusion à l'avenir.";s:13:"noarticletext";s:52:"(Il n'y a pour l'instant aucun texte sur cette page)";s:14:"clearyourcache";s:216:"'''Note :''' Après avoir sauvegardé, vous devez forcer le rechargement de la page pour voir les changements : '''Mozilla / Konqueror:''' ''ctrl-r'', '''Firefox / IE / Opera:''' ''ctrl-f5'', '''Safari:''' ''cmd-r''.";s:22:"usercssjsyoucanpreview";s:90:"<strong>Tip:</strong> Use the 'Show preview' button to test your new css/js before saving.";s:14:"usercsspreview";s:85:"'''Remember that you are only previewing your user css, it has not yet been saved!'''";s:13:"userjspreview";s:100:"'''Remember that you are only testing/previewing your user javascript, it has not yet been saved!'''";s:7:"updated";s:13:"(Mis à jour)";s:4:"note";s:24:"<strong>Note :</strong> ";s:11:"previewnote";s:93:"Attention, ce texte n'est qu'une prévisualisation et n'a pas encore été sauvegardé&nbsp;!";s:15:"previewconflict";s:94:"La prévisualisation montre le texte de cette page tel qu'il apparaîtra une fois sauvegardé.";s:7:"editing";s:18:"modification de $1";s:11:"sectionedit";s:10:" (section)";s:11:"commentedit";s:14:" (commentaire)";s:12:"editconflict";s:28:"Conflit de modification : $1";s:15:"explainconflict";s:389:"<b>Cette page a été sauvegardée alors que vous aviez commencé à la modifier. La zone d'édition supérieure contient le texte tel qu'il est enregistré actuellement dans la base de données. Vos modifications apparaissent dans la zone d'édition inférieure. Vous allez devoir apporter vos modifications au texte existant. Seul le texte de la zone supérieure sera sauvegardé.</b><p>";s:8:"yourtext";s:11:"Votre texte";s:13:"storedversion";s:20:"Version enregistrée";s:10:"editingold";s:193:"<strong>Attention : vous êtes en train de modifier une version obsolète de cette page. Si vous sauvegardez, toutes les modifications effectuées depuis cette version seront perdues.</strong>
+";s:8:"yourdiff";s:12:"Différences";s:16:"copyrightwarning";s:501:"Toutes les contributions à Wikipédia sont considérées comme publiées sous les termes de la GNU Free Documentation Licence, une licence de documentation libre (Voir $1 pour plus de détails). Si vous ne désirez pas que vos écrits soient édités et distribués à volonté, ne les envoyez pas. De même, merci de ne contribuer qu'en apportant vos propres écrits ou des écrits issus d'une source libre de droits. <b>N'UTILISEZ PAS DE TRAVAUX SOUS COPYRIGHT SANS AUTORISATION EXPRESSE&nbsp;!</b>";s:15:"longpagewarning";s:244:"AVERTISSEMENT : cette page a une longueur de $1 ko&nbsp;;
+certains navigateurs gèrent mal les pages approchant ou dépassant 32 ko lors de leur rédaction.
+Peut-être serait-il préférable que vous divisiez la page en sections plus petites.";s:15:"readonlywarning";s:201:"AVERTISSEMENT : cette page a été bloquée pour maintenance, vous ne pourrez donc pas sauvegarder vos modifications maintenant. Vous pouvez copier le texte dans un fichier et le sauver pour plus tard.";s:20:"protectedpagewarning";s:253:"AVERTISSEMENT&nbsp;: cette page a été bloquée.
+Seuls les utilisateurs ayant le statut d'administrateur peuvent la modifier. Soyez certain que vous suivez les <a href="/wiki/Wikipédia:Page protégée">directives concernant les pages protégées</a>.";s:10:"revhistory";s:22:"Versions précédentes";s:9:"nohistory";s:45:"Il n'existe pas d'historique pour cette page.";s:11:"revnotfound";s:19:"Version introuvable";s:15:"revnotfoundtext";s:136:"La version précédente de cette page n'a pas pu être retrouvée. Vérifiez l'URL que vous avez utilisée pour accéder à cette page.
+";s:8:"loadhist";s:37:"Chargement de l'historique de la page";s:10:"currentrev";s:16:"Version actuelle";s:12:"revisionasof";s:13:"Version du $1";s:3:"cur";s:4:"actu";s:4:"next";s:4:"suiv";s:4:"last";s:4:"dern";s:4:"orig";s:4:"orig";s:10:"histlegend";s:134:"Légende : (actu) = différence avec la version actuelle ,
+(dern) = différence avec la version précédente, M = modification mineure";s:10:"difference";s:33:"(Différences entre les versions)";s:10:"loadingrev";s:49:"chargement de l'ancienne version pour comparaison";s:6:"lineno";s:15:"Ligne $1&nbsp;:";s:11:"editcurrent";s:42:"Modifier la version actuelle de cette page";s:25:"selectnewerversionfordiff";s:37:"Select a newer version for comparison";s:25:"selectolderversionfordiff";s:38:"Select an older version for comparison";s:23:"compareselectedversions";s:37:"Comparer les versions sélectionnées";s:13:"searchresults";s:25:"Résultat de la recherche";s:14:"searchhelppage";s:20:"Wikipédia:Recherche";s:18:"searchingwikipedia";s:24:"Chercher dans Wikipédia";s:16:"searchresulttext";s:67:"Pour plus d'informations sur la recherche dans Wikipédia, voir $1.";s:11:"searchquery";s:25:"Pour la requête « $1 »";s:8:"badquery";s:22:"Requête mal formulée";s:12:"badquerytext";s:289:"Nous n'avons pas pu traiter votre requête.
+Vous avez probablement recherché un mot d'une longueur inférieure
+à trois lettres, ce qui n'est pas encore possible. Vous avez
+aussi pu faire une erreur de syntaxe, telle que « poisson et
+et écailles ».
+Veuillez essayer une autre requête.";s:11:"matchtotals";s:82:"La requête "$1" correspond à $2 titre(s)
+d'article et au texte de $3 article(s).";s:9:"nogomatch";s:70:"Aucune page avec ce titre n'existe, essai avec la recherche complète.";s:12:"titlematches";s:31:"Correspondances dans les titres";s:14:"notitlematches";s:58:"Aucun titre d'article ne contient le(s) mot(s) demandé(s)";s:11:"textmatches";s:31:"Correspondances dans les textes";s:13:"notextmatches";s:58:"Aucun texte d'article ne contient le(s) mot(s) demandé(s)";s:5:"prevn";s:15:"$1 précédents";s:5:"nextn";s:11:"$1 suivants";s:12:"viewprevnext";s:20:"Voir ($1) ($2) ($3).";s:14:"showingresults";s:58:"Affichage de <b>$1</b> résultats à partir du #<b>$2</b>.";s:17:"showingresultsnum";s:58:"Affichage de <b>$3</b> résultats à partir du #<b>$2</b>.";s:9:"nonefound";s:291:"<strong>Note</strong>&nbsp;: l'absence de résultat est souvent due à l'emploi de termes de recherche trop courants, comme "à" ou "de", qui ne sont pas indexés, ou à l'emploi de plusieurs termes de recherche (seules les pages
+contenant tous les termes apparaissent dans les résultats).";s:11:"powersearch";s:9:"Recherche";s:15:"powersearchtext";s:103:"Rechercher dans les espaces :<br>
+$1<br>
+$2 Inclure les pages de redirections &nbsp; Rechercher $3 $9";s:14:"searchdisabled";s:306:"<p>La fonction de recherche sur l'intégralité du texte a été temporairement désactivée à cause de la grande charge que cela impose au serveur. Nous espérons la rétablir prochainement lorsque nous disposerons d'un serveur plus puissant. En attendant, vous pouvez faire la recherche avec Google:</p>";s:12:"googlesearch";s:1136:"<!-- SiteSearch Google -->
+<FORM method=GET action="http://www.google.com/search">
+<TABLE bgcolor="#FFFFFF"><tr><td>
+<A HREF="http://www.google.com/">
+<IMG SRC="http://www.google.com/logos/Logo_40wht.gif"
+border="0" ALT="Google"></A>
+</td>
+<td>
+<INPUT TYPE=text name=q size=31 maxlength=255 value="$1">
+<INPUT type=submit name=btnG VALUE="Google Search">
+<font size=-1>
+<input type=hidden name=domains value="http://fr.wikipedia.org"><br><input type=radio
+name=sitesearch value=""> WWW <input type=radio name=sitesearch
+value="http://fr.wikipedia.org" checked> http://fr.wikipedia.org <br>
+<input type='hidden' name='ie' value='$2'>
+<input type='hidden' name='oe' value='$2'>
+</font>
+</td></tr></TABLE>
+</FORM>
+
+<!-- Vous pouvez utiliser le lien suivant pour créer un article portant ce nom si cet article n'existe pas encore ou pour l'éditer s'il existe: <a href="/w/wiki.phtml?title=$1&action=edit">$1</a>
+-->
+<br><br>
+<b>Note</b>: Nous vous recommandons de chercher dans Wikipédia avant de créer un nouvel article, afin d'éviter de dupliquer un article existant sous un autre nom ou une autre orthographe.";s:14:"blanknamespace";s:11:"(Principal)";s:11:"preferences";s:13:"Préférences";s:12:"prefsnologin";s:13:"Non connecté";s:16:"prefsnologintext";s:111:"Vous devez être <a href="/wiki/Special:Userlogin">connecté</a>
+pour modifier vos préférences d'utilisateur.";s:14:"prefslogintext";s:164:"Je suis connecté(e) en tant que $1 avec le numéro d'utilisateur $2.
+
+Voir [[Wikipédia:Aide pour les préférences]] pour les explications concernant les options.";s:10:"prefsreset";s:76:"Les préférences ont été rétablies à partir de la version enregistrée.";s:10:"qbsettings";s:37:"Personnalisation de la barre d'outils";s:14:"qbsettingsnote";s:72:"This preference only works in the 'Standard' and the 'CologneBlue' skin.";s:14:"changepassword";s:28:"Modification du mot de passe";s:4:"skin";s:9:"Apparence";s:4:"math";s:15:"Rendu des maths";s:10:"dateformat";s:14:"Format de date";s:12:"math_failure";s:11:"Erreur math";s:18:"math_unknown_error";s:21:"erreur indéterminée";s:21:"math_unknown_function";s:17:"fonction inconnue";s:17:"math_lexing_error";s:15:"erreur lexicale";s:17:"math_syntax_error";s:17:"erreur de syntaxe";s:16:"math_image_error";s:31:"La conversion en PNG a échoué";s:15:"math_bad_tmpdir";s:62:"Ne peux pas crééer ou écrire dans le répertoire temporaire";s:15:"math_bad_output";s:61:"Ne peux pas crééer ou écrire dans le répertoire de sortie";s:12:"math_notexvc";s:78:"L'éxécutable 'texvc' est in trouvable. Lisez math/README pour le configurer.";s:14:"prefs-personal";s:25:"Informations personnelles";s:8:"prefs-rc";s:50:"Modifications récentes et affichage des ébauches";s:10:"prefs-misc";s:22:"Préférences diverses";s:9:"saveprefs";s:29:"Enregistrer les préférences";s:10:"resetprefs";s:27:"Rétablir les préférences";s:11:"oldpassword";s:19:"Ancien mot de passe";s:11:"newpassword";s:20:"Nouveau mot de passe";s:9:"retypenew";s:33:"Confirmer le nouveau mot de passe";s:11:"textboxsize";s:32:"Taille de la fenêtre d'édition";s:4:"rows";s:8:"Rangées";s:7:"columns";s:8:"Colonnes";s:17:"searchresultshead";s:37:"Affichage des résultats de recherche";s:14:"resultsperpage";s:28:"Nombre de réponses par page";s:12:"contextlines";s:29:"Nombre de lignes par réponse";s:12:"contextchars";s:43:"Nombre de caractères de contexte par ligne";s:13:"stubthreshold";s:35:"Taille minimale des articles courts";s:18:"recentchangescount";s:49:"Nombre de titres dans les modifications récentes";s:10:"savedprefs";s:42:"Les préférences ont été sauvegardées.";s:14:"timezonelegend";s:9:"Time zone";s:12:"timezonetext";s:103:"Si vous ne précisez pas de décalage horaire, c'est l'heure de l'Europe de l'ouest qui sera utilisée.";s:9:"localtime";s:12:"Heure locale";s:14:"timezoneoffset";s:17:"Décalage horaire";s:10:"servertime";s:16:"Heure du serveur";s:13:"guesstimezone";s:32:"Utiliser la valeur du navigateur";s:9:"emailflag";s:71:"Ne pas recevoir de courrier électronique<br /> des autres utilisateurs";s:9:"defaultns";s:42:"Par défaut, rechercher dans ces espaces :";s:7:"changes";s:13:"modifications";s:13:"recentchanges";s:23:"Modifications récentes";s:17:"recentchangestext";s:736:"Suivez sur cette page les dernières modifications de Wikipédia.
+[[Wikipédia:Bienvenue|Bienvenue]] aux nouveaux participants&nbsp;!
+Jetez un coup d'œil sur ces pages&nbsp;: [[Wikipédia:FAQ|foire aux questions]],
+[[Wikipédia:Règles|recommandations et règles à suivre]]
+(notamment [[Wikipédia:Règles de nommage|conventions de nommage]],
+[[Wikipédia:La neutralité de point de vue|la neutralité de point de vue]]),
+et [[Wikipédia:Les faux-pas les plus courants|les faux-pas les plus courants]].
+
+Si vous voulez que Wikipédia connaisse le succès, merci de ne pas y inclure pas de matériaux protégés par des [[Wikipédia:Copyright|copyrights]]. La responsabilité juridique pourrait en effet compromettre le projet.";s:9:"rcloaderr";s:39:"Chargement des dernières modifications";s:6:"rcnote";s:115:"Voici les <strong>$1</strong> dernières modifications effectuées au cours des <strong>$2</strong> derniers jours.";s:10:"rcnotefrom";s:89:"Voici les modifications effectuées depuis le <strong>$2</strong> (<b>$1</b> au maximum).";s:10:"rclistfrom";s:50:"Afficher les nouvelles modifications depuis le $1.";s:13:"showhideminor";s:68:"$1 modifications mineures | $2 robots | $3 utilisateurs enregistrés";s:7:"rclinks";s:94:"Afficher les $1 dernières modifications effectuées au cours des $2 derniers jours&nbsp;; $3.";s:6:"rchide";s:117:"dans $4 formulaires&nbsp;; $1 modifications mineures&nbsp;; $2 espaces secondaires&nbsp;; $3 modifications multiples.";s:5:"rcliu";s:51:"; $1 modifications par des contributeurs connectés";s:4:"diff";s:4:"diff";s:4:"hist";s:4:"hist";s:4:"hide";s:6:"cacher";s:4:"show";s:7:"montrer";s:9:"tableform";s:5:"table";s:8:"listform";s:5:"liste";s:8:"nchanges";s:18:"$1 modification(s)";s:15:"minoreditletter";s:1:"M";s:13:"newpageletter";s:1:"N";s:6:"upload";s:18:"Importer une image";s:9:"uploadbtn";s:17:"Copier un fichier";s:10:"uploadlink";s:17:"Copier des images";s:8:"reupload";s:17:"Copier à nouveau";s:12:"reuploaddesc";s:21:"Retour au formulaire.";s:13:"uploadnologin";s:16:"Non connecté(e)";s:17:"uploadnologintext";s:105:"Vous devez être <a href="/wiki/Special:Userlogin">connecté</a>
+pour copier des fichiers sur le serveur.";s:10:"uploadfile";s:17:"Copier un fichier";s:11:"uploaderror";s:6:"Erreur";s:10:"uploadtext";s:8138:"<font size="+1" color="red"><b>Attention&nbsp;:</b> Assurez vous d'avoir consulté les indications données ci-dessous avant tout téléchargement.</font>
+
+<h3>Règles d'envoi</h3>
+
+Avant de copier votre fichier sur le serveur, <b>prenez connaissance des <a href="http://fr.wikipedia.org/wiki/Wikipédia:Règles_d'utilisation_des_images">règles d'utilisation des images</a></b> de Wikipédia et assurez-vous que vous les <b>respectez</b>.
+
+<ul>
+<li>Utiliser un nom clair et détaillé pour l'image afin qu'elle n'entre pas en conflit avec d'autres images&nbsp;;
+<li> Remplir la <a href="http://fr.wikipedia.org/wiki/Wikipédia:page_de_description_d'une_image">page de description de l'image</a>, notamment pour y inscrire le statut du copyright et la source de l'image&nbsp;;
+<li> Être vigilant sur les <a href="http://fr.wikipedia.org/wiki/Wikipédia:Copyright">copyrights</a> sans tomber dans la paranoïa. Pour l'utilisation de la doctrine <a href="http://fr.wikipedia.org/wiki/fair use">fair use</a>, merci de respecter les indications fournies <a href="http://fr.wikipedia.org/wiki/Wikipédia:Fair use">ici</a>&nbsp;;
+<li> Ne pas mettre les crédits (source, remerciement, informations, etc.) de l'image dans l'article, mais dans la page de description&nbsp;;
+<li> Si vous uploadez une image depuis une autre wikipédia, merci d'indiquer le lien complet vers la page de description de l'image dupliquée.
+</ul>
+
+
+
+<h3>Il est possible (et recommandé) d'utiliser un des messages suivants</h3>
+Ces messages sont prédéfinis et permettent de clairement indiquer la licence d'une image. Gardez à l'esprit que ces messages nous permettront de classer ultérieurement les images selon certaines catégories, et donc de fournir une plus grande information à l'utilisateur final (et par exemple, de permettre le téléchargement de Wikipédia sans les images sous fair use, pour usage dans les pays pour lesquels le fair use n'est pas reconnu) :
+<ul>
+<li>Cette image fait partie du [[domaine public]], soit par ce que son auteur a renoncé à ses droits (''copyright''), soit parce que ses droits ont expiré. Elle est donc librement diffusable et/ou modifiable, mais ne peut faire l'objet de nouveaux droits d'auteurs. : image du <a href="http://fr.wikipedia.org/wiki/Domaine public">domaine public</a>
+<li>Cette image est soumise à des droits d'auteurs. Son utilisation est soutenue comme étant une utilisation juste (''[[Fair use]]'') en vertu de loi des États-Unis.
+
+<small>'''Note''' : La validité de cette utilisation est mise en doute, notamment par le fait qu'une telle loi n'existe pas dans de nombreux pays. Il est donc recommandé de ne pas l'utiliser avant que sa validité soit établie.</small> : image utilisée en <a href="http://fr.wikipedia.org/wiki/Fair use">fair use</a>
+<li>[[Image:Gnu head.png|left|]] Vous avez la permission de copier, distribuer et/ou modifier ce document selon les termes de la [[GFDL|Licence de documentation libre GNU]], version 1.2 ou plus récente publiée par la [[Free Software Foundation]]; sans sections inaltérables, sans texte de première page de couverture et sans texte de dernière page de couverture.
+
+Copyright © : image sous licence <a href="http://fr.wikipedia.org/wiki/Licence de documentation libre GNU">Licence de documentation libre GNU (GFDL)</a>
+<li><!-- Creative Commons License -->
+[[Image:Cc-GPL.png|GNU GPL (cc)]]<br>
+L'image ci-dessus est diffusée sous license [http://creativecommons.org/licenses/GPL/2.0/ CC-GNU GPL].<br>
+Voir aussi: [[Licence publique générale GNU]], [[Creative Commons]]
+<!-- /Creative Commons License -->
+
+<!--
+
+<rdf:RDF xmlns="http://web.resource.org/cc/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<Work rdf:about="">
+ <license rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
+</Work>
+
+<License rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
+ <permits rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <permits rdf:resource="http://web.resource.org/cc/Distribution" />
+ <requires rdf:resource="http://web.resource.org/cc/Notice" />
+ <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <requires rdf:resource="http://web.resource.org/cc/SourceCode" />
+</License>
+
+</rdf:RDF>
+
+--> : image sous licence <a href="http://fr.wikipedia.org/wiki/Licence publique générale GNU">Licence publique générale GNU (GPL)</a>
+<li><!-- Creative Commons License -->
+[[Image:Cc-LGPL.png|GNU LGPL (cc)]]<br>
+L'image ci-dessus est diffusée sous license [http://creativecommons.org/licenses/LGPL/2.1/ CC-GNU LGPL].<br>
+Voir aussi: [[Lesser GNU Public License]], [[Creative Commons]]
+<!-- /Creative Commons License -->
+<!--
+
+<rdf:RDF xmlns="http://web.resource.org/cc/"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<Work rdf:about="">
+ <license rdf:resource="http://creativecommons.org/licenses/LGPL/2.1/" />
+</Work>
+
+<License rdf:about="http://creativecommons.org/licenses/LGPL/2.1/">
+ <permits rdf:resource="http://web.resource.org/cc/Reproduction" />
+ <permits rdf:resource="http://web.resource.org/cc/Distribution" />
+ <requires rdf:resource="http://web.resource.org/cc/Notice" />
+ <permits rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
+ <requires rdf:resource="http://web.resource.org/cc/ShareAlike" />
+ <requires rdf:resource="http://web.resource.org/cc/SourceCode" />
+</License>
+
+</rdf:RDF>
+
+--> : image sous licence <a href="http://fr.wikipedia.org/wiki/Licence publique générale limitée GNU">Licence publique générale limitée GNU (LGPL)</a>
+<li>Copyleft : cette Å“uvre est libre, vous pouvez la redistribuer et/ou la modifier selon les termes de la Licence Art Libre.
+
+Vous trouverez un exemplaire de cette Licence sur le site Copyleft Attitude http://www.artlibre.org/ ainsi que sur d'autres sites.
+
+Copyright © : image sous licence <a href="http://www.artlibre.org/">Art libre (http://www.artlibre.org/)</a>
+<li>[[Image:cc_somerights.png|Creative Commons License]] [[image:cc_attrib.png|by]] [[image:cc_standard.png|sa]]<br>
+Les droits de l'image ci-dessus sont régi par la [http://creativecommons.org/projects/international/fr/translated-license licence Creative Commons] ([http://creativecommons.org/licenses/by-sa/1.0 v.o.]). Et plus precisement par la [[licence Creative Commons|licence]] ''Attribution-Sharealike'' de [[Creative Commons]], plus connus sous le nom de "cc-by-sa". : image sous licence <a href="http://creativecommons.org/licenses/by-sa/1.0/">Creative Commons Share-Alike</a>
+</ul>
+
+<hr>
+
+<h3>Suppression des images pour non respect des règles communautaires</h3>
+
+N'oubliez pas que, comme toutes les pages de Wikipédia, les fichiers que vous copiez peuvent être modifiés ou supprimés par les autres utilisateurs s'ils estiment que cela est dans l'intérêt de l'encyclopédie, en particulier en cas de non respect des règles de copyright et de description d'image. Sachez aussi que votre accès au serveur peut être bloqué si vous faites un mauvais usage répété du système.<br/>
+
+<b>Toute image paraissant visiblement sous copyright, et sans indication claire de provenance ou d'indication d'usage sour fair use, pourra être supprimée sans préavis.</b>
+<br />
+
+<hr>
+
+<h3>Pour plus d'information</h3>
+
+Pour voir les images déjà placées sur le serveur ou pour effectuer une recherche parmi celles-ci, allez à la <a href="http://fr.wikipedia.org/wiki/Special:Imagelist">liste des images</a>.
+
+<br /><br />
+Si vous voulez des informations sur la procédure de téléchargement, consulter la page <a href="http://fr.wikipedia.org/wiki/ Wikipédia:Comment charger un fichier">Wikipédia:Comment charger un fichier</a>.
+
+<br /><br />
+Si vous voulez des informations sur la façon d'insérer votre fichier dans un article de Wikipédia, consulter la page <a href="http://fr.wikipedia.org/wiki/ Wikipédia:Image">Wikipédia:Image</a>.
+
+<hr>
+<br /><br />";s:9:"uploadlog";s:12:"log d'upload";s:13:"uploadlogpage";s:12:"Log_d'upload";s:17:"uploadlogpagetext";s:118:"Voici la liste des derniers fichiers copiés sur le serveur.
+L'heure indiquée est celle du serveur (UTC).
+<ul>
+</ul>
+";s:8:"filename";s:3:"Nom";s:8:"filedesc";s:11:"Description";s:10:"filestatus";s:19:"Statut du copyright";s:10:"filesource";s:6:"Source";s:11:"affirmation";s:249:"Je déclare avoir pris connaissance des <a href="http://fr.wikipedia.org/wiki/Wikipédia:Règles_d'utilisation_des_images">règles d'utilisation des fichiers</a> et que le détenteur de son copyright accepte de le diffuser selon les termes de la $1.";s:13:"copyrightpage";s:20:"Wikipédia:Copyright";s:17:"copyrightpagename";s:18:"licence Wikipédia";s:13:"uploadedfiles";s:16:"Fichiers copiés";s:13:"noaffirmation";s:73:"Vous devez confirmer que la copie de ce fichier ne viole aucun copyright.";s:13:"ignorewarning";s:57:"Ignorer l'avertissement et copier le fichier quand même.";s:9:"minlength";s:61:"Les noms des images doivent comporter au moins trois lettres.";s:11:"badfilename";s:35:"L'image a été renommée « $1 ».";s:11:"badfiletype";s:67:"« .$1 » n'est pas un format recommandé pour les fichiers images.";s:9:"largefile";s:60:"La taille maximale conseillée pour les images est de 100Ko.";s:16:"successfulupload";s:14:"Copie réussie";s:12:"fileuploaded";s:259:"Le fichier "$1" a été copié sur le serveur.
+Suivez ce lien: ($2) pour accéder à la page de description, et donner des informations sur le fichier, par exemple son origine, sa date de création, son auteur, ou tout autre renseignement en votre possession.";s:13:"uploadwarning";s:16:"Attention&nbsp;!";s:8:"savefile";s:22:"Sauvegarder le fichier";s:13:"uploadedimage";s:30:"« $1 » copié sur le serveur";s:14:"uploaddisabled";s:45:"Désolé, l'envoi de fichier est désactivé.";s:9:"imagelist";s:16:"Liste des images";s:13:"imagelisttext";s:42:"Voici une liste de $1 images classées $2.";s:12:"getimagelist";s:37:"Récupération de la liste des images";s:11:"ilshowmatch";s:48:"Afficher toutes les images dont le nom contient ";s:8:"ilsubmit";s:8:"Chercher";s:8:"showlast";s:47:"Afficher les $1 dernières images classées $2.";s:3:"all";s:6:"toutes";s:6:"byname";s:7:"par nom";s:6:"bydate";s:8:"par date";s:6:"bysize";s:10:"par taille";s:9:"imgdelete";s:5:"suppr";s:7:"imgdesc";s:5:"descr";s:9:"imglegend";s:64:"Légende: (descr) = afficher/modifier la description de l'image.";s:10:"imghistory";s:21:"Historique de l'image";s:9:"revertimg";s:6:"rétab";s:9:"deleteimg";s:5:"suppr";s:13:"imghistlegend";s:208:"Légende: (actu) = ceci est l'image actuelle, (suppr) = supprimer
+cette ancienne version, (rétab) = rétablir cette ancienne version.
+<br /><i>Cliquez sur la date pour voir l'image copiée à cette date</i>.";s:10:"imagelinks";s:18:"Liens vers l'image";s:12:"linkstoimage";s:57:"Les pages ci-dessous comportent un lien vers cette image:";s:14:"nolinkstoimage";s:49:"Aucune page ne comporte de lien vers cette image.";s:10:"statistics";s:12:"Statistiques";s:9:"sitestats";s:20:"Statistiques du site";s:9:"userstats";s:24:"Statistiques utilisateur";s:13:"sitestatstext";s:634:"La base de données contient actuellement <b>$1</b> pages.
+
+Ce chiffre inclut les pages "discussion", les pages relatives à Wikipédia, les pages minimales ("bouchons"), les pages de redirection, ainsi que d'autres pages qui ne peuvent sans doute pas être considérées comme des articles.
+Si l'on exclut ces pages, il reste <b>$2</b> pages qui sont probablement de véritables articles.<p>
+<b>$3</b> pages ont été consultées et <b>$4</b> pages modifiées
+
+depuis la mise à jour du logiciel (31 octobre 2002).
+Cela représente une moyenne de <b>$5</b> modifications par page et de <b>$6</b> consultations pour une modification.";s:13:"userstatstext";s:882:"Il y a '''$1''' utilisateurs enregistrés.
+Parmi ceux-ci, '''$2''' ont le statut d'[[Wikipédia:Administrateur|administrateur]].
+
+'''Voir aussi:'''
+* les statistiques d'accès au serveur web http://fr.wikipedia.org/stats/
+* statistiques d'utilisation:
+** [http://www.wikipedia.org/wikistats/FR/Sitemap.htm la branche francophone]
+** [http://www.wikipedia.org/wikistats/FR/ChartsWikipediaFR.htm toutes les branches]
+
+== Classement alexa ==
+D'après [http://www.alexa.com Alexa.com], Wikipédia.org est aujourd'hui le projet encyclopédique à contenu libre le plus important et présentant le plus fort taux de croissance au monde, dépassant à la fois Britannica.com et Encyclopedia.com en terme de trafic sur [[Internet]].
+
+* Classement comparé Alexa avec d'autres sites: [http://meta.wikipedia.org/wiki/Wikipedia.org_is_more_popular_than... Wikipédia est plus populaire que...]";s:11:"maintenance";s:19:"Page de maintenance";s:18:"maintnancepagetext";s:188:"Cette page inclut plusieurs utilitaires pour la maintenance quotidienne. Certains de ces outils ont tendance à charger la base de données; ne rechargez pas la page a chaque modification.";s:19:"maintenancebacklink";s:32:"Retour à la page de maintenance";s:15:"disambiguations";s:17:"Pages d'homonymie";s:19:"disambiguationspage";s:38:"Wikipédia:Liens_aux_pages_d'homonymie";s:19:"disambiguationstext";s:270:"Les articles suivants sont liés à une <i>page d'homonymie</i>. Or, ils devraient être liés au sujet.<br />Une page est considérée comme page d'homonymie si elle est liée à partir de $1.<br />Les liens à partir d'autres <i>espaces</i> ne sont pas pris en compte.";s:15:"doubleredirects";s:18:"Double redirection";s:19:"doubleredirectstext";s:390:"<b>Attention:</b> cette liste peut contenir des « faux positifs ». Dans ce cas, la page du premier #REDIRECT contient probablement aussi du texte.<br/>Chaque ligne contient les liens à la première et seconde pages de redirection, ainsi que la première ligne de cette dernière, qui donne normalement la « vraie » destination. Le premier #REDIRECT devrait lier vers cette destination.";s:15:"brokenredirects";s:21:"Redirections cassées";s:19:"brokenredirectstext";s:55:"Ces redirections mènent sur une page qui n'existe pas.";s:9:"selflinks";s:28:"Page avec un lien circulaire";s:13:"selflinkstext";s:83:"Les pages suivantes contiennent un lien vers elles-mêmes, ce qui n'est pas permis.";s:11:"mispeelings";s:40:"Pages contenant des fautes d'orthographe";s:15:"mispeelingstext";s:146:"Les pages suivantes contiennent une faute d'orthographe courante (la liste de celles-ci est sur $1). L'orthographe correcte est peut-être (ceci).";s:15:"mispeelingspage";s:39:"Liste de fautes d'orthographe courantes";s:20:"missinglanguagelinks";s:29:"Liens inter-langues manquants";s:26:"missinglanguagelinksbutton";s:50:"Je n'ai pas trouvé de lien/langue pour cette page";s:24:"missinglanguagelinkstext";s:108:"Ces articles ne lient pas à leur 'contrepartie' in $1. Les redirections et les liens ne sont pas affichés.";s:7:"orphans";s:16:"Pages orphelines";s:11:"lonelypages";s:16:"Pages orphelines";s:12:"unusedimages";s:17:"Images orphelines";s:12:"popularpages";s:26:"Pages les plus consultées";s:6:"nviews";s:16:"$1 consultations";s:11:"wantedpages";s:25:"Pages les plus demandées";s:6:"nlinks";s:15:"$1 références";s:8:"allpages";s:16:"Toutes les pages";s:10:"randompage";s:18:"Une page au hasard";s:10:"shortpages";s:15:"Articles courts";s:9:"longpages";s:14:"Articles longs";s:12:"deadendpages";s:16:"Pages en impasse";s:9:"listusers";s:22:"Liste des participants";s:10:"listadmins";s:11:"Admins list";s:12:"specialpages";s:16:"Pages spéciales";s:9:"spheading";s:43:"Pages spéciales pour tous les utilisateurs";s:14:"sysopspheading";s:47:"Pages spéciales à l'usage des administrateurs";s:18:"developerspheading";s:45:"Pages spéciales à l'usage des développeurs";s:11:"protectpage";s:17:"Protéger la page";s:19:"recentchangeslinked";s:15:"Suivi des liens";s:6:"rclsub";s:26:"(des pages liées à "$1")";s:5:"debug";s:9:"Déboguer";s:8:"newpages";s:15:"Nouvelles pages";s:12:"ancientpages";s:25:"Articles les plus anciens";s:4:"intl";s:18:"Liens interlangues";s:4:"move";s:9:"Déplacer";s:12:"movethispage";s:17:"Déplacer la page";s:16:"unusedimagestext";s:225:"<p>N'oubliez pas que d'autres sites, comme certains Wikipédias non francophones, peuvent contenir un lien direct vers cette image, et que celle-ci peut être placée dans cette liste alors qu'elle est en réalité utilisée.";s:11:"booksources";s:23:"Ouvrages de référence";s:14:"booksourcetext";s:294:"Voici une liste de liens vers d'autres sites qui vendent des livres neufs et d'occasion et sur lesquels vous trouverez peut-être des informations sur les ouvrages que vous cherchez. Wikipédia n'étant liée à aucune de ces sociétés, elle n'a aucunement l'intention d'en faire la promotion.";s:4:"isbn";s:4:"ISBN";s:6:"rfcurl";s:35:"http://www.faqs.org/rfcs/rfc$1.html";s:14:"alphaindexline";s:8:"$1 à $2";s:7:"version";s:7:"Version";s:11:"mailnologin";s:13:"Pas d'adresse";s:15:"mailnologintext";s:235:"Vous devez être <a href="/wiki/Special:Userlogin">connecté</a>
+et avoir indiqué une adresse électronique valide dans vos <a href="/wiki/Special:Preferences">préférences</a>
+pour pouvoir envoyer un message à un autre utilisateur.";s:9:"emailuser";s:37:"Envoyer un message à cet utilisateur";s:9:"emailpage";s:36:"Envoyer un courriel à l'utilisateur";s:13:"emailpagetext";s:312:"Si cet utilisateur a indiqué une adresse électronique valide dans ses préférences, le formulaire ci-dessous lui enverra un message.
+L'adresse électronique que vous avez indiquée dans vos préférences apparaîtra dans le champ "Expéditeur" de votre message, afin que le destinataire puisse vous répondre.";s:15:"usermailererror";s:15:"Erreur de mail:";s:15:"defemailsubject";s:34:"courriel envoyé depuis Wikipédia";s:12:"noemailtitle";s:27:"Pas d'adresse électronique";s:11:"noemailtext";s:147:"Cet utilisateur n'a pas spécifié d'adresse électronique valide ou a choisi de ne pas recevoir de courrier électronique des autres utilisateurs.";s:9:"emailfrom";s:11:"Expéditeur";s:7:"emailto";s:12:"Destinataire";s:12:"emailsubject";s:5:"Objet";s:12:"emailmessage";s:7:"Message";s:9:"emailsend";s:7:"Envoyer";s:9:"emailsent";s:15:"Message envoyé";s:13:"emailsenttext";s:30:"Votre message a été envoyé.";s:9:"watchlist";s:14:"Liste de suivi";s:12:"watchlistsub";s:29:"(pour l'utilisateur « $1 »)";s:11:"nowatchlist";s:47:"Votre liste de suivi ne contient aucun article.";s:12:"watchnologin";s:13:"Non connecté";s:16:"watchnologintext";s:91:"Vous devez être <a href="/wiki/Special:Userlogin">connecté</a>
+pour modifier votre liste.";s:10:"addedwatch";s:19:"Ajouté à la liste";s:14:"addedwatchtext";s:444:"La page ''[[$1]]'' a été ajoutée à votre [[Special:Watchlist|liste de suivi]].
+Les prochaines modifications de cette page et de la page discussion associée seront répertoriées ici, et la page apparaîtra '''en gras''' dans la [[Special:Recentchanges|liste des modifications récentes]] pour être repérée plus facilement.
+
+Pour supprimer cette page de votre liste de suivi, cliquez sur « Ne plus suivre » dans le cadre de navigation.";s:12:"removedwatch";s:31:"Supprimée de la liste de suivi";s:16:"removedwatchtext";s:60:"La page « $1 » a été supprimée de votre liste de suivi.";s:5:"watch";s:6:"Suivre";s:13:"watchthispage";s:17:"Suivre cette page";s:7:"unwatch";s:14:"Ne plus suivre";s:15:"unwatchthispage";s:14:"Ne plus suivre";s:12:"notanarticle";s:13:"Aucun article";s:13:"watchnochange";s:82:"Aucune des pages que vous suivez n'a été modifiée pendant la période affichée";s:12:"watchdetails";s:118:"Vous suivez $1 pages, sans compter les pages de discussion. <a href='$4'>Afficher et modifier la liste complète</a>.";s:18:"watchmethod-recent";s:59:"vérification des modifications récentes des pages suivies";s:16:"watchmethod-list";s:64:"vérification des pages suivies pour des modifications récentes";s:13:"removechecked";s:56:"Retirer de la liste de suivi les articles sélectionnés";s:17:"watchlistcontains";s:38:"Votre liste de suivi contient $1 pages";s:13:"watcheditlist";s:189:"Ceci est votre liste de suivi par ordre alphabétique. Sélectionnez les pages que vous souhaitez retirer de la liste et cliquez le bouton "retirer de la liste de suivi" en bas de l'écran.";s:15:"removingchecked";s:68:"Les articles sélectionnés sont retirés de votre liste de suivi...";s:13:"couldntremove";s:39:"Impossible de retirer l'article '$1'...";s:15:"iteminvalidname";s:53:"Problème avec l'article '$1': le nom est invalide...";s:6:"wlnote";s:92:"Ci-dessous se trouve les $1 dernières modifications depuis les <b>$2</b> dernières heures.";s:10:"wlshowlast";s:44:"Montrer les dernières $1 heures $2 jours $3";s:7:"wlsaved";s:100:"La liste de suivi n'est remise à jour qu'une fois par heure pour alléger la charge sur le serveur.";s:10:"deletepage";s:18:"Supprimer une page";s:7:"confirm";s:9:"Confirmer";s:9:"excontent";s:9:"contenant";s:13:"exbeforeblank";s:36:"le contenu avant effacement était :";s:7:"exblank";s:9:"page vide";s:13:"confirmdelete";s:24:"Confirmer la suppression";s:9:"deletesub";s:25:"(Suppression de « $1 »)";s:14:"historywarning";s:82:"Attention, la page que vous êtes sur le point de supprimer a un historique&nbsp;:";s:17:"confirmdeletetext";s:380:"Vous êtes sur le point de supprimer définitivement de la base de données une page
+ou une image, ainsi que toutes ses versions antérieures.
+Veuillez confirmer que c'est bien là ce que vous voulez faire, que vous en comprenez les conséquences et que vous faites cela en accord avec les [[Wikipédia:Recommandations Et Règles à Suivre|recommandations et règles à suivre]].";s:12:"confirmcheck";s:32:"Oui, je confirme la suppression.";s:14:"actioncomplete";s:22:"Suppression effectuée";s:11:"deletedtext";s:79:"« $1 » a été supprimé.
+Voir $2 pour une liste des suppressions récentes.";s:14:"deletedarticle";s:18:"a effacé « $1 »";s:10:"dellogpage";s:26:"Historique des effacements";s:14:"dellogpagetext";s:100:"Voici la liste des suppressions récentes.
+L'heure indiquée est celle du serveur (UTC).
+<ul>
+</ul>
+";s:11:"deletionlog";s:26:"historique des effacements";s:8:"reverted";s:42:"Rétablissement de la version précédente";s:13:"deletecomment";s:23:"Motif de la suppression";s:13:"imagereverted";s:42:"La version précédente a été rétablie.";s:8:"rollback";s:23:"révoquer modifications";s:14:"rollback_short";s:9:"Révoquer";s:12:"rollbacklink";s:9:"révoquer";s:14:"rollbackfailed";s:25:"La révocation a échoué";s:12:"cantrollback";s:81:"Impossible de révoquer: dernier auteur est le seul à avoir modifié cet article";s:13:"alreadyrolled";s:292:"Impossible de révoquer la dernière modification de [[$1]]
+par [[Utilisateur:$2|$2]] ([[Discussion Utilisateur:$2|Discuter]]); quelqu'un d'autre a déjà modifé ou révoqué l'article.
+
+La dernière modification était de [[Utilisateur:$3|$3]] ([[Discussion Utilisateur:$3|Discuter]]).";s:11:"editcomment";s:51:"Le résumé de la modification était: "<i>$1</i>".";s:10:"revertpage";s:46:"restitution de la dernière modification de $1";s:14:"protectlogpage";s:17:"Log_de_protection";s:14:"protectlogtext";s:84:"Voir les [[Wikipédia:Page protégée|directives concernant les pages protégées]].";s:16:"protectedarticle";s:18:"a protégé [[$1]]";s:18:"unprotectedarticle";s:21:"a déprotégé [[$1]]";s:10:"protectsub";s:16:"(Protéger "$1")";s:18:"confirmprotecttext";s:45:"Voulez-vous réellement protéger cette page?";s:14:"confirmprotect";s:23:"Confirmez la protection";s:14:"protectcomment";s:23:"Raison de la protection";s:12:"unprotectsub";s:23:"(Déprotéger « $1 »)";s:20:"confirmunprotecttext";s:48:"Voulez-vous réellement déprotéger cette page?";s:16:"confirmunprotect";s:26:"Confirmez la déprotection";s:16:"unprotectcomment";s:26:"Raison de la déprotection";s:13:"protectreason";s:19:"(donnez une raison)";s:8:"undelete";s:26:"Restaurer la page effacée";s:12:"undeletepage";s:34:"Voir et restaurer la page effacée";s:16:"undeletepagetext";s:187:"Ces pages ont été effacées et se trouvent dans la corbeille, elles sont toujours dans la base de donnée et peuvent être restaurées.
+La corbeille peut être effacée périodiquement.";s:15:"undeletearticle";s:31:"Restaurer les articles effacés";s:17:"undeleterevisions";s:24:"$1 révisions archivées";s:15:"undeletehistory";s:297:"Si vous restaurez la page, toutes les révisions seront restaurées dans l'historique.
+Si une nouvelle page avec le même nom a été créée depuis la suppression,
+les révisions restaurées apparaîtront dans l'historique antérieur et la version courante ne sera pas automatiquement remplacée.";s:16:"undeleterevision";s:21:"Version effacée ($1)";s:11:"undeletebtn";s:16:"Restaurer&nbsp;!";s:16:"undeletedarticle";s:20:"a restauré « $1 »";s:13:"undeletedtext";s:153:"L'article [[$1]] a été restauré avec succès.
+Voir [[Wikipédia:Trace des effacements]] pour la liste des suppressions et des restaurations récentes.";s:13:"contributions";s:13:"Contributions";s:9:"mycontris";s:17:"Mes contributions";s:10:"contribsub";s:20:"Contributions de $1.";s:10:"nocontribs";s:70:"Aucune modification correspondant à ces critères n'a été trouvée.";s:6:"ucnote";s:115:"Voici les <b>$1</b> dernières modifications effectuées par cet utilisateur au cours des <b>$2</b> derniers jours.";s:7:"uclinks";s:73:"Afficher les $1 dernières modifications; afficher les $2 derniers jours.";s:5:"uctop";s:12:" (dernière)";s:13:"notargettitle";s:12:"Pas de cible";s:12:"notargettext";s:48:"Indiquez une page cible ou un utilisateur cible.";s:11:"linklistsub";s:16:"(Liste de liens)";s:9:"linkshere";s:55:"Les pages ci-dessous contiennent un lien vers celle-ci:";s:11:"nolinkshere";s:46:"Aucune page ne contient de lien vers celle-ci.";s:10:"isredirect";s:19:"page de redirection";s:7:"blockip";s:22:"Bloquer une adresse IP";s:11:"blockiptext";s:385:"Utilisez le formulaire ci-dessous pour bloquer l'accès en écriture à partir d'une adresse IP donnée.
+Une telle mesure ne doit être prise que pour empêcher le vandalisme et en accord avec [[Wikipédia:Recommandations et règles à suivre|recommandations et règles à suivre]].
+Donnez ci-dessous une raison précise (par exemple en indiquant les pages qui ont été vandalisées).";s:9:"ipaddress";s:10:"Adresse IP";s:9:"ipbexpiry";s:6:"Expiry";s:9:"ipbreason";s:5:"Motif";s:9:"ipbsubmit";s:21:"Bloquer cette adresse";s:12:"badipaddress";s:32:"L'adresse IP n'est pas correcte.";s:13:"noblockreason";s:40:"Vous devez indiquer le motif du blocage.";s:17:"blockipsuccesssub";s:15:"Blocage réussi";s:18:"blockipsuccesstext";s:143:"L'adresse IP « $1 » a été bloquée.
+<br />Vous pouvez consulter sur cette [[Special:Ipblocklist|page]] la liste des adresses IP bloquées.";s:9:"unblockip";s:25:"Débloquer une adresse IP";s:13:"unblockiptext";s:122:"Utilisez le formulaire ci-dessous pour rétablir l'accès en écriture
+à partir d'une adresse IP précédemment bloquée.";s:9:"ipusubmit";s:24:"Débloquer cette adresse";s:10:"ipusuccess";s:27:"Adresse IP "$1" débloquée";s:11:"ipblocklist";s:31:"Liste des adresses IP bloquées";s:13:"blocklistline";s:19:"$1, $2 a bloqué $3";s:9:"blocklink";s:7:"bloquer";s:11:"unblocklink";s:10:"débloquer";s:12:"contribslink";s:8:"contribs";s:11:"autoblocker";s:76:"Autobloqué parce que vous partagez une adresse IP avec "$1". Raison : "$2".";s:12:"blocklogpage";s:14:"Log de blocage";s:13:"blocklogentry";s:18:"a bloqué « $1 »";s:12:"blocklogtext";s:250:"Ceci est la trace des blocages et déblocages des utilisateurs. Les adresses IP automatiquement bloquées ne sont pas listées. Consultez la [[Special:Ipblocklist|liste des utilisateurs bloqués]] pour voir qui est actuellement effectivement bloqué.";s:15:"unblocklogentry";s:21:"a débloqué « $1 »";s:20:"range_block_disabled";s:82:"La capacité d'administrateur de créer des séries de blocs a été désactivée.";s:18:"ipb_expiry_invalid";s:28:"Heure d'expiration invalide.";s:16:"ip_range_invalid";s:18:"Gamme IP invalide.";s:12:"proxyblocker";s:17:"Bloqueur de proxy";s:16:"proxyblockreason";s:182:"Votre ip a été bloquée car c'est un proxy ouvert. Merci de contacter votre fournisseur d'accès internet ou votre support technique et de l'informer de ce problème de sécurité.";s:17:"proxyblocksuccess";s:10:"Terminé.
+";s:6:"lockdb";s:19:"Verrouiller la base";s:8:"unlockdb";s:22:"Déverrouiller la base";s:10:"lockdbtext";s:417:"Le verrouillage de la base de données empêchera tous les utilisateurs de modifier des pages, de sauvegarder leurs préférences, de modifier leur liste de suivi et d'effectuer toutes les autres opérations nécessitant des modifications dans la base de données.
+Veuillez confirmer que c'est bien là ce que vous voulez faire et que vous débloquerez la base dès que votre opération de maintenance sera terminée.";s:12:"unlockdbtext";s:338:"Le déverrouillage de la base de données permettra à nouveau à tous les utilisateurs de modifier des pages, de mettre à jour leurs préférences et leur liste de suivi, ainsi que d'effectuer les autres opérations nécessitant des modifications dans la base de données.
+Veuillez confirmer que c'est bien là ce que vous voulez faire.";s:11:"lockconfirm";s:65:"Oui, je confirme que je souhaite verrouiller la base de données.";s:13:"unlockconfirm";s:68:"Oui, je confirme que je souhaite déverrouiller la base de données.";s:7:"lockbtn";s:19:"Verrouiller la base";s:9:"unlockbtn";s:22:"Déverrouiller la base";s:13:"locknoconfirm";s:47:"Vous n'avez pas coché la case de confirmation.";s:16:"lockdbsuccesssub";s:32:"Verrouillage de la base réussi.";s:18:"unlockdbsuccesssub";s:21:"Base déverrouillée.";s:17:"lockdbsuccesstext";s:154:"La base de données de Wikipédia est verrouillée.
+
+<br />N'oubliez pas de la déverrouiller lorsque vous aurez terminé votre opération de maintenance.";s:19:"unlockdbsuccesstext";s:54:"La base de données de Wikipédia est déverrouillée.";s:6:"asksql";s:12:"Requête SQL";s:10:"asksqltext";s:293:"Utilisez le formulaire ci-dessous pour faire une requête directe sur la base de données de Wikipédia.
+Utilisez des guillemets simples ('comme ceci') pour délimiter les chaînes de caractères.
+Cette opération peut surcharger considérablement le serveur, faites en usage
+avec modération.";s:11:"sqlislogged";s:52:"Veillez noter que toutes les requêtes sont loguées";s:8:"sqlquery";s:18:"Saisir la requête";s:8:"querybtn";s:19:"Envoyer la requête";s:10:"selectonly";s:77:"Les requêtes autres que "SELECT" sont réservées aux développeurs du wiki.";s:15:"querysuccessful";s:17:"Requête réussie";s:14:"makesysoptitle";s:42:"Convertit un utilisateur en administrateur";s:13:"makesysoptext";s:207:"Ce formulaire est utilisé par les bureaucrates pour convertir les utilisateurs en administrateurs.
+Saisissez le nom de l'utilisateur dans la boîte et cliquez sur le bouton pour en effectuer sa conversion.";s:13:"makesysopname";s:22:"Nom de l'utilisateur :";s:15:"makesysopsubmit";s:43:"Convertit cet utilisateur en administrateur";s:11:"makesysopok";s:55:"<b>L'utilisateur '$1' est désormais administrateur</b>";s:13:"makesysopfail";s:107:"<b>L'utilisateur '$1' ne peut être converti en administrateur. (Avez-vous saisi le nom correctement ?)</b>";s:17:"setbureaucratflag";s:31:"Ajouter le statut de Bureaucrat";s:13:"bureaucratlog";s:15:"Log_bureaucrate";s:18:"bureaucratlogentry";s:40:"Droits de l'utilisateur "$1" mis à "$2"";s:6:"rights";s:6:"Droits";s:15:"set_user_rights";s:32:"Modifiez les droits utilisateurs";s:15:"user_rights_set";s:61:"<b>Les droits de l'utilisateur "$1" ont été mis à jour</b>";s:15:"set_rights_fail";s:114:"'''Les droits de l'utilisateur « $1 » n'ont pas pu être mis à jour. (Avez-vous saisi le nom correctement ?)'''";s:9:"makesysop";s:34:"Donner les droits d'administrateur";s:8:"movepage";s:20:"Déplacer un article";s:12:"movepagetext";s:951:"Utilisez le formulaire ci-dessous pour renommer un article, en déplaçant toutes ses versions antérieures vers le nouveau nom.
+Le titre précédent deviendra une page de redirection vers le nouveau titre.
+Les liens vers l'ancien titre ne seront pas modifiés&nbsp;; si elle existe, la page discussion sera déplacée.<br />
+
+<font color="red" size="+1">ATTENTION&nbsp;!<br /></font>
+<b>Il peut s'agir d'un changement radical et inattendu pour un article souvent consulté&nbsp;;
+assurez-vous que vous en comprenez bien les conséquences avant de procéder.</b>
+
+Par exemple:
+# un article déplacé n'apparaitra plus dans les listes de suivis.
+# il faut éviter de créer des doubles redirections
+# après un déplacement de page, il faut parcourrir toutes les pages liées à cet article et changer les liens wiki vers le nouveau nom afin d'éviter que lorsqu'on clique sur un lien on voit apparaître le message "(Redirigée depuis ...)"";s:16:"movepagetalktext";s:354:"La page de discussion associée, si présente, sera automatiquement déplacée avec '''sauf si :'''
+*Vous déplacez une page vers un autre espace,
+*Une page de discussion existe déjà avec le nouveau nom, ou
+*Vous avez désélectionné le bouton ci-dessous.
+
+Dans ce cas, vous devrez déplacer ou fusionner la page manuellement si vous le désirez.";s:11:"movearticle";s:19:"Déplacer l'article";s:11:"movenologin";s:13:"Non connecté";s:15:"movenologintext";s:135:"Pour pouvoir déplacer un article, vous devez être <a href="/wiki/Special:Userlogin">connecté</a> en tant qu'utilisateur enregistré.";s:8:"newtitle";s:13:"Nouveau titre";s:11:"movepagebtn";s:19:"Déplacer l'article";s:12:"pagemovedsub";s:20:"Déplacement réussi";s:13:"pagemovedtext";s:51:"L'article "[[$1]]" a été déplacé vers "[[$2]]".";s:13:"articleexists";s:126:"Il existe déjà un article portant ce titre, ou le titre que vous avez choisi n'est pas valide.
+Veuillez en choisir un autre.";s:10:"talkexists";s:194:"La page elle-même a été déplacée avec succès, mais la page de discussion n'a pas pu être déplacée car il en existait déjà une
+sous le nouveau nom. Merci de les fusionner manuellement.";s:7:"movedto";s:14:"déplacé vers";s:8:"movetalk";s:52:"Déplacer aussi la page "discussion", s'il y a lieu.";s:13:"talkpagemoved";s:64:"La page discussion correspondante a également été déplacée.";s:16:"talkpagenotmoved";s:76:"La page discussion correspondante n'a <strong>pas</strong> été déplacée.";s:9:"1movedto2";s:20:"$1 déplacé vers $2";s:6:"export";s:18:"Exporter des pages";s:10:"exporttext";s:244:"Vous pouvez exporter en XML le texte et l'historique d'une page ou d'un ensemble de pages; le résultat peut alors être importé dans un autre wiki fonctionnant avec le logiciel MediaWiki, transformé ou sauvegardé pour votre usage personnel.";s:13:"exportcuronly";s:57:"Exporter uniquement la version courante sans l'historique";s:11:"allmessages";s:27:"Liste des messages système";s:15:"allmessagestext";s:74:"Ceci est la liste de tous les messages disponibles dans l'espace MediaWiki";s:14:"thumbnail-more";s:8:"Agrandir";s:12:"missingimage";s:38:"<b>Image manquante</b><br /><i>$1</i>
+";s:6:"import";s:18:"Importer des pages";s:10:"importtext";s:131:"Exportez le fichier à partir du wiki source à l'aide de l'utilitaire Special:Export, sauvez le sur votre disque et copiez-le ici.";s:12:"importfailed";s:22:"Échec de l'import: $1";s:12:"importnotext";s:26:"Texte vide ou pas de texte";s:13:"importsuccess";s:18:"L'import a réussi";s:21:"importhistoryconflict";s:94:"Il y a un conflit dans l'historique des versions (cette page a pu être importée auparavant).";s:16:"accesskey-search";s:1:"c";s:19:"accesskey-minoredit";s:1:"i";s:14:"accesskey-save";s:1:"s";s:17:"accesskey-preview";s:1:"p";s:33:"accesskey-compareselectedversions";s:1:"v";s:14:"tooltip-search";s:34:"Rechercher dans Wikipédia [Alt+C]";s:17:"tooltip-minoredit";s:60:"Marquer mes modifications comme un changement mineur [Alt+I]";s:12:"tooltip-save";s:76:"Sauvegarde les modifications (avez-vous prévisualisé auparavant ?) [Alt+S]";s:15:"tooltip-preview";s:70:"Merci de prévisualiser vos modifications avant de sauvegarder [Alt+P]";s:31:"tooltip-compareselectedversions";s:67:"Afficher les différences entre deux versions de cette page [Alt+V]";s:12:"Monobook.css";s:71:"/* edit this file to customize the monobook skin for the entire site */";s:12:"nodublincore";s:63:"Les métadata Dublin Core RDF sont désactivés sur ce serveur.";s:17:"nocreativecommons";s:68:"Les métadata Creative Commons RDF sont désactivés sur ce serveur.";s:13:"notacceptable";s:75:"Le serveur Wiki ne peut fournir aucun format acceptable par votre logiciel.";s:9:"anonymous";s:25:"Utilisateur(s) anonyme(s)";s:8:"siteuser";s:24:"Utilisateur testwiki2 $1";s:14:"lastmodifiedby";s:67:"La dernière modification de cette page a été faite le $1 par $2.";s:3:"and";s:2:"et";s:13:"othercontribs";s:27:"Basé sur le travail de $1.";s:9:"siteusers";s:27:"Utilisateur(s) testwiki2 $1";s:19:"spamprotectiontitle";s:50:"Page automatiquement protégée pour cause de spam";s:18:"spamprotectiontext";s:50:"Page automatiquement protégée pour cause de spam";s:16:"subcategorycount";s:47:"Il y a $1 sous-catégories de cette catégorie.";s:20:"categoryarticlecount";s:41:"Il y a $1 articles dans cette catégorie.";s:18:"usenewcategorypage";s:70:"1
+
+Set first character to "0" to disable the new category page layout.";s:11:"Monobook.js";s:3547:"/* 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');
+";} \ No newline at end of file
diff --git a/languages/wikipedia/ja.lang b/languages/wikipedia/ja.lang
new file mode 100644
index 000000000000..6e64f1ddf6a7
--- /dev/null
+++ b/languages/wikipedia/ja.lang
@@ -0,0 +1,311 @@
+MediaWiki 1.3.0beta3 language file
+a:699:{s:10:"categories";s:12:"カテゴリ";s:8:"category";s:12:"カテゴリ";s:15:"category_header";s:22:"カテゴリ: '''$1'''";s:13:"subcategories";s:13:"Subcategories";s:9:"linktrail";s:18:"/^([a-z]+)(.*)$/sD";s:8:"mainpage";s:18:"メインページ";s:12:"mainpagetext";s:37:"Wiki software successfully installed.";s:17:"mainpagedocfooter";s:214:"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.";s:6:"portal";s:33:"コミュニティ・ãƒãƒ¼ã‚¿ãƒ«";s:10:"portal-url";s:43:"Wikipedia:コミュニティ・ãƒãƒ¼ã‚¿ãƒ«";s:5:"about";s:6:"解説";s:14:"aboutwikipedia";s:33:"ウィキペディアã«ã¤ã„ã¦";s:9:"aboutpage";s:43:"Wikipedia:ウィキペディアã«ã¤ã„ã¦";s:7:"article";s:6:"本文";s:4:"help";s:9:"ヘルプ";s:8:"helppage";s:19:"Wikipedia:ヘルプ";s:15:"wikititlesuffix";s:9:"Wikipedia";s:10:"bugreports";s:15:"ãƒã‚°ã®å ±å‘Š";s:14:"bugreportspage";s:25:"Wikipedia:ãƒã‚°ã®å ±å‘Š";s:11:"sitesupport";s:6:"寄付";s:3:"faq";s:3:"FAQ";s:7:"faqpage";s:13:"Wikipedia:FAQ";s:8:"edithelp";s:15:"編集ã®ä»•æ–¹";s:9:"newwindow";s:21:"(opens in new window)";s:12:"edithelppage";s:25:"Wikipedia:編集ã®ä»•æ–¹";s:6:"cancel";s:6:"中止";s:6:"qbfind";s:6:"検索";s:8:"qbbrowse";s:6:"閲覧";s:6:"qbedit";s:6:"編集";s:13:"qbpageoptions";s:27:"ページ・オプション";s:10:"qbpageinfo";s:15:"ページ情報";s:11:"qbmyoptions";s:15:"オプション";s:14:"qbspecialpages";s:15:"特別ページ";s:13:"moredotdotdot";s:21:"ã™ã¹ã¦è¡¨ç¤ºã™ã‚‹";s:6:"mypage";s:18:"マイ・ページ";s:6:"mytalk";s:18:"マイ・トーク";s:8:"anontalk";s:16:"Talk for this IP";s:10:"navigation";s:21:"ナビゲーション";s:13:"currentevents";s:18:"最近ã®å‡ºæ¥äº‹";s:11:"disclaimers";s:12:"利用è¦ç´„";s:14:"disclaimerpage";s:22:"Wikipedia:利用è¦ç´„";s:14:"errorpagetitle";s:9:"エラー";s:8:"returnto";s:15:"$1 ã«æˆ»ã‚‹ã€‚";s:13:"fromwikipedia";s:69:"出典: フリー百科事典『ウィキペディア (Wikipedia) ã€";s:13:"whatlinkshere";s:33:"ã“ã®ãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯å…ƒ";s:6:"search";s:6:"検索";s:2:"go";s:6:"表示";s:7:"history";s:6:"履歴";s:13:"history_short";s:6:"履歴";s:16:"printableversion";s:24:"å°åˆ·ç”¨ãƒãƒ¼ã‚¸ãƒ§ãƒ³";s:4:"edit";s:6:"編集";s:12:"editthispage";s:24:"ã“ã®ãƒšãƒ¼ã‚¸ã‚’編集";s:6:"delete";s:6:"削除";s:14:"deletethispage";s:24:"ã“ã®ãƒšãƒ¼ã‚¸ã‚’削除";s:14:"undelete_short";s:8:"Undelete";s:7:"protect";s:6:"ä¿è­·";s:15:"protectthispage";s:24:"ã“ã®ãƒšãƒ¼ã‚¸ã‚’ä¿è­·";s:9:"unprotect";s:12:"ä¿è­·è§£é™¤";s:17:"unprotectthispage";s:21:"ページä¿è­·è§£é™¤";s:7:"newpage";s:15:"æ–°è¦ãƒšãƒ¼ã‚¸";s:8:"talkpage";s:27:"ã“ã®ãƒšãƒ¼ã‚¸ã®ãƒŽãƒ¼ãƒˆ";s:11:"specialpage";s:15:"特別ページ";s:13:"personaltools";s:14:"Personal tools";s:11:"postcomment";s:30:"æ–°è¦ã«ã‚³ãƒ¡ãƒ³ãƒˆã‚’投稿";s:10:"addsection";s:1:"+";s:11:"articlepage";s:15:"記事を表示";s:11:"subjectpage";s:30:"サブジェクト・ページ";s:4:"talk";s:9:"ノート";s:7:"toolbox";s:21:"ツールボックス";s:8:"userpage";s:27:"利用者ページを表示";s:13:"wikipediapage";s:27:"Wikipediaページを表示";s:9:"imagepage";s:27:"ç”»åƒã®ãƒšãƒ¼ã‚¸ã‚’表示";s:12:"viewtalkpage";s:18:"ノートを表示";s:14:"otherlanguages";s:12:"ä»–ã®è¨€èªž";s:14:"redirectedfrom";s:21:"($1 ã‹ã‚‰è»¢é€ï¼‰";s:12:"lastmodified";s:18:"最終更新 $1。";s:9:"viewcount";s:55:"ã“ã®ãƒšãƒ¼ã‚¸ã¯ $1 回アクセスã•ã‚Œã¾ã—ãŸã€‚";s:9:"copyright";s:30:"Content is available under $1.";s:9:"poweredby";s:90:"Wikipedia is powered by [http://www.mediawiki.org/ MediaWiki], an open source wiki engine.";s:13:"printsubtitle";s:31:"(From http://www.wikipedia.org)";s:13:"protectedpage";s:24:"ä¿è­·ã•ã‚ŒãŸãƒšãƒ¼ã‚¸";s:14:"administrators";s:19:"Wikipedia:管ç†è€…";s:10:"sysoptitle";s:39:"管ç†è€…ã«ã‚ˆã‚‹ã‚¢ã‚¯ã‚»ã‚¹ãŒå¿…è¦";s:9:"sysoptext";s:105:"ã‚ãªãŸã®è¦æ±‚ã—ãŸå‡¦ç†ã¯ç®¡ç†è€…ã®ã¿ãŒå®Ÿè¡Œã§ãã¾ã™ã€‚
+$1ã‚’å‚ç…§ã—ã¦ãã ã•ã„。";s:14:"developertitle";s:39:"開発者ã«ã‚ˆã‚‹ã‚¢ã‚¯ã‚»ã‚¹ãŒå¿…è¦";s:13:"developertext";s:106:"ã‚ãªãŸã®è¦æ±‚ã—ãŸå‡¦ç†ã¯é–‹ç™ºè€…ã®ã¿ãŒå®Ÿè¡Œã§ãã¾ã™ã€‚
+$1 ã‚’å‚ç…§ã—ã¦ãã ã•ã„。";s:15:"bureaucrattitle";s:26:"Bureaucrat access required";s:14:"bureaucrattext";s:88:"The action you have requested can only be
+performed by sysops with "bureaucrat" status.";s:6:"nbytes";s:12:"$1 ãƒã‚¤ãƒˆ";s:2:"ok";s:2:"OK";s:9:"sitetitle";s:9:"Wikipedia";s:9:"pagetitle";s:14:"$1 - Wikipedia";s:12:"sitesubtitle";s:21:"フリー百科事典";s:13:"retrievedfrom";s:18:" "$1" より作æˆ";s:11:"newmessages";s:26:"$1ãŒå±Šã„ã¦ã„ã¾ã™ã€‚";s:15:"newmessageslink";s:24:"æ–°ã—ã„メッセージ";s:11:"editsection";s:6:"編集";s:3:"toc";s:6:"目次";s:7:"showtoc";s:6:"表示";s:7:"hidetoc";s:9:"éžè¡¨ç¤º";s:13:"thisisdeleted";s:19:"View or restore $1?";s:11:"restorelink";s:16:"$1 deleted edits";s:9:"feedlinks";s:5:"Feed:";s:10:"nstab-main";s:6:"本文";s:10:"nstab-user";s:24:"利用者個人ページ";s:11:"nstab-media";s:5:"Media";s:13:"nstab-special";s:7:"Special";s:8:"nstab-wp";s:6:"解説";s:11:"nstab-image";s:5:"Image";s:15:"nstab-mediawiki";s:9:"定型文";s:14:"nstab-template";s:8:"Template";s:10:"nstab-help";s:4:"Help";s:14:"nstab-category";s:8:"Category";s:12:"nosuchaction";s:39:"ãã®ã‚ˆã†ãªå‹•ä½œã¯ã‚ã‚Šã¾ã›ã‚“";s:16:"nosuchactiontext";s:69:"URI ã§æŒ‡å®šã•ã‚ŒãŸå‹•ä½œã¯ Wikipedia ã§èªè­˜ã§ãã¾ã›ã‚“。";s:17:"nosuchspecialpage";s:51:"ãã®ã‚ˆã†ãªç‰¹åˆ¥ãƒšãƒ¼ã‚¸ã¯ã‚ã‚Šã¾ã›ã‚“。";s:17:"nospecialpagetext";s:74:"ãã®ç‰¹åˆ¥ãƒšãƒ¼ã‚¸ã®è¦æ±‚㯠Wikipedia ã«ã¯ç†è§£ã§ãã¾ã›ã‚“。";s:5:"error";s:9:"エラー";s:13:"databaseerror";s:30:"データベース・エラー";s:11:"dberrortext";s:325:"データベース検索ã®æ–‡æ³•ã‚¨ãƒ©ãƒ¼ã€‚
+検索å•åˆã‚ã›ãŒé–“é•ã£ã¦ã„ã‚‹ã‹($5 ã‚’å‚ç…§),
+ã‚ã‚‹ã„ã¯ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒã‚°ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
+最後ã«å®Ÿè¡Œã‚’試ã¿ãŸå•ã„åˆã‚ã›:
+<blockquote><tt>$1</tt></blockquote>
+from within function "<tt>$2</tt>".
+MySQL returned error "<tt>$3: $4</tt>".";s:13:"dberrortextcl";s:146:"A database query syntax error has occurred.
+The last attempted database query was:
+"$1"
+from within function "$2".
+MySQL returned error "$3: $4".
+";s:9:"noconnect";s:306:"<!-- $1000 ã® -->データベースã«æŽ¥ç¶šã§ãã¾ã›ã‚“。ç¾åœ¨ã€ä½•ã‚‰ã‹ã®å•é¡Œã«ã‚ˆã‚Šã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã§ããªã„状態ã«ã‚ã‚Šã¾ã™ã€‚ã”迷惑をãŠã‹ã‘ã„ãŸã—ã¾ã™ãŒã€ã—ã°ã‚‰ãå¾…ã£ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã¿ã¦ãã ã•ã„。";s:4:"nodb";s:51:"$1 ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚’é¸æŠžã§ãã¾ã›ã‚“。";s:11:"cachederror";s:144:"ã‚ãªãŸãŒã‚¢ã‚¯ã‚»ã‚¹ã—ãŸãƒšãƒ¼ã‚¸ã®ã‚³ãƒ”ーをä¿å­˜ã—ãŸã‚‚ã®ã‚’表示ã—ã¦ã„ã¾ã™ã€‚ã¾ãŸã€ã‚³ãƒ”ーã¯æ›´æ–°ã•ã‚Œã¾ã›ã‚“。";s:8:"readonly";s:48:"データベースã¯ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™";s:15:"enterlockreason";s:150:"ロックã™ã‚‹ç†ç”±ã‚’入力ã—ã¦ä¸‹ã•ã„。ロックãŒè§£é™¤ã•ã‚Œã‚‹ã®ãŒã„ã¤ã«ãªã‚‹ã‹ã®è¦‹ç©ã‚‚ã‚Šã«ã¤ã„ã¦ã‚‚è¿°ã¹ã¦ä¸‹ã•ã„。";s:12:"readonlytext";s:624:"ウィキペディア・データベースã¯ç¾åœ¨ã€æ–°ã—ã„記事ã®è¿½åŠ ã‚„編集をå—ã‘付ã‘ãªã„「ロックã€çŠ¶æ…‹ã«ãªã£ã¦ã„ã¾ã™ã€‚ã“ã‚Œã¯ãŠãらãã¯å®šæœŸçš„ãªãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã®ãŸã‚ã§ã€ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹çµ‚了後ã¯æ­£å¸¸ãªçŠ¶æ…‹ã«å¾©å¸°ã—ã¾ã™ã€‚
+データベースをロックã—ãŸç®¡ç†è€…ã¯æ¬¡ã®ã‚ˆã†ãªèª¬æ˜Žã‚’ã—ã¦ã„ã¾ã™ï¼š
+<p>$1
+<p>The Wikipedia database is currently locked to new
+entries and other modifications, probably for routine database maintenance,
+after which it will be back to normal.
+The administrator who locked it offered this explanation:
+<p>$1";s:14:"missingarticle";s:552:"データベースã¯ã€"$1"ã¨ã„ã†é¡Œã®ãƒšãƒ¼ã‚¸ã®ã€å­˜åœ¨ã™ã‚‹ã¯ãšã®æ–‡ç« ã‚’見ã¤ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
+<p>ã“ã‚Œã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ã‚¨ãƒ©ãƒ¼ã§ã¯ãªãã€ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒã‚°ã ã‚ã†ã¨æ€ã‚ã‚Œã¾ã™ã€‚
+<p>URI ã¨å…±ã«ç®¡ç†è€…ã«å ±å‘Šã—ã¦ä¸‹ã•ã‚‹ã‚ˆã†ã«ãŠé¡˜ã„ã—ã¾ã™ã€‚
+<p>The database did not find the text of a page
+that it should have found, named "$1".
+<p>This is not a database error, but likely a bug in the software.
+<p>Please report this to an administrator, making note of the URI.";s:13:"internalerror";s:21:"内部処ç†ã‚¨ãƒ©ãƒ¼";s:13:"filecopyerror";s:65:"ファイルを"$1"ã‹ã‚‰"$2"ã®ã‚³ãƒ”ーã«å¤±æ•—ã—ã¾ã—ãŸã€‚";s:15:"filerenameerror";s:68:"ファイルåã‚’"$1"ã‹ã‚‰"$2"ã¸å¤‰æ›´ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚";s:15:"filedeleteerror";s:49:"ファイル"$1"ã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚";s:12:"filenotfound";s:55:"ファイルを"$1"ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚";s:10:"unexpected";s:62:"異常値ã«ã‚ˆã‚‹ã‚¨ãƒ©ãƒ¼ï¼š"$1" 㨠"$2" ãŒåŒã˜ã§ã™ã€‚";s:9:"formerror";s:56:"エラー: フォームã®é€ä¿¡ã«å¤±æ•—ã—ã¾ã—ãŸã€‚";s:15:"badarticleerror";s:69:"ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯ã“ã®å‹•ä½œã‚’ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。";s:12:"cannotdelete";s:75:"指定ã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã€ã¾ãŸã¯ç”»åƒã®å‰Šé™¤ã«å¤±æ•—ã—ã¾ã—ãŸã€‚";s:8:"badtitle";s:33:"ページタイトルã®é–“é•ã„";s:12:"badtitletext";s:133:"è¦æ±‚ã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã¯ç„¡åŠ¹ã‹ã€ä½•ã‚‚ãªã„ã‹ã€æ­£ã—ããªã„ inter-language ã¾ãŸã¯ inter-wiki ã®ã‚¿ã‚¤ãƒˆãƒ«ã§ã™ã€‚";s:12:"perfdisabled";s:105:"ã“ã®æ©Ÿèƒ½ã¯ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®è² è·ã‚’軽ãã™ã‚‹ãŸã‚ã«ç¾åœ¨ä½¿ãˆãªããªã£ã¦ã„ã¾ã™ã€‚";s:15:"perfdisabledsub";s:55:"ã“ã“ã«ã¯ $1 ã®ã‚³ãƒ”ーを表示ã—ã¦ã„ã¾ã™ã€‚";s:10:"perfcached";s:66:"The following data is cached and may not be completely up to date:";s:20:"wrong_wfQuery_params";s:69:"Incorrect parameters to wfQuery()<br />
+Function: $1<br />
+Query: $2
+";s:10:"viewsource";s:18:"ソースを表示";s:13:"protectedtext";s:243:"ã“ã®ãƒšãƒ¼ã‚¸ã¯ç·¨é›†ã§ããªã„よã†ã«ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚ã“ã‚Œã«ã¯ã„ãã¤ã‹ç†ç”±ãŒã‚ã‚Šã¾ã™ã€‚詳ã—ãã¯[[Wikipedia:ä¿è­·ã•ã‚ŒãŸãƒšãƒ¼ã‚¸]]ã‚’ã”覧ãã ã•ã„。
+
+下ã«ã‚½ãƒ¼ã‚¹ã‚’表示ã—ã¦ã„ã¾ã™ã€‚";s:18:"seriousxhtmlerrors";s:56:"There were serious xhtml markup errors detected by tidy.";s:11:"logouttitle";s:28:"ユーザー ログアウト";s:10:"logouttext";s:226:"ログアウトã—ã¾ã—ãŸã€‚
+ã“ã®ã¾ã¾ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã‚’匿åã§ä½¿ã„続ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
+ã‚‚ã†ä¸€åº¦ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦å…ƒã®ã€ã‚ã‚‹ã„ã¯åˆ¥ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¨ã—ã¦ä½¿ã†ã“ã¨ã‚‚ã§ãã¾ã™ã€‚";s:15:"welcomecreation";s:179:"<h2>$1 ã•ã‚“ã€ã‚ˆã†ã“ã!</h2><p>ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆãŒã§ãã¾ã—ãŸã€‚
+ãŠå¥½ã¿ã«åˆã‚ã›ã¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚ªãƒ—ションを変更ã™ã‚‹ã“ã¨ã‚’ãŠå¿˜ã‚Œãªã。";s:14:"loginpagetitle";s:25:"ユーザー ログイン";s:8:"yourname";s:27:"ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ãƒ¼å";s:12:"yourpassword";s:27:"ã‚ãªãŸã®ãƒ‘スワード";s:17:"yourpasswordagain";s:24:"パスワードå†å…¥åŠ›";s:12:"newusersonly";s:30:"(新è¦ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ã¿ï¼‰";s:18:"remembermypassword";s:66:"セッションをã¾ãŸãŒã£ã¦ãƒ‘スワードをä¿æŒã™ã‚‹ã€‚";s:12:"loginproblem";s:92:"<b>ログインã§ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚</b><br>å†åº¦å®Ÿè¡Œã—ã¦ãã ã•ã„。";s:15:"alreadyloggedin";s:92:"<font color=red><b>ユーザー $1 ã¯ã€ã™ã§ã«ãƒ­ã‚°ã‚¤ãƒ³æ¸ˆã¿ã§ã™ã€‚</b></font><br>";s:5:"login";s:12:"ログイン";s:11:"loginprompt";s:102:"ウィキペディアã«ãƒ­ã‚°ã‚¤ãƒ³ã™ã‚‹ã«ã¯ã‚¯ãƒƒã‚­ãƒ¼ã‚’有効ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚";s:9:"userlogin";s:12:"ログイン";s:6:"logout";s:15:"ログアウト";s:10:"userlogout";s:15:"ログアウト";s:11:"notloggedin";s:30:"ログインã—ã¦ã„ã¾ã›ã‚“";s:13:"createaccount";s:27:"æ–°è¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆä½œæˆ";s:17:"createaccountmail";s:8:"by email";s:9:"badretype";s:48:"両方ã®ãƒ‘スワードãŒä¸€è‡´ã—ã¾ã›ã‚“。";s:10:"userexists";s:99:"ãã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¯ã™ã§ã«ä½¿ã‚ã‚Œã¦ã„ã¾ã™ã€‚ã»ã‹ã®åå‰ã‚’ãŠé¸ã³ãã ã•ã„。";s:9:"youremail";s:15:"é›»å­ãƒ¡ãƒ¼ãƒ«";s:12:"yourrealname";s:19:"ã‚ãªãŸã®æœ¬å*";s:8:"yournick";s:33:"ニックãƒãƒ¼ãƒ ï¼ˆç½²å用)";s:12:"emailforlost";s:210:"ã™ã§ã«ãƒ¦ãƒ¼ã‚¶ãƒ¼ç™»éŒ²ã•ã‚Œã¦ã„ã¦ãƒ‘スワードをãŠå¿˜ã‚Œã®æ–¹ã¯ã€ã“ã®ä¸‹ã®ãƒœã‚¿ãƒ³ã‚’クリックã™ã‚Œã°ã”登録ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«æ–°ã—ã„パスワードãŒé€ä¿¡ã•ã‚Œã¾ã™ã€‚";s:19:"prefs-help-userdata";s:374:"* <strong>本å</strong> (オプション): ã‚ãªãŸã®æŠ•ç¨¿ã«è‡ªåˆ†ã®åå‰ã‚’残ã—ãŸã„ã¨ããªã©ã«ä½¿ã†ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚<br/>
+* <strong>Email</strong>(オプション): ã‚ãªãŸã®Emailアドレスを隠ã—ã¦ã‚¦ã‚§ãƒ–サイトã‹ã‚‰äººã€…ãŒãƒ¡ãƒ¼ãƒ«ã‚’é€ã‚Œã‚‹ã‚ˆã†ã«ã—ã¾ã™ã€‚ã¾ãŸã€ãƒ‘スワードå†ç™ºè¡Œã®éš›ã«ã‚‚使ã„ã¾ã™ã€‚";s:10:"loginerror";s:18:"ログイン失敗";s:12:"nocookiesnew";s:384:"ユーザーã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ä½œæˆã•ã‚Œã¾ã—ãŸãŒã€ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ã„ã¾ã›ã‚“。ウィキペディアã«ãƒ­ã‚°ã‚¤ãƒ³ã™ã‚‹ã«ã¯ã‚¯ãƒƒã‚­ãƒ¼ã‚’有効ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ã‚ãªãŸã¯ã‚¯ãƒƒã‚­ãƒ¼ã‚’無効ãªè¨­å®šã«ã—ã¦ã„るよã†ã§ã™ã€‚クッキーを有効ã«ã—ã¦ã‹ã‚‰ä½œæˆã—ãŸãƒ¦ãƒ¼ã‚¶ãƒ¼åã¨ãƒ‘スワードã§ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。";s:14:"nocookieslogin";s:240:"ウィキペディアã§ã¯ãƒ­ã‚°ã‚¤ãƒ³ã«ã‚¯ãƒƒã‚­ãƒ¼ã‚’使ã„ã¾ã™ã€‚ã—ã‹ã—ã€ã”使用ã®ãƒ–ラウザ等ãŒã‚¯ãƒƒã‚­ãƒ¼ã‚’無効ã«ã—ã¦ã„るよã†ã§ã™ã€‚クッキーを有効ã«ã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ã¿ã¦ãã ã•ã„。";s:6:"noname";s:51:"ユーザåã‚’æ­£ã—ã指定ã—ã¦ã„ã¾ã›ã‚“。";s:17:"loginsuccesstitle";s:18:"ログインæˆåŠŸ";s:12:"loginsuccess";s:77:"ã‚ãªãŸã¯ç¾åœ¨ Wikipedia ã« "$1" ã¨ã—ã¦ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ã„ã¾ã™ã€‚";s:10:"nosuchuser";s:178:" "$1" ã¨ã„ã†ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯è¦‹å½“ãŸã‚Šã¾ã›ã‚“。
+綴りãŒæ­£ã—ã„ã‹å†åº¦ç¢ºèªã™ã‚‹ã‹ã€ä¸‹è¨˜ã®ãƒ•ã‚©ãƒ¼ãƒ ã‚’使ã£ã¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’作æˆã—ã¦ãã ã•ã„。";s:13:"wrongpassword";s:75:"パスワードãŒé–“é•ã£ã¦ã„ã¾ã™ã€‚å†åº¦å…¥åŠ›ã—ã¦ãã ã•ã„。";s:14:"mailmypassword";s:48:"æ–°ã—ã„パスワードをã€ãƒ¡ãƒ¼ãƒ«ã§é€ã‚‹";s:21:"passwordremindertitle";s:110:"Password reminder from ja.Wikipedia =?iso-2022-jp?B?GyRCIUolJiUjJS0lWiVHJSMlIiROPzc1LCVRJTklbyE8JUkhSxsoQg==?=";s:20:"passwordremindertext";s:287:"ã©ãªãŸã‹ï¼ˆ$1 ã®IPアドレスã®ä½¿ç”¨è€…)ãŒã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã®ãƒ­ã‚°ã‚¤ãƒ³ç”¨ãƒ‘スワードã®å†ç™ºè¡Œã‚’ä¾é ¼ã—ã¾ã—ãŸã€‚
+
+ユーザー "$2" ã®ãƒ‘スワードを "$3" ã«å¤‰æ›´ã—ã¾ã—ãŸã€‚
+ログインã—ã¦åˆ¥ã®ãƒ‘スワードã«å¤‰æ›´ã—ã¦ãã ã•ã„。";s:7:"noemail";s:75:"ユーザー "$1" ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“。";s:12:"passwordsent";s:174:"æ–°ã—ã„パスワードを "$1" ã•ã‚“ã®ç™»éŒ²æ¸ˆã¿ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã«ãŠé€ã‚Šã—ã¾ã—ãŸã€‚メールをå—ã‘å–ã£ãŸã‚‰ã€å†åº¦ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ãã ã•ã„。";s:8:"loginend";s:1041:"ユーザー登録をãªã•ã‚‹æ–¹ã¯ã€è‡ªåˆ†ã§ä½¿ã„ãŸã„ユーザーåã¨ãƒ‘スワードを決ã‚ã¦å…¥åŠ›ã—ã€<b>æ–°è¦ã‚¢ã‚«ã‚¦ãƒ³ãƒˆä½œæˆ</b>をクリックã—ã¦ãã ã•ã„。ユーザーåã®æ±ºã‚ãŸã‹ã«ã¤ã„ã¦è©³ã—ãã¯<a href="/wiki/wikipedia:ユーザーå">ユーザーå</a>ã‚’ã©ã†ãžã€‚ユーザーåã«ã¯æ—¥æœ¬èªžã‚‚使ãˆã¾ã™ã€‚<br />
+ã¾ãŸã€ãƒ­ã‚°ã‚¤ãƒ³ã™ã‚‹ã“ã¨ã«ã¤ã„ã¦è©³ã—ãã¯<a href="/wiki/wikipedia:ログインã®ä»•æ–¹">ログインã®ä»•æ–¹</a>ã‚’ãŠèª­ã¿ãã ã•ã„。
+
+二度目以é™ã®æ–¹ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¨ãƒ‘スワードを入力ã—ã¦<b>ログイン</b>をクリックã™ã‚Œã°å†åº¦ãƒ­ã‚°ã‚¤ãƒ³ãŒå¯èƒ½ã§ã™ã€‚ã¾ãŸã€ãƒ–ラウザã®ã‚¯ãƒƒã‚­ãƒ¼ãŒæœ‰åŠ¹ã«ãªã£ã¦ã„ãªã‘ã‚Œã°ãƒ­ã‚°ã‚¤ãƒ³ã¯æ­£å¸¸ã«æ©Ÿèƒ½ã—ã¾ã›ã‚“。
+
+ユーザー登録ã®éš›ã«é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚‚登録ã™ã‚‹å¿…è¦ã‚ã‚Šã¾ã›ã‚“ãŒã€ç™»éŒ²ã—ã¦ãŠãã¨ã€ãƒ‘スワードを忘れãŸã¨ãã«æ–°ã—ã„パスワードを電å­ãƒ¡ãƒ¼ãƒ«ã§å—ã‘å–ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚";s:9:"mailerror";s:22:"Error sending mail: $1";s:11:"bold_sample";s:24:"å¼·ã„強調(太字)";s:8:"bold_tip";s:24:"å¼·ã„強調(太字)";s:13:"italic_sample";s:24:"å¼±ã„強調(斜体)";s:10:"italic_tip";s:24:"å¼±ã„強調(斜体)";s:11:"link_sample";s:9:"記事å";s:8:"link_tip";s:15:"内部リンク";s:14:"extlink_sample";s:47:"http://www.example.com リンクã®ã‚¿ã‚¤ãƒˆãƒ«";s:11:"extlink_tip";s:65:"外部リンク(http:// を忘れãšã«ã¤ã‘ã¦ãã ã•ã„)";s:15:"headline_sample";s:9:"見出ã—";s:12:"headline_tip";s:18:"標準ã®è¦‹å‡ºã—";s:11:"math_sample";s:11:"\int f(x)dx";s:8:"math_tip";s:14:"æ•°å¼ (LaTeX)";s:13:"nowiki_sample";s:45:"ãã®ã¾ã¾è¡¨ç¤ºã•ã›ãŸã„文字を入力";s:10:"nowiki_tip";s:33:"入力文字をãã®ã¾ã¾è¡¨ç¤º";s:12:"image_sample";s:11:"Example.jpg";s:9:"image_tip";s:62:"埋ã‚è¾¼ã¿ç”»åƒï¼ˆ[[ç”»åƒ:~]]ã«ç›´ã—ã¦ãã ã•ã„)";s:12:"media_sample";s:11:"Example.mp3";s:9:"media_tip";s:51:"メディアファイル(音声)ã¸ã®ãƒªãƒ³ã‚¯";s:7:"sig_tip";s:21:"時刻ã¤ãã®ç½²å";s:6:"hr_tip";s:36:"水平線(利用ã¯æŽ§ãˆã‚ã«ï¼‰";s:7:"infobox";s:78:"ボタンをクリックã™ã‚‹ã¨ãƒžãƒ¼ã‚¯ã‚¢ãƒƒãƒ—ã®ä¾‹ã‚’表示ã—ã¾ã™ã€‚";s:13:"infobox_alert";s:135:"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";s:7:"summary";s:333:"<strong><a href="/wiki/Wikipedia:%E8%91%97%E4%BD%9C%E6%A8%A9" class='internal' title ="Wikipedia:著作権">著作権</a>ã®ã‚る作å“を許諾ãªã—ã«æŠ•ç¨¿ã™ã‚‹ã®ã¯é•æ³•ã§ã™ã€‚<br>ä»–ã®ã‚¦ã‚§ãƒ–サイトや書ç±ã«ã‚る文書ã®è»¢è¼‰ã€æ­Œè©žãªã©ã®æŠ•ç¨¿ã¯ãŠã‚„ã‚ãã ã•ã„。</strong><br>編集内容ã®è¦ç´„";s:7:"subject";s:18:"é¡Œå・見出ã—";s:9:"minoredit";s:42:"ã“ã‚Œã¯ç´°éƒ¨ã®ç·¨é›†ã§ã™&nbsp;&nbsp;";s:9:"watchthis";s:30:"ウォッãƒãƒªã‚¹ãƒˆã«è¿½åŠ ";s:11:"savearticle";s:66:"以下ã®è¨˜è¿°ã‚’完全ã«ç†è§£ã—åŒæ„ã—ãŸä¸Šã§æŠ•ç¨¿ã™ã‚‹";s:7:"preview";s:15:"プレビュー";s:11:"showpreview";s:24:"プレビューを実行";s:12:"blockedtitle";s:36:"投稿ブロックã•ã‚Œã¦ã„ã¾ã™";s:11:"blockedtext";s:1621:"ã”使用ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼åã¾ãŸã¯IPアドレス㯠$1 ã«ã‚ˆã£ã¦æŠ•ç¨¿ã‚’ブロックã•ã‚Œã¦ã„ã¾ã™ã€‚ãã®ç†ç”±ã¯æ¬¡ã®é€šã‚Šã§ã™ã€‚
+:$2
+
+より詳ã—ã„情報ã«ã¤ã„ã¦ã¯[[Wikipedia:投稿ブロックä¾é ¼]]や自分ユーザーåã®åˆ©ç”¨è€…-会話ページãªã©ã«è¨˜è¼‰ã•ã‚Œã¦ã„ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã®ã§ç¢ºèªã—ã¦ãã ã•ã„。
+
+$1 ã¾ãŸã¯ä»–ã®[[Wikipedia:管ç†è€…|管ç†è€…]]ã«ã“ã®ä»¶ã«ã¤ã„ã¦ãƒ¡ãƒ¼ãƒ«ã§å•ã„åˆã‚ã›ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ãŸã ã—ã€[[特別:Preferences|オプション]]ã«æ­£ã—ã„é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒç™»éŒ²ã•ã‚Œã¦ã„ãªã„å ´åˆã€ã€Œã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡ã€æ©Ÿèƒ½ãŒä½¿ãˆãªã„ã“ã¨ã«æ³¨æ„ã—ã¦ãã ã•ã„。ã‚ãªãŸã®IPアドレスã¯ã€Œ$3ã€ã§ã™ã€‚å•ã„åˆã‚ã›ã‚’è¡Œã†éš›ã«ã¯ã€ã“ã®IPアドレスを必ãšæ›¸ã„ã¦ãã ã•ã„。
+
+== å•é¡Œã®ã‚る行動をã—ã¦ã„ãªã„ã®ã«ãƒ–ロックã•ã‚Œã¦ã„ã‚‹å ´åˆ ==
+迷惑をãŠã‹ã‘ã—ã¦ç”³ã—訳ã‚ã‚Šã¾ã›ã‚“。ã²ã©ã„è’らã—ãŒè¡Œã‚ã‚ŒãŸå ´åˆã€åºƒç¯„囲ã«ã‚ãŸã£ã¦ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã®æŠ•ç¨¿ã‚’ブロックã•ã‚Œã¦ã„ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®å ´åˆã«ã¯å¤šæ•°ã®ç„¡é–¢ä¿‚ãªãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŠ•ç¨¿å‡ºæ¥ãªããªã‚Šã¾ã™ã€‚
+<!-- é©åˆ‡ãªè¨³ãŒæ€ã„ã¤ã‹ãªã„ã®ã§ã‚³ãƒ¡ãƒ³ãƒˆ
+At the moment this includes:
+* Most Bell Canada addresses from Halifax, Nova Scotia
+* Some addresses from tpnet.pl
+-->
+ã¾ãŸã€å€‹ã€…ã®å‹•çš„IPアドレスãŒãƒ–ロックã•ã‚ŒãŸå ´åˆã€é€šå¸¸24時間ã§è§£é™¤ã•ã‚Œã¾ã™ã€‚æ縮ã§ã™ãŒã€ãã‚Œã¾ã§ã€ãŠå¾…ã¡ã„ãŸã ãよã†ãŠé¡˜ã„ã„ãŸã—ã¾ã™ã€‚";s:18:"whitelistedittitle";s:33:"編集ã«ã¯ãƒ­ã‚°ã‚¤ãƒ³ãŒå¿…è¦";s:17:"whitelistedittext";s:99:"ã“ã®ãƒšãƒ¼ã‚¸ã‚’編集ã™ã‚‹ã«ã¯[[特別:Userlogin|ログイン]]ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚";s:18:"whitelistreadtitle";s:33:"閲覧ã«ã¯ãƒ­ã‚°ã‚¤ãƒ³ãŒå¿…è¦";s:17:"whitelistreadtext";s:87:"ã“ã®ãƒšãƒ¼ã‚¸ã‚’閲覧ã™ã‚‹ã«ã¯[[特別:Userlogin|ログイン]]ãŒå¿…è¦ã§ã™ã€‚";s:17:"whitelistacctitle";s:40:"You are not allowed to create an account";s:16:"whitelistacctext";s:124:"To be allowed to create accounts in this Wiki you have to [[Special:Userlogin|log]] in and have the appropriate permissions.";s:13:"loginreqtitle";s:14:"Login Required";s:12:"loginreqtext";s:57:"You must [[special:Userlogin|login]] to view other pages.";s:12:"accmailtitle";s:14:"Password sent.";s:11:"accmailtext";s:42:"The Password for '$1' has been sent to $2.";s:10:"newarticle";s:12:"(新è¦ï¼‰";s:14:"newarticletext";s:48:"æ–°ã—ã„記事を書ã込んã§ãã ã•ã„。";s:12:"talkpagetext";s:31:"<!-- MediaWiki:talkpagetext -->";s:16:"anontalkpagetext";s:622:"----
+''ã“ã‚Œã¯ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’ã¾ã ä½œæˆã—ã¦ã„ãªã„ã‹ã€ã‚ã‚‹ã„ã¯ä½¿ã£ã¦ã„ãªã„匿åユーザーã®ãŸã‚ã®ä¼šè©±ãƒšãƒ¼ã‚¸ã§ã™ã€‚ウィキペディアã§ã¯åŒ¿åユーザーã®è­˜åˆ¥ã¯åˆ©ç”¨è€…åã®ä»£ã‚ã‚Šã«[[IPアドレス]]を用ã„ã¾ã™ã€‚IPアドレスã¯ä½•äººã‹ã§å…±æœ‰ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ã‚‚ã—ã‚‚ã€ã‚ãªãŸãŒåŒ¿åユーザーã§ç„¡é–¢ä¿‚ãªã‚³ãƒ¡ãƒ³ãƒˆãŒã“ã“ã«å¯„ã›ã‚‰ã‚Œã‚‹å ´åˆã¯ã€[[特別:Userlogin|アカウントを作æˆã™ã‚‹ã‹ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦]]ä»–ã®åŒ¿åユーザーã¨é–“é•ãˆã‚‰ã‚Œãªã„よã†ã«ã—ã¦ãã ã•ã‚‹ã‚ˆã†ãŠé¡˜ã„ã—ã¾ã™ã€‚";s:13:"noarticletext";s:57:"(ã“ã®ãƒšãƒ¼ã‚¸ã«ã¯ç¾åœ¨è¨˜äº‹ãŒã‚ã‚Šã¾ã›ã‚“)";s:14:"clearyourcache";s:214:"'''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''.";s:22:"usercssjsyoucanpreview";s:160:"<strong>Tip:</strong> 「プレビューを実行ã€ãƒœã‚¿ãƒ³ã‚’使ã†ã¨ä¿å­˜å‰ã«æ–°ã—ã„スタイルシート・スクリプトをテストã§ãã¾ã™ã€‚";s:14:"usercsspreview";s:147:"'''ã‚ãªãŸã¯ãƒ¦ãƒ¼ã‚¶ã‚¹ã‚¿ã‚¤ãƒ«ã‚·ãƒ¼ãƒˆã‚’プレビューã—ã¦ã„ã¾ã™ã€‚ã¾ã ä¿å­˜ã•ã‚Œã¦ã„ãªã„ã®ã§æ³¨æ„ã—ã¦ãã ã•ã„。'''";s:13:"userjspreview";s:153:"'''ã‚ãªãŸã¯ãƒ¦ãƒ¼ã‚¶ã‚¹ã‚¯ãƒªãƒ—トをテスト・プレビューã—ã¦ã„ã¾ã™ã€‚ã¾ã ä¿å­˜ã•ã‚Œã¦ã„ãªã„ã®ã§æ³¨æ„ã—ã¦ãã ã•ã„。'''";s:7:"updated";s:12:"(更新)";s:4:"note";s:25:"<strong>注釈:</strong> ";s:11:"previewnote";s:67:"ã“ã‚Œã¯ãƒ—レビューã§ã™ã€‚ã¾ã ä¿å­˜ã•ã‚Œã¦ã„ã¾ã›ã‚“!";s:15:"previewconflict";s:149:"ã“ã®ãƒ—レビューã¯ã€ä¸Šã®æ–‡ç« ç·¨é›†ã‚¨ãƒªã‚¢ã®æ–‡ç« ã‚’ä¿å­˜ã—ãŸå ´åˆã«
+ã©ã†è¦‹ãˆã‚‹ã‚ˆã†ã«ãªã‚‹ã‹ã‚’示ã™ã‚‚ã®ã§ã™ã€‚
+<p>";s:7:"editing";s:15:"$1 を編集中";s:11:"sectionedit";s:12:"(部分)";s:11:"commentedit";s:19:" (コメント)";s:12:"editconflict";s:16:"編集競åˆ: $1";s:15:"explainconflict";s:514:"ã‚ãªãŸãŒã“ã®ãƒšãƒ¼ã‚¸ã‚’編集ã—始ã‚ãŸå¾Œã«ã€ä»–ã®èª°ã‹ãŒã“ã®ãƒšãƒ¼ã‚¸ã‚’変更ã—ã¾ã—ãŸã€‚
+上å´ã®ãƒ†ã‚­ã‚¹ãƒˆã‚¨ãƒªã‚¢ã¯ç¾åœ¨ã®æœ€æ–°ã®çŠ¶æ…‹ã§ã™ã€‚
+ã‚ãªãŸã®ç·¨é›†ã—ã¦ã„ãŸæ–‡ç« ã¯ä¸‹å´ã®ãƒ†ã‚­ã‚¹ãƒˆã‚¨ãƒªã‚¢ã«ç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚
+編集ã—ã¦ã„ãŸæ–‡ç« ã‚’ã€ä¸Šå´ã®ãƒ†ã‚­ã‚¹ãƒˆã‚¨ãƒªã‚¢ã®æ–‡ç« ã«çµ„ã¿è¾¼ã‚“ã§ä¸‹ã•ã„。
+<b>上å´ã®ãƒ†ã‚­ã‚¹ãƒˆã‚¨ãƒªã‚¢ã®å†…容ã ã‘</b>ãŒã€"ä¿å­˜ã™ã‚‹"をクリックã—ãŸæ™‚ã«å®Ÿéš›ã«ä¿å­˜ã•ã‚Œã¾ã™ã€‚
+<p>";s:8:"yourtext";s:18:"ã‚ãªãŸã®æ–‡ç« ";s:13:"storedversion";s:18:"ä¿å­˜ã•ã‚ŒãŸç‰ˆ";s:10:"editingold";s:217:"<strong>警告: ã‚ãªãŸã¯ã“ã®ãƒšãƒ¼ã‚¸ã®å¤ã„版を編集ã—ã¦ã„ã¾ã™ã€‚ã‚‚ã—ã“ã®æ–‡ç« ã‚’ä¿å­˜ã™ã‚‹ã¨ã€ã“ã®ç‰ˆä»¥é™ã«è¿½åŠ ã•ã‚ŒãŸå…¨ã¦ã®å¤‰æ›´ãŒç„¡åŠ¹ã«ãªã£ã¦ã—ã¾ã„ã¾ã™ã€‚</strong>";s:8:"yourdiff";s:24:"ã‚ãªãŸã®æ›´æ–°å†…容";s:16:"copyrightwarning";s:2190:"â– <strong>投稿ã™ã‚‹å‰ã«ä»¥ä¸‹ã‚’確èªã—ã¦ä¸‹ã•ã„</strong>â– 
+<ol>
+<li><strong>著作権ã®ã‚る作å“を許諾ãªã—ã«æŠ•ç¨¿ã—ã¦ã¯ã„ã‘ã¾ã›ã‚“! 特ã«ã€ä»–ã®ã‚¦ã‚§ãƒ–サイトã«æŽ²è¼‰ã•ã‚Œã¦ã„る文書ã®è»¢è¼‰ã¯é¿ã‘ã¦ãã ã•ã„。</strong>
+ãれらã®è‘—作権ã¯ã€ã‚‚ã—明示ã•ã‚Œã¦ã„ãªãã¦ã‚‚ã€ã»ã¨ã‚“ã©ã®å ´åˆã¯å…ƒã®æ–‡æ›¸ã‚’書ã„ãŸä½œè€…ã«å¸°å±žã—ã¾ã™ã€‚<br>ã‚ãªãŸã®æŠ•ç¨¿ã™ã‚‹æ–‡ç« ã¯ã‚ãªãŸè‡ªèº«ã«ã‚ˆã£ã¦æ›¸ã‹ã‚ŒãŸã‚‚ã®ã§ã‚ã‚‹ã‹ã€ãƒ‘ブリック・ドメインã‹ãã‚Œã«é¡žã™ã‚‹è‡ªç”±ãªãƒªã‚½ãƒ¼ã‚¹ã‹ã‚‰ã®è¤‡è£½ã§ã‚ã‚‹ã“ã¨ã‚’ç´„æŸã—ã¦ä¸‹ã•ã„。
+<li>Wikipedia(ウィキペディア)ã«æŠ•ç¨¿ã•ã‚ŒãŸæ–‡æ›¸ã¯ã€<strong>ã™ã¹ã¦ <a href="http://ja.wikipedia.org/wiki/Wikipedia:Text_of_GNU_Free_Documentation_License">GNU Free Documentation License (GFDL)</a>(内容ã¯ãƒªãƒ³ã‚¯å…ˆã‚’å‚ç…§ã—ã¦ãã ã•ã„)ã«ã‚ˆã£ã¦ç™ºè¡Œã—ã€ã‹ã¤ã€GFDLをウィキペディアã«ãŠã„ã¦é©ç”¨ã—ãŸå ´åˆã®è§£é‡ˆã«ã¤ã„ã¦ã¯ $1 ã®é€šã‚Šã§ã‚ã‚‹ã“ã¨ã‚’宣言ã—ãŸã‚‚ã®ã¨ã¿ãªã•ã‚Œã¾ã™ã€‚GFDLã¯ã€è‹±èªžã§æ›¸ã‹ã‚ŒãŸã‚‚ã®ãŒæ³•çš„ãªæ‹˜æŸåŠ›ã‚’ã‚‚ã¤å”¯ä¸€ã®æ­£æ–‡ã§ã™ãŒã€<a href="http://www.opensource.jp/fdl/fdl.ja.html.euc-jp">GFDLã®éžå…¬å¼ãªæ—¥æœ¬èªžè¨³</a>ã¯ã€æ­£æ–‡ã®ç†è§£ã‚’ãã‚ã‚ã¦å®¹æ˜“ã«ã™ã‚‹ã§ã—ょã†ã€‚但ã—ã€ã“ã®ç¿»è¨³ã¯ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã«ã‚ˆã‚‹ã‚‚ã®ã§ã¯ãªãã€è¨³ã®æ­£ç¢ºã•ç­‰ã«ã¤ã„ã¦ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã¯ä½•ã‚‰ã®ä¿è¨¼ã‚’è¡Œã†ã‚‚ã®ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。</strong>
+<li>「è¬è¾žã€ã€ŒçŒ®è¾žã€ãã®ä»–ã“ã‚Œã«é¡žã™ã‚‹ã‚»ã‚¯ã‚·ãƒ§ãƒ³åã¯ã€GFDL上ã®å•é¡Œã‚’å¿…è¦ä»¥ä¸Šã«è¤‡é›‘ã«ã—ã¾ã™ã®ã§ã€æŽ§ãˆã¦ãã ã•ã„。
+<li><strong>ã‚ãªãŸã®æ–‡ç« ãŒä»–人ã«ã‚ˆã£ã¦è‡ªç”±ã«ç·¨é›†ã€é…布ã•ã‚Œã‚‹ã“ã¨ã‚’望ã¾ãªã„å ´åˆã¯ã€æŠ•ç¨¿ã‚’控ãˆã¦ä¸‹ã•ã„。</strong><br>ã¾ãŸã€<strong>ã‚ãªãŸã¯ã€ã‚ãªãŸã®é–¢ä¸Žã—ãŸãƒšãƒ¼ã‚¸ãªã©ãŒã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã«ãŠã„ã¦ä¸é©å½“ã¨åˆ¤æ–­ã•ã‚ŒãŸå ´åˆï¼ˆä¸é©å½“ã¨åˆ¤æ–­ã•ã‚Œã‚‹ç†ç”±ãŒã‚ãªãŸã®é–¢ä¸Žã«ã‚ˆã‚‹ã‚‚ã®ã§ã¯ãªã„å ´åˆã‚’å«ã‚€ï¼‰ã«ã¯å‰Šé™¤ã•ã‚Œã‚‹ã“ã¨ã«ã€äºˆã‚åŒæ„を与ãˆã¾ã™ã€‚</strong>
+</ol>";s:15:"longpagewarning";s:316:"警告: ã“ã®ãƒšãƒ¼ã‚¸ã®ã‚µã‚¤ã‚ºã¯ $1 キロãƒã‚¤ãƒˆã§ã™ã€‚ブラウザã®ä¸­ã«ã¯ 32 キロãƒã‚¤ãƒˆä»¥ä¸Šã®ãƒšãƒ¼ã‚¸ã‚’編集ã™ã‚‹ã¨å•é¡ŒãŒèµ·ãã‚‹ã‚‚ã®ãŒã‚ã‚Šã¾ã™ã€‚詳ã—ãã¯ã€<a href="/wiki/Wikipedia:ページサイズ"><strong>ページサイズ</strong></a>ã‚’å‚ç…§ã—ã¦ãã ã•ã„。";s:15:"readonlywarning";s:290:"警告: データベースãŒãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã®ãŸã‚ロックã•ã‚Œã¦ã„ã¾ã™ã€‚ã§ã™ã®ã§ã€ä»Šã¯ç·¨é›†çµæžœã‚’æ­£ã—ãä¿å­˜ã§ãã¾ã›ã‚“。文章をカットアンドペーストã—ã¦ãƒ­ãƒ¼ã‚«ãƒ«ãƒ•ã‚¡ã‚¤ãƒ«ã¨ã—ã¦ä¿å­˜ã—ã€å¾Œã»ã©ä¿å­˜ã‚’ã‚„ã‚Šç›´ã—ã¦ä¸‹ã•ã„。";s:20:"protectedpagewarning";s:172:"警告: ã“ã®ãƒšãƒ¼ã‚¸ã¯ä¿è­·ã•ã‚Œã¦ã„ã¾ã™ã€‚管ç†è€…ã—ã‹ç·¨é›†ã§ãã¾ã›ã‚“。詳ã—ãã¯ãƒšãƒ¼ã‚¸ä¿è­·ã®æ–¹é‡ï¼ˆæœªä½œæˆï¼‰ã‚’å‚ç…§ã—ã¦ä¸‹ã•ã„。";s:10:"revhistory";s:12:"改訂履歴";s:9:"nohistory";s:54:"ã“ã®ãƒšãƒ¼ã‚¸ã«ã¯æ”¹è¨‚履歴ãŒã‚ã‚Šã¾ã›ã‚“。";s:11:"revnotfound";s:45:"è¦æ±‚ã•ã‚ŒãŸç‰ˆãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。";s:15:"revnotfoundtext";s:279:"è¦æ±‚ã•ã‚ŒãŸã“ã®ãƒšãƒ¼ã‚¸ã®æ—§ç‰ˆã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚
+URLã‚’ã‚‚ã†ä¸€åº¦ç¢ºèªã—ã¦ã€ã“ã®ãƒšãƒ¼ã‚¸ã«ã‚¢ã‚¯ã‚»ã‚¹ã—ã¦ã¿ã¦ä¸‹ã•ã„。
+
+The old revision of the page you asked for could not be found.
+Please check the URL you used to access this page.
+";s:8:"loadhist";s:30:"改訂履歴ã®èª­ã¿è¾¼ã¿ä¸­";s:10:"currentrev";s:9:"最新版";s:12:"revisionasof";s:8:"$1ã®ç‰ˆ";s:3:"cur";s:9:"最新版";s:4:"next";s:9:"次ã®ç‰ˆ";s:4:"last";s:9:"å‰ã®ç‰ˆ";s:4:"orig";s:9:"最å¤ç‰ˆ";s:10:"histlegend";s:111:"凡例:(最新版)= 最新版ã¨ã®æ¯”較ã€ï¼ˆå‰ã®ç‰ˆï¼‰= ç›´å‰ã®ç‰ˆã¨ã®æ¯”較ã€M = 細部ã®ç·¨é›†";s:10:"difference";s:24:"(版間ã§ã®å·®åˆ†ï¼‰";s:10:"loadingrev";s:60:"差分をã¨ã‚‹ãŸã‚ã«å¤ã„版を読ã¿è¾¼ã‚“ã§ã„ã¾ã™";s:6:"lineno";s:6:"$1 è¡Œ";s:11:"editcurrent";s:36:"ã“ã®ãƒšãƒ¼ã‚¸ã®æœ€æ–°ç‰ˆã‚’編集";s:25:"selectnewerversionfordiff";s:37:"Select a newer version for comparison";s:25:"selectolderversionfordiff";s:38:"Select an older version for comparison";s:23:"compareselectedversions";s:30:"é¸æŠžã—ãŸç‰ˆåŒå£«ã‚’比較";s:13:"searchresults";s:12:"検索çµæžœ";s:14:"searchhelppage";s:19:"Wikipedia:Searching";s:18:"searchingwikipedia";s:30:"検索機能ã®è§£èª¬ãƒšãƒ¼ã‚¸";s:16:"searchresulttext";s:80:"Wikipedia ã®æ¤œç´¢ã«ã¤ã„ã¦ã®è©³ã—ã„情報ã¯ã€ $1 ã‚’ã”覧下ã•ã„。";s:11:"searchquery";s:36:"å•ã„åˆã‚ã› "$1" ã«ã¤ã„ã¦ã€";s:8:"badquery";s:42:"ãŠã‹ã—ãªå½¢å¼ã®æ¤œç´¢å•ã„åˆã‚ã›";s:12:"badquerytext";s:291:"å•ã„åˆã‚ã›ã‚’処ç†ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
+ã“ã‚Œã¯ãŠãらãã€3文字未満ã®èªžã‚’検索ã—よã†ã¨ã—ãŸãŸã‚ã§ã™ãŒã€ã“ã‚Œã«ã¯ã¾ã å¯¾å¿œã—ã¦ã„ã¾ã›ã‚“。
+例ãˆã°ã€Œé­š and and 大ãã•ã€ã®ã‚ˆã†ã«ã€è¡¨ç¾ã‚’誤記ã—ã¦ã„ã‚‹ã®ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。";s:11:"matchtotals";s:97:"å•ã„åˆã‚ã›ã€Œ$1ã€ã¯ $2 ã®è¨˜äº‹ã®é¡ŒåŠã³ $3 ã®è¨˜äº‹ã®æœ¬æ–‡ã¨ä¸€è‡´ã—ã¾ã—ãŸã€‚";s:9:"nogomatch";s:105:"検索ã—ãŸå称ã®é …ç›®ã¯å­˜åœ¨ã—ã¾ã›ã‚“ã§ã—ãŸã€‚全文検索を試ã—ã¦ã¿ã¦ãã ã•ã„。";s:12:"titlematches";s:18:"é …ç›®åã¨ä¸€è‡´";s:14:"notitlematches";s:42:"é …ç›®åã¨ã¯ä¸€è‡´ã—ã¾ã›ã‚“ã§ã—ãŸ";s:11:"textmatches";s:21:"記事本文ã¨ä¸€è‡´";s:13:"notextmatches";s:45:"記事本文ã¨ã¯ä¸€è‡´ã—ã¾ã›ã‚“ã§ã—ãŸ";s:5:"prevn";s:6:"å‰ $1";s:5:"nextn";s:6:"次 $1";s:12:"viewprevnext";s:30:"($1)($2)($3) を見る";s:14:"showingresults";s:63:"<b>$2</b> 件目ã‹ã‚‰ <b>$1</b> 件を表示ã—ã¦ã„ã¾ã™ã€‚";s:17:"showingresultsnum";s:63:"<b>$2</b> 件目ã‹ã‚‰ <b>$3</b> 件を表示ã—ã¦ã„ã¾ã™ã€‚";s:9:"nonefound";s:311:"<strong>Note</strong>: 検索ãŒã†ã¾ãã„ã‹ãªã„ã®ã¯ã€ã€Œã‚ã‚‹ã€ã‚„「ã‹ã‚‰ã€ã®ã‚ˆã†ãªä¸€èˆ¬çš„ãªèªžã§ç´¢å¼•ä»˜ã‘ãŒã•ã‚Œã¦ã„ãªã„ã¨ã‹ã€è¤‡æ•°ã®æ¤œç´¢èªžã‚’指定ã—ã¦ã„る(全ã¦ã®æ¤œç´¢èªžã‚’å«ã‚€é ã ã‘ãŒçµæžœã«ç¤ºã•ã‚Œã¾ã™ã€‚)ãªã©ã®ãŸã‚ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。";s:11:"powersearch";s:6:"検索";s:15:"powersearchtext";s:99:"検索ã™ã‚‹åå‰ç©ºé–“ :<br>
+$1<br>
+$2リダイレクトをå«ã‚ã‚‹ &nbsp; &nbsp; &nbsp; $3 $9";s:14:"searchdisabled";s:228:"<p>全文検索ã¯ã‚µãƒ¼ãƒãƒ¼è² è·ã®éƒ½åˆã‹ã‚‰ã€ä¸€æ™‚çš„ã«ä½¿ç”¨åœæ­¢ã—ã¦ã„ã¾ã™ã€‚<br>å…ƒã«æˆ»ã‚‹ã¾ã§Google ã§ã®å…¨æ–‡æ¤œç´¢ã‚’利用ã—ã¦ãã ã•ã„。検索çµæžœã¯å°‘ã—å¤ã„内容ã¨ãªã‚Šã¾ã™ã€‚</p>";s:12:"googlesearch";s:1740:"<form method="get" action="http://www.google.com/search"><!-- SiteSearch Google -->
+<table>
+<tr><td>
+<a href="http://www.google.com/"><img src="http://www.google.com/logos/Logo_40wht.gif" border="0" alt="Google" /></a>
+</td><td>
+<input type="hidden" name="domains" value="http://ja.wikipedia.org" />
+<input type="hidden" name="ie" value="$2" />
+<input type="hidden" name="oe" value="$2" />
+<input type="text" name="q" size="31" maxlength="255" value="$1" />
+<input type="submit" name="btnG" value="Google 検索" /><br />
+<small><input type="radio" name="sitesearch" value="" id="googlesearch_www"/><label for="googlesearch_www">WWW</label>
+<input type="radio" name="sitesearch" value="http://ja.wikipedia.org" checked="checked" id="googlesearch_jawp" /><label for="googlesearch_jawp">http://ja.wikipedia.org/</label></small>
+</td></tr>
+</table>
+</form>
+<form method="get" action="http://search.yahoo.com/search"><!-- SiteSearch Google --><!-- Yahoo search -->
+<table>
+<tr><td>
+<a href="http://search.yahoo.com/"><img src="http://us.i1.yimg.com/us.yimg.com/i/us/search/ysan/ysanlogo.gif" border="0" alt="Yahoo!" /></a>
+</td><td>
+<input type="hidden" name="ei" value="UTF-8" />
+<input type="hidden" name="va_vt" value="any" />
+<input type="hidden" name="x" value="op" />
+<input type="text" name="va" size="31" value="$1" />
+<input type="submit" value="Yahoo! 検索" /><br />
+<small><input type="radio" name="vs" value="" id="yahoosearch_www" /><label for="yahoosearch_www">WWW</label>
+<input type="radio" name="vs" value="ja.wikipedia.org" checked="checked" id="yahoosearch_jawp" /><label for="yahoosearch_jawp">http://ja.wikipedia.org/</label></small>
+</td></tr>
+</table>
+<p>諸事情ã«ã‚ˆã‚Šã€yahoo.com ã§ã®æ¤œç´¢ã§ã™ã€‚</p>
+</form>";s:14:"blanknamespace";s:6:"(Main)";s:11:"preferences";s:15:"オプション";s:12:"prefsnologin";s:30:"ログインã—ã¦ã„ã¾ã›ã‚“";s:16:"prefsnologintext";s:138:"ユーザーオプションを変更ã™ã‚‹ãŸã‚ã«ã¯ã€
+<a href="/wiki/特別:Userlogin">ログイン</a>ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚";s:14:"prefslogintext";s:221:"ã‚ãªãŸã¯ "$1" ã¨ã—ã¦ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ã„ã¾ã™ã€‚
+ã‚ãªãŸã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ç•ªå·ã¯ $2 ã§ã™ã€‚
+
+オプションã®å¤‰æ›´è©³ç´°ã«ã¤ã„ã¦ã¯ [[Wikipedia:オプションã®ãƒ˜ãƒ«ãƒ—]] ã‚’ã”覧ãã ã•ã„。";s:10:"prefsreset";s:48:"ユーザー設定ã¯åˆæœŸåŒ–ã•ã‚Œã¾ã—ãŸã€‚";s:10:"qbsettings";s:24:"クイックãƒãƒ¼è¨­å®š";s:14:"qbsettingsnote";s:72:"This preference only works in the 'Standard' and the 'CologneBlue' skin.";s:14:"changepassword";s:21:"パスワード変更";s:4:"skin";s:6:"外装";s:4:"math";s:21:"æ•°å¼ã®è¡¨è¨˜æ–¹æ³•";s:10:"dateformat";s:15:"日付ã®æ›¸å¼";s:12:"math_failure";s:15:"Failed to parse";s:18:"math_unknown_error";s:13:"unknown error";s:21:"math_unknown_function";s:17:"unknown function ";s:17:"math_lexing_error";s:12:"lexing error";s:17:"math_syntax_error";s:12:"syntax error";s:16:"math_image_error";s:36:"PNGã¸ã®å¤‰æ›ã«å¤±æ•—ã—ã¾ã—ãŸ";s:15:"math_bad_tmpdir";s:44:"Can't write to or create math temp directory";s:15:"math_bad_output";s:46:"Can't write to or create math output directory";s:12:"math_notexvc";s:62:"Missing texvc executable; please see math/README to configure.";s:14:"prefs-personal";s:18:"利用者ã®æƒ…å ±";s:8:"prefs-rc";s:33:"最近更新ã¨ã‚¹ã‚¿ãƒ–ã®è¡¨ç¤º";s:10:"prefs-misc";s:18:"ãã®ä»–ã®è¨­å®š";s:9:"saveprefs";s:15:"設定ã®ä¿å­˜";s:10:"resetprefs";s:18:"設定ã®åˆæœŸåŒ–";s:11:"oldpassword";s:21:"å¤ã„パスワード";s:11:"newpassword";s:24:"æ–°ã—ã„パスワード";s:9:"retypenew";s:51:"æ–°ã—ã„パスワードをå†å…¥åŠ›ã—ã¦ä¸‹ã•ã„";s:11:"textboxsize";s:36:"テキストボックスã®å¤§ãã•";s:4:"rows";s:3:"縦";s:7:"columns";s:3:"横";s:17:"searchresultshead";s:21:"検索çµæžœã®è¡¨ç¤º";s:14:"resultsperpage";s:34:"1ページã‚ãŸã‚Šã®è¡¨ç¤ºä»¶æ•°";s:12:"contextlines";s:22:"1件ã‚ãŸã‚Šã®è¡Œæ•°";s:12:"contextchars";s:25:"1è¡Œã‚ãŸã‚Šã®æ–‡å­—æ•°";s:13:"stubthreshold";s:30:"スタブ表示ã«ã™ã‚‹é–¾å€¤";s:18:"recentchangescount";s:45:"最近更新ã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã®è¡¨ç¤ºä»¶æ•°";s:10:"savedprefs";s:39:"ユーザー設定をä¿å­˜ã—ã¾ã—ãŸ";s:14:"timezonelegend";s:9:"Time zone";s:12:"timezonetext";s:99:"UTCã¨ã‚ãªãŸã®åœ°åŸŸã®æ¨™æº–時間ã¨ã®å·®ã‚’入力ã—ã¦ä¸‹ã•ã„。(日本国内㯠9 )";s:9:"localtime";s:33:"ã‚ãªãŸã®åœ°åŸŸã®æ¨™æº–時間";s:14:"timezoneoffset";s:3:"å·®";s:10:"servertime";s:24:"サーãƒã®ç¾åœ¨æ™‚刻";s:13:"guesstimezone";s:12:"自動設定";s:9:"emailflag";s:60:"ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‹ã‚‰ã®ãƒ¡ãƒ¼ãƒ«é€ä»˜ã‚’å·®ã—æ­¢ã‚ã‚‹";s:9:"defaultns";s:34:"標準ã§æ¤œç´¢ã™ã‚‹åå‰ç©ºé–“:";s:7:"changes";s:7:"changes";s:13:"recentchanges";s:27:"最近更新ã—ãŸãƒšãƒ¼ã‚¸";s:17:"recentchangestext";s:976:"最近付ã‘加ãˆã‚‰ã‚ŒãŸå¤‰æ›´ã¯ã“ã®ãƒšãƒ¼ã‚¸ã§ç¢ºèªã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
+[[Wikipedia:æ–°è¦å‚加者ã®æ–¹ã€ã‚ˆã†ã“ã]]ï¼
+以下ã®ãƒšãƒ¼ã‚¸ã‚‚å‚ç…§ã—ã¦ä¸‹ã•ã„:
+[[wikipedia:ウィキペディア よãã‚る質å•é›†]],
+[[Wikipedia:ウィキペディアã®åŸºæœ¬æ–¹é‡ã¨ã‚¬ã‚¤ãƒ‰ãƒ©ã‚¤ãƒ³]]
+(特ã«[[Wikipedia:記事åã®ã¤ã‘æ–¹]],
+[[Wikipedia:中立的ãªè¦³ç‚¹]]),
+[[Wikipedia:ウィキペディアã§èµ·ã“ã—ãŒã¡ãªé–“é•ã„]].
+
+ウィキペディアãŒæˆåŠŸã™ã‚‹ãŸã‚ã«ã¯ã€ã‚ãªãŸã®æŠ•ç¨¿ã™ã‚‹å†…容ãŒä»–人ã®è‘—作権ãªã©ã«ã‚ˆã£ã¦æŸç¸›ã•ã‚Œã¦ã„ãªã„ã“ã¨ãŒã¨ã¦ã‚‚é‡è¦ã§ã™ã€‚[[Wikipedia:著作権]]
+法的責任å•é¡Œã¯ã€ãƒ—ロジェクトã«è‡´å‘½å‚·ã‚’与ãˆã‚‹ã“ã¨ã‚‚ã‚ã‚‹å•é¡Œã§ã™ã€‚他人ã®è‘—作物ãªã©ã‚’æµç”¨ã™ã‚‹ã“ã¨ã¯çµ¶å¯¾ã«é¿ã‘ã¦ãã ã•ã„。ã¾ãŸæ¬¡ã®ãƒšãƒ¼ã‚¸ã‚‚å‚ç…§ã—ã¦ä¸‹ã•ã„。[http://meta.wikipedia.org/wiki/Special:Recentchanges recent meta discussion]";s:9:"rcloaderr";s:45:"最近ã®æ›´æ–°æƒ…報をダウンロード中";s:6:"rcnote";s:99:"以下ã¯æœ€è¿‘ <strong>$2</strong> 日間ã«ç·¨é›†ã•ã‚ŒãŸ <strong>$1</strong> ページã§ã™ã€‚";s:10:"rcnotefrom";s:70:"以下㯠<b>$2</b> ã¾ã§ã®æ›´æ–°ã§ã™ã€‚(最大 <b>$1</b> 件)";s:10:"rclistfrom";s:160:"$1以後ç¾åœ¨ã¾ã§ã®æ›´æ–°ã‚’表示(<strong>N</strong>=æ–°è¦è¨˜äº‹ã€<strong>M</strong>=細部ã®ç·¨é›†ã€æ—¥æ™‚ã¯ã‚ªãƒ—ションã§æœªè¨­å®šãªã‚‰UTC)";s:13:"showhideminor";s:105:"細部ã®ç·¨é›†ã‚’$1 | ボットã«ã‚ˆã‚‹ç·¨é›†ã‚’$2 | ログイン済ã¿ã®ãƒ¦ãƒ¼ã‚¶ã«ã‚ˆã‚‹ç·¨é›†ã‚’$3";s:7:"rclinks";s:50:"最近 $2 日間㮠$1 件分を表示ã™ã‚‹<br>$3";s:6:"rchide";s:71:"in $4 form; $1 minor edits; $2 secondary namespaces; $3 multiple edits.";s:5:"rcliu";s:31:"; $1 edits from logged in users";s:4:"diff";s:6:"差分";s:4:"hist";s:6:"履歴";s:4:"hide";s:6:"éš ã™";s:4:"show";s:6:"表示";s:9:"tableform";s:3:"表";s:8:"listform";s:9:"リスト";s:8:"nchanges";s:14:"$1件ã®å¤‰æ›´";s:15:"minoreditletter";s:1:"M";s:13:"newpageletter";s:1:"N";s:6:"upload";s:18:"アップロード";s:9:"uploadbtn";s:87:"上記ã®äº‹é …を完全ã«ç†è§£ã—åŒæ„ã—ãŸä¸Šã§ãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロード";s:10:"uploadlink";s:27:"ç”»åƒã®ã‚¢ãƒƒãƒ—ロード";s:8:"reupload";s:21:"å†ã‚¢ãƒƒãƒ—ロード";s:12:"reuploaddesc";s:42:"アップロードã®ãƒ•ã‚©ãƒ¼ãƒ ã¸æˆ»ã‚‹";s:13:"uploadnologin";s:30:"ログインã—ã¦ã„ã¾ã›ã‚“";s:17:"uploadnologintext";s:124:"ファイルをアップロードã™ã‚‹ã«ã¯<a href="/wiki/特別:Userlogin">ログイン</a>ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚";s:10:"uploadfile";s:33:"ファイルã®ã‚¢ãƒƒãƒ—ロード";s:11:"uploaderror";s:28:"アップロード エラー";s:10:"uploadtext";s:2624:"<p><strong>ã”注æ„ï¼</strong> - ã“ã“ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロードã™ã‚‹å‰ã«ã€ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã®<a href="/wiki/Wikipedia:ç”»åƒåˆ©ç”¨ã®æ–¹é‡">ç”»åƒåˆ©ç”¨ã®æ–¹é‡</a>をよã読んã§ã€æ–¹é‡ã«åã™ã‚‹ã“ã¨ã®ãªã„よã†ã«ã—ã¦ä¸‹ã•ã„。</p>
+
+<p>ã“ã‚Œã¾ã§ã«ã‚¢ãƒƒãƒ—ロードã•ã‚ŒãŸã‚¤ãƒ¡ãƒ¼ã‚¸ã®ä¸€è¦§ã‚„検索ã«ã¯ã€<a href="/wiki/特別:Imagelist">ç”»åƒãƒªã‚¹ãƒˆ</a>ãŒä¾¿åˆ©ã§ã™ã€‚アップロードã¨å‰Šé™¤ã®è¨˜éŒ²ã¯<a href="/wiki/Wikipedia:Upload_log">Wikipedia:Upload_log</a>ã«ã‚ã‚Šã¾ã™ã€‚</p>
+
+<p>記事ã«å¿…è¦ãªç”»åƒã‚’æ–°ã—ãアップロードã™ã‚‹å ´åˆã«ã¯ã€ä»¥ä¸‹ã®ãƒ•ã‚©ãƒ¼ãƒ ã‚’利用ã—ã¦ä¸‹ã•ã„。</p>
+
+<p>ã»ã¨ã‚“ã©ã®ãƒ–ラウザーã§ã¯ã€"Browse"ã¨ã„ã†ãƒœã‚¿ãƒ³ãŒè¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ãã®ãƒœã‚¿ãƒ³ã‚’押ã™ã¨ã€ã‚ãªãŸã®ä½¿ç”¨ã—ã¦ã„るコンピューター(ã®ã‚ªãƒšãƒ¬ãƒ¼ãƒ†ã‚£ãƒ³ã‚°ãƒ»ã‚·ã‚¹ãƒ†ãƒ ï¼‰ã§ãƒ•ã‚¡ã‚¤ãƒ«ã‚’é–‹ãéš›ã®æ¨™æº–çš„ãªæ‰‹ç¶šããŒå§‹ã¾ã‚Šã¾ã™ã€‚ファイルをé¸æŠžã—ã¦ã€Browseã¨ã„ã†ãƒœã‚¿ãƒ³ã®æ¨ªã«ã‚る空欄ã«ãƒ•ã‚¡ã‚¤ãƒ«åãŒå…¥åŠ›ã•ã‚ŒãŸçŠ¶æ…‹ã«ã—ã¦ä¸‹ã•ã„。ã¾ãŸã€ã‚ãªãŸãŒãã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロードã™ã‚‹ã“ã¨ãŒè‘—作権を侵害ã«è©²å½“ã—ãªã„ã“ã¨ã‚’ã‚ãªãŸãŒè¡¨æ˜Žã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ãã®ãŸã‚ã«ã€ãƒã‚§ãƒƒã‚¯æ¬„ã«ãƒã‚§ãƒƒã‚¯ã‚’入れã¦ä¸‹ã•ã„。上記ã®äº‹é …を完全ã«ç†è§£ã—åŒæ„ã—ãŸä¸Šã§ãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロードボタンを押ã™ã“ã¨ã§ã€ã‚¢ãƒƒãƒ—ロード手続ãã¯å®Œäº†ã—ã¾ã™ã€‚ã‚‚ã—ã‚‚ã‚ãªãŸã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆæŽ¥ç¶šãŒä½Žé€Ÿã®ã‚‚ã®ã§ã‚ã‚Œã°ã€ã‚¢ãƒƒãƒ—ロードã«ã¯å¤šå°‘時間ãŒã‹ã‹ã‚Šã¾ã™ã€‚</p>
+
+<p>望ã¾ã—ã„フォーマットã¯ã€å†™çœŸãªã©ã®ã‚¤ãƒ¡ãƒ¼ã‚¸ã®å ´åˆã¯JPEGã€æ‰‹æ›¸ãã®ã‚‚ã®ã‚„アイコンãªã©ã¯PNGã€ã‚µã‚¦ãƒ³ãƒ‰ã«ã¯OGGã§ã™ã€‚</p>
+
+<p>混乱をé¿ã‘ã‚‹ãŸã‚ã«èª¬æ˜Žçš„ãªåå‰ã‚’ã¤ã‘ã¦ä¸‹ã•ã„。</p>
+
+<p>ç”»åƒã‚’記事ã«çµ„ã¿å…¥ã‚Œã‚‹ãŸã‚ã«ã¯ã€æ¬¡ã®ã‚ˆã†ãªãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã§ãƒªãƒ³ã‚¯ã‚’張りã¾ã™ã€‚<strong>[[ç”»åƒ:file.jpg]]ã€[[ç”»åƒ:file.png|説明文]]</strong>ã¾ãŸã€ã‚µã‚¦ãƒ³ãƒ‰ã«ã¯ <strong>[[media:file.ogg]]</strong> ã®ã‚ˆã†ãªãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆã‚’用ã„ã¾ã™ã€‚</p>
+
+<p>ウィキペディアã®ä»–ã®ãƒšãƒ¼ã‚¸ã¨åŒã˜ãã€ã‚ãªãŸãŒã‚¢ãƒƒãƒ—ロードã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚‚ã€ã‚ˆã‚Šã‚ˆã„百科事典作æˆã®ãŸã‚ã«ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ã‚ˆã£ã¦ç·¨é›†ã€å‰Šé™¤ã•ã‚Œã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ã¾ãŸã€ã‚¢ãƒƒãƒ—ロード機能を乱用ã—ãŸåˆ©ç”¨è€…ã¯ã€ã‚¢ãƒƒãƒ—ロード機能ã®ä½¿ç”¨ã‚’ç¦ã˜ã‚‰ã‚Œã‚‹ã“ã¨ã‚‚ã‚ã‚Šã¾ã™ã®ã§ã”承知下ã•ã„。</p>";s:9:"uploadlog";s:24:"アップロードログ";s:13:"uploadlogpage";s:24:"アップロードログ";s:17:"uploadlogpagetext";s:157:"以下ã¯æœ€è¿‘ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚¢ãƒƒãƒ—ロードã®ãƒ­ã‚°ã§ã™ã€‚
+記録ã¯å…¨ã¦ã‚µãƒ¼ãƒãƒ¼ã®æ™‚é–“ã§ã‚ã‚‹UTCã«åŸºã¥ãã‚‚ã®ã§ã™ã€‚
+<ul>
+</ul>
+";s:8:"filename";s:15:"ファイルå";s:8:"filedesc";s:21:"ファイルã®æ¦‚è¦";s:10:"filestatus";s:16:"Copyright status";s:10:"filesource";s:6:"Source";s:11:"affirmation";s:223:"ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®è‘—作権者ã¯$1ã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ã«åŸºã¥ã
+使用を許å¯ã—ãŸã“ã¨ã‚’ã“ã“ã«è¡¨æ˜Žã—ã¾ã™ã€‚
+
+I affirm that the copyright holder of this file
+agrees to license it under the terms of the $1.";s:13:"copyrightpage";s:19:"Wikipedia:著作権";s:17:"copyrightpagename";s:33:"ウィキペディアã®è‘—作権";s:13:"uploadedfiles";s:39:"アップロードã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«";s:13:"noaffirmation";s:99:"ã‚ãªãŸã®ã‚¢ãƒƒãƒ—ロードãŒè‘—作権ã®ä¾µå®³ã«ã‚ãŸã‚‰ãªã„旨を表明ã—ã¦ä¸‹ã•ã„。";s:13:"ignorewarning";s:42:"警告を無視ã—ã€ä¿å­˜ã—ã¦ã—ã¾ã†";s:9:"minlength";s:64:"ファイルåã¯3文字以上ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚";s:11:"badfilename";s:49:"ファイルåã¯"$1"ã¸å¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚";s:11:"badfiletype";s:84:"".$1" ã¯æŽ¨å¥¨ã•ã‚Œã¦ã„るファイルフォーマットã§ã¯ã‚ã‚Šã¾ã›ã‚“。";s:9:"largefile";s:96:"ファイルサイズã¯100キロãƒã‚¤ãƒˆä»¥ä¸‹ã«æŠ‘ãˆã‚‹ã“ã¨ãŒæŽ¨å¥¨ã•ã‚Œã¦ã„ã¾ã™ã€‚";s:16:"successfulupload";s:24:"アップロードæˆåŠŸ";s:12:"fileuploaded";s:237:"ファイル"$1\ã¯ç„¡äº‹ã«ã‚¢ãƒƒãƒ—ロードã•ã‚Œã¾ã—ãŸã€‚
+以下ã®ãƒªãƒ³ã‚¯($2)をクリックã—ã€ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¤ã„ã¦ã®æƒ…å ±ï¼å‡ºå…¸ã€è£½ä½œè€…や時期ã€
+ãã®ä»–知ã£ã¦ã„る情報を書ã込んã§ä¸‹ã•ã„。
+
+";s:13:"uploadwarning";s:25:"アップロード 警告";s:8:"savefile";s:21:"ファイルをä¿å­˜";s:13:"uploadedimage";s:40:""$1"をアップロードã—ã¾ã—ãŸã€‚";s:14:"uploaddisabled";s:81:"申ã—訳ã‚ã‚Šã¾ã›ã‚“ãŒã€ã‚¢ãƒƒãƒ—ロードã¯ç¾åœ¨ä½¿ç”¨å‡ºæ¥ã¾ã›ã‚“。";s:9:"imagelist";s:15:"ç”»åƒãƒªã‚¹ãƒˆ";s:13:"imagelisttext";s:46:"$1 æžšã®ç”»åƒã‚’ $2 ã«è¡¨ç¤ºã—ã¦ã„ã¾ã™";s:12:"getimagelist";s:24:"ç”»åƒãƒªã‚¹ãƒˆã‚’å–å¾—";s:11:"ilshowmatch";s:45:"マッãƒã™ã‚‹åå‰ã®ç”»åƒã‚’å…¨ã¦è¡¨ç¤º";s:8:"ilsubmit";s:6:"検索";s:8:"showlast";s:30:"$2ã« $1 æžšã®ç”»åƒã‚’表示";s:3:"all";s:6:"å…¨ã¦";s:6:"byname";s:9:"åå‰é †";s:6:"bydate";s:9:"日付順";s:6:"bysize";s:12:"サイズ順";s:9:"imgdelete";s:6:"削除";s:7:"imgdesc";s:6:"詳細";s:9:"imglegend";s:53:"凡例: (詳細)= ç”»åƒã®è©³ç´°ã‚’表示/編集";s:10:"imghistory";s:15:"ç”»åƒã®å±¥æ­´";s:9:"revertimg";s:6:"差戻";s:9:"deleteimg";s:6:"削除";s:13:"imghistlegend";s:225:"凡例:(最新)= 最新版ã®ç”»åƒã€ï¼ˆå‰Šé™¤ï¼‰= ã“ã®ç‰ˆã®ç”»åƒã‚’削除ã€ï¼ˆå·®æˆ»ï¼‰= ã“ã®ç‰ˆã®ç”»åƒã«å·®ã—戻ã™<br><b>アップロードã•ã‚ŒãŸç”»åƒã‚’見るã«ã¯æ—¥ä»˜ã‚’クリックã—ã¾ã™ã€‚</b>";s:10:"imagelinks";s:9:"リンク";s:12:"linkstoimage";s:55:"ã“ã®ç”»åƒã«ãƒªãƒ³ã‚¯ã—ã¦ã„るページã®ä¸€è¦§:";s:14:"nolinkstoimage";s:66:"ã“ã®ç”»åƒã«ãƒªãƒ³ã‚¯ã—ã¦ã„るページã¯ã‚ã‚Šã¾ã›ã‚“。";s:10:"statistics";s:18:"アクセス統計";s:9:"sitestats";s:24:"サイト全体ã®çµ±è¨ˆ";s:9:"userstats";s:24:"ユーザー登録統計";s:13:"sitestatstext";s:1098:"データベース内ã«ã¯ '''$1''' ページã®ãƒ‡ãƒ¼ã‚¿ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®æ•°å­—ã«ã¯ã€Œä¼šè©±ãƒšãƒ¼ã‚¸ã€ã‚„「Wikipedia関連ã®ãƒšãƒ¼ã‚¸ã€ã€ã€Œæ›¸ãã‹ã‘ã®ãƒšãƒ¼ã‚¸ã€ã€ã€Œãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã€ãªã©ã€è¨˜äº‹ã¨ã¯ã¿ãªã›ãªã„ページãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚ã“れらを除ã„ãŸã€è¨˜äº‹ã¨ã¿ãªã•ã‚Œã‚‹ãƒšãƒ¼ã‚¸æ•°ã¯ç´„ '''$2''' ページã«ãªã‚Šã¾ã™ã€‚
+
+ページã®ç·é–²è¦§å›žæ•°ã¯ '''$3''' 回<sup>※</sup>ã§ã™ã€‚ã¾ãŸã€ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®æ›´æ–° (2002/06/20) 以æ¥ã€'''$4''' 回ã®ç·¨é›†ãŒè¡Œã‚ã‚Œã¾ã—ãŸã€‚å¹³å‡ã™ã‚‹ã¨ã€1 ページã‚ãŸã‚Š '''$5''' 回ã®ç·¨é›†ãŒè¡Œã‚ã‚Œã€1 編集ã‚ãŸã‚Š '''$6''' 回閲覧ã•ã‚Œã¦ã„ã¾ã™ã€‚
+
+※ページã®ç·é–²è¦§å›žæ•°ã¯ã‚µãƒ¼ãƒè² è·ä½Žæ¸›ã®ãŸã‚ã€ç¾åœ¨ã¯æ›´æ–°ã•ã‚Œã¦ã„ã¾ã›ã‚“。
+:* [http://ja.wikipedia.org/stats/ Webalizer ã«ã‚ˆã‚‹ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢æ—¥æœ¬èªžç‰ˆã‚¢ã‚¯ã‚»ã‚¹çµ±è¨ˆ]
+:* [http://www.wikipedia.org/wikistats/JA/Sitemap.htm エーリック・ザクテæ°ã«ã‚ˆã‚‹ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã®çµ±è¨ˆãƒšãƒ¼ã‚¸]
+:*[[Wikipedia:日本語版ã®çµ±è¨ˆ|日本語版ã®çµ±è¨ˆ]]";s:13:"userstatstext";s:123:"登録済ã¿ã®åˆ©ç”¨è€…㯠<b>$1</b> 人ã§ã€å†… <b>$2</b> 人ãŒç®¡ç†è€…権é™ã‚’æŒã£ã¦ã„ã¾ã™ã€‚($3ã‚’å‚照)";s:11:"maintenance";s:27:"メンテナンスページ";s:18:"maintnancepagetext";s:176:"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 ;-)";s:19:"maintenancebacklink";s:24:"Back to Maintenance Page";s:15:"disambiguations";s:20:"Disambiguation pages";s:19:"disambiguationspage";s:39:"Wikipedia:Links_to_disambiguating_pages";s:19:"disambiguationstext";s:234:"The following pages link to a <i>disambiguation page</i>. They should link to the appropriate topic instead.<br />A page is treated as dismbiguation if it is linked from $1.<br />Links from other namespaces are <i>not</i> listed here.";s:15:"doubleredirects";s:24:"二é‡ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ";s:19:"doubleredirectstext";s:338:"<b>Attention:</b> This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.<br />
+Each 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.";s:15:"brokenredirects";s:16:"Broken Redirects";s:19:"brokenredirectstext";s:53:"The following redirects link to a non-existing pages.";s:9:"selflinks";s:21:"Pages with Self Links";s:13:"selflinkstext";s:72:"The following pages contain a link to themselves, which they should not.";s:11:"mispeelings";s:23:"Pages with misspellings";s:15:"mispeelingstext";s:122:"The following pages contain a common misspelling, which are listed on $1. The correct spelling might be given (like this).";s:15:"mispeelingspage";s:27:"List of common misspellings";s:20:"missinglanguagelinks";s:22:"Missing Language Links";s:26:"missinglanguagelinksbutton";s:31:"Find missing language links for";s:24:"missinglanguagelinkstext";s:103:"These pages do <i>not</i> link to their counterpart in $1. Redirects and subpages are <i>not</i> shown.";s:7:"orphans";s:27:"孤立ã—ã¦ã„るページ";s:11:"lonelypages";s:27:"孤立ã—ã¦ã„るページ";s:12:"unusedimages";s:27:"使ã‚ã‚Œã¦ã„ãªã„ç”»åƒ";s:12:"popularpages";s:18:"人気ã®ãƒšãƒ¼ã‚¸";s:6:"nviews";s:12:"$1 回表示";s:11:"wantedpages";s:36:"投稿ãŒæœ›ã¾ã‚Œã¦ã„るページ";s:6:"nlinks";s:18:"$1 個ã®ãƒªãƒ³ã‚¯";s:8:"allpages";s:12:"全ページ";s:10:"randompage";s:18:"ãŠã¾ã‹ã›è¡¨ç¤º";s:10:"shortpages";s:15:"短ã„ページ";s:9:"longpages";s:15:"é•·ã„ページ";s:12:"deadendpages";s:60:"有効ãªè¨˜äº‹ã¸ã®ãƒªãƒ³ã‚¯ã‚’æŒã£ã¦ã„ãªã„ページ";s:9:"listusers";s:24:"登録ユーザー一覧";s:10:"listadmins";s:11:"Admins list";s:12:"specialpages";s:15:"特別ページ";s:9:"spheading";s:15:"特別ページ";s:14:"sysopspheading";s:45:"管ç†è€…用特別ページ (pages for sysop)";s:18:"developerspheading";s:50:"開発者用特別ページ (pages for developper)";s:11:"protectpage";s:12:"Protect page";s:19:"recentchangeslinked";s:21:"リンク先ã®æ›´æ–°";s:6:"rclsub";s:50:"("$1" ã‹ã‚‰ãƒªãƒ³ã‚¯ã•ã‚Œã¦ã„るページ)";s:5:"debug";s:20:"デãƒãƒƒã‚° (debug)";s:8:"newpages";s:18:"æ–°ã—ã„ページ";s:12:"ancientpages";s:33:"æ›´æ–°ã•ã‚Œã¦ã„ãªã„ページ";s:4:"intl";s:19:"Interlanguage links";s:4:"move";s:6:"移動";s:12:"movethispage";s:24:"ã“ã®ãƒšãƒ¼ã‚¸ã‚’移動";s:16:"unusedimagestext";s:289:"<p>ã”注æ„:他言語版ã®ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã‚‚å«ã‚ã€ä»–ã®ã‚¦ã‚§ãƒ–サイトãŒURLを直接用ã„ã¦ç”»åƒã«ãƒªãƒ³ã‚¯ã—ã¦ã„ã‚‹å ´åˆã‚‚ã‚ã‚Šã¾ã™ã€‚以下ã®ç”»åƒä¸€è¦§ã«ã¯ã€ãã®ã‚ˆã†ãªå½¢ã§åˆ©ç”¨ã•ã‚Œã¦ã„ã‚‹ç”»åƒãŒå«ã¾ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚";s:11:"booksources";s:12:"文献資料";s:14:"booksourcetext";s:434:"以下ã®ãƒªã‚¹ãƒˆã¯ã€æ–°æœ¬ã€å¤æœ¬ãªã©ã‚’販売ã—ã¦ã„る外部サイトã¸ã®ãƒªãƒ³ã‚¯ã§ã™ã€‚
+ã‚ãªãŸãŒãŠæŽ¢ã—ã®æœ¬ã«ã¤ã„ã¦ã€æ›´ã«è©³ã—ã„情報ãŒæä¾›ã•ã‚Œã¦ã„ã‚‹å ´åˆã‚‚ã‚ã‚Šã¾ã™ï½¡
+ウィキペディアã¯ã“れらã®æ¥­å‹™ã¨ã¯ææºé–¢ä¿‚ã¯æŒã£ã¦ã„ã¾ã›ã‚“。ã¾ãŸã€ã“ã®ãƒªã‚¹ãƒˆã¯ãƒªã‚¹ãƒˆã•ã‚ŒãŸã‚µã‚¤ãƒˆã¸ã®ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ã®æ”¯æŒã‚’表ã™ã‚‚ã®ã§ã‚‚ã‚ã‚Šã¾ã›ã‚“。";s:4:"isbn";s:4:"ISBN";s:6:"rfcurl";s:35:"http://www.faqs.org/rfcs/rfc$1.html";s:14:"alphaindexline";s:8:"$1 to $2";s:7:"version";s:7:"Version";s:11:"mailnologin";s:45:"é€ä¿¡å…ˆã®ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã‚ã‚Šã¾ã›ã‚“。";s:15:"mailnologintext";s:285:"ログインã—ã¦ã„ã¾ã›ã‚“。メールをé€ä¿¡ã™ã‚‹ãŸã‚ã«ã¯ã€ã‚ãªãŸã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’<a href="/wiki/Special:オプションã®ãƒ˜ãƒ«ãƒ—">ユーザーオプション</a>ã§æŒ‡å®šã—ã€<a href="/wiki/特別:Userlogin">ログイン</a>ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚";s:9:"emailuser";s:39:"ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã«ãƒ¡ãƒ¼ãƒ«ã‚’é€ä¿¡";s:9:"emailpage";s:24:"メールé€ä¿¡ãƒšãƒ¼ã‚¸";s:13:"emailpagetext";s:386:"ã‚‚ã—メールをé€ã‚‹å…ˆã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒã€æœ‰åŠ¹ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’
+ユーザーオプションã«ç™»éŒ²ã—ã¦ã‚ã‚Œã°ã€ä¸‹ã®ãƒ•ã‚©ãƒ¼ãƒ ã‚’通ã˜ã¦ãƒ¡ãƒ¼ãƒ«ã‚’é€ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
+ã‚ãªãŸãŒç™»éŒ²ã—ãŸã”自分ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯From:ã®æ¬„ã«è‡ªå‹•çš„ã«çµ„ã¿è¾¼ã¾ã‚Œã€å—ã‘å–ã£ãŸç›¸æ‰‹ãŒ
+返事を出ã›ã‚‹ã‚ˆã†ã«ãªã£ã¦ã„ã¾ã™ã€‚";s:15:"usermailererror";s:28:"Mail object returned error: ";s:15:"defemailsubject";s:21:"Wikipedia (ja) e-mail";s:12:"noemailtitle";s:54:"é€ã‚Šå…ˆã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ãŒã‚ã‚Šã¾ã›ã‚“。";s:11:"noemailtext";s:168:"ã“ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã¯æœ‰åŠ¹ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’登録ã—ã¦ã„ãªã„ã‹ã€ãƒ¡ãƒ¼ãƒ«ã‚’å—ã‘å–ã‚ŠãŸããªã„ã¨ã„ã†ã‚ªãƒ—ションをé¸æŠžã—ã¦ã„ã¾ã™ã€‚";s:9:"emailfrom";s:24:"ã‚ãªãŸã®ã‚¢ãƒ‰ãƒ¬ã‚¹";s:7:"emailto";s:9:"ã‚ã¦å…ˆ";s:12:"emailsubject";s:6:"é¡Œå";s:12:"emailmessage";s:6:"本文";s:9:"emailsend";s:15:"メールé€ä¿¡";s:9:"emailsent";s:27:"メールをé€ã‚Šã¾ã—ãŸ";s:13:"emailsenttext";s:42:"メールã¯ç„¡äº‹é€ä¿¡ã•ã‚Œã¾ã—ãŸã€‚";s:9:"watchlist";s:21:"ウォッãƒãƒªã‚¹ãƒˆ";s:12:"watchlistsub";s:26:"(ユーザーå "$1")";s:11:"nowatchlist";s:48:"ã‚ãªãŸã®ã‚¦ã‚©ãƒƒãƒãƒªã‚¹ãƒˆã¯ç©ºã§ã™ã€‚";s:12:"watchnologin";s:30:"ログインã—ã¦ã„ã¾ã›ã‚“";s:16:"watchnologintext";s:137:"ウォッãƒãƒªã‚¹ãƒˆã‚’変更ã™ã‚‹ãŸã‚ã«ã¯ã€
+<a href="/wiki/特別:Userlogin">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚";s:10:"addedwatch";s:39:"ウォッãƒãƒªã‚¹ãƒˆã«åŠ ãˆã¾ã—ãŸ";s:14:"addedwatchtext";s:634:"ページ "[[$1]]" ã‚’ã‚ãªãŸã®[[特別:Watchlist|ウォッãƒãƒªã‚¹ãƒˆ]]ã«è¿½åŠ ã—ã¾ã—ãŸã€‚
+
+ã“ã®ãƒšãƒ¼ã‚¸ã¨ã€ä»˜å±žã®ãƒŽãƒ¼ãƒˆã®ãƒšãƒ¼ã‚¸ã«å¤‰æ›´ãŒã‚ã£ãŸéš›ã«ã¯ãれをウォッãƒãƒªã‚¹ãƒˆã§çŸ¥ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚ã¾ãŸã€[[特別:Recentchanges|最近更新ã—ãŸãƒšãƒ¼ã‚¸]]ã§ã¯ã‚¦ã‚©ãƒƒãƒãƒªã‚¹ãƒˆã«å«ã¾ã‚Œã¦ã„るページã¯'''ボールド体'''ã§è¡¨ç¤ºã•ã‚Œã€è¦‹ã¤ã‘ã‚„ã™ããªã‚Šã¾ã™ã€‚
+
+ã‚‚ã—もウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰ç‰¹å®šã®ãƒšãƒ¼ã‚¸ã‚’削除ã—ãŸã„å ´åˆã«ã¯ã€ã‚µã‚¤ãƒ‰ãƒãƒ¼ã«ã‚ã‚‹
+"ウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤" ã®ãƒªãƒ³ã‚¯ã‚’クリックã—ã¦ä¸‹ã•ã„。";s:12:"removedwatch";s:45:"ウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¾ã—ãŸ";s:16:"removedwatchtext";s:66:"ページ "$1" をウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¾ã—ãŸã€‚";s:5:"watch";s:30:"ウォッãƒãƒªã‚¹ãƒˆã«è¿½åŠ ";s:13:"watchthispage";s:30:"ウォッãƒãƒªã‚¹ãƒˆã«è¿½åŠ ";s:7:"unwatch";s:33:"ウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤";s:15:"unwatchthispage";s:33:"ウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤";s:12:"notanarticle";s:39:"ã“ã‚Œã¯è¨˜äº‹ã§ã¯ã‚ã‚Šã¾ã›ã‚“。";s:13:"watchnochange";s:99:"ãã®æœŸé–“内ã«ã‚¦ã‚©ãƒƒãƒãƒªã‚¹ãƒˆã«ã‚るページã¯ã©ã‚Œã‚‚編集ã•ã‚Œã¦ã„ã¾ã›ã‚“。";s:12:"watchdetails";s:268:"</i><ul>
+<li>ウォッãƒãƒªã‚¹ãƒˆã«å…¥ã£ã¦ã„る記事数(ノート除ã): $1</li>
+<li>表示期間内ã«ãªã•ã‚ŒãŸç·¨é›†æ•°: $2</li>
+<li>ã“ã®ãƒªã‚¹ãƒˆã®é›†è¨ˆæ–¹æ³•: $3</li>
+<li><a href='$4'>ウォッãƒãƒªã‚¹ãƒˆã®ä¸€è¦§ãƒ»ç·¨é›†</a></li>
+</ul><i>";s:18:"watchmethod-recent";s:69:"ウォッãƒãƒªã‚¹ãƒˆã®ä¸­ã‹ã‚‰æœ€è¿‘編集ã•ã‚ŒãŸã‚‚ã®ã‚’抽出";s:16:"watchmethod-list";s:72:"最近編集ã•ã‚ŒãŸä¸­ã‹ã‚‰ã‚¦ã‚©ãƒƒãƒã—ã¦ã„るページを抽出";s:13:"removechecked";s:60:"ãƒã‚§ãƒƒã‚¯ã—ãŸé …目をウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤";s:17:"watchlistcontains";s:79:"ã‚ãªãŸã®ã‚¦ã‚©ãƒƒãƒãƒªã‚¹ãƒˆã«ã¯ $1 ページ登録ã•ã‚Œã¦ã„ã¾ã™ã€‚";s:13:"watcheditlist";s:271:"ウォッãƒãƒªã‚¹ãƒˆã«ç™»éŒ²ã—ã¦ã„るページを文字コード順ã«è¡¨ç¤ºã—ã¦ã„ã¾ã™ã€‚
+
+ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã«ãƒã‚§ãƒƒã‚¯ã‚’ã—ã€ã€Œã‚¦ã‚©ãƒƒãƒãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤ã€ã®ãƒœã‚¿ãƒ³ã‚’クリックã™ã‚‹ã¨ã‚¦ã‚©ãƒƒãƒãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¾ã™ã€‚";s:15:"removingchecked";s:78:"è¦æ±‚ã•ã‚ŒãŸé …目をウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤ã—ã¦ã„ã¾ã™â€¦â€¦";s:13:"couldntremove";s:74:""$1" をウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰å‰Šé™¤ã™ã‚‹ã®ã«å¤±æ•—ã—ã¾ã—ãŸã€‚";s:15:"iteminvalidname";s:39:"Problem with item '$1', invalid name...";s:6:"wlnote";s:99:"以下ã¯æœ€è¿‘ <strong>$2</strong> 時間ã«ç·¨é›†ã•ã‚ŒãŸ <strong>$1</strong> ページã§ã™ã€‚";s:10:"wlshowlast";s:54:"最近[$1時間][$2日間][$3]ã®ã‚‚ã®ã‚’表示ã™ã‚‹";s:7:"wlsaved";s:96:"ç¾åœ¨ã€ãƒãƒƒã‚¯ã‚¢ãƒƒãƒ—ã•ã‚ŒãŸã‚¦ã‚©ãƒƒãƒãƒªã‚¹ãƒˆã®ã¿ã®è¡¨ç¤ºã¨ãªã£ã¦ã„ã¾ã™ã€‚";s:10:"deletepage";s:29:"ページ削除 (Delete page)";s:7:"confirm";s:16:"ç¢ºèª (Confirm)";s:9:"excontent";s:7:"内容:";s:13:"exbeforeblank";s:22:"白紙化å‰ã®å†…容:";s:7:"exblank";s:14:"page was empty";s:13:"confirmdelete";s:29:"å‰Šé™¤ç¢ºèª (Confirm delete)";s:9:"deletesub";s:51:"(サブページ"$1"を削除 (Deleting "$1") )";s:14:"historywarning";s:57:"Warning: The page you are about to delete has a history: ";s:17:"confirmdeletetext";s:663:"指定ã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã¾ãŸã¯ã‚¤ãƒ¡ãƒ¼ã‚¸ã¯ã€ãã®æ›´æ–°å±¥æ­´ã¨å…±ã«
+データベースã‹ã‚‰æ°¸ä¹…ã«å‰Šé™¤ã•ã‚Œã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚
+ã‚ãªãŸãŒå‰Šé™¤ã‚’望んã§ãŠã‚Šã€ãã‚ŒãŒã‚‚ãŸã‚‰ã™å¸°çµã‚’ç†è§£ã—ã¦ãŠã‚Šã€ã‹ã¤ã‚ãªãŸã®
+ã—よã†ã¨ã—ã¦ã„ã‚‹ã“ã¨ãŒ[[Wikipedia: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]].";s:12:"confirmcheck";s:70:"ã¯ã„。上記ã®é€šã‚Šã§ã™ã€‚ Yes, I really want to delete this.";s:14:"actioncomplete";s:48:"削除を完了ã—ã¾ã—ãŸã€‚ Action complete";s:11:"deletedtext";s:158:""$1" ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚最近ã®å‰Šé™¤ã«é–¢ã—ã¦ã¯ $2 ã‚’å‚ç…§ã—ã¦ä¸‹ã•ã„。
+
+"$1" has been deleted. See $2 for a record of recent deletions.";s:14:"deletedarticle";s:26:""$1" を削除ã—ã¾ã—ãŸ";s:10:"dellogpage";s:12:"削除記録";s:14:"dellogpagetext";s:229:"以下ã«ç¤ºã™ã®ã¯æœ€è¿‘ã®å‰Šé™¤è¨˜éŒ²ã§ã™ã€‚時間ã¯ã‚µãƒ¼ãƒãƒ¼ã®æ™‚é–“ (UTC) ã«ã‚ˆã£ã¦è¨˜éŒ²ã•ã‚Œã¦ã„ã¾ã™ã€‚
+
+Below is a list of the most recent deletions.
+All times shown are server time (UTC).
+<ul>
+</ul>";s:11:"deletionlog";s:27:"削除記録 deletion log";s:8:"reverted";s:76:"以å‰ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¸ã®å·®ã—戻ã—。 Reverted to earlier revision";s:13:"deletecomment";s:15:"削除ã®ç†ç”±";s:13:"imagereverted";s:66:"以å‰ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¸ã®å·®ã—戻ã—ã«æˆåŠŸã—ã¾ã—ãŸã€‚";s:8:"rollback";s:15:"Roll back edits";s:14:"rollback_short";s:8:"Rollback";s:12:"rollbacklink";s:8:"rollback";s:14:"rollbackfailed";s:15:"Rollback failed";s:12:"cantrollback";s:65:"Cannot revert edit; last contributor is only author of this page.";s:13:"alreadyrolled";s:225:"Cannot rollback last edit of [[$1]]
+by [[利用者:$2|$2]] ([[利用者â€ä¼šè©±:$2|Talk]]); someone else has edited or rolled back the article already.
+
+Last edit was by [[利用者:$3|$3]] ([[利用者â€ä¼šè©±:$3|Talk]]).";s:11:"editcomment";s:34:"The edit comment was: "<i>$1</i>".";s:10:"revertpage";s:55:"Reverted edit of $2, changed back to last version by $1";s:14:"protectlogpage";s:14:"Protection_log";s:14:"protectlogtext";s:93:"Below is a list of page locks/unlocks.
+See [[Wikipedia:Protected page]] for more information.";s:16:"protectedarticle";s:27:"[[$1]]ã‚’ä¿è­·ã—ã¾ã—ãŸ";s:18:"unprotectedarticle";s:39:"[[$1]]ã®ä¿è­·ã‚’解除ã—ã¾ã—ãŸã€‚";s:10:"protectsub";s:17:"(Protecting "$1")";s:18:"confirmprotecttext";s:89:"本当ã«ã“ã®ãƒšãƒ¼ã‚¸ã‚’ä¿è­·ã—ã¾ã™ã‹? (Do you really want to protect this page?)";s:14:"confirmprotect";s:33:"ä¿è­·ç¢ºèª (Confirm protection)";s:14:"protectcomment";s:15:"ä¿è­·ã®ç†ç”±";s:12:"unprotectsub";s:19:"(Unprotecting "$1")";s:20:"confirmunprotecttext";s:100:"本当ã«ã“ã®ãƒšãƒ¼ã‚¸ã®ä¿è­·ã‚’解除ã—ã¾ã™ã‹? (Do you really want to unprotect this page?)";s:16:"confirmunprotect";s:44:"ä¿è­·è§£é™¤ã®ç¢ºèª (Confirm unprotection)";s:16:"unprotectcomment";s:21:"ä¿è­·è§£é™¤ã®ç†ç”±";s:13:"protectreason";s:15:"(give a reason)";s:8:"undelete";s:20:"Restore deleted page";s:12:"undeletepage";s:30:"View and restore deleted pages";s:16:"undeletepagetext";s:132:"The following pages have been deleted but are still in the archive and
+can be restored. The archive may be periodically cleaned out.";s:15:"undeletearticle";s:20:"Restore deleted page";s:17:"undeleterevisions";s:21:"$1 revisions archived";s:15:"undeletehistory";s:276:"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.";s:16:"undeleterevision";s:25:"Deleted revision as of $1";s:11:"undeletebtn";s:8:"Restore!";s:16:"undeletedarticle";s:13:"restored "$1"";s:13:"undeletedtext";s:120:"[[$1]] has been successfully restored.
+See [[Wikipedia:Deletion_log]] for a record of recent deletions and restorations.";s:13:"contributions";s:27:"ユーザーã®æŠ•ç¨¿è¨˜éŒ²";s:9:"mycontris";s:21:"自分ã®æŠ•ç¨¿è¨˜éŒ²";s:10:"contribsub";s:20:"ユーザーå:$1";s:10:"nocontribs";s:63:"ユーザーã®æŠ•ç¨¿è¨˜éŒ²ã¯è¦‹ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚";s:6:"ucnote";s:102:"以下ã«ç¤ºã™ã®ãŒéŽåŽ»<b>$2</b>日間ã«ãŠã‘ã‚‹ã€æœ€å¤§<b>$1</b>件ã®æŠ•ç¨¿ãƒ»ç·¨é›†ã§ã™ã€‚";s:7:"uclinks";s:129:"$1 件ã®æŠ•ç¨¿ãƒ»ç·¨é›†ã‚’見る。; $2日間分ã®æŠ•ç¨¿ãƒ»ç·¨é›†ã‚’見る。
+
+View the last $1 changes; view the last $2 days.";s:5:"uctop";s:6:" (top)";s:13:"notargettitle";s:45:"対象ã¨ãªã‚‹ãƒšãƒ¼ã‚¸ãŒå­˜åœ¨ã—ã¾ã›ã‚“";s:12:"notargettext";s:72:"対象ã¨ãªã‚‹ãƒšãƒ¼ã‚¸åˆã¯ãƒ¦ãƒ¼ã‚¶ãƒ¼ãŒæŒ‡å®šã•ã‚Œã¦ã„ã¾ã›ã‚“";s:11:"linklistsub";s:21:"リンクã®ãƒªã‚¹ãƒˆ";s:9:"linkshere";s:78:"指定ã—ãŸãƒšãƒ¼ã‚¸ã¯ä»¥ä¸‹ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰ãƒªãƒ³ã‚¯ã•ã‚Œã¦ã„ã¾ã™ã€‚";s:11:"nolinkshere";s:78:"指定ã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã«ãƒªãƒ³ã‚¯ã—ã¦ã„るページã¯ã‚ã‚Šã¾ã›ã‚“。";s:10:"isredirect";s:27:"リダイレクトページ";s:7:"blockip";s:16:"Block IP address";s:11:"blockiptext";s:276:"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]].
+Fill in a specific reason below (for example, citing particular
+pages that were vandalized).";s:9:"ipaddress";s:22:"IP Address / user name";s:9:"ipbexpiry";s:6:"Expiry";s:9:"ipbreason";s:6:"Reason";s:9:"ipbsubmit";s:25:"Block this address / user";s:12:"badipaddress";s:31:"The IP address is badly formed.";s:13:"noblockreason";s:39:"You must supply a reason for the block.";s:17:"blockipsuccesssub";s:15:"Block succeeded";s:18:"blockipsuccesstext";s:101:"The IP address "$1" has been blocked.
+<br>See [[特別:Ipblocklist|IP block list]] to review blocks.";s:9:"unblockip";s:18:"Unblock IP address";s:13:"unblockiptext";s:78:"Use the form below to restore write access
+to a previously blocked IP address.";s:9:"ipusubmit";s:27:"Unblock this address / user";s:10:"ipusuccess";s:25:"IP address "$1" unblocked";s:11:"ipblocklist";s:53:"投稿ブロック中ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚„IPアドレス";s:13:"blocklistline";s:47:"$1, $2 㯠$3 をブロック ($4ã«è§£é™¤ï¼‰";s:9:"blocklink";s:5:"block";s:11:"unblocklink";s:7:"unblock";s:12:"contribslink";s:12:"投稿記録";s:11:"autoblocker";s:166:"投稿ブロックã•ã‚Œã¦ã„るユーザー"$1"ã¨åŒã˜IPアドレスã®ãŸã‚ã€è‡ªå‹•çš„ã«ãƒ–ロックã•ã‚Œã¦ã„ã¾ã™ã€‚ブロックã®ç†ç”±ã¯"$2"ã§ã™ã€‚";s:12:"blocklogpage";s:9:"Block_log";s:13:"blocklogentry";s:32:""$1" をブロックã—ã¾ã—ãŸ";s:12:"blocklogtext";s:211:"This is a log of user blocking and unblocking actions. Automatically
+blocked IP addresses are not be listed. See the [[特別:Ipblocklist|IP block list]] for
+the list of currently operational bans and blocks.";s:15:"unblocklogentry";s:38:""$1" をブロック解除ã—ã¾ã—ãŸ";s:20:"range_block_disabled";s:53:"The sysop ability to create range blocks is disabled.";s:18:"ipb_expiry_invalid";s:20:"Expiry time invalid.";s:16:"ip_range_invalid";s:18:"Invalid IP range.
+";s:12:"proxyblocker";s:13:"Proxy blocker";s:16:"proxyblockreason";s:173:"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.";s:17:"proxyblocksuccess";s:6:"Done.
+";s:6:"lockdb";s:13:"Lock database";s:8:"unlockdb";s:15:"Unlock database";s:10:"lockdbtext";s:294:"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.";s:12:"unlockdbtext";s:227:"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.";s:11:"lockconfirm";s:40:"Yes, I really want to lock the database.";s:13:"unlockconfirm";s:42:"Yes, I really want to unlock the database.";s:7:"lockbtn";s:13:"Lock database";s:9:"unlockbtn";s:15:"Unlock database";s:13:"locknoconfirm";s:39:"You did not check the confirmation box.";s:16:"lockdbsuccesssub";s:23:"Database lock succeeded";s:18:"unlockdbsuccesssub";s:21:"Database lock removed";s:17:"lockdbsuccesstext";s:107:"The Wikipedia database has been locked.
+<br>Remember to remove the lock after your maintenance is complete.";s:19:"unlockdbsuccesstext";s:41:"The Wikipedia database has been unlocked.";s:6:"asksql";s:9:"SQL query";s:10:"asksqltext";s:219:"Use the form below to make a direct query of the
+Wikipedia database.
+Use single quotes ('like this') to delimit string literals.
+This can often add considerable load to the server, so please use
+this function sparingly.";s:11:"sqlislogged";s:40:"Please note that all queries are logged.";s:8:"sqlquery";s:11:"Enter query";s:8:"querybtn";s:12:"Submit query";s:10:"selectonly";s:67:"Queries other than "SELECT" are restricted to
+Wikipedia developers.";s:15:"querysuccessful";s:16:"Query successful";s:14:"makesysoptitle";s:24:"Make a user into a sysop";s:13:"makesysoptext";s:169:"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";s:13:"makesysopname";s:17:"Name of the user:";s:15:"makesysopsubmit";s:27:"Make this user into a sysop";s:11:"makesysopok";s:31:"<b>User "$1" is now a sysop</b>";s:13:"makesysopfail";s:84:"<b>User "$1" could not be made into a sysop. (Did you enter the name correctly?)</b>";s:17:"setbureaucratflag";s:19:"Set bureaucrat flag";s:13:"bureaucratlog";s:14:"Bureaucrat_log";s:18:"bureaucratlogentry";s:29:"Rights for user "$1" set "$2"";s:6:"rights";s:7:"Rights:";s:15:"set_user_rights";s:15:"Set user rights";s:15:"user_rights_set";s:35:"<b>User rights for "$1" updated</b>";s:15:"set_rights_fail";s:81:"<b>User rights for "$1" could not be set. (Did you enter the name correctly?)</b>";s:9:"makesysop";s:24:"Make a user into a sysop";s:8:"movepage";s:18:"ページã®ç§»å‹•";s:12:"movepagetext";s:1009:"下ã®ãƒ•ã‚©ãƒ¼ãƒ ã‚’利用ã™ã‚‹ã¨ã€ãƒšãƒ¼ã‚¸åを変更ã—ã€ãã®å±¥æ­´ã‚‚変更先ã¸ç§»å‹•ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚å¤ã„ページã¯å¤‰æ›´å…ˆã¸ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒšãƒ¼ã‚¸ã¨ãªã‚Šã¾ã™ã€‚ページã®ä¸­èº«ã¨å¤‰æ›´å‰ã®ãƒšãƒ¼ã‚¸ã«å¼µã‚‰ã‚ŒãŸãƒªãƒ³ã‚¯ã¯å¤‰ã‚ã‚Šã¾ã›ã‚“。ã§ã™ã‹ã‚‰ã€äºŒé‡ã«ãªã£ãŸã‚Šå£Šã‚Œã¦ã—ã¾ã£ãŸãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã‚’ãƒã‚§ãƒƒã‚¯ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+
+変更先ãŒã™ã§ã«å­˜åœ¨ã™ã‚‹å ´åˆã«ã¯ã€ç™½ç´™ã‚„リダイレクトã—ã‹å±¥æ­´ãŒãªã„å ´åˆã‚’除ã„ã¦ã€ç§»å‹•ã§ãã¾ã›ã‚“。ã¤ã¾ã‚Šã€é–“é•ãˆã¦ãƒšãƒ¼ã‚¸åを変更ã—ãŸå ´åˆã«ã¯å…ƒã«æˆ»ã›ã¾ã™ã€‚ã¾ãŸã€ã™ã§ã«å­˜åœ¨ã™ã‚‹ãƒšãƒ¼ã‚¸ã«ã¯ä¸Šæ›¸ãã§ãã¾ã›ã‚“。
+
+<b>注æ„ï¼</b>
+よã閲覧ã•ã‚Œã‚‹ãƒšãƒ¼ã‚¸ã‚„ã€ä»–ã®å¤šãã®ãƒšãƒ¼ã‚¸ã‹ã‚‰ãƒªãƒ³ã‚¯ã•ã‚Œã¦ã„るページを移動ã™ã‚‹ã¨äºˆæœŸã›ã¬çµæžœãŒèµ·ã“ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
+ページã®ç§»å‹•ã«ä¼´ã†å½±éŸ¿ã‚’よã考ãˆã¦ã‹ã‚‰è¸ã¿åˆ‡ã‚‹ã‚ˆã†ã«ã—ã¦ä¸‹ã•ã„。";s:16:"movepagetalktext";s:488:"付éšã™ã‚‹ãƒŽãƒ¼ãƒˆã®ãƒšãƒ¼ã‚¸ãŒã‚ã‚‹å ´åˆã«ã¯ã€åŸºæœ¬çš„ã«ã¯ã€ä¸€ç·’ã«ç§»å‹•ã•ã‚Œã‚‹ã“ã¨ã«ãªã‚Šã¾ã™ã€‚
+
+但ã—ã€ä»¥ä¸‹ã®å ´åˆã«ã¤ã„ã¦ã¯åˆ¥ã§ã™ã€‚
+*åå‰ç©ºé–“ã‚’ã¾ãŸãŒã‚‹ç§»å‹•ã®å ´åˆ
+*移動先ã«æ—¢ã«å±¥æ­´ã®ã‚るノートページãŒå­˜åœ¨ã™ã‚‹å ´åˆ
+*下ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã®ãƒã‚§ãƒƒã‚¯ãƒžãƒ¼ã‚¯ã‚’消ã—ãŸå ´åˆ
+
+ã“れらã®å ´åˆã€ãƒŽãƒ¼ãƒˆãƒšãƒ¼ã‚¸ã‚’移動ã™ã‚‹å ´åˆã«ã¯ã€åˆ¥ã«ä½œæ¥­ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚";s:11:"movearticle";s:21:"移動ã™ã‚‹ãƒšãƒ¼ã‚¸";s:11:"movenologin";s:30:"ログインã—ã¦ã„ã¾ã›ã‚“";s:15:"movenologintext";s:159:"ã“ã®æ©Ÿèƒ½ã‚’利用ã™ã‚‹ãŸã‚ã«ã¯ã€ãƒ¦ãƒ¼ã‚¶ãƒ¼ç™»éŒ²ã‚’ã—ã¦ã€
+<a href="/wiki/特別:Userlogin">ログイン</a>ã—ã¦ã„ã‚‹å¿…è¦ãŒ
+ã‚ã‚Šã¾ã™ã€‚";s:8:"newtitle";s:21:"æ–°ã—ã„ページå";s:11:"movepagebtn";s:18:"ページを移動";s:12:"pagemovedsub";s:27:"無事移動ã—ã¾ã—ãŸã€‚";s:13:"pagemovedtext";s:55:"ページ"[[$1]]" 㯠"[[$2]]" ã«ç§»å‹•ã—ã¾ã—ãŸã€‚";s:13:"articleexists";s:93:"指定ã•ã‚ŒãŸç§»å‹•å…ˆã«ã¯æ—¢ã«ãƒšãƒ¼ã‚¸ãŒå­˜åœ¨ã™ã‚‹ã‹ã€åå‰ãŒä¸é©åˆ‡ã§ã™ã€‚";s:10:"talkexists";s:149:"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.";s:7:"movedto";s:10:"移動先:";s:8:"movetalk";s:78:"ノートページãŒä»˜éšã™ã‚‹å ´åˆã«ã¯ã€ãれも一緒ã«ç§»å‹•ã™ã‚‹";s:13:"talkpagemoved";s:54:"付éšã®ãƒŽãƒ¼ãƒˆã®ãƒšãƒ¼ã‚¸ã‚‚移動ã—ã¾ã—ãŸã€‚";s:16:"talkpagenotmoved";s:73:"付éšã®ãƒŽãƒ¼ãƒˆã®ãƒšãƒ¼ã‚¸ã¯<b>移動ã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚</b>";s:9:"1movedto2";s:19:"$1 ã‚’ $2 ã¸ç§»å‹•";s:6:"export";s:30:"記事データã®æ›¸ã出ã—";s:10:"exporttext";s:227:"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.";s:13:"exportcuronly";s:55:"Include only the current revision, not the full history";s:11:"allmessages";s:27:"表示メッセージ一覧";s:15:"allmessagestext";s:76:"This is a list of all system messages available in the MediaWiki: namespace.";s:14:"thumbnail-more";s:6:"拡大";s:12:"missingimage";s:36:"<b>Missing image</b><br /><i>$1</i>
+";s:6:"import";s:12:"Import pages";s:10:"importtext";s:118:"Please export the file from the source wiki using the Special:Export utility, save it to your disk and upload it here.";s:12:"importfailed";s:17:"Import failed: $1";s:12:"importnotext";s:16:"Empty or no text";s:13:"importsuccess";s:17:"Import succeeded!";s:21:"importhistoryconflict";s:72:"Conflicting history revision exists (may have imported this page before)";s:16:"accesskey-search";s:1:"f";s:19:"accesskey-minoredit";s:1:"i";s:14:"accesskey-save";s:1:"s";s:17:"accesskey-preview";s:1:"p";s:33:"accesskey-compareselectedversions";s:1:"v";s:14:"tooltip-search";s:24:"Search this wiki [alt-f]";s:17:"tooltip-minoredit";s:33:"Mark this as a minor edit [alt-i]";s:12:"tooltip-save";s:35:"編集をä¿å­˜ã—ã¾ã™ã€‚ [alt-s]";s:15:"tooltip-preview";s:86:"編集çµæžœã‚’確èªã—ã¾ã™ã€‚ä¿å­˜å‰ã«æ˜¯éžä½¿ç”¨ã—ã¦ãã ã•ã„。 [alt-p]";s:31:"tooltip-compareselectedversions";s:75:"See the differences between the two selected versions of this page. [alt-v]";s:12:"Monobook.css";s:34:"#globalWrapper {font-size:medium;}";s:12:"nodublincore";s:50:"Dublin Core RDF metadata disabled for this server.";s:17:"nocreativecommons";s:55:"Creative Commons RDF metadata disabled for this server.";s:13:"notacceptable";s:68:"The wiki server can't provide data in a format your client can read.";s:9:"anonymous";s:30:"Anonymous user(s) of Wikipedia";s:8:"siteuser";s:17:"Wikipedia user $1";s:14:"lastmodifiedby";s:37:"This page was last modified $1 by $2.";s:3:"and";s:3:"and";s:13:"othercontribs";s:20:"Based on work by $1.";s:9:"siteusers";s:20:"Wikipedia user(s) $1";s:19:"spamprotectiontitle";s:22:"Spam protection filter";s:18:"spamprotectiontext";s:214:"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:";s:16:"subcategorycount";s:44:"There are $1 subcategories to this category.";s:20:"categoryarticlecount";s:39:"There are $1 articles in this category.";s:18:"usenewcategorypage";s:70:"1
+
+Set first character to "0" to disable the new category page layout.";s:11:"Monobook.js";s:3547:"/* 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');
+";} \ No newline at end of file
diff --git a/languages/wikipedia/nl.lang b/languages/wikipedia/nl.lang
new file mode 100644
index 000000000000..b95b586b60f8
--- /dev/null
+++ b/languages/wikipedia/nl.lang
@@ -0,0 +1,319 @@
+MediaWiki 1.3.0beta3 language file
+a:699:{s:10:"categories";s:11:"Categorieën";s:8:"category";s:9:"categorie";s:15:"category_header";s:27:"Artikelen in categorie "$1"";s:13:"subcategories";s:14:"Subcategorieën";s:9:"linktrail";s:28:"/^([äöüïëéèéàça-z]+)(.*)$/sD";s:8:"mainpage";s:11:"Hoofdpagina";s:12:"mainpagetext";s:42:"Installatie van de Wiki software geslaagd.";s:17:"mainpagedocfooter";s:214:"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.";s:6:"portal";s:17:"Gebruikersportaal";s:10:"portal-url";s:27:"Wikipedia:Gebruikersportaal";s:5:"about";s:4:"Info";s:14:"aboutwikipedia";s:14:"Over Wikipedia";s:9:"aboutpage";s:14:"Wikipedia:info";s:7:"article";s:7:"artikel";s:4:"help";s:15:"Help en contact";s:8:"helppage";s:14:"Wikipedia:Help";s:15:"wikititlesuffix";s:12:"Wikipedia NL";s:10:"bugreports";s:16:"Foutenrapportage";s:14:"bugreportspage";s:26:"Wikipedia:Foutenrapportage";s:11:"sitesupport";s:20:"Financieel bijdragen";s:3:"faq";s:3:"FAQ";s:7:"faqpage";s:30:"Wikipedia:Veel gestelde vragen";s:8:"edithelp";s:17:"Hulp bij bewerken";s:9:"newwindow";s:36:"(wordt geopend in een nieuw venster)";s:12:"edithelppage";s:21:"Wikipedia:Instructies";s:6:"cancel";s:9:"Annuleren";s:6:"qbfind";s:6:"Zoeken";s:8:"qbbrowse";s:8:"Bladeren";s:6:"qbedit";s:8:"Bewerken";s:13:"qbpageoptions";s:13:"Pagina-opties";s:10:"qbpageinfo";s:17:"Pagina-informatie";s:11:"qbmyoptions";s:11:"Mijn opties";s:14:"qbspecialpages";s:17:"Speciale pagina's";s:13:"moredotdotdot";s:7:"Meer...";s:6:"mypage";s:21:"Mijn gebruikerspagina";s:6:"mytalk";s:12:"Mijn overleg";s:8:"anontalk";s:25:"Overleg voor dit IP-adres";s:10:"navigation";s:14:"Plaatsbepaling";s:13:"currentevents";s:13:"In het nieuws";s:11:"disclaimers";s:10:"Disclaimer";s:14:"disclaimerpage";s:28:"Wikipedia:General_disclaimer";s:14:"errorpagetitle";s:4:"Fout";s:8:"returnto";s:19:"Terugkeren naar $1.";s:13:"fromwikipedia";s:1:" ";s:13:"whatlinkshere";s:11:"Referenties";s:6:"search";s:6:"Zoeken";s:2:"go";s:2:"OK";s:7:"history";s:12:"Geschiedenis";s:13:"history_short";s:12:"geschiedenis";s:16:"printableversion";s:27:"Printer-vriendelijke versie";s:4:"edit";s:6:"Bewerk";s:12:"editthispage";s:15:"Pagina bewerken";s:6:"delete";s:9:"verwijder";s:14:"deletethispage";s:11:"Verwijderen";s:14:"undelete_short";s:13:"Terugplaatsen";s:7:"protect";s:8:"bescherm";s:15:"protectthispage";s:10:"Beveiligen";s:9:"unprotect";s:20:"Bescherming opheffen";s:17:"unprotectthispage";s:20:"Beveiliging opheffen";s:7:"newpage";s:13:"Nieuwe pagina";s:8:"talkpage";s:13:"Overlegpagina";s:11:"specialpage";s:15:"speciale pagina";s:13:"personaltools";s:14:"Personal tools";s:11:"postcomment";s:18:"Schrijf commentaar";s:10:"addsection";s:1:"+";s:11:"articlepage";s:7:"Artikel";s:11:"subjectpage";s:7:"Artikel";s:4:"talk";s:7:"overleg";s:7:"toolbox";s:10:"trukendoos";s:8:"userpage";s:16:"Gebruikerspagina";s:13:"wikipediapage";s:7:"Artikel";s:9:"imagepage";s:19:"Beschrijvingspagina";s:12:"viewtalkpage";s:23:"Bekijk de overlegpagina";s:14:"otherlanguages";s:12:"Andere talen";s:14:"redirectedfrom";s:23:"(Doorverwezen vanaf $1)";s:12:"lastmodified";s:54:"De laatste wijziging op deze pagina vond plaats op $1.";s:9:"viewcount";s:34:"Deze pagina werd $1 maal bekeken. ";s:9:"copyright";s:91:"<br/>De inhoud van wikipedia is zonder enige vorm van garantie beschikaar onder de $1.<br/>";s:9:"poweredby";s:84:"Wikipedia gebruikt [http://www.mediawiki.org/ MediaWiki], open source wiki-software.";s:13:"printsubtitle";s:29:"(Uit http://nl.wikipedia.org)";s:13:"protectedpage";s:17:"Beveiligde pagina";s:14:"administrators";s:19:"Wikipedia:Moderator";s:10:"sysoptitle";s:30:"Toegang alleen voor moderators";s:9:"sysoptext";s:75:"De gevraagde handeling kan enkel uitgevoerd worden door moderators. Zie $1.";s:14:"developertitle";s:40:"Toegang alleen voor systeemontwikkelaars";s:13:"developertext";s:85:"De gevraagde handeling kan enkel uitgevoerd worden door systeemontwikkelaars. Zie $1.";s:15:"bureaucrattitle";s:24:"Alleen voor bureaucraten";s:14:"bureaucrattext";s:220:"Deze functie is enkel beschikbaar voor moderators met de "bureaucraat" status. Voor de voorwaarden om deze status te verkrijgen raadpleeg hiervoor de [[Wikipedia:Richtlijnen voor moderators|Richtlijnen voor moderators]].";s:6:"nbytes";s:8:"$1 bytes";s:2:"ok";s:2:"OK";s:9:"sitetitle";s:54:"<span style="text-transform: none">Wikipedia NL</span>";s:9:"pagetitle";s:14:"$1 - Wikipedia";s:12:"sitesubtitle";s:21:"De vrije encyclopedie";s:13:"retrievedfrom";s:55:"Afkomstig van Wikipedia NL, de Vrije Encyclopedie. "$1"";s:11:"newmessages";s:11:"U heeft $1.";s:15:"newmessageslink";s:17:"een nieuw bericht";s:11:"editsection";s:8:"bewerken";s:3:"toc";s:6:"Inhoud";s:7:"showtoc";s:5:"Tonen";s:7:"hidetoc";s:10:"Niet tonen";s:13:"thisisdeleted";s:28:"$1 bekijken of terugbrengen?";s:11:"restorelink";s:22:"$1 verwijderde versies";s:9:"feedlinks";s:5:"Feed:";s:10:"nstab-main";s:7:"artikel";s:10:"nstab-user";s:9:"gebruiker";s:11:"nstab-media";s:5:"Media";s:13:"nstab-special";s:8:"speciaal";s:8:"nstab-wp";s:7:"over...";s:11:"nstab-image";s:10:"afbeelding";s:15:"nstab-mediawiki";s:7:"bericht";s:14:"nstab-template";s:8:"Sjabloon";s:10:"nstab-help";s:4:"Help";s:14:"nstab-category";s:9:"Categorie";s:12:"nosuchaction";s:32:"Gevraagde handeling bestaat niet";s:16:"nosuchactiontext";s:85:"De door de URL gespecifieerde handeling wordt niet herkend door de Wikipedia software";s:17:"nosuchspecialpage";s:42:"De gevraagde speciale pagina is onvindbaar";s:17:"nospecialpagetext";s:89:"U heeft een speciale pagina aangevraagd die niet wordt herkend door de Wikipedia software";s:5:"error";s:4:"Fout";s:13:"databaseerror";s:13:"Database fout";s:11:"dberrortext";s:323:"Bij het zoeken is een syntaxfout in de database opgetreden.
+Dit kan zijn veroorzaakt door een illegale zoekactie (zie $5),
+of het duidt op een fout in de software.
+
+De laatste zoekpoging in de database was:
+<blockquote><tt>$1</tt></blockquote>
+vanuit de functie "<tt>$2</tt>".
+MySQL gaf the foutmelding "<tt>$3: $4</tt>".";s:13:"dberrortextcl";s:161:"Bij het opvragen van de database is een syntaxfout opgetreden. De laatste opdracht was:
+"$1"
+Vanuit de functie "$2"
+MySQL gaf de volgende foutmelding: "$3: $4".
+";s:9:"noconnect";s:41:"De database is momenteel niet bereikbaar.";s:4:"nodb";s:38:"Selectie van database $1 niet mogelijk";s:11:"cachederror";s:94:"Hieronder wordt een versie uit de cache getoond. Dit is mogelijk niet de meest recente versie.";s:8:"readonly";s:20:"Database geblokkeerd";s:15:"enterlockreason";s:132:"Geef een reden voor de blokkering en hoelang het waarschijnlijk gaat duren. De ingegeven reden zal aan de gebruikers getoond worden.";s:12:"readonlytext";s:202:"De database van Wikipedia is momenteel gesloten voor nieuwe bewerkingen en wijzigingen, waarschijnlijk voor bestandsonderhoud.
+De verantwoordelijke systeembeheerder gaf hiervoor volgende reden op:
+<p>$1";s:14:"missingarticle";s:332:"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.";s:13:"internalerror";s:12:"Interne fout";s:13:"filecopyerror";s:46:"Bestand "$1" naar "$2" kopiëren niet mogelijk.";s:15:"filerenameerror";s:51:"Wijziging titel bestand "$1" in "$2" niet mogelijk.";s:15:"filedeleteerror";s:34:"Kon bestand "$1" niet verwijderen.";s:12:"filenotfound";s:29:"Kon bestand "$1" niet vinden.";s:10:"unexpected";s:30:"Onverwachte waarde: "$1"="$2".";s:9:"formerror";s:34:"Fout: kon formulier niet verzenden";s:15:"badarticleerror";s:57:"Deze handeling kan op deze pagina niet worden uitgevoerd.";s:12:"cannotdelete";s:45:"Kon de pagina of afbeelding niet verwijderen.";s:8:"badtitle";s:21:"Ongeldige paginatitel";s:12:"badtitletext";s:50:"De opgevraagde pagina is niet beschikbaar of leeg.";s:12:"perfdisabled";s:86:"Om overbelasting van het systeem te voorkomen, is deze optie momenteel niet bruikbaar.";s:15:"perfdisabledsub";s:89:"We kunnen u wel onderstaande kopie van $1 tonen; deze is echter mogelijk niet up-to-date.";s:10:"perfcached";s:123:"De onderstaande gegevens zijn eerder opgeslagen en het is mogelijk dat ze niet overeenkomen met de actuele stand van zaken.";s:20:"wrong_wfQuery_params";s:69:"Incorrect parameters to wfQuery()<br />
+Function: $1<br />
+Query: $2
+";s:10:"viewsource";s:18:"Brontekst bekijken";s:13:"protectedtext";s:239:"Deze pagina is op het moment niet bewerkbaar; waarschijnlijk betekent dit dat een moderator de pagina heeft beveiligd, bijvoorbeeld om vandalisme tegen te houden.
+
+Hieronder kunt u de wikitekst van de pagina bekijken, maar niet bewerken.";s:18:"seriousxhtmlerrors";s:56:"Er zijn ernstige xhtml-opmaakfouten opgemerkt door tidy.";s:11:"logouttitle";s:18:"Afmelden gebruiker";s:10:"logouttext";s:128:"U bent nu afgemeld.
+U kunt Wikipedia anoniem blijven gebruiken, of u opnieuw aanmelden onder dezelfde of onder een andere naam.
+";s:15:"welcomecreation";s:106:"<h2>Welkom, $1!</h2><p>Uw gebruikersprofiel is aangemaakt. U kunt nu uw persoonlijke voorkeuren instellen.";s:14:"loginpagetitle";s:14:"Gebruikersnaam";s:8:"yourname";s:17:"Uw gebruikersnaam";s:12:"yourpassword";s:13:"Uw wachtwoord";s:17:"yourpasswordagain";s:26:"Wachtwoord opnieuw ingeven";s:12:"newusersonly";s:27:" (alleen nieuwe gebruikers)";s:18:"remembermypassword";s:46:"Mijn wachtwoord onthouden voor latere sessies.";s:12:"loginproblem";s:74:"<b>Er is een probleem met het aanmelden.</b><br>Probeer het opnieuw a.u.b.";s:15:"alreadyloggedin";s:69:"<font color=red><b>Gebruiker $1, u bent al aangemeld.</b></font><br>
+";s:5:"login";s:23:"Aanmelden & Inschrijven";s:11:"loginprompt";s:65:"Uw webbrowser moet cookies aanvaarden om dit te kunnen gebruiken.";s:9:"userlogin";s:9:"Aanmelden";s:6:"logout";s:8:"Afmelden";s:10:"userlogout";s:8:"Afmelden";s:11:"notloggedin";s:14:"Niet aangemeld";s:13:"createaccount";s:32:"Nieuw gebruikersprofiel aanmaken";s:17:"createaccountmail";s:9:"per email";s:9:"badretype";s:50:"De ingevoerde wachtwoorden verschillen van elkaar.";s:10:"userexists";s:112:"Er is al iemand die de gebruikersnaam die u heeft ingevoerd in gebruik heeft. Probeer een andere naam te kiezen.";s:9:"youremail";s:14:"Uw e-mailadres";s:12:"yourrealname";s:14:"Uw echte naam*";s:8:"yournick";s:32:"Uw bijnaam (voor handtekeningen)";s:12:"emailforlost";s:326:"Het opgeven van een e-mailadres is niet verplicht.<br>Enkel als er een email-adres beschikbaar is, kunt u een nieuw wachtwoord aanvragen indien u het oude vergeten bent.<br>Een emailadres geeft andere gebruikers de mogelijkheid u een email te sturen via een formulier. U kunt die functie eventueel uitzetten via de voorkeuren.";s:19:"prefs-help-userdata";s:358:"* <strong>Echte naam</strong> (optioneel): Als u uw echte naam opgeeft, zals deze gebruikt worden om u als auteur van uw bewerkingen aan te geven.<br/>
+* <strong>Email</strong> (optioneel): Hiermee kunnen mensen u een email zenden (zonder dat het adres hen bekend wordt gemaakt), en hiermee kan u een nieuw wachtwoord gezonden worden als u het vergeten bent.";s:10:"loginerror";s:9:"Inlogfout";s:12:"nocookiesnew";s:228:"Uw gebruikersnaam is aangemaakt, maar het aanmelden is mislukt. Dit komt doordat uw browser geen cookies accepteert. U kunt de instelling van uw browser wijzigen, en u daarna met de nieuwe gebruikersnaam en wachtwoord aanmelden.";s:14:"nocookieslogin";s:150:"Het aanmelden is mislukt omdat uw browser geen cookies accepteert. Probeer het accepteren van cookies aan te zetten en u daarna opnieuw aan te melden.";s:6:"noname";s:39:"U dient een gebruikersnaam op te geven.";s:17:"loginsuccesstitle";s:17:"Aanmelden gelukt.";s:12:"loginsuccess";s:46:"U bent nu aangemeld bij Wikipedia NL als "$1".";s:10:"nosuchuser";s:145:"Er bestaat geen gebruiker met de naam "$1". Controleer uw spelling, of gebruik onderstaand formulier om een nieuw gebruikersprofiel aan te maken.";s:13:"wrongpassword";s:60:"Het ingegeven wachtwoord is niet juist. Probeer het opnieuw.";s:14:"mailmypassword";s:33:"Stuur mij een nieuw wachtwoord op";s:21:"passwordremindertitle";s:35:"Herinnering wachtwoord Wikipedia NL";s:20:"passwordremindertext";s:219:"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.";s:7:"noemail";s:47:"Er is geen e-mailadres geregistreerd voor "$1".";s:12:"passwordsent";s:136:"Er is een nieuw wachtwoord verzonden naar het e-mailadres dat geregistreerd staat voor "$1". Gelieve na ontvangst opnieuw aan te melden.";s:8:"loginend";s:6:"&nbsp;";s:9:"mailerror";s:22:"Error sending mail: $1";s:11:"bold_sample";s:17:"vetgedrukte tekst";s:8:"bold_tip";s:3:"vet";s:13:"italic_sample";s:14:"cursieve tekst";s:10:"italic_tip";s:7:"Cursief";s:11:"link_sample";s:9:"Onderwerp";s:8:"link_tip";s:12:"Interne link";s:14:"extlink_sample";s:35:"http://nl.wikipedia.org WikipediaNL";s:11:"extlink_tip";s:12:"Externe link";s:15:"headline_sample";s:13:"Deelonderwerp";s:12:"headline_tip";s:28:"Tussenkopje (hoogste niveau)";s:11:"math_sample";s:15:"a^2 + b^2 = c^2";s:8:"math_tip";s:29:"Wiskundige formule (in LaTeX)";s:13:"nowiki_sample";s:37:"Tekst die niet geïnterpreteerd wordt.";s:10:"nowiki_tip";s:26:"Geen wiki-opmaak toepassen";s:12:"image_sample";s:11:"plaatje.png";s:9:"image_tip";s:10:"Afbeelding";s:12:"media_sample";s:13:"Voorbeeld.mp3";s:9:"media_tip";s:18:"link naar een file";s:7:"sig_tip";s:36:"Je ondertekening (met datum en tijd)";s:6:"hr_tip";s:16:"Horizontale lijn";s:7:"infobox";s:41:"Druk op een knop voor een voorbeeldtekst.";s:13:"infobox_alert";s:160:"Type de tekst hier die u gelayout wilt zien.\n Het zal in het informatievak worden getoond voor copy en paste.\nVoorbeeld:\n$1\n zal worden weergegeven als:\n$2";s:7:"summary";s:12:"Samenvatting";s:7:"subject";s:9:"Onderwerp";s:9:"minoredit";s:27:"Dit is een kleine wijziging";s:9:"watchthis";s:16:"Volg deze pagina";s:11:"savearticle";s:14:"Pagina opslaan";s:7:"preview";s:8:"Nakijken";s:11:"showpreview";s:27:"Toon bewerking ter controle";s:12:"blockedtitle";s:24:"Gebruiker is geblokkeerd";s:11:"blockedtext";s:1297:"== U heeft geen schrijftoegang ==
+
+Uw gebruikersnaam of IP-adres is door $1 geblokkeerd waardoor u geen artikels kunt bewerken.
+<br>De opgegeven reden luidt:<br> '''$2.'''<p>
+
+U kunt nog steeds alle artikels raadplegen. U kan er echter geen meer bewerken of aanmaken.<br>
+<font color="red">Rode links</font> gaan naar niet-bestaande artikels. Als u daar op klikt kan u dat artikel niet aanmaken omdat u geblokkeerd bent, en krijgt u dit bericht te zien. Een gebruiker die niet geblokkeerd is krijgt een invulveld te zien waar hij het artikel kan aanmaken.<br>
+<font color="blue">Blauwe links</font> gaan naar bestaande artikels die u zonder problemen kan raadplegen.<p>
+Als u dus enkel op zoek bent naar informatie mist u dus niets.<p>
+
+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 door u gebruikte ip-adres is recent gebruikt door u of iemand anders voor bewerkingen die een overtreding zijn van de [[Wikipedia:Toch een paar regels|regels]] van Wikipedia.<p>
+
+
+U kunt voor overleg contact opnemen met de [[Wikipedia:Systeembeheerders|moderators]] via [http://wikinl.sol3.info/wikinl_info.html#email wikinl-l-owner@wikipedia.org].";s:18:"whitelistedittitle";s:19:"Aanmelden verplicht";s:17:"whitelistedittext";s:80:"Om dit artikel te kunnen wijzigen, moet u [[Speciaal:Userlogin|aangemeld]] zijn.";s:18:"whitelistreadtitle";s:22:"Aanmelden is verplicht";s:17:"whitelistreadtext";s:77:"Om dit artikel te kunnen lezen, moet u [[Speciaal:Userlogin|aangemeld]] zijn.";s:17:"whitelistacctitle";s:46:"Nieuwe gebruikersnaam aanmaken niet toegestaan";s:16:"whitelistacctext";s:88:"Nieuwe accounts kunnen slechts worden aangemaakt door bepaalde geregistreerde gebruikers";s:13:"loginreqtitle";s:19:"Aanmelden verplicht";s:12:"loginreqtext";s:80:"U moet u [[speciaal:Userlogin|aanmelden]] om andere pagina's te kunnen bekijken.";s:12:"accmailtitle";s:21:"Wachtwoord verzonden.";s:11:"accmailtext";s:46:"Het wachtwoord voor '$1' is verzonden naar $2.";s:10:"newarticle";s:7:"(Nieuw)";s:14:"newarticletext";s:461:"Er bestaat nog geen artikel over dit onderwerp.<br>Als u wilt, kunt u hieronder een nieuw artikel schrijven.<br>Was dit niet de bedoeling, gebruik dan de 'Terug' knop van uw browser.<p>WAARSCHUWING: Let er goed op dat uw tekst vrij van auteursrechten is, bijvoorbeeld omdat u het zelf geschreven heeft. <b><font color="red">Neem geen teksten over uit boeken, tijdschriften of andere websites tenzij u zeker weet dat deze vrij van auteursrechten zijn</font></b>.";s:12:"talkpagetext";s:31:"<!-- MediaWiki:talkpagetext -->";s:16:"anontalkpagetext";s:428:"<hr>Deze overlegpagina hoort bij een anonieme gebruiker die hetzij geen loginnaam heeft, hetzij deze niet gebruikt. We gebruiken daarom het IP-adres ter identificatie. Het kan echter zijn dat meerdere personen hetzelfde IP-adres gebruiken. Het kan daarom zijn dat u hier berichten ontvangt die niet voor u bedoeld zijn. Mocht u dat willen voorkomen, dan kunt u [[Speciaal:Userlogin|een gebruikersnaam aanvragen of u aanmelden]].";s:13:"noarticletext";s:40:"(Deze pagina bevat momenteel geen tekst)";s:14:"clearyourcache";s:257:"'''Let op!''' Nadat u de veranderingen heeft opgeslagen, moet u de cache van uw browser nog legen om ze daadwerkelijk te zien.
+
+{| table border="1"
+| Mozilla || reload (of ''ctrl-r'')
+|-
+| IE/Opera || ctrl-f5
+|-
+| Safari || cmd-r
+|-
+| Konqueror || ctrl-r
+|}";s:22:"usercssjsyoucanpreview";s:123:"<strong>Tip:</strong> Gebruik de 'Toon bewerking ter controle' knop om uw nieuwe css/js te testen alvorens het op te slaan.";s:14:"usercsspreview";s:93:"'''Dit is alleen een voorbeschouwing van uw persoonlijke CSS, deze is nog niet opgeslagen!'''";s:13:"userjspreview";s:120:"'''Denk eraan dat u uw nieuwe gebruikersspecifieke javascript alleen aan het testen bent, het is nog niet opgeslagen!'''";s:7:"updated";s:12:"(Bijgewerkt)";s:4:"note";s:28:"<strong>Opmerking:</strong> ";s:11:"previewnote";s:67:"Let op: dit is een controlepagina; uw tekst is nog niet opgeslagen!";s:15:"previewconflict";s:90:"Deze versie toont hoe de tekst in het bovenste veld eruit gaat zien wanneer u zou opslaan.";s:7:"editing";s:20:"Bewerkingspagina: $1";s:11:"sectionedit";s:13:" (deelpagina)";s:11:"commentedit";s:19:" (nieuwe opmerking)";s:12:"editconflict";s:22:"Bewerkingsconflict: $1";s:15:"explainconflict";s:298:"Iemand anders heeft deze pagina gewijzigd nadat u aan deze bewerking bent begonnen. Het bovenste tekstveld toont de huidige versie van de pagina. U zal uw eigen wijzigingen moeten integreren in die tekst. Alleen de tekst in het bovenste veld wordt bewaard wanneer u kiest voor "Pagina opslaan".
+<p>";s:8:"yourtext";s:8:"Uw tekst";s:13:"storedversion";s:17:"Opgeslagen versie";s:10:"editingold";s:186:"<strong>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.
+.</strong>
+";s:8:"yourdiff";s:11:"Wijzigingen";s:16:"copyrightwarning";s:580:"Opgelet: Alle bijdragen aan Wikipedia worden geacht te zijn vrijgegeven onder de GNU Free Documentation License. Als u niet wilt dat uw tekst door anderen naar believen bewerkt en verspreid kan worden, kies dan niet voor 'Pagina Opslaan'.<br> Hierbij belooft u ons tevens dat u deze tekst zelf heeft geschreven, of overgenomen uit een vrije, openbare bron.<br> <strong>GEBRUIK GEEN MATERIAAL DAT BESCHERMD WORDT DOOR AUTEURSRECHT, TENZIJ JE DAARTOE TOESTEMMING HEBT!</strong>
+
+<table align="center" border="1" cellpadding="5">
+<tr><td>Speciale karakters: äëïöü àéèêç
+</table>";s:15:"longpagewarning";s:204:"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.";s:15:"readonlywarning";s:232:"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.";s:20:"protectedpagewarning";s:120:"Waarschuwing! U staat op het punt een beveiligde pagina te wijzigen. Gewone gebruikers kunnen deze pagina niet bewerken.";s:10:"revhistory";s:22:"Bewerkingsgeschiedenis";s:9:"nohistory";s:49:"Deze pagina heeft nog geen bewerkingen ondergaan.";s:11:"revnotfound";s:23:"Wijziging niet gevonden";s:15:"revnotfoundtext";s:128:"De opgevraagde oude versie van deze pagina is onvindbaar. Controleer a.u.b. de URL die u gebruikte om naar deze pagina te gaan.
+";s:8:"loadhist";s:45:"Bezig met het laden van de paginageschiedenis";s:10:"currentrev";s:14:"Huidige versie";s:12:"revisionasof";s:12:"Versie op $1";s:3:"cur";s:6:"huidig";s:4:"next";s:8:"volgende";s:4:"last";s:6:"vorige";s:4:"orig";s:4:"orig";s:10:"histlegend";s:127:"Verklaring afkortingen: (huidig) = verschil met huidige versie, (vorige) = verschil met voorgaande versie, K = kleine wijziging";s:10:"difference";s:29:"(Verschil tussen bewerkingen)";s:10:"loadingrev";s:27:"bezig paginaversie te laden";s:6:"lineno";s:9:"Regel $1:";s:11:"editcurrent";s:42:"De huidige versie van deze pagina bewerken";s:25:"selectnewerversionfordiff";s:50:"Selecteer een nieuwere versie voor de vergelijking";s:25:"selectolderversionfordiff";s:49:"Selecteer een oudere versie voor de vergelijking.";s:23:"compareselectedversions";s:32:"Vergelijk de aangevinkte versies";s:13:"searchresults";s:14:"Zoekresultaten";s:14:"searchhelppage";s:16:"Wikipedia:Zoeken";s:18:"searchingwikipedia";s:19:"Zoeken op Wikipedia";s:16:"searchresulttext";s:54:"Voor meer informatie over zoeken op Wikipedia: zie $1.";s:11:"searchquery";s:22:"Voor zoekopdracht "$1"";s:8:"badquery";s:33:"Slecht geformuleerde zoekopdracht";s:12:"badquerytext";s:222:"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 <a HREF="http://nl.wikipedia.org/wiki/Wikipedia:Verboden_woorden">Verboden woorden</a>.";s:11:"matchtotals";s:79:"De zoekterm "$1" is gevonden in $2 paginatitels en in de tekst van $3 pagina's.";s:9:"nogomatch";s:86:"Er bestaat geen pagina met deze titel, op zoek naar pagina's waarin de tekst voorkomt.";s:12:"titlematches";s:32:"Overeenkomst met volgende titels";s:14:"notitlematches";s:58:"Geen enkele paginatitel gevonden met de opgegeven zoekterm";s:11:"textmatches";s:30:"Overeenkomst met artikelinhoud";s:13:"notextmatches";s:44:"Geen artikel gevonden met opgegeven zoekterm";s:5:"prevn";s:9:"vorige $1";s:5:"nextn";s:11:"volgende $1";s:12:"viewprevnext";s:24:"($1) ($2) ($3) bekijken.";s:14:"showingresults";s:54:"Hieronder <b>$1</b> resultaten vanaf nummer <b>$2</b>.";s:17:"showingresultsnum";s:54:"Hieronder <b>$3</b> resultaten vanaf nummer <b>$2</b>.";s:9:"nonefound";s:914:"<strong>Merk op:</strong> 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).<p>
+
+Het kan natuurlijk dat er gewoon nog geen artikel aanwezig op Wikipedia NL over dit onderwerp. Mogelijk is het aanwezig in een andere taal. <p>
+
+U kan een overzicht van de alle Wikipedia's vinden op <a HREF="http://meta.wikipedia.org/wiki/The_provisional_portal_of_Wikipedia"><i>The provisional portal of Wikipedia</i></a>.<p>
+
+Of buiten Wikipedia in een <a href="http://encyclopedie.zoekhulp.nl/?refer=Wikipedia.nl">andere encyclopedie</a>.<p>
+
+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.";s:11:"powersearch";s:6:"Zoeken";s:15:"powersearchtext";s:74:"
+ Zoek in naamruimten :<br>
+$1<br>
+$2 Toon redirects &nbsp; Zoek: $3 $9";s:14:"searchdisabled";s:210:"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 niet beschikbaar voor onbepaalde duur.";s:12:"googlesearch";s:2582:"<p>U kan zoeken via onderstaande zoekmachines op Wikipedia;</p>
+
+<table border="0" bgcolor="#FFFFFF">
+
+<!-- SiteSearch Google -->
+ <tr>
+ <td valign="top" align="center">
+ <a href="http://www.google.com/">
+ <img src="http://www.google.com/logos/Logo_40wht.gif" border="0" alt="Google" title="Google">
+ </a>
+ </td>
+ <td width="100%">
+ <form method=get action="http://www.google.com/search">
+ <input type="text" name="q" size=31 maxlength=255 value="$1">
+ <input type="submit" name="btnG" value="Met Google zoeken in Wikipedia">
+ <input type="hidden" name="domains" value="http://nl.wikipedia.org"><br/><input type="radio" name="sitesearch" value="">Het internet
+ <input type="radio" name="sitesearch" value="wikipedia.org">Alle Wikipedia's
+ <input type="radio" name="sitesearch" value="http://nl.wikipedia.org" checked="checked">Wikipedia NL<br/>
+ </font>
+ </form>
+ </td>
+ </tr>
+<!-- SiteSearch Google -->
+
+<!-- Spacing -->
+<tr><td colspan=2>&nbsp;</td></tr>
+<!-- Spacing -->
+
+<!-- Yahoo search -->
+ <tr>
+ <td valign="top" align="center">
+ <a href="http://search.yahoo.com/">
+ <img src="http://us.i1.yimg.com/us.yimg.com/i/us/search/ysan/ysanlogo.gif" border="0" alt="Yahoo!"vspace="5">
+ </a>
+ </td>
+ <td width="100%">
+ <form method=get action="http://search.yahoo.com/search">
+ <input type="hidden" name="x" value="op">
+ <input type="hidden" name="va_vt" value="any">
+ <input type="text" name="va" size="31" value="$1">
+ <input type="submit" value="Met Yahoo! zoeken in Wikipedia">
+ <br/>
+ <font size=-1>
+ <input type="radio" name="vs" value="">Het internet
+ <input type="radio" name="vs" value="wikipedia.org">Alle Wikipedia's
+ <input type="radio" name="vs" value="nl.wikipedia.org" checked>Wikipedia NL
+ </font>
+ </form>
+ </td>
+ </tr>
+</table>
+
+<p>
+U kan de volgende link gebruiken om een nieuw artikel over dit onderwerp te schrijven of dit artikel te bewerken indien reeds aanwezig: <a href="/w/wiki.phtml?title=$1&action=edit">$1</a>
+</p>
+
+
+<p> Het is mogelijk dat u niet alle pagina's vindt; in het bijzonder recentelijk aangemaakte pagina's kunnen ontbreken.
+Als u zoekt via een externe zoekmachiene op Wikipedia zult 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.
+</p>";s:14:"blanknamespace";s:14:"(encyclopedie)";s:11:"preferences";s:10:"Voorkeuren";s:12:"prefsnologin";s:14:"Niet aangemeld";s:16:"prefsnologintext";s:98:"U dient <a href="/wiki/Special:Userlogin">aangemeld</a> te zijn om voorkeuren te kunnen instellen.";s:14:"prefslogintext";s:145:"U bent aangemeld als "$1". Uw interne identificatienummer is $2.
+
+Een beschrijving van de verschillende opties staat op [[Wikipedia:Voorkeuren]].";s:10:"prefsreset";s:29:"Standaardvoorkeuren hersteld.";s:10:"qbsettings";s:20:"Menubalkinstellingen";s:14:"qbsettingsnote";s:72:"This preference only works in the 'Standard' and the 'CologneBlue' skin.";s:14:"changepassword";s:19:"Wachtwoord wijzigen";s:4:"skin";s:19:"Wikipedia-Uiterlijk";s:4:"math";s:19:"Wiskundige formules";s:10:"dateformat";s:11:"datumopmaak";s:12:"math_failure";s:36:"Wiskundige formule niet begrijpelijk";s:18:"math_unknown_error";s:25:"Onbekende fout in formule";s:21:"math_unknown_function";s:28:"Onbekende functie in formule";s:17:"math_lexing_error";s:31:"Lexicografische fout in formule";s:17:"math_syntax_error";s:28:"Syntactische fout in formule";s:16:"math_image_error";s:39:"Creatie van PNG voor formule is mislukt";s:15:"math_bad_tmpdir";s:93:"Folder voor tijdelijke bestanden voor wiskundige formules bestaat niet of is niet schrijfbaar";s:15:"math_bad_output";s:70:"De folder voor wiskunde-bestanden bestaat niet of is niet te schrijven";s:12:"math_notexvc";s:88:"Kan het programma texvc niet vinden; configureer volgens de beschrijving in math/README.";s:14:"prefs-personal";s:21:"Persoonlijke gegevens";s:8:"prefs-rc";s:34:"Recente wijzigingen en beginnetjes";s:10:"prefs-misc";s:8:"Diversen";s:9:"saveprefs";s:18:"Voorkeuren opslaan";s:10:"resetprefs";s:30:"Standaardvoorkeuren herstellen";s:11:"oldpassword";s:17:"Huidig wachtwoord";s:11:"newpassword";s:16:"Nieuw wachtwoord";s:9:"retypenew";s:38:"Voer het nieuwe wachtwoord nogmaals in";s:11:"textboxsize";s:20:"Afmetingen tekstveld";s:4:"rows";s:6:"Regels";s:7:"columns";s:8:"Kolommen";s:17:"searchresultshead";s:32:"Instellingen voor zoekresultaten";s:14:"resultsperpage";s:44:"Aantal per bladzijde te tonen zoekresultaten";s:12:"contextlines";s:33:"Aantal regels per gevonden pagina";s:12:"contextchars";s:38:"Aantal tekens van de context per regel";s:13:"stubthreshold";s:137:"Grootte waaronder een pagina als '<a HREF="http://nl.wikipedia.org/wiki/Wikipedia:Beginnetje">beginnetje</a>' wordt aangegeven (in bytes)";s:18:"recentchangescount";s:42:"Aantal titels in lijst recente wijzigingen";s:10:"savedprefs";s:30:"Uw voorkeuren zijn opgeslagen.";s:14:"timezonelegend";s:9:"Time zone";s:12:"timezonetext";s:272:"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.";s:9:"localtime";s:17:"Plaatselijke tijd";s:14:"timezoneoffset";s:13:"Tijdsverschil";s:10:"servertime";s:38:"De locale tijd van de Wikipedia-server";s:13:"guesstimezone";s:31:"Vanuit de browser toe te voegen";s:9:"emailflag";s:42:"Geen e-mail van andere gebruikers toestaan";s:9:"defaultns";s:35:"Naamruimten om direct in te zoeken:";s:7:"changes";s:11:"wijzigingen";s:13:"recentchanges";s:19:"Recente wijzigingen";s:17:"recentchangestext";s:921:"Deze pagina toont de laatste aanpassingen aan artikelen van Wikipedia NL. <br>
+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].<p>
+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.";s:9:"rcloaderr";s:31:"Meest recente wijzigingen laden";s:6:"rcnote";s:106:"Hieronder staan de <strong>$1</strong> laatste wijzigingen gedaan in de laatste <strong>$2</strong> dagen.";s:10:"rcnotefrom";s:76:"Veranderingen sinds <b>$2</b> (met een maximum van <b>$1</b> veranderingen).";s:10:"rclistfrom";s:30:"Toon de veranderingen vanaf $1";s:13:"showhideminor";s:60:"$1 kleine wijzigingen | $2 robots | $3 aangemelde gebruikers";s:7:"rclinks";s:61:"Bekijk de $1 laatste wijzigingen in de laatste $2 dagen<br>$3";s:6:"rchide";s:136:"in $4 vorm; $1 kleine wijzigingen; $2 wijzigingen op speciale pagina's zoals overleg- en gebruikerspagina's; $3 meervoudige wijzigingen.";s:5:"rcliu";s:47:"- $1 wijzigingen door geregistreerde gebruikers";s:4:"diff";s:4:"wijz";s:4:"hist";s:4:"hist";s:4:"hide";s:7:"verberg";s:4:"show";s:4:"toon";s:9:"tableform";s:5:"tabel";s:8:"listform";s:5:"lijst";s:8:"nchanges";s:14:"$1 wijzigingen";s:15:"minoreditletter";s:1:"K";s:13:"newpageletter";s:1:"N";s:6:"upload";s:6:"Upload";s:9:"uploadbtn";s:14:"upload bestand";s:10:"uploadlink";s:17:"upload afbeelding";s:8:"reupload";s:16:"Opnieuw uploaden";s:12:"reuploaddesc";s:31:"Terug naar het uploadformulier.";s:13:"uploadnologin";s:14:"Niet aangemeld";s:17:"uploadnologintext";s:90:"U dient <a href="/wiki/Speciaal:Userlogin">aangemeld te zijn</a>
+om bestanden te uploaden.";s:10:"uploadfile";s:14:"upload bestand";s:11:"uploaderror";s:11:"upload fout";s:10:"uploadtext";s:1781:"<strong>STOP!</strong> Voor u iets hier upload,
+wees zeker dat het in overeenkomst is met het Wikipedia NL <a href="/wiki/Wikipedia:Beleid_voor_gebruik_van_afbeeldingen">afbeeldingsbeleid</a>.
+<p>Om de reeds ge-uploade bestanden te bekijken of te zoeken ga naar de <a href="/wiki/Speciaal:Imagelist">lijst van ge-uploade bestanden</a>.
+Uploads en verwijderingen worden bijgehouden in het <a href="/wiki/Wikipedia:Upload_logboek">upload logboek</a>.
+<p>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.
+<p>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; <b>[[afbeelding:uw_foto.jpg]]</b> of <b>[[afbeelding:uw_logo.png|alt text]]</b> of <b>[[media:uw_geluid.ogg]]</b> voor audio.
+<p>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.";s:9:"uploadlog";s:14:"upload logboek";s:13:"uploadlogpage";s:14:"Upload_logboek";s:17:"uploadlogpagetext";s:107:"Hieronder de lijst met de meest recent ge-uploade bestanden. Alle tijden zijn servertijd (UTC).
+<ul>
+</ul>
+";s:8:"filename";s:12:"Bestandsnaam";s:8:"filedesc";s:92:"Vul in; beschrijving en uitleg auteursrechtensituatie (<b>bronvermelding is niet genoeg</b>)";s:10:"filestatus";s:22:"Auteursrechtensituatie";s:10:"filesource";s:11:"Auteur/bron";s:11:"affirmation";s:117:"Ik verklaar dat de eigenaar van de rechten op dit bestand toestemt om het onder de voorwaarden van $1 te verspreiden.";s:13:"copyrightpage";s:24:"Wikipedia:Auteursrechten";s:17:"copyrightpagename";s:27:"Wikipedia NL auteursrechten";s:13:"uploadedfiles";s:20:"Ge-uploade bestanden";s:13:"noaffirmation";s:78:"U dient te bevestigen dat deze handeling geen inbreuk maakt op auteursrechten.";s:13:"ignorewarning";s:45:"Negeer de waarschuwing en sla het bestand op.";s:9:"minlength";s:64:"De naam van het bestand moet uit ten minste drie tekens bestaan.";s:11:"badfilename";s:45:"De naam van het bestand is gewijzigd in "$1".";s:11:"badfiletype";s:41:"".$1" is geen aanbevolen bestandsformaat.";s:9:"largefile";s:51:"Aanbeveling: maak afbeeldingen niet groter dan 100k";s:16:"successfulupload";s:23:"De upload was succesvol";s:12:"fileuploaded";s:263:"<b>Het uploaden van bestand "$1" is geslaagd.</b> Gelieve deze link naar de omschrijvingspagina te volgen: ($2). Vul daar informatie in over dit bestand, bijvoorbeeld de oorsprong, wanneer en door wie het gemaakt is en wat u verder er nog over te vertellen heeft.";s:13:"uploadwarning";s:20:"Upload waarschuwing ";s:8:"savefile";s:15:"Bestand opslaan";s:13:"uploadedimage";s:21:"heeft ge-upload: "$1"";s:14:"uploaddisabled";s:42:"Uploads zijn op deze server niet mogelijk.";s:9:"imagelist";s:22:"Lijst van afbeeldingen";s:13:"imagelisttext";s:53:"Hier volgt een lijst met $1 afbeeldingen geordend $2.";s:12:"getimagelist";s:30:"Lijst van afbeeldingen ophalen";s:11:"ilshowmatch";s:50:"Toon alle afbeeldingen waarvan de naam voldoet aan";s:8:"ilsubmit";s:4:"Zoek";s:8:"showlast";s:44:"Toon de laatste $1 afbeeldingen geordend $2.";s:3:"all";s:4:"alle";s:6:"byname";s:7:"op naam";s:6:"bydate";s:8:"op datum";s:6:"bysize";s:10:"op grootte";s:9:"imgdelete";s:4:"verw";s:7:"imgdesc";s:4:"besc";s:9:"imglegend";s:103:"Verklaring: (besc) = toon/verander beschrijving van de afbeelding, (verw) = verwijdering de afbeelding.";s:10:"imghistory";s:30:"Geschiedenis van de afbeelding";s:9:"revertimg";s:3:"rev";s:9:"deleteimg";s:4:"verw";s:13:"imghistlegend";s:194:"Verklaring: (cur)= huidige afbeelding, (verw) = verwijder de oude versie, (rev) = breng oude versie terug.<br>
+<i>Klik op de datum om de afbeeldingen die ge-upload zijn op die datum te zien</i>.";s:10:"imagelinks";s:23:"Afbeeldingsverwijzingen";s:12:"linkstoimage";s:55:"Deze afbeelding wordt gebruikt op de volgende pagina's:";s:14:"nolinkstoimage";s:44:"Geen enkele pagina gebruikt deze afbeelding.";s:10:"statistics";s:12:"Statistieken";s:9:"sitestats";s:37:"Statistieken betreffende Wikipedia NL";s:9:"userstats";s:35:"Statistieken betreffende gebruikers";s:13:"sitestatstext";s:424:"Er zijn <b>$1</b> pagina's in de database. Hierbij zijn inbegrepen "Overleg" pagina's, pagina's over Wikipedia, extreem korte beginnetjes van 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 <b>$2</b> artikels.<p>
+Er is in totaal $4 maal een pagina bewerkt. Dat geeft een gemiddelde van $5 bewerkingen per pagina.";s:13:"userstatstext";s:87:"Er zijn momenteel $1 geregistreerde gebruikers; hiervan zijn er $2 moderators (zie $3).";s:11:"maintenance";s:16:"Onderhoudspagina";s:18:"maintnancepagetext";s:275:"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.";s:19:"maintenancebacklink";s:30:"Terug naar de Onderhoudspagina";s:15:"disambiguations";s:19:"Doorverwijspagina's";s:19:"disambiguationspage";s:27:"Wikipedia:Doorverwijspagina";s:19:"disambiguationstext";s:402:"De onderstaande artikelen verwijzen naar een [[Wikipedia:Doorverwijspagina|doorverwijspagina]]. Deze zouden waarschijnlijk direct naar de onderwerpspagina moeten verwijzen. <br>Als doorverwijspagina's worden die pagina's beschouwd waar vanaf $1 naar verwezen wordt.<br>Opmerking: Deze lijst toont alleen pagina's vanuit de hoofdnaamruimte, en dus niet Overlegpagina's, Wikipedia:pagina's en dergelijke.";s:15:"doubleredirects";s:17:"Dubbele redirects";s:19:"doubleredirectstext";s:399:"<b>Let op:</b> 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.<br>
+Op 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.";s:15:"brokenredirects";s:18:"Gebroken redirects";s:19:"brokenredirectstext";s:86:"De onderstaande redirectpagina's bevatten een redirect naar een niet-bestaande pagina.";s:9:"selflinks";s:36:"Pagina's die naar zichzelf verwijzen";s:13:"selflinkstext";s:73:"De volgende pagina's verwijzen naar zichzelf, wat niet hoort te gebeuren.";s:11:"mispeelings";s:23:"Pagina's met spelfouten";s:15:"mispeelingstext";s:168:"De volgende pagina's bevatten een veel voorkomende spel- of typfout, die staat aangegeven op de lijst in $1. Daar staat meestal ook (tussen haakjes) de juiste spelling.";s:15:"mispeelingspage";s:27:"Veel voorkomende spelfouten";s:20:"missinglanguagelinks";s:21:"Ontbrekende taallinks";s:26:"missinglanguagelinksbutton";s:31:"Vind ontbrekende taallinks voor";s:24:"missinglanguagelinkstext";s:96:"De onderstaande artikelen bevatten geen taallink naar een overeenkomende pagina in de taal "$1".";s:7:"orphans";s:12:"Weespagina's";s:11:"lonelypages";s:12:"Weespagina's";s:12:"unusedimages";s:24:"Ongebruikte afbeeldingen";s:12:"popularpages";s:18:"Populaire artikels";s:6:"nviews";s:15:"$1 keer bekeken";s:11:"wantedpages";s:17:"Gewenste pagina's";s:6:"nlinks";s:15:"$1 verwijzingen";s:8:"allpages";s:13:"Alle pagina's";s:10:"randompage";s:19:"Willekeurig artikel";s:10:"shortpages";s:14:"Korte artikels";s:9:"longpages";s:14:"Lange artikels";s:12:"deadendpages";s:21:"Pagina's zonder links";s:9:"listusers";s:20:"Lijst van gebruikers";s:10:"listadmins";s:11:"Admins list";s:12:"specialpages";s:17:"Speciale pagina's";s:9:"spheading";s:38:"Speciale pagina's voor alle gebruikers";s:14:"sysopspheading";s:22:"Alleen voor moderators";s:18:"developerspheading";s:32:"Alleen voor systeemontwikkelaars";s:11:"protectpage";s:15:"Beveilig pagina";s:19:"recentchangeslinked";s:20:"Verwante wijzigingen";s:6:"rclsub";s:37:"(van pagina's waarnaar "$1" verwijst)";s:5:"debug";s:12:"Bugreparatie";s:8:"newpages";s:15:"Nieuwe artikels";s:12:"ancientpages";s:15:"Oudste artikels";s:4:"intl";s:9:"Taallinks";s:4:"move";s:12:"wijzig titel";s:12:"movethispage";s:12:"Wijzig titel";s:16:"unusedimagestext";s:239:"<p>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.";s:11:"booksources";s:11:"Boekhandels";s:14:"booksourcetext";s:304:"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. <p>Deze dienst is enkel ter uwer informatie. Wikipedia NL heeft <u>geen enkele</u> relatie met deze websites.";s:4:"isbn";s:4:"ISBN";s:6:"rfcurl";s:35:"http://www.faqs.org/rfcs/rfc$1.html";s:14:"alphaindexline";s:9:"$1 tot $2";s:7:"version";s:35:"Versie informatie van deze software";s:11:"mailnologin";s:29:"Geen verzendadres beschikbaar";s:15:"mailnologintext";s:199:"U dient <a href="/wiki/Speciaal:Userlogin">aangemeld te zijn </a>
+en een geldig e-mailadres in uw <a href="/wiki/Speciaal:Preferences">voorkeuren</a>
+te vermelden om deze functie te kunnen gebruiken.";s:9:"emailuser";s:16:"E-mail gebruiker";s:9:"emailpage";s:16:"E-mail gebruiker";s:13:"emailpagetext";s:202:"Indien deze gebruiker een geldig e-mailadres heeft opgegeven dan kunt u via dit formulier een bericht verzenden. Het e-mailadres dat u heeft opgegeven bij uw voorkeuren zal als afzender gebruikt worden.";s:15:"usermailererror";s:30:"Foutmelding bij het verzenden:";s:15:"defemailsubject";s:16:"Wikipedia e-mail";s:12:"noemailtitle";s:46:"Van deze gebruiker is geen email-adres bekend.";s:11:"noemailtext";s:91:"Deze gebruiker heeft geen geldig e-mailadres opgegeven of heeft deze functie uitgeschakeld.";s:9:"emailfrom";s:3:"Van";s:7:"emailto";s:3:"Aan";s:12:"emailsubject";s:9:"Onderwerp";s:12:"emailmessage";s:7:"Bericht";s:9:"emailsend";s:16:"Verstuur bericht";s:9:"emailsent";s:16:"E-mail versturen";s:13:"emailsenttext";s:24:"Uw bericht is verzonden.";s:9:"watchlist";s:9:"Volglijst";s:12:"watchlistsub";s:20:"(van gebruiker "$1")";s:11:"nowatchlist";s:31:"Er staat niets op uw volglijst.";s:12:"watchnologin";s:21:"U bent niet aangemeld";s:16:"watchnologintext";s:101:"Om uw volglijst te veranderen dient u eerst <a href="/wiki/Speciaal:Userlogin">aangemeld</a>
+te zijn.";s:10:"addedwatch";s:24:"Toegevoegd aan volglijst";s:14:"addedwatchtext";s:627:"De pagina "$1" is aan uw [[Speciaal:Watchlist|volglijst]] toegevoegd.
+
+<p>Toekomstige wijzigingen aan deze pagina en overlegpagina zullen op [[Speciaal:Watchlist|uw volglijst]] vermeld worden.<br/>
+Ook zullen deze pagina's in het <b>vet</b> verschijnen in de [[Speciaal:Recentchanges|lijst van recente wijzigingen]] zodat u ze eenvoudiger kunt opmerken.</p>
+
+<p>Indien u een pagina wenst te verwijderen van uw volglijst ga dan naar de pagina en klik op "Niet meer volgen" in de menubalk.<br/>
+Er is ook op uw [[Speciaal:Watchlist|volglijst]] een pagina waar u ook kunt aanvinken welke pagina's u niet meer op uw volglijst wilt.";s:12:"removedwatch";s:25:"Van volglijst verwijderen";s:16:"removedwatchtext";s:46:"De pagina "$1" is van uw volglijst verwijderd.";s:5:"watch";s:4:"volg";s:13:"watchthispage";s:16:"Volg deze pagina";s:7:"unwatch";s:11:"niet volgen";s:15:"unwatchthispage";s:16:"Niet meer volgen";s:12:"notanarticle";s:15:"Is geen artikel";s:13:"watchnochange";s:65:"Geen van de pagina's op uw volglijst is in deze periode gewijzigd";s:12:"watchdetails";s:179:"Er staan $1 pagina's op uw volglijst (overlegpagina's niet meegeteld).
+In de aangegeven periode zijn $2 pagina's gewijzigd.
+$3. (<a href='$4'>Toon mijn volledige volglijst</a>.)";s:18:"watchmethod-recent";s:174:"De onderstaande lijst geeft de pagina's weer uit die lijst die tevens voorkomen op uw volglijst. Voor elk van die pagina's worden de gegevens van de laatste wijziging getoond";s:16:"watchmethod-list";s:179:"De onderstaande lijst geeft voor elk van de pagina's die door u worden gevolgd, en die zijn gewijzigd gedurende de geselecteerde periode, de gegevens van de laatste wijziging weer";s:13:"removechecked";s:11:"Verwijderen";s:17:"watchlistcontains";s:35:"U heeft $1 pagina's op uw volglijst";s:13:"watcheditlist";s:180:"Hier is een lijst van alle pagina's op uw volglijst. Vink de vakjes aan voor de pagina's die u van uw volglijst wilt verwijderen, en druk dan op 'Verwijderen' onderaan deze pagina.";s:15:"removingchecked";s:58:"De aangegeven pagina's worden van uw volglijst verwijderd.";s:13:"couldntremove";s:33:"Verwijdering van '$1' onmogelijk.";s:15:"iteminvalidname";s:20:"Incorrecte naam '$1'";s:6:"wlnote";s:62:"Getoond worden de laatste $1 wijzigingen in de laatste $2 uur.";s:10:"wlshowlast";s:34:"Toon de laatste $1 uur $2 dagen $3";s:7:"wlsaved";s:46:"Dit is een opgeslagen versie van uw volglijst.";s:10:"deletepage";s:18:"Pagina verwijderen";s:7:"confirm";s:8:"Bevestig";s:9:"excontent";s:14:"De inhoud was:";s:13:"exbeforeblank";s:50:"Voordat de pagina werd leeggemaakt, was de inhoud:";s:7:"exblank";s:24:"Dit was een lege pagina.";s:13:"confirmdelete";s:21:"Bevestig verwijdering";s:9:"deletesub";s:18:"(Verwijderen "$1")";s:14:"historywarning";s:132:"Waarschuwing: Deze pagina heeft een voorgeschiedenis. Overtuig uzelf ervan dat geen van de oudere versies een te behouden pagina is.";s:17:"confirmdeletetext";s:478:"U staat op het punt een pagina of afbeelding te verwijderen.
+
+Speciaal voor afbeeldingen opgepast; die kunt u '''*niet*''' terugzetten zoals dit wel kan met een pagina.
+
+Deze actie verwijdert alle inhoud en geschiedenis uit de database. Bevestig hieronder dat dit inderdaad uw bedoeling is, dat u de gevolgen begrijpt en dat uw verwijdering in overeenstemming is met de [[Wikipedia:Richtlijnen voor moderators|Richtlijnen voor moderators]] en de gebruiken op Wikipedia NL.";s:12:"confirmcheck";s:36:"Ja, ik wil dit voorgoed verwijderen.";s:14:"actioncomplete";s:14:"Actie voltooid";s:11:"deletedtext";s:73:""$1" is verwijderd. Zie $2 voor een overzicht van recente verwijderingen.";s:14:"deletedarticle";s:18:""$1" is verwijderd";s:10:"dellogpage";s:28:"Logboek_verwijderde_pagina's";s:14:"dellogpagetext";s:125:"Hieronder ziet u een lijst van de meest recentelijk verwijderde pagina's en afbeeldingen. Alle tijden zijn servertijd, UTC-0.";s:11:"deletionlog";s:28:"Logboek verwijderde pagina's";s:8:"reverted";s:23:"Eerdere versie hersteld";s:13:"deletecomment";s:23:"Reden voor verwijdering";s:13:"imagereverted";s:47:"De omzetting naar de oudere versie is geslaagd.";s:8:"rollback";s:26:"Wijzigingen ongedaan maken";s:14:"rollback_short";s:12:"Terugdraaien";s:12:"rollbacklink";s:12:"Terugdraaien";s:14:"rollbackfailed";s:39:"Ongedaan maken van wijzigingen mislukt.";s:12:"cantrollback";s:78:"Ongedaan maken van wijzigingen onmogelijk: Dit artikel heeft slechts 1 auteur.";s:13:"alreadyrolled";s:352:"Het is niet mogelijk om de wijziging van de pagina [[$1]]
+door [[Gebruiker:$2|$2]] ([[Overleg gebruiker:$2|Overleg]]) ongedaan te maken.
+
+Iemand anders heeft deze reeds hersteld tot een vorige versie van deze pagina of een andere bewerking gedaan.
+
+De meest recente bewerking is gedaan door [[Gebruiker:$3|$3]] ([[Overleg gebruiker:$3|Overleg]]).";s:11:"editcomment";s:38:"Commentaar bij de wijziging: <i>$1</i>";s:10:"revertpage";s:75:"Wijzigingen door $2 hersteld tot de versie na de laatste wijziging door $1.";s:14:"protectlogpage";s:14:"Protection_log";s:14:"protectlogtext";s:105:"Hier volgt een lijst van pagina's die recentelijk beveiligd zijn, of waarvan de beveiliging is opgeheven.";s:16:"protectedarticle";s:16:"[[$1]] beveiligd";s:18:"unprotectedarticle";s:28:"beveiliging [[$1]] opgeheven";s:10:"protectsub";s:15:"(Bescherm "$1")";s:18:"confirmprotecttext";s:44:"Wilt u deze pagina daadwerkelijk beschermen?";s:14:"confirmprotect";s:20:"Bevestig bescherming";s:14:"protectcomment";s:25:"Reden voor de bescherming";s:12:"unprotectsub";s:28:"(Beveiliging "$1" opgeheven)";s:20:"confirmunprotecttext";s:61:"Wilt u de bescherming van deze pagina daadwerkelijk opheffen?";s:16:"confirmunprotect";s:40:"Bevestig het opheffen van de bescherming";s:16:"unprotectcomment";s:39:"Reden voor opheffing van de beveiliging";s:13:"protectreason";s:15:"(vertel waarom)";s:8:"undelete";s:32:"Verwijderde pagina terugplaatsen";s:12:"undeletepage";s:46:"Verwijderde pagina's bekijken en terugplaatsen";s:16:"undeletepagetext";s:120:"De onderstaande pagina's zijn verwijderd, maar bevinden zich nog steeds in het archief, en kunnen teruggeplaatst worden.";s:15:"undeletearticle";s:32:"Verwijderde pagina terugplaatsen";s:17:"undeleterevisions";s:25:"$1 versies in het archief";s:15:"undeletehistory";s:250:"Als u een pagina terugplaatst, worden alle versies als oude versies teruggeplaatst. Als er al een nieuwe pagina met dezelfde naam is aangemaakt, zullen deze versies als oude versies worden teruggeplaatst, maar de huidige versie niet gewijzigd worden.";s:16:"undeleterevision";s:25:"Verwijderde versie van $1";s:11:"undeletebtn";s:14:"Terugplaatsen!";s:16:"undeletedarticle";s:23:""$1" is teruggeplaatst.";s:13:"undeletedtext";s:156:"Het artikel [[$1]] is teruggeplaatst. Zie [[Wikipedia:Logboek verwijderde pagina's]] voor een lijst van de meest recente verwijderingen en terugplaatsingen.";s:13:"contributions";s:19:"Bijdragen gebruiker";s:9:"mycontris";s:14:"Mijn bijdragen";s:10:"contribsub";s:7:"Voor $1";s:10:"nocontribs";s:63:"Geen wijzigingen gevonden die aan de gestelde criteria voldoen.";s:6:"ucnote";s:99:"Hieronder ziet u de laatste <b>$1</b> wijzigingen van deze gebruiker in de laatste <b>$2</b> dagen.";s:7:"uclinks";s:77:"Bekijk de laatste <b>$1</b> veranderingen; bekijk de laatste <b>$2</b> dagen.";s:5:"uctop";s:20:" (laatste wijziging)";s:13:"notargettitle";s:15:"Geen doelpagina";s:12:"notargettext";s:66:"U hebt niet gezegd voor welke pagina u deze functie wilt bekijken.";s:11:"linklistsub";s:24:"(lijst van verwijzingen)";s:9:"linkshere";s:43:"De volgende pagina's verwijzen hiernaartoe:";s:11:"nolinkshere";s:37:"Geen enkele pagina verwijst hierheen.";s:10:"isredirect";s:15:"redirect pagina";s:7:"blockip";s:19:"Gebruiker blokkeren";s:11:"blockiptext";s:1863:"Gebruik het onderstaande formulier om een bepaald IP-adres of een bepaalde gebruikersnaam de schrijftoegang te ontnemen.
+
+Via de website http://www.domainwhitepages.com kan u opzoeken wie achter een ip-adres zit. Zet de hostnaam ook in het veld met de reden. Dat maak het eenvoudiger de diverse gebruikers met hetzelfde ip-adres te onderscheiden.
+
+Gebruik deze optie spaarzaam en volgens de [[Wikipedia:Richtlijnen voor moderators|richtlijnen voor moderators]]. Het is bedoeld om vandalisme te voorkomen. Misbruik van deze mogelijkheid kan tot gevolg hebben dat uw moderatorschap wordt weggenomen.
+
+Velden:
+* ''{{msg:ipaddress}}'': welke gebruiker u wilt blokkeren
+* ''{{msg:ipbexpiry}}'': hoe lang de blokkering geldig blijft. Deze is in het GNU standard format, zoals beschreven in de [http://www.gnu.org/software/tar/manual/html_chapter/tar_7.html tar manual].
+**Voor een x-aantal minuten (bijvb. 15 minuten): <tt>15 min</tt>.
+**Voor een x-aantal uren (bijvb. 5 uur): <tt>5 hours</tt>.
+**Voor een x-aantal dagen (bijvb. 5 dagen): <tt>5 days</tt>.
+**Voor een x-aantal weken (bijvb. 5 weken): <tt>5 weeks</tt>.
+**Voor een x-aantal maanden (bijvb. 5 maanden): <tt>5 months</tt>.
+**Voor een x-aantal jaren (bijvb. 5 jaren): <tt>5 years</tt>.
+**Tot een bepaald tijdstip in [[Greenwich Mean Time|GMT]] (bijvoorbeeld tot 17u): <tt>17:00</tt>.
+**Tot een bepaalde datum (bijvb. 15 mei 2006): <tt>2006-05-15</tt>.
+**Ook kan er <tt>indefinite</tt> (onbepaald) of <tt>infinite</tt> (tot in der eeuwigheid) gebruikt worden.
+* ''{{msg:ipbreason}}'': de reden waarom u deze gebruiker blokkeert. Het is raadzaam hier een duidelijke reden in te vullen.
+
+Voor informatie over het blokkeren van een bereik van IP-adressen, zie [[meta:Range blocks|Range blocks]].
+Om een blokkering op te heffen zie [[Speciaal:Ipblocklist|Lijst van geblokkeerde gebruikers en IP-adressen]].
+
+----";s:9:"ipaddress";s:26:"IP-adres of gebruikersnaam";s:9:"ipbexpiry";s:7:"verloop";s:9:"ipbreason";s:5:"Reden";s:9:"ipbsubmit";s:23:"Blokkeer deze gebruiker";s:12:"badipaddress";s:47:"ongeldig IP-adres of onbestaande gebruikersnaam";s:13:"noblockreason";s:67:"U dient een reden op te geven voor het blokkeren van een gebruiker.";s:17:"blockipsuccesssub";s:17:"Blokkering gelukt";s:18:"blockipsuccesstext";s:92:""$1" is geblokkeerd.<br>
+Zie de [[speciaal:Ipblocklist|Lijst van geblokkeerde IP-adressen]].";s:9:"unblockip";s:21:"De-blokkeer gebruiker";s:13:"unblockiptext";s:111:"Gebruik het onderstaande formulier om terug schrijftoegang te geven aan een geblokkeerde gebruiker of IP-adres.";s:9:"ipusubmit";s:39:"Blokkering van deze gebruiker opheffen.";s:10:"ipusuccess";s:39:"Blokkering gebruiker "$1" is opgeheven.";s:11:"ipblocklist";s:49:"Lijst van geblokkeerde gebruikers en IP-adressen.";s:13:"blocklistline";s:44:"Op $1 (vervalt op $4) blokkeerde $2:<br>
+$3";s:9:"blocklink";s:8:"blokkeer";s:11:"unblocklink";s:11:"de-blokkeer";s:12:"contribslink";s:9:"bijdragen";s:11:"autoblocker";s:119:"U werd geblokkeerd omdat uw IP-adres overeenkomt met dat van "$1". Deze gebruiker werd geblokkeerd met als reden: "$2".";s:12:"blocklogpage";s:9:"Block_log";s:13:"blocklogentry";s:50:""$1" is geblokkeerd voor een periode van $2. Reden";s:12:"blocklogtext";s:246:"Hier ziet u een lijst van de recente blokkeringen en deblokkeringen. Automatische blokkeringen en deblokkeringen komen niet in het logboek. Zie de [[Speciaal:Ipblocklist|{{MSG:ipblocklist}}]] voor de lijst van op dit moment geblokkeerde adressen.";s:15:"unblocklogentry";s:18:""$1" gedeblokkeerd";s:20:"range_block_disabled";s:86:"De mogelijkheid voor moderatoren om een groep addressen te blokkeren is uitgeschakeld.";s:18:"ipb_expiry_invalid";s:22:"Ongeldige verlooptijd.";s:16:"ip_range_invalid";s:18:"Ongeldige IP serie";s:12:"proxyblocker";s:13:"Proxy blocker";s:16:"proxyblockreason";s:162:"Dit is een automatische preventieve blokkering omdat U gebruik maakt van een open proxyserver. Zie [[gebruiker:Proxy blocker|Proxy blocker]] voor meer informatie.";s:17:"proxyblocksuccess";s:9:"Geslaagd.";s:6:"lockdb";s:20:"Blokkeer de database";s:8:"unlockdb";s:35:"Blokkering van de database opheffen";s:10:"lockdbtext";s:221:"Waarschuwing: De database blokkeren heeft tot gevolg dat geen enkele gebruiker meer in staat is de pagina's te bewerken, hun voorkeuren te wijzigen of iets anders te doen waarvoor er wijzigingen in de database nodig zijn.";s:12:"unlockdbtext";s:253:"Het de-blokkeren van de database zal de gebruikers de mogelijkheid geven om wijzigingen aan pagina's op te slaan, hun voorkeuren te wijzigen en alle andere bewerkingen waarvoor er wijzigingen in de database nodig zijn. Is dit inderdaad wat u wilt doen?.";s:11:"lockconfirm";s:33:"Ja, ik wil de database blokkeren.";s:13:"unlockconfirm";s:36:"Ja, ik wil de database de-blokkeren.";s:7:"lockbtn";s:20:"Blokkeer de database";s:9:"unlockbtn";s:23:"De-blokkeer de database";s:13:"locknoconfirm";s:60:"U heeft niet het vakje aangevinkt om uw keuze te bevestigen.";s:16:"lockdbsuccesssub";s:29:"Blokkering database succesvol";s:18:"unlockdbsuccesssub";s:36:"Blokkering van de database opgeheven";s:17:"lockdbsuccesstext";s:130:"De database van Wikipedia NL is geblokkeerd.
+Vergeet niet de database opnieuw te de-blokkeren zodra u klaar bent met uw onderhoud.";s:19:"unlockdbsuccesstext";s:57:"Blokkering van de database van Wikipedia NL is opgeheven.";s:6:"asksql";s:14:"SQL raadplegen";s:10:"asksqltext";s:337:"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 server vaak extra belasten. Gelieve deze mogelijkheid daarom spaarzaam te gebruiken. Zie ook: [[Wikipedia:SQL opdrachten]].";s:11:"sqlislogged";s:31:"Alle SQL Queries worden gelogd.";s:8:"sqlquery";s:16:"Voer opdracht in";s:8:"querybtn";s:17:"Verstuur opdracht";s:10:"selectonly";s:77:"Opdrachten anders dan "SELECT" zijn voorbehouden aan Wikipedia ontwikkelaars.";s:15:"querysuccessful";s:18:"Opdracht succesvol";s:14:"makesysoptitle";s:58:"Verander een gebruiker in een moderator of een bureaucraat";s:13:"makesysoptext";s:475:"<!-- Dit formulier is enkel voor bureaucraten -->
+
+Met dit formulier kan u als bureaucraat de gebruikersrechten van gebruikers wijzigen.
+
+Het gebruik van deze functie is beperkt door de [[Wikipedia:Richtlijnen voor moderators|Richtlijnen voor moderators]]
+
+U kan;
+*van een gebruiker een moderator maken
+*van een moderator een bureaucraat maken
+
+#Vul de gebruikersnaam in van de gebruiker
+#Als die bureaucraat moet worden vink het vakje dan aan
+#En druk op de knop";s:13:"makesysopname";s:15:"Gebruikersnaam:";s:15:"makesysopsubmit";s:27:"Wijzig de gebruikersrechten";s:11:"makesysopok";s:41:"<b>Gebruiker '$1' is nu een moderator</b>";s:13:"makesysopfail";s:168:"<b>Het is niet gelukt om van gebruiker '$1' een moderator te maken. Kijk de schrijfwijze van de gebruikersnaam na. Geef enkel de naam in zonder 'gebruiker:' ervoor.</b>";s:17:"setbureaucratflag";s:43:"Maak van deze gebruiker ook een bureaucraat";s:13:"bureaucratlog";s:14:"Bureaucrat_log";s:18:"bureaucratlogentry";s:46:"Rechten van gebruiker "$1" aangepast naar "$2"";s:6:"rights";s:11:"Permissies:";s:15:"set_user_rights";s:27:"Gebruikersrechten aanpassen";s:15:"user_rights_set";s:36:"Rechten van gebruiker "$1" veranderd";s:15:"set_rights_fail";s:98:"<b>Gebruikersrechten voor "$1" konden niet worden aangepast. (Hebt u de naam juist ingevoerd?)</b>";s:9:"makesysop";s:55:"Maak van een gebruiker een moderator of een bureaucraat";s:8:"movepage";s:12:"Wijzig titel";s:12:"movepagetext";s:510:"Door middel van het onderstaande formulier kunt u de titel van een pagina veranderen. De voorgeschiedenis gaat zo niet verloren. De oude titel zal automatisch een doorverwijzing worden naar de nieuwe. (Deze doorverwijzing kan, zoals op alle artikels met een doorverwijzing, bewerkt worden).
+
+Een dergelijke verandering van de titel kan alleen worden uitegevoerd als
+*er geen pagina bestaat met de nieuwe titel
+*of als er op de pagina met de nieuwe titel slechts een redirect zonder verdere geschiedenis is.";s:16:"movepagetalktext";s:272:"De bijbehorende overlegpagina krijgt ook een nieuwe titel, maar '''niet''' in de volgende gevallen:
+* Als de pagina in een andere naamruimte wordt geplaatst
+* Als er al een niet-lege Overlegpagina bestaat onder de andere titel
+* Als u het onderstaande vinkje verwijdert";s:11:"movearticle";s:12:"Wijzig titel";s:11:"movenologin";s:14:"Niet aangemeld";s:15:"movenologintext";s:105:"U dient <a href="/wiki/Speciaal:Userlogin">aangemeld</a>
+te zijn om de titel van een pagina te wijzigen.";s:8:"newtitle";s:20:"Naar de nieuwe titel";s:11:"movepagebtn";s:14:"Titel wijzigen";s:12:"pagemovedsub";s:23:"Wijzigen titel geslaagd";s:13:"pagemovedtext";s:129:"Pagina "[[$1]]" is verplaatst naar "[[$2]]", inclusief de voorgeschiedenis.<br>
+"[[$1]]" is nu een doorverwijzing naar "[[$2]]".";s:13:"articleexists";s:102:"Er is reeds een pagina met deze titel of de titel is ongeldig. <br>Gelieve een andere titel te kiezen.";s:10:"talkexists";s:224:"De pagina zelf heeft een nieuwe titel, maar de Overlegpagina kon niet onder de nieuwe titel worden geplaatst, omdat onder de nieuwe titel al een niet-lege overlegpagina bestond. Combineer de overlegpagina's a.u.b. handmatig.";s:7:"movedto";s:18:"titel gewijzigd in";s:8:"movetalk";s:61:"Geef de "Overleg" pagina indien mogelijk ook een nieuwe titel";s:13:"talkpagemoved";s:70:"De bijhorende overlegpagina is nu ook onder de nieuwe titel te vinden.";s:16:"talkpagenotmoved";s:76:"De titel van de bijhorende overlegpagina is <strong>niet</strong> veranderd.";s:9:"1movedto2";s:28:"titel '$1' gewijzigd in '$2'";s:6:"export";s:10:"Exporteren";s:10:"exporttext";s:217:"De tekst en geschiedenis van een bepaalde pagina of groep pagina's kunnen in XML-formaat geëxporteerd worden. Dit kan daarna naar een andere MediaWiki-wiki geïmporteerd worden, verwerkt worden of simpelweg opgeslagen.";s:13:"exportcuronly";s:50:"Alleen de actuele versie, niet de voorgeschiedenis";s:11:"allmessages";s:16:"Standaardteksten";s:15:"allmessagestext";s:55:"Hier vindt u alle berichten in de MediaWiki-naamruimte:";s:14:"thumbnail-more";s:6:"Groter";s:12:"missingimage";s:58:"<table border="1"><tr><td>Afbeelding $1 ontbreekt.</table>";s:6:"import";s:19:"Pagina's importeren";s:10:"importtext";s:137:"Gebruik de Speciaal:Export optie in de wiki waar de informatie vandaan komt, sla het op uw eigen systeem op, en stuur het daarna hier op.";s:12:"importfailed";s:21:"Import is mislukt: $1";s:12:"importnotext";s:18:"Leeg of geen tekst";s:13:"importsuccess";s:23:"Importeren is geslaagd!";s:21:"importhistoryconflict";s:86:"Er zijn conflicten in de geschiedenis van de pagina (is misschien eerder geimporteerd)";s:16:"accesskey-search";s:1:"f";s:19:"accesskey-minoredit";s:1:"i";s:14:"accesskey-save";s:1:"s";s:17:"accesskey-preview";s:1:"p";s:33:"accesskey-compareselectedversions";s:1:"v";s:14:"tooltip-search";s:26:"Doorzoek deze wiki [alt-f]";s:17:"tooltip-minoredit";s:44:"Markeer dit als een kleine wijziging [alt-i]";s:12:"tooltip-save";s:29:"Sla uw wijzigingen op [alt-s]";s:15:"tooltip-preview";s:55:"Bekijk uw versie voor het opslaan. Gebruik dit! [alt-p]";s:31:"tooltip-compareselectedversions";s:60:"Toon de verschillen tussen de geselecteerde versies. [alt-v]";s:12:"Monobook.css";s:71:"/* edit this file to customize the monobook skin for the entire site */";s:12:"nodublincore";s:57:"Dublin Core RDF metadata is uitgeschakeld op deze server.";s:17:"nocreativecommons";s:62:"Creative Commons RDF metadata is uitgeschakeld op deze server.";s:13:"notacceptable";s:79:"De wikiserver kan de gegevens niet leveren in een vorm die uw client kan lezen.";s:9:"anonymous";s:35:"Anonieme gebruiker(s) van Wikipedia";s:8:"siteuser";s:21:"Wikipediagebruiker $1";s:14:"lastmodifiedby";s:48:"Deze pagina is het laatst bewerkt op $1 door $2.";s:3:"and";s:2:"en";s:13:"othercontribs";s:25:"Gebaseerd op werk van $1.";s:9:"siteusers";s:24:"Wikipediagebruiker(s) $1";s:19:"spamprotectiontitle";s:10:"Spamfilter";s:18:"spamprotectiontext";s:202:"De pagina die u wilde opslaan werd geblokkeerd door het spamfilter. Meestal wordt dit door een externe link veroorzaakt.
+
+Hier is een reguliere expressie met de patronen die momenteel geblokeerd worden:";s:16:"subcategorycount";s:46:"Er zijn $1 subcategoriën binnen deze categorie";s:20:"categoryarticlecount";s:39:"Er zijn $1 artikelen in deze categorie.";s:18:"usenewcategorypage";s:70:"1
+
+Set first character to "0" to disable the new category page layout.";s:11:"Monobook.js";s:3956:"/* tooltips and access keys */
+
+ta = new Object();
+
+ta['pt-userpage'] = new Array('.','Mijn gebruikerspagina');
+
+ta['pt-anonuserpage'] = new Array('.','Gebruikerspagina voor het IP-adres dat u gebruikt');
+
+ta['pt-mytalk'] = new Array('n','Mijn overlegpagina');
+
+ta['pt-anontalk'] = new Array('n','Overlegpagina van de anonieme gebruiker van dit IP-adres');
+
+ta['pt-preferences'] = new Array('','Mijn voorkeuren');
+
+ta['pt-watchlist'] = new Array('l','De lijst van pagina\'s die op de mijn volglijst staan');
+
+ta['pt-mycontris'] = new Array('y','Mijn bijdragen');
+
+ta['pt-login'] = new Array('o','U wordt van harte uitgenodigd om u aan te melden als gebruiker, maar e.e.a. is niet verplicht.');
+
+ta['pt-anonlogin'] = new Array('o','U wordt van harte uitgenodigd om u aan te melden als gebruiker, maar e.e.a. is niet verplicht.');
+
+ta['pt-logout'] = new Array('o','Afmelden');
+
+ta['ca-article'] = new Array('a','Laat de inhoud van deze pagina zien');
+
+ta['ca-talk'] = new Array('t','Laat de overlegtekst over deze pagina zien');
+
+ta['ca-edit'] = new Array('e','U kunt dze pagina bewerken. Gebruik a.u.b. de voorbeeldweergaveknop alvorens te bewaren');
+
+ta['ca-addsection'] = new Array('+','Voeg uw commentaar toe aan de overlegpagina.');
+
+ta['ca-viewsource'] = new Array('e','Deze pagina is beveiligd tegen wijigen. U kunt de pagina wel inzien.');
+
+ta['ca-history'] = new Array('h','Eerdere versies van deze pagina.');
+
+ta['ca-protect'] = new Array('=','Bescherm deze pagina tegen wijzigen');
+
+ta['ca-delete'] = new Array('d','Verwijder deze pagina');
+
+ta['ca-undelete'] = new Array('d','Herstel de inhoud van deze pagina voor de verwijdering');
+
+ta['ca-move'] = new Array('m','Geef deze pagina een andere titel');
+
+ta['ca-nomove'] = new Array('','U kunt deze pagina geen ander naam geven');
+
+ta['ca-watch'] = new Array('w','Voeg deze pagina toe aan uw volglijst');
+
+ta['ca-unwatch'] = new Array('w','Verwijder deze pagina toe van uw volglijst');
+
+ta['search'] = new Array('f','Doorzoek deze wikipedia');
+
+ta['p-logo'] = new Array('','Hoofdpagina-logo');
+
+ta['n-mainpage'] = new Array('z','Ga naar de Hoofdpagina');
+
+ta['n-portal'] = new Array('','Informatie over het project, wie wat hoe en waarom');
+
+ta['n-currentevents'] = new Array('','Achtergrondinformatie over actuele zaken');
+
+ta['n-recentchanges'] = new Array('r','Lijst van recente wijzigingen.');
+
+ta['n-randompage'] = new Array('x','Laat een willekeurige pagina zien');
+
+ta['n-help'] = new Array('','Hulpinformatie over Wikipedia.');
+
+ta['n-sitesupport'] = new Array('','Ondersteun ons financieel');
+
+ta['t-whatlinkshere'] = new Array('j','Lijst van alle pagina\'s die hier naar verwijzen');
+
+ta['t-recentchangeslinked'] = new Array('k','Recente wijzigineg die naar deze pagina verwijzen');
+
+ta['feed-rss'] = new Array('','RSS feed voor deze pagina (wat dat ook moge wezen)');
+
+ta['feed-atom'] = new Array('','Atom feed voor deze pagina (wat dat ook moge wezen)');
+
+ta['t-contributions'] = new Array('','Lijst met bijdragen van deze gebruiker');
+
+ta['t-emailuser'] = new Array('','Stuur Email naar deze gebruiker');
+
+ta['t-upload'] = new Array('u','Upload plaatjes en/of audio materiaal');
+
+ta['t-specialpages'] = new Array('q','Lijst van alle speciale pagina\'s');
+
+ta['ca-nstab-main'] = new Array('c','Laat de artikeltekst zien');
+
+ta['ca-nstab-user'] = new Array('c','Laat de gebruikerspagina zien');
+
+ta['ca-nstab-media'] = new Array('c','Laat de mediatekst zien');
+
+ta['ca-nstab-special'] = new Array('','Dit is een speciale pagina die u niet kunt wijzigen.');
+
+ta['ca-nstab-wp'] = new Array('a','Laat de projectpagina zien');
+
+ta['ca-nstab-image'] = new Array('c','Laat de afbeeldingenpagina zien');
+
+ta['ca-nstab-mediawiki'] = new Array('c','Laat de systeemtekst pagina zien');
+
+ta['ca-nstab-template'] = new Array('c','Laat de sjabloonpagina zien');
+
+ta['ca-nstab-help'] = new Array('c','Laat de helppagina zien');
+
+ta['ca-nstab-category'] = new Array('c','Laat de rubriekpagina zien');";} \ No newline at end of file
diff --git a/languages/wikipedia/pl.lang b/languages/wikipedia/pl.lang
new file mode 100644
index 000000000000..a8f747089fe2
--- /dev/null
+++ b/languages/wikipedia/pl.lang
@@ -0,0 +1,331 @@
+MediaWiki 1.3.0beta3 language file
+a:699:{s:10:"categories";s:15:"Kategorie stron";s:8:"category";s:9:"kategoria";s:15:"category_header";s:26:"Artykuły w kategorii "$1"";s:13:"subcategories";s:12:"Podkategorie";s:9:"linktrail";s:18:"/^([a-z]+)(.*)$/sD";s:8:"mainpage";s:15:"Strona główna";s:12:"mainpagetext";s:41:"Instalacja oprogramowania powiodła się.";s:17:"mainpagedocfooter";s:214:"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.";s:6:"portal";s:1:"-";s:10:"portal-url";s:26:"Wikipedia:Community Portal";s:5:"about";s:11:"O Wikipedii";s:14:"aboutwikipedia";s:11:"O Wikipedii";s:9:"aboutpage";s:21:"Wikipedia:O_Wikipedii";s:7:"article";s:8:"artykuł";s:4:"help";s:5:"Pomoc";s:8:"helppage";s:15:"Wikipedia:Pomoc";s:15:"wikititlesuffix";s:9:"Wikipedia";s:10:"bugreports";s:18:"Raport o błędach";s:14:"bugreportspage";s:17:"Wikipedia:Błędy";s:11:"sitesupport";s:16:"Dary pieniężne";s:3:"faq";s:3:"FAQ";s:7:"faqpage";s:13:"Wikipedia:FAQ";s:8:"edithelp";s:14:"Pomoc w edycji";s:9:"newwindow";s:21:"(opens in new window)";s:12:"edithelppage";s:31:"Wikipedia:Jak_edytować_stronę";s:6:"cancel";s:6:"Anuluj";s:6:"qbfind";s:7:"Znajdź";s:8:"qbbrowse";s:13:"Przeglądanie";s:6:"qbedit";s:6:"Edycja";s:13:"qbpageoptions";s:12:"Opcje strony";s:10:"qbpageinfo";s:9:"O stronie";s:11:"qbmyoptions";s:10:"Moje opcje";s:14:"qbspecialpages";s:16:"strony specjalne";s:13:"moredotdotdot";s:10:"Więcej...";s:6:"mypage";s:11:"Moja strona";s:6:"mytalk";s:13:"Moja dyskusja";s:8:"anontalk";s:16:"Dyskusja tego IP";s:10:"navigation";s:9:"nawigacja";s:13:"currentevents";s:1:"-";s:11:"disclaimers";s:17:"Informacje prawne";s:14:"disclaimerpage";s:44:"Wikipedia:Zrzeczenie_się_odpowiedzialności";s:14:"errorpagetitle";s:6:"Błąd";s:8:"returnto";s:21:"Wróć do strony: $1.";s:13:"fromwikipedia";s:33:"Z Wikipedii, wolnej encyklopedii.";s:13:"whatlinkshere";s:10:"Linkujące";s:6:"search";s:6:"Szukaj";s:2:"go";s:2:"OK";s:7:"history";s:15:"Historia strony";s:13:"history_short";s:8:"historia";s:16:"printableversion";s:15:"Wersja do druku";s:4:"edit";s:6:"edytuj";s:12:"editthispage";s:6:"Edytuj";s:6:"delete";s:5:"usuń";s:14:"deletethispage";s:5:"Usuń";s:14:"undelete_short";s:8:"Odtwórz";s:7:"protect";s:10:"zabezpiecz";s:15:"protectthispage";s:10:"Zabezpiecz";s:9:"unprotect";s:10:"odbezpiecz";s:17:"unprotectthispage";s:10:"Odbezpiecz";s:7:"newpage";s:11:"Nowa strona";s:8:"talkpage";s:8:"Dyskusja";s:11:"specialpage";s:16:"strona specjalna";s:13:"personaltools";s:14:"Personal tools";s:11:"postcomment";s:9:"Skomentuj";s:10:"addsection";s:1:"+";s:11:"articlepage";s:16:"Strona artykułu";s:11:"subjectpage";s:18:"Strona dyskutowana";s:4:"talk";s:8:"dyskusja";s:7:"toolbox";s:10:"narzędzia";s:8:"userpage";s:18:"Strona wikipedysty";s:13:"wikipediapage";s:20:"Strona metaartykułu";s:9:"imagepage";s:14:"Strona grafiki";s:12:"viewtalkpage";s:15:"Strona dyskusji";s:14:"otherlanguages";s:18:"W innych językach";s:14:"redirectedfrom";s:20:"(Przekierowano z $1)";s:12:"lastmodified";s:39:"Tę stronę ostatnio zmodyfikowano o $1";s:9:"viewcount";s:30:"Tę stronę obejrzano $1 razy;";s:9:"copyright";s:37:"Treść udostępniana na licencji $1.";s:9:"poweredby";s:90:"Wikipedia is powered by [http://www.mediawiki.org/ MediaWiki], an open source wiki engine.";s:13:"printsubtitle";s:27:"(z http://pl.wikipedia.org)";s:13:"protectedpage";s:20:"Strona zabezpieczona";s:14:"administrators";s:25:"Wikipedia:Administratorzy";s:10:"sysoptitle";s:38:"Wymagane prawa dostępu administratora";s:9:"sysoptext";s:95:"Ta operacja może być wykonana tylko przez
+użytkowania o statusie "administrator".
+Zobacz $1.";s:14:"developertitle";s:35:"Wymagane prawa dostępu Programisty";s:13:"developertext";s:92:"Ta operacja może być wykonana tylko przez
+użytkownika o prawach "Programisty".
+Zobacz $1.";s:15:"bureaucrattitle";s:40:"Potrzebne są uprawnienia ''Biurokraty''";s:14:"bureaucrattext";s:80:"Czynność tę może wykonać jedynie administrator o prawach <i>Biurokraty</i>.";s:6:"nbytes";s:10:"$1 bajtów";s:2:"ok";s:2:"OK";s:9:"sitetitle";s:9:"Wikipedia";s:9:"pagetitle";s:14:"$1 - Wikipedia";s:12:"sitesubtitle";s:18:"Wolna Encyklopedia";s:13:"retrievedfrom";s:15:"Źródło: "$1"";s:11:"newmessages";s:8:"Masz $1.";s:15:"newmessageslink";s:16:"nowe wiadomości";s:11:"editsection";s:6:"Edytuj";s:3:"toc";s:12:"Spis treści";s:7:"showtoc";s:6:"pokaż";s:7:"hidetoc";s:7:"schowaj";s:13:"thisisdeleted";s:18:"Pokaż/odtwórz $1";s:11:"restorelink";s:29:"skasowane wersje (w sumie $1)";s:9:"feedlinks";s:5:"Feed:";s:10:"nstab-main";s:8:"artykuł";s:10:"nstab-user";s:18:"strona Wikipedysty";s:11:"nstab-media";s:5:"Media";s:13:"nstab-special";s:7:"Special";s:8:"nstab-wp";s:11:"strona meta";s:11:"nstab-image";s:7:"Grafika";s:15:"nstab-mediawiki";s:7:"treść";s:14:"nstab-template";s:7:"Szablon";s:10:"nstab-help";s:5:"pomoc";s:14:"nstab-category";s:9:"kategoria";s:12:"nosuchaction";s:22:"Nie ma takiej operacji";s:16:"nosuchactiontext";s:72:"Oprogramowanie Wikipedii nie rozpoznaje
+operacji takiej jak podana w URL";s:17:"nosuchspecialpage";s:31:"Nie ma takiej strony specjalnej";s:17:"nospecialpagetext";s:65:"Oprogramowanie Wikipedii nie rozpoznaje takiej
+specjalnej strony.";s:5:"error";s:6:"Błąd";s:13:"databaseerror";s:18:"Błąd bazy danych";s:11:"dberrortext";s:316:"Wystąpił błąd składni w zapytaniu do bazy danych.
+Mogło to być spowodowane przez złe sformułowanie zapytania (zobacz $5)
+albo przez błąd w oprogramowaniu.
+Ostatnie, nieudane zapytanie to:
+<blockquote><tt>$1</tt></blockquote>
+wysłane przez funkcję "<tt>$2</tt>".
+MySQL zgłosił błąd "<tt>$3: $4</tt>".";s:13:"dberrortextcl";s:166:"Wystąpił błąd składni w zapytaniu do bazy danych.
+Ostatnie, nieudane zapytanie to:
+"$1"
+wywołane zostało przez funkcję "$2".
+MySQL zgłosił błąd "$3: $4".
+";s:9:"noconnect";s:108:"Wikipedia ma chwilowo problemy techniczne. Nie można połączyć się z serwerem bazy danych. Przepraszamy!";s:4:"nodb";s:36:"Nie można odnaleźć bazy danych $1";s:11:"cachederror";s:106:"Poniższy tekst strony jest kopią znajdującą się w pamięci podręcznej i może być już niekatualny.";s:8:"readonly";s:28:"Baza danych jest zablokowana";s:15:"enterlockreason";s:68:"Podaj powód zablokowania bazy oraz szacunkowy czas
+jej odblokowania";s:12:"readonlytext";s:336:"Baza danych Wikipedii jest w tej chwili zablokowana
+- nie można wprowadzać nowych artykułów ani modyfikować istniejących. Powodem
+są prawdopodobnie czynności administracyjne. Po ich zakończeniu przywrócona
+zostanie pełna funkcjonalność bazy.
+Administrator, który zablokował bazę, podał następujące wyjaśnienie:
+<p>$1";s:14:"missingarticle";s:393:"Oprogramowanie nie odnalazło tekstu strony,
+która powinna się znajdować w bazie, tzn. strony "$1".
+<p>Zazwyczaj zdarza siÄ™ to, gdy wybrane zostanie Å‚Ä…cze
+do skasowanej strony, np. w starszej wersji innej ze stron.
+<p>Inne okoliczności świadczyłyby o tym, że w oprogramowaniu jest błąd.
+W takim przypadku zgłoś, proszę, ten fakt administratorowi
+podając także powyższy adres.";s:13:"internalerror";s:18:"Błąd wewnętrzny";s:13:"filecopyerror";s:41:"Nie można skopiować pliku "$1" do "$2".";s:15:"filerenameerror";s:45:"Nie można zmienić nazwy pliku "$1" na "$2".";s:15:"filedeleteerror";s:32:"Nie można skasować pliku "$1".";s:12:"filenotfound";s:32:"Nie można znaleźć pliku "$1".";s:10:"unexpected";s:36:"Niespodziewana wartość: "$1"="$2".";s:9:"formerror";s:38:"Błąd: nie można wysłać formularza";s:15:"badarticleerror";s:51:"Dla tej strony ta operacja nie może być wykonana.";s:12:"cannotdelete";s:48:"Nie można skasować podanej strony lub obrazka.";s:8:"badtitle";s:18:"Niepoprawny tytuł";s:12:"badtitletext";s:113:"Podano niepoprawny tytuł strony. Prawdopodobnie zawiera
+znaki, których użycie jest zabronione, lub jest pusty.";s:12:"perfdisabled";s:277:"By odciążyć serwer czasowo zablokowaliśmy wykonanie tej czynności. Niestety, nie jesteśmy w stanie określić, kiedy ta funkcja zostanie znów uruchomiona. Możesz pytać na wikipediowym kanale IRC:<br>
+ /server irc.freenode.net<br>
+ /join #wikipedia<br>
+Przepraszamy!";s:15:"perfdisabledsub";s:20:"Oto kopia z dnia $1:";s:10:"perfcached";s:85:"Poniższe dane są kopią z pamięci podręcznej i mogą nie być do końca aktualne:";s:20:"wrong_wfQuery_params";s:73:"Niewłaściwe parametry dla wfQuery()<br>
+Funkcja: $1<br>
+Zapytanie: $2";s:10:"viewsource";s:17:"Tekst źródłowy";s:13:"protectedtext";s:215:"Wyłączono możliwość edycji tej strony; istnieje kilka powodów
+dla których jest to robione - zobacz [[Wikipedia:Strona_zabezpieczona]]
+
+Tekst źródłowy strony można w dalszym ciągu podejrzeć i skopiować.";s:18:"seriousxhtmlerrors";s:56:"There were serious xhtml markup errors detected by tidy.";s:11:"logouttitle";s:24:"Wylogowanie użytkownika";s:10:"logouttext";s:158:"Wylogowano Cię.
+Możesz kontynuować pracę z Wikipedią jako niezarejestrowany użytkownik
+albo zalogować się ponownie jako ten sam lub inny użytkownik.
+";s:15:"welcomecreation";s:108:"<h2>Witaj, $1!</h2><p>Właśnie utworzyliśmy dla Ciebie konto.
+Nie zapomnij dostosować <i>preferencji</i>.";s:14:"loginpagetitle";s:10:"User login";s:8:"yourname";s:11:"Twój login";s:12:"yourpassword";s:12:"Twoje hasło";s:17:"yourpasswordagain";s:15:"Powtórz hasło";s:12:"newusersonly";s:26:" (tylko nowi użytkownicy)";s:18:"remembermypassword";s:38:"Pamiętaj moje hasło między sesjami.";s:12:"loginproblem";s:61:"<b>Są problemy z Twoim logowaniem.</b><br>Spróbuj ponownie!";s:15:"alreadyloggedin";s:63:"<font color=red><b>$1, jesteś już zalogowany!</b></font><br>
+";s:5:"login";s:12:"Zaloguj mnie";s:11:"loginprompt";s:62:"Ciasteczka są niezbędne, żeby Cię zalogować do Wikipedii.";s:9:"userlogin";s:9:"Logowanie";s:6:"logout";s:12:"Wyloguj mnie";s:10:"userlogout";s:11:"Wylogowanie";s:11:"notloggedin";s:14:"Brak logowania";s:13:"createaccount";s:19:"Załóż nowe konto";s:17:"createaccountmail";s:22:"pocztą elektroniczną";s:9:"badretype";s:48:"Wprowadzone hasła różnią się między sobą.";s:10:"userexists";s:83:"Wybrana przez Ciebie nazwa użytkownika jest już zajęta. Wybierz, proszę, inną.";s:9:"youremail";s:13:"Twój e-mail*";s:12:"yourrealname";s:17:"Imię i nazwisko*";s:8:"yournick";s:12:"Twój podpis";s:12:"emailforlost";s:262:"* Wpisanie adresu e-mailowego nie jest obowiązkowe. Pozwala to jednak innym użytkownikom skontaktowanie się z Tobą bez jawnej znajomości Twojego adresu. Przyda się także, gdy zapomnisz hasła - możesz wtedy poprosić o przesłanie nowego na podany adres.";s:19:"prefs-help-userdata";s:377:"* <strong>imię i nazwisko</strong> (nieobowiązkowo): jeśli podasz te dane, będą one używane do podpisywania Twojej pracy w Wikipedii<br/>
+* <strong>Email</strong> (nieobowiązkowo): umożliwia kontakt z Tobą nie zmuszając Cię do upubliczniania Twojego adresu. Ta informacja przydaje się również, gdy zapomnisz hasła; Wikipedia będzie Ci je wtedy mogła przysłać";s:10:"loginerror";s:16:"Błąd logowania";s:12:"nocookiesnew";s:218:"Konto użytkownika zostało utworzone, ale nie jesteś zalogowany. Wikipedia używa ciasteczek do logowania. Masz wyłączone ciasteczka. Żeby się zalogować odblokuj ciasteczka i podaj nazwę i hasło swojego konta.";s:14:"nocookieslogin";s:137:"Wikipedia używa ciasteczek żeby zalogować użytkownika. Masz zablokowaną obsługę ciasteczek. Spróbuj ponownie po ich odblokowaniu.";s:6:"noname";s:40:"To nie jest poprawna nazwa użytkownika.";s:17:"loginsuccesstitle";s:15:"Udane logowanie";s:12:"loginsuccess";s:39:"Zalogowano Cię do Wikipedii jako "$1".";s:10:"nosuchuser";s:121:"Nie ma użytkowniku nazywającego się "$1".
+Sprawdź pisownię lub użyj poniższego formularza by utworzyć nowe konto.";s:13:"wrongpassword";s:69:"Podane przez Ciebie hasło jest nieprawidłowe. Spróbuj jeszcze raz.";s:14:"mailmypassword";s:22:"Wyślij mi nowe hasło";s:21:"passwordremindertitle";s:29:"Wikipedia przypomina o haśle";s:20:"passwordremindertext";s:226:"Ktoś (prawdopodobnie Ty, spod adresu $1)
+poprosił od nas o wysłanie nowego hasła dostępu do Wikipedii.
+Aktualne hasło dla użytkownika "$2" to "$3".
+Najlepiej będzie jak zalogujesz się teraz i od razu zmienisz hasło.";s:7:"noemail";s:56:"W bazie nie ma adresu e-mailowego dla użytkownika "$1".";s:12:"passwordsent";s:106:"Nowe hasło zostało wysłane na adres e-mailowy użytkownika "$1"
+Po otrzymaniu go zaloguj się ponownie.";s:8:"loginend";s:6:"&nbsp;";s:9:"mailerror";s:43:"Przy wysyłaniu maila nastąpił błąd: $1";s:11:"bold_sample";s:19:"Tekst wytłuszczony";s:8:"bold_tip";s:19:"Tekst wytłuszczony";s:13:"italic_sample";s:15:"Tekst pochylony";s:10:"italic_tip";s:15:"Tekst pochylony";s:11:"link_sample";s:12:"Tytuł linku";s:8:"link_tip";s:16:"Link wewnętrzny";s:14:"extlink_sample";s:33:"http://www.example.com link title";s:11:"extlink_tip";s:49:"Link zewnętrzny (pamiętaj o prefiksie http:// )";s:15:"headline_sample";s:16:"Tekst nagłówka";s:12:"headline_tip";s:16:"Level 2 headline";s:11:"math_sample";s:29:"W tym miejscu wprowadź wzór";s:8:"math_tip";s:26:"Wzór matematyczny (LaTeX)";s:13:"nowiki_sample";s:45:"W tym miejscu wprowadź niesformatowany tekst";s:10:"nowiki_tip";s:26:"Zignoruj formatowanie wiki";s:12:"image_sample";s:12:"Przyklad.jpg";s:9:"image_tip";s:27:"Obrazek osadzony (embedded)";s:12:"media_sample";s:12:"Przyklad.mp3";s:9:"media_tip";s:13:"Link do pliku";s:7:"sig_tip";s:34:"Twój podpis wraz z datą i czasem";s:6:"hr_tip";s:35:"Pozioma linia (używaj oszczędnie)";s:7:"infobox";s:47:"Użyj przycisku by wstawić przykładowy tekst.";s:13:"infobox_alert";s:135:"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";s:7:"summary";s:10:"Opis zmian";s:7:"subject";s:16:"Temat/nagłówek";s:9:"minoredit";s:22:"To jest drobna zmiana.";s:9:"watchthis";s:8:"Obserwuj";s:11:"savearticle";s:6:"Zapisz";s:7:"preview";s:8:"Podgląd";s:11:"showpreview";s:8:"Podgląd";s:12:"blockedtitle";s:28:"Użytkownik jest zablokowany";s:11:"blockedtext";s:211:"Twoje konto lub adres IP zostały zablokowane przez $1.
+Podany powód to:<br>$2.<p>W celu wyjaśnienia sprawy zablokowania możesz się skontaktować z $1 lub innym
+[[Wikipedia:Administratorzy|administratorem]].";s:18:"whitelistedittitle";s:36:"Przed edycją musisz się zalogować";s:17:"whitelistedittext";s:79:"Żeby móc edytować artykuły, musisz się [[Specjalna:Userlogin|zalogować]].";s:18:"whitelistreadtitle";s:42:"Przed przeczytaniem musisz się zalogować";s:17:"whitelistreadtext";s:54:"You have to [[Special:Userlogin|login]] to read pages.";s:17:"whitelistacctitle";s:31:"Nie masz prawa założyć konta";s:16:"whitelistacctext";s:127:"Aby móc zakładać konta na tej Wiki musisz [[Specjalna:Userlogin|zalogować się]] i ponadto mieć przyznane specjalne prawa.";s:13:"loginreqtitle";s:22:"musisz się zalogować";s:12:"loginreqtext";s:57:"You must [[special:Userlogin|login]] to view other pages.";s:12:"accmailtitle";s:16:"Hasło wysłane.";s:11:"accmailtext";s:56:"Hasło użytkownika '$1' zostało wysłane pod adres $2.";s:10:"newarticle";s:6:"(Nowy)";s:14:"newarticletext";s:899:"Nie ma jeszcze artykułu o tym tytule, dlatego link był oznakowany czerwonym kolorem (znakiem zapytania). Jeśli chcesz pomóc w rozwoju [[Wikipedia|Wikipedii]], możesz napisać go poniżej. Jeśli nie - nic umieszczaj nic, wciśnij po prostu "Wstecz". <br><small>Nie dopisuj [[Wikipedia:Głupie dowcipy i czysty bezsens|tekstów nieencyklopedycznych]], [[Wikipedia:prawa autorskie|cudzych]] ani reklamowych! Jeśli wklejasz swój tekst opublikowany gdzieś wcześniej, '''musisz''' w polu "Opis zmian" potwierdzić, że masz do niego [[prawa autorskie]]. '''Wpisy niezgodne z tymi [[Wikipedia:Zasady|zasadami]] są natychmiast usuwane.''' Wpisy z nimi zgodne są doceniane!<br>'''[[Wikipedia:Tworzenie linków na Wikipedii|Linki do innych haseł]]:''' [[hasło]], ''[[hasło]]wy'', '''[[hasło|hasłami]]''' zapisujemy jako <nowiki>[[hasło]], ''[[hasło]]wy'', '''[[hasło|hasłami]]'''</nowiki>";s:12:"talkpagetext";s:31:"<!-- MediaWiki:talkpagetext -->";s:16:"anontalkpagetext";s:486:"---- ''To jest strona dyskusyjna dla użytkowników anonimowych - takich, którzy nie mają jeszcze swojego konta na [[Wikipedia|Wikipedii]] lub nie chcą go w tej chwili używać. By ich identyfikować używamy [[IP|numerów IP]]. Jeśli jesteś anonimowym użytkownikiem i wydaje Ci się, że zamieszczone tu komentarze nie są skierowane do Ciebie, [[Specjalna:Userlogin|utwórz proszę konto i/albo zaloguj się]] - dzięki temu unikniesz w przyszłości podobnych nieporozumień.''";s:13:"noarticletext";s:78:"(Nie ma jeszcze artykułu o tym tytule. Wybierz ''Edytuj'' by go rozpocząć.)";s:14:"clearyourcache";s:214:"'''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''.";s:22:"usercssjsyoucanpreview";s:90:"<strong>Tip:</strong> Use the 'Show preview' button to test your new css/js before saving.";s:14:"usercsspreview";s:108:"'''Pamiętaj, że to na razie tylko podgląd Twojego arkusza stylów - nic jeszcze nie zostało zapisane!'''";s:13:"userjspreview";s:100:"'''Remember that you are only testing/previewing your user javascript, it has not yet been saved!'''";s:7:"updated";s:15:"(Zmodyfikowano)";s:4:"note";s:24:"<strong>Uwaga:</strong> ";s:11:"previewnote";s:63:"To jest tylko podgląd - artykuł nie został jeszcze zapisany!";s:15:"previewconflict";s:132:"Wersja podglądana odnosi się do tekstu
+z górnego pola edycji. Tak będzie wyglądać strona jeśli zdecydujesz się ją zapisać.";s:7:"editing";s:14:"Edytujesz "$1"";s:11:"sectionedit";s:11:" (fragment)";s:11:"commentedit";s:12:" (komentarz)";s:12:"editconflict";s:19:"Konflikt edycji: $1";s:15:"explainconflict";s:363:"Ktoś zdążył wprowadzić swoją wersję artykułu
+w trakcie Twojej edycji.
+Górne pole edycji zawiera tekst strony aktualnie zapisany w bazie danych.
+Twoje zmiany znajdujÄ… siÄ™ w dolnym polu edycji.
+By wprowadzić swoje zmiany musisz zmodyfikować tekst z górnego pola.
+<b>Tylko</b> tekst z górnego pola będzie zapisany w bazie gdy wciśniesz
+"Zapisz".
+<p>";s:8:"yourtext";s:11:"Twój tekst";s:13:"storedversion";s:15:"Zapisana wersja";s:10:"editingold";s:196:"<font color="red"><strong>OSTRZEŻENIE: Edytujesz inną niż bieżąca wersję tej strony. Sprawdź, czy nie gubisz w ten sposób wartościowych informacji z późniejszych wersji.</strong></font>";s:8:"yourdiff";s:9:"Różnice";s:16:"copyrightwarning";s:630:"Proszę pamiętać o tym, że przyjmuje się, iż wszelki
+wkład do Wikipedii jest udostępniany na zasadach <i>GNU Free Documentation License</i>
+(szczegóły w $1). <br>Jeśli nie chcesz, żeby Twój tekst był dowolnie zmieniany przez każdego i rozpowszechniany bez ograniczeń, nie umieszczaj go w Wikipedii. Niniejszym jednocześnie oświadczasz, że ten tekst jest Twoim dziełem lub pochodzi z materiałów dostępnych na zasadach <i>public domain</i> albo
+licencji <i>GNU Free Documentation License</i> lub kompatybilnej.
+<br><strong>PROSZĘ NIE UÅ»YWAĆ BEZ POZWOLENIA MATERIAÅÓW OBJĘTYCH PRAWEM
+AUTORSKIM!</strong>";s:15:"longpagewarning";s:223:"UWAGA: Ta strona ma $1 kilobajt-y/-ów; w przypadku niektórych
+przeglądarek mogą wystąpić problemy w edycji stron mających więcej niż 32 kilobajty.
+Jeśli to możliwe, spróbuj podzielić tekst na mniejsze części.";s:15:"readonlywarning";s:231:"UWAGA: Baza danych została chwilowo zablokowana do celów
+administracyjnych. Nie można więc na razie zapisać nowej wersji
+artykułu. Proponujemy przenieść jej tekst do prywatnego pliku
+(wytnij/wklej) i zachować na później.";s:20:"protectedpagewarning";s:252:"UWAGA: Modyfikacja tej strony została zablokowana.
+Mogą ją edytować jedynie użytkownicy z prawami administracyjnymi.
+Upewnij się, że postępujesz zgodnie z
+<a href='/wiki/Wikipedia:Blokowanie_stron'>zasadami dotyczÄ…cymi
+zablokowanych stron</a>.";s:10:"revhistory";s:20:"Historia modyfikacji";s:9:"nohistory";s:40:"Ta strona nie ma swojej historii edycji.";s:11:"revnotfound";s:31:"Wersja nie została odnaleziona";s:15:"revnotfoundtext";s:134:"Ta (starsza) wersja strony nie może zostać odnaleziona.
+Sprawdź proszę URL użyty przez Ciebie by uzyskać dostęp do tej strony.
+";s:8:"loadhist";s:30:"Pobieranie historii tej strony";s:10:"currentrev";s:15:"Aktualna wersja";s:12:"revisionasof";s:16:"Wersja z dnia $1";s:3:"cur";s:5:"bież";s:4:"next";s:9:"następna";s:4:"last";s:5:"poprz";s:4:"orig";s:9:"oryginał";s:10:"histlegend";s:115:"Legenda: (bież) = różnice z wersją bieżącą,
+(poprz) = różnice z wersją poprzedzającą, M = drobne zmiany";s:10:"difference";s:28:"(Różnice między wersjami)";s:10:"loadingrev";s:36:"pobieranie wersji w celu porównania";s:6:"lineno";s:9:"Linia $1:";s:11:"editcurrent";s:36:"Edytuj bieżącą wersję tej strony";s:25:"selectnewerversionfordiff";s:37:"Select a newer version for comparison";s:25:"selectolderversionfordiff";s:38:"Select an older version for comparison";s:23:"compareselectedversions";s:24:"porównaj wybrane wersje";s:13:"searchresults";s:19:"Wyniki wyszukiwania";s:14:"searchhelppage";s:24:"Wikipedia:Przeszukiwanie";s:18:"searchingwikipedia";s:24:"Przeszukiwanie Wikipedii";s:16:"searchresulttext";s:67:"Aby dowiedzieć się więcej o przeszukiwaniu Wikipedii, zobacz $1.";s:11:"searchquery";s:18:"Dla zapytania "$1"";s:8:"badquery";s:28:"Źle sformułowane zapytanie";s:12:"badquerytext";s:154:"Nie można zrealizować Twojego zapytania.
+Prawdopodobna przyczyna to obecność słowa krótszego niż trzyliterowe.
+Spróbuj, proszę, innego zapytania.";s:11:"matchtotals";s:87:"Zapytanie "$1", liczba znalezionych tytułów: $2,
+liczba znalezionych artykułów: $3.";s:9:"nogomatch";s:82:"Nie istnieją strony o dokładnie takim tytule. Spróbuj pełnego przeszukiwania. ";s:12:"titlematches";s:23:"Znaleziono w tytułach:";s:14:"notitlematches";s:26:"Nie znaleziono w tytułach";s:11:"textmatches";s:23:"Znaleziono na stronach:";s:13:"notextmatches";s:31:"Nie znaleziono w tekście stron";s:5:"prevn";s:13:"poprzednie $1";s:5:"nextn";s:12:"następne $1";s:12:"viewprevnext";s:22:"Zobacz ($1) ($2) ($3).";s:14:"showingresults";s:61:"Oto lista <b>$1</b> pozycji, poczynając od numeru <b>$2</b>.";s:17:"showingresultsnum";s:61:"Oto lista <b>$3</b> pozycji, poczynając od numeru <b>$2</b>.";s:9:"nonefound";s:341:"<strong>Uwaga</strong>: brak rezultatów wyszukiwania
+spowodowany jest bardzo często szukaniem najpopularniejszych słów, takich jak
+"jest" czy "nie", które nie są indeksowane, albo z powodu podania w
+zapytaniu więcej niż jednego słowa (na liście odnalezionych stron znajdą się
+tylko te, które zawierają wszystkie podane słowa).";s:11:"powersearch";s:6:"Szukaj";s:15:"powersearchtext";s:89:"
+Szukaj w przestrzeniach nazw :<br>
+$1<br>
+$2 Pokaż przekierowania Szukany tekst $3 $9";s:14:"searchdisabled";s:276:"<p>Ze względu na duże obciążenie serwera wyszukiwanie w treści artykułów zostało czasowo wyłączone; mamy nadzieję, że po zbliżającej się modyfikacji sprzętu możliwość ta zostanie przywrócona. Tymczasem polecamy wyszukiwanie za pomocą Google lub Yahoo!</p>";s:12:"googlesearch";s:1297:"<table width=100% border=0>
+<tr valign="bottom">
+<td width="40">&nbsp;</td>
+<td width="45%" align="left"><FORM method=GET action="http://www.google.com/search">
+<A HREF="http://www.google.com/"><IMG SRC="http://www.google.com/logos/Logo_40wht.gif" border="0" ALT="Google"></A><p>
+<INPUT TYPE=text name=q size=20 maxlength=255 value="$1"> <INPUT type=submit name=btnG VALUE="Szukaj"><p>
+<input type=hidden name=domains value="http://pl.wikipedia.org"> <input type='hidden' name='ie' value='$2'> <input type='hidden' name='oe' value='$2'><input type=radio name=sitesearch value="">WWW<input type=radio name=sitesearch value="http://pl.wikipedia.org" checked>w Wikipedii</FORM></td>
+<td width="40">&nbsp;</td>
+<td width="45%" align="left">
+
+<form method=get action="http://search.yahoo.com/search">
+<A HREF="http://www.yahoo.com/"><IMG SRC="http://us.i1.yimg.com/us.yimg.com/i/yahootogo/y150purp2.gif" border="0" ALT="Yahoo"></A><p>
+ <input type="hidden" name="x" value="op"> <input name="va" size=20 maxlength=255 value="$1"> <input type="submit" value="Szukaj"><p>
+<input type="hidden" name="va_vt" value="any"> <input type="radio" name="vs" value="">WWW<input type="radio" name="vs" value="pl.wikipedia.org" checked>w Wikipedii</form></td>
+<td width="40">&nbsp;</td>
+</tr>
+</table>";s:14:"blanknamespace";s:10:"(Główna)";s:11:"preferences";s:11:"Preferencje";s:12:"prefsnologin";s:14:"Brak logowania";s:16:"prefsnologintext";s:97:"Musisz się <a href="/wiki/Specjalna:Userlogin">zalogować</a>
+przed zmianą swoich preferencji.";s:14:"prefslogintext";s:141:"Zalogowano Cię jako "$1". Twój numer identyfikacyjny to $2.
+
+Zobacz [[Wikipedia:Preferencje]], aby poznać znaczenie poszczególnych opcji.";s:10:"prefsreset";s:42:"Preferencje domyślne zostały odtworzone.";s:10:"qbsettings";s:24:"Pasek szybkiego dostępu";s:14:"qbsettingsnote";s:72:"This preference only works in the 'Standard' and the 'CologneBlue' skin.";s:14:"changepassword";s:13:"Zmiana hasła";s:4:"skin";s:7:"Skórka";s:4:"math";s:34:"Prezentacja wzorów matematycznych";s:10:"dateformat";s:11:"Format daty";s:12:"math_failure";s:28:"Parser nie umiał rozpoznać";s:18:"math_unknown_error";s:15:"nieznany błąd";s:21:"math_unknown_function";s:17:"nieznana funkcja ";s:17:"math_lexing_error";s:14:"błąd leksera";s:17:"math_syntax_error";s:15:"błąd składni";s:16:"math_image_error";s:43:"Konwersja do formatu PNG nie powiodła się";s:15:"math_bad_tmpdir";s:44:"Can't write to or create math temp directory";s:15:"math_bad_output";s:46:"Can't write to or create math output directory";s:12:"math_notexvc";s:62:"Missing texvc executable; please see math/README to configure.";s:14:"prefs-personal";s:16:"Dane Wikipedysty";s:8:"prefs-rc";s:39:"Wyświetlanie ostatnich zmian i stubów";s:10:"prefs-misc";s:18:"Ustawienia różne";s:9:"saveprefs";s:18:"Zapisz preferencje";s:10:"resetprefs";s:21:"Preferencje domyślne";s:11:"oldpassword";s:12:"Stare hasło";s:11:"newpassword";s:11:"Nowe hasło";s:9:"retypenew";s:20:"Powtórz nowe hasło";s:11:"textboxsize";s:19:"Wymiary pola edycji";s:4:"rows";s:7:"Wiersze";s:7:"columns";s:7:"Kolumny";s:17:"searchresultshead";s:23:"Ustawienia wyszukiwarki";s:14:"resultsperpage";s:26:"Liczba wyników na stronie";s:12:"contextlines";s:26:"Pierwsze wiersze artykułu";s:12:"contextchars";s:26:"Litery kontekstu w linijce";s:13:"stubthreshold";s:44:"Maksymalny rozmiar artykułu prowizorycznego";s:18:"recentchangescount";s:41:"Liczba pozycji na liście ostatnich zmian";s:10:"savedprefs";s:36:"Twoje preferencje zostały zapisane.";s:14:"timezonelegend";s:9:"Time zone";s:12:"timezonetext";s:151:"Podaj liczbę godzin różnicy między Twoim czasem,
+a czasem uniwersalnym (UTC). Np. dla Polski jest to liczba "2" (czas letni)
+lub "1" (czas zimowy).";s:9:"localtime";s:10:"Twój czas";s:14:"timezoneoffset";s:9:"Różnica";s:10:"servertime";s:21:"Aktualny czas serwera";s:13:"guesstimezone";s:23:"Pobierz z przeglądarki";s:9:"emailflag";s:54:"Nie chcę otrzymywać e-maili od innych użytkowników";s:9:"defaultns";s:54:"Przeszukuj następujące przestrzenie nazw domyślnie:";s:7:"changes";s:10:"zmian-a/-y";s:13:"recentchanges";s:15:"Ostatnie zmiany";s:17:"recentchangestext";s:804:"Ta strona przedstawia historię ostatnich zmian w polskiej Wikipedii.
+
+[[Wikipedia:Powitanie nowicjuszy|Witaj]]! Jeśli jesteś tu po raz pierwszy, zapoznaj się, proszę, z tymi stronami: [[wikipedia:FAQ|Wikipedia FAQ]], [[Wikipedia:Zasady i wskazówki|polityka Wikipedii]] (a zwłaszcza [[Wikipedia:Nazewnictwo|konwencje nazywania stron]], [[Wikipedia:Neutralny punkt widzenia|neutralny punkt widzenia]]) oraz [[Wikipedia:Najczęstsze nieporozumienia|najczęstsze nieporozumienia]].
+
+JeÅ›li zależy Ci na dalszym rozwoju Wikipedii, nie dodawaj materiałów zastrzeżonych prawami autorskimi. ZÅ‚amanie tej zasady mogÅ‚yby narazić projekt Wikipedii na poważne konsekwencje prawne. Zobacz także [http://meta.wikipedia.org/wiki/Special:Recentchanges ostatnie zmiany na stronach dyskusyjnych projektu].";s:9:"rcloaderr";s:24:"ÅadujÄ™ ostatnie zmiany";s:6:"rcnote";s:105:"To ostatnie <strong>$1</strong> zmian dokonanych na Wikipedii w ciÄ…gu ostatnich <strong>$2</strong> dni.";s:10:"rcnotefrom";s:84:"Poniżej pokazano zmiany dokonane po <b>$2</b> (nie wiÄ™cej niż <b>$1</b> pozycji).";s:10:"rclistfrom";s:262:"Pokaż nowe zmiany poczÄ…wszy od $1.
+Pokaż zmiany <a href="/wiki/Specjalna:Recentchanges/hideliu">niezalogowanych użytkowników</a>. Pokaż także <a href="/w/wiki.phtml?title=Specjalna:Recentchanges&hideminor=0&hideliu=0&hidebots=0&days=7&limit=50">boty.</a>";s:13:"showhideminor";s:16:"$1 drobne zmiany";s:7:"rclinks";s:54:"Wyświetl ostatnie $1 zmian w ciągu ostatnich $2 dni.";s:6:"rchide";s:84:" in $4 form; $1 drobnych zmian; $2 innych przestrzeni nazw; $3 wielokrotnych edycji.";s:5:"rcliu";s:39:"; $1 edycji zalogowanych użytkowników";s:4:"diff";s:6:"różn";s:4:"hist";s:4:"hist";s:4:"hide";s:7:"schowaj";s:4:"show";s:6:"pokaż";s:9:"tableform";s:7:"tabelka";s:8:"listform";s:5:"lista";s:8:"nchanges";s:8:"$1 zmian";s:15:"minoreditletter";s:1:"M";s:13:"newpageletter";s:1:"N";s:6:"upload";s:14:"Prześlij plik";s:9:"uploadbtn";s:14:"Prześlij plik";s:10:"uploadlink";s:17:"Prześlij obrazki";s:8:"reupload";s:18:"Prześlij ponownie";s:12:"reuploaddesc";s:30:"Wróć do formularza wysyłki.";s:13:"uploadnologin";s:14:"Brak logowania";s:17:"uploadnologintext";s:89:"Musisz się <a href="/wiki/Specjalna:Userlogin">zalogować</a>
+przed przesłaniem pików.";s:10:"uploadfile";s:14:"Prześlij plik";s:11:"uploaderror";s:17:"Błąd przesyłki";s:10:"uploadtext";s:2120:"<strong>STOP!</strong> Zanim prześlesz plik,
+przeczytaj <a href="/wiki/Wikipedia:Zasady_dołączania_plików">zasady dołączania plików</a> i upewnij się, że przesyłając pozostaniesz z
+nimi w zgodzie.
+<br>Jeśli nie wiesz dokładnie co zrobić, lub masz jakieś z tym problemy, szczegółowa instrukcja jest <a href="/wiki/Wikipedia:Instrukcja_przesyłania_plików_graficznych">tutaj</a>
+<br>Jeśli chcesz przejrzeć lub przeszukać dotychczas przesłane pliki,
+przejdź do <a href="/wiki/Specjalna:Imagelist">listy dołączonych plików</a>.
+Wszystkie przesyłki i skasowania są odnotowane na
+specjalnych wykazach (<a href="/wiki/Wikipedia:Dołączone">dołączone</a>, <a href="/wiki/Wikipedia:Usunięte">usunięte</a>).
+<p>By przesłać nowy plik mający zilustrować Twój artykuł skorzystaj
+z poniższego formularza.
+W przypadku większości przeglądarek zobaczysz przycisk <i>Browse...</i>
+albo <i>Przeglądaj...</i>, który umożliwi Ci otworzenie standardowego
+okienka wyboru pliku. Wybranie pliku spowoduje umieszczenie jego nazwy
+w polu tekstowym obok przycisku.
+Musisz także zaznaczając odpowiednie pole, potwierdzić, że przesyłając
+plik nie naruszasz niczyich praw autorskich.
+Przesyłka rozpocznie się po naciśnięciu <i>Prześlij plik</i>.
+Może zająć kilka chwil, zwłaszcza jeśli masz wolne połączenie z internetem.
+<p>Preferowane formaty to JPEG dla zdjęć fotograficznych, PNG dla rysunków
+i obrazków o charakterze ikon oraz OGG dla dźwięków.
+Aby uniknąć nieporozumień nadawaj plikom nazwy związane z zawartością.
+Aby umieścić obrazek w artykule, użyj linku w postaci
+<b>[[grafika:obrazek.jpg]]</b> lub <b>[[grafika:obrazek.png|opcjonalny tekst]]</b>.
+Dla plików dźwiękowych link będzie miał postać <b>[[media:file.ogg]]</b>.
+<p>Pamiętaj, proszę, że tak jak w przypadku zwykłych stron Wikipedii,
+inni użytkownicy mogą edytować lub kasować przesłane przez Ciebie pliki,
+jeśli stwierdzą, że to będzie lepiej służyć całemu projektowi.
+Twoje prawo do przesyłania może zostać Ci odebrane, jeśli nadużyjesz systemu.";s:9:"uploadlog";s:16:"Wykaz przesyłek";s:13:"uploadlogpage";s:11:"Dołączone";s:17:"uploadlogpagetext";s:119:"Oto lista ostatnio przesłanych plików.
+Wszystkie czasy odnoszÄ… siÄ™ do strefy czasu uniwersalnego (UTC).
+<ul>
+</ul>
+";s:8:"filename";s:4:"Plik";s:8:"filedesc";s:4:"Opis";s:10:"filestatus";s:13:"Status prawny";s:10:"filesource";s:17:"Tekst źródłowy";s:11:"affirmation";s:104:"Potwierdzam, że właściciel praw autorskich do tego pliku
+zgadza się udzielić licencji zgodnie z $1.";s:13:"copyrightpage";s:25:"Wikipedia:Prawa_autorskie";s:17:"copyrightpagename";s:28:"prawami autorskimi Wikipedii";s:13:"uploadedfiles";s:16:"Przesłane pliki";s:13:"noaffirmation";s:79:"Musisz potwierdzić, że Twoja przesyłka nie narusza żadnych
+praw autorskich.";s:13:"ignorewarning";s:39:"Zignoruj ostrzeżenie i prześlij plik.";s:9:"minlength";s:49:"Nazwa obrazka musi mieć co najmniej trzy litery.";s:11:"badfilename";s:33:"Nazwę obrazka zmieniono na "$1".";s:11:"badfiletype";s:40:"".$1" nie jest zalecanym formatem pliku.";s:9:"largefile";s:83:"Zalecane jest aby rozmiar pliku z obrazkiem nie był większy niż 100 kilobajtów.";s:16:"successfulupload";s:32:"Przesłanie pliku powiodło się";s:12:"fileuploaded";s:241:"Plik "$1" został pomyślnie przesłany.
+Przejdź, proszę, do strony opisu pliku ($2) i podaj dotyczące go informacje
+takie jak: pochodzenie pliku, kiedy i przez kogo został utworzony
+i cokolwiek co wiesz o pliku, a wydaje Ci się ważne.";s:13:"uploadwarning";s:25:"Ostrzeżenie o przesyłce";s:8:"savefile";s:11:"Zapisz plik";s:13:"uploadedimage";s:15:"przesłano "$1"";s:14:"uploaddisabled";s:83:"Przepraszamy! Możliwość przesyłania plików na ten serwer została wyłączona.";s:9:"imagelist";s:13:"Lista plików";s:13:"imagelisttext";s:42:"To jest lista $1 plików posortowanych $2.";s:12:"getimagelist";s:24:"pobieranie listy plików";s:11:"ilshowmatch";s:44:"Pokaż wszystkie pliki o takiej samej nazwie";s:8:"ilsubmit";s:6:"Szukaj";s:8:"showlast";s:42:"Pokaż ostatnie $1 plików posortowane $2.";s:3:"all";s:9:"wszystkie";s:6:"byname";s:13:"według nazwy";s:6:"bydate";s:12:"według daty";s:6:"bysize";s:16:"według rozmiaru";s:9:"imgdelete";s:5:"usuń";s:7:"imgdesc";s:5:"opisz";s:9:"imglegend";s:44:"Legenda: (opisz) = pokaż/edytuj opis pliku.";s:10:"imghistory";s:14:"Historia pliku";s:9:"revertimg";s:10:"przywróć";s:9:"deleteimg";s:5:"usuń";s:13:"imghistlegend";s:201:"Legenda: (bież) = to jest obecny plik, (usuń) = usuń
+tę starszą wersję, (przywróć) = przywróć tę starszą wersję.
+<br><i>Kliknij na datę aby zobaczyć jakie pliki przesłano tego dnia</i>.";s:10:"imagelinks";s:14:"Linki do pliku";s:12:"linkstoimage";s:43:"Oto strony odwołujące się do tego pliku:";s:14:"nolinkstoimage";s:47:"Żadna strona nie odwołuje się do tego pliku.";s:10:"statistics";s:10:"Statystyka";s:9:"sitestats";s:22:"Statystyka artykułów";s:9:"userstats";s:25:"Statystyka użytkowników";s:13:"sitestatstext";s:548:"W bazie danych jest w sumie <b>$1</b> stron.
+Ta liczba uwzględnia strony <i>Dyskusji</i>, strony na temat samej Wikipedii,
+strony typu <i>stub</i> (prowizoryczne), strony przekierowujące, oraz inne, które trudno
+uznać za artykuły. Wyłączając powyższe, jest prawdopodobnie <b>$2</b> stron, które można uznać
+za artykuły.<p>
+Było w sumie <b>$3</b> odwiedzin oraz <b>$4</b> edycji od kiedy dokonano
+upgrade'u oprogramowania (22 listopada 2002).
+Daje to średnio <b>$5</b> edycji na jedną stronę i <b>$6</b> odwiedzin na jedną edycję.";s:13:"userstatstext";s:110:"Jest <b>$1</b> zarejestrowanych użytkowników.
+Spośród nich <b>$2</b> ma status administratora (zobacz $3).";s:11:"maintenance";s:20:"Prosta administracja";s:18:"maintnancepagetext";s:176:"Na tej stronie zgrupowano kilka użytecznych narzędzi
+pomagających w prostej administracji. Niektóre z nich obciążają bazę danych, proszę
+więc, by ich nie nadużywać.";s:19:"maintenancebacklink";s:39:"Powrót do strony prostej administracji";s:15:"disambiguations";s:26:"Strony ujednoznaczniające";s:19:"disambiguationspage";s:36:"Wikipedia:Strony_ujednoznaczniające";s:19:"disambiguationstext";s:315:"Poniższe artykuły odwołują się do <i>stron
+ujednoznaczniających</i>, a powinny odwoływać się bezpośrednio do hasła
+związanego z treścią artykułu.<br>Strona uznawana jest za ujednoznaczniającą
+jeśli odwołuje się do niej $1.<br>Linki z innych przestrzeni nazw <i>nie</i>
+zostały tu uwzględnione.";s:15:"doubleredirects";s:24:"Podwójne przekierowania";s:19:"doubleredirectstext";s:452:"<b>Uwaga:</b> Na tej liście mogą znajdować się
+przekierowania pozorne. Oznacza to, że poniżej pierwszej linii artykułu,
+zawierającej "#REDIRECT ...", może znajdować się dodatkowy tekst.<br>Każdy
+wiersz listy zawiera odwołania do pierwszego i drugiego przekierowania oraz
+pierwszą linię tekstu drugiego przekierowania. Umożliwia to w większości
+przypadków odnalezienie właściwego artykułu, do którego powinno się
+przekierowywać.";s:15:"brokenredirects";s:22:"Zerwane przekierowania";s:19:"brokenredirectstext";s:63:"Poniższe przekierowania wskazują na nieistniejące artykuły.";s:9:"selflinks";s:47:"Strony zawierające odwołania do siebie samych";s:13:"selflinkstext";s:87:"Poniższe strony zawierają odnośniki do samych siebie
+(co nie powinno mieć miejsca).";s:11:"mispeelings";s:26:"Strony z błędami pisowni";s:15:"mispeelingstext";s:146:"Poniższe strony zawierają najczęstsze błędy
+pisowni (ich listę można znaleźć w $1). Poprawna pisownia może być podana obok w
+nawiasach.";s:15:"mispeelingspage";s:38:"Lista najczęstszych błędów pisowni";s:20:"missinglanguagelinks";s:50:"Brakujące odnośniki do innych wersji językowych";s:26:"missinglanguagelinksbutton";s:37:"Znajdź brakujące odnośniki, wersja";s:24:"missinglanguagelinkstext";s:213:"Dla wielu artykułów istnieje wersja $1.
+Artykuły umieszczone na poniższej liście <i>nie</i> odnoszą się do swojego
+odpowiednika w tym języku. Na tej liście <i>pominięto</i> podstrony oraz przekierowania.";s:7:"orphans";s:16:"Porzucone strony";s:11:"lonelypages";s:16:"Porzucone strony";s:12:"unusedimages";s:18:"Nie używane pliki";s:12:"popularpages";s:24:"Najpopularniejsze strony";s:6:"nviews";s:18:"odwiedzono $1 razy";s:11:"wantedpages";s:24:"Najpotrzebniejsze strony";s:6:"nlinks";s:10:"$1 linków";s:8:"allpages";s:16:"Wszystkie strony";s:10:"randompage";s:13:"Losuj stronę";s:10:"shortpages";s:18:"Najkrótsze strony";s:9:"longpages";s:19:"Najdłuższe strony";s:12:"deadendpages";s:18:"Strony bez linków";s:9:"listusers";s:20:"Lista użytkowników";s:10:"listadmins";s:11:"Admins list";s:12:"specialpages";s:16:"Strony specjalne";s:9:"spheading";s:16:"Strony specjalne";s:14:"sysopspheading";s:66:"Strony specjalne tylko dla użytkowników z prawami Administratora";s:18:"developerspheading";s:63:"Strony specjalne tylko dla użytkowników z prawami Programisty";s:11:"protectpage";s:18:"Zabezpiecz stronę";s:19:"recentchangeslinked";s:22:"Zmiany w dolinkowanych";s:6:"rclsub";s:33:"(dla stron dolinkowanych do "$1")";s:5:"debug";s:13:"Odpluskwianie";s:8:"newpages";s:11:"Nowe strony";s:12:"ancientpages";s:17:"Najstarsze strony";s:4:"intl";s:15:"Linki interwiki";s:4:"move";s:9:"przenieś";s:12:"movethispage";s:9:"Przenieś";s:16:"unusedimagestext";s:279:"<p>Pamiętaj, proszę, że inne witryny,
+np. Wikipedie w innych językach, mogą odwoływać się do tych plików
+używając bezpośrednio URL. Dlatego też niektóre z plików mogą się znajdować
+na tej liście mimo, że żadna strona tej Wikipedii nie odwołuje się do nich.";s:11:"booksources";s:9:"Książki";s:14:"booksourcetext";s:299:"Oto lista linków do innych witryn,
+które pośredniczą w sprzedaży nowych i używanych książek i mogą podać
+informacje o książkach, których szukasz.
+Wikipedia nie jest stowarzyszona z żadnym ze sprzedawców,
+
+a ta lista nie powinna być interpretowana jako świadectwo udziału w zyskach.";s:4:"isbn";s:4:"ISBN";s:6:"rfcurl";s:35:"http://www.faqs.org/rfcs/rfc$1.html";s:14:"alphaindexline";s:9:"$1 --> $2";s:7:"version";s:21:"Wersja oprogramowania";s:11:"mailnologin";s:11:"Brak adresu";s:15:"mailnologintext";s:220:"Musisz się <a href="/wiki/Specjalna:Userlogin">zalogować</a>
+i mieć wpisany aktualny adres e-mailowy w swoich <a href="/wiki/Specjalna:Preferences">preferencjach</a>,
+aby móc wysłać e-mail do innych użytkowników.";s:9:"emailuser";s:35:"Wyślij e-mail do tego użytkownika";s:9:"emailpage";s:30:"Wyślij e-mail do użytkownika";s:13:"emailpagetext";s:305:"Jeśli ten użytkownik wpisał poprawny adres e-mailowy
+w swoich preferencjach, to poniższy formularz umożliwi Ci wysłanie jednej wiadomości.
+Adres e-mailowy, który został przez Ciebie wprowadzony w Twoich preferencjach
+pojawi się w polu "Od"; dzięki temu odbiorca będzie mógł Ci odpowiedzieć.";s:15:"usermailererror";s:28:"Mail object returned error: ";s:15:"defemailsubject";s:16:"Wikipedia e-mail";s:12:"noemailtitle";s:23:"Brak adresu e-mailowego";s:11:"noemailtext";s:135:"Ten użytkownik nie podał poprawnego adresu e-mailowego,
+albo zadecydował, że nie chce otrzymywać e-maili od innych użytkowników.";s:9:"emailfrom";s:2:"Od";s:7:"emailto";s:2:"Do";s:12:"emailsubject";s:5:"Temat";s:12:"emailmessage";s:11:"Wiadomość";s:9:"emailsend";s:7:"Wyślij";s:9:"emailsent";s:29:"Wiadomość została wysłana";s:13:"emailsenttext";s:36:"Twoja wiadomość została wysłana.";s:9:"watchlist";s:11:"Obserwowane";s:12:"watchlistsub";s:23:"(dla użytkownika "$1")";s:11:"nowatchlist";s:68:"Nie ma żadnych pozycji na liście obserwowanych przez Ciebie stron.";s:12:"watchnologin";s:14:"Brak logowania";s:16:"watchnologintext";s:114:"Musisz się <a href="/wiki/Specjalna:Userlogin">zalogować</a>
+przed modyfikacją listy obserwowanych artykułów.";s:10:"addedwatch";s:29:"Dodana do listy obserwowanych";s:14:"addedwatchtext";s:447:"Strona "'''$1'''" została dodana do Twojej [[Specjalna:Watchlist|listy obserwowanych]]. Na tej liście znajdzie się rejestr przyszłych zmian tej strony i związanej z nią strony Dyskusji, a nazwa samej strony zostanie <b>wytłuszczona</b> na [[Specjalna:Recentchanges|liście ostatnich zmian]], aby łatwiej było Ci sam fakt zmiany zauważyć.
+
+Jeśli chcesz usunąć stronę ze swojej listy obserwowanych, kliknij na "Przestań obserwować".";s:12:"removedwatch";s:31:"Usunięto z listy obserwowanych";s:16:"removedwatchtext";s:60:"Strona "$1" została usunięta z Twojej listy obserwowanych.";s:5:"watch";s:8:"obserwuj";s:13:"watchthispage";s:8:"Obserwuj";s:7:"unwatch";s:21:"przestań obserwować";s:15:"unwatchthispage";s:21:"Przestań obserwować";s:12:"notanarticle";s:15:"To nie artykuł";s:13:"watchnochange";s:67:"Żadna z obserwowanych stron nie była edytowana w podanym okresie.";s:12:"watchdetails";s:179:"(Liczba obserwowanych przez Ciebie stron: $1, nie licząc stron dyskusji;
+liczba stron edytowanych od ostatniej cezury: $2;
+$3...
+<a href='$4'>pokaż i edytuj pełną listę</a>.)";s:18:"watchmethod-recent";s:56:"poszukiwanie ostatnich zmian wśród obserwowanych stron";s:16:"watchmethod-list";s:56:"poszukiwanie obserwowanych stron wśród ostatnich zmian";s:13:"removechecked";s:46:"Usuń zaznaczone pozycje z listy obserwowanych";s:17:"watchlistcontains";s:58:"Lista obserwowanych przez Ciebie stron zawiera $1 pozycji.";s:13:"watcheditlist";s:157:"Oto alfabetyczna lista obserwowanych stron.
+Zaznacz, które z nich mamy usunąć z listy i kliknij przycisk
+
+<i>Usuń...</i> znajdujący się na dole strony.";s:15:"removingchecked";s:51:"Usuwamy zaznaczone pozycje z listy obserwowanych...";s:13:"couldntremove";s:41:"Nie można było usunąć pozycji '$1'...";s:15:"iteminvalidname";s:45:"Problem z pozycją '$1', niepoprawna nazwa...";s:6:"wlnote";s:102:"Poniżej pokazano zmiany dokonane w ciągu ostatnich <b>$2</b> godzin (maksymalna liczba pozycji: $1).";s:10:"wlshowlast";s:37:"Pokaż ostatnie $1 godz., $2 dni ($3)";s:7:"wlsaved";s:59:"To jest ostatnia zapisana kopia Twojej listy obserwowanych.";s:10:"deletepage";s:13:"Usuń stronę";s:7:"confirm";s:10:"Potwierdź";s:9:"excontent";s:18:"Zawartość strony";s:13:"exbeforeblank";s:36:"Poprzednia zawartość pustej strony";s:7:"exblank";s:18:"Strona była pusta";s:13:"confirmdelete";s:21:"Potwierdź usunięcie";s:9:"deletesub";s:15:"(Usuwanie "$1")";s:14:"historywarning";s:63:"Uwaga: Strona, którą chcesz skasować ma starsze wersje; oto ";s:17:"confirmdeletetext";s:244:"Zamierzasz trwale usunąć stronę
+lub plik z bazy danych razem z dotyczÄ…cÄ… ich historiÄ….
+Potwierdź, proszę, swoje zamiary, tzn., że rozumiesz konsekwencje,
+i że robisz to w zgodzie z
+[[Wikipedia:Zasady i wskazówki|zasadami Wikipedii]].";s:12:"confirmcheck";s:30:"Tak, naprawdę chcę usunąć.";s:14:"actioncomplete";s:17:"Operacja wykonana";s:11:"deletedtext";s:81:"Usunięto "$1".
+Rejestr ostatnio dokonanych kasowań możesz obejrzeć tutaj: $2.";s:14:"deletedarticle";s:14:"usunięto "$1"";s:10:"dellogpage";s:9:"Usunięte";s:14:"dellogpagetext";s:119:"To jest lista ostatnio wykonanych kasowań.
+Podane czasy odnoszÄ… siÄ™ do strefy czasu uniwersalnego (UTC).
+<ul>
+</ul>
+";s:11:"deletionlog";s:17:"rejestr usunięć";s:8:"reverted";s:29:"Przywrócono starszą wersję";s:13:"deletecomment";s:17:"Powód usunięcia";s:13:"imagereverted";s:51:"Przywrócenie wcześniejszej wersji powiodło się.";s:8:"rollback";s:14:"Cofnij edycję";s:14:"rollback_short";s:8:"Rollback";s:12:"rollbacklink";s:6:"cofnij";s:14:"rollbackfailed";s:31:"Nie udało się cofnąć zmiany";s:12:"cantrollback";s:63:"Nie można cofnąć edycji; jest tylko jedna wersja tej strony.";s:13:"alreadyrolled";s:321:"Nie można cofnąć ostatniej zmiany strony [[$1]],
+której autorem jest [[Wikipedysta:$2|$2]] ([[Dyskusja_wikipedysty:$2|Dyskusja]]).
+Ktoś inny zdążył już to zrobić lub wprowadził własne poprawki do treści strony.
+Autorem ostatniej zmiany jest teraz [[Wikipedysta:$3|$3]] ([[Dyskusja_wikipedysty:$3|Dyskusja]]).";s:11:"editcomment";s:39:"Opisano ją następująco: "<i>$1</i>".";s:10:"revertpage";s:52:"Przywrócono przedostatnią wersję, jej autor to $1";s:14:"protectlogpage";s:14:"Protection_log";s:14:"protectlogtext";s:187:"Poniżej znajduje się lista blokad założonych i zdjętych z pojedynczych stron.
+By dowiedzieć się czegoś więcej o blokowaniu stron, przeczytaj [[Wikipedia:Zabezpieczanie stron]].";s:16:"protectedarticle";s:20:"zabezpieczono [[$1]]";s:18:"unprotectedarticle";s:20:"odbezpieczono [[$1]]";s:10:"protectsub";s:17:"(Protecting "$1")";s:18:"confirmprotecttext";s:46:"Czy na pewno chcesz zabezpieczyć tę stronę?";s:14:"confirmprotect";s:25:"potwierdź zabezpieczenie";s:14:"protectcomment";s:21:"powód zabezpieczenia";s:12:"unprotectsub";s:19:"(Unprotecting "$1")";s:20:"confirmunprotecttext";s:42:"Do you really want to unprotect this page?";s:16:"confirmunprotect";s:25:"potwierdź odbezpieczenie";s:16:"unprotectcomment";s:23:"Reason for unprotecting";s:13:"protectreason";s:14:"(podaj powód)";s:8:"undelete";s:27:"Odtwórz skasowaną stronę";s:12:"undeletepage";s:29:"Odtwarzanie skasowanych stron";s:16:"undeletepagetext";s:147:"Poniższe strony zostały skasowane, ale ich kopia wciąż
+znajduje się w archiwum.<br><b>Uwaga:</b> archiwum co jakiś czas także jest kasowane!";s:15:"undeletearticle";s:27:"Odtwórz skasowaną stronę";s:17:"undeleterevisions";s:34:"Liczba zarchiwizowanych wersji: $1";s:15:"undeletehistory";s:240:"Odtworzenie strony spowoduje przywrócenie także jej
+wszystkich poprzednich wersji. Jeśli od czasu skasowania ktoś utworzył nową stronę
+o tej nazwie, odtwarzane wersje znajdÄ… siÄ™ w jej historii, a obecna wersja
+pozostanie bez zmian.";s:16:"undeleterevision";s:22:"Skasowano wersję z $1";s:11:"undeletebtn";s:9:"Odtwórz!";s:16:"undeletedarticle";s:15:"odtworzono "$1"";s:13:"undeletedtext";s:145:"Pomyślnie odtworzono stronę [[$1]].
+Zobacz [[Wikipedia:Usunięte]], jeśli chcesz przejrzeć rejestr ostatnio
+skasowanych i odtworzonych stron.";s:13:"contributions";s:19:"Wkład użytkownika";s:9:"mycontris";s:11:"Moje edycje";s:10:"contribsub";s:19:"Dla użytkownika $1";s:10:"nocontribs";s:42:"Brak zmian odpowiadających tym kryteriom.";s:6:"ucnote";s:99:"Oto lista ostatnich <b>$1</b> zmian dokonanych przez
+użytkownika w ciągu ostatnich <b>$2</b> dni.";s:7:"uclinks";s:49:"Zobacz ostatnie $1 zmian; zobacz ostatnie $2 dni.";s:5:"uctop";s:16:" (jako ostatnia)";s:13:"notargettitle";s:30:"Wskazywana strona nie istnieje";s:12:"notargettext";s:79:"Nie podano strony albo użytkownika, dla których
+ta operacja ma być wykonana.";s:11:"linklistsub";s:15:"(Lista linków)";s:9:"linkshere";s:56:"Do tej strony odwołują się następujące inne strony:";s:11:"nolinkshere";s:45:"Do tej strony nie odwołuje się żadna inna.";s:10:"isredirect";s:23:"strona przekierowująca";s:7:"blockip";s:17:"Zablokuj adres IP";s:11:"blockiptext";s:306:"Użyj poniższego formularza aby zablokować prawo
+zapisu spod określonego adresu IP.
+Powinno się to robić jedynie by zapobiec wandalizmowi, a zarazem
+w zgodzie z [[Wikipedia:Zasady i wskazówki|zasadami Wikipedii]].
+Podaj powód (np. umieszczając nazwy stron, na których dopuszczono
+się wandalizmu).";s:9:"ipaddress";s:8:"Adres IP";s:9:"ipbexpiry";s:13:"Wygaśnięcie";s:9:"ipbreason";s:6:"Powód";s:9:"ipbsubmit";s:18:"Zablokuj ten adres";s:12:"badipaddress";s:29:"Adres IP jest źle utworzony.";s:13:"noblockreason";s:29:"Musisz podać powód blokady.";s:17:"blockipsuccesssub";s:27:"Zablokowanie powiodło się";s:18:"blockipsuccesstext";s:131:"Adres IP "$1" został zablokowany.
+<br>Przejdź do [[Specjalna:Ipblocklist|Listy zablokowanych adresów IP]] by przejrzeć blokady.";s:9:"unblockip";s:17:"Odblokuj adres IP";s:13:"unblockiptext";s:97:"Użyj poniższego formularza by przywrócić prawa zapisu
+dla poprzednio zablokowanego adresu IP.";s:9:"ipusubmit";s:18:"Odblokuj ten adres";s:10:"ipusuccess";s:33:"Adres IP "$1" został odblokowany";s:11:"ipblocklist";s:31:"Lista zablokowanych adresów IP";s:13:"blocklistline";s:40:"$1, $3 zablokowany przez $2 (wygasa: $4)";s:9:"blocklink";s:8:"zablokuj";s:11:"unblocklink";s:8:"odblokuj";s:12:"contribslink";s:6:"edycje";s:11:"autoblocker";s:105:"Zablokowano Cię automatycznie ponieważ używasz tego samego adresu IP co wikipedysta "$1". Powód "$2".";s:12:"blocklogpage";s:9:"Block_log";s:13:"blocklogentry";s:34:"zablokowano "$1", czas blokady: $2";s:12:"blocklogtext";s:289:"Poniżej znajduje się lista blokad założonych i zdjętych z poszczególnych adresów IP. Na liście nie znajdą się adresy IP, które zablokowano w sposób automatyczny. By przejrzeć listę obecnie aktywnych blokad, przejdź na stronę [[Specjalna:Ipblocklist|Zablokowane adresy IP]].";s:15:"unblocklogentry";s:16:"odblokowano "$1"";s:20:"range_block_disabled";s:65:"Możliwość blokowania zakresu numerów IP została wyłączona.";s:18:"ipb_expiry_invalid";s:28:"Błędny czas wygaśnięcia.";s:16:"ip_range_invalid";s:33:"Niewłaściwy zakres adresów IP.";s:12:"proxyblocker";s:13:"Proxy blocker";s:16:"proxyblockreason";s:109:"Twój adres IP został zablokowany - jest to otwarte proxy. Sprawę należy rozwiązać u dostawcy internetu.";s:17:"proxyblocksuccess";s:9:"Wykonane.";s:6:"lockdb";s:21:"Zablokuj bazę danych";s:8:"unlockdb";s:21:"Odblokuj bazę danych";s:10:"lockdbtext";s:333:"Zablokowanie bazy danych uniemożliwi wszystkim użytkownikom
+edycję stron, zmianę preferencji, edycję list obserwowanych artykułów oraz inne
+czynności wymagające dostępu do bazy danych.
+Potwierdź, proszę, że to jest zgodne z Twoimi zamiarami, i że odblokujesz
+bazę danych, gdy tylko zakończysz zadania administracyjne.";s:12:"unlockdbtext";s:252:"Odblokowanie bazy danych umożliwi wszystkim użytkownikom
+edycjÄ™ stron, zmianÄ™ preferencji, edycjÄ™ list
+obserwowanych artykułów oraz inne czynności związane ze zmianami w bazie danych.
+Potwierdź, proszę, że to jest zgodne z Twoimi zamiarami.";s:11:"lockconfirm";s:46:"Tak, naprawdę chcę zablokować bazę danych.";s:13:"unlockconfirm";s:46:"Tak, naprawdę chcę odblokować bazę danych.";s:7:"lockbtn";s:21:"Zablokuj bazę danych";s:9:"unlockbtn";s:21:"Odblokuj bazę danych";s:13:"locknoconfirm";s:37:"Nie zaznaczyłeś pola potwierdzenia.";s:16:"lockdbsuccesssub";s:43:"Baza danych została pomyślnie zablokowana";s:18:"unlockdbsuccesssub";s:29:"Blokada bazy danych usunięta";s:17:"lockdbsuccesstext";s:116:"Baza danych Wikipedii została zablokowana.
+<br>Pamiętaj usunąć blokadę po zakończeniu spraw administracyjnych.";s:19:"unlockdbsuccesstext";s:43:"Baza danych Wikipedii została odblokowana.";s:6:"asksql";s:13:"Zapytanie SQL";s:10:"asksqltext";s:443:"Użyj poniższego formularza by wysłać bezpośrednie zapytanie
+do bazy danych Wikipedii.
+Do ograniczania literałów łańcuchowych używaj pojedynczych cudzysłowów ('tak jak tu').
+Twoje zapytanie może poważnie obciążyć serwer, więc używaj tej możliwości
+z rozwagÄ….
+Struktura bazy danych jest [http://cvs.sourceforge.net/viewcvs.py/wikipedia/phase3/maintenance/tables.sql?rev=1.4&content-type=text/vnd.viewcvs-markup tutaj].";s:11:"sqlislogged";s:51:"Przypominamy, że wszystkie zapytania są logowane!";s:8:"sqlquery";s:15:"Podaj zapytanie";s:8:"querybtn";s:17:"Wyślij zapytanie";s:10:"selectonly";s:94:"Zapytania inne niż "SELECT" są zastrzeżone tylko dla
+użytkowników o statusie Programisty.";s:15:"querysuccessful";s:30:"Zapytanie zakończone sukcesem";s:14:"makesysoptitle";s:24:"Make a user into a sysop";s:13:"makesysoptext";s:210:"Ten formularz jest wykorzystywany przez Wikipedystów o statusie biurokraty do przyznawania użytkownikom praw administratora.
+Wpisz identyfikator użytkownika do okienka i kliknij na przycisk, aby to uczynić.";s:13:"makesysopname";s:23:"Pseudoniem wikipedysty:";s:15:"makesysopsubmit";s:49:"Przyznaj temu użytkownikowi prawa administratora";s:11:"makesysopok";s:63:"<b>Od tej chwili wikipedysta '$1' jest już administratorem</b>";s:13:"makesysopfail";s:115:"<b>Wikipedysta '$1' nie może zostać administratorem. (Sprawdź czy jego pseudonim został poprawnie wpisany.)</b>";s:17:"setbureaucratflag";s:30:"Ustaw flagę <i>Biurokraty</i>";s:13:"bureaucratlog";s:14:"Bureaucrat_log";s:18:"bureaucratlogentry";s:17:" ustawiono $1: $2";s:6:"rights";s:7:"Rights:";s:15:"set_user_rights";s:15:"Set user rights";s:15:"user_rights_set";s:54:"<b>Uprawnienia Wikipedysty "$1" zostały zmienione</b>";s:15:"set_rights_fail";s:81:"<b>User rights for "$1" could not be set. (Did you enter the name correctly?)</b>";s:9:"makesysop";s:44:"Przyznaj użytkownikowi prawa administratora";s:8:"movepage";s:17:"Przenieś stronę";s:12:"movepagetext";s:732:"Za pomocą poniższego formularza zmienisz nazwę strony,
+przenosząc jednocześnie jej historię.
+Pod starym tytułem zostanie umieszczona strona przekierowująca.
+Linki do starego tytułu pozostaną niezmienione.
+[[Specjalna:Maintenance|Upewnij się]], że uwzględniasz podwójne
+lub zerwane przekierowania. Odpowiadasz za to, żeby linki odnosiły
+się do właściwych artykułów!
+
+Strona '''nie''' będzie przeniesiona jeśli:
+*jest pusta i nigdy nie była edytowana
+*jest stronÄ… przekierowujÄ…cÄ…
+*strona o nowej nazwie już istnieje
+
+<b>UWAGA!</b>
+Może to być drastyczna lub nieprzewidywalna zmiana w przypadku popularnych stron;
+upewnij się co do konsekwencji tej operacji zanim się na nią zdecydujesz.";s:16:"movepagetalktext";s:383:"Odpowiednia strona dyskusji, jeśli istnieje, będzie
+przeniesiona automatycznie, pod warunkiem, że:
+*nie przenosisz strony do innej przestrzeni nazw
+*nie istnieje strona dyskusji o nowej nazwie
+W takich przypadkach tekst dyskusji trzeba przenieść, i ewentualnie połączyć
+z istniejącym, ręcznie.
+Możesz też zrezygnować z przeniesienia dyskusji (poniższy <i>checkbox</i>).";s:11:"movearticle";s:17:"Przenieś stronę";s:11:"movenologin";s:14:"Brak logowania";s:15:"movenologintext";s:126:"Musisz być zarejestrowanym i <a href="/wiki/Specjalna:Userlogin">zalogowanym</a>
+użytkownikiem aby móc przenieść stronę.";s:8:"newtitle";s:11:"Nowy tytuł";s:11:"movepagebtn";s:17:"Przenieś stronę";s:12:"pagemovedsub";s:28:"Przeniesienie powiodło się";s:13:"pagemovedtext";s:50:"Strona "[[$1]]" została przeniesiona do "[[$2]]".";s:13:"articleexists";s:120:"Strona o podanej nazwie już istnieje albo
+wybrana przez Ciebie nazwa nie jest poprawna.
+Wybierz, proszę, nową nazwę.";s:10:"talkexists";s:166:"Strona artykułu została przeniesiona, natomiast strona dyskusji nie - strona dyskusji o nowym tytule już istnieje. Połącz, proszę, teksty obu dyskusji ręcznie.";s:7:"movedto";s:15:"przeniesiono do";s:8:"movetalk";s:61:"Przenieś także stronę <i>Dyskusji</i>, jeśli to możliwe.";s:13:"talkpagemoved";s:67:"Odpowiednia strona z <i>Dyskusją</i> także została przeniesiona.";s:16:"talkpagenotmoved";s:81:"Odpowiednia strona z <i>Dyskusją</i> <strong>nie</strong> została przeniesiona.";s:9:"1movedto2";s:21:"$1 przeniesiono do $2";s:6:"export";s:13:"Eksport stron";s:10:"exporttext";s:464:"Możesz wyeksportować tekst i historię edycji danej strony lub zestawu stron w postaci XML. Taki zrzut można potem (jak import już będzie działać) zaimportować do innej wiki działającej na oprogramowaniu MediaWiki, obrabiać lub po prostu trzymać dla zabawy.
+
+Żeby uzyskać kilka stron wpisz ich nazwy jedna pod drugą.
+
+Można również użyć łącza:<br>
+<nowiki>[[Specjalna:Export/Wikipedia]]</nowiki> (co daje [[Specjalna:Export/Wikipedia]]).";s:13:"exportcuronly";s:36:"Tylko bieżąca wersja, bez historii";s:11:"allmessages";s:20:"Wszystkie komunikaty";s:15:"allmessagestext";s:75:"Oto lista wszystkich komunikatów dostępnych w przestrzeni nazw MediaWiki:";s:14:"thumbnail-more";s:9:"Powiększ";s:12:"missingimage";s:36:"<b>Missing image</b><br /><i>$1</i>
+";s:6:"import";s:12:"Import pages";s:10:"importtext";s:118:"Please export the file from the source wiki using the Special:Export utility, save it to your disk and upload it here.";s:12:"importfailed";s:17:"Import failed: $1";s:12:"importnotext";s:16:"Empty or no text";s:13:"importsuccess";s:17:"Import succeeded!";s:21:"importhistoryconflict";s:72:"Conflicting history revision exists (may have imported this page before)";s:16:"accesskey-search";s:1:"f";s:19:"accesskey-minoredit";s:1:"i";s:14:"accesskey-save";s:1:"s";s:17:"accesskey-preview";s:1:"p";s:33:"accesskey-compareselectedversions";s:1:"v";s:14:"tooltip-search";s:24:"Search this wiki [alt-f]";s:17:"tooltip-minoredit";s:33:"Oznacz zmiany jako drobne [alt-i]";s:12:"tooltip-save";s:21:"Zapisz zmiany [alt-s]";s:15:"tooltip-preview";s:60:"Obejrzyj efekt swojej edycji przed zapisaniem zmian! [alt-p]";s:31:"tooltip-compareselectedversions";s:75:"See the differences between the two selected versions of this page. [alt-v]";s:12:"Monobook.css";s:71:"/* edit this file to customize the monobook skin for the entire site */";s:12:"nodublincore";s:50:"Dublin Core RDF metadata disabled for this server.";s:17:"nocreativecommons";s:55:"Creative Commons RDF metadata disabled for this server.";s:13:"notacceptable";s:68:"The wiki server can't provide data in a format your client can read.";s:9:"anonymous";s:30:"Anonymous user(s) of Wikipedia";s:8:"siteuser";s:17:"Wikipedia user $1";s:14:"lastmodifiedby";s:48:"Ostatnia edycja tej strony: $1 (autor zmian: $2)";s:3:"and";s:4:"oraz";s:13:"othercontribs";s:20:"Based on work by $1.";s:9:"siteusers";s:20:"Wikipedia user(s) $1";s:19:"spamprotectiontitle";s:22:"Spam protection filter";s:18:"spamprotectiontext";s:214:"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:";s:16:"subcategorycount";s:44:"There are $1 subcategories to this category.";s:20:"categoryarticlecount";s:39:"There are $1 articles in this category.";s:18:"usenewcategorypage";s:70:"1
+
+Set first character to "0" to disable the new category page layout.";s:11:"Monobook.js";s:3547:"/* 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');
+";} \ No newline at end of file
diff --git a/maintenance/DiffLanguage.php b/maintenance/DiffLanguage.php
index 7857635f43c2..b015591d72da 100644
--- a/maintenance/DiffLanguage.php
+++ b/maintenance/DiffLanguage.php
@@ -34,26 +34,14 @@
# 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));
# read command line argument
-if ( isset($argv[1]) ) {
- $lang = $argv[1];
+if ( isset($args[0]) ) {
+ $lang = $args[0];
# or prompt a simple menu
} else {
@@ -91,7 +79,7 @@ if ( isset($argv[1]) ) {
# include the language if it's not the already loaded one
if($lang != $wgLanguageCode) {
print "Including language file for $lang.\n";
- include("Language{$lang}.php");
+ include_once("Language{$lang}.php");
}
/* ugly hack to load the correct array, if you have a better way
diff --git a/maintenance/InitialiseMessages.inc b/maintenance/InitialiseMessages.inc
index 12522466c1aa..699ec66d5e64 100755
--- a/maintenance/InitialiseMessages.inc
+++ b/maintenance/InitialiseMessages.inc
@@ -9,20 +9,26 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) {
global $wgOut, $wgArticle, $wgUser;
global $wgMessageCache, $wgMemc, $wgDBname, $wgUseMemCached;
+ # Initialise $wgOut and $wgUser for a command line script
+ $wgOut->disable();
+
+ $wgUser = new User;
+ $wgUser->setLoaded( true ); # Don't load from DB
+ $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 );
- $mwMsg =& MagicWord::get( MAG_MSG );
- $navText = str_replace( "$1", "allmessagestext", $mwMsg->getSynonym( 0 ) );
+ $navText = '{{int:allmessagestext}}';
$navText .= "
<table border=1 width=100%><tr><td>
@@ -39,7 +45,7 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) {
# Get keys from $wgAllMessagesEn, which is more complete than the local language
$first = true;
if ( $messageArray ) {
- $sortedArray = $wgAllMessagesEn;
+ $sortedArray = $messageArray;
} else {
$sortedArray = $wgAllMessagesEn;
}
@@ -48,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 );
@@ -68,10 +74,10 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) {
# Decide whether or not each one needs to be overwritten
$existingTitles = array();
while ( $row ) {
- if ( !$row->cur_is_new || $row->cur_user_text != $username ) {
- $existingTitles[$row->cur_title] = "keep";
+ if ( $row->cur_user_text != $username ) {
+ $existingTitles[$row->cur_title] = 'keep';
} else {
- $existingTitles[$row->cur_title] = "chuck";
+ $existingTitles[$row->cur_title] = 'chuck';
}
$row = wfFetchObject( $res );
@@ -83,14 +89,12 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) {
cur_user_text, cur_timestamp, cur_restrictions,
cur_is_new, inverse_timestamp, cur_touched) VALUES ";
$first = true;
- $mwObj =& MagicWord::get( MAG_MSGNW );
- $msgnw = $mwObj->getSynonym( 0 );
$talk = $wgLang->getNsText( NS_TALK );
$mwtalk = $wgLang->getNsText( NS_MEDIAWIKI_TALK );
# Process each message
foreach ( $sortedArray as $key => $enMsg ) {
- if ( $key == "" ) {
+ if ( $key == '' ) {
continue; // Skip odd members
}
# Get message text
@@ -104,19 +108,12 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) {
$dbencMsg = wfStrencode( $message );
# Update messages which already exist
- # Note: UPDATE is now used instead of DELETE/INSERT to avoid wiping cur_restrictions
if ( array_key_exists( $title, $existingTitles ) ) {
- if ( $existingTitles[$title] == "chuck" || $overwrite) {
- wfQuery( "UPDATE cur
- SET
- cur_text='$dbencMsg',
- cur_user=0,
- cur_user_text='$username',
- cur_timestamp='$timestamp',
- cur_touched='$timestamp',
- inverse_timestamp='$invTimestamp'
- WHERE cur_namespace=8 and cur_title='$title'", DB_WRITE
- );
+ if ( $existingTitles[$title] == 'chuck' || $overwrite) {
+ # print "$title\n";
+ $mwTitleObj = Title::makeTitle( NS_MEDIAWIKI, $title );
+ $article = new Article( $mwTitleObj );
+ $article->quickEdit( $message );
}
$doInsert = false;
} else {
@@ -124,7 +121,7 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) {
if ( $first ) {
$first = false;
} else {
- $sql .= ",";
+ $sql .= ',';
}
$sql .=
"($ns,
@@ -139,8 +136,6 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) {
}
# Make table row for navigation page
- $mw = str_replace( "$1", $key, $msgnw );
-
$message = wfEscapeWikiText( $message );
$navText .=
"<tr><td>
@@ -149,7 +144,7 @@ function initialiseMessages( $overwrite = false, $messageArray = false ) {
</td><td>
$message
</td><td>
-$mw
+{{int:$title}}
</td></tr>";
}
@@ -160,9 +155,9 @@ $mw
# Write the navigation page
- $navText .= "</table>";
- $title = wfMsgNoDB( "allmessages" );
- $titleObj = Title::makeTitle( NS_MEDIAWIKI, $title );
+ $navText .= '</table>';
+ $title = wfMsgNoDB( 'allmessages' );
+ $titleObj = Title::makeTitle( NS_WIKIPEDIA, $title );
$wgArticle = new Article( $titleObj );
$wgOut->disable();
$wgUser = User::newFromName( 'MediaWiki default' );
@@ -174,16 +169,25 @@ $mw
# 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";
}
}
-function loadArrayFromFile( $filename )
+function loadLanguageFile( $filename )
{
$contents = file_get_contents( $filename );
+ # Remove header line
+ $p = strpos( $contents, "\n" ) + 1;
+ $contents = substr( $contents, $p );
+ # Unserialize
return unserialize( $contents );
}
+function doUpdates() {
+ global $wgDeferredUpdateList;
+ foreach ( $wgDeferredUpdateList as $up ) { $up->doUpdate(); }
+}
+
?>
diff --git a/maintenance/archives/importTests.php b/maintenance/archives/importTests.php
index ef751a759eaf..6e283790dbaa 100644
--- a/maintenance/archives/importTests.php
+++ b/maintenance/archives/importTests.php
@@ -26,7 +26,7 @@ $testingonly = true;
setlocale( LC_ALL, "C" );
-include( "importUseModWiki.php" );
+include_once( "importUseModWiki.php" );
$wgRootDirectory = "./testconvert";
runTests();
diff --git a/maintenance/archives/moveCustomMessages.inc b/maintenance/archives/moveCustomMessages.inc
new file mode 100644
index 000000000000..5438194690a1
--- /dev/null
+++ b/maintenance/archives/moveCustomMessages.inc
@@ -0,0 +1,149 @@
+<?php
+
+function isTemplateInitialised() {
+ $sql = "SELECT 1 FROM cur WHERE cur_namespace=" . NS_TEMPLATE . " LIMIT 1";
+ $res = wfQuery( $sql, DB_READ );
+ return wfNumRows( $res ) ? true : false;
+}
+
+function moveCustomMessages( $phase ) {
+ global $wgUser, $wgAllMessagesEn, $wgDeferredUpdateList, $wgLang;
+ global $targets, $template, $replaceCount;
+
+ $wgUser = new User;
+ $wgUser->setLoaded( true ); # Don't load from DB
+ $wgUser->setName( "Template namespace initialisation script" );
+ $wgUser->addRight( "bot" );
+
+ wfIgnoreSQLErrors( true );
+
+ # Compose DB key array
+ $dbkeys = array();
+
+ foreach ( $wgAllMessagesEn as $key => $enValue ) {
+ $title = Title::newFromText( $key );
+ $dbkeys[$title->getDBkey()] = 1;
+ }
+
+ $sql = "SELECT cur_id, cur_title FROM cur WHERE cur_namespace= " . NS_MEDIAWIKI;
+ $res = wfQuery( $sql, DB_READ );
+
+ # Compile target array
+ $targets = array();
+ while ( $row = wfFetchObject( $res ) ) {
+ if ( !array_key_exists( $row->cur_title, $dbkeys ) ) {
+ $targets[$row->cur_title] = 1;
+ }
+ }
+ wfFreeResult( $res );
+
+ # Create redirects from destination to source
+ if ( $phase == 0 || $phase == 1 ) {
+ print "Creating redirects\n";
+ foreach ( $targets as $partial => $dummy ) {
+ print "$partial...";
+ $nt = Title::makeTitle( NS_TEMPLATE, $partial );
+ $ot = Title::makeTitle( NS_MEDIAWIKI, $partial );
+
+ if ( $nt->createRedirect( $ot, "" ) ) {
+ print "redirected\n";
+ } else {
+ print "not redirected\n";
+ }
+ }
+ if ( $phase == 0 ) {
+ print "\nRedirects created. Update live script files now.\nPress ENTER to continue.\n\n";
+ readconsole();
+ }
+ }
+
+ # Move pages
+ 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...";
+
+ if ( $ot->moveNoAuth( $nt ) === true ) {
+ print "moved\n";
+ } else {
+ print "not moved\n";
+ }
+ # Do deferred updates
+ while ( count( $wgDeferredUpdateList ) ) {
+ $up = array_pop( $wgDeferredUpdateList );
+ $up->doUpdate();
+ }
+ wfQuery( "COMMIT", DB_WRITE );
+ }
+ }
+
+ # Convert text
+ if ( $phase == 0 || $phase == 3 ) {
+ print "\nConverting text...\n";
+
+ $parser = new Parser;
+ $options = ParserOptions::newFromUser( $wgUser );
+ $completedTitles = array();
+ $titleChars = Title::legalChars();
+ $mediaWiki = $wgLang->getNsText( NS_MEDIAWIKI );
+ $template = $wgLang->getNsText( NS_TEMPLATE );
+ $linkRegex = "/\[\[$mediaWiki:([$titleChars]*?)\]\]/";
+ $msgRegex = "/{{msg:([$titleChars]*?)}}/";
+
+ foreach ( $targets as $partial => $dummy ) {
+ $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;
+ $id = $source->getArticleID();
+ $row = wfGetArray( 'cur', array( 'cur_text' ),
+ array( 'cur_id' => $source->getArticleID() ) );
+ $parser->startExternalParse( $source, $options, OT_WIKI );
+ $text = $parser->strip( $row->cur_text, $stripState, false );
+ # {{msg}} -> {{}}
+ $text = preg_replace( $msgRegex, "{{\$1}}", $text );
+ # [[MediaWiki:]] -> [[Template:]]
+ $text = preg_replace_callback( $linkRegex, "wfReplaceMediaWiki", $text );
+ $text = $parser->unstrip( $text, $stripState );
+ $text = $parser->unstripNoWiki( $text, $stripState );
+ if ( $text != $row->cur_text ) {
+ print "$pdbk\n";
+ $art = new Article( $source );
+ $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 );
+ }
+ }
+ }
+}
+
+
+#--------------------------------------------------------------------------------------------------------------
+function wfReplaceMediaWiki( $m ) {
+ global $targets, $template, $replaceCount;
+ $title = Title::newFromText( $m[1] );
+ $partial = $title->getDBkey();
+
+ if ( array_key_exists( $partial, $targets ) ) {
+ $text = "[[$template:{$m[1]}]]";
+ } else {
+ $text = $m[0];
+ }
+ return $text;
+}
+
+?>
diff --git a/maintenance/archives/moveCustomMessages.php b/maintenance/archives/moveCustomMessages.php
index bcd49743501c..454bc830781d 100644
--- a/maintenance/archives/moveCustomMessages.php
+++ b/maintenance/archives/moveCustomMessages.php
@@ -8,132 +8,14 @@
# 3. Convert the text to suit the new syntax
chdir( ".." );
-require_once( "commandLine.inc" );
+require_once( "liveCmdLine.inc" );
+require_once( "moveCustomMessages.inc" );
$phase = 0;
-if ( is_numeric( @$argv[2] ) && $argv[2] > 0) {
- $phase = intval($argv[2]);
+if ( is_numeric( @$argv[3] ) && $argv[3] > 0) {
+ $phase = intval($argv[3]);
}
-$wgUser = new User;
-$wgUser->setLoaded( true ); # Don't load from DB
-$wgUser->setName( "Template namespace initialisation script" );
-$wgUser->addRight( "bot" );
+moveCustomMessages( $phase );
-# Compose DB key array
-global $wgAllMessagesEn;
-$dbkeys = array();
-
-foreach ( $wgAllMessagesEn as $key => $enValue ) {
- $title = Title::newFromText( $key );
- $dbkeys[$title->getDBkey()] = 1;
-}
-
-$sql = "SELECT cur_id, cur_title FROM cur WHERE cur_namespace= " . NS_MEDIAWIKI;
-$res = wfQuery( $sql, DB_READ );
-
-# Compile target array
-$targets = array();
-while ( $row = wfFetchObject( $res ) ) {
- if ( !array_key_exists( $row->cur_title, $dbkeys ) ) {
- $targets[$row->cur_title] = 1;
- }
-}
-wfFreeResult( $res );
-
-# Create redirects from destination to source
-if ( $phase == 0 || $phase == 1 ) {
- foreach ( $targets as $partial => $dummy ) {
- print "$partial...";
- $nt = Title::makeTitle( NS_TEMPLATE, $partial );
- $ot = Title::makeTitle( NS_MEDIAWIKI, $partial );
-
- if ( $nt->createRedirect( $ot, "" ) ) {
- print "redirected\n";
- } else {
- print "not redirected\n";
- }
- }
- if ( $phase == 0 ) {
- print "\nRedirects created. Update live script files now.\nPress ENTER to continue.\n\n";
- readconsole();
- }
-}
-
-# Move pages
-if ( $phase == 0 || $phase == 2 ) {
- print "\n";
- foreach ( $targets as $partial => $dummy ) {
- $ot = Title::makeTitle( NS_MEDIAWIKI, $partial );
- $nt = Title::makeTitle( NS_TEMPLATE, $partial );
- print "$partial...";
-
- if ( $ot->moveNoAuth( $nt ) === true ) {
- print "moved\n";
- } else {
- print "not moved\n";
- }
- # Do deferred updates
- while ( count( $wgDeferredUpdateList ) ) {
- $up = array_pop( $wgDeferredUpdateList );
- $up->doUpdate();
- }
- }
-}
-
-# Convert text
-if ( $phase == 0 || $phase == 3 ) {
- print "\n";
-
- $parser = new Parser;
- $options = ParserOptions::newFromUser( $wgUser );
- $completedTitles = array();
- $titleChars = Title::legalChars();
- $mediaWiki = $wgLang->getNsText( NS_MEDIAWIKI );
- $template = $wgLang->getNsText( NS_TEMPLATE );
- $linkRegex = "/\[\[$mediaWiki:([$titleChars]*?)\]\]/";
- $msgRegex = "/{{msg:([$titleChars]*?)}}/";
-
- foreach ( $targets as $partial => $dummy ) {
- $dest = Title::makeTitle( NS_TEMPLATE, $partial );
- $linksTo = $dest->getLinksTo();
- foreach( $linksTo as $source ) {
- $pdbk = $source->getPrefixedDBkey();
- print "$pdbk...";
- if ( !array_key_exists( $pdbk, $completedTitles ) ) {
- $completedTitles[$pdbk] = 1;
- $id = $source->getArticleID();
- $row = wfGetArray( 'cur', array( 'cur_text' ),
- array( 'cur_id' => $source->getArticleID() ) );
- $parser->startExternalParse( $source, $options, OT_WIKI );
- $text = $parser->strip( $row->cur_text, $stripState, false );
- # {{msg}} -> {{}}
- $text = preg_replace( $msgRegex, "{{\$1}}", $text );
- # [[MediaWiki:]] -> [[Template:]]
- $text = preg_replace_callback( $linkRegex, "wfReplaceMediaWiki", $text );
- $text = $parser->unstrip( $text, $stripState );
- if ( $text != $row->cur_text ) {
- wfUpdateArray( 'cur', array( 'cur_text' => $text ), array( 'cur_id' => $id ) );
- print "modified\n";
- } else {
- print "not modified\n";
- }
- }
- }
- }
-}
-
-#--------------------------------------------------------------------------------------------------------------
-function wfReplaceMediaWiki( $m ) {
- global $targets, $template, $replaceCount;
- $title = Title::newFromText( $m[1] );
- $partial = $title->getDBkey();
-
- if ( array_key_exists( $partial, $targets ) ) {
- $text = "[[$template:{$m[1]}]]";
- } else {
- $text = $m[0];
- }
- return $text;
-}
?>
diff --git a/maintenance/archives/patch-linkscc-1.3.sql b/maintenance/archives/patch-linkscc-1.3.sql
new file mode 100644
index 000000000000..6f9e6313532e
--- /dev/null
+++ b/maintenance/archives/patch-linkscc-1.3.sql
@@ -0,0 +1,6 @@
+--
+-- linkscc table used to cache link lists in easier to digest form.
+-- New schema for 1.3 - removes old lcc_title column.
+-- May 2004
+--
+ALTER TABLE linkscc DROP COLUMN lcc_title; \ No newline at end of file
diff --git a/maintenance/archives/patch-profiling.sql b/maintenance/archives/patch-profiling.sql
new file mode 100644
index 000000000000..ea9974ce3f76
--- /dev/null
+++ b/maintenance/archives/patch-profiling.sql
@@ -0,0 +1,10 @@
+-- profiling table
+-- This is optional
+
+CREATE TABLE profiling (
+ pf_count integer not null default 0,
+ pf_time float not null default 0,
+ pf_name varchar(255) not null default '',
+ UNIQUE KEY pf_name (pf_name)
+);
+
diff --git a/maintenance/archives/patch-rc_id.sql b/maintenance/archives/patch-rc_id.sql
new file mode 100644
index 000000000000..3adbbf937a0b
--- /dev/null
+++ b/maintenance/archives/patch-rc_id.sql
@@ -0,0 +1,7 @@
+-- Primary key in recentchanges
+
+ALTER TABLE recentchanges
+ ADD rc_id int(8) NOT NULL auto_increment,
+ ADD PRIMARY KEY rc_id (rc_id);
+
+
diff --git a/maintenance/archives/patch-rc_ip.sql b/maintenance/archives/patch-rc_ip.sql
new file mode 100644
index 000000000000..6106d93380f1
--- /dev/null
+++ b/maintenance/archives/patch-rc_ip.sql
@@ -0,0 +1,7 @@
+-- Adding the rc_ip field for logging of IP addresses in recentchanges
+
+ALTER TABLE recentchanges
+ ADD rc_ip char(15) NOT NULL default '',
+ ADD INDEX rc_ip (rc_ip);
+
+
diff --git a/maintenance/attribute.php b/maintenance/attribute.php
index 56c2d2acb3ec..a6dcf4a67346 100644
--- a/maintenance/attribute.php
+++ b/maintenance/attribute.php
@@ -1,31 +1,20 @@
<?php
+# Script for re-attributing edits
+require_once( "commandLine.inc" );
# Parameters
-
-if ($argc < 4) {
+if ( count( $args ) < 2 ) {
print "Not enough parameters\n";
- print "Usage: php attribute.php <lang> <source> <destination>\n";
+ if ( $wgWikiFarm ) {
+ print "Usage: php attribute.php <language> <site> <source> <destination>\n";
+ } else {
+ print "Usage: php attribute.php <source> <destination>\n";
+ }
exit;
}
-$lang = $argv[1];
-$source = $argv[2];
-$dest = $argv[3];
-
-# Initialisation
-
-$wgCommandLineMode = true;
-$DP = "../includes";
-
-$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-ini_set( "include_path", "$IP$sep$include_path" );
-
-require_once( "/apache/htdocs/$lang/w/LocalSettings.php" );
-require_once( "Setup.php" );
-
-$wgTitle = Title::newFromText( "Changing attribution script" );
-set_time_limit(0);
-$wgCommandLineMode = true;
+$source = $args[0];
+$dest = $args[1];
$eSource = wfStrencode( $source );
$eDest = wfStrencode( $dest );
diff --git a/maintenance/checktrans2.php b/maintenance/checktrans2.php
index a45d972f6994..ac6b676cb258 100755
--- a/maintenance/checktrans2.php
+++ b/maintenance/checktrans2.php
@@ -1,4 +1,5 @@
<?php
+die("This script is not being maintained.");
# Checks translation of all language files
diff --git a/maintenance/commandLine.inc b/maintenance/commandLine.inc
index f868b0bfc783..8a62dbf8f59a 100644
--- a/maintenance/commandLine.inc
+++ b/maintenance/commandLine.inc
@@ -1,41 +1,126 @@
<?php
+# Abort if called from a web server
if ( isset( $_SERVER ) && array_key_exists( 'REQUEST_METHOD', $_SERVER ) ) {
print "This script must be run from the command line\n";
exit();
}
-$wgCommandLineMode = true;
+# Process command line arguments
+# $options becomes an array with keys set to the option names
+# $optionsWithArgs is an array of GNU-style options that take an argument. The arguments are returned
+# in the values of $options.
+
+if ( !isset( $optionsWithArgs ) ) {
+ $optionsWithArgs = array();
+}
+
+$self = array_shift( $argv );
+$IP = realpath( dirname( $self ) . "/.." );
+chdir( $IP );
+
+$options = array();
+$args = array();
+for( $arg = reset( $argv ); $arg !== false; $arg = next( $argv ) ) {
+ if ( substr( $arg, 0, 2 ) == '--' ) {
+ # Long options
+ $option = substr( $arg, 2 );
+ if ( in_array( $option, $optionsWithArgs ) ) {
+ $param = next( $argv );
+ if ( $param === false ) {
+ die( "$arg needs an value after it\n" );
+ }
+ $options[$option] = $param;
+ } else {
+ $options[$option] = 1;
+ }
+ } elseif ( $arg{0} == '-' ) {
+ # Short options
+ for ( $p=1; $p<strlen( $arg ); $p++ ) {
+ $option = $arg{$p};
+ if ( in_array( $option, $optionsWithArgs ) ) {
+ $param = next( $argv );
+ if ( $param === false ) {
+ die( "$arg needs an value after it\n" );
+ }
+ $options[$option] = $param;
+ } else {
+ $options[$option] = 1;
+ }
+ }
+ } else {
+ $args[] = $arg;
+ }
+}
+
+# General initialisation
+
+$wgCommandLineMode = true;
+# Turn off output buffering if it's on
+@ob_end_flush();
$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-if ( @$argv[1] && @$argv[1] != "-" ) {
- $lang = $argv[1];
+
+if ( $sep == ":" && strpos( `hostname -a`, "wikimedia.org" ) !== false ) {
+ $wgWikiFarm = true;
+ if ( isset( $args[0] ) ) {
+ $lang = array_shift( $args );
+ } else {
+ $lang = "aa";
+ }
+ if ( isset( $args[0] ) ) {
+ $site = array_shift( $args );
+ } else {
+ $site = "wikipedia";
+ }
+
+ # This is for the IRC scripts, which now run as the apache user
+ # The apache user doesn't have access to the wikiadmin_pass command
+ if ( $_ENV['USER'] != "apache" ) {
+ $admin = true;
+ $wgDBuser = $wgDBadminuser = "wikiadmin";
+ $wgDBpassword = $wgDBadminpassword = trim(`wikiadmin_pass`);
+ }
+
putenv( "wikilang=$lang");
- $settingsFile = "/apache/htdocs/{$argv[1]}/w/LocalSettings.php";
- $newpath = "/apache/common/php$sep";
+
+ $DP = $IP;
+ ini_set( "include_path", ".:$IP:$IP/includes:$IP/languages:$IP/maintenance" );
+
+ require_once( "/home/wikipedia/common/php-new/CommonSettings.php" );
+ if ( $admin ) {
+ $wgDBuser = $wgDBadminuser = "wikiadmin";
+ $wgDBpassword = $wgDBadminpassword = trim(`wikiadmin_pass`);
+ }
+
} else {
- $settingsFile = "../LocalSettings.php";
- $newpath = "";
-}
+ $wgWikiFarm = false;
+ $settingsFile = "$IP/LocalSettings.php";
-if ( ! is_readable( $settingsFile ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "must exist in the source directory.\n";
- exit();
+ if ( ! is_readable( $settingsFile ) ) {
+ print "A copy of your installation's LocalSettings.php\n" .
+ "must exist in the source directory.\n";
+ exit();
+ }
+ $wgCommandLineMode = true;
+ $DP = $IP;
+ include_once( $settingsFile );
+ ini_set( "include_path", ".$sep$IP$sep$IP/includes$sep$IP/languages$sep$IP/maintenance" );
+ include_once( "$IP/AdminSettings.php" );
+ $wgDBuser = $wgDBadminuser;
+ $wgDBpassword = $wgDBadminpassword;
}
-
+# Turn off output buffering again, it might have been turned on in the settings files
+@ob_end_flush();
+# Same with this
$wgCommandLineMode = true;
-$DP = "../includes";
-include_once( $settingsFile );
-ini_set( "include_path", "../includes$sep../languages$sep$newpath$IP$sep$include_path" );
$wgUsePHPTal = false;
define("MEDIAWIKI",true);
-include_once( "Setup.php" );
-include_once( "./InitialiseMessages.inc" );
-include_once( "../install-utils.inc" );
-$wgTitle = Title::newFromText( "Rebuild messages script" );
-$wgCommandLineMode = true;
+require_once( "Setup.php" );
+require_once( "install-utils.inc" );
+$wgTitle = Title::newFromText( "Command line script" );
set_time_limit(0);
+
?>
diff --git a/maintenance/compressOld.inc b/maintenance/compressOld.inc
index ff47e15f96d7..8da4272571c2 100644
--- a/maintenance/compressOld.inc
+++ b/maintenance/compressOld.inc
@@ -1,7 +1,5 @@
<?php
-include_once( "Article.php" );
-
function compressOldPages( $start = 0 ) {
$chunksize = 50;
print "Starting from old_id $start...\n";
diff --git a/maintenance/compressOld.php b/maintenance/compressOld.php
index d3b88ddf9927..0d3531376efa 100644
--- a/maintenance/compressOld.php
+++ b/maintenance/compressOld.php
@@ -1,29 +1,9 @@
<?php
-# Rebuild search index table from scratch. This takes several
-# hours, depending on the database size and server configuration.
+# Compress the old table, old_flags=gzip
-if ( ! is_readable( "../LocalSettings.php" ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "must exist in the source directory.\n";
- exit();
-}
-
-$wgCommandLineMode = true;
-$DP = "../includes";
-require_once( "../LocalSettings.php" );
-require_once( "../AdminSettings.php" );
-
-$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-ini_set( "include_path", "$IP$sep$include_path" );
-
-require_once( "Setup.php" );
-require_once( "./compressOld.inc" );
-$wgTitle = Title::newFromText( "Compress old pages script" );
-set_time_limit(0);
-
-$wgDBuser = $wgDBadminuser;
-$wgDBpassword = $wgDBadminpassword;
+require_once( "commandLine.inc" );
+require_once( "compressOld.inc" );
if( !function_exists( "gzdeflate" ) ) {
print "You must enable zlib support in PHP to compress old revisions!\n";
diff --git a/maintenance/convertLinks.inc b/maintenance/convertLinks.inc
new file mode 100644
index 000000000000..861ed1badcbf
--- /dev/null
+++ b/maintenance/convertLinks.inc
@@ -0,0 +1,202 @@
+<?php
+
+function convertLinks() {
+ print "Converting links table to ID-ID...\n";
+
+ global $wgLang, $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname;
+ global $noKeys, $logPerformance, $fh;
+
+ $numRows = $tuplesAdded = $numBadLinks = $curRowsRead = 0; #counters etc
+ $totalTuplesInserted = 0; # total tuples INSERTed into links_temp
+
+ $reportCurReadProgress = true; #whether or not to give progress reports while reading IDs from cur table
+ $curReadReportInterval = 1000; #number of rows between progress reports
+
+ $reportLinksConvProgress = true; #whether or not to give progress reports during conversion
+ $linksConvInsertInterval = 1000; #number of rows per INSERT
+
+ $initialRowOffset = 0;
+ #$finalRowOffset = 0; # not used yet; highest row number from links table to process
+
+ # Overwrite the old links table with the new one. If this is set to false,
+ # the new table will be left at links_temp.
+ $overwriteLinksTable = true;
+
+ # Don't create keys, and so allow duplicates in the new links table.
+ # This gives a huge speed improvement for very large links tables which are MyISAM. (What about InnoDB?)
+ $noKeys = false;
+
+
+ $logPerformance = false; # output performance data to a file
+ $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 "Updating schema (no rows to convert)...\n";
+ createTempTable();
+ } else {
+ if ( $logPerformance ) { $fh = fopen ( $perfLogFilename, "w" ); }
+ $baseTime = $startTime = getMicroTime();
+ # Create a title -> cur_id map
+ print "Loading IDs from cur table...\n";
+ performanceLog ( "Reading $numRows rows from cur table...\n" );
+ performanceLog ( "rows read vs seconds elapsed:\n" );
+ wfBufferSQLResults( false );
+ $res = wfQuery( "SELECT cur_namespace,cur_title,cur_id FROM cur", DB_WRITE );
+ $ids = array();
+
+ while ( $row = wfFetchObject( $res ) ) {
+ $title = $row->cur_title;
+ if ( $row->cur_namespace ) {
+ $title = $wgLang->getNsText( $row->cur_namespace ) . ":$title";
+ }
+ $ids[$title] = $row->cur_id;
+ $curRowsRead++;
+ if ($reportCurReadProgress) {
+ if (($curRowsRead % $curReadReportInterval) == 0) {
+ performanceLog( $curRowsRead . " " . (getMicroTime() - $baseTime) . "\n" );
+ print "\t$curRowsRead rows of cur table read.\n";
+ }
+ }
+ }
+ wfFreeResult( $res );
+ wfBufferSQLResults( true );
+ print "Finished loading IDs.\n\n";
+ performanceLog( "Took " . (getMicroTime() - $baseTime) . " seconds to load IDs.\n\n" );
+ #--------------------------------------------------------------------
+
+ # Now, step through the links table (in chunks of $linksConvInsertInterval rows),
+ # convert, and write to the new table.
+ createTempTable();
+ performanceLog( "Resetting timer.\n\n" );
+ $baseTime = getMicroTime();
+ print "Processing $numRows rows from links table...\n";
+ performanceLog( "Processing $numRows rows from links table...\n" );
+ performanceLog( "rows inserted vs seconds elapsed:\n" );
+
+ for ($rowOffset = $initialRowOffset; $rowOffset < $numRows; $rowOffset += $linksConvInsertInterval) {
+ $sqlRead = "SELECT * FROM links ".wfLimitResult($linksConvInsertInterval,$rowOffset);
+ $res = wfQuery($sqlRead, DB_READ);
+ if ( $noKeys ) {
+ $sqlWrite = array("INSERT INTO links_temp(l_from,l_to) VALUES ");
+ } else {
+ $sqlWrite = array("INSERT IGNORE INTO links_temp(l_from,l_to) VALUES ");
+ }
+
+ $tuplesAdded = 0; # no tuples added to INSERT yet
+ while ( $row = wfFetchObject($res) ) {
+ $fromTitle = $row->l_from;
+ if ( array_key_exists( $fromTitle, $ids ) ) { # valid title
+ $from = $ids[$fromTitle];
+ $to = $row->l_to;
+ if ( $tuplesAdded != 0 ) {
+ $sqlWrite[] = ",";
+ }
+ $sqlWrite[] = "($from,$to)";
+ $tuplesAdded++;
+ } else { # invalid title
+ $numBadLinks++;
+ }
+ }
+ wfFreeResult($res);
+ #print "rowOffset: $rowOffset\ttuplesAdded: $tuplesAdded\tnumBadLinks: $numBadLinks\n";
+ if ( $tuplesAdded != 0 ) {
+ if ($reportLinksConvProgress) {
+ print "Inserting $tuplesAdded tuples into links_temp...";
+ }
+ wfQuery( implode("",$sqlWrite) , DB_WRITE );
+ $totalTuplesInserted += $tuplesAdded;
+ if ($reportLinksConvProgress)
+ print " done. Total $totalTuplesInserted tuples inserted.\n";
+ performanceLog( $totalTuplesInserted . " " . (getMicroTime() - $baseTime) . "\n" );
+ }
+ }
+ print "$totalTuplesInserted valid titles and $numBadLinks invalid titles were processed.\n\n";
+ performanceLog( "$totalTuplesInserted valid titles and $numBadLinks invalid titles were processed.\n" );
+ performanceLog( "Total execution time: " . (getMicroTime() - $startTime) . " seconds.\n" );
+ if ( $logPerformance ) { fclose ( $fh ); }
+ }
+ #--------------------------------------------------------------------
+
+ if ( $overwriteLinksTable ) {
+ $dbConn = Database::newFromParams( $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname );
+ if (!($dbConn->isOpen())) {
+ print "Opening connection to database failed.\n";
+ return;
+ }
+ # Check for existing links_backup, and delete it if it exists.
+ print "Dropping backup links table if it exists...";
+ $dbConn->query( "DROP TABLE IF EXISTS links_backup", DB_WRITE);
+ print " done.\n";
+
+ # Swap in the new table, and move old links table to links_backup
+ print "Swapping tables 'links' to 'links_backup'; 'links_temp' to 'links'...";
+ $dbConn->query( "RENAME TABLE links TO links_backup, links_temp TO links", DB_WRITE );
+ print " done.\n\n";
+
+ # $dbConn->close();
+ print "Conversion complete. The old table remains at links_backup;\n";
+ print "delete at your leisure.\n";
+ } else {
+ print "Conversion complete. The converted table is at links_temp;\n";
+ print "the original links table is unchanged.\n";
+ }
+}
+
+#--------------------------------------------------------------------
+
+function createTempTable() {
+ global $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname;
+ global $noKeys;
+ $dbConn = Database::newFromParams( $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname );
+
+ if (!($dbConn->isOpen())) {
+ print "Opening connection to database failed.\n";
+ return;
+ }
+
+ print "Dropping temporary links table if it exists...";
+ $dbConn->query( "DROP TABLE IF EXISTS links_temp", DB_WRITE);
+ print " done.\n";
+
+ print "Creating temporary links table...";
+ if ( $noKeys ) {
+ $dbConn->query( "CREATE TABLE links_temp ( " .
+ "l_from int(8) unsigned NOT NULL default '0', " .
+ "l_to int(8) unsigned NOT NULL default '0')", DB_WRITE);
+ } else {
+ $dbConn->query( "CREATE TABLE links_temp ( " .
+ "l_from int(8) unsigned NOT NULL default '0', " .
+ "l_to int(8) unsigned NOT NULL default '0', " .
+ "UNIQUE KEY l_from(l_from,l_to), " .
+ "KEY (l_to))", DB_WRITE);
+ }
+ print " done.\n\n";
+}
+
+function performanceLog( $text ) {
+ global $logPerformance, $fh;
+ if ( $logPerformance ) {
+ fwrite( $fh, $text );
+ }
+}
+
+function getMicroTime() { # return time in seconds, with microsecond accuracy
+ list($usec, $sec) = explode(" ", microtime());
+ return ((float)$usec + (float)$sec);
+}
+
+
+
+?>
diff --git a/maintenance/convertLinks.php b/maintenance/convertLinks.php
index 8e3bb51799e4..3511e407d5ce 100644
--- a/maintenance/convertLinks.php
+++ b/maintenance/convertLinks.php
@@ -3,196 +3,8 @@
# The wiki should be put into read-only mode while this script executes
require_once( "commandLine.inc" );
-# the below should probably be moved into commandLine.inc at some point
-require_once( "../AdminSettings.php" );
+require_once( "convertLinks.inc" );
-$numRows = $tuplesAdded = $numBadLinks = $curRowsRead = 0; #counters etc
-$totalTuplesInserted = 0; # total tuples INSERTed into links_temp
+convertLinks();
-$reportCurReadProgress = true; #whether or not to give progress reports while reading IDs from cur table
-$curReadReportInterval = 1000; #number of rows between progress reports
-
-$reportLinksConvProgress = true; #whether or not to give progress reports during conversion
-$linksConvInsertInterval = 1000; #number of rows per INSERT
-
-$initialRowOffset = 0;
-#$finalRowOffset = 0; # not used yet; highest row number from links table to process
-
-# Overwrite the old links table with the new one. If this is set to false,
-# the new table will be left at links_temp.
-$overwriteLinksTable = true;
-
-# Don't create keys, and so allow duplicates in the new links table.
-# This gives a huge speed improvement for very large links tables which are MyISAM. (What about InnoDB?)
-$noKeys = false;
-
-
-$logPerformance = false; # output performance data to a file
-$perfLogFilename = "convLinksPerf.txt";
-#--------------------------------------------------------------------
-
-$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";
- createTempTable();
-} else {
- $row = wfFetchObject( $res );
- if ( is_numeric( $row->l_from ) ) {
- print "Schema already converted\n";
- exit;
- }
-
- if ( $logPerformance ) { $fh = fopen ( $perfLogFilename, "w" ); }
- $baseTime = $startTime = getMicroTime();
- # Create a title -> cur_id map
- print "Loading IDs from cur table...\n";
- performanceLog ( "Reading $numRows rows from cur table...\n" );
- performanceLog ( "rows read vs seconds elapsed:\n" );
- wfBufferSQLResults( false );
- $res = wfQuery( "SELECT cur_namespace,cur_title,cur_id FROM cur", DB_WRITE );
- $ids = array();
-
- while ( $row = wfFetchObject( $res ) ) {
- $title = $row->cur_title;
- if ( $row->cur_namespace ) {
- $title = $wgLang->getNsText( $row->cur_namespace ) . ":$title";
- }
- $ids[$title] = $row->cur_id;
- $curRowsRead++;
- if ($reportCurReadProgress) {
- if (($curRowsRead % $curReadReportInterval) == 0) {
- performanceLog( $curRowsRead . " " . (getMicroTime() - $baseTime) . "\n" );
- print "\t$curRowsRead rows of cur table read.\n";
- }
- }
- }
- wfFreeResult( $res );
- wfBufferSQLResults( true );
- print "Finished loading IDs.\n\n";
- performanceLog( "Took " . (getMicroTime() - $baseTime) . " seconds to load IDs.\n\n" );
-#--------------------------------------------------------------------
-
- # Now, step through the links table (in chunks of $linksConvInsertInterval rows),
- # convert, and write to the new table.
- createTempTable();
- performanceLog( "Resetting timer.\n\n" );
- $baseTime = getMicroTime();
- print "Processing $numRows rows from links table...\n";
- performanceLog( "Processing $numRows rows from links table...\n" );
- performanceLog( "rows inserted vs seconds elapsed:\n" );
-
- for ($rowOffset = $initialRowOffset; $rowOffset < $numRows; $rowOffset += $linksConvInsertInterval) {
- $sqlRead = "SELECT * FROM links LIMIT $linksConvInsertInterval OFFSET $rowOffset";
- $res = wfQuery($sqlRead, DB_READ);
- if ( $noKeys ) {
- $sqlWrite = array("INSERT INTO links_temp(l_from,l_to) VALUES ");
- } else {
- $sqlWrite = array("INSERT IGNORE INTO links_temp(l_from,l_to) VALUES ");
- }
-
- $tuplesAdded = 0; # no tuples added to INSERT yet
- while ( $row = wfFetchObject($res) ) {
- $fromTitle = $row->l_from;
- if ( array_key_exists( $fromTitle, $ids ) ) { # valid title
- $from = $ids[$fromTitle];
- $to = $row->l_to;
- if ( $tuplesAdded != 0 ) {
- $sqlWrite[] = ",";
- }
- $sqlWrite[] = "($from,$to)";
- $tuplesAdded++;
- } else { # invalid title
- $numBadLinks++;
- }
- }
- wfFreeResult($res);
- #print "rowOffset: $rowOffset\ttuplesAdded: $tuplesAdded\tnumBadLinks: $numBadLinks\n";
- if ( $tuplesAdded != 0 ) {
- if ($reportLinksConvProgress) {
- print "Inserting $tuplesAdded tuples into links_temp...";
- }
- wfQuery( implode("",$sqlWrite) , DB_WRITE );
- $totalTuplesInserted += $tuplesAdded;
- if ($reportLinksConvProgress)
- print " done. Total $totalTuplesInserted tuples inserted.\n";
- performanceLog( $totalTuplesInserted . " " . (getMicroTime() - $baseTime) . "\n" );
- }
- }
- print "$totalTuplesInserted valid titles and $numBadLinks invalid titles were processed.\n\n";
- performanceLog( "$totalTuplesInserted valid titles and $numBadLinks invalid titles were processed.\n" );
- performanceLog( "Total execution time: " . (getMicroTime() - $startTime) . " seconds.\n" );
- if ( $logPerformance ) { fclose ( $fh ); }
-}
-#--------------------------------------------------------------------
-
-if ( $overwriteLinksTable ) {
- $dbConn = Database::newFromParams( $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname );
- if (!($dbConn->isOpen())) {
- print "Opening connection to database failed.\n";
- exit;
- }
- # Check for existing links_backup, and delete it if it exists.
- print "Dropping backup links table if it exists...";
- $dbConn->query( "DROP TABLE IF EXISTS links_backup", DB_WRITE);
- print " done.\n";
-
- # Swap in the new table, and move old links table to links_backup
- print "Swapping tables 'links' to 'links_backup'; 'links_temp' to 'links'...";
- $dbConn->query( "RENAME TABLE links TO links_backup, links_temp TO links", DB_WRITE );
- print " done.\n\n";
-
- $dbConn->close();
- print "Conversion complete. The old table remains at links_backup;\n";
- print "delete at your leisure.\n";
-} else {
- print "Conversion complete. The converted table is at links_temp;\n";
- print "the original links table is unchanged.\n";
-}
-
-#--------------------------------------------------------------------
-
-function createTempTable() {
- global $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname;
- global $noKeys;
- $dbConn = Database::newFromParams( $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname );
-
- if (!($dbConn->isOpen())) {
- print "Opening connection to database failed.\n";
- exit;
- }
-
- print "Dropping temporary links table if it exists...";
- $dbConn->query( "DROP TABLE IF EXISTS links_temp", DB_WRITE);
- print " done.\n";
-
- print "Creating temporary links table...";
- if ( $noKeys ) {
- $dbConn->query( "CREATE TABLE links_temp ( " .
- "l_from int(8) unsigned NOT NULL default '0', " .
- "l_to int(8) unsigned NOT NULL default '0')", DB_WRITE);
- } else {
- $dbConn->query( "CREATE TABLE links_temp ( " .
- "l_from int(8) unsigned NOT NULL default '0', " .
- "l_to int(8) unsigned NOT NULL default '0', " .
- "UNIQUE KEY l_from(l_from,l_to), " .
- "KEY (l_to))", DB_WRITE);
- }
- print " done.\n\n";
-}
-
-function performanceLog( $text ) {
- global $logPerformance, $fh;
- if ( $logPerformance ) {
- fwrite( $fh, $text );
- }
-}
-
-function getMicroTime() { # return time in seconds, with microsecond accuracy
- list($usec, $sec) = explode(" ", microtime());
- return ((float)$usec + (float)$sec);
-}
?>
diff --git a/maintenance/dumpMessages.php b/maintenance/dumpMessages.php
index e4c54601d0cc..887e1c5a2992 100644
--- a/maintenance/dumpMessages.php
+++ b/maintenance/dumpMessages.php
@@ -1,17 +1,12 @@
<?php
require_once( "commandLine.inc" );
-
+$wgMessageCache->disableTransform();
$messages = array();
foreach ( $wgAllMessagesEn as $key => $englishValue )
{
$messages[$key] = wfMsg( $key );
}
-
-if ( count( $argv ) >= 2 ) {
- $res = fopen( $argv[2] );
- fwrite( $res, serialize( $messages ) );
-} else {
- print serialize( $messages );
-}
+print "MediaWiki $wgVersion language file\n";
+print serialize( $messages );
?>
diff --git a/maintenance/eval.php b/maintenance/eval.php
new file mode 100755
index 000000000000..6c59d0c38c4f
--- /dev/null
+++ b/maintenance/eval.php
@@ -0,0 +1,16 @@
+<?php
+require_once( "commandLine.inc" );
+
+do {
+ $line = readconsole( "> " );
+ eval( $line . ";" );
+ if ( function_exists( "readline_add_history" ) ) {
+ readline_add_history( $line );
+ }
+} while ( 1 );
+
+
+
+
+?>
+
diff --git a/maintenance/indexes.sql b/maintenance/indexes.sql
index ffa0782aeb06..fa0359069e70 100644
--- a/maintenance/indexes.sql
+++ b/maintenance/indexes.sql
@@ -51,7 +51,8 @@ ALTER TABLE recentchanges
ADD INDEX rc_timestamp (rc_timestamp),
ADD INDEX rc_namespace_title (rc_namespace, rc_title),
ADD INDEX rc_cur_id (rc_cur_id),
- ADD INDEX new_name_timestamp(rc_new,rc_namespace,rc_timestamp);
+ ADD INDEX new_name_timestamp(rc_new,rc_namespace,rc_timestamp),
+ ADD INDEX rc_ip (rc_ip);
ALTER TABLE archive
ADD KEY `name_title_timestamp` (`ar_namespace`,`ar_title`,`ar_timestamp`);
diff --git a/maintenance/liveCmdLine.inc b/maintenance/liveCmdLine.inc
new file mode 100644
index 000000000000..67d09d19c275
--- /dev/null
+++ b/maintenance/liveCmdLine.inc
@@ -0,0 +1,53 @@
+<?php
+
+# This is a drop-in replacement for commandLine.inc, for use only on
+# the Wikimedia wikis.
+# Call your command-line script with the language name and site name,
+# e.g. php convertLinks.php aa wikipedia
+
+if ( isset( $_SERVER ) && array_key_exists( 'REQUEST_METHOD', $_SERVER ) ) {
+ print "This script must be run from the command line\n";
+ exit();
+}
+
+$wgCommandLineMode = true;
+$self = array_shift( $argv );
+# Turn off output buffering if it's on
+@ob_end_flush();
+
+if ( isset( $argv[0] ) ) {
+ $lang = array_shift( $argv );
+} else {
+ $lang = "aa";
+}
+if ( isset( $argv[0] ) ) {
+ $site = array_shift( $argv );
+} else {
+ $site = "wikipedia";
+}
+
+# This is for the IRC scripts, which now run as the apache user
+if ( $_ENV['USER'] != "apache" ) {
+ $wgDBadminuser = "wikiadmin";
+ $wgDBadminpassword = trim(`wikiadmin_pass`);
+}
+
+$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
+putenv( "wikilang=$lang");
+$newpath = "/home/wikipedia/common/php-new$sep";
+
+$DP = "../includes";
+#ini_set( "include_path", "$newpath$sep$include_path" );
+ini_set( "include_path", "/home/wikipedia/common/php-new:/home/wikipedia/common/php-new/includes" );
+
+require_once( "/home/wikipedia/common/php-new/CommonSettings.php" );
+
+$wgUsePHPTal = false;
+
+define("MEDIAWIKI",true);
+require_once( "Setup.php" );
+require_once( "../install-utils.inc" );
+$wgTitle = Title::newFromText( "Command line script" );
+$wgCommandLineMode = true;
+set_time_limit(0);
+?>
diff --git a/maintenance/mcc.php b/maintenance/mcc.php
index a6b524916ac5..6ebbfc1b35f7 100755
--- a/maintenance/mcc.php
+++ b/maintenance/mcc.php
@@ -1,10 +1,10 @@
<?php
-require_once( "../includes/DefaultSettings.php" );
-require_once( "../LocalSettings.php" );
-require_once( "../includes/MemCachedClient.inc.php" );
-$mcc = new MemCachedClient();
+require_once( "commandLine.inc" );
+
+$mcc = new memcached( array('persistant' => true) );
$mcc->set_servers( $wgMemCachedServers );
+$mcc->set_debug( true );
do {
$bad = false;
@@ -20,7 +20,8 @@ do {
$res = $res[$args[1]];
}
if ( $res === false ) {
- print 'Error: ' . $mcc->error_string() . "\n";
+ #print 'Error: ' . $mcc->error_string() . "\n";
+ print "MemCached error\n";
} elseif ( is_string( $res ) ) {
print "$res\n";
} else {
@@ -35,13 +36,15 @@ do {
$value = implode( " ", $args );
}
if ( !$mcc->set( $key, $value, 0 ) ) {
- print 'Error: ' . $mcc->error_string() . "\n";
+ #print 'Error: ' . $mcc->error_string() . "\n";
+ print "MemCached error\n";
}
break;
case "delete":
$key = implode( " ", $args );
if ( !$mcc->delete( $key ) ) {
- print 'Error: ' . $mcc->error_string() . "\n";
+ #print 'Error: ' . $mcc->error_string() . "\n";
+ print "MemCached error\n";
}
break;
case "quit":
@@ -61,19 +64,5 @@ do {
}
} while ( !$quit );
-function readconsole( $prompt = "" ) {
- if ( function_exists( "readline" ) ) {
- return readline( $prompt );
- } else {
- print $prompt;
- $fp = fopen( "php://stdin", "r" );
- $resp = trim( fgets( $fp, 1024 ) );
- fclose( $fp );
- return $resp;
- }
-}
-
-
-
?>
diff --git a/maintenance/pcache_stats.php b/maintenance/pcache_stats.php
new file mode 100644
index 000000000000..0f7c454db116
--- /dev/null
+++ b/maintenance/pcache_stats.php
@@ -0,0 +1,14 @@
+<?php
+require_once('commandLine.inc');
+
+$hits = intval($wgMemc->get("$wgDBname:stats:pcache_hit"));
+$invalid = intval($wgMemc->get("$wgDBname:stats:pcache_miss_invalid"));
+$expired = intval($wgMemc->get("$wgDBname:stats:pcache_miss_expired"));
+$absent = intval($wgMemc->get("$wgDBname:stats:pcache_miss_absent"));
+$total = $hits + $invalid + $expired + $absent;
+printf( "hits: %-10d %6.2f%%\n", $hits, $hits/$total*100 );
+printf( "invalid: %-10d %6.2f%%\n", $invalid, $invalid/$total*100 );
+printf( "expired: %-10d %6.2f%%\n", $expired, $expired/$total*100 );
+printf( "absent: %-10d %6.2f%%\n", $absent, $absent/$total*100 );
+printf( "total: %-10d %6.2f%%\n", $total, 100 );
+?>
diff --git a/maintenance/postgresql/pg_tables.sql b/maintenance/postgresql/pg_tables.sql
new file mode 100644
index 000000000000..b8265fb5914b
--- /dev/null
+++ b/maintenance/postgresql/pg_tables.sql
@@ -0,0 +1,587 @@
+--
+-- Totally untested postgresql dump for the table "tables".
+--
+--
+--
+
+--
+-- PostgreSQL database dump
+--
+
+SET client_encoding = 'UNICODE';
+SET check_function_bodies = false;
+
+SET SESSION AUTHORIZATION 'postgres';
+
+--
+-- TOC entry 4 (OID 2200)
+-- Name: public; Type: ACL; Schema: -; Owner: postgres
+--
+
+REVOKE ALL ON SCHEMA public FROM PUBLIC;
+GRANT ALL ON SCHEMA public TO PUBLIC;
+
+-- FIXME ! Either remove line or use the mediawiki database user there
+SET SESSION AUTHORIZATION 'hashar';
+
+SET search_path = public, pg_catalog;
+
+--
+-- TOC entry 5 (OID 17145)
+-- Name: user_user_id_seq; Type: SEQUENCE; Schema: public; Owner: hashar
+--
+
+CREATE SEQUENCE user_user_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+
+
+--
+-- TOC entry 9 (OID 17147)
+-- Name: user; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE "user" (
+ user_id integer DEFAULT nextval('user_user_id_seq'::text),
+ user_name character varying(255) DEFAULT ''::character varying NOT NULL,
+ user_real_name character varying(255) DEFAULT ''::character varying NOT NULL,
+ user_rights text DEFAULT ''::text NOT NULL,
+ user_password text DEFAULT ''::text NOT NULL,
+ user_newpassword text DEFAULT ''::text NOT NULL,
+ user_email text DEFAULT ''::text NOT NULL,
+ user_options text DEFAULT ''::text NOT NULL,
+ user_touched character(14) DEFAULT ''::bpchar NOT NULL
+);
+
+
+--
+-- TOC entry 10 (OID 17161)
+-- Name: user_newtalk; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE user_newtalk (
+ user_id integer DEFAULT 0 NOT NULL,
+ user_ip character varying(40) DEFAULT ''::character varying NOT NULL
+);
+
+
+--
+-- TOC entry 6 (OID 17167)
+-- Name: cur_cur_id_seq; Type: SEQUENCE; Schema: public; Owner: hashar
+--
+
+CREATE SEQUENCE cur_cur_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+
+
+--
+-- TOC entry 11 (OID 17169)
+-- Name: cur; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE cur (
+ cur_id integer DEFAULT nextval('cur_cur_id_seq'::text),
+ cur_namespace smallint DEFAULT 0::smallint NOT NULL,
+ cur_title character varying(255) DEFAULT ''::character varying NOT NULL,
+ cur_text text DEFAULT ''::text NOT NULL,
+ cur_comment text DEFAULT ''::text NOT NULL,
+ cur_user integer DEFAULT 0 NOT NULL,
+ cur_user_text character varying(255) DEFAULT ''::character varying NOT NULL,
+ cur_timestamp character(14) DEFAULT ''::bpchar NOT NULL,
+ cur_restrictions text DEFAULT ''::text NOT NULL,
+ cur_counter bigint DEFAULT 0::bigint NOT NULL,
+ cur_is_redirect smallint DEFAULT 0::smallint NOT NULL,
+ cur_minor_edit smallint DEFAULT 0::smallint NOT NULL,
+ cur_is_new smallint DEFAULT 0::smallint NOT NULL,
+ cur_random double precision NOT NULL,
+ cur_touched character(14) DEFAULT ''::bpchar NOT NULL,
+ inverse_timestamp character(14) DEFAULT ''::bpchar NOT NULL
+);
+
+
+--
+-- TOC entry 7 (OID 17191)
+-- Name: old_old_id_seq; Type: SEQUENCE; Schema: public; Owner: hashar
+--
+
+CREATE SEQUENCE old_old_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+
+
+--
+-- TOC entry 12 (OID 17193)
+-- Name: old; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE "old" (
+ old_id integer DEFAULT nextval('old_old_id_seq'::text),
+ old_namespace smallint DEFAULT 0::smallint NOT NULL,
+ old_title character varying(255) DEFAULT ''::character varying NOT NULL,
+ old_text text DEFAULT ''::text NOT NULL,
+ old_comment text DEFAULT ''::text NOT NULL,
+ old_user integer DEFAULT 0 NOT NULL,
+ old_user_text character varying(255) NOT NULL,
+ old_timestamp character(14) DEFAULT ''::bpchar NOT NULL,
+ old_minor_edit smallint DEFAULT 0::smallint NOT NULL,
+ old_flags text DEFAULT ''::text NOT NULL,
+ inverse_timestamp character(14) DEFAULT ''::bpchar NOT NULL
+);
+
+
+--
+-- TOC entry 13 (OID 17208)
+-- Name: archive; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE archive (
+ ar_namespace smallint DEFAULT 0::smallint NOT NULL,
+ ar_title character varying(255) DEFAULT ''::character varying NOT NULL,
+ ar_text text DEFAULT ''::text NOT NULL,
+ ar_comment text DEFAULT ''::text NOT NULL,
+ ar_user integer DEFAULT 0 NOT NULL,
+ ar_user_text character varying(255) NOT NULL,
+ ar_timestamp character(14) DEFAULT ''::bpchar NOT NULL,
+ ar_minor_edit smallint DEFAULT 0::smallint NOT NULL,
+ ar_flags text DEFAULT ''::text NOT NULL
+);
+
+
+--
+-- TOC entry 14 (OID 17221)
+-- Name: links; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE links (
+ l_from integer DEFAULT 0 NOT NULL,
+ l_to integer DEFAULT 0 NOT NULL
+);
+
+
+--
+-- TOC entry 15 (OID 17227)
+-- Name: brokenlinks; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE brokenlinks (
+ bl_from integer DEFAULT 0 NOT NULL,
+ bl_to character varying(255) DEFAULT ''::character varying NOT NULL
+);
+
+
+--
+-- TOC entry 16 (OID 17233)
+-- Name: imagelinks; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE imagelinks (
+ il_from integer DEFAULT 0 NOT NULL,
+ il_to character varying(255) DEFAULT ''::character varying NOT NULL
+);
+
+
+--
+-- TOC entry 17 (OID 17239)
+-- Name: categorylinks; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE categorylinks (
+ cl_from integer DEFAULT 0 NOT NULL,
+ cl_to character varying(255) DEFAULT ''::character varying NOT NULL,
+ cl_sortkey character varying(255) DEFAULT ''::character varying NOT NULL,
+ cl_timestamp timestamp without time zone NOT NULL
+);
+
+
+--
+-- TOC entry 18 (OID 17244)
+-- Name: linkscc; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE linkscc (
+ lcc_pageid integer NOT NULL,
+ lcc_cacheobj text DEFAULT ''::text NOT NULL
+);
+
+
+--
+-- TOC entry 19 (OID 17252)
+-- Name: site_stats; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE site_stats (
+ ss_row_id integer NOT NULL,
+ ss_total_views bigint DEFAULT 0::bigint,
+ ss_total_edits bigint DEFAULT 0::bigint,
+ ss_good_articles bigint DEFAULT 0::bigint
+);
+
+
+--
+-- TOC entry 20 (OID 17257)
+-- Name: hitcounter; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE hitcounter (
+ hc_id integer NOT NULL
+);
+
+
+--
+-- TOC entry 8 (OID 17259)
+-- Name: ipblocks_ipb_id_seq; Type: SEQUENCE; Schema: public; Owner: hashar
+--
+
+CREATE SEQUENCE ipblocks_ipb_id_seq
+ INCREMENT BY 1
+ NO MAXVALUE
+ NO MINVALUE
+ CACHE 1;
+
+
+--
+-- TOC entry 21 (OID 17261)
+-- Name: ipblocks; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE ipblocks (
+ ipb_id integer DEFAULT nextval('ipblocks_ipb_id_seq'::text),
+ ipb_address character varying(40) DEFAULT ''::character varying NOT NULL,
+ ipb_user integer DEFAULT 0 NOT NULL,
+ ipb_by integer DEFAULT 0 NOT NULL,
+ ipb_reason text DEFAULT ''::text NOT NULL,
+ ipb_timestamp character(14) DEFAULT ''::bpchar NOT NULL,
+ ipb_auto smallint DEFAULT 0::smallint NOT NULL,
+ ipb_expiry character(14) DEFAULT ''::bpchar NOT NULL
+);
+
+
+--
+-- TOC entry 22 (OID 17274)
+-- Name: image; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE image (
+ img_name character varying(255) DEFAULT ''::character varying NOT NULL,
+ img_size integer DEFAULT 0 NOT NULL,
+ img_description text DEFAULT ''::text NOT NULL,
+ img_user integer DEFAULT 0 NOT NULL,
+ img_user_text character varying(255) DEFAULT ''::character varying NOT NULL,
+ img_timestamp character(14) DEFAULT ''::bpchar NOT NULL
+);
+
+
+--
+-- TOC entry 23 (OID 17285)
+-- Name: oldimage; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE oldimage (
+ oi_name character varying(255) DEFAULT ''::character varying NOT NULL,
+ oi_archive_name character varying(255) DEFAULT ''::character varying NOT NULL,
+ oi_size integer DEFAULT 0 NOT NULL,
+ oi_description text DEFAULT ''::text NOT NULL,
+ oi_user integer DEFAULT 0 NOT NULL,
+ oi_user_text character varying(255) DEFAULT ''::character varying NOT NULL,
+ oi_timestamp character(14) DEFAULT ''::bpchar NOT NULL
+);
+
+
+--
+-- TOC entry 24 (OID 17297)
+-- Name: recentchanges; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE recentchanges (
+ rc_timestamp character varying(14) DEFAULT ''::character varying NOT NULL,
+ rc_cur_time character varying(14) DEFAULT ''::character varying NOT NULL,
+ rc_user integer DEFAULT 0 NOT NULL,
+ rc_user_text character varying(255) DEFAULT ''::character varying NOT NULL,
+ rc_namespace smallint DEFAULT 0::smallint NOT NULL,
+ rc_title character varying(255) DEFAULT ''::character varying NOT NULL,
+ rc_comment character varying(255) DEFAULT ''::character varying NOT NULL,
+ rc_minor smallint DEFAULT 0::smallint NOT NULL,
+ rc_bot smallint DEFAULT 0::smallint NOT NULL,
+ rc_new smallint DEFAULT 0::smallint NOT NULL,
+ rc_cur_id integer DEFAULT 0 NOT NULL,
+ rc_this_oldid integer DEFAULT 0 NOT NULL,
+ rc_last_oldid integer DEFAULT 0 NOT NULL,
+ rc_type smallint DEFAULT 0::smallint NOT NULL,
+ rc_moved_to_ns smallint DEFAULT 0::smallint NOT NULL,
+ rc_moved_to_title character varying(255) DEFAULT ''::character varying NOT NULL
+);
+
+
+--
+-- TOC entry 25 (OID 17318)
+-- Name: watchlist; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE watchlist (
+ wl_user integer NOT NULL,
+ wl_namespace smallint DEFAULT 0::smallint NOT NULL,
+ wl_title character varying(255) DEFAULT ''::character varying NOT NULL
+);
+
+
+--
+-- TOC entry 26 (OID 17322)
+-- Name: math; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE math (
+ math_inputhash character varying(16) NOT NULL,
+ math_outputhash character varying(16) NOT NULL,
+ math_html_conservativeness smallint NOT NULL,
+ math_html text,
+ math_mathml text
+);
+
+
+--
+-- TOC entry 27 (OID 17327)
+-- Name: searchindex; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE searchindex (
+ si_page integer NOT NULL,
+ si_title character varying(255) DEFAULT ''::character varying NOT NULL,
+ si_text text DEFAULT ''::text NOT NULL
+);
+
+
+--
+-- TOC entry 28 (OID 17334)
+-- Name: interwiki; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE interwiki (
+ iw_prefix character(32) NOT NULL,
+ iw_url character(127) NOT NULL,
+ iw_local boolean NOT NULL
+);
+
+
+--
+-- TOC entry 29 (OID 17336)
+-- Name: querycache; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE querycache (
+ qc_type character(32) NOT NULL,
+ qc_value integer DEFAULT 0 NOT NULL,
+ qc_namespace smallint DEFAULT 0::smallint NOT NULL,
+ qc_title character(255) DEFAULT ''::bpchar NOT NULL
+);
+
+
+--
+-- TOC entry 30 (OID 17343)
+-- Name: objectcache; Type: TABLE; Schema: public; Owner: hashar
+--
+
+CREATE TABLE objectcache (
+ keyname character(255) DEFAULT ''::bpchar NOT NULL,
+ value text,
+ exptime timestamp without time zone NOT NULL
+);
+
+
+--
+-- TOC entry 47 (OID 17351)
+-- Name: math_inputhash_math_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX math_inputhash_math_index ON math USING btree (math_inputhash);
+
+
+--
+-- TOC entry 49 (OID 17352)
+-- Name: iw_prefix_interwiki_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX iw_prefix_interwiki_index ON interwiki USING btree (iw_prefix);
+
+
+--
+-- TOC entry 44 (OID 17353)
+-- Name: ss_row_id_site_stats_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX ss_row_id_site_stats_index ON site_stats USING btree (ss_row_id);
+
+
+--
+-- TOC entry 33 (OID 17354)
+-- Name: old_id_old_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX old_id_old_index ON "old" USING btree (old_id);
+
+
+--
+-- TOC entry 36 (OID 17355)
+-- Name: bl_from_brokenlinks_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX bl_from_brokenlinks_index ON brokenlinks USING btree (bl_from, bl_to);
+
+
+--
+-- TOC entry 45 (OID 17356)
+-- Name: ipb_id_ipblocks_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX ipb_id_ipblocks_index ON ipblocks USING btree (ipb_id);
+
+
+--
+-- TOC entry 32 (OID 17357)
+-- Name: cur_id_cur_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX cur_id_cur_index ON cur USING btree (cur_id);
+
+
+--
+-- TOC entry 38 (OID 17358)
+-- Name: il_from_imagelinks_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX il_from_imagelinks_index ON imagelinks USING btree (il_from, il_to);
+
+
+--
+-- TOC entry 31 (OID 17359)
+-- Name: user_id_user_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX user_id_user_index ON "user" USING btree (user_id);
+
+
+--
+-- TOC entry 48 (OID 17360)
+-- Name: key_searchindex_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX key_searchindex_index ON searchindex USING btree (si_page);
+
+
+--
+-- TOC entry 51 (OID 17361)
+-- Name: key_objectcache_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX key_objectcache_index ON objectcache USING btree (keyname);
+
+
+--
+-- TOC entry 46 (OID 17362)
+-- Name: key_watchlist_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX key_watchlist_index ON watchlist USING btree (wl_user, wl_namespace, wl_title);
+
+
+--
+-- TOC entry 34 (OID 17363)
+-- Name: l_from_links_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX l_from_links_index ON links USING btree (l_from, l_to);
+
+
+--
+-- TOC entry 40 (OID 17364)
+-- Name: cl_from_categorylinks_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE UNIQUE INDEX cl_from_categorylinks_index ON categorylinks USING btree (cl_from, cl_to);
+
+
+--
+-- TOC entry 41 (OID 17365)
+-- Name: cl_sortkey_categorylinks_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE INDEX cl_sortkey_categorylinks_index ON categorylinks USING btree (cl_to, cl_sortkey);
+
+
+--
+-- TOC entry 42 (OID 17366)
+-- Name: cl_timestamp_categorylinks_index; Type: INDEX; Schema: public; Owner: hashar
+--
+
+CREATE INDEX cl_timestamp_categorylinks_index ON categorylinks USING btree (cl_to, cl_timestamp);
+
+
+--
+-- TOC entry 35 (OID 17225)
+-- Name: links_pkey; Type: CONSTRAINT; Schema: public; Owner: hashar
+--
+
+ALTER TABLE ONLY links
+ ADD CONSTRAINT links_pkey PRIMARY KEY (l_from, l_to);
+
+
+--
+-- TOC entry 37 (OID 17231)
+-- Name: brokenlinks_pkey; Type: CONSTRAINT; Schema: public; Owner: hashar
+--
+
+ALTER TABLE ONLY brokenlinks
+ ADD CONSTRAINT brokenlinks_pkey PRIMARY KEY (bl_to);
+
+
+--
+-- TOC entry 39 (OID 17237)
+-- Name: imagelinks_pkey; Type: CONSTRAINT; Schema: public; Owner: hashar
+--
+
+ALTER TABLE ONLY imagelinks
+ ADD CONSTRAINT imagelinks_pkey PRIMARY KEY (il_to);
+
+
+--
+-- TOC entry 43 (OID 17250)
+-- Name: linkscc_pkey; Type: CONSTRAINT; Schema: public; Owner: hashar
+--
+
+ALTER TABLE ONLY linkscc
+ ADD CONSTRAINT linkscc_pkey PRIMARY KEY (lcc_pageid);
+
+
+--
+-- TOC entry 50 (OID 17341)
+-- Name: querycache_pkey; Type: CONSTRAINT; Schema: public; Owner: hashar
+--
+
+ALTER TABLE ONLY querycache
+ ADD CONSTRAINT querycache_pkey PRIMARY KEY (qc_type, qc_value);
+
+
+--
+-- TOC entry 52 (OID 17349)
+-- Name: objectcache_pkey; Type: CONSTRAINT; Schema: public; Owner: hashar
+--
+
+ALTER TABLE ONLY objectcache
+ ADD CONSTRAINT objectcache_pkey PRIMARY KEY (exptime);
+
+
+SET SESSION AUTHORIZATION 'postgres';
+
+--
+-- TOC entry 3 (OID 2200)
+-- Name: SCHEMA public; Type: COMMENT; Schema: -; Owner: postgres
+--
+
+COMMENT ON SCHEMA public IS 'Standard public schema';
+
diff --git a/maintenance/rebuildInterwiki.inc b/maintenance/rebuildInterwiki.inc
new file mode 100644
index 000000000000..ba4ca3ec4440
--- /dev/null
+++ b/maintenance/rebuildInterwiki.inc
@@ -0,0 +1,224 @@
+<?
+
+# Rebuild interwiki table using the file on meta and the language list
+# Wikimedia specific!
+$oldCwd = getcwd();
+
+$optionsWithArgs = array( "o" );
+include_once( "commandLine.inc" );
+
+class Site {
+ var $suffix, $lateral, $url;
+
+ function Site( $s, $l, $u ) {
+ $this->suffix = $s;
+ $this->lateral = $l;
+ $this->url = $u;
+ }
+
+ function getURL( $lang ) {
+ return "http://$lang.{$this->url}/wiki/\$1";
+ }
+}
+
+function getRebuildInterwikiSQL() {
+ global $langlist, $languageAliases;
+
+ # Initialise lists of wikis
+ $sites = array(
+ 'wiki' => new Site( 'wiki', 'w', 'wikipedia.org' ),
+ 'wiktionary' => new Site( 'wiktionary', 'wikt', 'wiktionary.org' ),
+ 'wikiquote' => new Site( 'wikiquote', 'q', 'wikiquote.org' ),
+ 'wikibooks' => new Site( 'wikibooks', 'b', 'wikibooks.org' )
+ );
+ $langlist = array_map( "trim", file( "/home/wikipedia/common/langlist" ) );
+ $dblist = array_map( "trim", file( "/home/wikipedia/common/all.dblist" ) );
+
+ $specials = array(
+ 'sourceswiki' => 'sources.wikipedia.org',
+ 'quotewiki' => 'wikiquote.org',
+ 'textbookwiki' => 'wikibooks.org',
+ 'sep11wiki' => 'sep11.wikipedia.org',
+ 'metawiki' => 'meta.wikimedia.org',
+ );
+
+ $extraLinks = array(
+ array( 'm', 'http://meta.wikimedia.org/wiki/$1', 1 ),
+ array( 'meta', 'http://meta.wikimedia.org/wiki/$1', 1 ),
+ array( 'sep11', 'http://sep11.wikipedia.org/wiki/$1', 1 ),
+ );
+
+ $languageAliases = array(
+ 'zh-cn' => 'zh',
+ 'zh-tw' => 'zh',
+ 'dk' => 'da',
+ );
+
+ # Construct a list of reserved prefixes
+ $reserved = array();
+ foreach ( $langlist as $lang ) {
+ $reserved[$lang] = 1;
+ }
+ foreach ( $languageAliases as $alias => $lang ) {
+ $reserved[$alias] = 1;
+ }
+ foreach( $sites as $site ) {
+ $reserved[$site->lateral] = 1;
+ }
+
+ # Extract the intermap from meta
+ $dbr =& wfGetDB( DB_WRITE );
+ $row = $dbr->getArray( "metawiki.cur", array( "cur_text" ),
+ array( "cur_namespace" => 0, "cur_title" => "Interwiki_map" ) );
+
+ if ( !$row ) {
+ die( "m:Interwiki_map not found" );
+ }
+
+ $lines = explode( "\n", $row->cur_text );
+ $iwArray = array();
+
+ foreach ( $lines as $line ) {
+ if ( preg_match( '/^\|\s*(.*?)\s*\|\|\s*(.*?)\s*$/', $line, $matches ) ) {
+ $prefix = strtolower( $matches[1] );
+ $url = $matches[2];
+ if ( preg_match( '/(wikipedia|wiktionary|wikisource|wikiquote|wikibooks)\.org/', $url ) ) {
+ $local = 1;
+ } else {
+ $local = 0;
+ }
+
+ if ( empty( $reserved[$prefix] ) ) {
+ $iwArray[] = array( "iw_prefix" => $prefix, "iw_url" => $url, "iw_local" => $local );
+ }
+ }
+ }
+
+ $sql = "-- Generated by rebuildInterwiki.php";
+
+
+ foreach ( $dblist as $db ) {
+ if ( isset( $specials[$db] ) ) {
+ # Special wiki
+ # Has interwiki links and interlanguage links to wikipedia
+
+ $host = $specials[$db];
+ $sql .= "\n--$host\n\n";
+ $sql .= "USE $db;\n" .
+ "TRUNCATE TABLE interwiki;\n" .
+ "INSERT INTO interwiki (iw_prefix, iw_url, iw_local) VALUES \n";
+ $first = true;
+
+ # Intermap links
+ foreach ( $iwArray as $iwEntry ) {
+ $sql .= makeLink( $iwEntry, $first );
+ }
+
+ # Links to multilanguage sites
+ foreach ( $sites as $targetSite ) {
+ $sql .= makeLink( array( $targetSite->lateral, $targetSite->getURL( 'en' ), 1 ), $first );
+ }
+
+ # Interlanguage links to wikipedia
+ $sql .= makeLanguageLinks( $sites['wiki'], $first );
+
+ # Extra links
+ foreach ( $extraLinks as $link ) {
+ $sql .= makeLink( $link, $first );
+ }
+
+ $sql .= ";\n";
+ } else {
+ # Find out which site this DB belongs to
+ $site = false;
+ foreach( $sites as $candidateSite ) {
+ $suffix = $candidateSite->suffix;
+ if ( preg_match( "/(.*)$suffix$/", $db, $matches ) ) {
+ $site = $candidateSite;
+ break;
+ }
+ }
+ if ( !$site ) {
+ print "Invalid database $db\n";
+ continue;
+ }
+ $lang = $matches[1];
+ $host = "$lang." . $site->url;
+ $sql .= "\n--$host\n\n";
+
+ $sql .= "USE $db;\n" .
+ "TRUNCATE TABLE interwiki;\n" .
+ "INSERT INTO interwiki (iw_prefix,iw_url,iw_local) VALUES\n";
+ $first = true;
+
+ # Intermap links
+ foreach ( $iwArray as $iwEntry ) {
+ # Suppress links with the same name as the site
+ if ( ( $suffix == 'wiki' && $iwEntry['iw_prefix'] != 'wikipedia' ) ||
+ ( $suffix != 'wiki' && $suffix != $iwEntry['iw_prefix'] ) )
+ {
+ $sql .= makeLink( $iwEntry, $first );
+ }
+ }
+
+ # Lateral links
+ foreach ( $sites as $targetSite ) {
+ # Suppress link to self
+ if ( $targetSite->suffix != $site->suffix ) {
+ $sql .= makeLink( array( $targetSite->lateral, $targetSite->getURL( $lang ), 1 ), $first );
+ }
+ }
+
+ # Interlanguage links
+ $sql .= makeLanguageLinks( $site, $first );
+
+ # w link within wikipedias
+ # Other sites already have it as a lateral link
+ if ( $site->suffix == "wiki" ) {
+ $sql .= makeLink( array("w", "http://en.wikipedia.org/wiki/$1", 1), $first );
+ }
+
+ # Extra links
+ foreach ( $extraLinks as $link ){
+ $sql .= makeLink( $link, $first );
+ }
+ $sql .= ";\n\n";
+ }
+ }
+ return $sql;
+}
+
+# ------------------------------------------------------------------------------------------
+
+# Returns part of an INSERT statement, corresponding to all interlanguage links to a particular site
+function makeLanguageLinks( &$site, &$first ) {
+ global $langlist, $languageAliases;
+
+ $sql = "";
+
+ # Actual languages with their own databases
+ foreach ( $langlist as $targetLang ) {
+ $sql .= makeLink( array( $targetLang, $site->getURL( $targetLang ), 1 ), $first );
+ }
+
+ # Language aliases
+ foreach ( $languageAliases as $alias => $lang ) {
+ $sql .= makeLink( array( $alias, $site->getURL( $lang ), 1 ), $first );
+ }
+ return $sql;
+}
+
+# Make SQL for a single link from an array
+function makeLink( $entry, &$first ) {
+ $sql = "";
+ # Add comma
+ if ( $first ) {
+ $first = false;
+ } else {
+ $sql .= ",\n";
+ }
+ $sql .= "(" . Database::makeList( $entry ) . ")";
+ return $sql;
+}
+
+?>
diff --git a/maintenance/rebuildInterwiki.php b/maintenance/rebuildInterwiki.php
new file mode 100644
index 000000000000..d2add0be7aa6
--- /dev/null
+++ b/maintenance/rebuildInterwiki.php
@@ -0,0 +1,25 @@
+<?
+
+# Rebuild interwiki table using the file on meta and the language list
+# Wikimedia specific!
+$oldCwd = getcwd();
+
+$optionsWithArgs = array( "o" );
+include_once( "commandLine.inc" );
+include_once( "rebuildInterwiki.inc" );
+
+$sql = getRebuildInterwikiSQL();
+
+# Output
+if ( isset( $options['o'] ) ) {
+ # To file specified with -o
+ chdir( $oldCwd );
+ $file = fopen( $options['o'], "w" );
+ fwrite( $file, $sql );
+ fclose( $file );
+} else {
+ # To stdout
+ print $sql;
+}
+
+?>
diff --git a/maintenance/rebuildMessages.php b/maintenance/rebuildMessages.php
index d97d16f452d9..eb549b463032 100755
--- a/maintenance/rebuildMessages.php
+++ b/maintenance/rebuildMessages.php
@@ -1,48 +1,21 @@
<?php
-$wgCommandLineMode = true;
-# Turn off output buffering if it's on
-@ob_end_flush();
-
-$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-if ( isset($argv[1]) && $argv[1] ) {
- $lang = $argv[1];
- putenv( "wikilang=$lang");
- $settingsFile = "/apache/htdocs/{$argv[1]}/w/LocalSettings.php";
- $newpath = "/apache/common/php$sep";
-} else {
- $settingsFile = "../LocalSettings.php";
- $newpath = "";
-}
+require_once( "commandLine.inc" );
+include_once( "InitialiseMessages.inc" );
+
+$wgTitle = Title::newFromText( "Rebuild messages script" );
-if ( isset($argv[2]) && $argv[2] == "update" ) {
- $response = 1;
-} elseif ( isset($argv[2]) && $argv[2] == "reinitialise" ) {
- $response = 2;
+if ( isset( $args[0] ) ) {
+ $response = array_shift( $args );
+ if ( $response == "update" ) {
+ $response = 1;
+ } elseif ( $response == "rebuild" ) {
+ $response = 2;
+ }
} else {
$response = 0;
}
-
-if ( ! is_readable( $settingsFile ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "must exist in the source directory.\n";
- exit();
-}
-
-ini_set( "include_path", "../includes$sep../languages$sep$newpath$IP$sep$include_path" );
-
-$wgCommandLineMode = true;
-$DP = "../includes";
-require_once( $settingsFile );
-
-require_once( "Setup.php" );
-require_once( "./InitialiseMessages.inc" );
-require_once( "../install-utils.inc" );
-$wgTitle = Title::newFromText( "Rebuild messages script" );
-$wgCommandLineMode = true;
-set_time_limit(0);
-
-if ( isset($argv) && count( $argv ) >= 3 ) {
- $messages = loadArrayFromFile( $argv[3] );
+if ( isset( $args[0] ) ) {
+ $messages = loadLanguageFile( array_shift( $args ) );
} else {
$messages = false;
}
diff --git a/maintenance/rebuildall.php b/maintenance/rebuildall.php
index a9d0a9760430..d9ec307c06c0 100644
--- a/maintenance/rebuildall.php
+++ b/maintenance/rebuildall.php
@@ -3,31 +3,21 @@
# Rebuild link tracking tables from scratch. This takes several
# hours, depending on the database size and server configuration.
-if ( ! is_readable( "../LocalSettings.php" ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "must exist in the source directory.\n";
- exit();
-}
-
-$wgCommandLineMode = true;
-$DP = "../includes";
-require_once( "../LocalSettings.php" );
-require_once( "../AdminSettings.php" );
-
-$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-ini_set( "include_path", "$IP$sep$include_path" );
-
-require_once( "Setup.php" );
-require_once( "./rebuildlinks.inc" );
-require_once( "./rebuildtextindex.inc" );
-require_once( "./rebuildrecentchanges.inc" );
-$wgTitle = Title::newFromText( "Rebuild links script" );
-set_time_limit(0);
+require_once( "commandLine.inc" );
+
+#require_once( "rebuildlinks.inc" );
+require_once( "refreshlinks.inc" );
+require_once( "rebuildtextindex.inc" );
+require_once( "rebuildrecentchanges.inc" );
$wgDBuser = $wgDBadminuser;
$wgDBpassword = $wgDBadminpassword;
-rebuildLinkTables();
+# Doesn't work anymore
+# rebuildLinkTables();
+
+# Use the slow incomplete one instead. It's designed to work in the background
+#refreshLinks( 1 );
dropTextIndex();
rebuildTextIndex();
diff --git a/maintenance/rebuildlinks.php b/maintenance/rebuildlinks.php
index bc4a291f976c..f47b922dbe3b 100644
--- a/maintenance/rebuildlinks.php
+++ b/maintenance/rebuildlinks.php
@@ -3,26 +3,10 @@
# Rebuild link tracking tables from scratch. This takes several
# hours, depending on the database size and server configuration.
-if ( ! is_readable( "../LocalSettings.php" ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "must exist in the source directory.\n";
- exit();
-}
-
-$wgCommandLineMode = true;
-ini_set("implicit_flush", 1);
-
-$DP = "../includes";
-require_once( "../LocalSettings.php" );
-require_once( "../AdminSettings.php" );
-
-$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-ini_set( "include_path", "$IP$sep$include_path" );
-
-require_once( "Setup.php" );
+require_once( "commandLine.inc" );
require_once( "./rebuildlinks.inc" );
+
$wgTitle = Title::newFromText( "Rebuild links script" );
-set_time_limit(0);
$wgDBuser = $wgDBadminuser;
$wgDBpassword = $wgDBadminpassword;
diff --git a/maintenance/rebuildrecentchanges.php b/maintenance/rebuildrecentchanges.php
index 3ea838b613c7..6e342b2b1609 100644
--- a/maintenance/rebuildrecentchanges.php
+++ b/maintenance/rebuildrecentchanges.php
@@ -3,24 +3,9 @@
# Rebuild link tracking tables from scratch. This takes several
# hours, depending on the database size and server configuration.
-if ( ! is_readable( "../LocalSettings.php" ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "must exist in the source directory.\n";
- exit();
-}
-
-$wgCommandLineMode = true;
-$DP = "../includes";
-require_once( "../LocalSettings.php" );
-require_once( "../AdminSettings.php" );
-
-$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-ini_set( "include_path", "$IP$sep$include_path" );
-
-require_once( "Setup.php" );
+require_once( "commandLine.inc" );
require_once( "./rebuildrecentchanges.inc" );
$wgTitle = Title::newFromText( "Rebuild recent changes script" );
-set_time_limit(0);
$wgDBuser = $wgDBadminuser;
$wgDBpassword = $wgDBadminpassword;
diff --git a/maintenance/rebuildtextindex.inc b/maintenance/rebuildtextindex.inc
index 65800edf3113..a511c6601434 100644
--- a/maintenance/rebuildtextindex.inc
+++ b/maintenance/rebuildtextindex.inc
@@ -6,40 +6,53 @@
# Rebuilding is faster if you drop the index and recreate it,
# but that will prevent searches from working while it runs.
-function dropTextIndex()
+define( "RTI_CHUNK_SIZE", 500 );
+
+function dropTextIndex( &$database )
{
if ( wfIndexExists( "searchindex", "si_title" ) ) {
echo "Dropping index...\n";
$sql = "ALTER TABLE searchindex DROP INDEX si_title, DROP INDEX si_text";
- $res = wfQuery($sql, DB_WRITE, "dropTextIndex" );
+ $database->query($sql, "dropTextIndex" );
}
+ # Truncate table, in an attempt to bring the slaves to a consistent state
+ # (zwinger was accidentally written to)
+ $database->query( "TRUNCATE TABLE searchindex", "dropTextIndex" );
}
-function createTextIndex()
+function createTextIndex( &$database )
{
echo "Rebuild the index...\n";
$sql = "ALTER TABLE searchindex ADD FULLTEXT si_title (si_title), " .
"ADD FULLTEXT si_text (si_text)";
- $res = wfQuery($sql, DB_WRITE, "createTextIndex" );
+ $database->query($sql, "createTextIndex" );
}
-function rebuildTextIndex()
+function rebuildTextIndex( &$database )
{
- $sql = "SELECT COUNT(*) AS count FROM cur";
- $res = wfQuery($sql, DB_READ, "rebuildTextIndex" );
+ global $wgDisableSearchUpdate;
+ $wgDisableSearchUpdate = false;
+
+ $sql = "SELECT MAX(cur_id) AS count FROM cur";
+ $res = $database->query($sql, "rebuildTextIndex" );
$s = wfFetchObject($res);
- echo "Rebuilding index fields for {$s->count} pages...\n";
+ $count = $s->count;
+ echo "Rebuilding index fields for {$count} pages...\n";
$n = 0;
- $sql = "SELECT cur_id, cur_namespace, cur_title, cur_text FROM cur";
- $res = wfQuery($sql, DB_READ, "rebuildTextIndex" );
-
- while( $s = wfFetchObject($res) ) {
- $u = new SearchUpdate( $s->cur_id, $s->cur_title, $s->cur_text );
- $u->doUpdate();
- if ( ( (++$n) % 500) == 0) { echo "$n\n"; }
+ while ( $n < $count ) {
+ print "$n\n";
+ $end = $n + RTI_CHUNK_SIZE - 1;
+ $sql = "SELECT cur_id, cur_namespace, cur_title, cur_text FROM cur WHERE cur_id BETWEEN $n AND $end";
+ $res = $database->query($sql, "rebuildTextIndex" );
+
+ while( $s = wfFetchObject($res) ) {
+ $u = new SearchUpdate( $s->cur_id, $s->cur_title, $s->cur_text );
+ $u->doUpdate();
+ }
+ wfFreeResult( $res );
+ $n += RTI_CHUNK_SIZE;
}
- wfFreeResult( $res );
}
?>
diff --git a/maintenance/rebuildtextindex.php b/maintenance/rebuildtextindex.php
index e9366817292f..247fedc523b4 100644
--- a/maintenance/rebuildtextindex.php
+++ b/maintenance/rebuildtextindex.php
@@ -1,33 +1,16 @@
<?php
-
# Rebuild search index table from scratch. This takes several
# hours, depending on the database size and server configuration.
-if ( ! is_readable( "../LocalSettings.php" ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "must exist in the source directory.\n";
- exit();
-}
-
-$wgCommandLineMode = true;
-$DP = "../includes";
-require_once( "../LocalSettings.php" );
-require_once( "../AdminSettings.php" );
-
-$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-ini_set( "include_path", "$IP$sep$include_path" );
-
-require_once( "Setup.php" );
-require_once( "./rebuildtextindex.inc" );
+require_once( "commandLine.inc" );
+require_once( "rebuildtextindex.inc" );
$wgTitle = Title::newFromText( "Rebuild text index script" );
-set_time_limit(0);
-$wgDBuser = $wgDBadminuser;
-$wgDBpassword = $wgDBadminpassword;
+$database = Database::newFromParams( $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname );
-dropTextIndex();
-rebuildTextIndex();
-createTextIndex();
+dropTextIndex( $database );
+rebuildTextIndex( $database );
+createTextIndex( $database );
print "Done.\n";
exit();
diff --git a/maintenance/refreshLinks.inc b/maintenance/refreshLinks.inc
new file mode 100644
index 000000000000..42e1138e0e86
--- /dev/null
+++ b/maintenance/refreshLinks.inc
@@ -0,0 +1,46 @@
+<?php
+
+define( "REPORTING_INTERVAL", 50 );
+define( "PAUSE_INTERVAL", 50 );
+
+function refreshLinks( $start ) {
+ global $wgUser, $wgTitle, $wgArticle, $wgEnablePersistentLC, $wgLinkCache, $wgOut;
+
+ $res = wfQuery("SELECT max(cur_id) as m FROM cur", DB_READ);
+ $row = wfFetchObject( $res );
+ $end = $row->m;
+
+ print("Refreshing link table. Starting from cur_id $start of $end.\n");
+
+ # Don't generate TeX PNGs (lack of a sensible current directory causes errors anyway)
+ $wgUser->setOption("math", 3);
+
+ for ($id = $start; $id <= $end; $id++) {
+ if ( !($id % REPORTING_INTERVAL) ) {
+ print "$id\n";
+ }
+
+ if ( !($id % PAUSE_INTERVAL) ) {
+ sleep(1);
+ }
+
+ $wgTitle = Title::newFromID( $id );
+ if ( is_null( $wgTitle ) ) {
+ continue;
+ }
+
+ $wgArticle = new Article( $wgTitle );
+ $text = $wgArticle->getContent( true );
+ $wgLinkCache = new LinkCache;
+ $wgOut->addWikiText( $text );
+
+ if ( $wgEnablePersistentLC ) {
+ $wgLinkCache->saveToLinkscc( $id, wfStrencode( $wgTitle->getPrefixedDBkey() ) );
+ }
+
+ $linksUpdate = new LinksUpdate( $id, $wgTitle->getPrefixedDBkey() );
+ $linksUpdate->doDumbUpdate();
+ $linksUpdate->fixBrokenLinks();
+ }
+}
+?>
diff --git a/maintenance/refreshLinks.php b/maintenance/refreshLinks.php
index 089e6a70b5b0..6d6ddc3f0494 100644
--- a/maintenance/refreshLinks.php
+++ b/maintenance/refreshLinks.php
@@ -1,8 +1,8 @@
<?php
-define( "REPORTING_INTERVAL", 50 );
-define( "PAUSE_INTERVAL", 50 );
require_once( "commandLine.inc" );
+require_once( "refreshLinks.inc" );
+
error_reporting( E_ALL & (~E_NOTICE) );
@@ -12,42 +12,7 @@ if ($argv[2]) {
$start = 1;
}
-$res = wfQuery("SELECT max(cur_id) as m FROM cur", DB_READ);
-$row = wfFetchObject( $res );
-$end = $row->m;
-
-print("Refreshing link table. Starting from cur_id $start of $end.\n");
-
-# Don't generate TeX PNGs (lack of a sensible current directory causes errors anyway)
-$wgUser->setOption("math", 3);
-
-for ($id = $start; $id <= $end; $id++) {
- if ( !($id % REPORTING_INTERVAL) ) {
- print "$id\n";
- }
-
- if ( !($id % PAUSE_INTERVAL) ) {
- sleep(1);
- }
-
- $wgTitle = Title::newFromID( $id );
- if ( is_null( $wgTitle ) ) {
- continue;
- }
-
- $wgArticle = new Article( $wgTitle );
- $text = $wgArticle->getContent( true );
- $wgLinkCache = new LinkCache;
- @$wgOut->addWikiText( $text );
-
- if ( $wgEnablePersistentLC ) {
- $wgLinkCache->saveToLinkscc( $id, wfStrencode( $wgTitle->getPrefixedDBkey() ) );
- }
-
- $linksUpdate = new LinksUpdate( $id, $wgTitle->getPrefixedDBkey() );
- $linksUpdate->doDumbUpdate();
- $linksUpdate->fixBrokenLinks();
-}
+refreshLinks( $start );
exit();
diff --git a/maintenance/remove-brokenlinks.php b/maintenance/remove-brokenlinks.php
index 89a30033990e..7faecef568dd 100644
--- a/maintenance/remove-brokenlinks.php
+++ b/maintenance/remove-brokenlinks.php
@@ -1,25 +1,9 @@
<?php
# Remove spurious brokenlinks
-
-if ( ! is_readable( "../LocalSettings.php" ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "must exist in the source directory.\n";
- exit();
-}
-
-$wgCommandLineMode = true;
-$DP = "../includes";
-require_once( "../LocalSettings.php" );
-require_once( "../AdminSettings.php" );
-
-$sep = strchr( $include_path = ini_get( "include_path" ), ";" ) ? ";" : ":";
-ini_set( "include_path", "$IP$sep$include_path" );
-
-require_once( "Setup.php" );
+require_once( "commandLine.inc" );
require_once( "./rebuildrecentchanges.inc" );
$wgTitle = Title::newFromText( "Rebuild brokenlinks script" );
-set_time_limit(0);
$wgDBuser = $wgDBadminuser;
$wgDBpassword = $wgDBadminpassword;
diff --git a/maintenance/tables.sql b/maintenance/tables.sql
index 4f256c702fd9..da269c6bb990 100644
--- a/maintenance/tables.sql
+++ b/maintenance/tables.sql
@@ -189,7 +189,8 @@ CREATE TABLE recentchanges (
rc_last_oldid int(10) unsigned NOT NULL default '0',
rc_type tinyint(3) unsigned NOT NULL default '0',
rc_moved_to_ns tinyint(3) unsigned NOT NULL default '0',
- rc_moved_to_title varchar(255) binary NOT NULL default ''
+ rc_moved_to_title varchar(255) binary NOT NULL default '',
+ rc_ip char(15) NOT NULL default ''
) PACK_KEYS=1;
CREATE TABLE watchlist (
@@ -242,3 +243,10 @@ CREATE TABLE objectcache (
unique key (keyname),
key (exptime)
);
+
+-- For storing revision text
+CREATE TABLE blobs (
+ blob_index char(255) binary NOT NULL default '',
+ blob_data longblob NOT NULL default '',
+ UNIQUE key blob_index (blob_index)
+);
diff --git a/maintenance/trivialCmdLine.php b/maintenance/trivialCmdLine.php
new file mode 100644
index 000000000000..4a0bb39cfa4b
--- /dev/null
+++ b/maintenance/trivialCmdLine.php
@@ -0,0 +1,11 @@
+<?php
+require_once( "commandLine.inc" );
+print "DB name: $wgDBname\n";
+print "DB user: $wgDBuser\n";
+print "DB password: $wgDBpassword\n";
+
+$res = wfQuery( "SELECT MAX(cur_id) as m FROM cur", DB_READ );
+$row = wfFetchObject( $res );
+print "Max cur_id: {$row->m}\n";
+
+?>
diff --git a/maintenance/update2.php b/maintenance/update2.php
new file mode 100644
index 000000000000..b8712091cde6
--- /dev/null
+++ b/maintenance/update2.php
@@ -0,0 +1,43 @@
+<?php
+
+# This script was used to convert the live Wikimedia wikis from 1.2 to 1.3
+
+$maintenance = "/home/wikipedia/common/php-new/maintenance";
+require_once( "$maintenance/liveCmdLine.inc" );
+require_once( "$maintenance/InitialiseMessages.inc" );
+require_once( "$maintenance/updaters.inc" );
+require_once( "$maintenance/archives/moveCustomMessages.inc" );
+require_once( "$maintenance/convertLinks.inc" );
+require_once( "$maintenance/../install-utils.inc" );
+
+$wgDatabase = Database::newFromParams( $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname );
+do_ipblocks_update(); flush();
+do_interwiki_update(); flush();
+do_index_update(); flush();
+do_linkscc_update(); flush();
+do_linkscc_1_3_update(); flush();
+do_hitcounter_update(); flush();
+do_recentchanges_update(); flush();
+do_user_real_name_update(); flush();
+do_querycache_update(); flush();
+do_objectcache_update(); flush();
+do_categorylinks_update(); flush();
+initialiseMessages(); flush();
+moveCustomMessages( 1 );
+
+if ( file_exists( $wgReadOnlyFile ) ) {
+ $alreadyExists = true;
+} else {
+ $file = fopen( $wgReadOnlyFile, "w" );
+ fwrite( $file, "The database is temporarily locked for a software upgrade\n" );
+ fclose( $file );
+ $alreadyExists = false;
+}
+
+convertLinks();
+
+if ( !$alreadyExists ) {
+ unlink( $wgReadOnlyFile );
+}
+
+?>
diff --git a/maintenance/updateSearchIndex.inc b/maintenance/updateSearchIndex.inc
new file mode 100644
index 000000000000..f3c3646edd48
--- /dev/null
+++ b/maintenance/updateSearchIndex.inc
@@ -0,0 +1,92 @@
+<?php
+
+function updateSearchIndex( $start, $end, $maxLockTime, $quiet ) {
+ global $wgQuiet;
+ global $wgDisableSearchUpdate;
+
+ $fname = "updateSearchIndex";
+
+ $wgQuiet = $quiet;
+ $wgDisableSearchUpdate = false;
+
+ output( "Updating searchindex between $start and $end\n" );
+
+ # Select entries from recentchanges which are on top and between the specified times
+ $start = wfStrencode( $start );
+ $end = wfStrencode( $end );
+
+ $sql = "SELECT rc_cur_id,rc_type,rc_moved_to_ns,rc_moved_to_title FROM recentchanges
+ WHERE rc_this_oldid=0 AND rc_timestamp BETWEEN '$start' AND '$end'";
+ $res = wfQuery( $sql, DB_READ, $fname );
+
+ # Lock searchindex
+ if ( $maxLockTime ) {
+ output( " --- Waiting for lock ---" );
+ lockSearchindex();
+ $lockTime = time();
+ output( "\n" );
+ }
+
+ # Loop through the results and do a search update
+ while ( $row = wfFetchObject( $res ) ) {
+ # Allow reads to be processed
+ if ( $maxLockTime && time() > $lockTime + $maxLockTime ) {
+ output( " --- Relocking ---" );
+ relockSearchindex();
+ $lockTime = time();
+ output( "\n" );
+ }
+ if ( $row->rc_type == RC_LOG ) {
+ continue;
+ } elseif ( $row->rc_type == RC_MOVE || $row->rc_type == RC_MOVE_OVER_REDIRECT ) {
+ # Rename searchindex entry
+ $titleObj = Title::makeTitle( $row->rc_moved_to_ns, $row->rc_moved_to_title );
+ $title = $titleObj->getPrefixedDBkey();
+ output( "$title..." );
+ $u = new SearchUpdate( $row->rc_cur_id, $title, false );
+ output( "\n" );
+ } else {
+ # Get cur row
+ $curRow = wfGetArray( 'cur', array( 'cur_namespace', 'cur_title', 'cur_text' ), array( 'cur_id' => $row->rc_cur_id ) );
+ if ( $curRow ) {
+ $titleObj = Title::makeTitle( $curRow->cur_namespace, $curRow->cur_title );
+ $title = $titleObj->getPrefixedDBkey();
+ output( $title );
+ # Update searchindex
+ $u = new SearchUpdate( $row->rc_cur_id, $curRow->cur_title, $curRow->cur_text );
+ $u->doUpdate();
+ output( "\n" );
+ }
+ }
+ }
+
+ # Unlock searchindex
+ if ( $maxLockTime ) {
+ unlockSearchindex();
+ }
+ output( "Done\n" );
+}
+
+function lockSearchindex() {
+ wfQuery( "LOCK TABLES searchindex LOW_PRIORITY WRITE, cur READ, interwiki READ", DB_WRITE );
+}
+
+function unlockSearchindex() {
+ wfQuery( "UNLOCK TABLES", DB_WRITE );
+}
+
+# Unlock and lock again
+# Since the lock is low-priority, queued reads will be able to complete
+function relockSearchindex() {
+ unlockSearchindex();
+ lockSearchindex();
+}
+
+function output( $text ) {
+ global $wgQuiet;
+ if ( !$wgQuiet ) {
+ print $text;
+ }
+}
+
+?>
diff --git a/maintenance/updateSearchIndex.php b/maintenance/updateSearchIndex.php
new file mode 100644
index 000000000000..75b789e785fa
--- /dev/null
+++ b/maintenance/updateSearchIndex.php
@@ -0,0 +1,52 @@
+<?php
+
+# Script for periodic off-peak updating of the search index
+
+# Usage: php updateSearchIndex.php [-s START] [-e END] [-p POSFILE] [-l LOCKTIME] [-q]
+# Where START is the starting timestamp
+# END is the ending timestamp
+# POSFILE is a file to load timestamps from and save them to, searchUpdate.pos by default
+# LOCKTIME is how long the searchindex and cur tables will be locked for
+# -q means quiet
+
+$optionsWithArgs = array( 's', 'e', 'p' );
+
+require_once( 'commandLine.inc' );
+require_once( 'updateSearchIndex.inc' );
+
+if ( isset( $options['p'] ) ) {
+ $posFile = $options['p'];
+} else {
+ $posFile = 'searchUpdate.pos';
+}
+
+if ( isset( $options['e'] ) ) {
+ $end = $options['e'];
+} else {
+ $end = wfTimestampNow();
+}
+
+if ( isset( $options['s'] ) ) {
+ $start = $options['s'];
+} else {
+ $start = @file_get_contents( $posFile );
+ if ( !$start ) {
+ $start = wfUnix2Timestamp( time() - 86400 );
+ }
+}
+
+if ( isset( $options['l'] ) ) {
+ $lockTime = $options['l'];
+} else {
+ $lockTime = 20;
+}
+
+$quiet = (bool)(@$options['q']);
+
+updateSearchIndex( $start, $end, $lockTime, $quiet );
+
+$file = fopen( $posFile, 'w' );
+fwrite( $file, $end );
+fclose( $file );
+
+?>
diff --git a/maintenance/updaters.inc b/maintenance/updaters.inc
index d557ebb5e8fa..8ed663be0c8b 100644
--- a/maintenance/updaters.inc
+++ b/maintenance/updaters.inc
@@ -102,6 +102,19 @@ function do_linkscc_update() {
}
}
+function do_linkscc_1_3_update() {
+ // Update linkscc table to 1.3 schema if necessary
+ global $wgDatabase, $wgVersion;
+ if( ( strpos( "1.3", $wgVersion ) === 0 ) && $wgDatabase->tableExists( "linkscc" )
+ && $wgDatabase->fieldExists( "linkscc", "lcc_title" ) ) {
+ echo "Altering lcc_title field from linkscc table... ";
+ dbsource( "maintenance/archives/patch-linkscc-1.3.sql", $wgDatabase );
+ echo "ok\n";
+ } else {
+ echo "...linkscc is up to date, or does not exist. Good.\n";
+ }
+}
+
function do_hitcounter_update() {
// Create hitcounter if necessary
global $wgDatabase;
@@ -121,6 +134,11 @@ function do_recentchanges_update() {
dbsource( "maintenance/archives/patch-rc_type.sql" , $wgDatabase );
echo "ok\n";
}
+ if ( !$wgDatabase->fieldExists( "recentchanges", "rc_ip" ) ) {
+ echo "Adding rc_ip...";
+ dbsource( "maintenance/archives/patch-rc_ip.sql", $wgDatabase );
+ echo "ok\n";
+ }
}
function do_user_real_name_update() {
@@ -166,5 +184,4 @@ function do_categorylinks_update() {
echo "ok\n";
}
}
-
-?> \ No newline at end of file
+?>
diff --git a/maintenance/wikipedia-interwiki.sql b/maintenance/wikipedia-interwiki.sql
index 36ad2c5b9341..c42b47d8f681 100644
--- a/maintenance/wikipedia-interwiki.sql
+++ b/maintenance/wikipedia-interwiki.sql
@@ -25,6 +25,7 @@ REPLACE INTO interwiki (iw_prefix,iw_url,iw_local) VALUES
('bo','http://bo.wikipedia.org/wiki/$1',1),
('bs','http://bs.wikipedia.org/wiki/$1',1),
('ca','http://ca.wikipedia.org/wiki/$1',1),
+('chr','http://chr.wikipedia.org/wiki/$1',1),
('co','http://co.wikipedia.org/wiki/$1',1),
('cs','http://cs.wikipedia.org/wiki/$1',1),
('csb','http://csb.wikipedia.org/wiki/$1',1),
diff --git a/maintenance/wiktionary-interwiki.sql b/maintenance/wiktionary-interwiki.sql
index d01dcd4b211d..a2863a87ccd3 100644
--- a/maintenance/wiktionary-interwiki.sql
+++ b/maintenance/wiktionary-interwiki.sql
@@ -25,6 +25,7 @@ REPLACE INTO interwiki (iw_prefix,iw_url,iw_local) VALUES
('bo','http://bo.wiktionary.org/wiki/$1',1),
('bs','http://bs.wiktionary.org/wiki/$1',1),
('ca','http://ca.wiktionary.org/wiki/$1',1),
+('chr','http://chr.wiktionary.org/wiki/$1',1),
('co','http://co.wiktionary.org/wiki/$1',1),
('cs','http://cs.wiktionary.org/wiki/$1',1),
('csb','http://csb.wiktionary.org/wiki/$1',1),
diff --git a/math/render.ml b/math/render.ml
index d4bc9ade8339..edd5984abd2d 100644
--- a/math/render.ml
+++ b/math/render.ml
@@ -1,17 +1,19 @@
-let cmd_dvips tmpprefix = "dvips -R -E " ^ tmpprefix ^ ".dvi -f"
+let cmd_dvips tmpprefix = "dvips -R -E " ^ tmpprefix ^ ".dvi -f >" ^ tmpprefix ^ ".ps"
let cmd_latex tmpprefix = "latex " ^ tmpprefix ^ ".tex >/dev/null"
-let cmd_convert finalpath = "convert -quality 100 -density 120 ps:- " ^ finalpath ^ " >/dev/null 2>/dev/null"
+let cmd_convert tmpprefix finalpath = "convert -quality 100 -density 120 " ^ tmpprefix ^ ".ps " ^ finalpath ^ " >/dev/null 2>/dev/null"
exception ExternalCommandFailure of string
let render tmppath finalpath outtex md5 =
- let tmpprefix = (tmppath^"/"^(string_of_int (Unix.getpid ()))^"_"^md5) in
+ let tmpprefix0 = (string_of_int (Unix.getpid ()))^"_"^md5 in
+ let tmpprefix = (tmppath^"/"^tmpprefix0) in
let unlink_all () =
begin
Sys.remove (tmpprefix ^ ".dvi");
Sys.remove (tmpprefix ^ ".aux");
Sys.remove (tmpprefix ^ ".log");
- Sys.remove (tmpprefix ^ ".tex")
+ Sys.remove (tmpprefix ^ ".tex");
+ Sys.remove (tmpprefix ^ ".ps");
end in
let f = (Util.open_out_unless_exists (tmpprefix ^ ".tex")) in
begin
@@ -19,9 +21,11 @@ let render tmppath finalpath outtex md5 =
output_string f outtex;
output_string f (Texutil.get_footer ());
close_out f;
- if Util.run_in_other_directory tmppath (cmd_latex tmpprefix) != 0
+ if Util.run_in_other_directory tmppath (cmd_latex tmpprefix0) != 0
then (unlink_all (); raise (ExternalCommandFailure "latex"))
- else if (Sys.command ((cmd_dvips tmpprefix) ^ " | " ^ (cmd_convert (finalpath^"/"^md5^".png"))) != 0)
- then (unlink_all (); raise (ExternalCommandFailure ("dvips")))
+ else if (Sys.command (cmd_dvips tmpprefix) != 0)
+ then (unlink_all (); raise (ExternalCommandFailure "dvips"))
+ else if (Sys.command (cmd_convert tmpprefix (finalpath^"/"^md5^".png")) != 0)
+ then (unlink_all (); raise (ExternalCommandFailure "convert"))
else unlink_all ()
end
diff --git a/stylesheets/common.css b/stylesheets/common.css
index 712e4fe78ae0..ec18a7c80653 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;
@@ -36,6 +35,8 @@ div.thumb div {
background-color: #f7f8ff;
padding: 2px;
font-size: 94%;
+ text-align: center;
+ overflow: hidden;
}
div.thumb div * {
border: none;
@@ -66,7 +67,7 @@ div.tleft {
/* Page history styling */
/* the auto-generated edit comments */
-.autocomment { color: gray; }
+.autocomment { color: #4b4b4b; }
#pagehistory span.user {
margin-left: 1.4em;
margin-right: 0.4em;
@@ -78,27 +79,26 @@ div.tleft {
border:1px dashed #aaaaaa;
}
-table.diff {
- background:white;
-}
-td.diff-otitle {
- background:#cccccc;
-}
-td.diff-ntitle {
- background:#cccccc;
-}
-td.diff-addedline {
- background:#ccffcc;
+table.diff { background:white; }
+td.diff-otitle { background:#cccccc; }
+td.diff-ntitle { background:#cccccc; }
+td.diff-addedline {
+ background:#ccffcc;
+ font-size: 94%;
}
-td.diff-deletedline {
- background:#ffffaa;
+td.diff-deletedline {
+ background:#ffffaa;
+ font-size: 94%;
}
td.diff-context {
- background:#eeeeee;
+ background:#eeeeee;
+ font-size: 94%;
}
+span.diffchange { color: red; }
img { border: none; }
img.tex { vertical-align: middle; }
+span.texhtml { font-family: serif; }
#toc {
@@ -107,6 +107,14 @@ img.tex { vertical-align: middle; }
padding: 5px;
font-size: 95%;
}
+#toc .tocindent { margin-left: 2em; }
+#toc .tocline { margin-bottom: 0px; }
+#toc p { margin: 0 }
+#toc .toctoggle { font-size: 95%; }
+#toc .editsection {
+ margin-top: 0.7em;
+ font-size: 94%;
+}
.error {
color: red;
@@ -140,3 +148,51 @@ div.prefsectiontip {
}
fieldset.prefsection { margin-top: 1em }
fieldset.operaprefsection { margin-left: 15em }
+
+/* emulate center */
+.center {
+ width: 100%;
+ text-align: center;
+}
+*.center * {
+ margin-left: auto;
+ margin-right: auto;
+}
+/* small for tables and similar */
+.small, .small * { font-size: 94%; }
+table.small { font-size: 100% }
+
+div.townBox {
+ position:relative;
+ float:right;
+ background:White;
+ margin-left:1em;
+ border: 1px solid Grey;
+ padding:0.3em;
+ width: 200px;
+ overflow: hidden;
+ clear: right;
+}
+div.townBox dl {
+ padding: 0;
+ margin: 0 0 0.3em 0;
+ font-size: 96%;
+}
+div.townBox dl dt {
+ background: none;
+ margin: 0.4em 0 0 0;
+}
+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%;
+}
+#siteNotice {
+ border:1px solid #aaaaaa;
+}
diff --git a/stylesheets/commonPrint.css b/stylesheets/commonPrint.css
index 872e4d0984cd..a348b73f20ac 100644
--- a/stylesheets/commonPrint.css
+++ b/stylesheets/commonPrint.css
@@ -25,6 +25,7 @@ a.new{ color:#ba0000; text-decoration:none; }
.toctoggle, .editsection {
font-size: smaller;
}
+
/* images */
div.floatright {
float: right;
@@ -47,31 +48,34 @@ div.thumb {
margin-bottom: 0.5em;
border-style: solid; border-color: White;
width: auto;
+ overflow: hidden;
}
div.thumb div {
border:1px solid #cccccc;
padding: 3px !important;
background-color:#f9f9f9;
font-size: 94%;
+ text-align: center;
}
div.thumb div a img {
border:1px solid #cccccc;
}
-div div.thumbcaption {
+div.thumb div div.thumbcaption {
border: none;
text-align: left;
- padding: 0.3em 0 0.1em 0 !important;
+ padding: 0.3em 0 0.1em 0;
}
-div.magnify {
+div.magnify { display: none; }
+div.tright {
float: right;
- border: none !important;
- background: none !important;
+ border-width: 0.5em 0 0.8em 1.4em;
}
-div.magnify a, div.magnify img {
- display: block;
- border: none !important;
- background: none !important;
+div.tleft {
+ float: left;
+ margin-right:0.5em;
+ border: 0.5em 1.4em 0.8em 0;
}
+
/* table standards */
table.rimage {
float:right;
@@ -84,8 +88,7 @@ table.rimage {
body {
background: White;
- font-family: "Bitstream Vera Sans",Verdana, sans;
- font-size: 11pt !important;
+ /*font-size: 11pt !important;*/
color: Black;
margin: 0;
padding: 0;
@@ -186,8 +189,36 @@ 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 {
display: inline ! important;
}
+
+div.townBox {
+ position:relative;
+ float:right;
+ background:White;
+ margin-left:1em;
+ border: 1px solid Grey;
+ padding:0.3em;
+ width: 200px;
+ overflow: hidden;
+ clear: right;
+}
+div.townBox dl {
+ padding: 0;
+ margin: 0 0 0.3em 0;
+ font-size: 96%;
+}
+div.townBox dl dt {
+ background: none;
+ margin: 0.4em 0 0 0;
+}
+div.townBox dl dd {
+ margin: 0.1em 0 0 1.1em;
+ background-color: #f3f3f3;
+}
diff --git a/stylesheets/monobook/IE55Fixes.css b/stylesheets/monobook/IE55Fixes.css
index 4c2c384ad5d2..b3258d5132e8 100644
--- a/stylesheets/monobook/IE55Fixes.css
+++ b/stylesheets/monobook/IE55Fixes.css
@@ -1,17 +1,36 @@
/* IE5.5/win- only fixes */
-#column-content { display: inline; }
-#column-content #content {
- margin-top: 3em;
- overflow: auto;
+#column-content {
+ float: none;
+ margin-left: 0;
height: 1%;
}
+#column-content #content {
+ position: relative;
+ z-index: 5;
+ margin-left: 12.2em;
+ margin-top: 3em;
+ height: 1%;
+}
+#column-one {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 4;
+ width: 100%;
+}
+#footer {
+ margin-left: 13.6em;
+ border-left: 1px solid #fabd23;
+}
+
/*#bodyContent div,
#bodyContent pre { overflow: auto; }*/
#p-personal { padding-bottom: 0.1em; }
body { font-size: xx-small; }
+
#p-cactions {
width: 76% !important;
z-index: 3 !important;
diff --git a/stylesheets/monobook/IE60Fixes.css b/stylesheets/monobook/IE60Fixes.css
index b71cb2d099f7..ab5a97a7c729 100644
--- a/stylesheets/monobook/IE60Fixes.css
+++ b/stylesheets/monobook/IE60Fixes.css
@@ -1,16 +1,26 @@
/* 6.0 - only fixes */
/* content area */
-
/* workaround for various ie float bugs */
+#column-content {
+ float: none;
+ margin-left: 0;
+ height: 1%;
+}
#column-content #content {
+ margin-left: 12.2em;
margin-top: 3em;
height: 1%;
}
-#bodyContent {
- height: 1%;
+#column-one {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 4;
+}
+#footer {
+ margin-left: 13.6em;
+ border-left: 1px solid #fabd23;
}
-
-#column-content { display: inline; }
/* the tabs */
@@ -53,7 +63,7 @@ div.visualClear {
}
textarea {
overflow: auto;
- width: 97%;
+ width: 96%;
}
div.editsection,
diff --git a/stylesheets/monobook/main.css b/stylesheets/monobook/main.css
index 8facf54b1c99..54f6b167e532 100644
--- a/stylesheets/monobook/main.css
+++ b/stylesheets/monobook/main.css
@@ -1,13 +1,11 @@
/*
** Mediawiki 'monobook' style sheet for CSS2-capable browsers.
-** Copyright Gabriel Wicke - http://www.aulinx.de/
+** Copyright Gabriel Wicke - http://wikidev.net/
+** License: GPL
**
-** Based on http://www.positioniseverything.net/ordered-floats.html by Big John
-** and the Plone 2.0 styles, see http://plone.org/.
-** Alexander Limi - http://www.plonesolutions.com
-** additional plone work:
-** Joe Geldart & Tom Croucher - http://www.netalleynetworks.com, Michael Zeltner - http://niij.org,
-** Geir Bækholt - http://www.plonesolutions.com
+** Loosely based on http://www.positioniseverything.net/ordered-floats.html by Big John
+** and the Plone 2.0 styles, see http://plone.org/ (Alexander Limi,Joe Geldart & Tom Croucher,
+** Michael Zeltner and Geir Bækholt)
** All you guys rock :)
*/
@@ -37,7 +35,7 @@
*/
body {
- font: x-small "Bitstream Vera Sans", "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif;
+ font: x-small sans-serif;
background: #f9f9f9 url("headbg.jpg") 0px 0px no-repeat;
color: Black;
margin: 0;
@@ -46,7 +44,7 @@ body {
/* scale back up to a sane default */
#globalWrapper {
- font-size:123%;
+ font-size:127%;
width: 100%;
margin: 0;
padding: 0;
@@ -61,21 +59,24 @@ table {
}
a {
text-decoration: none;
- color: #005189;
+ color: #002bb8;
background: none;
}
a:visited { color: #5a3696; }
a:active { color: Orange; }
a:hover { text-decoration: underline; }
-a.stub,
-a.new { color:#ba0000; }
+a.stub { color: #772233; }
+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;
}
@@ -92,7 +93,6 @@ hr {
h1, h2, h3, h4, h5, h6 {
color: Black;
background: none;
- font-family: "Bitstream Vera Sans", "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif;
font-weight: normal;
margin: 0;
padding-top: 0.5em;
@@ -121,13 +121,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.2em;
+ margin-bottom: 0.5em;
+}
dd {
line-height: 1.5em;
- margin-bottom: 0.8em;
margin-left: 2em;
+ margin-bottom: 0.1em;
}
fieldset {
@@ -157,7 +165,6 @@ textarea {
/* hide this from ie/mac and konq2.2 */
@media All {
head:first-child+body input {
- font-family: "Bitstream Vera Sans", "Lucida Grande", Verdana, Lucida, Helvetica, Arial, sans-serif;
visibility: visible;
border: 1px solid #2f6fab;
color: Black;
@@ -166,6 +173,13 @@ textarea {
padding: 0.2em;
}
}
+input.historysubmit {
+ padding: 0 0.3em 0.3em 0.3em !important;
+ font-size: 94%;
+ cursor: pointer;
+ height: 1.7em !important;
+ margin-left: 1.6em;
+}
input[type="radio"],
input[type="checkbox"] { border:none; }
select {
@@ -194,6 +208,7 @@ pre {
border: 1px dashed #2f6fab;
color: Black;
background-color: #f9f9f9;
+ line-height: 1.1em;
}
@@ -210,21 +225,13 @@ pre {
width: auto;
}
span.subpages { display: block; }
-#catlinks {
- margin: 0;
- padding: 0;
- width: 34%;
- text-align: right;
- float: right;
-}
/* Some space under the headers in the content area */
-#bodyContent h1,
-#bodyContent h2,
+#bodyContent h1, #bodyContent h2 { margin-bottom:0.6em; }
#bodyContent h3,
#bodyContent h4,
#bodyContent h5 {
- margin-bottom:0.8em;
+ margin-bottom: 0.3em;
}
.firstHeading { margin-bottom:0.1em; }
@@ -238,10 +245,23 @@ span.subpages { display: block; }
padding: 0.5em 1em;
vertical-align: middle;
}
+#siteNotice {
+ text-align: center;
+ font-size: 95%;
+ padding: 0 0.9em 0 0.9em;
+}
+#siteNotice p { margin: none; padding: none; }
.error {
color: red;
font-size: larger;
}
+#catlinks {
+ border:1px solid #aaaaaa;
+ 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 */
.documentDescription {
@@ -268,7 +288,9 @@ in the bottom-right corner of the content area */
margin-left: auto;
margin-right: auto;
}
-
+/* small for tables and similar */
+.small, .small * { font-size: 94%; }
+table.small { font-size: 100% }
/*
** content styles
@@ -281,27 +303,29 @@ in the bottom-right corner of the content area */
padding:5px;
font-size: 95%;
}
-.tocindent { margin-left: 2em; }
-.tocline { margin-bottom: 0px; }
-.toctoggle { font-size: 94%; }
-.editsection {
+#toc .tocindent { margin-left: 2em; }
+#toc .tocline { margin-bottom: 0px; }
+#toc p { margin: 0 }
+#toc .toctoggle { font-size: 94%; }
+#toc .editsection {
margin-top: 0.7em;
font-size: 94%;
}
/* images */
-div.floatright {
+div.floatright, table.floatright {
+ clear: right;
float: right;
margin: 0;
- position:relative;
+ position: relative;
border: 0.5em solid White;
border-width: 0.5em 0 0.8em 1.4em;
}
-div.floatright p { font-style: italic;}
-div.floatleft {
+div.floatright p { font-style: italic; }
+div.floatleft, table.floatleft {
float: left;
margin: 0.3em 0.5em 0.5em 0;
- position:relative;
+ position: relative;
border: 0.5em solid White;
border-width: 0.5em 1.4em 0.8em 0;
}
@@ -318,6 +342,7 @@ div.thumb div {
background-color:#f9f9f9;
font-size: 94%;
text-align: center;
+ overflow: hidden;
}
div.thumb div a img {
border:1px solid #cccccc;
@@ -325,6 +350,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 {
@@ -337,35 +363,45 @@ div.magnify a, div.magnify img {
border: none !important;
background: none !important;
}
-
+div.tright {
+ clear: right;
+ float: right;
+ border-width: 0.5em 0 0.8em 1.4em;
+}
+div.tleft {
+ float: left;
+ margin-right:0.5em;
+ border-width: 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;
@@ -394,14 +430,12 @@ div.townBox dl dd {
/*
** edit views etc
*/
-
.special li {
line-height: 1.4em;
margin: 0;
padding: 0;
}
-
/* Page history styling */
/* the auto-generated edit comments */
.autocomment { color: gray; }
@@ -421,9 +455,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
@@ -458,7 +502,20 @@ td.diff-context { background:#eeeeee; }
background: url("discussionitem_icon.gif") center right no-repeat;
padding-right: 18px;
}
-
+/* disable interwiki styling */
+#bodyContent a.extiw,
+#bodyContent a.extiw:active {
+ color: #3366bb;
+ background: none;
+ padding: 0;
+}
+#bodyContent a.external { color: #3366bb; }
+/* this can be used in the content area to switch off
+special external link styling */
+#bodyContent .plainlinks a {
+ background: none !important;
+ padding: 0;
+}
/*
** Structural Elements
*/
@@ -578,20 +635,16 @@ input.searchButton {
background-color: White;
border: 1px solid #2f6fab;
}
-
#searchInput {
border: 1px solid #2f6fab;
width:10.9em;
margin: 0 0 0 0;
font-size: 95%;
}
-
-
#p-search .pBody {
padding: 0.5em 0.4em 0.4em 0.4em;
}
-
/*
** the personal toolbar
*/
@@ -668,12 +721,10 @@ li#pt-login {
padding-left: 20px;
text-transform: none;
}
-#p-personal a.new { color:#ba0000; }
/*
** the page-related actions- page/talk, edit etc
*/
-
#p-cactions {
position:absolute;
top: 1.3em;
@@ -708,7 +759,7 @@ li#pt-login {
}
#p-cactions li a {
background-color: White;
- color: #005189;
+ color: #002bb8;
border: none;
padding: 0 0.8em 0.3em 0.8em;
text-decoration: none;
@@ -732,7 +783,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; }
/*
@@ -776,15 +827,6 @@ head:first-child+body #footer li { white-space: nowrap; }
height: 1%;
}
-/* JeLuF's js-based preference dialog */
-#bar #p-cactions {
- top: 8.0em;
- left: 5em;
-}
-form #content {
- left: -8em;
-}
-
/* js pref toc */
#preftoc {
float: left;
@@ -799,7 +841,7 @@ form #content {
#preftoc a,
#preftoc a:active {
display: block;
- color: #005189;
+ color: #0014a6;
}
#prefcontrol {
clear: both;
@@ -817,31 +859,42 @@ fieldset.operaprefsection { margin-left: 15em }
** to a separate stylesheet. This would work but doesn't validate:
** @import("IEMacFixes.css");
*/
-
/* tabs: border on the a, not the div */
-*>html #p-cactions li { border:none; }
-*>html #p-cactions li a {
+* > html #p-cactions li { border:none; }
+* > html #p-cactions li a {
border: 1px solid #aaaaaa;
border-bottom: none;
}
-*>html #p-cactions li.selected a { border-color: #fabd23; }
+* > html #p-cactions li.selected a { border-color: #fabd23; }
/* footer icons need a fixed width */
-*>html #f-poweredbyico,
-*>html #f-copyrightico { width: 88px; }
-
-/* more IE fixes */
-/* float/negative margin brokenness */
-* html #bodyContent {
+* > html #f-poweredbyico,
+* > html #f-copyrightico { width: 88px; }
+* > html #bodyContent,
+* > html #bodyContent pre {
overflow-x: auto;
width: 100%;
padding-bottom: 25px;
}
+
+/* more IE fixes */
+/* float/negative margin brokenness */
* html #footer {margin-top: 0;}
* html #column-content {
display: inline;
margin-bottom: 0;
}
* html div.editsection { font-size: smaller; }
+#pagehistory li.selected { position: relative; }
-/* debugging tool.. */
-/*div{ border:1px solid #000000;}*/
+/* Mac IE 5.0 fix; floated content turns invisible */
+* > html #column-content {
+ float: none;
+}
+* > html #column-one {
+ position: absolute;
+ left: 0;
+ top: 0;
+}
+* > html #footer {
+ margin-left: 13.2em;
+}
diff --git a/stylesheets/monobook/null b/stylesheets/monobook/null
new file mode 100644
index 000000000000..e69de29bb2d1
--- /dev/null
+++ b/stylesheets/monobook/null
diff --git a/stylesheets/monobook/rtl.css b/stylesheets/monobook/rtl.css
index 2dd986ccab67..77b44ac562df 100644
--- a/stylesheets/monobook/rtl.css
+++ b/stylesheets/monobook/rtl.css
@@ -13,10 +13,6 @@ Opera bugs (7.23 linux):
IE/mac bugs:
* The thing barfs on Hebrew and Arabic anyway, so no point testing.
-IE6 bug:
-* right padding of content area disappears somewhere during load, workaround is a margin on the body for now
- (weird, isn't it?) IE5.5 is caught by this fix as well currently, it doesn't need it though
-
Missing features due to lack of support:
* external link icons, icon next to user name
@@ -57,7 +53,6 @@ html>body .portlet {
}
/* Fix alignment */
-#catlinks,
.documentByLine,
.portletDetails,
.portletMore,
@@ -69,7 +64,6 @@ div div.thumbcaption {
text-align: right;
}
-#catlinks,
div.magnify,
#div.townBox,
#p-logo {
@@ -104,7 +98,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;
}
@@ -131,6 +125,18 @@ dd {
margin-left: 0;
margin-right: 2em;
}
+div.tright {
+ clear: none;
+}
+div.tleft {
+ clear: left;
+}
+div.floatright, table.floatright {
+ clear: none;
+}
+div.floatleft, table.floatleft {
+ clear: left;
+}
div.townBox {
margin-left: 0;
margin-right: 1em;
@@ -167,6 +173,23 @@ li#pt-login {
#footer {
clear: both;
}
+* html #footer {
+ margin-left: 0;
+ margin-right: 13.6em;
+ border-left: 0;
+ border-right: 1px solid #fabd23;
+}
+* html #column-content {
+ float: none;
+ margin-left: 0;
+ margin-right: 0;
+}
+* html #column-content #content {
+ margin-left: 0;
+ margin-top: 3em;
+}
+* html #column-one { right: 0; }
+
/* js pref toc */
#preftoc { float: right; }
/* workaround for moz bug, displayed bullets on left side */
@@ -174,6 +197,6 @@ li#pt-login {
#prefcontrol { float: right; }
fieldset.prefsection,
fieldset.operaprefsection {
+ margin-left: 0 !important;
margin-right: 15em;
- margin-left: 0;
}
diff --git a/stylesheets/myskin/main.css b/stylesheets/myskin/main.css
new file mode 100644
index 000000000000..f3ab020480a6
--- /dev/null
+++ b/stylesheets/myskin/main.css
@@ -0,0 +1 @@
+/* this file must be empty */
diff --git a/stylesheets/wikibits.js b/stylesheets/wikibits.js
index bab8d8a54002..e9c786611cdd 100644
--- a/stylesheets/wikibits.js
+++ b/stylesheets/wikibits.js
@@ -1,11 +1,10 @@
// 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;
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1)
- && (clientPC.indexOf('khtml') == -1));
+ && (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1));
var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled ));
if (clientPC.indexOf('opera')!=-1) {
@@ -21,23 +20,22 @@ 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(typeof stylepath != 'undefined' && typeof skin != 'undefined') {
if (is_opera_preseven) {
- document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'Opera6Fixes.css">');
+ document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/Opera6Fixes.css">');
} else if (is_opera_seven) {
- document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'Opera7Fixes.css">');
+ document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/Opera7Fixes.css">');
} else if (is_khtml) {
- document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'KHTMLFixes.css">');
+ document.write('<link rel="stylesheet" type="text/css" href="'+stylepath+'/'+skin+'/KHTMLFixes.css">');
}
- return;
}
-
// Un-trap us from framesets
if( window.top != window ) window.top.location = window.location;
@@ -62,7 +60,7 @@ function toggleVisibility( _levelId, _otherId, _linkId) {
function histrowinit () {
hf = document.getElementById('pagehistory');
if(!hf) return;
- lis = hf.getElementsByTagName('li');
+ lis = hf.getElementsByTagName('LI');
for (i=0;i<lis.length;i++) {
inputs=lis[i].getElementsByTagName('INPUT');
if(inputs[0] && inputs[1]) {
@@ -78,7 +76,7 @@ function diffcheck() {
var oli = false; // the li where the oldid radio is checked
hf = document.getElementById('pagehistory');
if(!hf) return;
- lis = hf.getElementsByTagName('li');
+ lis = hf.getElementsByTagName('LI');
for (i=0;i<lis.length;i++) {
inputs=lis[i].getElementsByTagName('INPUT');
if(inputs[1] && inputs[0]) {
@@ -114,6 +112,7 @@ function diffcheck() {
function tabbedprefs() {
prefform = document.getElementById('preferences');
if(!prefform || !document.createElement) return;
+ if(prefform.nodeName == 'A') return; // Occasional IE problem
prefform.className = prefform.className + 'jsprefs';
var sections = new Array();
children = prefform.childNodes;
@@ -361,3 +360,33 @@ function insertTags(tagOpen, tagClose, sampleText) {
// reposition cursor if possible
if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
}
+
+function akeytt() {
+ if(typeof ta == "undefined" || !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/stylesheets/wikistandard.css b/stylesheets/wikistandard.css
index 2f70ea55616e..a1f96644ed79 100644
--- a/stylesheets/wikistandard.css
+++ b/stylesheets/wikistandard.css
@@ -12,15 +12,7 @@
/* Table of contents */
-.tocindent {
- margin-left: 2em;
-}
-.tocline {
- margin-bottom: 0px;
-}
-.toctoggle, .editsection {
- font-size: smaller;
-}
+.toctoggle, .editsection { font-size: smaller; }
/* ... */
#toolbar { padding:0px; }
diff --git a/templates/xhtml_slim.pt b/templates/xhtml_slim.pt
index f255a4df0c06..72459bf3ed33 100644
--- a/templates/xhtml_slim.pt
+++ b/templates/xhtml_slim.pt
@@ -1,73 +1,61 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="${lang}" lang="${lang}" dir="${dir}">
<head>
<meta http-equiv="Content-Type" content="${mimetype}; charset=${charset}" />
${headlinks}
<title tal:content="pagetitle">Exciting xhtml slimfast</title>
- <style type="text/css" media="screen">/*<![CDATA[*/ @import url(${stylepath}/${skinname}/main.css); /*]]>*/</style>
+ <style type="text/css" media="screen,projection">/*<![CDATA[*/ @import "${stylepath}/${skinname}/main.css"; /*]]>*/</style>
<link rel="stylesheet" type="text/css" media="print" href="${stylepath}/commonPrint.css" />
- <!--[if IE]><style type="text/css" media="all">@import url(${stylepath}/${skinname}/IEFixes.css);</style>
+ <!--[if IE]><style type="text/css" media="all">@import "${stylepath}/${skinname}/IEFixes.css";</style>
<script type="text/javascript" src="${stylepath}/IEFixes.js"></script>
<meta http-equiv="imagetoolbar" content="no" /><![endif]-->
+ <script type="text/javascript" tal:attributes="src jsvarurl"></script>
<script type="text/javascript" src="${stylepath}/wikibits.js"></script>
- <script type="text/javascript"> /*<![CDATA[*/ if(addcss){addcss('${stylepath}/${skinname}/');} /*]]>*/</script>
- <style tal:condition="rtl" type="text/css">/*<![CDATA[*/@import url(${stylepath}/${skinname}/rtl.css);/*]]>*/</style>
<style tal:condition="usercss" type="text/css">/*<![CDATA[*/ ${usercss} /*]]>*/</style>
<script tal:condition="userjs" type="text/javascript" tal:attributes="src userjs"></script><script
tal:condition="userjsprev" type="text/javascript">/*<![CDATA[*/${userjsprev}/*]]>*/</script>
</head>
-
- <body tal:attributes="ondblclick body-ondblclick|default">
+ <body tal:attributes="ondblclick body-ondblclick|default; class nsclass|default">
<div id="globalWrapper">
<div id="column-content">
<div id="content">
<a name="top" id="contentTop"></a>
<h1 class="firstHeading" tal:content="title">Leonardo da Vinci</h1>
<div id="bodyContent">
- <div tal:condition="catlinks" id="catlinks" tal:content="structure catlinks"></div>
<h3 id="siteSub" i18n:translate="string:fromwikipedia">From Wikipedia, the free encyclopedia.</h3>
<div id="contentSub" tal:content="structure subtitle"></div>
- <!-- <esi:include src="userxy/message"/> cached per user, purged on new message-->
+ <div id="contentSub" tal:condition="undelete" tal:content="structure undelete"></div>
+ <div id="siteNotice" tal:condition="sitenotice" tal:content="structure sitenotice"></div>
<div tal:condition="newtalk" class="usermessage" tal:content="structure newtalk"></div>
- <!-- the content area is cached with the remaining inexpensive skeleton, one version for all.
- The edit links and right-click section stuff can be attached from js -->
<!-- start content -->
-
${bodytext}
-
+ <div tal:condition="catlinks" id="catlinks" tal:content="structure catlinks"></div>
<!-- end content -->
<div class="visualClear"></div>
</div>
</div>
</div>
- <!-- end of main content block -->
- <!-- start of the left (by default at least) column -->
<div id="column-one">
- <!--<esi:include src="thisurl?esiview=contentviews&watch=0&priv=sysop"/> tricky to purge because of the many different versions,
- might not be worth it for non-anons -->
<div id="p-cactions" class="portlet">
<h5>Views</h5>
<ul>
<li tal:repeat="action content_actions"
tal:attributes="id string:ca-${repeat/action/key}; class action/class|default"><a
- tal:attributes="title action/ttip|default;accesskey action/akey|default;href action/href|default"
+ tal:attributes="href action/href|default"
tal:content="action/text">Linktext</a></li>
</ul>
</div>
- <!--<esi:include src="userxy?ptools"/> cached per user, just rendered once per session -->
<div class="portlet" id="p-personal">
<h5 i18n:translate="string:personaltools">Personal Tools</h5>
<div class="pBody">
<ul>
<li tal:repeat="item personal_urls"
tal:attributes="id string:pt-${repeat/item/key};"><a href="myuserpage"
- tal:attributes="href item/href; accesskey item/akey|default; title item/ttip|default; class item/class|default"
+ tal:attributes="href item/href; class item/class|default"
tal:content="item/text">Log in</a></li>
</ul>
</div>
</div>
- <!--<esi:include src="staticLogoNaviSearch"/> same for all pages, contains quite a few messages that are worth caching -->
<div class="portlet" id="p-logo">
<a style="background-image: url(${logopath});" href="${nav_urls/mainpage/href}" i18n:attributes="title string:mainpage"></a>
</div>
@@ -75,26 +63,19 @@
<h5 i18n:translate="string:navigation">Navigation</h5>
<div class="pBody">
<ul>
- <li><a href="${nav_urls/mainpage/href}"
- i18n:attributes="accesskey string:accesskey-mainpage | default; title string:tooltip-mainpage"
+ <li id="n-mainpage"><a href="${nav_urls/mainpage/href}"
i18n:translate="string:mainpage">Main Page</a></li>
- <li tal:condition="nav_urls/portal/href"><a href="${nav_urls/portal/href}"
- i18n:attributes="accesskey string:accesskey-portal | default; title string:tooltip-portal|default"
+ <li id="n-portal" tal:condition="nav_urls/portal/href"><a href="${nav_urls/portal/href}"
i18n:translate="string:portal">Community Portal</a></li>
- <li tal:condition="nav_urls/currentevents/href"><a href="${nav_urls/currentevents/href}"
- i18n:attributes="title string:tooltip-currentevents|default"
+ <li id="n-currentevents" tal:condition="nav_urls/currentevents/href"><a href="${nav_urls/currentevents/href}"
i18n:translate="string:currentevents">Current Events</a></li>
- <li><a href="${nav_urls/recentchanges/href}"
- i18n:attributes="accesskey string:accesskey-recentchanges|default; title string:tooltip-recentchanges|default"
+ <li id="n-recentchanges"><a href="${nav_urls/recentchanges/href}"
i18n:translate="string:recentchanges">Recent Changes</a></li>
- <li><a href="${nav_urls/randompage/href}"
- i18n:attributes="accesskey string:accesskey-randompage | default; title string:tooltip-randompage"
+ <li id="n-randompage"><a href="${nav_urls/randompage/href}"
i18n:translate="string:randompage">Random Page</a></li>
- <li><a href="${nav_urls/help/href}"
- i18n:attributes="title string:tooltip-help|default"
+ <li id="n-help"><a href="${nav_urls/help/href}"
i18n:translate="string:help">Help</a></li>
- <li tal:condition="nav_urls/sitesupport/href"><a href="${nav_urls/sitesupport/href}"
- i18n:attributes="title string:tooltip-sitesupport|default"
+ <li id="n-sitesupport" tal:condition="nav_urls/sitesupport/href"><a href="${nav_urls/sitesupport/href}"
i18n:translate="string:sitesupport">Donations</a></li>
</ul>
</div>
@@ -103,50 +84,41 @@
<h5 i18n:translate="string:search">Search</h5>
<div class="pBody">
<form name="searchform" action="${searchaction}" id="searchform">
- <input id="searchInput" name="search" type="text" tabindex="30001"
+ <input id="searchInput" name="search" type="text"
i18n:attributes="accesskey string:accesskey-search | default"/>
<input type='submit' name="go" value="Go" class="searchButton"
- i18n:attributes="value string:go"/>&nbsp;<input type='submit'
+ i18n:attributes="value string:go"/>&nbsp;<input type='submit' name="fulltext"
value="Search" class="searchButton"
i18n:attributes="value string:search"/>
</form>
</div>
</div>
- <!--<esi:include src="thisurl?esiview=toolbox&loggedin=0"/> one anon, one logged-in user version per page because of the links -->
<div class="portlet" id="p-tb">
<h5 i18n:translate="string:toolbox">Toolbox</h5>
<div class="pBody">
<ul>
- <li><a href="${nav_urls/whatlinkshere/href}"
- i18n:attributes="accesskey string:accesskey-whatlinkshere|default; title string:tooltip-whatlinkshere|default"
+ <li id="t-whatlinkshere"><a href="${nav_urls/whatlinkshere/href}"
i18n:translate="string:whatlinkshere">What links here</a></li>
- <li><a href="${nav_urls/recentchangeslinked/href}"
- i18n:attributes="accesskey string:accesskey-recentchangeslinked|default;title string:tooltip-recentchangeslinked | default"
+ <li id="t-recentchangeslinked"><a href="${nav_urls/recentchangeslinked/href}"
i18n:translate="string:recentchangeslinked">Related Changes</a></li>
<li tal:condition="feeds" id="feedlinks">
<span i18n:translate="string:feedlinks">Feeds:</span>
<span tal:repeat="feed feeds"
tal:attributes="id string:feed-${repeat/feed/key};"><a
- tal:attributes="href feed/href; title feed/ttip|default"
+ tal:attributes="href feed/href;"
tal:content="feed/text">rss</a>&nbsp;</span>
</li>
- <li tal:condition="nav_urls/contributions/href"><a href="${nav_urls/contributions/href}"
- i18n:attributes="accesskey string:accesskey-contributions|default; title string:tooltip-contributions|default"
+ <li id="t-contributions" tal:condition="nav_urls/contributions/href"><a href="${nav_urls/contributions/href}"
i18n:translate="string:contributions">Contributions</a></li>
- <li tal:condition="nav_urls/emailuser/href"><a href="${nav_urls/emailuser/href}"
- i18n:attributes="accesskey string:accesskey-emailuser|default; title string:tooltip-emailuser|default"
+ <li id="t-emailuser" tal:condition="nav_urls/emailuser/href"><a href="${nav_urls/emailuser/href}"
i18n:translate="string:emailuser">Email this user</a></li>
- <li tal:condition="loggedin"><a href="${nav_urls/upload/href}"
- i18n:attributes="accesskey string:accesskey-upload|default; title string:tooltip-upload|default"
+ <li id="t-upload" tal:condition="loggedin"><a href="${nav_urls/upload/href}"
i18n:translate="string:upload">Upload a file</a></li>
- <li><a href="${nav_urls/specialpages/href}"
- i18n:attributes="accesskey string:accesskey-specialpages|default;title string:tooltip-specialpages|default"
+ <li id="t-specialpages"><a href="${nav_urls/specialpages/href}"
i18n:translate="string:specialpages">Special Pages</a></li>
</ul>
</div>
</div>
- <!-- end staticLogoNaviSearch -->
-
<div id="p-lang" class="portlet" tal:condition="language_urls">
<h5 i18n:translate="string:otherlanguages">Language</h5>
<div class="pBody">
@@ -159,7 +131,6 @@
</div>
</div>
</div><!-- end of the left (by default at least) column -->
- <!--<esi:include src="thisurl?esiview=toolbox&loggedin=0"/> static footer, same for all pages but contains a few messaged that are worth caching -->
<div class="visualClear"></div>
<div id="footer">
<div id="f-poweredbyico" tal:condition="poweredbyico">${poweredbyico}</div>
@@ -167,12 +138,13 @@
<ul id="f-list">
<li id="f-lastmod" tal:condition="lastmod">${lastmod}</li>
<li id="f-viewcount" tal:condition="viewcount">${viewcount}</li>
+ <li id="f-credits" tal:condition="credits">${credits}</li>
<li id="f-copyright" tal:condition="copyright">${copyright}</li>
<li id="f-about" tal:condition="about">${about}</li>
<li id="f-disclaimer" tal:condition="disclaimer">${disclaimer}</li>
</ul>
</div>
- <div id="colophon"></div>
</div>
+ ${reporttime}
</body>
</html>
diff --git a/texvc.phtml b/texvc.phtml
deleted file mode 100644
index 7a9127185227..000000000000
--- a/texvc.phtml
+++ /dev/null
@@ -1,154 +0,0 @@
-<?php
-include( "./LocalSettings.php" );
-include( "Setup.php" );
-header( "Content-type: text/xml; charset={$wgInputEncoding}" );
-print "<";
-print "?xml version=\"1.0\" encoding=\"utf-8\"?";
-print ">";
-?>
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"><head><title>texvc</title></head><body>
-<?php
-print "<form method=\"post\" action=\"{$wgServer}{$wgScriptPath}/texvc_cgi.phtml\">"
-?>
-<textarea name='math' rows='10' cols='80'><?
- global $math;
- $math = preg_replace ("/\\\\\\\\/", '\\', $math);
- print $math;
-?></textarea><br /><input type="submit" value="Preview" name="preview" /></form>
-<?php
-function xlinkToMathImage ( $tex, $outputhash )
-{
- global $wgMathPath;
- return "<img src=\"".$wgMathPath."/".$outputhash.".png\" alt=\"".wfEscapeHTML($tex)."\" />";
-}
-
-function texvc_cgi_renderMath( $tex )
-{
- global $wgMathDirectory, $wgTmpDirectory, $wgInputEncoding;
- $mf = wfMsg( "math_failure" );
- $munk = wfMsg( "math_unknown_error" );
-
- $image = "";
- $outhtml = "";
- $outtex = "";
-
- $fname = "texvc_cgi_renderMath";
-
- $md5 = md5($tex);
- $md5_sql = mysql_escape_string(pack("H32", $md5));
- $sql = "SELECT math_outputhash,math_html_conservativeness,math_html,math_mathml FROM math WHERE math_inputhash = '".$md5_sql."'";
-
- $res = wfQuery( $sql, 0, $fname );
- if ( wfNumRows( $res ) == 0 )
- {
- $cmd = "./math/texvc ".escapeshellarg($wgTmpDirectory)." ".
- escapeshellarg($wgMathDirectory)." ".escapeshellarg($tex)." ".escapeshellarg($wgInputEncoding);
- $contents = `$cmd`;
-
- if (strlen($contents) == 0)
- return "<h3>".$mf." (".$munk."): ".wfEscapeHTML($tex)."</h3>";
- $retval = substr ($contents, 0, 1);
-
- if (($retval == "C") || ($retval == "M") || ($retval == "L")) {
- if ($retval == "C")
- $conservativeness = 2;
- else if ($retval == "M")
- $conservativeness = 1;
- else
- $conservativeness = 0;
- $outdata = substr ($contents, 33);
-
- $i = strpos($outdata, "\000");
-
- $outhtml = substr($outdata, 0, $i);
- $mathml = substr($outdata, $i+1);
-
- $sql_html = "'".mysql_escape_string($outhtml)."'";
- $sql_mathml = "'".mysql_escape_string($mathml)."'";
- } else if (($retval == "c") || ($retval == "m") || ($retval == "l")) {
- $outhtml = substr ($contents, 33);
- if ($retval == "c")
- $conservativeness = 2;
- else if ($retval == "m")
- $conservativeness = 1;
- else
- $conservativeness = 0;
- $sql_html = "'".mysql_escape_string($outhtml)."'";
- $mathml = '';
- $sql_mathml = 'NULL';
- } else if ($retval == "X") {
- $outhtml = '';
- $mathml = substr ($contents, 33);
- $sql_html = 'NULL';
- $sql_mathml = "'".mysql_escape_string($mathml)."'";
- $conservativeness = 0;
- } else if ($retval == "+") {
- $outhtml = '';
- $mathml = '';
- $sql_html = 'NULL';
- $sql_mathml = 'NULL';
- $conservativeness = 0;
- } else {
- if ($retval == "E")
- $errmsg = wfMsg( "math_lexing_error" );
- else if ($retval == "S")
- $errmsg = wfMsg( "math_syntax_error" );
- else if ($retval == "F")
- $errmsg = wfMsg( "math_unknown_function" );
- else
- $errmsg = $munk;
- return "<h3>".$mf." (".$errmsg.substr($contents, 1)."): ".wfEscapeHTML($tex)."</h3>";
- }
-
- $outmd5 = substr ($contents, 1, 32);
- if (!preg_match("/^[a-f0-9]{32}$/", $outmd5))
- return "<h3>".$mf." (".$munk."): ".wfEscapeHTML($tex)."</h3>";
-
- $outmd5_sql = mysql_escape_string(pack("H32", $outmd5));
-
- $sql = "INSERT INTO math VALUES ('".$md5_sql."', '".$outmd5_sql."', ".$conservativeness.", ".$sql_html.", ".$sql_mathml.")";
-
- $res = wfQuery( $sql, 0, $fname );
-// we don't really care if it fails
- } else {
- $rpage = wfFetchObject ( $res );
- $outmd5 = unpack ("H32md5", $rpage->math_outputhash);
- $outmd5 = $outmd5 ['md5'];
- $outhtml = $rpage->math_html;
- $conservativeness = $rpage->math_html_conservativeness;
- $mathml = $rpage->math_mathml;
- }
- if ($mathml == '')
- $mathml = "<h3>Failed to generate MathML</h3>";
- else
- $mathml = "<h3>MathML</h3><math xmlns=\"http://www.w3.org/1998/Math/MathML\">$mathml</math>";
- $image = "<h3>Image</h3>" . xlinkToMathImage ( $tex, $outmd5 );
- $cmd = "./math/texvc_tex ".escapeshellarg($tex)." ".escapeshellarg($wgInputEncoding);
- $outtex = `$cmd`;
-
- if ( $outhtml == '' )
- $outhtml = "<h3>Failed to generate HTML</h3>";
- else
- if ( $conservativeness == 2)
- $outhtml = "<h3>HTML (conservative)</h3>" . $outhtml;
- else if ( $conservativeness == 1)
- $outhtml = "<h3>HTML (moderate)</h3>" . $outhtml;
- else
- $outhtml = "<h3>HTML (liberal)</h3>" . $outhtml;
-
- if ( $outtex == '' )
- $outtex = "<h3>Failed to generate TeX</h3>";
- else
- $outtex = "<h3>TeX</h3>" . wfEscapeHTML($outtex);
-
- return $outtex . $outhtml . $mathml . $image;
-}
-
-global $math;
-if ($math != '')
- print texvc_cgi_renderMath($math);
-?>
-</body></html>
diff --git a/update.php b/update.php
deleted file mode 100644
index 150e01b47d7f..000000000000
--- a/update.php
+++ /dev/null
@@ -1,141 +0,0 @@
-<?php
-
-die("obsolete; remove this file befor 1.3.0 release\n");
-
-# Update already-installed software
-#
-
-include( "./install-utils.inc" );
-require_once( "./maintenance/updaters.inc" );
-install_version_checks();
-
-if ( ! ( is_readable( "./LocalSettings.php" )
- && is_readable( "./AdminSettings.php" ) ) ) {
- print "A copy of your installation's LocalSettings.php\n" .
- "and AdminSettings.php must exist in this source directory.\n";
- exit();
-}
-
-$IP = "./includes";
-require_once( "./LocalSettings.php" );
-require_once( "./AdminSettings.php" );
-
-include( "$IP/Version.php" );
-
-if( $wgSitename == "MediaWiki" ) {
- die( "You must set the site name in \$wgSitename before installation.\n\n" );
-}
-
-if ( $wgUseTeX && ( ! is_executable( "./math/texvc" ) ) ) {
- print "To use math functions, you must first compile texvc by\n" .
- "running \"make\" in the math directory.\n";
- exit();
-}
-
-#
-# Copy files into installation directories
-#
-do_update_files();
-
-$wgDBuser = $wgDBadminuser;
-$wgDBpassword = $wgDBadminpassword;
-
-require_once( "{$IP}/Setup.php" );
-require_once( "./maintenance/InitialiseMessages.inc" );
-
-$wgTitle = Title::newFromText( "Update script" );
-
-#
-# Check the database for things that need to be fixed...
-#
-print "Checking database for necessary updates...\n";
-
-$wgDatabase = Database::newFromParams( $wgDBserver, $wgDBadminuser, $wgDBadminpassword, $wgDBname,
- 1, false, true, false);
-if ( !$wgDatabase->isOpen() ) {
- print "Unable to connect to database: " . $wgDatabase->lastError() . "\n";
- exit();
-}
-
-do_revision_updates();
-
-do_ipblocks_update();
-do_interwiki_update();
-do_index_update();
-do_linkscc_update();
-do_hitcounter_update();
-do_recentchanges_update();
-do_user_real_name_update();
-
-initialiseMessages();
-
-$wgDatabase->close();
-
-print "Done.\n";
-exit();
-
-#
-#
-#
-
-function do_update_files() {
- global $IP, $wgStyleSheetDirectory, $wgUploadDirectory, $wgLanguageCode, $wgDebugLogFile;
- print "Copying files... ";
-
- copyfile( ".", "LocalSettings.php", $IP );
- copyfile( ".", "index.php", $IP );
- copyfile( ".", "redirect.php", $IP );
- # compatibility with older versions, can be removed in a year or so
- # (written in Feb 2004)
- copyfile( ".", "wiki.phtml", $IP );
- copyfile( ".", "redirect.phtml", $IP );
-
- copydirectory( "./includes", $IP );
- copydirectory( "./stylesheets", $wgStyleSheetDirectory );
-
- copyfile( "./images", "wiki.png", $wgUploadDirectory );
- copyfile( "./images", "button_bold.png", $wgUploadDirectory );
- copyfile( "./images", "button_extlink.png", $wgUploadDirectory );
- copyfile( "./images", "button_headline.png", $wgUploadDirectory );
- copyfile( "./images", "button_hr.png", $wgUploadDirectory );
- copyfile( "./images", "button_image.png", $wgUploadDirectory );
- copyfile( "./images", "button_italic.png", $wgUploadDirectory );
- copyfile( "./images", "button_link.png", $wgUploadDirectory );
- copyfile( "./images", "button_math.png", $wgUploadDirectory );
- copyfile( "./images", "button_media.png", $wgUploadDirectory );
- copyfile( "./images", "button_nowiki.png", $wgUploadDirectory );
- copyfile( "./images", "button_sig.png", $wgUploadDirectory );
- copyfile( "./images", "button_template.png", $wgUploadDirectory );
- copyfile( "./images", "magnify-clip.png", $wgUploadDirectory );
- copyfile( "./images", "Arr_.png", $wgUploadDirectory );
- copyfile( "./images", "Arr_r.png", $wgUploadDirectory );
- copyfile( "./images", "Arr_d.png", $wgUploadDirectory );
- copyfile( "./images", "Arr_l.png", $wgUploadDirectory );
-
- copyfile( "./languages", "Language.php", $IP );
- copyfile( "./languages", "LanguageUtf8.php", $IP );
- copyfile( "./languages", "Language" . ucfirst( $wgLanguageCode ) . ".php", $IP );
-
- if( !empty( $wgDebugLogFile ) ) {
- $fp = fopen( $wgDebugLogFile, "w" );
- if ( false === $fp ) {
- print "Could not create log file \"{$wgDebugLogFile}\".\n";
- exit();
- }
- $d = date( "Y-m-d H:i:s" );
- fwrite( $fp, "Wiki debug log file created {$d}\n\n" );
- fclose( $fp );
- }
-
- if ( $wgUseTeX ) {
- copyfile( "./math", "texvc", "{$IP}/math", 0775 );
- copyfile( "./math", "texvc_test", "{$IP}/math", 0775 );
- copyfile( "./math", "texvc_tex", "{$IP}/math", 0775 );
- }
-
- copyfile( ".", "Version.php", $IP );
-
- print "ok\n";
-}
-
-?>