r24866 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r24865‎ | r24866 | r24867 >
Date:23:08, 16 August 2007
Author:david
Status:old
Tags:
Comment:
Merged revisions 24755-24865 via svnmerge from
svn+ssh://david@svn.wikimedia.org/svnroot/mediawiki/trunk/phase3

........
r24756 | robchurch | 2007-08-13 12:49:05 -0700 (Mon, 13 Aug 2007) | 1 line

Tweak comment to be clearer these are rights, not groups
........
r24757 | brion | 2007-08-13 12:56:45 -0700 (Mon, 13 Aug 2007) | 2 lines

don't use unspecific paths in require_once()'s ... they break with default include path, and are also unnecessary under autoloader scheme
........
r24758 | robchurch | 2007-08-13 13:03:18 -0700 (Mon, 13 Aug 2007) | 1 line

Show edit count in user preferences
........
r24763 | robchurch | 2007-08-13 17:11:07 -0700 (Mon, 13 Aug 2007) | 1 line

Omit . from "viewprevnext"
........
r24764 | robchurch | 2007-08-13 18:14:42 -0700 (Mon, 13 Aug 2007) | 1 line

Document all methods and mark them public
........
r24765 | robchurch | 2007-08-13 18:17:08 -0700 (Mon, 13 Aug 2007) | 1 line

Tweak confusing comment for User::whoIsReal()
........
r24766 | rotem | 2007-08-13 18:27:28 -0700 (Mon, 13 Aug 2007) | 1 line

Update.
........
r24768 | amidaniel | 2007-08-13 18:58:12 -0700 (Mon, 13 Aug 2007) | 2 lines

Minor whitespace cleanup ... rmvd closing ?>
........
r24770 | raymond | 2007-08-13 23:40:12 -0700 (Mon, 13 Aug 2007) | 2 lines

* (bug 10367) Update Kazakh translations
Patch by AlefZet
........
r24771 | raymond | 2007-08-13 23:47:31 -0700 (Mon, 13 Aug 2007) | 1 line

Update German
........
r24784 | raymond | 2007-08-14 03:28:50 -0700 (Tue, 14 Aug 2007) | 1 line

Removing magic word __START__ from message file, seems to be unused and a relict from ancient times.
........
r24790 | ivanlanin | 2007-08-14 08:52:54 -0700 (Tue, 14 Aug 2007) | 1 line

Indonesian (id) localisation updates.
........
r24800 | rotem | 2007-08-14 20:21:23 -0700 (Tue, 14 Aug 2007) | 1 line

Update.
........
r24802 | wegge | 2007-08-15 00:51:16 -0700 (Wed, 15 Aug 2007) | 1 line

New translations for da
........
r24803 | raymond | 2007-08-15 02:08:12 -0700 (Wed, 15 Aug 2007) | 2 lines

* (bug 10938) Update Swedish translations
Patch by Lejonel
........
r24804 | raymond | 2007-08-15 02:12:49 -0700 (Wed, 15 Aug 2007) | 2 lines

* (bug 10892) Update Chinese translations
Patch by Shinjiman
........
r24805 | raymond | 2007-08-15 02:16:47 -0700 (Wed, 15 Aug 2007) | 2 lines

* (bug 10888) typo
* Removing outdated messages
........
r24808 | tstarling | 2007-08-15 03:50:09 -0700 (Wed, 15 Aug 2007) | 16 lines

Basic integrated audio/video support, with Ogg implementation.
* JavaScript video player based loosely on Greg Maxwell's player
* Image page text snippet customisation
* Abstraction of transform parameters in the parser. Introduced Linker::makeImageLink2().
* Made canRender(), mustRender() depend on file, not just on handler. Moved width=0, height=0 checking to ImageHandler::canRender(), since audio streams have width=height=0 but should be rendered.

Also:
* Automatic upgrade for oldimage rows on image page view, allows media handler selection based on oi_*_mime
* oi_*_mime unconditionally referenced, REQUIRES SCHEMA UPGRADE
* Don't destroy file info for missing files on upgrade
* Simple, centralised extension message file handling
* Made MessageCache::loadAllMessages non-static, optimised for repeated-call case due to abuse in User.php
* Support for lightweight parser output hooks, with callback whitelist for security
* Moved Linker::formatSize() to Language, to join the new formatTimePeriod() and formatBitrate()
* Introduced MagicWordArray, regex capture trick requires that magic word IDs DO NOT CONTAIN HYPHENS.
........
r24809 | tstarling | 2007-08-15 03:50:59 -0700 (Wed, 15 Aug 2007) | 1 line

Don't show warning if the file is missing
........
r24822 | raymond | 2007-08-15 07:17:31 -0700 (Wed, 15 Aug 2007) | 2 lines

* Fix syntax error in translations of magic words in Romanian language
* Removed untranslated lines from magic words array, file rebuilt.
........
r24823 | robchurch | 2007-08-15 08:32:18 -0700 (Wed, 15 Aug 2007) | 1 line

Language::lc() is non-static
........
r24824 | raymond | 2007-08-15 08:33:55 -0700 (Wed, 15 Aug 2007) | 1 line

* (bug 10942) Update French. Patch by Bertrand GRONDIN.
........
r24825 | robchurch | 2007-08-15 08:37:28 -0700 (Wed, 15 Aug 2007) | 1 line

Mark static methods as such
........
r24827 | wegge | 2007-08-15 10:38:44 -0700 (Wed, 15 Aug 2007) | 1 line

Correct grammer for da
........
r24828 | wegge | 2007-08-15 10:45:36 -0700 (Wed, 15 Aug 2007) | 1 line

New translations for da
........
r24829 | aaron | 2007-08-15 10:54:28 -0700 (Wed, 15 Aug 2007) | 1 line

Use subtitles to make this consistent with delete/protect and the like
........
r24831 | raymond | 2007-08-15 12:04:36 -0700 (Wed, 15 Aug 2007) | 1 line

* (bug 10946) Update French. Patch by Bertrand GRONDIN.
........
r24832 | robchurch | 2007-08-15 12:15:41 -0700 (Wed, 15 Aug 2007) | 1 line

Reverting r24829; using subtitles leads to an unclear UI, and is a practice that ought to be deprecated
........
r24833 | raymond | 2007-08-15 12:29:37 -0700 (Wed, 15 Aug 2007) | 1 line

Updating language maintenance scripts
........
r24836 | robchurch | 2007-08-15 12:52:28 -0700 (Wed, 15 Aug 2007) | 1 line

(bug 10937) Distinguish overwritten files in upload log; use the `upload/overwrite` action for these
........
r24837 | robchurch | 2007-08-15 13:46:51 -0700 (Wed, 15 Aug 2007) | 1 line

Coerce mOutputHooks to an array; makes things backwards-compatible with old cached ParserOutput objects
........
r24838 | robchurch | 2007-08-15 14:44:58 -0700 (Wed, 15 Aug 2007) | 1 line

(bug 8737) Fix warnings caused by incorrect use of `/dev/null` when piping process error output under Windows
........
r24839 | raymond | 2007-08-15 15:04:17 -0700 (Wed, 15 Aug 2007) | 3 lines

* Updating language maintenance scripts
* Updating German localization
* Removing optional, untranslated messages from Danish
........
r24841 | aaron | 2007-08-15 15:13:03 -0700 (Wed, 15 Aug 2007) | 2 lines

*Add ArticleUpdateBeforeRedirect hook, to allow for the page to redirect out differently after editing (needed for flaggedrevs)
*Document ArticleUpdateBeforeRedirect hook
........
r24844 | robchurch | 2007-08-15 15:43:59 -0700 (Wed, 15 Aug 2007) | 1 line

Document hooks in release notes, too, please. Also tweak some odd whitespace usage.
........
r24845 | aaron | 2007-08-15 15:52:55 -0700 (Wed, 15 Aug 2007) | 1 line

Tweak ArticleUpdateBeforeRedirect hook a tad
........
r24847 | robchurch | 2007-08-15 15:59:38 -0700 (Wed, 15 Aug 2007) | 1 line

whitespace
........
r24848 | rotem | 2007-08-15 17:24:06 -0700 (Wed, 15 Aug 2007) | 1 line

Update and fixes.
........
r24849 | amidaniel | 2007-08-16 00:05:38 -0700 (Thu, 16 Aug 2007) | 3 lines

* Fix bug with Protected namespace message when protected namespace is NS_MAIN.
* Clean up formatPermissionsErrorMessage .. no point building a list if there's only one item, and it casues lots of grossness on complicated custom messages (removing linebreaks, screwing up formatting, etc.).
........
r24850 | amidaniel | 2007-08-16 00:23:40 -0700 (Thu, 16 Aug 2007) | 2 lines

Haha .. woops. Left some debugging in there :)
........
r24859 | robchurch | 2007-08-16 13:41:33 -0700 (Thu, 16 Aug 2007) | 3 lines

(bug 7890) Don't list redirects to special pages in Special:BrokenRedirects

There could be some issues here, since a redirect to a special page that doesn't exist *is* "broken", but I don't think we have a clear, clean means of excluding these at present...
........
r24860 | robchurch | 2007-08-16 13:52:34 -0700 (Thu, 16 Aug 2007) | 1 line

Ditch this; uses old schema, redundant to deleteUnusedAccounts.php
........
r24863 | raymond | 2007-08-16 14:36:51 -0700 (Thu, 16 Aug 2007) | 2 lines

* (bug 10367) Update Kazakh translations
Patch by AlefZet
........
Modified paths:
  • /branches/liquidthreads (modified) (history)
  • /branches/liquidthreads/RELEASE-NOTES (modified) (history)
  • /branches/liquidthreads/docs/hooks.txt (modified) (history)
  • /branches/liquidthreads/includes/Article.php (modified) (history)
  • /branches/liquidthreads/includes/AutoLoader.php (modified) (history)
  • /branches/liquidthreads/includes/DefaultSettings.php (modified) (history)
  • /branches/liquidthreads/includes/DjVuImage.php (modified) (history)
  • /branches/liquidthreads/includes/Export.php (modified) (history)
  • /branches/liquidthreads/includes/GlobalFunctions.php (modified) (history)
  • /branches/liquidthreads/includes/ImagePage.php (modified) (history)
  • /branches/liquidthreads/includes/Linker.php (modified) (history)
  • /branches/liquidthreads/includes/MagicWord.php (modified) (history)
  • /branches/liquidthreads/includes/MessageCache.php (modified) (history)
  • /branches/liquidthreads/includes/MimeMagic.php (modified) (history)
  • /branches/liquidthreads/includes/Namespace.php (modified) (history)
  • /branches/liquidthreads/includes/OutputPage.php (modified) (history)
  • /branches/liquidthreads/includes/Parser.php (modified) (history)
  • /branches/liquidthreads/includes/ParserOutput.php (modified) (history)
  • /branches/liquidthreads/includes/RecentChange.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialAllmessages.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialBrokenRedirects.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialPreferences.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialSpecialpages.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialVersion.php (modified) (history)
  • /branches/liquidthreads/includes/Title.php (modified) (history)
  • /branches/liquidthreads/includes/User.php (modified) (history)
  • /branches/liquidthreads/includes/filerepo/File.php (modified) (history)
  • /branches/liquidthreads/includes/filerepo/LocalFile.php (modified) (history)
  • /branches/liquidthreads/includes/filerepo/OldLocalFile.php (modified) (history)
  • /branches/liquidthreads/includes/media/DjVu.php (modified) (history)
  • /branches/liquidthreads/includes/media/Generic.php (modified) (history)
  • /branches/liquidthreads/includes/media/SVG.php (modified) (history)
  • /branches/liquidthreads/languages/Language.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesAr.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesBg.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesCs.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesDa.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesDe.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesEn.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesFr.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesHe.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesId.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesJa.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesKk_cn.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesKk_kz.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesKk_tr.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesNl.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesRo.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesSv.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesZh_classical.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesZh_cn.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesZh_tw.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesZh_yue.php (modified) (history)
  • /branches/liquidthreads/maintenance/delete-idle-wiki-users.pl (deleted) (history)
  • /branches/liquidthreads/maintenance/language/messageTypes.inc (modified) (history)
  • /branches/liquidthreads/maintenance/language/messages.inc (modified) (history)
  • /branches/liquidthreads/maintenance/storage/checkStorage.php (modified) (history)
  • /branches/liquidthreads/maintenance/storage/resolveStubs.php (modified) (history)

Diff [purge]

Index: branches/liquidthreads/maintenance/delete-idle-wiki-users.pl
@@ -1,138 +0,0 @@
2 -#!/usr/bin/perl
3 -#
4 -# Nuke idle wiki accounts from the wiki's user database.
5 -#
6 -# Copyright (C) 2005 Ralf Baechle (ralf@linux-mips.org)
7 -#
8 -# This program is free software; you can redistribute it and/or modify it
9 -# under the terms of the GNU General Public License as published by the
10 -# Free Software Foundation; either version 2 of the License, or (at your
11 -# option) any later version.
12 -#
13 -# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
14 -# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
15 -# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
16 -# NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
17 -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
18 -# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
19 -# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 -# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
21 -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
22 -# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 -#
24 -# You should have received a copy of the GNU General Public License along
25 -# with this program; if not, write to the Free Software Foundation, Inc.,
26 -# 675 Mass Ave, Cambridge, MA 02139, USA.
27 -#
28 -
29 -my $database = "DBI:mysql:database=wikidb;host=localhost";
30 -my $dbuser = "wikiuser";
31 -my $dbpasswd = "password";
32 -
33 -use strict;
34 -use DBI();
35 -
36 -my $verbose = 0;
37 -my $for_real = 1;
38 -
39 -sub do_db_op
40 -{
41 - my ($dbh, $sql) = @_;
42 -
43 - if ($verbose >= 3) {
44 - print $sql . ";\n"
45 - }
46 -
47 - if ($for_real == 1) {
48 - $dbh->do($sql);
49 - }
50 -}
51 -
52 -sub undo_user
53 -{
54 - my ($ref, $dbh, $sth, $killed);
55 -
56 - # Connect to the database.
57 - $dbh = DBI->connect($database, $dbuser, $dbpasswd, {RaiseError => 1});
58 -
59 - $sth = $dbh->prepare("SELECT * FROM user");
60 - $sth->execute();
61 -
62 - $ref = $sth->fetchrow_hashref();
63 -
64 - if ($sth->rows == 0) {
65 - print "There is no user in this wiki.\n";
66 - return;
67 - }
68 -
69 - while ($ref = $sth->fetchrow_hashref()) {
70 - my ($user_id, $user_name, $cph, $oph, $edits);
71 -
72 - $user_name = $ref->{user_name};
73 - $user_id = $ref->{user_id};
74 - if ($verbose >= 2) {
75 - print "Annihilating user " . $user_name .
76 - " has user_id " . $user_id . ".\n";
77 - }
78 -
79 - $cph = $dbh->prepare("SELECT * FROM cur where " .
80 - "cur_user = $user_id" .
81 - " AND " .
82 - "cur_user_text = " . $dbh->quote("$user_name"));
83 - $cph->execute();
84 -
85 - $oph = $dbh->prepare("SELECT * FROM old where " .
86 - "old_user = $user_id" .
87 - " AND " .
88 - "old_user_text = " . $dbh->quote("$user_name"));
89 - $oph->execute();
90 -
91 - $edits = $cph->rows + $oph->rows;
92 -
93 - $cph->finish();
94 - $oph->finish();
95 -
96 - if ($edits == 0) {
97 - if ($verbose >= 2) {
98 - print "Keeping user " . $user_name .
99 - ", user_id " . $user_id . ".\n";
100 - }
101 -
102 - do_db_op($dbh,
103 - "DELETE FROM user WHERE user_name = " .
104 - $dbh->quote("$user_name") .
105 - " AND " .
106 - "user_id = $user_id");
107 -
108 - $killed++;
109 - }
110 - }
111 -
112 - $sth->finish();
113 -
114 - $dbh->disconnect();
115 -
116 - if ($verbose >= 1) {
117 - print "Killed " . $killed . " users\n";
118 - }
119 -}
120 -
121 -my (@users, $user, $this, $opts);
122 -
123 -@users = ();
124 -$opts = 1;
125 -
126 -foreach $this (@ARGV) {
127 - if ($opts == 1 && $this eq '-v') {
128 - $verbose++;
129 - } elsif ($opts == 1 && $this eq '--verbose') {
130 - $verbose = 1;
131 - } elsif ($opts == 1 && $this eq '--') {
132 - $opts = 0;
133 - } else {
134 - push(@users, $this);
135 - }
136 -}
137 -
138 -undo_user();
139 -
Index: branches/liquidthreads/maintenance/storage/resolveStubs.php
@@ -6,7 +6,6 @@
77 $optionsWithArgs = array( 'm' );
88
99 require_once( dirname(__FILE__) . '/../commandLine.inc' );
10 - require_once( 'includes/ExternalStoreDB.php' );
1110
1211 resolveStubs();
1312 }
Index: branches/liquidthreads/maintenance/storage/checkStorage.php
@@ -8,9 +8,6 @@
99
1010 if ( !defined( 'MEDIAWIKI' ) ) {
1111 require_once( dirname(__FILE__) . '/../commandLine.inc' );
12 - require_once( 'ExternalStore.php' );
13 - require_once( 'ExternalStoreDB.php' );
14 - require_once( 'SpecialImport.php' );
1512
1613 $cs = new CheckStorage;
1714 $fix = isset( $options['fix'] );
Index: branches/liquidthreads/maintenance/language/messages.inc
@@ -643,6 +643,7 @@
644644 'preferences',
645645 'preferences-summary',
646646 'mypreferences',
 647+ 'prefs-edits',
647648 'prefsnologin',
648649 'prefsnologintext',
649650 'prefsreset',
@@ -813,6 +814,7 @@
814815 'uploadwarning',
815816 'savefile',
816817 'uploadedimage',
 818+ 'overwroteimage',
817819 'uploaddisabled',
818820 'uploaddisabledtext',
819821 'uploadscripted',
@@ -1690,10 +1692,11 @@
16911693 'imagemaxsize',
16921694 'thumbsize',
16931695 'widthheight',
 1696+ 'widthheightpage',
16941697 'file-info',
16951698 'file-info-size',
16961699 'file-nohires',
1697 - 'file-svg',
 1700+ 'svg-long-desc',
16981701 'show-big-image',
16991702 'show-big-image-thumb',
17001703 ),
@@ -1703,6 +1706,12 @@
17041707 'showhidebots',
17051708 'noimages',
17061709 ),
 1710+ 'video-info' => array(
 1711+ 'video-dims',
 1712+ 'seconds-abbrev',
 1713+ 'minutes-abbrev',
 1714+ 'hours-abbrev',
 1715+ ),
17071716 'badimagelist' => array(
17081717 'bad_image_list',
17091718 ),
@@ -2283,7 +2292,8 @@
22842293 'patrol-log' => 'Patrol log',
22852294 'imagedeletion' => 'Image deletion',
22862295 'browsediffs' => 'Browsing diffs',
2287 - 'newimages' => '',
 2296+ 'newimages' => 'Special:Newimages',
 2297+ 'video-info' => 'Video information, used by Language::formatTimePeriod() to format lengths in the above messages',
22882298 'badimagelist' => 'Bad image list',
22892299 'variantname-zh' => "Short names for language variants used for language conversion links.
22902300 To disable showing a particular link, set it to 'disable', e.g.
@@ -2374,5 +2384,3 @@
23752385 'enotif_body',
23762386 'allmessagesnotsupportedDB',
23772387 );
2378 -
2379 -?>
Index: branches/liquidthreads/maintenance/language/messageTypes.inc
@@ -195,6 +195,10 @@
196196 'isbn',
197197 'sp-contributions-explain',
198198 'sorbs',
 199+ 'video-dims',
 200+ 'seconds-abbrev',
 201+ 'minutes-abbrev',
 202+ 'hours-abbrev',
199203 );
200204
201205 /** EXIF messages, which may be set as optional in several checks, but are generally mandatory */
@@ -417,5 +421,3 @@
418422 'exif-gpsdirection-t',
419423 'exif-gpsdirection-m',
420424 );
421 -
422 -?>
Index: branches/liquidthreads/docs/hooks.txt
@@ -332,6 +332,11 @@
333333 &$pcache: whether to try the parser cache or not
334334 &$outputDone: whether the output for this page finished or not
335335
 336+'ArticleUpdateBeforeRedirect': After a page is updated (usually on save), before the user is redirected back to the page
 337+&$article: the article
 338+&$sectionanchor: The section anchor link (e.g. "#overview" )
 339+&$extraq: Extra query parameters which can be added via hooked functions
 340+
336341 'AuthPluginSetup': update or replace authentication plugin object ($wgAuth)
337342 Gives a chance for an extension to set it programattically to a variable class.
338343 &$auth: the $wgAuth object, probably a stub
Index: branches/liquidthreads/includes/AutoLoader.php
@@ -118,6 +118,7 @@
119119 'LogPage' => 'includes/LogPage.php',
120120 'MacBinary' => 'includes/MacBinary.php',
121121 'MagicWord' => 'includes/MagicWord.php',
 122+ 'MagicWordArray' => 'includes/MagicWord.php',
122123 'MathRenderer' => 'includes/Math.php',
123124 'MediaTransformOutput' => 'includes/MediaTransformOutput.php',
124125 'ThumbnailImage' => 'includes/MediaTransformOutput.php',
@@ -385,3 +386,4 @@
386387 }
387388
388389
 390+
Index: branches/liquidthreads/includes/SpecialAllmessages.php
@@ -25,7 +25,8 @@
2626 $navText = wfMsg( 'allmessagestext' );
2727
2828 # Make sure all extension messages are available
29 - MessageCache::loadAllMessages();
 29+
 30+ $wgMessageCache->loadAllMessages();
3031
3132 $sortedArray = array_merge( Language::getMessagesFor( 'en' ), $wgMessageCache->getExtensionMessagesFor( 'en' ) );
3233 ksort( $sortedArray );
Index: branches/liquidthreads/includes/Article.php
@@ -269,13 +269,16 @@
270270 'page_random',
271271 'page_touched',
272272 'page_latest',
273 - 'page_len' ) ;
274 - wfRunHooks( 'ArticlePageDataBefore', array( &$this , &$fields ) ) ;
275 - $row = $dbr->selectRow( 'page',
 273+ 'page_len',
 274+ );
 275+ wfRunHooks( 'ArticlePageDataBefore', array( &$this, &$fields ) );
 276+ $row = $dbr->selectRow(
 277+ 'page',
276278 $fields,
277279 $conditions,
278 - 'Article::pageData' );
279 - wfRunHooks( 'ArticlePageDataAfter', array( &$this , &$row ) ) ;
 280+ __METHOD__
 281+ );
 282+ wfRunHooks( 'ArticlePageDataAfter', array( &$this, &$row ) );
280283 return $row ;
281284 }
282285
@@ -1250,7 +1253,10 @@
12511254 }
12521255 }
12531256
1254 - $this->doRedirect( $this->isRedirect( $text ), $sectionanchor );
 1257+ $extraq = ''; // Give extensions a chance to modify URL query on update
 1258+ wfRunHooks( 'ArticleUpdateBeforeRedirect', array( $this, &$sectionanchor, &$extraq ) );
 1259+
 1260+ $this->doRedirect( $this->isRedirect( $text ), $sectionanchor, $extraq );
12551261 }
12561262 return $good;
12571263 }
@@ -1486,12 +1492,14 @@
14871493 * @param boolean $noRedir Add redirect=no
14881494 * @param string $sectionAnchor section to redirect to, including "#"
14891495 */
1490 - function doRedirect( $noRedir = false, $sectionAnchor = '' ) {
 1496+ function doRedirect( $noRedir = false, $sectionAnchor = '', $extraq = '' ) {
14911497 global $wgOut;
14921498 if ( $noRedir ) {
14931499 $query = 'redirect=no';
 1500+ if( $extraq )
 1501+ $query .= "&$query";
14941502 } else {
1495 - $query = '';
 1503+ $query = $extraq;
14961504 }
14971505 $wgOut->redirect( $this->mTitle->getFullURL( $query ) . $sectionAnchor );
14981506 }
Index: branches/liquidthreads/includes/SpecialBrokenRedirects.php
@@ -35,7 +35,8 @@
3636 FROM $redirect AS rd
3737 JOIN $page p1 ON (rd.rd_from=p1.page_id)
3838 LEFT JOIN $page AS p2 ON (rd_namespace=p2.page_namespace AND rd_title=p2.page_title )
39 - WHERE p2.page_namespace IS NULL";
 39+ WHERE rd_namespace >= 0
 40+ AND p2.page_namespace IS NULL";
4041 return $sql;
4142 }
4243
Index: branches/liquidthreads/includes/MimeMagic.php
@@ -374,7 +374,9 @@
375375 $mime = $this->detectMimeType( $file, $ext );
376376
377377 // Read a chunk of the file
 378+ wfSuppressWarnings();
378379 $f = fopen( $file, "rt" );
 380+ wfRestoreWarnings();
379381 if( !$f ) return "unknown/unknown";
380382 $head = fread( $f, 1024 );
381383 fclose( $f );
Index: branches/liquidthreads/includes/GlobalFunctions.php
@@ -2297,3 +2297,27 @@
22982298 function wfBoolToStr( $value ) {
22992299 return $value ? 'true' : 'false';
23002300 }
 2301+
 2302+/**
 2303+ * Load an extension messages file
 2304+ */
 2305+function wfLoadExtensionMessages( $extensionName ) {
 2306+ global $wgExtensionMessagesFiles, $wgMessageCache;
 2307+ if ( !empty( $wgExtensionMessagesFiles[$extensionName] ) ) {
 2308+ $wgMessageCache->loadMessagesFile( $wgExtensionMessagesFiles[$extensionName] );
 2309+ // Prevent double-loading
 2310+ $wgExtensionMessagesFiles[$extensionName] = false;
 2311+ }
 2312+}
 2313+
 2314+/**
 2315+ * Get a platform-independent path to the null file, e.g.
 2316+ * /dev/null
 2317+ *
 2318+ * @return string
 2319+ */
 2320+function wfGetNull() {
 2321+ return wfIsWindows()
 2322+ ? 'NUL'
 2323+ : '/dev/null';
 2324+}
\ No newline at end of file
Index: branches/liquidthreads/includes/SpecialPreferences.php
@@ -592,7 +592,11 @@
593593
594594 $userInformationHtml =
595595 $this->tableRow( wfMsgHtml( 'username' ), htmlspecialchars( $wgUser->getName() ) ) .
596 - $this->tableRow( wfMsgHtml( 'uid' ), htmlspecialchars( $wgUser->getID() ) );
 596+ $this->tableRow( wfMsgHtml( 'uid' ), htmlspecialchars( $wgUser->getID() ) ) .
 597+ $this->tableRow(
 598+ wfMsgHtml( 'prefs-edits' ),
 599+ $wgLang->formatNum( User::edits( $wgUser->getId() ) )
 600+ );
597601
598602 if( wfRunHooks( 'PreferencesUserInformationPanel', array( $this, &$userInformationHtml ) ) ) {
599603 $wgOut->addHtml( $userInformationHtml );
Index: branches/liquidthreads/includes/ImagePage.php
@@ -16,6 +16,7 @@
1717 class ImagePage extends Article {
1818
1919 /* private */ var $img; // Image object this page is shown for
 20+ /* private */ var $repo;
2021 var $mExtraDescription = false;
2122
2223 function __construct( $title ) {
@@ -24,6 +25,7 @@
2526 if ( !$this->img ) {
2627 $this->img = wfLocalFile( $this->mTitle );
2728 }
 29+ $this->repo = $this->img->repo;
2830 }
2931
3032 /**
@@ -46,6 +48,7 @@
4749 return Article::view();
4850
4951 if ($wgShowEXIF && $this->img->exists()) {
 52+ // FIXME: bad interface, see note on MediaHandler::formatMetadata().
5053 $formattedMetadata = $this->img->formatMetadata();
5154 $showmeta = $formattedMetadata !== false;
5255 } else {
@@ -115,6 +118,8 @@
116119 /**
117120 * Make a table with metadata to be shown in the output page.
118121 *
 122+ * FIXME: bad interface, see note on MediaHandler::formatMetadata().
 123+ *
119124 * @access private
120125 *
121126 * @param array $exif The array containing the EXIF data
@@ -188,14 +193,15 @@
189194 $mime = $this->img->getMimeType();
190195 $showLink = false;
191196 $linkAttribs = array( 'href' => $full_url );
 197+ $longDesc = $this->img->getLongDesc();
192198
193 - wfRunHooks( 'ImageOpenShowImageInlineBefore', array( &$this , &$wgOut ) ) ;
 199+ wfRunHooks( 'ImageOpenShowImageInlineBefore', array( &$this , &$wgOut ) ) ;
194200
195 - if ( $this->img->allowInlineDisplay() and $width and $height) {
 201+ if ( $this->img->allowInlineDisplay() ) {
196202 # image
197203
198204 # "Download high res version" link below the image
199 - $msgsize = wfMsgHtml('file-info-size', $width_orig, $height_orig, $sk->formatSize( $this->img->getSize() ), $mime );
 205+ #$msgsize = wfMsgHtml('file-info-size', $width_orig, $height_orig, $sk->formatSize( $this->img->getSize() ), $mime );
200206 # We'll show a thumbnail of this image
201207 if ( $width > $maxWidth || $height > $maxHeight ) {
202208 # Calculate the thumbnail size.
@@ -229,7 +235,7 @@
230236 } else {
231237 $anchorclose .=
232238 $msgsmall .
233 - '<br />' . Xml::tags( 'a', $linkAttribs, $msgbig ) . ' ' . $msgsize;
 239+ '<br />' . Xml::tags( 'a', $linkAttribs, $msgbig ) . ' ' . $longDesc;
234240 }
235241
236242 if ( $this->img->isMultipage() ) {
@@ -301,26 +307,17 @@
302308
303309
304310 if ($showLink) {
305 - // Workaround for incorrect MIME type on SVGs uploaded in previous versions
306 - if ($mime == 'image/svg') $mime = 'image/svg+xml';
307 -
308311 $filename = wfEscapeWikiText( $this->img->getName() );
309312 $info = wfMsg( 'file-info', $sk->formatSize( $this->img->getSize() ), $mime );
310 - $infores = '';
311313
312 - // Check for MIME type. Other types may have more information in the future.
313 - if (substr($mime,0,9) == 'image/svg' ) {
314 - $infores = wfMsg('file-svg', $width_orig, $height_orig ) . '<br />';
315 - }
316 -
317314 global $wgContLang;
318315 $dirmark = $wgContLang->getDirMark();
319316 if (!$this->img->isSafeFile()) {
320317 $warning = wfMsg( 'mediawarning' );
321318 $wgOut->addWikiText( <<<EOT
322 -<div class="fullMedia">$infores
 319+<div class="fullMedia">
323320 <span class="dangerousLink">[[Media:$filename|$filename]]</span>$dirmark
324 -<span class="fileInfo"> $info</span>
 321+<span class="fileInfo"> $longDesc</span>
325322 </div>
326323
327324 <div class="mediaWarning">$warning</div>
@@ -328,8 +325,8 @@
329326 );
330327 } else {
331328 $wgOut->addWikiText( <<<EOT
332 -<div class="fullMedia">$infores
333 -[[Media:$filename|$filename]]$dirmark <span class="fileInfo"> $info</span>
 329+<div class="fullMedia">
 330+[[Media:$filename|$filename]]$dirmark <span class="fileInfo"> $longDesc</span>
334331 </div>
335332 EOT
336333 );
@@ -421,18 +418,22 @@
422419
423420 if ( $line ) {
424421 $list = new ImageHistoryList( $sk, $this->img );
 422+ $file = $this->repo->newFileFromRow( $line );
 423+ $dims = $file->getDimensionsString();
425424 $s = $list->beginImageHistoryList() .
426425 $list->imageHistoryLine( true, wfTimestamp(TS_MW, $line->img_timestamp),
427426 $this->mTitle->getDBkey(), $line->img_user,
428427 $line->img_user_text, $line->img_size, $line->img_description,
429 - $line->img_width, $line->img_height
 428+ $dims
430429 );
431430
432431 while ( $line = $this->img->nextHistoryLine() ) {
433 - $s .= $list->imageHistoryLine( false, $line->img_timestamp,
434 - $line->oi_archive_name, $line->img_user,
435 - $line->img_user_text, $line->img_size, $line->img_description,
436 - $line->img_width, $line->img_height
 432+ $file = $this->repo->newFileFromRow( $line );
 433+ $dims = $file->getDimensionsString();
 434+ $s .= $list->imageHistoryLine( false, $line->oi_timestamp,
 435+ $line->oi_archive_name, $line->oi_user,
 436+ $line->oi_user_text, $line->oi_size, $line->oi_description,
 437+ $dims
437438 );
438439 }
439440 $s .= $list->endImageHistoryList();
@@ -655,7 +656,7 @@
656657 */
657658 class ImageHistoryList {
658659
659 - protected $img, $skin, $title;
 660+ protected $img, $skin, $title, $repo;
660661
661662 public function __construct( $skin, $img ) {
662663 $this->skin = $skin;
@@ -682,7 +683,7 @@
683684 return "</table>\n";
684685 }
685686
686 - public function imageHistoryLine( $iscur, $timestamp, $img, $user, $usertext, $size, $description, $width, $height ) {
 687+ public function imageHistoryLine( $iscur, $timestamp, $img, $user, $usertext, $size, $description, $dims ) {
687688 global $wgUser, $wgLang, $wgTitle, $wgContLang;
688689 $local = $this->img->isLocal();
689690 $row = '';
@@ -740,10 +741,7 @@
741742 $row .= '</td>';
742743
743744 // Image dimensions
744 - // FIXME: It would be nice to show the duration (sound files) or
745 - // width/height/duration (video files) here, but this needs some
746 - // additional media handler work
747 - $row .= '<td>' . wfMsgHtml( 'widthheight', $width, $height ) . '</td>';
 745+ $row .= '<td>' . htmlspecialchars( $dims ) . '</td>';
748746
749747 // File size
750748 $row .= '<td class="mw-imagepage-filesize">' . $this->skin->formatSize( $size ) . '</td>';
@@ -754,4 +752,4 @@
755753 return "<tr>{$row}</tr>\n";
756754 }
757755
758 -}
\ No newline at end of file
 756+}
Index: branches/liquidthreads/includes/SpecialVersion.php
@@ -148,10 +148,14 @@
149149
150150 /** Callback to sort extensions by type */
151151 function compare( $a, $b ) {
152 - if ( $a['name'] === $b['name'] )
 152+ global $wgLang;
 153+ if( $a['name'] === $b['name'] ) {
153154 return 0;
154 - else
155 - return Language::lc( $a['name'] ) > Language::lc( $b['name'] ) ? 1 : -1;
 155+ } else {
 156+ return $wgLang->lc( $a['name'] ) > $wgLang->lc( $b['name'] )
 157+ ? 1
 158+ : -1;
 159+ }
156160 }
157161
158162 function formatCredits( $name, $version = null, $author = null, $url = null, $description = null) {
Index: branches/liquidthreads/includes/media/SVG.php
@@ -14,7 +14,7 @@
1515 }
1616 }
1717
18 - function mustRender() {
 18+ function mustRender( $file ) {
1919 return true;
2020 }
2121
@@ -91,5 +91,12 @@
9292 function getThumbType( $ext, $mime ) {
9393 return array( 'png', 'image/png' );
9494 }
 95+
 96+ function getLongDesc( $file ) {
 97+ global $wgLang;
 98+ return wfMsg( 'svg-long-desc', $file->getWidth(), $file->getHeight(),
 99+ $wgLang->formatSize( $file->getSize() ) );
 100+ }
95101 }
96102
 103+
Index: branches/liquidthreads/includes/media/DjVu.php
@@ -17,6 +17,13 @@
1818 function mustRender() { return true; }
1919 function isMultiPage() { return true; }
2020
 21+ function getParamMap() {
 22+ return array(
 23+ 'img_width' => 'width',
 24+ 'img_page' => 'page',
 25+ );
 26+ }
 27+
2128 function validateParam( $name, $value ) {
2229 if ( in_array( $name, array( 'width', 'height', 'page' ) ) ) {
2330 if ( $value <= 0 ) {
Index: branches/liquidthreads/includes/media/Generic.php
@@ -36,6 +36,12 @@
3737 return self::$handlers[$class];
3838 }
3939
 40+ /**
 41+ * Get an associative array mapping magic word IDs to parameter names.
 42+ * Will be used by the parser to identify parameters.
 43+ */
 44+ abstract function getParamMap();
 45+
4046 /*
4147 * Validate a thumbnail parameter at parse time.
4248 * Return true to accept the parameter, and false to reject it.
@@ -126,20 +132,20 @@
127133 /**
128134 * True if the handled types can be transformed
129135 */
130 - function canRender() { return true; }
 136+ function canRender( $file ) { return true; }
131137 /**
132138 * True if handled types cannot be displayed directly in a browser
133139 * but can be rendered
134140 */
135 - function mustRender() { return false; }
 141+ function mustRender( $file ) { return false; }
136142 /**
137143 * True if the type has multi-page capabilities
138144 */
139 - function isMultiPage() { return false; }
 145+ function isMultiPage( $file ) { return false; }
140146 /**
141147 * Page count for a multi-page document, false if unsupported or unknown
142148 */
143 - function pageCount() { return false; }
 149+ function pageCount( $file ) { return false; }
144150 /**
145151 * False if the handler is disabled for all files
146152 */
@@ -177,10 +183,18 @@
178184 *
179185 * The function should return false if there is no metadata to display.
180186 */
 187+
 188+ /**
 189+ * FIXME: I don't really like this interface, it's not very flexible
 190+ * I think the media handler should generate HTML instead. It can do
 191+ * all the formatting according to some standard. That makes it possible
 192+ * to do things like visual indication of grouped and chained streams
 193+ * in ogg container files.
 194+ */
181195 function formatMetadata( $image, $metadata ) {
182196 return false;
183197 }
184 -
 198+
185199 protected static function addMeta( &$array, $visibility, $type, $id, $value, $param = false ) {
186200 $array[$visibility][] = array(
187201 'id' => "$type-$id",
@@ -189,6 +203,26 @@
190204 );
191205 }
192206
 207+ function getShortDesc( $file ) {
 208+ global $wgLang;
 209+ $nbytes = '(' . wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ),
 210+ $wgLang->formatNum( $file->getSize() ) ) . ')';
 211+ }
 212+
 213+ function getLongDesc( $file ) {
 214+ global $wgUser;
 215+ $sk = $wgUser->getSkin();
 216+ return wfMsg( 'file-info', $sk->formatSize( $file->getSize() ), $file->getMimeType() );
 217+ }
 218+
 219+ function getDimensionsString() {
 220+ return '';
 221+ }
 222+
 223+ /**
 224+ * Modify the parser object post-transform
 225+ */
 226+ function parserTransformHook( $parser, $file ) {}
193227 }
194228
195229 /**
@@ -197,6 +231,18 @@
198232 * @addtogroup Media
199233 */
200234 abstract class ImageHandler extends MediaHandler {
 235+ function canRender( $file ) {
 236+ if ( $file->getWidth() && $file->getHeight() ) {
 237+ return true;
 238+ } else {
 239+ return false;
 240+ }
 241+ }
 242+
 243+ function getParamMap() {
 244+ return array( 'img_width' => 'width' );
 245+ }
 246+
201247 function validateParam( $name, $value ) {
202248 if ( in_array( $name, array( 'width', 'height' ) ) ) {
203249 if ( $value <= 0 ) {
@@ -325,6 +371,31 @@
326372 wfRestoreWarnings();
327373 return $gis;
328374 }
 375+
 376+ function getShortDesc( $file ) {
 377+ global $wgLang;
 378+ $nbytes = '(' . wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ),
 379+ $wgLang->formatNum( $file->getSize() ) ) . ')';
 380+ $widthheight = wfMsgHtml( 'widthheight', $file->getWidth(), $file->getHeight() );
 381+
 382+ return "$widthheight ($nbytes)";
 383+ }
 384+
 385+ function getLongDesc( $file ) {
 386+ global $wgLang;
 387+ return wfMsgHtml('file-info-size', $file->getWidth(), $file->getHeight(),
 388+ $wgLang->formatSize( $file->getSize() ), $file->getMimeType() );
 389+ }
 390+
 391+ function getDimensionsString( $file ) {
 392+ $pages = $file->pageCount();
 393+ if ( $pages > 1 ) {
 394+ return wfMsg( 'widthheightpage', $file->getWidth(), $file->getHeight(), $pages );
 395+ } else {
 396+ return wfMsg( 'widthheight', $file->getWidth(), $file->getHeight() );
 397+ }
 398+ }
329399 }
330400
331401
 402+
Index: branches/liquidthreads/includes/MagicWord.php
@@ -386,6 +386,181 @@
387387 function isCaseSensitive() {
388388 return $this->mCaseSensitive;
389389 }
 390+
 391+ function getId() {
 392+ return $this->mId;
 393+ }
390394 }
391395
 396+/**
 397+ * Class for handling an array of magic words
 398+ */
 399+class MagicWordArray {
 400+ var $names = array();
 401+ var $hash;
 402+ var $baseRegex, $regex;
392403
 404+ function __construct( $names = array() ) {
 405+ $this->names = $names;
 406+ }
 407+
 408+ /**
 409+ * Add a magic word by name
 410+ */
 411+ public function add( $name ) {
 412+ global $wgContLang;
 413+ $this->names[] = $name;
 414+ $this->hash = $this->baseRegex = $this->regex = null;
 415+ }
 416+
 417+ /**
 418+ * Add a number of magic words by name
 419+ */
 420+ public function addArray( $names ) {
 421+ $this->names = array_merge( $this->names, array_values( $names ) );
 422+ $this->hash = $this->baseRegex = $this->regex = null;
 423+ }
 424+
 425+ /**
 426+ * Get a 2-d hashtable for this array
 427+ */
 428+ function getHash() {
 429+ if ( is_null( $this->hash ) ) {
 430+ global $wgContLang;
 431+ $this->hash = array( 0 => array(), 1 => array() );
 432+ foreach ( $this->names as $name ) {
 433+ $magic = MagicWord::get( $name );
 434+ $case = intval( $magic->isCaseSensitive() );
 435+ foreach ( $magic->getSynonyms() as $syn ) {
 436+ if ( !$case ) {
 437+ $syn = $wgContLang->lc( $syn );
 438+ }
 439+ $this->hash[$case][$syn] = $name;
 440+ }
 441+ }
 442+ }
 443+ return $this->hash;
 444+ }
 445+
 446+ /**
 447+ * Get the base regex
 448+ */
 449+ function getBaseRegex() {
 450+ if ( is_null( $this->baseRegex ) ) {
 451+ $this->baseRegex = array( 0 => '', 1 => '' );
 452+ foreach ( $this->names as $name ) {
 453+ $magic = MagicWord::get( $name );
 454+ $case = intval( $magic->isCaseSensitive() );
 455+ foreach ( $magic->getSynonyms() as $i => $syn ) {
 456+ $group = "(?P<{$i}_{$name}>" . preg_quote( $syn, '/' ) . ')';
 457+ if ( $this->baseRegex[$case] === '' ) {
 458+ $this->baseRegex[$case] = $group;
 459+ } else {
 460+ $this->baseRegex[$case] .= '|' . $group;
 461+ }
 462+ }
 463+ }
 464+ }
 465+ return $this->baseRegex;
 466+ }
 467+
 468+ /**
 469+ * Get an unanchored regex
 470+ */
 471+ function getRegex() {
 472+ if ( is_null( $this->regex ) ) {
 473+ $base = $this->getBaseRegex();
 474+ $this->regex = array( '', '' );
 475+ if ( $this->baseRegex[0] !== '' ) {
 476+ $this->regex[0] = "/{$base[0]}/iuS";
 477+ }
 478+ if ( $this->baseRegex[1] !== '' ) {
 479+ $this->regex[1] = "/{$base[1]}/S";
 480+ }
 481+ }
 482+ return $this->regex;
 483+ }
 484+
 485+ /**
 486+ * Get a regex for matching variables
 487+ */
 488+ function getVariableRegex() {
 489+ return str_replace( "\\$1", "(.*?)", $this->getRegex() );
 490+ }
 491+
 492+ /**
 493+ * Get an anchored regex for matching variables
 494+ */
 495+ function getVariableStartToEndRegex() {
 496+ $base = $this->getBaseRegex();
 497+ $newRegex = array( '', '' );
 498+ if ( $base[0] !== '' ) {
 499+ $newRegex[0] = str_replace( "\\$1", "(.*?)", "/^(?:{$base[0]})$/iuS" );
 500+ }
 501+ if ( $base[1] !== '' ) {
 502+ $newRegex[1] = str_replace( "\\$1", "(.*?)", "/^(?:{$base[1]})$/S" );
 503+ }
 504+ return $newRegex;
 505+ }
 506+
 507+ /**
 508+ * Parse a match array from preg_match
 509+ */
 510+ function parseMatch( $m ) {
 511+ reset( $m );
 512+ while ( list( $key, $value ) = each( $m ) ) {
 513+ if ( $key === 0 || $value === '' ) {
 514+ continue;
 515+ }
 516+ $parts = explode( '_', $key, 2 );
 517+ if ( count( $parts ) != 2 ) {
 518+ // This shouldn't happen
 519+ // continue;
 520+ throw new MWException( __METHOD__ . ': bad parameter name' );
 521+ }
 522+ list( $synIndex, $magicName ) = $parts;
 523+ $paramValue = next( $m );
 524+ return array( $magicName, $paramValue );
 525+ }
 526+ // This shouldn't happen either
 527+ throw new MWException( __METHOD__.': parameter not found' );
 528+ return array( false, false );
 529+ }
 530+
 531+ /**
 532+ * Match some text, with parameter capture
 533+ * Returns an array with the magic word name in the first element and the
 534+ * parameter in the second element.
 535+ * Both elements are false if there was no match.
 536+ */
 537+ public function matchVariableStartToEnd( $text ) {
 538+ global $wgContLang;
 539+ $regexes = $this->getVariableStartToEndRegex();
 540+ foreach ( $regexes as $case => $regex ) {
 541+ if ( $regex !== '' ) {
 542+ $m = false;
 543+ if ( preg_match( $regex, $text, $m ) ) {
 544+ return $this->parseMatch( $m );
 545+ }
 546+ }
 547+ }
 548+ return array( false, false );
 549+ }
 550+
 551+ /**
 552+ * Match some text, without parameter capture
 553+ * Returns the magic word name, or false if there was no capture
 554+ */
 555+ public function matchStartToEnd( $text ) {
 556+ $hash = $this->getHash();
 557+ if ( isset( $hash[1][$text] ) ) {
 558+ return $hash[1][$text];
 559+ }
 560+ global $wgContLang;
 561+ $lc = $wgContLang->lc( $text );
 562+ if ( isset( $hash[0][$lc] ) ) {
 563+ return $hash[0][$lc];
 564+ }
 565+ return false;
 566+ }
 567+}
Index: branches/liquidthreads/includes/ParserOutput.php
@@ -19,7 +19,8 @@
2020 $mExternalLinks, # External link URLs, in the key only
2121 $mNewSection, # Show a new section link?
2222 $mNoGallery, # No gallery on category page? (__NOGALLERY__)
23 - $mHeadItems; # Items to put in the <head> section
 23+ $mHeadItems, # Items to put in the <head> section
 24+ $mOutputHooks; # Hook tags as per $wgParserOutputHooks
2425
2526 /**
2627 * Overridden title for display
@@ -44,6 +45,7 @@
4546 $this->mNoGallery = false;
4647 $this->mHeadItems = array();
4748 $this->mTemplateIds = array();
 49+ $this->mOutputHooks = array();
4850 }
4951
5052 function getText() { return $this->mText; }
@@ -58,6 +60,7 @@
5961 function &getExternalLinks() { return $this->mExternalLinks; }
6062 function getNoGallery() { return $this->mNoGallery; }
6163 function getSubtitle() { return $this->mSubtitle; }
 64+ function getOutputHooks() { return (array)$this->mOutputHooks; }
6265
6366 function containsOldMagic() { return $this->mContainsOldMagic; }
6467 function setText( $text ) { return wfSetVar( $this->mText, $text ); }
@@ -71,6 +74,10 @@
7275 function addLanguageLink( $t ) { $this->mLanguageLinks[] = $t; }
7376 function addExternalLink( $url ) { $this->mExternalLinks[$url] = 1; }
7477
 78+ function addOutputHook( $hook, $data = false ) {
 79+ $this->mOutputHooks[] = array( $hook, $data );
 80+ }
 81+
7582 function setNewSection( $value ) {
7683 $this->mNewSection = (bool)$value;
7784 }
Index: branches/liquidthreads/includes/User.php
@@ -311,14 +311,14 @@
312312 }
313313
314314 /**
315 - * Get real username given an id.
316 - * @param integer $id Database user id
317 - * @return string Realname of a user
318 - * @static
 315+ * Get the real name of a user given their identifier
 316+ *
 317+ * @param int $id Database user id
 318+ * @return string Real name of a user
319319 */
320320 static function whoIsReal( $id ) {
321321 $dbr = wfGetDB( DB_SLAVE );
322 - return $dbr->selectField( 'user', 'user_real_name', array( 'user_id' => $id ), 'User::whoIsReal' );
 322+ return $dbr->selectField( 'user', 'user_real_name', array( 'user_id' => $id ), __METHOD__ );
323323 }
324324
325325 /**
@@ -2527,7 +2527,8 @@
25282528 * @static
25292529 */
25302530 static function getGroupName( $group ) {
2531 - MessageCache::loadAllMessages();
 2531+ global $wgMessageCache;
 2532+ $wgMessageCache->loadAllMessages();
25322533 $key = "group-$group";
25332534 $name = wfMsg( $key );
25342535 return $name == '' || wfEmptyMsg( $key, $name )
@@ -2541,7 +2542,8 @@
25422543 * @static
25432544 */
25442545 static function getGroupMember( $group ) {
2545 - MessageCache::loadAllMessages();
 2546+ global $wgMessageCache;
 2547+ $wgMessageCache->loadAllMessages();
25462548 $key = "group-$group-member";
25472549 $name = wfMsg( $key );
25482550 return $name == '' || wfEmptyMsg( $key, $name )
@@ -2586,7 +2588,8 @@
25872589 * @return mixed
25882590 */
25892591 static function getGroupPage( $group ) {
2590 - MessageCache::loadAllMessages();
 2592+ global $wgMessageCache;
 2593+ $wgMessageCache->loadAllMessages();
25912594 $page = wfMsgForContent( 'grouppage-' . $group );
25922595 if( !wfEmptyMsg( 'grouppage-' . $group, $page ) ) {
25932596 $title = Title::newFromText( $page );
Index: branches/liquidthreads/includes/Title.php
@@ -1096,7 +1096,6 @@
10971097 * @return array Array of arrays of the arguments to wfMsg to explain permissions problems.
10981098 */
10991099 private function getUserPermissionsErrorsInternal( $action, $user, $doExpensiveQueries = true ) {
1100 - global $wgContLang;
11011100 $fname = 'Title::userCan';
11021101 wfProfileIn( $fname );
11031102
@@ -1111,7 +1110,12 @@
11121111 }
11131112
11141113 if ( $this->isNamespaceProtected() ) {
1115 - $errors[] = (NS_MEDIAWIKI == $this->mNamespace ? array('protectedinterface') : array( 'namespaceprotected', $wgContLang->getNSText( $this->mNamespace ) ) );
 1114+ $ns = $this->getNamespace() == NS_MAIN
 1115+ ? wfMsg( 'nstab-main' )
 1116+ : $this->getNsText();
 1117+ $errors[] = (NS_MEDIAWIKI == $this->mNamespace
 1118+ ? array('protectedinterface')
 1119+ : array( 'namespaceprotected', $ns ) );
11161120 }
11171121
11181122 if( $this->mDbkeyform == '_' ) {
Index: branches/liquidthreads/includes/RecentChange.php
@@ -258,7 +258,7 @@
259259 }
260260
261261 # Makes an entry in the database corresponding to an edit
262 - /*static*/ function notifyEdit( $timestamp, &$title, $minor, &$user, $comment,
 262+ public static function notifyEdit( $timestamp, &$title, $minor, &$user, $comment,
263263 $oldId, $lastTimestamp, $bot = "default", $ip = '', $oldSize = 0, $newSize = 0,
264264 $newId = 0)
265265 {
@@ -361,7 +361,7 @@
362362 }
363363
364364 # Makes an entry in the database corresponding to a rename
365 - /*static*/ function notifyMove( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='', $overRedir = false )
 365+ public static function notifyMove( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='', $overRedir = false )
366366 {
367367 if ( !$ip ) {
368368 $ip = wfGetIP();
@@ -402,17 +402,17 @@
403403 $rc->save();
404404 }
405405
406 - /* static */ function notifyMoveToNew( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) {
 406+ public static function notifyMoveToNew( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) {
407407 RecentChange::notifyMove( $timestamp, $oldTitle, $newTitle, $user, $comment, $ip, false );
408408 }
409409
410 - /* static */ function notifyMoveOverRedirect( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) {
 410+ public static function notifyMoveOverRedirect( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) {
411411 RecentChange::notifyMove( $timestamp, $oldTitle, $newTitle, $user, $comment, $ip, true );
412412 }
413413
414414 # A log entry is different to an edit in that previous revisions are
415415 # not kept
416 - /*static*/ function notifyLog( $timestamp, &$title, &$user, $comment, $ip='',
 416+ public static function notifyLog( $timestamp, &$title, &$user, $comment, $ip='',
417417 $type, $action, $target, $logComment, $params )
418418 {
419419 if ( !$ip ) {
Index: branches/liquidthreads/includes/Namespace.php
@@ -48,54 +48,67 @@
4949 class Namespace {
5050
5151 /**
52 - * Check if the given namespace might be moved
 52+ * Can pages in the given namespace be moved?
 53+ *
 54+ * @param int $index Namespace index
5355 * @return bool
5456 */
55 - static function isMovable( $index ) {
 57+ public static function isMovable( $index ) {
5658 return !( $index < NS_MAIN || $index == NS_IMAGE || $index == NS_CATEGORY );
5759 }
5860
5961 /**
60 - * Check if the given namespace is not a talk page
 62+ * Is the given namespace is a subject (non-talk) namespace?
 63+ *
 64+ * @param int $index Namespace index
6165 * @return bool
6266 */
63 - static function isMain( $index ) {
64 - return ! Namespace::isTalk( $index );
 67+ public static function isMain( $index ) {
 68+ return !self::isTalk( $index );
6569 }
6670
6771 /**
68 - * Check if the give namespace is a talk page
 72+ * Is the given namespace a talk namespace?
 73+ *
 74+ * @param int $index Namespace index
6975 * @return bool
7076 */
71 - static function isTalk( $index ) {
72 - return ($index > NS_MAIN) // Special namespaces are negative
73 - && ($index % 2); // Talk namespaces are odd-numbered
 77+ public static function isTalk( $index ) {
 78+ return $index > NS_MAIN
 79+ && $index % 2;
7480 }
7581
7682 /**
77 - * Get the talk namespace corresponding to the given index
 83+ * Get the talk namespace index for a given namespace
 84+ *
 85+ * @param int $index Namespace index
 86+ * @return int
7887 */
79 - static function getTalk( $index ) {
80 - if ( Namespace::isTalk( $index ) ) {
81 - return $index;
82 - } else {
83 - # FIXME
84 - return $index + 1;
85 - }
 88+ public static function getTalk( $index ) {
 89+ return self::isTalk( $index )
 90+ ? $index
 91+ : $index + 1;
8692 }
8793
88 - static function getSubject( $index ) {
89 - if ( Namespace::isTalk( $index ) ) {
90 - return $index - 1;
91 - } else {
92 - return $index;
93 - }
 94+ /**
 95+ * Get the subject namespace index for a given namespace
 96+ *
 97+ * @param int $index Namespace index
 98+ * @return int
 99+ */
 100+ public static function getSubject( $index ) {
 101+ return self::isTalk( $index )
 102+ ? $index - 1
 103+ : $index;
94104 }
95105
96106 /**
97107 * Returns the canonical (English Wikipedia) name for a given index
 108+ *
 109+ * @param int $index Namespace index
 110+ * @return string
98111 */
99 - static function getCanonicalName( $index ) {
 112+ public static function getCanonicalName( $index ) {
100113 global $wgCanonicalNamespaceNames;
101114 return $wgCanonicalNamespaceNames[$index];
102115 }
@@ -103,8 +116,11 @@
104117 /**
105118 * Returns the index for a given canonical name, or NULL
106119 * The input *must* be converted to lower case first
 120+ *
 121+ * @param string $name Namespace name
 122+ * @return int
107123 */
108 - static function getCanonicalIndex( $name ) {
 124+ public static function getCanonicalIndex( $name ) {
109125 global $wgCanonicalNamespaceNames;
110126 static $xNamespaces = false;
111127 if ( $xNamespaces === false ) {
@@ -122,10 +138,12 @@
123139
124140 /**
125141 * Can this namespace ever have a talk namespace?
 142+ *
126143 * @param $index Namespace index
 144+ * @return bool
127145 */
128 - static function canTalk( $index ) {
129 - return( $index >= NS_MAIN );
 146+ public static function canTalk( $index ) {
 147+ return $index >= NS_MAIN;
130148 }
131149
132150 /**
@@ -150,6 +168,4 @@
151169 return $index >= NS_MAIN;
152170 }
153171
154 -}
155 -
156 -
 172+}
\ No newline at end of file
Index: branches/liquidthreads/includes/SpecialSpecialpages.php
@@ -8,9 +8,9 @@
99 *
1010 */
1111 function wfSpecialSpecialpages() {
12 - global $wgOut, $wgUser;
 12+ global $wgOut, $wgUser, $wgMessageCache;
1313
14 - MessageCache::loadAllMessages();
 14+ $wgMessageCache->loadAllMessages();
1515
1616 $wgOut->setRobotpolicy( 'index,nofollow' );
1717 $sk = $wgUser->getSkin();
Index: branches/liquidthreads/includes/DefaultSettings.php
@@ -1103,12 +1103,14 @@
11041104 $wgRestrictionTypes = array( 'edit', 'move' );
11051105
11061106 /**
1107 - * Set of permission keys that can be selected via action=protect.
1108 - * 'autoconfirm' allows all registerd users if $wgAutoConfirmAge is 0.
 1107+ * Rights which can be required for each protection level (via action=protect)
11091108 *
11101109 * You can add a new protection level that requires a specific
11111110 * permission by manipulating this array. The ordering of elements
11121111 * dictates the order on the protection form's lists.
 1112+ *
 1113+ * '' will be ignored (i.e. unprotected)
 1114+ * 'sysop' is quietly rewritten to 'protect' for backwards compatibility
11131115 */
11141116 $wgRestrictionLevels = array( '', 'autoconfirmed', 'sysop' );
11151117
@@ -1915,6 +1917,28 @@
19161918 $wgSkinExtensionFunctions = array();
19171919
19181920 /**
 1921+ * Extension messages files
 1922+ * Associative array mapping extension name to the filename where messages can be found.
 1923+ * The file must create a variable called $messages.
 1924+ * When the messages are needed, the extension should call wfLoadMessagesFile()
 1925+ */
 1926+$wgExtensionMessagesFiles = array();
 1927+
 1928+/**
 1929+ * Parser output hooks.
 1930+ * This is an associative array where the key is an extension-defined tag
 1931+ * (typically the extension name), and the value is a PHP callback.
 1932+ * These will be called as an OutputPageParserOutput hook, if the relevant
 1933+ * tag has been registered with the parser output object.
 1934+ *
 1935+ * Registration is done with $pout->addOutputHook( $tag, $data ).
 1936+ *
 1937+ * The callback has the form:
 1938+ * function outputHook( $outputPage, $parserOutput, $data ) { ... }
 1939+ */
 1940+$wgParserOutputHooks = array();
 1941+
 1942+/**
19191943 * List of valid skin names.
19201944 * The key should be the name in all lower case, the value should be a display name.
19211945 * The default skins will be added later, by Skin::getSkinNames(). Use
@@ -2269,6 +2293,7 @@
22702294 'delete/restore' => 'undeletedarticle',
22712295 'delete/revision' => 'revdelete-logentry',
22722296 'upload/upload' => 'uploadedimage',
 2297+ 'upload/overwrite' => 'overwroteimage',
22732298 'upload/revert' => 'uploadedimage',
22742299 'move/move' => '1movedto2',
22752300 'move/move_redir' => '1movedto2_redir',
Index: branches/liquidthreads/includes/MessageCache.php
@@ -23,6 +23,7 @@
2424 var $mExtensionMessages = array();
2525 var $mInitialised = false;
2626 var $mDeferred = true;
 27+ var $mAllMessagesLoaded;
2728
2829 function __construct( &$memCached, $useDB, $expiry, $memcPrefix) {
2930 wfProfileIn( __METHOD__ );
@@ -669,12 +670,33 @@
670671 }
671672 }
672673
673 - static function loadAllMessages() {
 674+ function loadAllMessages() {
 675+ global $wgExtensionMessagesFiles;
 676+ if ( $this->mAllMessagesLoaded ) {
 677+ return;
 678+ }
 679+ $this->mAllMessagesLoaded = true;
 680+
674681 # Some extensions will load their messages when you load their class file
675682 wfLoadAllExtensions();
676683 # Others will respond to this hook
677684 wfRunHooks( 'LoadAllMessages' );
 685+ # Some register their messages in $wgExtensionMessagesFiles
 686+ foreach ( $wgExtensionMessagesFiles as $name => $file ) {
 687+ if ( $file ) {
 688+ $this->loadMessagesFile( $file );
 689+ $wgExtensionMessagesFiles[$name] = false;
 690+ }
 691+ }
678692 # Still others will respond to neither, they are EVIL. We sometimes need to know!
679693 }
 694+
 695+ /**
 696+ * Load messages from a given file
 697+ */
 698+ function loadMessagesFile( $filename ) {
 699+ require( $filename );
 700+ $this->addMessagesByLang( $messages );
 701+ }
680702 }
681703
Index: branches/liquidthreads/includes/Linker.php
@@ -433,42 +433,96 @@
434434 return $s;
435435 }
436436
437 - /** Creates the HTML source for images
438 - * @param object $nt
439 - * @param string $label label text
440 - * @param string $alt alt text
441 - * @param string $align horizontal alignment: none, left, center, right)
442 - * @param array $params some format keywords: width, height, page, upright, upright_factor, frameless, border
443 - * @param boolean $framed shows image in original size in a frame
444 - * @param boolean $thumb shows image as thumbnail in a frame
445 - * @param string $manual_thumb image name for the manual thumbnail
446 - * @param string $valign vertical alignment: baseline, sub, super, top, text-top, middle, bottom, text-bottom
447 - * @return string
448 - */
449 - function makeImageLinkObj( $nt, $label, $alt, $align = '', $params = array(), $framed = false,
450 - $thumb = false, $manual_thumb = '', $valign = '', $time = false )
 437+ /**
 438+ * Creates the HTML source for images
 439+ * @deprecated use makeImageLink2
 440+ *
 441+ * @param object $title
 442+ * @param string $label label text
 443+ * @param string $alt alt text
 444+ * @param string $align horizontal alignment: none, left, center, right)
 445+ * @param array $handlerParams Parameters to be passed to the media handler
 446+ * @param boolean $framed shows image in original size in a frame
 447+ * @param boolean $thumb shows image as thumbnail in a frame
 448+ * @param string $manualthumb image name for the manual thumbnail
 449+ * @param string $valign vertical alignment: baseline, sub, super, top, text-top, middle, bottom, text-bottom
 450+ * @return string
 451+ */
 452+ function makeImageLinkObj( $title, $label, $alt, $align = '', $handlerParams = array(), $framed = false,
 453+ $thumb = false, $manualthumb = '', $valign = '', $time = false )
451454 {
 455+ $frameParams = array( 'alt' => $alt, 'caption' => $label );
 456+ if ( $align ) {
 457+ $frameParams['align'] = $align;
 458+ }
 459+ if ( $framed ) {
 460+ $frameParams['framed'] = true;
 461+ }
 462+ if ( $thumb ) {
 463+ $frameParams['thumb'] = true;
 464+ }
 465+ if ( $manualthumb ) {
 466+ $frameParams['manualthumb'] = $manualthumb;
 467+ }
 468+ if ( $valign ) {
 469+ $frameParams['valign'] = $valign;
 470+ }
 471+ $file = wfFindFile( $title, $time );
 472+ return $this->makeImageLink2( $title, $file, $label, $alt, $frameParams, $handlerParams );
 473+ }
 474+
 475+ /**
 476+ * Make an image link
 477+ * @param Title $title Title object
 478+ * @param File $file File object, or false if it doesn't exist
 479+ *
 480+ * @param array $frameParams Associative array of parameters external to the media handler.
 481+ * Boolean parameters are indicated by presence or absence, the value is arbitrary and
 482+ * will often be false.
 483+ * thumbnail If present, downscale and frame
 484+ * manualthumb Image name to use as a thumbnail, instead of automatic scaling
 485+ * framed Shows image in original size in a frame
 486+ * frameless Downscale but don't frame
 487+ * upright If present, tweak default sizes for portrait orientation
 488+ * upright_factor Fudge factor for "upright" tweak (default 0.75)
 489+ * border If present, show a border around the image
 490+ * align Horizontal alignment (left, right, center, none)
 491+ * valign Vertical alignment (baseline, sub, super, top, text-top, middle,
 492+ * bottom, text-bottom)
 493+ * alt Alternate text for image (i.e. alt attribute). Plain text.
 494+ * caption HTML for image caption.
 495+ *
 496+ * @param array $handlerParams Associative array of media handler parameters, to be passed
 497+ * to transform(). Typical keys are "width" and "page".
 498+ */
 499+ function makeImageLink2( Title $title, $file, $frameParams = array(), $handlerParams = array() ) {
452500 global $wgContLang, $wgUser, $wgThumbLimits, $wgThumbUpright;
 501+ if ( $file && !$file->allowInlineDisplay() ) {
 502+ wfDebug( __METHOD__.': '.$title->getPrefixedDBkey()." does not allow inline display\n" );
 503+ return $this->makeKnownLinkObj( $title );
 504+ }
453505
454 - $img = wfFindFile( $nt, $time );
 506+ // Shortcuts
 507+ $fp =& $frameParams;
 508+ $hp =& $handlerParams;
455509
456 - if ( $img && !$img->allowInlineDisplay() ) {
457 - wfDebug( __METHOD__.': '.$nt->getPrefixedDBkey()." does not allow inline display\n" );
458 - return $this->makeKnownLinkObj( $nt );
459 - }
 510+ // Clean up parameters
 511+ $page = isset( $hp['page'] ) ? $hp['page'] : false;
 512+ if ( !isset( $fp['align'] ) ) $fp['align'] = '';
 513+ if ( !isset( $fp['alt'] ) ) $fp['alt'] = '';
460514
461 - $error = $prefix = $postfix = '';
462 - $page = isset( $params['page'] ) ? $params['page'] : false;
 515+ $prefix = $postfix = '';
463516
464 - if ( 'center' == $align )
 517+ if ( 'center' == $fp['align'] )
465518 {
466519 $prefix = '<div class="center">';
467520 $postfix = '</div>';
468 - $align = 'none';
 521+ $fp['align'] = 'none';
469522 }
470 - if ( $img && !isset( $params['width'] ) ) {
471 - $params['width'] = $img->getWidth( $page );
472 - if( $thumb || $framed || isset( $params['frameless'] ) ) {
 523+ if ( $file && !isset( $hp['width'] ) ) {
 524+ $hp['width'] = $file->getWidth( $page );
 525+
 526+ if( isset( $fp['thumbnail'] ) || isset( $fp['framed'] ) || isset( $fp['frameless'] ) || !$hp['width'] ) {
473527 $wopt = $wgUser->getOption( 'thumbsize' );
474528
475529 if( !isset( $wgThumbLimits[$wopt] ) ) {
@@ -476,16 +530,21 @@
477531 }
478532
479533 // Reduce width for upright images when parameter 'upright' is used
480 - if ( !isset( $params['upright_factor'] ) || $params['upright_factor'] == 0 ) {
481 - $params['upright_factor'] = $wgThumbUpright;
 534+ if ( !isset( $fp['upright_factor'] ) || $fp['upright_factor'] == 0 ) {
 535+ $fp['upright_factor'] = $wgThumbUpright;
482536 }
483537 // Use width which is smaller: real image width or user preference width
484538 // For caching health: If width scaled down due to upright parameter, round to full __0 pixel to avoid the creation of a lot of odd thumbs
485 - $params['width'] = min( $params['width'], isset( $params['upright'] ) ? round( $wgThumbLimits[$wopt] * $params['upright_factor'], -1 ) : $wgThumbLimits[$wopt] );
 539+ $prefWidth = isset( $fp['upright'] ) ?
 540+ round( $wgThumbLimits[$wopt] * $fp['upright_factor'], -1 ) :
 541+ $wgThumbLimits[$wopt];
 542+ if ( $hp['width'] <= 0 || $prefWidth < $hp['width'] ) {
 543+ $hp['width'] = $prefWidth;
 544+ }
486545 }
487546 }
488547
489 - if ( $thumb || $framed ) {
 548+ if ( isset( $fp['thumbnail'] ) || isset( $fp['framed'] ) ) {
490549
491550 # Create a thumbnail. Alignment depends on language
492551 # writing direction, # right aligned for left-to-right-
@@ -494,15 +553,15 @@
495554 #
496555 # If thumbnail width has not been provided, it is set
497556 # to the default user option as specified in Language*.php
498 - if ( $align == '' ) {
499 - $align = $wgContLang->isRTL() ? 'left' : 'right';
 557+ if ( $fp['align'] == '' ) {
 558+ $fp['align'] = $wgContLang->isRTL() ? 'left' : 'right';
500559 }
501 - return $prefix.$this->makeThumbLinkObj( $nt, $img, $label, $alt, $align, $params, $framed, $manual_thumb ).$postfix;
 560+ return $prefix.$this->makeThumbLink2( $title, $file, $fp, $hp ).$postfix;
502561 }
503562
504 - if ( $img && $params['width'] ) {
 563+ if ( $file && $hp['width'] ) {
505564 # Create a resized image, without the additional thumbnail features
506 - $thumb = $img->transform( $params );
 565+ $thumb = $file->transform( $hp );
507566 } else {
508567 $thumb = false;
509568 }
@@ -512,58 +571,76 @@
513572 } else {
514573 $query = '';
515574 }
516 - $u = $nt->getLocalURL( $query );
 575+ $url = $title->getLocalURL( $query );
517576 $imgAttribs = array(
518 - 'alt' => $alt,
519 - 'longdesc' => $u
 577+ 'alt' => $fp['alt'],
 578+ 'longdesc' => $url
520579 );
521580
522 - if ( $valign ) {
523 - $imgAttribs['style'] = "vertical-align: $valign";
 581+ if ( isset( $fp['valign'] ) ) {
 582+ $imgAttribs['style'] = "vertical-align: {$fp['valign']}";
524583 }
525 - if ( isset( $params['border'] ) ) {
 584+ if ( isset( $fp['border'] ) ) {
526585 $imgAttribs['class'] = "thumbborder";
527586 }
528587 $linkAttribs = array(
529 - 'href' => $u,
 588+ 'href' => $url,
530589 'class' => 'image',
531 - 'title' => $alt
 590+ 'title' => $fp['alt']
532591 );
533592
534593 if ( !$thumb ) {
535 - $s = $this->makeBrokenImageLinkObj( $nt );
 594+ $s = $this->makeBrokenImageLinkObj( $title );
536595 } else {
537596 $s = $thumb->toHtml( $imgAttribs, $linkAttribs );
538597 }
539 - if ( '' != $align ) {
540 - $s = "<div class=\"float{$align}\"><span>{$s}</span></div>";
 598+ if ( '' != $fp['align'] ) {
 599+ $s = "<div class=\"float{$fp['align']}\"><span>{$s}</span></div>";
541600 }
542601 return str_replace("\n", ' ',$prefix.$s.$postfix);
543602 }
544603
545604 /**
546605 * Make HTML for a thumbnail including image, border and caption
547 - * @param Title $nt
548 - * @param Image $img Image object or false if it doesn't exist
 606+ * @param Title $title
 607+ * @param File $file File object or false if it doesn't exist
549608 */
550 - function makeThumbLinkObj( Title $nt, $img, $label = '', $alt, $align = 'right', $params = array(), $framed=false , $manual_thumb = "" ) {
 609+ function makeThumbLinkObj( Title $title, $file, $label = '', $alt, $align = 'right', $params = array(), $framed=false , $manualthumb = "" ) {
 610+ $frameParams = array(
 611+ 'alt' => $alt,
 612+ 'caption' => $label,
 613+ 'align' => $align
 614+ );
 615+ if ( $framed ) $frameParams['framed'] = true;
 616+ if ( $manualthumb ) $frameParams['manualthumb'] = $manualthumb;
 617+ return $this->makeThumbLink2( $title, $file, $frameParams, $handlerParams );
 618+ }
 619+
 620+ function makeThumbLink2( Title $title, $file, $frameParams = array(), $handlerParams = array() ) {
551621 global $wgStylePath, $wgContLang;
552 - $exists = $img && $img->exists();
 622+ $exists = $file && $file->exists();
553623
554 - $page = isset( $params['page'] ) ? $params['page'] : false;
 624+ # Shortcuts
 625+ $fp =& $frameParams;
 626+ $hp =& $handlerParams;
555627
556 - if ( empty( $params['width'] ) ) {
 628+ $page = isset( $hp['page'] ) ? $hp['page'] : false;
 629+ if ( !isset( $fp['align'] ) ) $fp['align'] = 'right';
 630+ if ( !isset( $fp['alt'] ) ) $fp['alt'] = '';
 631+ if ( !isset( $fp['caption'] ) ) $fp['caption'] = '';
 632+
 633+ if ( empty( $hp['width'] ) ) {
557634 // Reduce width for upright images when parameter 'upright' is used
558 - $params['width'] = isset( $params['upright'] ) ? 130 : 180;
 635+ $hp['width'] = isset( $fp['upright'] ) ? 130 : 180;
559636 }
560637 $thumb = false;
561638
562639 if ( !$exists ) {
563 - $outerWidth = $params['width'] + 2;
 640+ $outerWidth = $hp['width'] + 2;
564641 } else {
565 - if ( $manual_thumb != '' ) {
 642+ if ( isset( $fp['manualthumb'] ) ) {
566643 # Use manually specified thumbnail
567 - $manual_title = Title::makeTitleSafe( NS_IMAGE, $manual_thumb );
 644+ $manual_title = Title::makeTitleSafe( NS_IMAGE, $fp['manualthumb'] );
568645 if( $manual_title ) {
569646 $manual_img = wfFindFile( $manual_title );
570647 if ( $manual_img ) {
@@ -572,63 +649,63 @@
573650 $exists = false;
574651 }
575652 }
576 - } elseif ( $framed ) {
 653+ } elseif ( isset( $fp['framed'] ) ) {
577654 // Use image dimensions, don't scale
578 - $thumb = $img->getUnscaledThumb( $page );
 655+ $thumb = $file->getUnscaledThumb( $page );
579656 } else {
580657 # Do not present an image bigger than the source, for bitmap-style images
581658 # This is a hack to maintain compatibility with arbitrary pre-1.10 behaviour
582 - $srcWidth = $img->getWidth( $page );
583 - if ( $srcWidth && !$img->mustRender() && $params['width'] > $srcWidth ) {
584 - $params['width'] = $srcWidth;
 659+ $srcWidth = $file->getWidth( $page );
 660+ if ( $srcWidth && !$file->mustRender() && $hp['width'] > $srcWidth ) {
 661+ $hp['width'] = $srcWidth;
585662 }
586 - $thumb = $img->transform( $params );
 663+ $thumb = $file->transform( $hp );
587664 }
588665
589666 if ( $thumb ) {
590667 $outerWidth = $thumb->getWidth() + 2;
591668 } else {
592 - $outerWidth = $params['width'] + 2;
 669+ $outerWidth = $hp['width'] + 2;
593670 }
594671 }
595672
596673 $query = $page ? 'page=' . urlencode( $page ) : '';
597 - $u = $nt->getLocalURL( $query );
 674+ $url = $title->getLocalURL( $query );
598675
599676 $more = htmlspecialchars( wfMsg( 'thumbnail-more' ) );
600677 $magnifyalign = $wgContLang->isRTL() ? 'left' : 'right';
601678 $textalign = $wgContLang->isRTL() ? ' style="text-align:right"' : '';
602679
603 - $s = "<div class=\"thumb t{$align}\"><div class=\"thumbinner\" style=\"width:{$outerWidth}px;\">";
 680+ $s = "<div class=\"thumb t{$fp['align']}\"><div class=\"thumbinner\" style=\"width:{$outerWidth}px;\">";
604681 if( !$exists ) {
605 - $s .= $this->makeBrokenImageLinkObj( $nt );
 682+ $s .= $this->makeBrokenImageLinkObj( $title );
606683 $zoomicon = '';
607684 } elseif ( !$thumb ) {
608685 $s .= htmlspecialchars( wfMsg( 'thumbnail_error', '' ) );
609686 $zoomicon = '';
610687 } else {
611688 $imgAttribs = array(
612 - 'alt' => $alt,
613 - 'longdesc' => $u,
 689+ 'alt' => $fp['alt'],
 690+ 'longdesc' => $url,
614691 'class' => 'thumbimage'
615692 );
616693 $linkAttribs = array(
617 - 'href' => $u,
 694+ 'href' => $url,
618695 'class' => 'internal',
619 - 'title' => $alt
 696+ 'title' => $fp['alt']
620697 );
621 -
 698+
622699 $s .= $thumb->toHtml( $imgAttribs, $linkAttribs );
623 - if ( $framed ) {
 700+ if ( isset( $fp['framed'] ) ) {
624701 $zoomicon="";
625702 } else {
626703 $zoomicon = '<div class="magnify" style="float:'.$magnifyalign.'">'.
627 - '<a href="'.$u.'" class="internal" title="'.$more.'">'.
 704+ '<a href="'.$url.'" class="internal" title="'.$more.'">'.
628705 '<img src="'.$wgStylePath.'/common/images/magnify-clip.png" ' .
629706 'width="15" height="11" alt="" /></a></div>';
630707 }
631708 }
632 - $s .= ' <div class="thumbcaption"'.$textalign.'>'.$zoomicon.$label."</div></div></div>";
 709+ $s .= ' <div class="thumbcaption"'.$textalign.'>'.$zoomicon.$fp['caption']."</div></div></div>";
633710 return str_replace("\n", ' ', $s);
634711 }
635712
@@ -1269,28 +1346,7 @@
12701347 */
12711348 public function formatSize( $size ) {
12721349 global $wgLang;
1273 - // For small sizes no decimal places necessary
1274 - $round = 0;
1275 - if( $size > 1024 ) {
1276 - $size = $size / 1024;
1277 - if( $size > 1024 ) {
1278 - $size = $size / 1024;
1279 - // For MB and bigger two decimal places are smarter
1280 - $round = 2;
1281 - if( $size > 1024 ) {
1282 - $size = $size / 1024;
1283 - $msg = 'size-gigabytes';
1284 - } else {
1285 - $msg = 'size-megabytes';
1286 - }
1287 - } else {
1288 - $msg = 'size-kilobytes';
1289 - }
1290 - } else {
1291 - $msg = 'size-bytes';
1292 - }
1293 - $size = round( $size, $round );
1294 - return wfMsgHtml( $msg, $wgLang->formatNum( $size ) );
 1350+ return htmlspecialchars( $wgLang->formatSize( $size ) );
12951351 }
12961352
12971353 /**
@@ -1346,3 +1402,4 @@
13471403
13481404
13491405
 1406+
Index: branches/liquidthreads/includes/Parser.php
@@ -97,7 +97,8 @@
9898 * @private
9999 */
100100 # Persistent:
101 - var $mTagHooks, $mTransparentTagHooks, $mFunctionHooks, $mFunctionSynonyms, $mVariables;
 101+ var $mTagHooks, $mTransparentTagHooks, $mFunctionHooks, $mFunctionSynonyms, $mVariables,
 102+ $mImageParams, $mImageParamsMagicArray;
102103
103104 # Cleared with clearState():
104105 var $mOutput, $mAutonumber, $mDTopen, $mStripState;
@@ -350,13 +351,6 @@
351352 }
352353 $text = $this->mStripState->unstripGeneral( $text );
353354
354 -
355 -
356 -
357 -
358 -
359 -
360 -
361355 $text = Sanitizer::normalizeCharReferences( $text );
362356
363357 if (($wgUseTidy and $this->mOptions->mTidy) or $wgAlwaysUseTidy) {
@@ -759,7 +753,7 @@
760754 $descriptorspec = array(
761755 0 => array('pipe', 'r'),
762756 1 => array('pipe', 'w'),
763 - 2 => array('file', '/dev/null', 'a') // FIXME: this line in UNIX-specific, it generates a warning on Windows, because /dev/null is not a valid Windows file.
 757+ 2 => array('file', wfGetNull(), 'a')
764758 );
765759 $pipes = array();
766760 $process = proc_open("$wgTidyBin -config $wgTidyConf $wgTidyOpts$opts", $descriptorspec, $pipes);
@@ -4480,10 +4474,50 @@
44814475 return $ig->toHTML();
44824476 }
44834477
 4478+ function getImageParams( $handler ) {
 4479+ if ( $handler ) {
 4480+ $handlerClass = get_class( $handler );
 4481+ } else {
 4482+ $handlerClass = '';
 4483+ }
 4484+ if ( !isset( $this->mImageParams[$handlerClass] ) ) {
 4485+ // Initialise static lists
 4486+ static $internalParamNames = array(
 4487+ 'horizAlign' => array( 'left', 'right', 'center', 'none' ),
 4488+ 'vertAlign' => array( 'baseline', 'sub', 'super', 'top', 'text-top', 'middle',
 4489+ 'bottom', 'text-bottom' ),
 4490+ 'frame' => array( 'thumbnail', 'manualthumb', 'framed', 'frameless',
 4491+ 'upright', 'border' ),
 4492+ );
 4493+ static $internalParamMap;
 4494+ if ( !$internalParamMap ) {
 4495+ $internalParamMap = array();
 4496+ foreach ( $internalParamNames as $type => $names ) {
 4497+ foreach ( $names as $name ) {
 4498+ $magicName = str_replace( '-', '_', "img_$name" );
 4499+ $internalParamMap[$magicName] = array( $type, $name );
 4500+ }
 4501+ }
 4502+ }
 4503+
 4504+ // Add handler params
 4505+ $paramMap = $internalParamMap;
 4506+ if ( $handler ) {
 4507+ $handlerParamMap = $handler->getParamMap();
 4508+ foreach ( $handlerParamMap as $magic => $paramName ) {
 4509+ $paramMap[$magic] = array( 'handler', $paramName );
 4510+ }
 4511+ }
 4512+ $this->mImageParams[$handlerClass] = $paramMap;
 4513+ $this->mImageParamsMagicArray[$handlerClass] = new MagicWordArray( array_keys( $paramMap ) );
 4514+ }
 4515+ return array( $this->mImageParams[$handlerClass], $this->mImageParamsMagicArray[$handlerClass] );
 4516+ }
 4517+
44844518 /**
44854519 * Parse image options text and use it to make an image
44864520 */
4487 - function makeImage( $nt, $options ) {
 4521+ function makeImage( $title, $options ) {
44884522 # @TODO: let the MediaHandler specify its transform parameters
44894523 #
44904524 # Check if the options text is of the form "options|alt text"
@@ -4507,77 +4541,55 @@
45084542 # * middle
45094543 # * bottom
45104544 # * text-bottom
 4545+
 4546+ $parts = array_map( 'trim', explode( '|', $options) );
 4547+ $sk = $this->mOptions->getSkin();
45114548
 4549+ # Give extensions a chance to select the file revision for us
 4550+ $skip = $time = false;
 4551+ wfRunHooks( 'BeforeParserMakeImageLinkObj', array( &$this, &$title, &$skip, &$time ) );
45124552
4513 - $part = array_map( 'trim', explode( '|', $options) );
 4553+ if ( $skip ) {
 4554+ return $sk->makeLinkObj( $title );
 4555+ }
45144556
4515 - $mwAlign = array();
4516 - $alignments = array( 'left', 'right', 'center', 'none', 'baseline', 'sub', 'super', 'top', 'text-top', 'middle', 'bottom', 'text-bottom' );
4517 - foreach ( $alignments as $alignment ) {
4518 - $mwAlign[$alignment] =& MagicWord::get( 'img_'.$alignment );
 4557+ # Get parameter map
 4558+ $file = wfFindFile( $title, $time );
 4559+ $handler = $file ? $file->getHandler() : false;
 4560+
 4561+ list( $paramMap, $mwArray ) = $this->getImageParams( $handler );
 4562+
 4563+ # Process the input parameters
 4564+ $caption = '';
 4565+ $params = array( 'frame' => array(), 'handler' => array(),
 4566+ 'horizAlign' => array(), 'vertAlign' => array() );
 4567+ foreach( $parts as $part ) {
 4568+ list( $magicName, $value ) = $mwArray->matchVariableStartToEnd( $part );
 4569+ if ( isset( $paramMap[$magicName] ) ) {
 4570+ list( $type, $paramName ) = $paramMap[$magicName];
 4571+ $params[$type][$paramName] = $value;
 4572+ } else {
 4573+ $caption = $part;
 4574+ }
45194575 }
4520 - $mwThumb =& MagicWord::get( 'img_thumbnail' );
4521 - $mwManualThumb =& MagicWord::get( 'img_manualthumb' );
4522 - $mwWidth =& MagicWord::get( 'img_width' );
4523 - $mwFramed =& MagicWord::get( 'img_framed' );
4524 - $mwFrameless =& MagicWord::get( 'img_frameless' );
4525 - $mwUpright =& MagicWord::get( 'img_upright' );
4526 - $mwBorder =& MagicWord::get( 'img_border' );
4527 - $mwPage =& MagicWord::get( 'img_page' );
4528 - $caption = '';
45294576
4530 - $params = array();
4531 - $framed = $thumb = false;
4532 - $manual_thumb = '' ;
4533 - $align = $valign = '';
4534 - $sk = $this->mOptions->getSkin();
 4577+ # Process alignment parameters
 4578+ if ( $params['horizAlign'] ) {
 4579+ $params['frame']['align'] = key( $params['horizAlign'] );
 4580+ }
 4581+ if ( $params['vertAlign'] ) {
 4582+ $params['frame']['valign'] = key( $params['vertAlign'] );
 4583+ }
45354584
4536 - foreach( $part as $val ) {
4537 - if ( !is_null( $mwThumb->matchVariableStartToEnd($val) ) ) {
4538 - $thumb=true;
4539 - } elseif ( !is_null( $match = $mwUpright->matchVariableStartToEnd( $val ) ) ) {
4540 - $params['upright'] = true;
4541 - $params['upright_factor'] = floatval( $match );
4542 - } elseif ( !is_null( $match = $mwFrameless->matchVariableStartToEnd( $val ) ) ) {
4543 - $params['frameless'] = true;
4544 - } elseif ( !is_null( $mwBorder->matchVariableStartToEnd( $val ) ) ) {
4545 - $params['border'] = true;
4546 - } elseif ( ! is_null( $match = $mwManualThumb->matchVariableStartToEnd($val) ) ) {
4547 - # use manually specified thumbnail
4548 - $thumb=true;
4549 - $manual_thumb = $match;
4550 - } else {
4551 - foreach( $alignments as $alignment ) {
4552 - if ( ! is_null( $mwAlign[$alignment]->matchVariableStartToEnd($val) ) ) {
4553 - switch ( $alignment ) {
4554 - case 'left': case 'right': case 'center': case 'none':
4555 - $align = $alignment; break;
4556 - default:
4557 - $valign = $alignment;
4558 - }
4559 - continue 2;
4560 - }
 4585+ # Validate the handler parameters
 4586+ if ( $handler ) {
 4587+ foreach ( $params['handler'] as $name => $value ) {
 4588+ if ( !$handler->validateParam( $name, $value ) ) {
 4589+ unset( $params['handler'][$name] );
45614590 }
4562 - if ( ! is_null( $match = $mwPage->matchVariableStartToEnd($val) ) ) {
4563 - # Select a page in a multipage document
4564 - $params['page'] = $match;
4565 - } elseif ( !isset( $params['width'] ) && ! is_null( $match = $mwWidth->matchVariableStartToEnd($val) ) ) {
4566 - wfDebug( "img_width match: $match\n" );
4567 - # $match is the image width in pixels
4568 - $m = array();
4569 - if ( preg_match( '/^([0-9]*)x([0-9]*)$/', $match, $m ) ) {
4570 - $params['width'] = intval( $m[1] );
4571 - $params['height'] = intval( $m[2] );
4572 - } else {
4573 - $params['width'] = intval($match);
4574 - }
4575 - } elseif ( ! is_null( $mwFramed->matchVariableStartToEnd($val) ) ) {
4576 - $framed=true;
4577 - } else {
4578 - $caption = $val;
4579 - }
45804591 }
45814592 }
 4593+
45824594 # Strip bad stuff out of the alt text
45834595 $alt = $this->replaceLinkHoldersText( $caption );
45844596
@@ -4587,18 +4599,18 @@
45884600 $alt = $this->mStripState->unstripBoth( $alt );
45894601 $alt = Sanitizer::stripAllTags( $alt );
45904602
4591 - # Give extensions a chance to select the file revision for us
4592 - $skip = $time = false;
4593 - wfRunHooks( 'BeforeParserMakeImageLinkObj', array( &$this, &$nt, &$skip, &$time ) );
 4603+ $params['frame']['alt'] = $alt;
 4604+ $params['frame']['caption'] = $caption;
45944605
45954606 # Linker does the rest
4596 - if( $skip ) {
4597 - $link = $sk->makeLinkObj( $nt );
4598 - } else {
4599 - $link = $sk->makeImageLinkObj( $nt, $caption, $alt, $align, $params, $framed, $thumb, $manual_thumb, $valign, $time );
 4607+ $ret = $sk->makeImageLink2( $title, $file, $params['frame'], $params['handler'] );
 4608+
 4609+ # Give the handler a chance to modify the parser object
 4610+ if ( $handler ) {
 4611+ $handler->parserTransformHook( $this, $file );
46004612 }
4601 -
4602 - return $link;
 4613+
 4614+ return $ret;
46034615 }
46044616
46054617 /**
@@ -4841,7 +4853,6 @@
48424854 : $this->mTitle->getPrefixedText();
48434855 }
48444856 }
4845 -
48464857 }
48474858
48484859 /**
@@ -4894,5 +4905,3 @@
48954906 return $text;
48964907 }
48974908 }
4898 -
4899 -?>
Index: branches/liquidthreads/includes/filerepo/File.php
@@ -210,6 +210,18 @@
211211 public function getHeight( $page = 1 ) { return false; }
212212
213213 /**
 214+ * Get the duration of a media file in seconds
 215+ */
 216+ public function getLength() {
 217+ $handler = $this->getHandler();
 218+ if ( $handler ) {
 219+ return $handler->getLength( $this );
 220+ } else {
 221+ return 0;
 222+ }
 223+ }
 224+
 225+ /**
214226 * Get handler-specific metadata
215227 * Overridden by LocalFile, UnregisteredLocalFile
216228 * STUB
@@ -239,7 +251,9 @@
240252 function getMediaType() { return MEDIATYPE_UNKNOWN; }
241253
242254 /**
243 - * Checks if the file can be presented to the browser as a bitmap.
 255+ * Checks if the output of transform() for this file is likely
 256+ * to be valid. If this is false, various user elements will
 257+ * display a placeholder instead.
244258 *
245259 * Currently, this checks if the file is an image format
246260 * that can be converted to a format
@@ -248,7 +262,7 @@
249263 */
250264 function canRender() {
251265 if ( !isset( $this->canRender ) ) {
252 - $this->canRender = $this->getHandler() && $this->handler->canRender();
 266+ $this->canRender = $this->getHandler() && $this->handler->canRender( $this );
253267 }
254268 return $this->canRender;
255269 }
@@ -271,16 +285,11 @@
272286 * @return bool
273287 */
274288 function mustRender() {
275 - return $this->getHandler() && $this->handler->mustRender();
 289+ return $this->getHandler() && $this->handler->mustRender( $this );
276290 }
277291
278292 /**
279 - * Determines if this media file may be shown inline on a page.
280 - *
281 - * This is currently synonymous to canRender(), but this could be
282 - * extended to also allow inline display of other media,
283 - * like flash animations or videos. If you do so, please keep in mind that
284 - * that could be a security risk.
 293+ * Alias for canRender()
285294 */
286295 function allowInlineDisplay() {
287296 return $this->canRender();
@@ -470,7 +479,7 @@
471480
472481 wfProfileIn( __METHOD__ );
473482 do {
474 - if ( !$this->getHandler() || !$this->handler->canRender() ) {
 483+ if ( !$this->canRender() ) {
475484 // not a bitmap or renderable image, don't try.
476485 $thumb = $this->iconThumb();
477486 break;
@@ -906,7 +915,7 @@
907916 * @return Bool
908917 */
909918 function isMultipage() {
910 - return $this->getHandler() && $this->handler->isMultiPage();
 919+ return $this->getHandler() && $this->handler->isMultiPage( $this );
911920 }
912921
913922 /**
@@ -915,7 +924,7 @@
916925 */
917926 function pageCount() {
918927 if ( !isset( $this->pageCount ) ) {
919 - if ( $this->getHandler() && $this->handler->isMultiPage() ) {
 928+ if ( $this->getHandler() && $this->handler->isMultiPage( $this ) ) {
920929 $this->pageCount = $this->handler->pageCount( $this );
921930 } else {
922931 $this->pageCount = false;
@@ -1014,7 +1023,9 @@
10151024 static function getPropsFromPath( $path, $ext = true ) {
10161025 wfProfileIn( __METHOD__ );
10171026 wfDebug( __METHOD__.": Getting file info for $path\n" );
1018 - $info = array( 'fileExists' => file_exists( $path ) );
 1027+ $info = array(
 1028+ 'fileExists' => file_exists( $path ) && !is_dir( $path )
 1029+ );
10191030 $gis = false;
10201031 if ( $info['fileExists'] ) {
10211032 $magic = MimeMagic::singleton();
@@ -1030,8 +1041,8 @@
10311042 $handler = MediaHandler::getHandler( $info['mime'] );
10321043 if ( $handler ) {
10331044 $tempImage = (object)array();
1034 - $gis = $handler->getImageSize( $tempImage, $path );
10351045 $info['metadata'] = $handler->getMetadata( $tempImage, $path );
 1046+ $gis = $handler->getImageSize( $tempImage, $path, $info['metadata'] );
10361047 } else {
10371048 $gis = false;
10381049 $info['metadata'] = '';
@@ -1074,13 +1085,42 @@
10751086 * Returns false on failure
10761087 */
10771088 static function sha1Base36( $path ) {
 1089+ wfSuppressWarnings();
10781090 $hash = sha1_file( $path );
 1091+ wfRestoreWarnings();
10791092 if ( $hash === false ) {
10801093 return false;
10811094 } else {
10821095 return wfBaseConvert( $hash, 16, 36, 31 );
10831096 }
10841097 }
 1098+
 1099+ function getLongDesc() {
 1100+ $handler = $this->getHandler();
 1101+ if ( $handler ) {
 1102+ return $handler->getLongDesc( $this );
 1103+ } else {
 1104+ return MediaHandler::getLongDesc( $this );
 1105+ }
 1106+ }
 1107+
 1108+ function getShortDesc() {
 1109+ $handler = $this->getHandler();
 1110+ if ( $handler ) {
 1111+ return $handler->getShortDesc( $this );
 1112+ } else {
 1113+ return MediaHandler::getShortDesc( $this );
 1114+ }
 1115+ }
 1116+
 1117+ function getDimensionsString() {
 1118+ $handler = $this->getHandler();
 1119+ if ( $handler ) {
 1120+ return $handler->getDimensionsString( $this );
 1121+ } else {
 1122+ return '';
 1123+ }
 1124+ }
10851125 }
10861126 /**
10871127 * Aliases for backwards compatibility with 1.6
@@ -1090,3 +1130,4 @@
10911131 define( 'MW_IMG_DELETED_USER', File::DELETED_USER );
10921132 define( 'MW_IMG_DELETED_RESTRICTED', File::DELETED_RESTRICTED );
10931133
 1134+
Index: branches/liquidthreads/includes/filerepo/OldLocalFile.php
@@ -118,7 +118,10 @@
119119 }
120120
121121 function saveToCache() {
122 - // Cache the entire history of the image (up to MAX_CACHE_ROWS).
 122+ // If a timestamp was specified, cache the entire history of the image (up to MAX_CACHE_ROWS).
 123+ if ( is_null( $this->requestedTime ) ) {
 124+ return;
 125+ }
123126 // This is expensive, so we only do it if $wgMemc is real
124127 global $wgMemc;
125128 if ( $wgMemc instanceof FakeMemcachedClient ) {
@@ -155,6 +158,7 @@
156159
157160 function loadFromDB() {
158161 wfProfileIn( __METHOD__ );
 162+ $this->dataLoaded = true;
159163 $dbr = $this->repo->getSlaveDB();
160164 $conds = array( 'oi_name' => $this->getName() );
161165 if ( is_null( $this->requestedTime ) ) {
@@ -169,7 +173,6 @@
170174 } else {
171175 $this->fileExists = false;
172176 }
173 - $this->dataLoaded = true;
174177 wfProfileOut( __METHOD__ );
175178 }
176179
@@ -178,8 +181,8 @@
179182 $fields[] = $prefix . 'archive_name';
180183
181184 // XXX: Temporary hack before schema update
182 - $fields = array_diff( $fields, array(
183 - 'oi_media_type', 'oi_major_mime', 'oi_minor_mime', 'oi_metadata' ) );
 185+ //$fields = array_diff( $fields, array(
 186+ // 'oi_media_type', 'oi_major_mime', 'oi_minor_mime', 'oi_metadata' ) );
184187 return $fields;
185188 }
186189
@@ -193,11 +196,18 @@
194197
195198 function upgradeRow() {
196199 wfProfileIn( __METHOD__ );
197 -
198200 $this->loadFromFile();
 201+
 202+ # Don't destroy file info of missing files
 203+ if ( !$this->fileExists ) {
 204+ wfDebug( __METHOD__.": file does not exist, aborting\n" );
 205+ wfProfileOut( __METHOD__ );
 206+ return;
 207+ }
199208
200209 $dbw = $this->repo->getMasterDB();
201210 list( $major, $minor ) = self::splitMime( $this->mime );
 211+ $mime = $this->mime;
202212
203213 wfDebug(__METHOD__.': upgrading '.$this->archive_name." to the current schema\n");
204214 $dbw->update( 'oldimage',
@@ -205,10 +215,10 @@
206216 'oi_width' => $this->width,
207217 'oi_height' => $this->height,
208218 'oi_bits' => $this->bits,
209 - #'oi_media_type' => $this->media_type,
210 - #'oi_major_mime' => $major,
211 - #'oi_minor_mime' => $minor,
212 - #'oi_metadata' => $this->metadata,
 219+ 'oi_media_type' => $this->media_type,
 220+ 'oi_major_mime' => $major,
 221+ 'oi_minor_mime' => $minor,
 222+ 'oi_metadata' => $this->metadata,
213223 'oi_sha1' => $this->sha1,
214224 ), array(
215225 'oi_name' => $this->getName(),
Index: branches/liquidthreads/includes/filerepo/LocalFile.php
@@ -39,7 +39,7 @@
4040 $media_type, # MEDIATYPE_xxx (bitmap, drawing, audio...)
4141 $mime, # MIME type, determined by MimeMagic::guessMimeType
4242 $major_mime, # Major mime type
43 - $minor_mine, # Minor mime type
 43+ $minor_mime, # Minor mime type
4444 $size, # Size in bytes (loadFromXxx)
4545 $metadata, # Handler-specific metadata
4646 $timestamp, # Upload timestamp
@@ -231,6 +231,7 @@
232232 * Load file metadata from a DB result row
233233 */
234234 function loadFromRow( $row, $prefix = 'img_' ) {
 235+ $this->dataLoaded = true;
235236 $array = $this->decodeRow( $row, $prefix );
236237 foreach ( $array as $name => $value ) {
237238 $this->$name = $value;
@@ -287,6 +288,11 @@
288289
289290 $this->loadFromFile();
290291
 292+ # Don't destroy file info of missing files
 293+ if ( !$this->fileExists ) {
 294+ wfDebug( __METHOD__.": file does not exist, aborting\n" );
 295+ return;
 296+ }
291297 $dbw = $this->repo->getMasterDB();
292298 list( $major, $minor ) = self::splitMime( $this->mime );
293299
@@ -318,6 +324,12 @@
319325 $this->$field = $info[$field];
320326 }
321327 }
 328+ // Fix up mime fields
 329+ if ( isset( $info['major_mime'] ) ) {
 330+ $this->mime = "{$info['major_mime']}/{$info['minor_mime']}";
 331+ } elseif ( isset( $info['mime'] ) ) {
 332+ list( $this->major_mime, $this->minor_mime ) = self::splitMime( $this->mime );
 333+ }
322334 }
323335
324336 /** splitMime inherited */
@@ -560,14 +572,9 @@
561573 $dbr = $this->repo->getSlaveDB();
562574
563575 if ( $this->historyLine == 0 ) {// called for the first time, return line from cur
564 - $this->historyRes = $dbr->select( 'image',
 576+ $this->historyRes = $dbr->select( 'image',
565577 array(
566 - 'img_size',
567 - 'img_description',
568 - 'img_user','img_user_text',
569 - 'img_timestamp',
570 - 'img_width',
571 - 'img_height',
 578+ '*',
572579 "'' AS oi_archive_name"
573580 ),
574581 array( 'img_name' => $this->title->getDBkey() ),
@@ -580,17 +587,7 @@
581588 }
582589 } else if ( $this->historyLine == 1 ) {
583590 $dbr->freeResult($this->historyRes);
584 - $this->historyRes = $dbr->select( 'oldimage',
585 - array(
586 - 'oi_size AS img_size',
587 - 'oi_description AS img_description',
588 - 'oi_user AS img_user',
589 - 'oi_user_text AS img_user_text',
590 - 'oi_timestamp AS img_timestamp',
591 - 'oi_width as img_width',
592 - 'oi_height as img_height',
593 - 'oi_archive_name'
594 - ),
 591+ $this->historyRes = $dbr->select( 'oldimage', '*',
595592 array( 'oi_name' => $this->title->getDBkey() ),
596593 __METHOD__,
597594 array( 'ORDER BY' => 'oi_timestamp DESC' )
@@ -697,6 +694,7 @@
698695 return false;
699696 }
700697
 698+ $reupload = false;
701699 if ( $timestamp === false ) {
702700 $timestamp = $dbw->timestamp();
703701 }
@@ -726,6 +724,8 @@
727725 );
728726
729727 if( $dbw->affectedRows() == 0 ) {
 728+ $reupload = true;
 729+
730730 # Collision, this is an update of a file
731731 # Insert previous contents into oldimage
732732 $dbw->insertSelect( 'oldimage', 'image',
@@ -780,7 +780,8 @@
781781
782782 # Add the log entry
783783 $log = new LogPage( 'upload' );
784 - $log->addEntry( 'upload', $descTitle, $comment );
 784+ $action = $reupload ? 'overwrite' : 'upload';
 785+ $log->addEntry( $action, $descTitle, $comment );
785786
786787 if( $descTitle->exists() ) {
787788 # Create a null revision
Index: branches/liquidthreads/includes/Export.php
@@ -558,7 +558,7 @@
559559 $command = "7za a -bd -si " . wfEscapeShellArg( $file );
560560 // Suppress annoying useless crap from p7zip
561561 // Unfortunately this could suppress real error messages too
562 - $command .= " >/dev/null 2>&1";
 562+ $command .= ' ' . wfGetNull() . ' 2>&1';
563563 parent::DumpPipeOutput( $command );
564564 }
565565 }
Index: branches/liquidthreads/includes/OutputPage.php
@@ -112,6 +112,10 @@
113113 $this->mHeadItems[$name] = $value;
114114 }
115115
 116+ function hasHeadItem( $name ) {
 117+ return isset( $this->mHeadItems[$name] );
 118+ }
 119+
116120 function setETag($tag) { $this->mETag = $tag; }
117121 function setArticleBodyOnly($only) { $this->mArticleBodyOnly = $only; }
118122 function getArticleBodyOnly($only) { return $this->mArticleBodyOnly; }
@@ -380,7 +384,16 @@
381385 # Display title
382386 if( ( $dt = $parserOutput->getDisplayTitle() ) !== false )
383387 $this->setPageTitle( $dt );
384 -
 388+
 389+ # Hooks registered in the object
 390+ global $wgParserOutputHooks;
 391+ foreach ( $parserOutput->getOutputHooks() as $hookInfo ) {
 392+ list( $hookName, $data ) = $hookInfo;
 393+ if ( isset( $wgParserOutputHooks[$hookName] ) ) {
 394+ call_user_func( $wgParserOutputHooks[$hookName], $this, $parserOutput, $data );
 395+ }
 396+ }
 397+
385398 wfRunHooks( 'OutputPageParserOutput', array( &$this, $parserOutput ) );
386399 }
387400
@@ -956,22 +969,27 @@
957970 }
958971
959972 /**
960 - * @param array $errors An array returned by Title::getUserPermissionsErrors
 973+ * @param array $errors An array of arrays returned by Title::getUserPermissionsErrors
961974 * @return string The error-messages, formatted into a list.
962975 */
963976 public function formatPermissionsErrorMessage( $errors ) {
964977 $text = '';
965978
966 - $text .= wfMsgExt( 'permissionserrorstext', array( 'parse' ), count( $errors ) ) . "\n";
967 - $text .= '<ul class="permissions-errors">' . "\n";
 979+ if (sizeof( $errors ) > 1) {
968980
969 - foreach( $errors as $error )
970 - {
971 - $text .= '<li>';
972 - $text .= call_user_func_array( 'wfMsg', $error );
973 - $text .= "</li>\n";
 981+ $text .= wfMsgExt( 'permissionserrorstext', array( 'parse' ), count( $errors ) ) . "\n";
 982+ $text .= '<ul class="permissions-errors">' . "\n";
 983+
 984+ foreach( $errors as $error )
 985+ {
 986+ $text .= '<li>';
 987+ $text .= call_user_func_array( 'wfMsg', $error );
 988+ $text .= "</li>\n";
 989+ }
 990+ $text .= '</ul>';
 991+ } else {
 992+ $text .= call_user_func_array( 'wfMsg', $errors[0]);
974993 }
975 - $text .= '</ul>';
976994
977995 return $text;
978996 }
@@ -1312,4 +1330,4 @@
13131331 }
13141332 }
13151333
1316 -}
\ No newline at end of file
 1334+}
Index: branches/liquidthreads/includes/DjVuImage.php
@@ -104,7 +104,9 @@
105105 }
106106
107107 function getInfo() {
 108+ wfSuppressWarnings();
108109 $file = fopen( $this->mFilename, 'rb' );
 110+ wfRestoreWarnings();
109111 if( $file === false ) {
110112 wfDebug( __METHOD__ . ": missing or failed file read\n" );
111113 return false;
Index: branches/liquidthreads/RELEASE-NOTES
@@ -172,6 +172,11 @@
173173 * (bug 10832) Include user information when viewing a deleted revision
174174 * (bug 10872) Fall back to sane defaults when generating protection selector
175175 labels for custom restriction levels
 176+* Show edit count in user preferences
 177+* Improved support for audio/video extensions
 178+* (bug 10937) Distinguish overwritten files in upload log
 179+* Introduce 'ArticleUpdateBeforeRedirect' hook; see docs/hooks.txt for more
 180+ information
176181
177182 == Bugfixes since 1.10 ==
178183
@@ -378,6 +383,10 @@
379384 free.fr shared hosting. No longer using it in Language::getLanguageNames()
380385 * (bug 10763) Fix multi-insert logic for PostgreSQL
381386 * Fix invalid XHTML when viewing a deleted revision
 387+* Fix syntax error in translations of magic words in Romanian language
 388+* (bug 8737) Fix warnings caused by incorrect use of `/dev/null` when piping
 389+ process error output under Windows
 390+* (bug 7890) Don't list redirects to special pages in Special:BrokenRedirects
382391
383392 == API changes since 1.10 ==
384393
Index: branches/liquidthreads/languages/messages/MessagesJa.php
@@ -263,23 +263,24 @@
264264 'versionrequired' => 'MediaWiki バージョン $1 が必要',
265265 'versionrequiredtext' => 'このページの利用には MediaWiki Version $1 が必要です。[[Special:Version|{{int:version}}]]を確認してください。',
266266
267 -'ok' => 'OK',
268 -'pagetitle' => '$1 - {{SITENAME}}',
269 -'retrievedfrom' => ' "$1" より作成',
270 -'youhavenewmessages' => 'あなた宛の$1が届いています。($2)',
271 -'newmessageslink' => '新しいメッセージ',
272 -'newmessagesdifflink' => '差分',
273 -'editsection' => '編集',
274 -'editold' => '編集',
275 -'editsectionhint' => '節を編集: $1',
276 -'toc' => '目次',
277 -'showtoc' => '表示',
278 -'hidetoc' => '非表示',
279 -'thisisdeleted' => '$1 を参照または復帰する。',
280 -'viewdeleted' => '$1の削除記録と履歴を確認する',
281 -'restorelink' => '削除された $1 編集',
282 -'feedlinks' => 'フィード:',
283 -'feed-invalid' => 'フィード形式の指定が間違っています。',
 267+'ok' => 'OK',
 268+'pagetitle' => '$1 - {{SITENAME}}',
 269+'retrievedfrom' => ' "$1" より作成',
 270+'youhavenewmessages' => 'あなた宛の$1が届いています。($2)',
 271+'newmessageslink' => '新しいメッセージ',
 272+'newmessagesdifflink' => '差分',
 273+'youhavenewmessagesmulti' => '$1 に新しいメッセージが届いています',
 274+'editsection' => '編集',
 275+'editold' => '編集',
 276+'editsectionhint' => '節を編集: $1',
 277+'toc' => '目次',
 278+'showtoc' => '表示',
 279+'hidetoc' => '非表示',
 280+'thisisdeleted' => '$1 を参照または復帰する。',
 281+'viewdeleted' => '$1の削除記録と履歴を確認する',
 282+'restorelink' => '削除された $1 編集',
 283+'feedlinks' => 'フィード:',
 284+'feed-invalid' => 'フィード形式の指定が間違っています。',
284285
285286 # Short words for each namespace, by default used in the 'article' tab in monobook
286287 'nstab-main' => '本文',
@@ -357,7 +358,7 @@
358359 'editinginterface' => "'''警告:''' あなたはソフトウェアのインターフェースに使用されているテキストを編集しています。このページの変更はすべての利用者に影響します。",
359360 'sqlhidden' => '(SQLクエリー非表示)',
360361 'cascadeprotected' => 'このページはカスケード保護されている以下のページから呼び出されているため、編集できないように保護されています。',
361 -'namespaceprotected' => "'''$1''' 名前空間に属するページを編集する権限がありません。",
 362+'namespaceprotected' => "'''$1''' 名前空間に属するページを編集する権限がありません。",
362363
363364 # Login and logout pages
364365 'logouttitle' => 'ログアウト',
@@ -373,7 +374,6 @@
374375 'yourdomainname' => 'あなたのドメイン',
375376 'externaldberror' => '外部の認証データベースでエラーが発生たか、または外部アカウント情報の更新が許可されていません。',
376377 'loginproblem' => '<b>ログインでエラーが発生しました。</b><br />再度実行してください。',
377 -'alreadyloggedin' => '<strong>利用者 $1 は、すでにログイン済みです。</strong><br />',
378378 'login' => 'ログイン',
379379 'loginprompt' => '{{SITENAME}}にログインするにはクッキーを有効にする必要があります。',
380380 'userlogin' => 'ログインまたはアカウント作成',
@@ -411,6 +411,7 @@
412412 'nouserspecified' => '利用者名を指定してください。',
413413 'wrongpassword' => 'パスワードが間違っています。再度入力してください。',
414414 'wrongpasswordempty' => 'パスワードを空にすることはできません。再度入力してください。',
 415+'passwordtooshort' => 'パスワードが短すぎます。$1文字以上の文字列にしてください。',
415416 'mailmypassword' => '新しいパスワードをメールで送る',
416417 'passwordremindertitle' => '{{SITENAME}} パスワード再送通知',
417418 'passwordremindertext' => 'どなたか($1 のIPアドレスの使用者)が{{SITENAME}} ($4) のログイン用パスワードの再発行を依頼しました。
@@ -431,6 +432,7 @@
432433 'invalidemailaddress' => '入力されたメールアドレスが正しい形式に従っていないため、受け付けられません。正しい形式で入力し直すか、メールアドレス欄を空にしてください。',
433434 'accountcreated' => 'アカウントを作成しました',
434435 'accountcreatedtext' => '利用者 $1 が作成されました。',
 436+'loginlanguagelabel' => '言語: $1',
435437
436438 # Password reset dialog
437439 'resetpass' => 'パスワードの再設定',
@@ -541,7 +543,6 @@
542544 'token_suffix_mismatch' => '<strong>あなたの使用しているクライアントが、エディット・トークン内の句読点を正しく処理していないことを確認しました。
543545 このページの文章が破損するのを防ぐため、あなたの編集は反映されません。
544546 問題のある匿名プロクシサービスを利用していると、この問題が起こることがあります。</strong>',
545 -'importing' => '$1 をインポート中',
546547 'editing' => '$1 を編集中',
547548 'editinguser' => '$1 を編集中',
548549 'editingsection' => '$1 を編集中(節単位編集)',
@@ -758,18 +759,18 @@
759760 'files' => '画像等',
760761
761762 # User rights
762 -'userrights-lookup-user' => '利用者の所属グループの管理',
763 -'userrights-user-editname' => '利用者名:',
764 -'editusergroup' => '編集',
765 -'userrights-editusergroup' => '利用者の所属グループ',
766 -'saveusergroups' => '利用者の所属グループを保存',
767 -'userrights-groupsmember' => '所属グループ:',
768 -'userrights-groupsavailable' => '有効なグループ:',
769 -'userrights-groupshelp' => 'この利用者から削除したい、またはこの利用者に追加したいグループを選択してください。選択されていないグループは変更されません。選択を解除するには [CTRL]+[左クリック] です。',
770 -'userrights-reason' => '変更理由:',
771 -'userrights-available-none' => '利用者の所属グループを変更することは出来ません。',
772 -'userrights-available-add' => '利用者をグループ $1に追加できます。',
773 -'userrights-available-remove'=> '利用者をグループ $1から削除できます。',
 763+'userrights-lookup-user' => '利用者の所属グループの管理',
 764+'userrights-user-editname' => '利用者名:',
 765+'editusergroup' => '編集',
 766+'userrights-editusergroup' => '利用者の所属グループ',
 767+'saveusergroups' => '利用者の所属グループを保存',
 768+'userrights-groupsmember' => '所属グループ:',
 769+'userrights-groupsavailable' => '有効なグループ:',
 770+'userrights-groupshelp' => 'この利用者から削除したい、またはこの利用者に追加したいグループを選択してください。選択されていないグループは変更されません。選択を解除するには [CTRL]+[左クリック] です。',
 771+'userrights-reason' => '変更理由:',
 772+'userrights-available-none' => '利用者の所属グループを変更することは出来ません。',
 773+'userrights-available-add' => '利用者をグループ $1に追加できます。',
 774+'userrights-available-remove' => '利用者をグループ $1から削除できます。',
774775
775776 # Groups
776777 'group' => 'グループ:',
@@ -913,7 +914,6 @@
914915 # Image list
915916 'imagelist' => '画像リスト',
916917 'imagelisttext' => '$1 枚の画像を $2 に表示しています',
917 -'imagelistforuser' => '$1 によってアップロードされた画像のみ表示しています。',
918918 'getimagelist' => '画像リストを取得',
919919 'ilsubmit' => '検索',
920920 'showlast' => '$2に $1 枚の画像を表示',
@@ -923,13 +923,6 @@
924924 'imgdelete' => '削除',
925925 'imgdesc' => '詳細',
926926 'imgfile' => 'ファイル',
927 -'imglegend' => '凡例: (詳細)= 画像の詳細を表示/編集',
928 -'imghistory' => '画像の履歴',
929 -'revertimg' => '差戻',
930 -'deleteimg' => '削除',
931 -'deleteimgcompletely' => '全版削除',
932 -'imghistlegend' => '凡例:(最新)= 最新版の画像、(削除)= この版の画像を削除、(差戻)= この版の画像に差し戻す<br />
933 -<b>アップロードされた画像を見るには日付をクリックします。</b>',
934927 'imagelinks' => 'リンク',
935928 'linkstoimage' => 'この画像にリンクしているページの一覧:',
936929 'nolinkstoimage' => 'この画像にリンクしているページはありません。',
@@ -1094,7 +1087,7 @@
10951088
10961089 # E-mail user
10971090 'mailnologin' => '送信先のアドレスがありません。',
1098 -'mailnologintext' => '他の利用者宛てにメールを送信するためには、[[Special:Userlogin|ログイン]]し、あなたのメールアドレスを[[Special:Preference|オプション]]に設定する必要があります。',
 1091+'mailnologintext' => '他の利用者宛てにメールを送信するためには、[[Special:Userlogin|ログイン]]し、あなたのメールアドレスを[[Special:Preferences|オプション]]に設定する必要があります。',
10991092 'emailuser' => 'この利用者にメールを送信',
11001093 'emailpage' => 'メール送信ページ',
11011094 'emailpagetext' => 'メールを送る先の利用者が有効なメールアドレスを{{int:preferences}}で登録していれば、下のフォームを通じてメールを送ることができます。
@@ -1119,7 +1112,6 @@
11201113 'watchlistfor' => "'''$1'''",
11211114 'nowatchlist' => 'あなたのウォッチリストは空です。',
11221115 'watchlistanontext' => 'ウォッチリストを確認あるいは編集するには $1 してください。',
1123 -'watchlistcount' => "'''あなたのウォッチリストにはノートも含めて $1 ページ登録されています。'''",
11241116 'watchnologin' => 'ログインしていません',
11251117 'watchnologintext' => 'ウォッチリストを変更するためには、[[Special:Userlogin|ログイン]]している必要があります。',
11261118 'addedwatch' => 'ウォッチリストに追加しました',
@@ -1157,21 +1149,21 @@
11581150 'watching' => 'ウォッチリストに追加しています...',
11591151 'unwatching' => 'ウォッチリストから削除しています...',
11601152
1161 -'enotif_mailer' => '{{SITENAME}} 通知メール',
1162 -'enotif_reset' => 'すべてのページを訪問済みにする',
1163 -'enotif_newpagetext' => '(新規ページ)',
 1153+'enotif_mailer' => '{{SITENAME}} 通知メール',
 1154+'enotif_reset' => 'すべてのページを訪問済みにする',
 1155+'enotif_newpagetext' => '(新規ページ)',
11641156 'enotif_impersonal_salutation' => '{{SITENAME}} 利用者',
1165 -'changed' => '変更',
1166 -'created' => '作成',
1167 -'enotif_subject' => '{{SITENAME}} のページ "$PAGETITLE" が $PAGEEDITOR によって$CHANGEDORCREATEDされました',
1168 -'enotif_lastvisited' => '
 1157+'changed' => '変更',
 1158+'created' => '作成',
 1159+'enotif_subject' => '{{SITENAME}} のページ "$PAGETITLE" が $PAGEEDITOR によって$CHANGEDORCREATEDされました',
 1160+'enotif_lastvisited' => '
11691161 あなたが最後に閲覧してからの差分を見るには以下のURLにアクセスしてください:
11701162 $1',
1171 -'enotif_lastdiff' => '
 1163+'enotif_lastdiff' => '
11721164 変更内容を見るには以下のURLにアクセスしてください:
11731165 $1',
1174 -'enotif_anon_editor' => '匿名利用者 $1',
1175 -'enotif_body' => 'Dear $WATCHINGUSERNAME,
 1166+'enotif_anon_editor' => '匿名利用者 $1',
 1167+'enotif_body' => 'Dear $WATCHINGUSERNAME,
11761168
11771169 {{SITENAME}}のページ $PAGETITLE が $PAGEEDITDATE に
11781170 $PAGEEDITOR によって$CHANGEDORCREATEDされました。
@@ -1216,7 +1208,6 @@
12171209 'deletionlog' => '削除記録',
12181210 'reverted' => '以前のバージョンへの差し戻し',
12191211 'deletecomment' => '削除の理由',
1220 -'imagereverted' => '以前のバージョンへの差し戻しに成功しました。',
12211212 'rollback' => '編集の差し戻し',
12221213 'rollback_short' => '差し戻し',
12231214 'rollbacklink' => '差し戻し',
@@ -1330,18 +1321,18 @@
13311322 'sp-newimages-showfrom' => '$1 以後現在までの新着画像を表示',
13321323
13331324 # What links here
1334 -'whatlinkshere' => 'リンク元',
1335 -'notargettitle' => '対象となるページが存在しません',
1336 -'notargettext' => '対象となるページ又は利用者が指定されていません',
1337 -'linklistsub' => 'リンクの一覧',
1338 -'linkshere' => '[[:$1]] は以下のページからリンクされています',
1339 -'nolinkshere' => '[[:$1]] にリンクしているページはありません。',
1340 -'nolinkshere-ns' => "指定された名前空間中で、'''[[:$1]]''' にリンクしているページはありません。",
1341 -'isredirect' => 'リダイレクトページ',
1342 -'istemplate' => 'テンプレート呼出',
1343 -'whatlinkshere-prev' => '前 $1',
1344 -'whatlinkshere-next' => '次 $1',
1345 -'whatlinkshere-links'=> '← リンク',
 1325+'whatlinkshere' => 'リンク元',
 1326+'notargettitle' => '対象となるページが存在しません',
 1327+'notargettext' => '対象となるページ又は利用者が指定されていません',
 1328+'linklistsub' => 'リンクの一覧',
 1329+'linkshere' => '[[:$1]] は以下のページからリンクされています',
 1330+'nolinkshere' => '[[:$1]] にリンクしているページはありません。',
 1331+'nolinkshere-ns' => "指定された名前空間中で、'''[[:$1]]''' にリンクしているページはありません。",
 1332+'isredirect' => 'リダイレクトページ',
 1333+'istemplate' => 'テンプレート呼出',
 1334+'whatlinkshere-prev' => '前 $1',
 1335+'whatlinkshere-next' => '次 $1',
 1336+'whatlinkshere-links' => '← リンク',
13461337
13471338 # Block/unblock
13481339 'blockip' => '投稿ブロック',
@@ -1459,7 +1450,7 @@
14601451 'move-watch' => '移動するページをウォッチ',
14611452 'movepagebtn' => 'ページを移動',
14621453 'pagemovedsub' => '無事移動しました。',
1463 -'movepage-moved' => 'ページ "$1" は "$2" に移動されました。',
 1454+'movepage-moved' => 'ページ "$1" は "$2" に移動されました。', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
14641455 'articleexists' => '指定された移動先には既にページが存在するか、名前が不適切です。',
14651456 'talkexists' => 'ページ自身は移動されましたが、付随のノートページは移動先のページが存在したため移動できませんでした。手動で内容を統合してください。',
14661457 'movedto' => '移動先:',
@@ -1499,7 +1490,6 @@
15001491 'allmessagesdefault' => '既定の文章',
15011492 'allmessagescurrent' => '現在の文章',
15021493 'allmessagestext' => 'これは{{ns:mediawiki}}名前空間にある全てのシステムメッセージの一覧です。',
1503 -'allmessagesnotsupportedUI' => 'このサイトでは、あなたの現在のインターフェース言語 <b>$1</b> における {{ns:special}}:Allmessages はサポートされていません。',
15041494 'allmessagesnotsupportedDB' => 'wgUseDatabaseMessages が無効のため、[[Special:Allmessages]] はサポートされません。',
15051495 'allmessagesfilter' => 'メッセージ名フィルタ:',
15061496 'allmessagesmodified' => '条件に当てはまるものを表示',
@@ -1707,8 +1697,6 @@
17081698 'variantname-zh-sg' => '簡体(シンガポール)',
17091699 'variantname-zh' => '無変換',
17101700
1711 -'passwordtooshort' => 'パスワードが短すぎます。$1文字以上の文字列にしてください。',
1712 -
17131701 # Metadata
17141702 'metadata' => 'メタデータ',
17151703 'metadata-help' => 'このファイルはデジタルカメラ・スキャナなどが付加した追加情報を含んでいます。このファイルがオリジナルの状態から変更されている場合、いくつかの項目は変更を完全に反映していないかもしれません。',
@@ -2063,16 +2051,12 @@
20642052 $1',
20652053 'confirm_purge_button' => 'はい',
20662054
2067 -'youhavenewmessagesmulti' => '$1 に新しいメッセージが届いています',
2068 -
 2055+# AJAX search
20692056 'searchcontaining' => "'''$1''' を含むページの検索。",
20702057 'searchnamed' => "ページ名が '''$1''' の項目の検索。",
20712058 'articletitles' => "''$1'' からはじまる項目",
20722059 'hideresults' => '結果を隠す',
20732060
2074 -
2075 -'loginlanguagelabel' => '言語: $1',
2076 -
20772061 # Multipage image navigation
20782062 'imgmultipageprev' => '&larr; 前ページ',
20792063 'imgmultipagenext' => '次ページ &rarr;',
@@ -2095,7 +2079,7 @@
20962080 # Auto-summaries
20972081 'autosumm-blank' => 'ページの白紙化',
20982082 'autosumm-replace' => "ページの置換: '$1'",
2099 -'autoredircomment' => '[[$1]]へのリダイレクト', # This should be changed to the new naming convention, but existed beforehand
 2083+'autoredircomment' => '[[$1]]へのリダイレクト',
21002084 'autosumm-new' => "新しいページ: '$1'",
21012085
21022086 # Size units
@@ -2146,7 +2130,3 @@
21472131 'watchlisttools-clear' => 'ウォッチリストを空にする',
21482132
21492133 );
2150 -
2151 -
2152 -
2153 -
Index: branches/liquidthreads/languages/messages/MessagesFr.php
@@ -279,23 +279,24 @@
280280 'versionrequired' => 'Version $1 de MediaWiki nécessaire',
281281 'versionrequiredtext' => 'La version $1 de MediaWiki est nécessaire pour utiliser cette page. Consultez [[Special:Version]]',
282282
283 -'ok' => 'OK',
284 -'pagetitle' => '$1 - {{SITENAME}}',
285 -'retrievedfrom' => 'Récupérée de « $1 »',
286 -'youhavenewmessages' => 'Vous avez $1 ($2).',
287 -'newmessageslink' => 'des nouveaux messages',
288 -'newmessagesdifflink' => 'dernière modification',
289 -'editsection' => 'modifier',
290 -'editold' => 'modifier',
291 -'editsectionhint' => 'Modifier la section : $1',
292 -'toc' => 'Sommaire',
293 -'showtoc' => 'afficher',
294 -'hidetoc' => 'masquer',
295 -'thisisdeleted' => 'Désirez-vous afficher ou restaurer $1 ?',
296 -'viewdeleted' => 'Voir $1 ?',
297 -'restorelink' => '{{PLURAL:$1|1 modification effacée|$1 modifications effacées}}',
298 -'feedlinks' => 'Flux',
299 -'feed-invalid' => 'Type de flux invalide.',
 283+'ok' => 'OK',
 284+'pagetitle' => '$1 - {{SITENAME}}',
 285+'retrievedfrom' => 'Récupérée de « $1 »',
 286+'youhavenewmessages' => 'Vous avez $1 ($2).',
 287+'newmessageslink' => 'des nouveaux messages',
 288+'newmessagesdifflink' => 'dernière modification',
 289+'youhavenewmessagesmulti' => 'Vous avez de nouveaux messages sur $1',
 290+'editsection' => 'modifier',
 291+'editold' => 'modifier',
 292+'editsectionhint' => 'Modifier la section : $1',
 293+'toc' => 'Sommaire',
 294+'showtoc' => 'afficher',
 295+'hidetoc' => 'masquer',
 296+'thisisdeleted' => 'Désirez-vous afficher ou restaurer $1 ?',
 297+'viewdeleted' => 'Voir $1 ?',
 298+'restorelink' => '{{PLURAL:$1|1 modification effacée|$1 modifications effacées}}',
 299+'feedlinks' => 'Flux',
 300+'feed-invalid' => 'Type de flux invalide.',
300301
301302 # Short words for each namespace, by default used in the 'article' tab in monobook
302303 'nstab-main' => 'Article',
@@ -356,7 +357,7 @@
357358 'perfdisabled' => 'Désolé ! Cette fonctionnalité est temporairement désactivée car elle ralentit la base de données à tel point que plus personne ne peut utiliser le wiki.',
358359 'perfcached' => 'Ceci est une version en cache et n’est peut-être pas à jour.',
359360 'perfcachedts' => 'Les données suivantes sont en cache, elles ne sont donc pas obligatoirement à jour. La dernière actualisation date du $1.',
360 -'querypage-no-updates' => 'Les mises à jour pour cette page sont actuellemnt désactivées. Les données ci-dessous ne sont pas mises à jour.',
 361+'querypage-no-updates' => 'Les mises à jour pour cette page sont actuellement désactivées. Les données ci-dessous ne sont pas mises à jour.',
361362 'wrong_wfQuery_params' => 'Paramètres incorrects sur wfQuery()<br />
362363 Fonction : $1<br />
363364 Requête : $2',
@@ -371,7 +372,7 @@
372373 $2',
373374 'namespaceprotected' => "Vous n’avez pas la permission de modifier les pages de l’espace de noms « '''$1''' ».",
374375 'customcssjsprotected' => "Vous n’avez pas la permission d'éditer cette page parce qu’elle contient des préférences d’autres utilisateurs.",
375 -'ns-specialprotected' => 'Les pages dans l’espace de noms spécial ne peuvent pas être modifiées.',
 376+'ns-specialprotected' => 'Les pages dans l’espace de noms « Special » ne peuvent pas être modifiées.',
376377
377378 # Login and logout pages
378379 'logouttitle' => 'Déconnexion',
@@ -403,8 +404,8 @@
404405 'badretype' => 'Les mots de passe que vous avez saisis ne sont pas identiques.',
405406 'userexists' => 'Le nom d’utilisateur que vous avez saisi est déjà utilisé. Veuillez en choisir un autre.',
406407 'youremail' => 'Adresse de courriel :',
407 -'username' => 'Nom d’utilisateur :',
408 -'uid' => 'Numéro d’utilisateur :',
 408+'username' => 'Nom de l’utilisateur :',
 409+'uid' => 'Numéro de l’utilisateur :',
409410 'yourrealname' => 'Nom réel',
410411 'yourlanguage' => 'Langue de l’interface :',
411412 'yourvariant' => 'Variante',
@@ -434,7 +435,7 @@
435436 Nous vous conseillons de vous connecter et de modifier ce mot de passe dès que possible.
436437
437438 Si vous n’êtes pas l’auteur de cette demande, ou si vous vous souvenez à présent de votre ancien mot de passe et que vous ne souhaitez plus en changer, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.',
438 -'noemail' => 'Aucun adresse de courriel n’a été enregistrée pour l’utilisateur « $1 ».',
 439+'noemail' => 'Aucune adresse de courriel n’a été enregistrée pour l’utilisateur « $1 ».',
439440 'passwordsent' => 'Un nouveau mot de passe a été envoyé à l’adresse de courriel de l’utilisateur « $1 ». Veuillez vous reconnecter après l’avoir reçu.',
440441 'blocked-mailpassword' => 'Votre adresse IP est bloquée en édition, la fonction de rappel du mot de passe est donc désactivée pour éviter les abus.',
441442 'eauthentsent' => 'Un courriel de confirmation a été envoyé à l’adresse indiquée.
@@ -449,6 +450,7 @@
450451 'invalidemailaddress' => 'Cette adresse de courriel ne peut pas être acceptée car elle semble avoir un format invalide. Veuillez entrer une adresse valide ou laisser ce champ vide.',
451452 'accountcreated' => 'Compte créé.',
452453 'accountcreatedtext' => 'Le compte utilisateur pour $1 a été créé.',
 454+'loginlanguagelabel' => 'Langue : $1',
453455
454456 # Password reset dialog
455457 'resetpass' => 'Remise à zéro du mot de passe',
@@ -496,7 +498,7 @@
497499 'anoneditwarning' => "'''Attention :''' vous n’êtes pas identifié. Votre adresse IP sera enregistrée dans l’historique de cette page.",
498500 'missingsummary' => "'''Attention :''' vous n'avez pas modifié le résumé de votre modification. Si vous cliquez de nouveau sur le bouton « Sauvegarder », la sauvegarde sera faite sans nouvel avertissement.",
499501 'missingcommenttext' => 'Merci d’insérer un résumé ci-dessous.',
500 -'missingcommentheader' => "'''Rappel :''' Vous n’avez pas fourni de sujet/titre à ce commentaire. Si vous cliquez à nouveau sur ''Sauvegarder'', votre édition sera enregistrée sans commentaire.",
 502+'missingcommentheader' => "'''Rappel :''' Vous n’avez pas fourni de sujet/titre à ce commentaire. Si vous cliquez à nouveau sur « Sauvegarder », votre édition sera enregistrée sans commentaire.",
501503 'summary-preview' => 'Prévisualisation du résumé',
502504 'subject-preview' => 'Prévisualisation du sujet/titre',
503505 'blockedtitle' => 'L’utilisateur est bloqué.',
@@ -569,7 +571,6 @@
570572
571573 <strong>Si la tentative de modification était légitime, veuillez réessayer. Si cela échoue à nouveau, veuillez vous déconnecter, puis vous reconnecter.</strong>",
572574 'token_suffix_mismatch' => '<strong>Votre édition n’a été acceptée car votre navigateur a mélangé les caractères de ponctuation dans l’identifiant d’édition. L’édition a été rejetée afin d’empêcher la corruption du texte de l’article. Ce problème se produit lorsque vous utilisez un proxy anonyme à problème.</strong>',
573 -'importing' => 'Import de $1',
574575 'editing' => 'Modification de $1',
575576 'editinguser' => 'Modification de $1',
576577 'editingsection' => 'Modification de $1 (section)',
@@ -730,6 +731,7 @@
731732 # Preferences page
732733 'preferences' => 'Préférences',
733734 'mypreferences' => 'Préférences',
 735+'prefs-edits' => 'Nombre d’éditions :',
734736 'prefsnologin' => 'Non connecté',
735737 'prefsnologintext' => 'Vous devez être [[Special:Userlogin|connecté]] pour modifier vos préférences d’utilisateur.',
736738 'prefsreset' => 'Les préférences ont été rétablies à partir de la version enregistrée.',
@@ -938,7 +940,6 @@
939941 # Image list
940942 'imagelist' => 'Liste des images',
941943 'imagelisttext' => "Voici une liste de '''$1''' {{plural:$1|fichier|fichiers}} classées $2.",
942 -'imagelistforuser' => 'Affiche uniquement les images importées par $1.',
943944 'getimagelist' => 'Récupération de la liste des images',
944945 'ilsubmit' => 'Chercher',
945946 'showlast' => 'Afficher les $1 dernières images classées $2.',
@@ -949,7 +950,7 @@
950951 'imgdesc' => 'page de l’image',
951952 'imgfile' => 'fichier',
952953 'filehist' => 'Historique du fichier',
953 -'filehist-help' => "Cliquer sur une date et une heure pour voir le fichier tel qu'il était à ce moment-l",
 954+'filehist-help' => 'Cliquer sur une date et une heure pour voir le fichier tel qu’il était à ce moment-là',
954955 'filehist-deleteall' => 'tout supprimer',
955956 'filehist-deleteone' => 'supprimer ceci',
956957 'filehist-revert' => 'révoquer',
@@ -983,7 +984,7 @@
984985 'filerevert-defaultcomment' => 'Révoqué jusqu’à la version du $1 à $2',
985986 'filerevert-submit' => 'Révoquer',
986987 'filerevert-success' => '<span class="plainlinks">\'\'\'[[Media:$1|$1]]\'\'\' a été révoqué jusqu\'à [$4 la version du $2 à $3].</span>',
987 -'filerevert-badversion' => "Il n'y a pas de version plus ancienne du fichier avec le Timestamp donné.",
 988+'filerevert-badversion' => 'Il n’y a pas de version plus ancienne du fichier avec le Timestamp donné.',
988989
989990 # MIME search
990991 'mimesearch' => 'Recherche par type MIME',
@@ -1070,7 +1071,7 @@
10711072 'allpages' => 'Toutes les pages',
10721073 'prefixindex' => 'Toutes les pages par premières lettres',
10731074 'randompage' => 'Une page au hasard',
1074 -'randompage-nopages' => 'Il n’y a pas de pages dans cet espace de nom.',
 1075+'randompage-nopages' => 'Il n’y a aucune page dans cet espace de nom.',
10751076 'shortpages' => 'Pages courtes',
10761077 'longpages' => 'Pages longues',
10771078 'deadendpages' => 'Pages en impasse',
@@ -1166,7 +1167,6 @@
11671168 'watchlistfor' => "(pour l’utilisateur '''$1''')",
11681169 'nowatchlist' => 'Votre liste de suivi ne contient aucun article.',
11691170 'watchlistanontext' => 'Pour pouvoir afficher ou éditer les éléments de votre liste de suivi, vous devez vous $1.',
1170 -'watchlistcount' => "Vous avez '''$1''' {{PLURAL:$1|page|pages}} dans votre liste de suivi, en incluant les pages de discussion",
11711171 'watchnologin' => 'Non connecté',
11721172 'watchnologintext' => 'Vous devez être [[Special:Userlogin|connecté]] pour modifier votre liste.',
11731173 'addedwatch' => 'Ajouté à la liste de suivi',
@@ -1288,6 +1288,7 @@
12891289 Voici les réglages actuels de la page <strong>$1</strong> :',
12901290 'protect-cascadeon' => 'Cette page est actuellement protégée car incluse dans {{PLURAL:$1|la page suivante|les pages suivantes}}, ayant été protégée avec l’option « protection en cascade » activée. Vous pouvez changer le niveau de protection de cette page sans que cela n’affecte la protection en cascade.',
12911291 'protect-default' => 'Pas de protection',
 1292+'protect-fallback' => 'Nécessite l’habilitation "$1" ',
12921293 'protect-level-autoconfirmed' => 'Semi-protection',
12931294 'protect-level-sysop' => 'Administrateurs uniquement',
12941295 'protect-summary-cascade' => 'protection en cascade',
@@ -1321,7 +1322,7 @@
13221323 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.',
13231324 'undeleterevdel' => 'La restauration ne sera pas effectuée si, au final, la version la plus récente de la page sera partiellement supprimée. Dans ce cas, vous devez déselectionner les versions les plus récentes (en haut). Les versions des fichiers auxquelles vous n’avez pas accès ne seront pas restaurées.',
13241325 'undeletehistorynoadmin' => 'Cet article a été supprimé. Le motif de la suppression est indiqué dans le résumé ci-dessous, avec les détails des utilisateurs qui l’ont modifié avant sa suppression. Le contenu de ces versions n’est accessible qu’aux administrateurs.',
1325 -'undelete-revision' => 'Version supprimée de $1, le $2 :',
 1326+'undelete-revision' => 'Version supprimée de $1, (révision du $2) par $3 : ',
13261327 'undeleterevision-missing' => 'Version invalide ou manquante. Vous avez peut-être un mauvais lien, ou la version a été restaurée ou supprimée de l’archive.',
13271328 'undeletebtn' => 'Restaurer',
13281329 'undeletereset' => 'Réinitialiser',
@@ -1338,7 +1339,7 @@
13391340 'undelete-search-box' => 'Chercher une page supprimée',
13401341 'undelete-search-prefix' => 'Montrer les pages commençant par :',
13411342 'undelete-search-submit' => 'Chercher',
1342 -'undelete-no-results' => 'Aucune page correspondant à la recherche n’a été trouvé dans les archives.',
 1343+'undelete-no-results' => 'Aucune page correspondant à la recherche n’a été trouvée dans les archives.',
13431344 'undelete-filename-mismatch' => 'Impossible de restaurer le fichier avec le timestamp $1 : fichier introuvable',
13441345 'undelete-bad-store-key' => 'Impossible de restaurer le fichier avec le timestamp $1 : le fichier était absent avant la suppression.',
13451346 'undelete-cleanup-error' => 'Erreur lors de la suppression de l’archive inutilisée « $1 ».',
@@ -1436,6 +1437,8 @@
14371438 'unblocked' => '[[User:$1|$1]] a été débloqué',
14381439 'unblocked-id' => 'Le blocage $1 a été enlevé',
14391440 'ipblocklist' => 'Liste des utilisateurs bloqués',
 1441+'ipblocklist-legend' => 'Chercher un utilisateur bloqué',
 1442+'ipblocklist-username' => 'Nom de l’utilisateur ou adresse IP :',
14401443 'ipblocklist-summary' => 'La liste ci-dessous montre tous les utilisateurs et adresses IP bloqués, par ordre anti-chronologique. Consulter le [[Special:Log/block|journal de blocage]] pour voir les dernières actions de blocage et déblocage effectuées.',
14411444 'ipblocklist-submit' => 'Chercher',
14421445 'blocklistline' => '$1 ($4) : $2 a bloqué $3',
@@ -1680,7 +1683,7 @@
16811684 'siteuser' => 'Utilisateur $1 de {{SITENAME}}',
16821685 'lastmodifiedatby' => 'Cette page a été modifiée pour la dernière fois le $1 à $2 par $3.', # $1 date, $2 time, $3 user
16831686 'and' => 'et',
1684 -'othercontribs' => 'Contributions de cet utilisateur.',
 1687+'othercontribs' => 'Basé sur le travail de $1.',
16851688 'others' => 'autres',
16861689 'siteusers' => 'Utilisateur(s) $1',
16871690 'creditspage' => 'Page de crédits',
@@ -1937,7 +1940,7 @@
19381941 'exif-meteringmode-2' => 'Mesure centrale moyenne',
19391942 'exif-meteringmode-3' => 'Spot',
19401943 'exif-meteringmode-4' => 'MultiSpot',
1941 -'exif-meteringmode-5' => 'Pattern',
 1944+'exif-meteringmode-5' => 'Palette',
19421945 'exif-meteringmode-6' => 'Partiel',
19431946 'exif-meteringmode-255' => 'Autre',
19441947
@@ -1962,6 +1965,9 @@
19631966 'exif-focalplaneresolutionunit-2' => 'pouces',
19641967
19651968 'exif-sensingmethod-1' => 'Non défini',
 1969+'exif-sensingmethod-2' => 'Capteur de zone de couleurs monochromatiques',
 1970+'exif-sensingmethod-3' => 'Capteur de zone de couleurs bichromatiques',
 1971+'exif-sensingmethod-4' => 'Capteur de zone de couleurs trichromatiques',
19661972 'exif-sensingmethod-5' => 'Capteur couleur séquenciel',
19671973 'exif-sensingmethod-7' => 'Capteur trilinéaire',
19681974 'exif-sensingmethod-8' => 'Capteur couleur linéaire séquentiel',
@@ -1986,6 +1992,10 @@
19871993 'exif-scenecapturetype-3' => 'Scène de nuit',
19881994
19891995 'exif-gaincontrol-0' => 'Aucun',
 1996+'exif-gaincontrol-1' => 'Augmentation faible de l’acquisition',
 1997+'exif-gaincontrol-2' => 'Augmentation forte de l’acquisition',
 1998+'exif-gaincontrol-3' => 'Réduction faible de l’acquisition',
 1999+'exif-gaincontrol-4' => 'Réduction forte de l’acquisition',
19902000
19912001 'exif-contrast-0' => 'Normal',
19922002 'exif-contrast-1' => 'Faible',
@@ -2061,7 +2071,7 @@
20622072
20632073 $3
20642074
2065 -Si il ne s’agit pas de vous, n’ouvrez pas le lien. Ce code de confirmation expirera le $4.',
 2075+S’il ne s’agit pas de vous, n’ouvrez pas le lien. Ce code de confirmation expirera le $4.',
20662076
20672077 # Scary transclusion
20682078 'scarytranscludedisabled' => '[La transclusion interwiki est désactivée]',
@@ -2088,15 +2098,12 @@
20892099 'confirm_purge' => 'Voulez-vous rafraîchir cette page (purger le cache) ? $1',
20902100 'confirm_purge_button' => 'Confirmer',
20912101
2092 -'youhavenewmessagesmulti' => 'Vous avez de nouveaux messages sur $1',
2093 -
 2102+# AJAX search
20942103 'searchcontaining' => 'Chercher les articles contenant « $1 ».',
20952104 'searchnamed' => 'Chercher les articles nommés « $1 ».',
20962105 'articletitles' => 'Articles commençant par « $1 »',
20972106 'hideresults' => 'Cacher les résultats',
20982107
2099 -'loginlanguagelabel' => 'Langue : $1',
2100 -
21012108 # Multipage image navigation
21022109 'imgmultipageprev' => '&larr; page précédente',
21032110 'imgmultipagenext' => 'page suivante &rarr;',
@@ -2167,4 +2174,7 @@
21682175 'watchlisttools-raw' => 'Modifier la liste (mode brut)',
21692176 'watchlisttools-clear' => 'Vider la liste de suivi',
21702177
 2178+# Unknown messages
 2179+'svg-long-desc' => '(Fichier SVG, résolution de $1 × $2 pixels, taille : $3)',
 2180+
21712181 );
Index: branches/liquidthreads/languages/messages/MessagesNl.php
@@ -165,10 +165,10 @@
166166 'img_sub' => array( 1, 'sub' ),
167167 'img_super' => array( 1, 'super', 'sup' ),
168168 'img_top' => array( 1, 'top', 'boven' ),
169 - 'img_text-top' => array( 1, 'text-top', 'tekst-boven' ),
 169+ 'img_text_top' => array( 1, 'text-top', 'tekst-boven' ),
170170 'img_middle' => array( 1, 'middle', 'midden' ),
171171 'img_bottom' => array( 1, 'bottom', 'beneden' ),
172 - 'img_text-bottom' => array( 1, 'text-bottom', 'tekst-beneden' ),
 172+ 'img_text_bottom' => array( 1, 'text-bottom', 'tekst-beneden' ),
173173 'int' => array( 0, 'INT:' ),
174174 'sitename' => array( 1, 'SITENAME', 'SITENAAM' ),
175175 'ns' => array( 0, 'NS:', 'NR:' ),
Index: branches/liquidthreads/languages/messages/MessagesRo.php
@@ -10,27 +10,17 @@
1111
1212 $magicWords = array(
1313 # ID CASE SYNONYMS
14 - 'redirect' => array( 0, '#redirect' ),
1514 'notoc' => array( 0, '__NOTOC__', '__FARACUPRINS__' ),
1615 'noeditsection' => array( 0, '__NOEDITSECTION__', '__FARAEDITSECTIUNE__' ),
17 - 'start' => array( 0, '__START__' ),
18 - 'currentmonth' => array( 1, 'CURRENTMONTH', '{{NUMARLUNACURENTA}}' ),
19 - 'currentmonthname' => array( 1, 'CURRENTMONTHNAME', '{{NUMELUNACURENTA}}' ),
20 - 'currentday' => array( 1, 'CURRENTDAY', '{{NUMARZIUACURENTA}}' ),
21 - 'currentdayname' => array( 1, 'CURRENTDAYNAME', '{{NUMEZIUACURENTA}}' ),
22 - 'currentyear' => array( 1, 'CURRENTYEAR', '{{ANULCURENT}}' ),
23 - 'currenttime' => array( 1, 'CURRENTTIME', '{{ORACURENTA}}' ),
24 - 'numberofarticles' => array( 1, 'NUMBEROFARTICLES', '{{NUMARDEARTICOLE}}' ),
25 - 'currentmonthnamegen' => array( 1, 'CURRENTMONTHNAMEGEN', '{{NUMELUNACURENTAGEN}}' ),
26 - 'subst' => array( 0, 'SUBST:' ),
 16+ 'currentmonth' => array( 1, 'CURRENTMONTH', 'NUMARLUNACURENTA' ),
 17+ 'currentmonthname' => array( 1, 'CURRENTMONTHNAME', 'NUMELUNACURENTA' ),
 18+ 'currentday' => array( 1, 'CURRENTDAY', 'NUMARZIUACURENTA' ),
 19+ 'currentdayname' => array( 1, 'CURRENTDAYNAME', 'NUMEZIUACURENTA' ),
 20+ 'currentyear' => array( 1, 'CURRENTYEAR', 'ANULCURENT' ),
 21+ 'currenttime' => array( 1, 'CURRENTTIME', 'ORACURENTA' ),
 22+ 'numberofarticles' => array( 1, 'NUMBEROFARTICLES', 'NUMARDEARTICOLE' ),
 23+ 'currentmonthnamegen' => array( 1, 'CURRENTMONTHNAMEGEN', 'NUMELUNACURENTAGEN' ),
2724 'msgnw' => array( 0, 'MSGNW:', 'MSJNOU:' ),
28 - 'img_thumbnail' => array( 1, 'thumbnail', 'thumb' ),
29 - 'img_right' => array( 1, 'right' ),
30 - 'img_left' => array( 1, 'left' ),
31 - 'img_none' => array( 1, 'none' ),
32 - 'img_width' => array( 1, '$1px' ),
33 - 'img_center' => array( 1, 'center', 'centre' ),
34 - 'int' => array( 0, 'INT:' )
3525 );
3626
3727 $namespaceNames = array(
@@ -285,23 +275,24 @@
286276 'versionrequired' => 'Este necesară versiunea $1 MediaWiki',
287277 'versionrequiredtext' => 'Versiunea $1 MediaWiki este necesară pentru a folosi această pagină. Vezi [[Special:Version|versiunea actuală]].',
288278
289 -'ok' => 'Trimite',
290 -'pagetitle' => '$1 - {{SITENAME}}',
291 -'retrievedfrom' => 'Adus de la "$1"',
292 -'youhavenewmessages' => 'Aveţi $1 ($2).',
293 -'newmessageslink' => 'mesaje noi',
294 -'newmessagesdifflink' => 'comparaţie cu versiunea precedentă',
295 -'editsection' => 'modifică',
296 -'editold' => 'modifică',
297 -'editsectionhint' => 'Modifică secţiunea: $1',
298 -'toc' => 'Cuprins',
299 -'showtoc' => 'arată',
300 -'hidetoc' => 'ascunde',
301 -'thisisdeleted' => 'Vizualizare sau recuperare $1?',
302 -'viewdeleted' => 'Vizualizează $1?',
303 -'restorelink' => '{{PLURAL:$1|o modificare ştearsă|$1 modificări şterse}}',
304 -'feedlinks' => 'Întreţinere:',
305 -'feed-invalid' => 'Tip de abonament invalid',
 279+'ok' => 'Trimite',
 280+'pagetitle' => '$1 - {{SITENAME}}',
 281+'retrievedfrom' => 'Adus de la "$1"',
 282+'youhavenewmessages' => 'Aveţi $1 ($2).',
 283+'newmessageslink' => 'mesaje noi',
 284+'newmessagesdifflink' => 'comparaţie cu versiunea precedentă',
 285+'youhavenewmessagesmulti' => 'Aveţi mesaje noi la $1',
 286+'editsection' => 'modifică',
 287+'editold' => 'modifică',
 288+'editsectionhint' => 'Modifică secţiunea: $1',
 289+'toc' => 'Cuprins',
 290+'showtoc' => 'arată',
 291+'hidetoc' => 'ascunde',
 292+'thisisdeleted' => 'Vizualizare sau recuperare $1?',
 293+'viewdeleted' => 'Vizualizează $1?',
 294+'restorelink' => '{{PLURAL:$1|o modificare ştearsă|$1 modificări şterse}}',
 295+'feedlinks' => 'Întreţinere:',
 296+'feed-invalid' => 'Tip de abonament invalid',
306297
307298 # Short words for each namespace, by default used in the 'article' tab in monobook
308299 'nstab-main' => 'Articol',
@@ -379,7 +370,6 @@
380371 'externaldberror' => 'A fost fie o eroare de bază de date pentru o autentificare extenă sau nu aveţi permisiunea să actualizaţi contul extern.',
381372 'loginproblem' => '<b>A apărut o problemă la autentificarea ta.</b><br />
382373 Încearcă din nou!',
383 -'alreadyloggedin' => '<strong>Sunteţi deja autentificat ca $1!</strong><br />',
384374 'login' => 'Autentificare',
385375 'loginprompt' => 'Trebuie să ai modulele cookie activate pentru a te autentifica la {{SITENAME}}.',
386376 'userlogin' => 'Creare cont / Autentificare',
@@ -416,6 +406,7 @@
417407 'nouserspecified' => 'Trebuie să specificaţi un nume de utilizator.',
418408 'wrongpassword' => 'Parola pe care ai introdus-o este greşită. Te rugăm să încerci din nou.',
419409 'wrongpasswordempty' => 'Spaţiul pentru introducerea parolei nu a fost completat. Vă rugăm să încercaţi din nou.',
 410+'passwordtooshort' => 'Parola dumneavoastră este prea scurtă. Trebuie să aibă cel puţin $1 caractere.',
420411 'mailmypassword' => 'Trimite-mi parola pe e-mail!',
421412 'passwordremindertitle' => 'Amintirea parolei de la {{SITENAME}}',
422413 'passwordremindertext' => 'Cineva (probabil tu, de la adresa $1)
@@ -436,6 +427,7 @@
437428 'invalidemailaddress' => 'Adresa de email nu a putut fi acceptată pentru că pare a avea un format invalid. Vă rugăm să reintroduceţi o adresă bine formatată sau să goliţi acel câmp.',
438429 'accountcreated' => 'Contul a fost creat.',
439430 'accountcreatedtext' => 'Contul utilizatorului pentru $1 a fost creat.',
 431+'loginlanguagelabel' => 'Limba: $1',
440432
441433 # Password reset dialog
442434 'resetpass' => 'Resetează parola contului',
@@ -546,7 +538,6 @@
547539 ''Deoarece acest wiki are activat raw HTML, previzualizarea este ascunsă ca măsură de precauţie împotriva atacurilor JavaScript.''
548540
549541 <strong>Dacă această încercare de modificare este legitimă, te rugăm să încerci din nou. Dacă nu funcţionează nici în acest fel, închide sesiunea şi încearcă să te autentifici din nou.</strong>",
550 -'importing' => 'Se importă $1',
551542 'editing' => 'modificare $1',
552543 'editinguser' => 'modificare $1',
553544 'editingsection' => 'modificare $1 (secţiune)',
@@ -876,7 +867,6 @@
877868 # Image list
878869 'imagelist' => 'Lista imaginilor',
879870 'imagelisttext' => 'Mai jos se află lista a $1 imagini ordonate $2.',
880 -'imagelistforuser' => 'Se afişează numai imagini încărcate de $1.',
881871 'getimagelist' => 'încarc lista de imagini',
882872 'ilsubmit' => 'Caută',
883873 'showlast' => 'Arată ultimele $1 imagini ordonate $2.',
@@ -886,12 +876,6 @@
887877 'imgdelete' => 'şterge',
888878 'imgdesc' => 'desc',
889879 'imgfile' => 'fişier',
890 -'imglegend' => 'Legendă: (desc) = arată/modifică descrierea imaginii.',
891 -'imghistory' => 'Istoria imaginii',
892 -'revertimg' => 'rev',
893 -'deleteimg' => 'şterg',
894 -'deleteimgcompletely' => 'şterg',
895 -'imghistlegend' => 'Legendă: (actuală) = versiunea curentă a imaginii, (şterg) = şterge această versiune veche, (rev) = revino la această versiune veche.',
896880 'imagelinks' => 'Legăturile imaginii',
897881 'linkstoimage' => 'Următoarele pagini leagă la această imagine:',
898882 'nolinkstoimage' => 'Nici o pagină nu se leagă la această imagine.',
@@ -1009,7 +993,7 @@
1010994 'unusedcategoriestext' => 'Următoarele categorii de pagini există şi totuşi nici un articol sau categorie nu le foloseşte.',
1011995
1012996 # Book sources
1013 -'booksources' => 'Surse de cărţi',
 997+'booksources' => 'Surse de cărţi',
1014998
1015999 'categoriespagetext' => 'Următoarele categorii există în wiki.',
10161000 'data' => 'Data',
@@ -1067,7 +1051,6 @@
10681052 'watchlistfor' => "(pentru '''$1''')",
10691053 'nowatchlist' => 'Nu aţi ales să urmăriţi nici o pagină.',
10701054 'watchlistanontext' => 'Te rugăm să $1 pentru a vizualiza sau edita itemii de pe lista ta de urmărire.',
1071 -'watchlistcount' => "'''Aveţi $1 elemente în lista de urmărire, incluzând paginile de discuţii.'''",
10721055 'watchnologin' => 'Nu sunteţi autentificat',
10731056 'watchnologintext' => 'Trebuie să fiţi [[Special:Userlogin|autentificat]] pentru a vă modifica lista de pagini urmărite.',
10741057 'addedwatch' => 'Adăugată la lista de pagini urmărite',
@@ -1148,7 +1131,6 @@
11491132 'deletionlog' => 'raportul de ştergeri',
11501133 'reverted' => 'Revenire la o versiune mai veche',
11511134 'deletecomment' => 'Motiv pentru ştergere',
1152 -'imagereverted' => 'S-a revenit la o versiune veche.',
11531135 'rollback' => 'Editări de revenire',
11541136 'rollback_short' => 'Revenire',
11551137 'rollbacklink' => 'revenire',
@@ -1415,7 +1397,6 @@
14161398 'allmessagesdefault' => 'Textul standard',
14171399 'allmessagescurrent' => 'Textul curent',
14181400 'allmessagestext' => 'Aceasta este lista completă a mesajelor disponibile în domeniul "MediaWiki:"',
1419 -'allmessagesnotsupportedUI' => 'Interfaţa curentă de limbă <b>$1</b> nu este suportată de Special:Allmessages la acest sit.',
14201401 'allmessagesnotsupportedDB' => "'''Special:Allmessages''' nu poate fi folosit deoarece '''\$wgUseDatabaseMessages''' este închisă.",
14211402 'allmessagesfilter' => 'Filtrare în funcţie de titlul mesajului:',
14221403 'allmessagesmodified' => 'Arată doar mesajele modificate.',
@@ -1600,8 +1581,6 @@
16011582 'showhidebots' => '($1 roboţi)',
16021583 'noimages' => 'Nimic de văzut.',
16031584
1604 -'passwordtooshort' => 'Parola dumneavoastră este prea scurtă. Trebuie să aibă cel puţin $1 caractere.',
1605 -
16061585 # Metadata
16071586 'metadata' => 'Informaţii',
16081587 'metadata-help' => 'Acest fişier conţine informaţii suplimentare, introduse probabil de aparatul fotografic digital sau scannerul care l-a generat. Dacă fişierul a fost modificat între timp, este posibil ca unele detalii să nu mai fie valabile.',
@@ -1915,18 +1894,15 @@
19161895 'confirm_purge' => 'Doriţi să reîncărcaţi pagina? $1',
19171896 'confirm_purge_button' => 'Da',
19181897
1919 -'youhavenewmessagesmulti' => 'Aveţi mesaje noi la $1',
1920 -
 1898+# AJAX search
19211899 'searchcontaining' => "Caută articolele care conţin ''$1''.",
19221900 'searchnamed' => "Caută articole cu numele ''$1''.",
19231901 'articletitles' => "Articole începând cu ''$1''",
19241902 'hideresults' => 'Ascunde rezultatele',
19251903
1926 -'loginlanguagelabel' => 'Limba: $1',
1927 -
19281904 # Multipage image navigation
1929 -'imgmultipageprev' => '&larr; pagina anterioară',
1930 -'imgmultipagenext' => 'pagina următoare &rarr;',
 1905+'imgmultipageprev' => '← pagina anterioară',
 1906+'imgmultipagenext' => 'pagina următoare →',
19311907 'imgmultigotopre' => 'Mergi la pagina',
19321908
19331909 # Table pager
@@ -1940,7 +1916,7 @@
19411917 # Auto-summaries
19421918 'autosumm-blank' => 'Şters conţinutul paginii',
19431919 'autosumm-replace' => "Înlocuit pagina cu '$1'",
1944 -'autoredircomment' => 'Redirecţionat înspre [[$1]]', # This should be changed to the new naming convention, but existed beforehand
 1920+'autoredircomment' => 'Redirecţionat înspre [[$1]]',
19451921 'autosumm-new' => 'Pagină nouă: $1',
19461922
19471923 # Live preview
@@ -1948,5 +1924,3 @@
19491925 'livepreview-ready' => 'Încărcare… Gata!',
19501926
19511927 );
1952 -
1953 -
Index: branches/liquidthreads/languages/messages/MessagesDa.php
@@ -430,6 +430,7 @@
431431 'filedeleteerror' => 'Kunne ikke slette filen "$1".',
432432 'directorycreateerror' => 'Kunne ikke oprette kataloget "$1".',
433433 'filenotfound' => 'Kunne ikke finde filen "$1".',
 434+'fileexistserror' => 'Kunne ikke oprette "$1": filen findes allerede',
434435 'unexpected' => 'Uventet værdi: "$1"="$2".',
435436 'formerror' => 'Fejl: Kunne ikke afsende formular',
436437 'badarticleerror' => 'Denne funktion kan ikke udføres på denne side.',
@@ -450,8 +451,11 @@
451452 'protectedinterface' => 'Denne side indeholder tekst til softwarens sprog-interface og er skrivebeskyttet for at forhindre misbrug.',
452453 'editinginterface' => "'''Advarsel:''' Denne side indeholder tekst, som bruges af MediaWiki-softwaren. Ændringer har virkning på brugergrænsefladen.",
453454 'sqlhidden' => '(SQL forespørgsel gemt)',
454 -'cascadeprotected' => 'Denne side er skrivebeskyttet, da den er indeholdt i nedenstående {{PLURAL:$1|side|sider}}, som er skrivebeskyttet med tilvalg af "nedarvende sidebeskyttelse":',
 455+'cascadeprotected' => 'Denne side er skrivebeskyttet, da den er indeholdt i nedenstående {{PLURAL:$1|side|sider}}, som er skrivebeskyttet med tilvalg af "nedarvende sidebeskyttelse":
 456+$2',
455457 'namespaceprotected' => "Du har ikke rettigheder til t redigere sider i $1-navnerummet.",
 458+'customcssjsprotected' => "Du har ikke rettigheder til at redigere denne side, da den indeholder en anden brugers personlige indstillinger.",
 459+'ns-specialprotected' => "Sider i navnerummet {{ns:special}} kan ikke redigeres.",
456460
457461 # Login and logout pages
458462 'logouttitle' => 'Bruger-log-af',
@@ -468,7 +472,6 @@
469473 'yourdomainname' => 'Dit domænenavn',
470474 'externaldberror' => 'Der er opstået en fejl i en ekstern adgangsdatabase, eller du har ikke rettigheder til at opdatere denne.',
471475 'loginproblem' => '<b>Der har været et problem med at få dig logget på.</b><br />Prøv igen!',
472 -'alreadyloggedin' => '<strong>Bruger $1, du er allerede logget på!</strong><br />',
473476 'login' => 'Log på',
474477 'loginprompt' => 'Du skal have cookies slået til for at kunne logge på {{SITENAME}}.',
475478 'userlogin' => 'Opret en konto eller log på',
@@ -508,6 +511,7 @@
509512 'nouserspecified' => 'Angiv venligst et brugernavn.',
510513 'wrongpassword' => 'Den indtastede adgangskode var forkert. Prøv igen.',
511514 'wrongpasswordempty' => 'Du glemte at indtaste password. Prøv igen.',
 515+'passwordtooshort' => 'Dit kodeord er for kort. Det skal være mindst $1 tegn langt.',
512516 'mailmypassword' => 'Send et nyt password til min e-mail-adresse',
513517 'passwordremindertitle' => 'Nyt password til {{SITENAME}}',
514518 'passwordremindertext' => 'Nogen (sandsynligvis dig, fra IP-addressen $1)
@@ -590,6 +594,7 @@
591595
592596 Blokeringen er lavet af $1. Begrundelsen er ''$2''.
593597
 598+Blokeringen starter: $8
594599 Blokeringen udløber: $6
595600 Blokeringen er rettet mod: $7
596601
@@ -601,13 +606,24 @@
602607
603608 :\'\'$2\'\'
604609
 610+Blokeringsperiodens start: $8
605611 Blokeringen udløber: $6
606612
607613 Du kan kontakte $1 eller en af de andre [[{{MediaWiki:grouppage-sysop}}|administratorer]] for at diskutere blokeringen.
608614
609 -Bemærk, at du ikke må bruge funktionen "e-mail til denne bruger" medmindre du har en gyldig e-mail addresse registreret i din [[Special:Preferences|brugerindstilling]].
 615+Bemærk, at du ikke kan bruge funktionen "e-mail til denne bruger" medmindre du har en gyldig e-mail addresse registreret i din [[Special:Preferences|brugerindstilling]].
610616
611617 Din blokerings-ID er $5. Angiv venligst denne ID ved alle henvendelser.',
 618+'blockedtext-concise' => 'Dit brugernavn eller din IP-adresse, $7, er blevet blokeret af $1. Begrundelsen er $2. Blokeringen udløber $6. Hvis du vil diskutere blokeringen, kan du kontakte $1 eller en anden [[{{MediaWiki:grouppage-sysop}}|administrator]]
 619+
 620+Bemærk, at du ikke kan bruge funktionen "e-mail til denne bruger" medmindre du har en gyldig e-mail addresse registreret i din [[Special:Preferences|brugerindstilling]].
 621+
 622+Din IP-adresse er $3 og blokerings-ID er $5. Angiv venligst denne ID ved alle henvendelser.',
 623+'autoblockedtext-concise' => 'Din IP-adresse er tidligere brugt af en bruger der er blevet blokeret af $1. Begrundelsen er $2. Blokeringen udløber $6. Hvis du vil diskutere blokeringen, kan du kontakte $1 eller en anden [[{{MediaWiki:grouppage-sysop}}|administrator]]
 624+
 625+Bemærk, at du ikke kan bruge funktionen "e-mail til denne bruger" medmindre du har en gyldig e-mail addresse registreret i din [[Special:Preferences|brugerindstilling]].
 626+
 627+Din IP-adresse er $3 og din blokerings-ID er $5. Angiv venligst denne ID ved alle henvendelser.',
612628 'blockedoriginalsource' => "Kildekoden fra '''$1''' vises her:",
613629 'blockededitsource' => "Kildekoden fra '''Dine ændringer''' til '''$1''':",
614630 'whitelistedittitle' => 'Log på for at redigere',
@@ -646,7 +662,6 @@
647663
648664 <strong>Forsøg venligst igen. Hvis problemet fortsætter, log af og log på igen.</strong>",
649665 'token_suffix_mismatch' => '<strong>Din redigering er afvist, da din browser har forvansket tegnsætningen i redigeringskontrolfilen. Afvisningen sker for at forhindre utilsigtede ændringer i artiklen. Denne fejl opstår nogle gange, når du redigerer gennem en fejlprogrammeret webbaseret anonymiseringstjeneste.</strong>',
650 -'importing' => 'importerer $1',
651666 'editing' => 'Redigerer $1',
652667 'editinguser' => 'Redigerer $1',
653668 'editingsection' => 'Redigerer $1 (afsnit)',
@@ -687,6 +702,9 @@
688703 'edittools' => '<!-- Denne tekst vises under formularen „Ændre“ samt "Upload". -->',
689704 'nocreatetitle' => 'Oprettelse af nye sider er begrænset.',
690705 'nocreatetext' => 'Serveren har begrænset oprettelse af nye sider. Bestående sider kan ændres eller [[Special:Userlogin|logge på]].',
 706+'nocreate-loggedin' => 'Du har ikke rettigheder til at oprette nye sider.',
 707+'permissionserrors' => "Rettighedskonflikt",
 708+'permissionserrorstext' => "Du har ikke rettigheder til at gennemføre denne handling, {{PLURAL:$1|årsagen|årsagerne}} er:",
691709 'recreate-deleted-warn' => "'''Advarsel: Du er ved at genskabe en tidligere slettet side.'''
692710
693711 Overvej om det er passende at genoprette siden. De slettede versioner for
@@ -820,6 +838,7 @@
821839 'preferences' => 'Indstillinger',
822840 'preferences-summary' => 'På denne specialside kan du ændre og tilpasse bestemte dele af brugeroverfladen individuelt',
823841 'mypreferences' => 'Indstillinger',
 842+'prefs-edits' => 'Antal redigeringer:',
824843 'prefsnologin' => 'Ikke logget på',
825844 'prefsnologintext' => 'Du skal være [[Special:Userlogin|logget på]] for at ændre brugerindstillinger.',
826845 'prefsreset' => 'Indstillingerne er blevet gendannet fra lageret.',
@@ -896,7 +915,7 @@
897916 'group' => 'Gruppe:',
898917 'group-bot' => 'Bots',
899918 'group-sysop' => 'Administratorer',
900 -'group-bureaucrat' => 'Burokrater',
 919+'group-bureaucrat' => 'Bureaukrater',
901920 'group-all' => '(alle)',
902921
903922 'group-bot-member' => 'Bot',
@@ -905,7 +924,7 @@
906925
907926 'grouppage-bot' => '{{ns:project}}:Bots',
908927 'grouppage-sysop' => '{{ns:project}}:Administratorer',
909 -'grouppage-bureaucrat' => '{{ns:project}}:Burokrater',
 928+'grouppage-bureaucrat' => '{{ns:project}}:Bureaukrater',
910929
911930 # User rights log
912931 'rightslog' => 'Rettigheds-logbog',
@@ -1040,7 +1059,6 @@
10411060 'imagelist' => 'Billedliste',
10421061 'imagelist-summary' => 'Denne specialside viser alle uploadede filer. Standardmæssigt vises de sidst uploadede filer først. Med et klik på spalteoverskriften kan sorteringen vendes om eller der kan sorteres efter en anden spalte.',
10431062 'imagelisttext' => 'Herunder er en liste med $1 billeder sorteret $2.',
1044 -'imagelistforuser' => 'Denne side viser kun filer, som er uploadet af $1.',
10451063 'getimagelist' => 'henter billedliste',
10461064 'ilsubmit' => 'Søg',
10471065 'showlast' => 'Vis de sidste $1 billeder sorteret $2.',
@@ -1050,12 +1068,17 @@
10511069 'imgdelete' => 'slet',
10521070 'imgdesc' => 'beskrivelse',
10531071 'imgfile' => 'Fil',
1054 -'imglegend' => 'Forklaring: (beskrivelse) = vis/redigér billedebeskrivelse.',
1055 -'imghistory' => 'Billedhistorik',
1056 -'revertimg' => 'gendan',
1057 -'deleteimg' => 'slet',
1058 -'deleteimgcompletely' => 'Slet alle revisioner af dette billede',
1059 -'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>.',
 1072+'filehist' => 'Filhistorik',
 1073+'filehist-help' => 'Klik på en dato/tid for at se den version af filen.',
 1074+'filehist-deleteall' => 'slet alle',
 1075+'filehist-deleteone' => 'slet denne',
 1076+'filehist-revert' => 'gendan',
 1077+'filehist-current' => 'nuværende',
 1078+'filehist-datetime' => 'Dato/tid',
 1079+'filehist-user' => 'Bruger',
 1080+'filehist-dimensions' => 'Dimensioner',
 1081+'filehist-filesize' => 'Filstørrelse',
 1082+'filehist-comment' => 'Kommentar',
10601083 'imagelinks' => 'Billedehenvisninger',
10611084 'linkstoimage' => 'De følgende sider henviser til dette billede:',
10621085 'nolinkstoimage' => 'Der er ingen sider der henviser til dette billede.',
@@ -1072,6 +1095,16 @@
10731096 'imagelist_description' => 'Beskrivelse',
10741097 'imagelist_search_for' => 'Søge efter fil:',
10751098
 1099+# File reversion
 1100+'filerevert' => 'Gendan $1',
 1101+'filerevert-legend' => 'Gendan fil',
 1102+'filerevert-intro' => "<span class=\"plainlinks\">Du gendanner '''[[Media:$1|$1]]''' til [$4 version fra $2, $3].</span>",
 1103+'filerevert-comment' => 'Kommentar:',
 1104+'filerevert-defaultcomment' => 'Gendannet til version fra $1, $2',
 1105+'filerevert-submit' => 'Gendan',
 1106+'filerevert-success' => "<span class=\"plainlinks\">'''[[Media:$1|$1]]''' er gendannet til [$4 version fra $2, $3].</span>",
 1107+'filerevert-badversion' => 'Der findes ingen lokal udgave af denne fil med det opgivne tidsstempel.',
 1108+
10761109 # MIME search
10771110 'mimesearch' => 'Søge efter MIME-type',
10781111 'mimesearch-summary' => 'På denne specialside kan filerne filtreres efter MIME-typen. Indtastningen skal altid indeholde medie- og undertypen: <tt>image/jpeg</tt> (se billedbeskrivelsessiden).',
@@ -1190,7 +1223,7 @@
11911224 'protectedpages-summary' => 'Denne specialside viser alle sider, der er beskyttet mod ændring eller flytning.',
11921225 'protectedpagestext' => 'De følgende sider er beskyttede mod redigering og flytning.',
11931226 'protectedpagesempty' => 'I øjeblikket er ingen sider beskyttet på denne måde.',
1194 -'listusers' => 'Brugereliste',
 1227+'listusers' => 'Brugerliste',
11951228 'listusers-summary' => "Denne specialside viser alle registrerede brugere; det samlede tal kan ses [[Special:Statistics|her]]. Med udvalget ''Gruppe'' kan søgningen begrænses til bestemte brugergrupper.",
11961229 'specialpages' => 'Specielle sider',
11971230 'specialpages-summary' => 'Denne side giver en oversigt over alle specialsider. De genereres automatisk og kan ikke ændres.',
@@ -1278,7 +1311,6 @@
12791312 'watchlistfor' => "(for '''$1''')",
12801313 'nowatchlist' => 'Du har ingenting i din overvågningsliste.',
12811314 'watchlistanontext' => 'Du skal $1, for at se din overvågningsliste eller ændre indholdet af den.',
1282 -'watchlistcount' => "'''Du har $1 {{PLURAL:$1|artikel|artikler}} på din overvågningsliste (inkl. diskussionssider).'''",
12831315 'watchnologin' => 'Ikke logget på',
12841316 'watchnologintext' => 'Du skal være [[Special:Userlogin|logget på]] for at kunne ændre din overvågningsliste.',
12851317 'addedwatch' => 'Tilføjet til din overvågningsliste',
@@ -1364,7 +1396,6 @@
13651397 'deletionlog' => 'sletningslog',
13661398 'reverted' => 'Gendannet en tidligere version',
13671399 'deletecomment' => 'Begrundelse for sletning',
1368 -'imagereverted' => 'En tidligere version er gendannet.',
13691400 'rollback' => 'Fjern redigeringer',
13701401 'rollback_short' => 'Fjern redigering',
13711402 'rollbacklink' => 'fjern redigering',
@@ -1394,6 +1425,7 @@
13951426 'protect-locked-access' => 'Den brugerkonto har ikke de nødvendige rettigheder til at ændre sidebeskyttelsen. Her er de aktuelle beskyttelsesindstillinger for siden <strong>„$1“:</strong>',
13961427 'protect-cascadeon' => 'Denne side er del af en nedarvet skrivebeskyttelse. Wen er indeholdt i nedenstående {{PLURAL:$1|side|sider}}, som er skrivebeskyttet med tilvalg af "nedarvende sidebeskyttelse" Sidebeskyttelsen kan ændres for denne side, det påvirker dog ikke kaskadespærringen:',
13971428 'protect-default' => 'Alle (Standard)',
 1429+'protect-fallback' => 'Kræv "$1"-tilladelse',
13981430 'protect-level-autoconfirmed' => 'Spærring for ikke registrerede brugere',
13991431 'protect-level-sysop' => 'Kun administratorer',
14001432 'protect-summary-cascade' => 'nedarvende',
@@ -1434,7 +1466,7 @@
14351467 'undeletehistorynoadmin' => 'Denne side blev ikke slettet. Årsagen til sletningen er angivet i resumeet,
14361468 sammen med oplysninger om den sidste bruger, der ændrede denne side før sletningen.
14371469 Den aktuelle tekst for den slettede side er kun tilgængelig for administratorer.',
1438 -'undelete-revision' => 'Slettet version fra $1 af $2:',
 1470+'undelete-revision' => 'Slettet version fra $1 af $2 slettet af $3:',
14391471 'undeleterevision-missing' => 'Ugyldig eller manglende version. Enten er henvisningen forkert eller versionen blev fjernet eller gendannet fra arkivet.',
14401472 'undeletebtn' => 'Gendan!',
14411473 'undeletereset' => 'Afbryde',
@@ -1547,6 +1579,8 @@
15481580 'unblocked' => '[[User:$1|$1]] blev frigivet',
15491581 'unblocked-id' => 'Blokering $1 er blevet fjernet',
15501582 'ipblocklist' => 'Blokerede IP-adresser og brugernavne',
 1583+'ipblocklist-legend' => 'Find en blokeret bruger',
 1584+'ipblocklist-username' => 'Brugernavn eller IP-addresse:',
15511585 'ipblocklist-summary' => "Denne specialside viser – som supplement til [[Special:Log/block|brugerspærrings-loggen]], der protokollerer alle manuelt gennemførte spærringer og frigivelser – de '''aktuelt''' spærrede brugere og IP-adresse, herunder automatisk spærrede IP-adresser i anonymiseret form.",
15521586 'ipblocklist-submit' => 'Søg',
15531587 'blocklistline' => '$1, $2 blokerede $3 ($4)',
@@ -1611,6 +1645,7 @@
16121646 'movenologintext' => 'Du skal være registreret bruger og være [[Special:Userlogin|logget på]]
16131647
16141648 for at flytte en side.',
 1649+'movenotallowed' => 'Du har ikke rettigheder til at flytte sider.',
16151650 'newtitle' => 'Til ny titel',
16161651 'move-watch' => 'Denne side overvåges',
16171652 'movepagebtn' => 'Flyt side',
@@ -1654,7 +1689,6 @@
16551690 'allmessagesdefault' => 'Standard tekst',
16561691 'allmessagescurrent' => 'Nuværende tekst',
16571692 'allmessagestext' => 'Dette er en liste med alle beskeder i MediaWiki: navnerummet.',
1658 -'allmessagesnotsupportedUI' => 'Dit aktuelle grænsefladesprog <b>$1</b> er ikke understøttet af Special:AllMessages på dette websted.',
16591693 'allmessagesnotsupportedDB' => 'Special:AllMessages ikke understøttet fordi wgUseDatabaseMessages er slået fra.',
16601694 'allmessagesfilter' => 'Meddelelsesnavnefilter:',
16611695 'allmessagesmodified' => 'Vis kun ændrede',
@@ -1846,20 +1880,28 @@
18471881 'mediawarning' => "'''Advarsel''', denne filtype kan muligvis indeholde skadelig kode, du kan beskadige dit system hvis du udfører den.<hr />",
18481882 'imagemaxsize' => 'Begræns størrelsen af billeder på billedsiderne til:',
18491883 'thumbsize' => 'Thumbnail størrelse :',
 1884+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|side|sider}}',
18501885 'file-info' => '(Filstørrelse: $1, MIME-Typ: $2)',
18511886 'file-info-size' => '($1 × $2 pixel, filstørrelse: $3, MIME-Typ: $4)',
18521887 'file-nohires' => '<small>Ingen højere opløsning fundet.</small>',
1853 -'file-svg' => '<small>Dette er en vektorgrafik, der kan skaleres uden kvalitetstab. Basisstørrelse: $1 × $2 pixel.</small>',
 1888+'svg-long-desc' => '(SVG file, basisstørrelse $1 × $2 pixels, file size: $3)',
18541889 'show-big-image' => 'Version i større opløsning',
18551890 'show-big-image-thumb' => '<small>Størrelse af forhåndsvisning: $1 × $2 pixel</small>',
18561891
 1892+# Special:Newimages
18571893 'newimages' => 'Galleri med de nyeste billeder',
18581894 'newimages-summary' => 'Denne specialside viser de nyeste uploadede billeder og filer.',
18591895 'showhidebots' => '(Bots $1)',
18601896 'noimages' => 'Ingen filer fundet.',
18611897
1862 -'passwordtooshort' => 'Dit kodeord er for kort. Det skal være mindst $1 tegn langt.',
 1898+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 1899+'hours-abbrev' => 't', # only translate this message to other languages if you have to change it
18631900
 1901+# Bad image list
 1902+'bad_image_list' => 'Formatet er:
 1903+
 1904+Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvisning på en linje er til det uønskede billede. Efterfølgende links på samme linjer er undtagelser, dvs. sider hvor billedet må optræde.',
 1905+
18641906 # Metadata
18651907 'metadata' => 'Metadata',
18661908 'metadata-help' => 'Denne fil indeholder yderligere informationer, der som regel stammer fra digitalkameraet eller den brugte scanner. Ved en efterfølgende bearbejdning kan nogle data være ændret.',
Index: branches/liquidthreads/languages/messages/MessagesSv.php
@@ -246,6 +246,7 @@
247247 'category_header' => 'Artiklar i kategorin "$1"',
248248 'subcategories' => 'Underkategorier',
249249 'category-media-header' => 'Media i kategorin "$1"',
 250+'category-empty' => "''Den här kategorin innehåller just nu inga artiklar eller filer.''",
250251
251252 'mainpagetext' => 'Installation av wikimjukvara klar.',
252253 'mainpagedocfooter' => 'För anpassning av användargränssnittet, se [http://meta.wikimedia.org/wiki/MediaWiki_localization dokumentation]. För hjälp med användning och konfiguration, se [http://meta.wikimedia.org/wiki/Help:Contents användarguiden] på Meta.',
@@ -358,23 +359,24 @@
359360 'versionrequired' => 'Version $1 av MediaWiki krävs',
360361 'versionrequiredtext' => 'För att kunna använda den här sidan, behövs version $1 av MediaWiki. Se [[Special:Version]].',
361362
362 -'ok' => 'OK',
363 -'pagetitle' => '$1 - {{SITENAME}}',
364 -'retrievedfrom' => 'Den här artikeln är hämtad från $1',
365 -'youhavenewmessages' => 'Du har $1 ($2).',
366 -'newmessageslink' => 'nya meddelanden',
367 -'newmessagesdifflink' => 'ändring mot tidigare version',
368 -'editsection' => 'redigera',
369 -'editold' => 'redigera',
370 -'editsectionhint' => 'Redigera avsnitt: $1',
371 -'toc' => 'Innehåll',
372 -'showtoc' => 'visa',
373 -'hidetoc' => 'göm',
374 -'thisisdeleted' => 'Visa eller återställ $1?',
375 -'viewdeleted' => 'Visa $1?',
376 -'restorelink' => '{{PLURAL:$1|en raderad version|$1 raderade versioner}}',
377 -'feedlinks' => 'Matning:',
378 -'feed-invalid' => 'Ogiltig matningstyp.',
 363+'ok' => 'OK',
 364+'pagetitle' => '$1 - {{SITENAME}}',
 365+'retrievedfrom' => 'Den här artikeln är hämtad från $1',
 366+'youhavenewmessages' => 'Du har $1 ($2).',
 367+'newmessageslink' => 'nya meddelanden',
 368+'newmessagesdifflink' => 'ändring mot tidigare version',
 369+'youhavenewmessagesmulti' => 'Du har nya meddelanden på $1',
 370+'editsection' => 'redigera',
 371+'editold' => 'redigera',
 372+'editsectionhint' => 'Redigera avsnitt: $1',
 373+'toc' => 'Innehåll',
 374+'showtoc' => 'visa',
 375+'hidetoc' => 'göm',
 376+'thisisdeleted' => 'Visa eller återställ $1?',
 377+'viewdeleted' => 'Visa $1?',
 378+'restorelink' => '{{PLURAL:$1|en raderad version|$1 raderade versioner}}',
 379+'feedlinks' => 'Matning:',
 380+'feed-invalid' => 'Ogiltig matningstyp.',
379381
380382 # Short words for each namespace, by default used in the 'article' tab in monobook
381383 'nstab-main' => 'Artikel',
@@ -414,10 +416,13 @@
415417 'missingarticle' => 'Databasen borde ha funnit sidan "$1", men det gjorde den inte. Den vanligaste orsaken till denna typ av fel är vanligen en utdaterad jämförelse mellan sidversioner (diff) eller en länk från versionshistoriken till en sida som raderats. Om inte något av detta stämmer, kan du ha hittat en bugg i mjukvaran. Rapportera gärna buggar direkt i [http://bugzilla.wikimedia.org/ Bugzilla]; du kan även posta dem på sidan för [[Project:Felrapporter|felrapporter]], eller kontakta en [[Project:Administratörer|administratör]] och be honom eller henne skicka informationen vidare. Oavsett vilket av alternativen du väljer, notera url:en (webbadressen).',
416418 'readonly_lag' => 'Databasen har automatiskt låsts tills dess att databasservrarna återfår kontakten med huvudservern.',
417419 'internalerror' => 'Internt fel',
 420+'internalerror_info' => 'Internt fel: $1',
418421 'filecopyerror' => 'Kunde inte kopiera filen "$1" till "$2".',
419422 'filerenameerror' => 'Kunde inte byta namn på filen "$1" till "$2".',
420423 'filedeleteerror' => 'Kunde inte radera filen "$1".',
 424+'directorycreateerror' => 'Kunde inte skapa katalogen "$1".',
421425 'filenotfound' => 'Kunde inte hitta filen "$1".',
 426+'fileexistserror' => 'Kan inte skriva till "$1": filen finns redan',
422427 'unexpected' => 'Oväntat värde: "$1"="$2".',
423428 'formerror' => 'Fel: Kunde inte sända formulär',
424429 'badarticleerror' => 'Den åtgärden kan inte utföras på den här sidan.',
@@ -437,8 +442,11 @@
438443 'protectedinterface' => 'Denna sida innehåller text för mjukvarans gränssnitt, och är skrivskyddad för att förebygga missbruk.',
439444 'editinginterface' => "'''Varning:''' Du redigerar en sida som används till texten i gränssnittet. Ändringar på denna sida kommer att påverka gränssnittets utseende för alla användare.",
440445 'sqlhidden' => '(gömd SQL-förfrågan)',
441 -'cascadeprotected' => 'Den här sidan har skyddats från redigering eftersom den inkluderas på följande {{PLURAL:$1|sida|sidor}} som skrivskyddats med "kaskaderande skydd":',
 446+'cascadeprotected' => 'Den här sidan har skyddats från redigering eftersom den inkluderas på följande {{PLURAL:$1|sida|sidor}} som skrivskyddats med "kaskaderande skydd":
 447+$2',
442448 'namespaceprotected' => "Du har inte behörighet att redigera sidor i namrymden '''$1'''.",
 449+'customcssjsprotected' => 'Du har inte behörighet att redigera den här sidan eftersom den innehåller en annan användares personliga inställningar.',
 450+'ns-specialprotected' => 'Sidor i namnrymden {{ns:special}} kan inte redigeras.',
443451
444452 # Login and logout pages
445453 'logouttitle' => 'Användarutloggning',
@@ -452,7 +460,6 @@
453461 'yourdomainname' => 'Din domän',
454462 'externaldberror' => 'Antingen inträffade autentiseringsproblem med en extern databas, eller så får du inte uppdatera ditt externa konto.',
455463 'loginproblem' => '<b>Det uppstod problem vid inloggningen.</b><br />Pröva igen!',
456 -'alreadyloggedin' => '<strong>$1, du är redan inloggad!</strong><br />',
457464 'login' => 'Logga in',
458465 'loginprompt' => 'För att logga in måste tillåta cookies för att logga in på {{SITENAME}}.',
459466 'userlogin' => 'Skapa ett konto eller logga in',
@@ -491,6 +498,7 @@
492499 'nouserspecified' => 'Du måste ange ett användarnamn.',
493500 'wrongpassword' => 'Lösenordet du angav är felaktigt. Försök igen',
494501 'wrongpasswordempty' => 'Lösenordet som angavs var blankt. Var god försök igen.',
 502+'passwordtooshort' => 'Ditt lösenord är för kort. Det måste innehålla minst $1 tecken.',
495503 'mailmypassword' => 'Sänd mig ett nytt lösenord',
496504 'passwordremindertitle' => 'Nytt lösenord från {{SITENAME}}',
497505 'passwordremindertext' => 'Någon - förmodligen du - har från IP-numret $1 bett oss sända dig ett
@@ -516,6 +524,7 @@
517525 'invalidemailaddress' => 'Denna e-postadressen kan inte godtas då formatet verkar vara felaktigt. Skriv in en adress på korrekt format, eller töm fältet.',
518526 'accountcreated' => 'Användarkontot har skapats',
519527 'accountcreatedtext' => 'Användarkontot $1 har skapats.',
 528+'loginlanguagelabel' => 'Språk: $1',
520529
521530 # Password reset dialog
522531 'resetpass' => 'Välj nytt lösenord',
@@ -571,10 +580,11 @@
572581
573582 Blockeringen utfördes av $1 med motiveringen: ''$2''.
574583
575 -Blockeringen gäller till $6.<br />
576 -Blockeringen var avsedd för $7.
 584+* Blockeringen startade $8
 585+* Blockeringen gäller till $6.
 586+* Blockeringen var avsedd för $7.
577587
578 -Du kan kontakta $1 eller någon annan av [[{{MediaWiki:grouppage-sysop}}|administratörerna]] för att diskutera blockeringen. Om du är inloggad och har uppgivit en e-postadress i dina inställningar, så kan du använda funktionen 'skicka e-post till den här användaren'.
 588+Du kan kontakta $1 eller någon annan av [[{{MediaWiki:grouppage-sysop}}|administratörerna]] för att diskutera blockeringen. Om du är inloggad och har uppgivit en e-postadress i dina inställningar så kan du använda funktionen 'skicka e-post till den här användaren', såvida du inte blivit blockerad från funktionen.
579589
580590 Din IP-adress är $3 och blockerings-ID är #$5. Vänligen ange IP-adress eller blockerings-ID i alla förfrågningar som du gör i ärendet.",
581591 'autoblockedtext' => 'Din IP-adress har blockerats automatiskt eftersom den har använts av en annan användare som blockerats av $1.
@@ -582,13 +592,24 @@
583593
584594 :\'\'$2\'\'
585595
586 -Blockeringen upphävs: $6
 596+* Blockeringen startade $8
 597+* Blockeringen gäller till $6
587598
588599 Du kan kontakta $1 eller någon annan [[{{MediaWiki:grouppage-sysop}}|administratör]] för att diskutera blockeringen.
589600
590 -Observera att du inte kan använda dig av funktionen "skicka e-post till användare" om du inte har registrerat en giltig e-postadress i [[Special:Preferences|dina inställningar]].
 601+Observera att du inte kan använda dig av funktionen "skicka e-post till användare" om du inte har registrerat en giltig e-postadress i [[Special:Preferences|dina inställningar]] eller om du har blivit blockerad från att skicka e-post.
591602
592603 Blockeringens ID är $5. Vänligen ange blockerings-ID i alla förfrågningar som du gör i ärendet.',
 604+'blockedtext-concise' => '$7, som är ditt användarnamn eller din IP-adress, har blockerats av $1 med motiveringen "$2".
 605+Blockeringen gäller till $6. Du kan kontakta $1 eller någon annan administratör för att diskutera blockeringen.
 606+Om du har angivit en e-postadress i dina inställningar och inte har blockerats från att skicka epost till andra
 607+användare, så kan du använda funktionen "skicka e-post till användare". Din nuvarande IP-adress är $3 och
 608+blockerings-ID är #$5, om du har frågor om blockeringen är det bra om du uppger den informationen.',
 609+'autoblockedtext-concise' => 'Din IP-adress har nyligen använts av en användare som har blivit blockerad. Blockeringen
 610+utfördes av $1 med motiveringen "$2". Blockeringen gäller till $6. Du kan kontakta $1 eller någon annan administratör om
 611+du vill diskutera blockeringen. Om du har angivit en e-postadress i dina inställningar och inte har blockerats från att
 612+skicka epost till andra användare, så kan du använda funktionen "skicka e-post till användare". Din nuvarande
 613+IP-adress är $3 och blockerings-ID är #$5, om du har frågör om blockeringen är det bra om du uppger den informationen.',
593614 'blockedoriginalsource' => "Källkoden för '''$1''' visas nedan:",
594615 'blockededitsource' => "Texten för '''dina ändringar''' av '''$1''' visas nedanför:",
595616 'whitelistedittitle' => 'Redigering kräver inloggning',
@@ -633,7 +654,6 @@
634655 'token_suffix_mismatch' => '<strong>Din redigering har stoppats eftersom din klient har ändrat tecknen
635656 i redigeringens "edit token". Redigeringen stoppades för att förhindra att artikeltexten skadas.
636657 Detta händer ibland om du använder buggiga webbaserade anonyma proxytjänster.</strong>',
637 -'importing' => 'Importerar $1',
638658 'editing' => 'Redigerar $1',
639659 'editinguser' => 'Redigerar $1',
640660 'editingsection' => 'Redigerar $1 (avsnitt)',
@@ -668,6 +688,9 @@
669689 'edittools' => '<!-- Denna text kommer att visas nedanför redigeringsrutor och uppladdningsformulär. -->',
670690 'nocreatetitle' => 'Skapande av sidor begränsat',
671691 'nocreatetext' => 'Denna wiki har begränsat möjligheterna att skapa nya sidor. Du kan redigera existerande sidor, eller [[Special:Userlogin|logga in eller skapa ett användarkonto]].',
 692+'nocreate-loggedin' => 'Du har inte behörighet att skapa nya sidor på den här wikin.',
 693+'permissionserrors' => 'Behörighetsfel',
 694+'permissionserrorstext' => 'Du har inte behörighet att göra det du försöker göra, eftersom:',
672695 'recreate-deleted-warn' => "'''Varning: Den sida du skapar har tidigare raderats.'''
673696
674697 Du bör överväga om det är lämpligt att fortsätta redigera sidan.
@@ -791,6 +814,7 @@
792815 # Preferences page
793816 'preferences' => 'Inställningar',
794817 'mypreferences' => 'Mina inställningar',
 818+'prefs-edits' => 'Antal redigeringar:',
795819 'prefsnologin' => 'Du är inte inloggad',
796820 'prefsnologintext' => 'Du måste vara [[Special:Userlogin|inloggad]] för att kunna ändra i inställningar.',
797821 'prefsreset' => 'Inställningarna har återställts till ursprungsvärdena.',
@@ -818,8 +842,8 @@
819843 'prefs-personal' => 'Mitt konto',
820844 'prefs-rc' => 'Senaste ändringar',
821845 'prefs-watchlist' => 'Övervakningslistan',
822 -'prefs-watchlist-days' => 'Antal dagar som ska visas på övervakningslistan:',
823 -'prefs-watchlist-edits' => 'Antal redigeringar som visas i utökad övervakningslista:',
 846+'prefs-watchlist-days' => 'Maximalt antal dagar som visas på övervakningslistan:',
 847+'prefs-watchlist-edits' => 'Maximalt antal ändringar som visas i utökad övervakningslista:',
824848 'prefs-misc' => 'Diverse',
825849 'saveprefs' => 'Spara inställningar',
826850 'resetprefs' => 'Återställ ursprungliga inställningar',
@@ -849,18 +873,18 @@
850874 'files' => 'Filer',
851875
852876 # User rights
853 -'userrights-lookup-user' => 'Hantera användargrupper',
854 -'userrights-user-editname' => 'Skriv in ett användarnamn:',
855 -'editusergroup' => 'Ändra användargrupper',
856 -'userrights-editusergroup' => 'Redigera användargrupper',
857 -'saveusergroups' => 'Spara användargrupper',
858 -'userrights-groupsmember' => 'Medlem i:',
859 -'userrights-groupsavailable' => 'Tillgängliga grupper:',
860 -'userrights-groupshelp' => 'Markera de grupper, som du vill lägga till eller ta bort användare i. De grupper som du inte markerar, kommer inte att förändras. Du kan avmarkera en grupp med CTRL + vänsterklick.',
861 -'userrights-reason' => 'Anledning till ändringen:',
862 -'userrights-available-none' => 'Du kan inte ändra några grupptillhörigheter.',
863 -'userrights-available-add' => 'Du kan lägga till användare i $1.',
864 -'userrights-available-remove'=> 'Du kan ta bort användare från $1.',
 877+'userrights-lookup-user' => 'Hantera användargrupper',
 878+'userrights-user-editname' => 'Skriv in ett användarnamn:',
 879+'editusergroup' => 'Ändra användargrupper',
 880+'userrights-editusergroup' => 'Redigera användargrupper',
 881+'saveusergroups' => 'Spara användargrupper',
 882+'userrights-groupsmember' => 'Medlem i:',
 883+'userrights-groupsavailable' => 'Tillgängliga grupper:',
 884+'userrights-groupshelp' => 'Markera de grupper, som du vill lägga till eller ta bort användare i. De grupper som du inte markerar, kommer inte att förändras. Du kan avmarkera en grupp med CTRL + vänsterklick.',
 885+'userrights-reason' => 'Anledning till ändringen:',
 886+'userrights-available-none' => 'Du kan inte ändra några grupptillhörigheter.',
 887+'userrights-available-add' => 'Du kan lägga till användare i $1.',
 888+'userrights-available-remove' => 'Du kan ta bort användare från $1.',
865889
866890 # Groups
867891 'group' => 'Grupp:',
@@ -992,13 +1016,13 @@
9931017
9941018 'license' => 'Licens',
9951019 'nolicense' => 'Ingen angiven',
 1020+'license-nopreview' => '(Förhandsvisning är inte tillgänglig)',
9961021 'upload_source_url' => ' (en giltig URL som är allmänt åtkomlig)',
9971022 'upload_source_file' => ' (en fil på din dator)',
9981023
9991024 # Image list
10001025 'imagelist' => 'Bildlista',
10011026 'imagelisttext' => 'Nedan finns en lista med <strong>$1</strong> {{plural:$1|bild|bilder}} sorterad <strong>$2</strong>.',
1002 -'imagelistforuser' => 'Listan visar endast bilder som är uppladdade av $1.',
10031027 'getimagelist' => 'hämta bildlista',
10041028 'ilsubmit' => 'Sök',
10051029 'showlast' => 'Visa de senaste $1 bilderna sorterade $2.',
@@ -1008,14 +1032,17 @@
10091033 'imgdelete' => 'ta bort',
10101034 'imgdesc' => 'beskrivning',
10111035 'imgfile' => 'fil',
1012 -'imglegend' => 'Bildtext: (beskrivning) = visa/redigera bildtext.',
1013 -'imghistory' => 'Bildhistorik',
1014 -'revertimg' => 'återgå',
1015 -'deleteimg' => 'radera',
1016 -'deleteimgcompletely' => 'radera',
1017 -'imghistlegend' => 'Beskrivning: (nuvarande) = detta är den nuvarande bilden,
1018 -(ta bort) = ta bort den gamla version, (återgå) = återgå till en gammal version.
1019 -<br /><i>Klicka på ett datum för att se bilden som laddades upp den dagen</i>.',
 1036+'filehist' => 'Filhistorik',
 1037+'filehist-help' => 'Klicka på ett datum för att se hur filen såg ut vid den tidpunkten.',
 1038+'filehist-deleteall' => 'radera alla',
 1039+'filehist-deleteone' => 'radera version',
 1040+'filehist-revert' => 'återställ',
 1041+'filehist-current' => 'nuvarande',
 1042+'filehist-datetime' => 'Datum',
 1043+'filehist-user' => 'Användare',
 1044+'filehist-dimensions' => 'Dimensioner',
 1045+'filehist-filesize' => 'Filstorlek',
 1046+'filehist-comment' => 'Kommentar',
10201047 'imagelinks' => 'Bildlänkar',
10211048 'linkstoimage' => 'Följande sidor länkar till denna bild:',
10221049 'nolinkstoimage' => 'Inga sidor länkar till den här bilden.',
@@ -1032,6 +1059,16 @@
10331060 'imagelist_description' => 'Filbeskrivning',
10341061 'imagelist_search_for' => 'Sök efter bildnamn:',
10351062
 1063+# File reversion
 1064+'filerevert' => 'Återställ $1',
 1065+'filerevert-legend' => 'Återställ fil',
 1066+'filerevert-intro' => "Du återställer '''[[Media:$1|$1]]''' till [$4 versionen från $2 kl. $3].",
 1067+'filerevert-comment' => 'Kommentar:',
 1068+'filerevert-defaultcomment' => 'Återställer till versionen från $1 kl. $2.',
 1069+'filerevert-submit' => 'Återställ',
 1070+'filerevert-success' => "'''[[Media:$1|$1]]''' har återställts till [$4 versionen från $2 kl. $3].",
 1071+'filerevert-badversion' => 'Det finns ingen tidigare version av filen från den angivna tidpunkten.',
 1072+
10361073 # MIME search
10371074 'mimesearch' => 'MIME-sökning',
10381075 'mimesearch-summary' => 'På den här sidan kan du söka efter filer via dess MIME-typ. Input: contenttype/subtype, t.ex. <tt>image/jpeg</tt>.',
@@ -1050,7 +1087,7 @@
10511088 'unusedtemplateswlh' => 'andra länkar',
10521089
10531090 # Random redirect
1054 -'randomredirect' => 'Slumpvald omdirigering',
 1091+'randomredirect' => 'Slumpvald omdirigering',
10551092 'randomredirect-nopages' => 'Det finns inga omdirigeringar i den här namnrymden.',
10561093
10571094 # Statistics
@@ -1064,7 +1101,7 @@
10651102 Sedan denna wiki startades har sidor visats totalt <b>$3</b> {{PLURAL:$3|gång|gånger}}, och <b>$4</b> {{PLURAL:$4|sida|sidor}} har ändrats. Detta är i genomsnitt <b>$5</b> ändringar per sida, och <b>$6</b> sidvisningar per ändring.
10661103
10671104 [http://meta.wikimedia.org/wiki/Help:Job_queue Jobbkön]s längd är för tillfället '''$7'''.",
1068 -'userstatstext' => "Det finns '''$1''' {{PLURAL:$1|registrerad|registrerade}} användare. Av dem är '''$2''' (eller '''$4%''') $5.",
 1105+'userstatstext' => "Det finns '''$1''' {{PLURAL:$1|registrerad|registrerade}} [[Special:Listusers|användare]]. Av dem är '''$2''' (eller '''$4%''') $5.",
10691106 'statistics-mostpopular' => 'Mest besökta sidor',
10701107
10711108 'disambiguations' => 'Sidor som länkar till förgreningssidor',
@@ -1082,7 +1119,7 @@
10831120 'withoutinterwiki' => 'Sidor utan språklänkar',
10841121 'withoutinterwiki-header' => 'Följande sidor saknar länkar till andra språkversioner:',
10851122
1086 -'fewestrevisions' => 'Artiklar med minst antal ändringar',
 1123+'fewestrevisions' => 'Artiklar med minst antal ändringar',
10871124
10881125 # Miscellaneous special pages
10891126 'nbytes' => '$1 {{PLURAL:$1|byte|bytes}}',
@@ -1203,11 +1240,10 @@
12041241
12051242 # Watchlist
12061243 'watchlist' => 'Min övervakningslista',
1207 -'mywatchlist' => 'Min övervakningslista',
 1244+'mywatchlist' => 'Min övervakningslista',
12081245 'watchlistfor' => "(för '''$1''')",
12091246 'nowatchlist' => 'Du har inga sidor i din övervakningslista.',
12101247 'watchlistanontext' => 'Du måste $1 för att se eller redigera din övervakningslista.',
1211 -'watchlistcount' => "'''Du har $1 {{PLURAL:$1|post|poster}} på din övervakningslista, inklusive diskussionssidor.'''",
12121248 'watchnologin' => 'Du är inte inloggad',
12131249 'watchnologintext' => 'Du måste vara [[Special:Userlogin|inloggad]] för att kunna göra ändringar i din övervakningslista.',
12141250 'addedwatch' => 'Tillagd på övervakningslistan',
@@ -1243,17 +1279,17 @@
12441280 'watching' => 'Bevakar...',
12451281 'unwatching' => 'Avbevakar...',
12461282
1247 -'enotif_mailer' => '{{SITENAME}}s system för att få meddelanden om förändringar per e-post',
1248 -'enotif_reset' => 'Markera alla sidor som besökta',
1249 -'enotif_newpagetext' => 'Detta är en ny sida.',
 1283+'enotif_mailer' => '{{SITENAME}}s system för att få meddelanden om förändringar per e-post',
 1284+'enotif_reset' => 'Markera alla sidor som besökta',
 1285+'enotif_newpagetext' => 'Detta är en ny sida.',
12501286 'enotif_impersonal_salutation' => '{{SITENAME}}användare',
1251 -'changed' => 'ändrad',
1252 -'created' => 'skapad',
1253 -'enotif_subject' => '{{SITENAME}}-sidan $PAGETITLE har blivit $CHANGEDORCREATED av $PAGEEDITOR',
1254 -'enotif_lastvisited' => 'På $1 återfinner du alla ändringar sedan ditt senaste besök.',
1255 -'enotif_lastdiff' => 'Se denna ändring på $1',
1256 -'enotif_anon_editor' => 'anonym användare $1',
1257 -'enotif_body' => '$WATCHINGUSERNAME,
 1287+'changed' => 'ändrad',
 1288+'created' => 'skapad',
 1289+'enotif_subject' => '{{SITENAME}}-sidan $PAGETITLE har blivit $CHANGEDORCREATED av $PAGEEDITOR',
 1290+'enotif_lastvisited' => 'På $1 återfinner du alla ändringar sedan ditt senaste besök.',
 1291+'enotif_lastdiff' => 'Se denna ändring på $1',
 1292+'enotif_anon_editor' => 'anonym användare $1',
 1293+'enotif_body' => '$WATCHINGUSERNAME,
12581294
12591295 {{SITENAME}}-sidan $PAGETITLE har blivit $CHANGEDORCREATED $PAGEEDITDATE av $PAGEEDITOR; den nuvarande versionen hittar du på $PAGETITLE_URL.
12601296
@@ -1298,7 +1334,6 @@
12991335 'deletionlog' => 'raderingslogg',
13001336 'reverted' => 'Återgått till tidigare version',
13011337 'deletecomment' => 'Anledning till borttagning',
1302 -'imagereverted' => 'Återställningen av nyare artikelversion lyckades',
13031338 'rollback' => 'Rulla tillbaka ändringar',
13041339 'rollback_short' => 'Återställning',
13051340 'rollbacklink' => 'rulla tillbaka',
@@ -1314,7 +1349,7 @@
13151350 'protectedarticle' => 'skyddade [[$1]]',
13161351 'modifiedarticleprotection' => 'ändrade skyddsnivån för "[[$1]]"',
13171352 'unprotectedarticle' => 'tog bort skydd av $1',
1318 -'protectsub' => '(Skyddar "$1")',
 1353+'protectsub' => '(Skyddsinställningar för "$1")',
13191354 'confirmprotect' => 'Bekräfta skrivskydd av sida',
13201355 'protectcomment' => 'Anledning till skydd av sidan',
13211356 'protectexpiry' => 'Varaktighet',
@@ -1331,6 +1366,7 @@
13321367 Här kan du se gällande skyddsinställninger för sidan <strong>$1</strong>:',
13331368 'protect-cascadeon' => 'Den här sidan är skrivskyddad eftersom den inkluderas på sidor som skyddats "kaskaderande". Du kan ändra skyddet av den här sidan, men det påverkar inte det "kaskaderande skyddet". Följande "kaskadskyddade" {{PLURAL:$1|sida|sidor}} inkluderar den här sidan:',
13341369 'protect-default' => '(standard)',
 1370+'protect-fallback' => 'Behörigheten "$1"',
13351371 'protect-level-autoconfirmed' => 'Enbart registrerade användare',
13361372 'protect-level-sysop' => 'Enbart administratörer',
13371373 'protect-summary-cascade' => 'kaskaderande',
@@ -1352,37 +1388,43 @@
13531389 'restriction-level-all' => 'alla nivåer',
13541390
13551391 # Undelete
1356 -'undelete' => 'Återställ borttagna sidor',
1357 -'undeletepage' => 'Visa och återställ borttagna sidor',
1358 -'viewdeletedpage' => 'Visa raderade sidor',
1359 -'undeletepagetext' => 'Följande sidor har blivit borttagna, men finns fortfarande i ett arkiv och kan återställas. Arkivet kan ibland rensas på gamla versioner.',
1360 -'undeleteextrahelp' => "* För att återställa alla versioner, välj '''Återställ''' utan att kryssa i några rutor.
 1392+'undelete' => 'Återställ borttagna sidor',
 1393+'undeletepage' => 'Visa och återställ borttagna sidor',
 1394+'viewdeletedpage' => 'Visa raderade sidor',
 1395+'undeletepagetext' => 'Följande sidor har blivit borttagna, men finns fortfarande i ett arkiv och kan återställas. Arkivet kan ibland rensas på gamla versioner.',
 1396+'undeleteextrahelp' => "* För att återställa alla versioner, välj '''Återställ''' utan att kryssa i några rutor.
13611397 * För att återställa bara vissa versioner, kryssa i de kryssrutor som hör till de versioner som ska återställas och välj '''Återställ'''.
13621398 * '''Rensa''' tömmer kommentarfältet och kryssrutorna.",
1363 -'undeleterevisions' => '$1 {{PLURAL:$1|version|versioner}} arkiverade',
1364 -'undeletehistory' => 'Om du återställer sidan, kommer alla tidigare versioner att återfinnas i versionshistoriken. Om en ny sida med samma namn har skapats sedan sidan raderades, kommer den återskapade historiken automatiskt att återfinnas i den äldre historiken. Den nuvarande versionen kommer alltså inte att ersättas av de raderade och återskapade.',
1365 -'undeleterevdel' => 'Återställningen kan inte utföras om den resulterar i att den senaste versionen är delvis borttagen.
 1399+'undeleterevisions' => '$1 {{PLURAL:$1|version|versioner}} arkiverade',
 1400+'undeletehistory' => 'Om du återställer sidan, kommer alla tidigare versioner att återfinnas i versionshistoriken. Om en ny sida med samma namn har skapats sedan sidan raderades, kommer den återskapade historiken automatiskt att återfinnas i den äldre historiken. Den nuvarande versionen kommer alltså inte att ersättas av de raderade och återskapade.',
 1401+'undeleterevdel' => 'Återställningen kan inte utföras om den resulterar i att den senaste versionen är delvis borttagen.
13661402 I sådana fall måste du se till att den senaste raderade versionen inte är ikryssad, eller att den inte är dold.
13671403 Sidversioner som du inte har behörighet att se kommer inte att återställas.',
1368 -'undeletehistorynoadmin' => 'Den här artikeln har blivit raderad. Anledningen till detta anges i sammanfattningen nedan, tillsammans med uppgifter om de användare som redigerat sidan innan den raderades. Enbart administratörerna har tillgång till den raderade texten.',
1369 -'undelete-revision' => 'Raderad version av $1 från den $2',
1370 -'undeleterevision-missing' => 'Versionen finns inte eller är felaktig. Versionen kan ha återställts eller tagits bort från arkivet, du kan också ha följt en felaktig länk.',
1371 -'undeletebtn' => 'Återställ',
1372 -'undeletereset' => 'Rensa',
1373 -'undeletecomment' => 'Kommentar:',
1374 -'undeletedarticle' => 'återställde "$1"',
1375 -'undeletedrevisions' => '{{PLURAL:$1|en version återställd|$1 versioner återställda}}',
1376 -'undeletedrevisions-files' => '$1 {{PLURAL:$1|version|versioner}} och $2 {{PLURAL:$2|fil|filer}} återställda',
1377 -'undeletedfiles' => '$1 {{PLURAL:$1|fil återställd|filer återställda}}',
1378 -'cannotundelete' => 'Återställning misslyckades; kanske någon redan har återställt sidan.',
1379 -'undeletedpage' => "<big>'''$1 har återställts'''</big>
 1404+'undeletehistorynoadmin' => 'Den här artikeln har blivit raderad. Anledningen till detta anges i sammanfattningen nedan, tillsammans med uppgifter om de användare som redigerat sidan innan den raderades. Enbart administratörerna har tillgång till den raderade texten.',
 1405+'undelete-revision' => 'Raderad version av $1 från den $2 av $3.',
 1406+'undeleterevision-missing' => 'Versionen finns inte eller är felaktig. Versionen kan ha återställts eller tagits bort från arkivet, du kan också ha följt en felaktig länk.',
 1407+'undeletebtn' => 'Återställ',
 1408+'undeletereset' => 'Rensa',
 1409+'undeletecomment' => 'Kommentar:',
 1410+'undeletedarticle' => 'återställde "$1"',
 1411+'undeletedrevisions' => '{{PLURAL:$1|en version återställd|$1 versioner återställda}}',
 1412+'undeletedrevisions-files' => '$1 {{PLURAL:$1|version|versioner}} och $2 {{PLURAL:$2|fil|filer}} återställda',
 1413+'undeletedfiles' => '$1 {{PLURAL:$1|fil återställd|filer återställda}}',
 1414+'cannotundelete' => 'Återställning misslyckades; kanske någon redan har återställt sidan.',
 1415+'undeletedpage' => "<big>'''$1 har återställts'''</big>
13801416
13811417 I [[Special:Log/delete|borttagningsloggen]] kan du hitta information om nyligen borttagna och återställda sidor.",
1382 -'undelete-header' => 'Se [[Special:Log/delete|raderingsloggen]] för nyligen raderade sidor.',
1383 -'undelete-search-box' => 'Sök efter raderade sidor',
1384 -'undelete-search-prefix' => 'Sidor som börjar med:',
1385 -'undelete-search-submit' => 'Sök',
1386 -'undelete-no-results' => 'Inga sidor med sådan titel hittades i arkivet över raderade sidor.',
 1418+'undelete-header' => 'Se [[Special:Log/delete|raderingsloggen]] för nyligen raderade sidor.',
 1419+'undelete-search-box' => 'Sök efter raderade sidor',
 1420+'undelete-search-prefix' => 'Sidor som börjar med:',
 1421+'undelete-search-submit' => 'Sök',
 1422+'undelete-no-results' => 'Inga sidor med sådan titel hittades i arkivet över raderade sidor.',
 1423+'undelete-filename-mismatch' => 'Filversionen med tidsstämpeln $1 kan inte återställas: filnamnet stämmer inte.',
 1424+'undelete-bad-store-key' => 'Filversionen med tidsstämpeln $1 kan inte återställas: filen saknades före radering.',
 1425+'undelete-cleanup-error' => 'Fel vid radering av den oanvända arkivfilen "$1".',
 1426+'undelete-missing-filearchive' => 'Filen med arkiv-ID $1 kunde inte återställas eftersom den inte finns i databasen. Filen kanske redan har återställts.',
 1427+'undelete-error-short' => 'Fel vid filåterställning: $1',
 1428+'undelete-error-long' => 'Fel inträffade när vid återställning av filen:\n\n$1\n',
13871429
13881430 # Namespace form on various pages
13891431 'namespace' => 'Namnrymd:',
@@ -1413,34 +1455,27 @@
14141456 'sp-newimages-showfrom' => 'Visa nya bilder från och med $1',
14151457
14161458 # What links here
1417 -'whatlinkshere' => 'Sidor som länkar hit',
1418 -'notargettitle' => 'Inget mål',
1419 -'notargettext' => 'Du har inte angivit någon sida eller användare att utföra denna funktion på.',
1420 -'linklistsub' => '(Länklista)',
1421 -'linkshere' => 'Följande sidor länkar till [[:$1]]:',
1422 -'nolinkshere' => 'Inga sidor länkar till [[:$1]].',
1423 -'nolinkshere-ns' => "Inga sidor i den angivna namnrymden länkar till '''[[:$1]]'''.",
1424 -'isredirect' => 'transportsida',
1425 -'istemplate' => 'inkluderad som mall',
1426 -'whatlinkshere-prev' => 'förra $1',
1427 -'whatlinkshere-next' => 'nästa $1',
 1459+'whatlinkshere' => 'Sidor som länkar hit',
 1460+'notargettitle' => 'Inget mål',
 1461+'notargettext' => 'Du har inte angivit någon sida eller användare att utföra denna funktion på.',
 1462+'linklistsub' => '(Länklista)',
 1463+'linkshere' => 'Följande sidor länkar till [[:$1]]:',
 1464+'nolinkshere' => 'Inga sidor länkar till [[:$1]].',
 1465+'nolinkshere-ns' => "Inga sidor i den angivna namnrymden länkar till '''[[:$1]]'''.",
 1466+'isredirect' => 'transportsida',
 1467+'istemplate' => 'inkluderad som mall',
 1468+'whatlinkshere-prev' => 'förra $1',
 1469+'whatlinkshere-next' => 'nästa $1',
14281470 'whatlinkshere-links' => '← länkar',
14291471
14301472 # Block/unblock
1431 -'blockip' => 'Blockera IP-adress',
 1473+'blockip' => 'Blockera användare eller IP-adress',
14321474 'blockiptext' => 'Formuläret nedan används för att blockera specifika användarnamns eller IP-adressers möjlighet att redigera sidor. Detta bör göras endast för att förhindra vandalism, och enligt gällande [[{{MediaWiki:Policy-url}}|policy]]. Ange orsaken nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
14331475 'ipaddress' => 'IP-adress',
14341476 'ipadressorusername' => 'IP-adress eller användarnamn',
14351477 'ipbexpiry' => 'Varaktighet',
14361478 'ipbreason' => 'Anledning',
14371479 'ipbreasonotherlist' => 'Annan anledning',
1438 -
1439 -// These are examples only. They can be translated but should be adjusted via
1440 -// [[MediaWiki:ipbreason-list]] by the local community
1441 -// defines a block reason not part of a group
1442 -// * defines a block reason group in the drow down menu
1443 -// ** defines a block reason
1444 -// To disable this drop down menu enter '-' in [[MediaWiki:ipbreason-dropdown]].
14451480 'ipbreason-dropdown' => '
14461481 *Vanliga motiv till blockering
14471482 ** Infogar falsk information
@@ -1453,7 +1488,7 @@
14541489 'ipbcreateaccount' => 'Förhindra registrering av användarkonton',
14551490 'ipbemailban' => 'Hindra användaren från att skicka e-post',
14561491 'ipbenableautoblock' => 'Blockera automatiskt IP-adresser som användaren försöker redigera ifrån',
1457 -'ipbsubmit' => 'Blockera den här IP-adressen',
 1492+'ipbsubmit' => 'Blockera IP-adressen/användaren',
14581493 'ipbother' => 'Annan tidsperiod',
14591494 'ipboptions' => '2 timmar:2 hours,1 dag:1 day,3 dagar:3 days,1 vecka:1 week,2 veckor:2 weeks,1 månad:1 month,3 månader:3 months,6 månader:6 months,1 år:1 year,oändlig:infinite',
14601495 'ipbotheroption' => 'annan tidsperiod',
@@ -1469,16 +1504,18 @@
14701505 'ipb-unblock' => 'Ta bort blockering av en användare eller IP-adress',
14711506 'ipb-blocklist-addr' => 'Visa gällande blockeringar av $1',
14721507 'ipb-blocklist' => 'Visa gällande blockeringar',
1473 -'unblockip' => 'Ta bort blockering av IP-adress',
 1508+'unblockip' => 'Ta bort blockering av användare/IP-adress',
14741509 'unblockiptext' => 'Använd formuläret nedan för att ta bort blockeringen av en IP-adress.',
1475 -'ipusubmit' => 'Ta bort blockeringen av den här adressen',
 1510+'ipusubmit' => 'Ta bort blockeringen',
14761511 'unblocked' => 'Blockeringen av [[User:$1|$1]] har hävts',
14771512 'unblocked-id' => 'Blockeringen $1 har hävts',
1478 -'ipblocklist' => 'Lista över blockerade IP-adresser',
 1513+'ipblocklist' => 'Lista över blockerade användare',
 1514+'ipblocklist-legend' => 'Sök efter en blockerad användare',
 1515+'ipblocklist-username' => 'Användarnamn eller IP-adress',
14791516 'ipblocklist-submit' => 'Sök',
1480 -'blocklistline' => '$1: $2 blockerar $3, blockeringen upphör $4',
1481 -'infiniteblock' => 'evig',
1482 -'expiringblock' => 'förfaller $1',
 1517+'blocklistline' => '$1: $2 blockerar $3 $4',
 1518+'infiniteblock' => 'för evigt',
 1519+'expiringblock' => 'till $1',
14831520 'anononlyblock' => 'endast för oinloggade',
14841521 'noautoblockblock' => 'utan automatisk blockering',
14851522 'createaccountblock' => 'kontoregistrering blockerad',
@@ -1535,12 +1572,13 @@
15361573 *Du avmarkerar rutan nedan.",
15371574 'movearticle' => 'Flytta sida',
15381575 'movenologin' => 'Inte inloggad',
1539 -'movenologintext' => 'För att kunna flytta en sida, måste du måste vara registrerad som användare, och [[Special:Userlogin|inloggad]].',
 1576+'movenologintext' => 'För att flytta en sida måste du vara registrerad användare och [[Special:Userlogin|inloggad]].',
 1577+'movenotallowed' => 'Du har inte behörighet att flytta sidor på den här wikin.',
15401578 'newtitle' => 'Till det nya uppslagsordet',
15411579 'move-watch' => 'Bevaka denna sida',
15421580 'movepagebtn' => 'Flytta sidan',
15431581 'pagemovedsub' => 'Flyttningen lyckades',
1544 -'movepage-moved' => '<big>"$1" har flyttats till "$2"</big>',
 1582+'movepage-moved' => '<big>"$1" har flyttats till "$2"</big>', # The two titles are passed in plain text as $3 and $4 to allow additional goodies in the message.
15451583 'articleexists' => 'Antingen existerar redan en sida med det namnet, eller så har du valt ett namn som inte är tillåtet.
15461584 Välj något annat namn istället.',
15471585 'talkexists' => 'Sidan flyttades, men eftersom en annan diskussionssida redan fanns på destinationen kunde diskussionssidan inte flyttas med. Försök att manuellt sammanfoga de bägge diskusionssidornas innehåll till en sida.',
@@ -1573,6 +1611,7 @@
15741612 'export-submit' => 'Exportera',
15751613 'export-addcattext' => 'Lägg till sidor från kategori:',
15761614 'export-addcat' => 'Lägg till',
 1615+'export-download' => 'Ladda ner som fil',
15771616
15781617 # Namespace 8 related
15791618 'allmessages' => 'Systemmeddelanden',
@@ -1580,18 +1619,17 @@
15811620 'allmessagesdefault' => 'Standardtext',
15821621 'allmessagescurrent' => 'Nuvarande text',
15831622 'allmessagestext' => 'Detta är en lista över alla meddelanden i namnrymden MediaWiki',
1584 -'allmessagesnotsupportedUI' => "Språket <b>$1</b>, som du valt för gränssnittet, stöds inte av ''Special:Allmessages'' på denna webbplats.",
15851623 'allmessagesnotsupportedDB' => "Det finns inte stöd för ''Special:Allmessages'', eftersom '''\$wgUseDatabaseMessages''' är avstängd.",
15861624 'allmessagesfilter' => 'Filter för meddelandenamn:',
15871625 'allmessagesmodified' => 'Visa bara ändrade',
15881626
15891627 # Thumbnails
1590 -'thumbnail-more' => 'Förstora',
1591 -'missingimage' => '<b>Bild saknas</b><br /><i>$1</i>',
1592 -'filemissing' => 'Fil saknas',
1593 -'thumbnail_error' => 'Ett fel uppstod när minibilden skulle skapas: $1',
1594 -'djvu_page_error' => 'DjVu-sida utanför gränserna',
1595 -'djvu_no_xml' => 'Kan inte hämta DjVu-filens XML',
 1628+'thumbnail-more' => 'Förstora',
 1629+'missingimage' => '<b>Bild saknas</b><br /><i>$1</i>',
 1630+'filemissing' => 'Fil saknas',
 1631+'thumbnail_error' => 'Ett fel uppstod när minibilden skulle skapas: $1',
 1632+'djvu_page_error' => 'DjVu-sida utanför gränserna',
 1633+'djvu_no_xml' => 'Kan inte hämta DjVu-filens XML',
15961634 'thumbnail_invalid_params' => 'Ogiltiga parametrar för miniatyrbilden',
15971635 'thumbnail_dest_directory' => 'Kan inte skapa målkatalogen',
15981636
@@ -1756,7 +1794,13 @@
17571795 'patrol-log-diff' => 'version $1',
17581796
17591797 # Image deletion
1760 -'deletedrevision' => 'Raderade gammal sidversion $1.',
 1798+'deletedrevision' => 'Raderade gammal sidversion $1.',
 1799+'filedeleteerror-short' => 'Fel vid radering av fil: $1',
 1800+'filedeleteerror-long' => 'Fel inträffade vid raderingen av filen:\n\n$1\n',
 1801+'filedelete-missing' => 'Filen "$1" kan inte raderas eftersom den inte finns.',
 1802+'filedelete-old-unregistered' => 'Den angivna filversionen "$1" finns inte i databasen.',
 1803+'filedelete-current-unregistered' => 'Den angivna filen "$1" finns inte i databasen.',
 1804+'filedelete-archive-read-only' => 'Webbservern kan inte skriva till arkivkatalogen "$1".',
17611805
17621806 # Browsing diffs
17631807 'previousdiff' => '← Gå till föregående ändring',
@@ -1777,8 +1821,12 @@
17781822 'showhidebots' => '($1 robotar)',
17791823 'noimages' => 'Ingenting att se.',
17801824
1781 -'passwordtooshort' => 'Ditt lösenord är för kort. Det måste innehålla minst $1 tecken.',
 1825+# Bad image list
 1826+'bad_image_list' => 'Listan fungerar enligt följande:
17821827
 1828+Listan tar enbart hänsyn till rader som börjar med asterisk (*). Den första länken på en rad anger en otillåten bild.
 1829+Övriga länkar på en rad anger undantag, d.v.s sidor där bilden tillåts användas.',
 1830+
17831831 # Metadata
17841832 'metadata' => 'Metadata',
17851833 'metadata-help' => 'Det här filen innehåller extrainformation som troligen lades till när bilden togs av en digitalkamera eller när det digitaliserades av en scanner. Om filen har modifierats kan det hända att vissa detaljer inte överensstämmer med den modifierade bilden.',
@@ -2104,15 +2152,12 @@
21052153 $1',
21062154 'confirm_purge_button' => 'OK',
21072155
2108 -'youhavenewmessagesmulti' => 'Du har nya meddelanden på $1',
2109 -
 2156+# AJAX search
21102157 'searchcontaining' => "Leta efter artiklar som innehåller ''$1''.",
21112158 'searchnamed' => "Leta efter artiklar som heter ''$1''.",
21122159 'articletitles' => "Artiklar som börjar med ''$1''",
21132160 'hideresults' => 'Göm resultat',
21142161
2115 -'loginlanguagelabel' => 'Språk: $1',
2116 -
21172162 # Multipage image navigation
21182163 'imgmultipageprev' => '&larr; föregående sida',
21192164 'imgmultipagenext' => 'nästa sida &rarr;',
@@ -2134,7 +2179,7 @@
21352180 # Auto-summaries
21362181 'autosumm-blank' => 'Tar bort sidans innehåll',
21372182 'autosumm-replace' => "Ersätter sidans innehåll med '$1'",
2138 -'autoredircomment' => 'Omdirigerar till [[$1]]', # This should be changed to the new naming convention, but existed beforehand
 2183+'autoredircomment' => 'Omdirigerar till [[$1]]',
21392184 'autosumm-new' => 'Ny sida: $1',
21402185
21412186 # Size units
@@ -2190,6 +2235,3 @@
21912236
21922237 );
21932238
2194 -
2195 -
2196 -
Index: branches/liquidthreads/languages/messages/MessagesDe.php
@@ -904,7 +904,7 @@
905905 'notextmatches' => 'Keine Übereinstimmungen mit Inhalten',
906906 'prevn' => 'vorherige $1',
907907 'nextn' => 'nächste $1',
908 -'viewprevnext' => 'Zeige ($1) ($2) ($3).',
 908+'viewprevnext' => 'Zeige ($1) ($2) ($3)',
909909 'showingresults' => "Hier {{PLURAL:$1|ist '''1''' Ergebnis|sind '''$1''' Ergebnisse}}, beginnend mit Nummer '''$2'''.",
910910 'showingresultsnum' => "Hier {{PLURAL:$3|ist '''1''' Ergebnis|sind '''$1''' Ergebnisse}}, beginnend mit Nummer '''$2'''.",
911911 'nonefound' => '<strong>Hinweis</strong>: Erfolglose Suchanfragen werden häufig dadurch verursacht, dass mehr als ein Suchbegriff angegeben wurde. Nur Seiten die alle Suchbegriffe enthalten werden hier angezeigt. Versuche in diesem Fall die Anzahl der Suchbegriffe zu verringern.',
@@ -917,6 +917,7 @@
918918 'preferences' => 'Einstellungen',
919919 'preferences-summary' => 'Auf dieser Spezialseite kannst du deine Zugangsdaten ändern und bestimmte Teile der Oberfläche individuell anpassen ',
920920 'mypreferences' => 'Einstellungen',
 921+'prefs-edits' => 'Anzahl Bearbeitungen:',
921922 'prefsnologin' => 'Nicht angemeldet',
922923 'prefsnologintext' => 'Du musst [[Special:Userlogin|angemeldet]] sein, um deine Einstellungen ändern zu können.',
923924 'prefsreset' => 'Die Eingaben wurden verworfen, es erfolgte keine Speicherung.',
@@ -1104,6 +1105,7 @@
11051106 'uploadwarning' => 'Warnung',
11061107 'savefile' => 'Datei speichern',
11071108 'uploadedimage' => 'hat „[[$1]]“ hochgeladen',
 1109+'overwroteimage' => 'hat eine neue Version von „[[$1]]“ hochgeladen',
11081110 'uploaddisabled' => 'Entschuldigung, das Hochladen ist deaktiviert.',
11091111 'uploaddisabledtext' => 'Das Hochladen von Dateien ist in {{SITENAME}} deaktiviert.',
11101112 'uploadscripted' => 'Diese Datei enthält HTML- oder Scriptcode, der irrtümlich von einem Webbrowser ausgeführt werden könnte.',
@@ -1511,6 +1513,7 @@
15121514 'protect-locked-access' => 'Ihr Benutzerkonto verfügt nicht über die notwendigen Rechte zur Änderung des Seitenschutzes. Hier sind die aktuellen Seitenschutz-Einstellungen für die Seite <strong>„$1“:</strong>',
15131515 'protect-cascadeon' => 'Diese Seite ist gegenwärtig Teil einer Kaskadensperre. Sie ist in die {{PLURAL:$1|folgende Seite|folgenden Seiten}} eingebunden, welche durch die Kaskadensperroption geschützt {{PLURAL:$1|ist|sind}}. Der Seitenschutzstatus kann für diese Seite geändert werden, dies hat jedoch keinen Einfluss auf die Kaskadensperre:',
15141516 'protect-default' => 'Alle (Standard)',
 1517+'protect-fallback' => 'Es wird die „$1“-Berechtigung benötigt.',
15151518 'protect-level-autoconfirmed' => 'Sperrung für nicht registrierte Benutzer',
15161519 'protect-level-sysop' => 'Nur Administratoren',
15171520 'protect-summary-cascade' => 'kaskadierend',
@@ -1980,13 +1983,15 @@
19811984 'mediawarning' => "'''Warnung:''' Diese Art von Datei kann böswilligen Programmcode enthalten. Durch das Herunterladen und Öffnen der Datei kann dein Computer beschädigt werden.<hr />",
19821985 'imagemaxsize' => 'Maximale Bildgröße auf Bildbeschreibungsseiten:',
19831986 'thumbsize' => 'Standardgröße der Vorschaubilder (thumbnails):',
 1987+'widthheightpage' => '$1×$2, $3 Seiten',
19841988 'file-info' => '(Dateigröße: $1, MIME-Typ: $2)',
19851989 'file-info-size' => '($1 × $2 Pixel, Dateigröße: $3, MIME-Typ: $4)',
19861990 'file-nohires' => '<small>Keine höhere Auflösung vorhanden.</small>',
1987 -'file-svg' => '<small>Dies ist eine verlustfrei skalierbare Vektorgrafik. Basisgröße: $1 × $2 Pixel.</small>',
 1991+'svg-long-desc' => '(SVG-Datei, Basisgröße: $1 × $2 Pixel, Dateigröße: $3)',
19881992 'show-big-image' => 'Version in höherer Auflösung',
19891993 'show-big-image-thumb' => '<small>Größe der Voransicht: $1 × $2 Pixel</small>',
19901994
 1995+# Special:Newimages
19911996 'newimages' => 'Neue Dateien',
19921997 'newimages-summary' => 'Diese Spezialseite zeigt die zuletzt hochgeladenen Bilder und Dateien an.',
19931998 'showhidebots' => '(Bots $1)',
Index: branches/liquidthreads/languages/messages/MessagesZh_cn.php
@@ -300,23 +300,24 @@
301301 'versionrequired' => '需要MediaWiki $1 版',
302302 'versionrequiredtext' => '需要版本$1的 MediaWiki 才能使用此页。参见[[Special:Version|版本頁]]。',
303303
304 -'ok' => '确定',
305 -'pagetitle' => '$1 - {{SITENAME}}',
306 -'retrievedfrom' => '取自"$1"',
307 -'youhavenewmessages' => '您有$1($2)。',
308 -'newmessageslink' => '新信息',
309 -'newmessagesdifflink' => '上次更改',
310 -'editsection' => '编辑',
311 -'editold' => '编辑',
312 -'editsectionhint' => '编辑段落: $1',
313 -'toc' => '目录',
314 -'showtoc' => '显示',
315 -'hidetoc' => '隐藏',
316 -'thisisdeleted' => '查看或恢复$1?',
317 -'viewdeleted' => '查看$1?',
318 -'restorelink' => '$1个被删除的版本',
319 -'feedlinks' => '订阅:',
320 -'feed-invalid' => '无效的订阅类型。',
 304+'ok' => '确定',
 305+'pagetitle' => '$1 - {{SITENAME}}',
 306+'retrievedfrom' => '取自"$1"',
 307+'youhavenewmessages' => '您有$1($2)。',
 308+'newmessageslink' => '新信息',
 309+'newmessagesdifflink' => '上次更改',
 310+'youhavenewmessagesmulti' => '您在$1上有新消息',
 311+'editsection' => '编辑',
 312+'editold' => '编辑',
 313+'editsectionhint' => '编辑段落: $1',
 314+'toc' => '目录',
 315+'showtoc' => '显示',
 316+'hidetoc' => '隐藏',
 317+'thisisdeleted' => '查看或恢复$1?',
 318+'viewdeleted' => '查看$1?',
 319+'restorelink' => '$1个被删除的版本',
 320+'feedlinks' => '订阅:',
 321+'feed-invalid' => '无效的订阅类型。',
321322
322323 # Short words for each namespace, by default used in the 'article' tab in monobook
323324 'nstab-main' => '文章',
@@ -395,8 +396,8 @@
396397 'protectedinterface' => '该页提供了软件的界面文本,它已被锁定以防止随意的修改。',
397398 'editinginterface' => "'''警告:''' 您正在编辑的页面是用于提供软件的界面文本。改变此页将影响其他用户的界面外观。",
398399 'sqlhidden' => '(SQL查询已隐藏)',
399 -'cascadeprotected' => "这个页面已经被保护,因为这个页面被以下已标注\"联锁保护\"的{{PLURAL:$1|一个|多个}}被保护页面包含:
400 -$2",
 400+'cascadeprotected' => '这个页面已经被保护,因为这个页面被以下已标注"联锁保护"的{{PLURAL:$1|一个|多个}}被保护页面包含:
 401+$2',
401402 'namespaceprotected' => "您并没有权限去编辑在'''$1'''名字空间内的页面。",
402403 'customcssjsprotected' => '您並無權限去編輯這個頁面,因為它包含了另一位用戶的個人設定。',
403404 'ns-specialprotected' => '在特殊名字空間中的頁面是不可以編輯的。',
@@ -417,7 +418,6 @@
418419 'yourdomainname' => '您的域名:',
419420 'externaldberror' => '这可能是由于外部验证数据库错误或您被禁止更新您的外部账号。',
420421 'loginproblem' => '<b>登录有问题。</b><br />请再试一次!',
421 -'alreadyloggedin' => '<strong>用户$1,您已经登录了!</strong><br />',
422422 'login' => '登录',
423423 'loginprompt' => '您必须启用 Cookies 才能登录{{SITENAME}}。',
424424 'userlogin' => '登录/创建账户',
@@ -474,6 +474,7 @@
475475 'invalidemailaddress' => '邮箱地址格式不正确,请输入正确的邮箱地址或清空该输入框。',
476476 'accountcreated' => '已建立账户',
477477 'accountcreatedtext' => '$1的账户已经被创建。',
 478+'loginlanguagelabel' => '语言: $1',
478479
479480 # Password reset dialog
480481 'resetpass' => '重设账户密码',
@@ -592,7 +593,6 @@
593594 <strong>如果这是一次合法的编辑,请重新进行尝试。如果还不行,请退出并重新登录。</strong>",
594595 'token_suffix_mismatch' => '<strong>由于您用户端中的编辑令牌毁损了一些标点符号字元,为防止编辑的文字损坏,您的编辑已经被拒绝。
595596 这种情况通常出现于使用含有很多臭虫、以网络为主的匿名代理服务的时候。</strong>',
596 -'importing' => '正在导入$1',
597597 'editing' => '正在编辑$1',
598598 'editinguser' => '正在编辑用户<b>$1</b>',
599599 'editingsection' => '正在编辑$1 (段落)',
@@ -756,7 +756,7 @@
757757 'notextmatches' => '没有文章内容匹配',
758758 'prevn' => '前$1个',
759759 'nextn' => '后$1个',
760 -'viewprevnext' => '查看 ($1) ($2) ($3)。',
 760+'viewprevnext' => '查看 ($1) ($2) ($3)',
761761 'showingresults' => '下面显示从第<b>$2</b>条开始的<b>$1</b>条结果:',
762762 'showingresultsnum' => '下面显示从第<b>$2</b>条开始的<b>$3</b>条结果:',
763763 'nonefound' => '<strong>注意:</strong>失败的搜索往往是由于试图搜索诸如“的”或“和”之类的常见字所引起。',
@@ -769,6 +769,7 @@
770770 # Preferences page
771771 'preferences' => '参数设置',
772772 'mypreferences' => '我的参数设置',
 773+'prefs-edits' => '编辑数量:',
773774 'prefsnologin' => '尚未登录',
774775 'prefsnologintext' => '您必须先[[Special:Userlogin|登录]]才能设置个人参数。',
775776 'prefsreset' => '参数已被重新设置。',
@@ -979,7 +980,6 @@
980981 # Image list
981982 'imagelist' => '文件列表',
982983 'imagelisttext' => '以下是按$2排列的$1个文件列表。',
983 -'imagelistforuser' => '此处仅仅显示由$1上传的图像。',
984984 'getimagelist' => '正在获取文件列表',
985985 'ilsubmit' => '搜索',
986986 'showlast' => '显示按$2排列的最后$1个文件。',
@@ -1205,7 +1205,6 @@
12061206 'watchlistfor' => "('''$1'''的监视列表')",
12071207 'nowatchlist' => '您的监视列表为空。',
12081208 'watchlistanontext' => '请$1以查看或编辑您的监视列表。',
1209 -'watchlistcount' => "'''您的监视列表有$1项,其中包括讨论页。'''",
12101209 'watchnologin' => '未登录',
12111210 'watchnologintext' => '您必须先[[Special:Userlogin|登录]]才能更改您的监视列表。',
12121211 'addedwatch' => '已添加至监视列表',
@@ -1335,6 +1334,7 @@
13361335 以下是<strong>$1</strong>现时的保护级别:',
13371336 'protect-cascadeon' => '以下的{{PLURAL:$1|一个|多个}}页面包含 本页面的同时,启动了连锁保护,因此本页面目前也被保护,未能编辑。您可以设置本页面的保护级别,但这并不会对连锁保护有所影响。',
13381337 'protect-default' => '(默认)',
 1338+'protect-fallback' => '需要"$1"的许可',
13391339 'protect-level-autoconfirmed' => '禁止未注册用户',
13401340 'protect-level-sysop' => '仅操作员',
13411341 'protect-summary-cascade' => '联锁',
@@ -1368,7 +1368,7 @@
13691369 被恢复的版本将会称为较新的历史,而新页面的当前版本将无法被自动复原。',
13701370 'undeleterevdel' => '如果把最新修订部份删除,反删除便无法进行。如果遇到这种情况,您必须反选或反隐藏最新已删除的修订。对于您没有权限去查看的修订是无法恢复的。',
13711371 'undeletehistorynoadmin' => '这个文章已被删除。删除原因显示在下方编辑摘要中,被删除前的所有修订文本连同删除前贡献用户的细节信息只对管理员可见。',
1372 -'undelete-revision' => '删除$1时在$2的修订版本',
 1372+'undelete-revision' => '删除$1时由$3(在$2)所编写的修订版本:',
13731373 'undeleterevision-missing' => '无效或丢失的修订版本。您可能使用了错误的链接,或者此修订版本已经被从存档中恢复或移除。',
13741374 'undeletebtn' => '恢复',
13751375 'undeletereset' => '重设',
@@ -2170,15 +2170,12 @@
21712171 'confirm_purge' => '要清除此页面的缓存吗?\n\n$1',
21722172 'confirm_purge_button' => '确定',
21732173
2174 -'youhavenewmessagesmulti' => '您在$1上有新消息',
2175 -
 2174+# AJAX search
21762175 'searchcontaining' => "搜索包含''$1''的文章。",
21772176 'searchnamed' => "搜索名为''$1''的文章。",
21782177 'articletitles' => '文章以"$1"开头',
21792178 'hideresults' => '隐藏结果',
21802179
2181 -'loginlanguagelabel' => '语言: $1',
2182 -
21832180 # Multipage image navigation
21842181 'imgmultipageprev' => '← 上一页',
21852182 'imgmultipagenext' => '下一页 →',
Index: branches/liquidthreads/languages/messages/MessagesZh_yue.php
@@ -359,23 +359,24 @@
360360 'versionrequired' => '係需要用 $1 版嘅 MediaWiki',
361361 'versionrequiredtext' => '要用呢一頁,係需要用MediaWiki版本 $1 。睇睇[[Special:Version|版本頁]]。',
362362
363 -'ok' => 'OK',
364 -'pagetitle' => '$1 - {{SITENAME}}',
365 -'retrievedfrom' => '由 "$1" 接收',
366 -'youhavenewmessages' => '你有$1($2)。',
367 -'newmessageslink' => '新信息',
368 -'newmessagesdifflink' => '上次更改',
369 -'editsection' => '編輯',
370 -'editold' => '編輯',
371 -'editsectionhint' => '編輯小節: $1',
372 -'toc' => '目錄',
373 -'showtoc' => '展開',
374 -'hidetoc' => '收埋',
375 -'thisisdeleted' => '睇下定係還原 $1 ?',
376 -'viewdeleted' => '去睇$1?',
377 -'restorelink' => '$1 個已刪除嘅編輯',
378 -'feedlinks' => 'Feed:',
379 -'feed-invalid' => '唔正確嘅 feed 類型。',
 363+'ok' => 'OK',
 364+'pagetitle' => '$1 - {{SITENAME}}',
 365+'retrievedfrom' => '由 "$1" 接收',
 366+'youhavenewmessages' => '你有$1($2)。',
 367+'newmessageslink' => '新信息',
 368+'newmessagesdifflink' => '上次更改',
 369+'youhavenewmessagesmulti' => '你響 $1 有一個新信息',
 370+'editsection' => '編輯',
 371+'editold' => '編輯',
 372+'editsectionhint' => '編輯小節: $1',
 373+'toc' => '目錄',
 374+'showtoc' => '展開',
 375+'hidetoc' => '收埋',
 376+'thisisdeleted' => '睇下定係還原 $1 ?',
 377+'viewdeleted' => '去睇$1?',
 378+'restorelink' => '$1 個已刪除嘅編輯',
 379+'feedlinks' => 'Feed:',
 380+'feed-invalid' => '唔正確嘅 feed 類型。',
380381
381382 # Short words for each namespace, by default used in the 'article' tab in monobook
382383 'nstab-main' => '文章',
@@ -475,7 +476,6 @@
476477 'yourdomainname' => '你嘅網域:',
477478 'externaldberror' => '外部驗證資料庫出錯,或者唔允許你更新你嘅外部帳戶。',
478479 'loginproblem' => '<b>你嘅登入手續出咗問題。</b><br />唔該再試吓登入。',
479 -'alreadyloggedin' => '<strong>用戶$1,你已經登入咗喇喎!</strong><br />',
480480 'login' => '登入',
481481 'loginprompt' => '你一定要開咗 cookies 先登入到{{SITENAME}}。',
482482 'userlogin' => '登入/開新戶口',
@@ -541,6 +541,7 @@
542542 唔該輸入一個啱格式嘅地址,或清咗嗰個空格。',
543543 'accountcreated' => '戶口已經建立咗',
544544 'accountcreatedtext' => '$1嘅戶口起好咗。',
 545+'loginlanguagelabel' => '語言:$1',
545546
546547 # Password reset dialog
547548 'resetpass' => '重設戶口密碼',
@@ -665,7 +666,6 @@
666667 <strong>如果呢個係正當嘅編輯嘗試,請再試過。如果重係唔得嘅話,請先登出然後再登入。</strong>",
667668 'token_suffix_mismatch' => '<strong>因為你嘅用戶端度嘅編輯幣整壞咗一啲標點符號字元,你嘅編輯已經拒絕咗。個編輯已經拒絕,以防止文章嘅文字損毀。
668669 當你響度用緊一啲好多臭蟲,以網絡為主嘅匿名代理服務。</strong>',
669 -'importing' => '而家喺度滙入$1',
670670 'editing' => '而家喺度編輯$1',
671671 'editinguser' => '而家喺度編輯用戶<b>$1</b>',
672672 'editingsection' => '而家喺度編輯$1 (小節)',
@@ -833,7 +833,7 @@
834834 'notextmatches' => '冇頁面文字符合',
835835 'prevn' => '前$1',
836836 'nextn' => '後$1',
837 -'viewprevnext' => '去睇 ($1) ($2) ($3)。',
 837+'viewprevnext' => '去睇 ($1) ($2) ($3)',
838838 'showingresults' => '自#<b>$2</b>起顯示最多<b>$1</b>個結果。',
839839 'showingresultsnum' => '自#<b>$2</b>起顯示<b>$3</b>個結果。',
840840 'nonefound' => "'''注意''':搵嘢結果為空通常係因為你搵嘅係\"have\"、
@@ -847,6 +847,7 @@
848848 # Preferences page
849849 'preferences' => '喜好設定',
850850 'mypreferences' => '我嘅喜好設定',
 851+'prefs-edits' => '編輯數:',
851852 'prefsnologin' => '重未登入',
852853 'prefsnologintext' => '你一定要去[[Special:Userlogin|登入]]設定好用戶喜好值先。',
853854 'prefsreset' => '喜好設定已經從儲存空間中重設。',
@@ -1054,7 +1055,6 @@
10551056 # Image list
10561057 'imagelist' => '檔案清單',
10571058 'imagelisttext' => "以下係'''$1'''個檔案'''$2'''排序嘅清單。",
1058 -'imagelistforuser' => '只顯示$1上載嘅檔案。',
10591059 'getimagelist' => '獲取檔案清單中',
10601060 'ilsubmit' => '搵嘢',
10611061 'showlast' => '顯示$2排序嘅最後$1個檔案。',
@@ -1283,7 +1283,6 @@
12841284 'watchlistfor' => "(用戶「'''$1'''」嘅監視清單)",
12851285 'nowatchlist' => '你嘅監視清單度並冇任何項目。',
12861286 'watchlistanontext' => '請先$1去睇或者改響你監視清單度嘅項目。',
1287 -'watchlistcount' => "'''你有 $1 個項目喺你嘅監視清單度,包括埋對話頁。'''",
12881287 'watchnologin' => '未登入',
12891288 'watchnologintext' => '你必須先[[Special:Userlogin|登入]]至可以更改你嘅監視清單。',
12901289 'addedwatch' => '加到監視清單度',
@@ -1396,7 +1395,7 @@
13971396 'protectedarticle' => '已經保護 "[[$1]]"',
13981397 'modifiedarticleprotection' => '已經改咗 "[[$1]]" 嘅保護等級',
13991398 'unprotectedarticle' => '已經唔再保護 "[[$1]]"',
1400 -'protectsub' => '(保護緊「$1」)',
 1399+'protectsub' => '(設定緊「$1」嘅保護等級)',
14011400 'confirmprotect' => '確認保護',
14021401 'protectcomment' => '註解:',
14031402 'protectexpiry' => '到期:',
@@ -1413,6 +1412,7 @@
14141413 呢個係<strong>$1</strong>版嘅現時設定:',
14151414 'protect-cascadeon' => '呢一版現時正響度保護緊,因為佢係響以下嘅{{PLURAL:$1|一|幾}}頁度包含咗,而當中又開咗連串保護。你可以更改呢一版嘅保護等級,但係呢個修改係唔會影響到嗰個連串保護。',
14161415 'protect-default' => '(預設)',
 1416+'protect-fallback' => '需要"$1"嘅許可',
14171417 'protect-level-autoconfirmed' => '限制未註冊嘅用戶',
14181418 'protect-level-sysop' => '只限操作員',
14191419 'protect-summary-cascade' => '連串保護',
@@ -1449,7 +1449,7 @@
14501450 'undeletehistorynoadmin' => '呢篇文已經刪咗。刪除嘅原因喺下面嘅摘要度,
14511451 連同重有刪除之前編輯過呢個頁面嘅用戶嘅詳細資料。
14521452 所刪除嘅版本嘅實際內容得管理員可以睇到。',
1453 -'undelete-revision' => '已經刪除咗由$2嘅修訂$1:',
 1453+'undelete-revision' => '已經刪除咗$1嗰陣(響$2)由$3所寫嘅修訂:',
14541454 'undeleterevision-missing' => '唔正確或者遺失咗修訂。你可能有一個壞連結,
14551455 或者嗰個修訂已經響存檔度恢復咗或者刪除咗。',
14561456 'undeletebtn' => '恢復',
@@ -2273,15 +2273,12 @@
22742274 $1',
22752275 'confirm_purge_button' => '肯定',
22762276
2277 -'youhavenewmessagesmulti' => '你響 $1 有一個新信息',
2278 -
 2277+# AJAX search
22792278 'searchcontaining' => "搵含有''$1''嘅文章。",
22802279 'searchnamed' => "搵個名係''$1''嘅文章。",
22812280 'articletitles' => "以''$1''開頭嘅文章",
22822281 'hideresults' => '收埋結果',
22832282
2284 -'loginlanguagelabel' => '語言:$1',
2285 -
22862283 # Multipage image navigation
22872284 'imgmultipageprev' => '← 上一版',
22882285 'imgmultipagenext' => '下一版 →',
Index: branches/liquidthreads/languages/messages/MessagesEn.php
@@ -213,8 +213,10 @@
214214
215215 /**
216216 * Magic words
217 - * Customisable syntax for wikitext and elsewhere
 217+ * Customisable syntax for wikitext and elsewhere.
218218 *
 219+ * IDs must be valid identifiers, they can't contain hyphens.
 220+ *
219221 * Note to translators:
220222 * Please include the English words as synonyms. This allows people
221223 * from other wikis to contribute more easily.
@@ -229,7 +231,6 @@
230232 'forcetoc' => array( 0, '__FORCETOC__' ),
231233 'toc' => array( 0, '__TOC__' ),
232234 'noeditsection' => array( 0, '__NOEDITSECTION__' ),
233 - 'start' => array( 0, '__START__' ),
234235 'currentmonth' => array( 1, 'CURRENTMONTH' ),
235236 'currentmonthname' => array( 1, 'CURRENTMONTHNAME' ),
236237 'currentmonthnamegen' => array( 1, 'CURRENTMONTHNAMEGEN' ),
@@ -292,10 +293,10 @@
293294 'img_sub' => array( 1, 'sub' ),
294295 'img_super' => array( 1, 'super', 'sup' ),
295296 'img_top' => array( 1, 'top' ),
296 - 'img_text-top' => array( 1, 'text-top' ),
 297+ 'img_text_top' => array( 1, 'text-top' ),
297298 'img_middle' => array( 1, 'middle' ),
298299 'img_bottom' => array( 1, 'bottom' ),
299 - 'img_text-bottom' => array( 1, 'text-bottom' ),
 300+ 'img_text_bottom' => array( 1, 'text-bottom' ),
300301 'int' => array( 0, 'INT:' ),
301302 'sitename' => array( 1, 'SITENAME' ),
302303 'ns' => array( 0, 'NS:' ),
@@ -1211,7 +1212,7 @@
12121213 'notextmatches' => 'No page text matches',
12131214 'prevn' => 'previous $1',
12141215 'nextn' => 'next $1',
1215 -'viewprevnext' => 'View ($1) ($2) ($3).',
 1216+'viewprevnext' => 'View ($1) ($2) ($3)',
12161217 'showingresults' => "Showing below up to {{PLURAL:$1|'''1''' result|'''$1''' results}} starting with #'''$2'''.",
12171218 'showingresultsnum' => "Showing below {{PLURAL:$3|'''1''' result|'''$3''' results}} starting with #'''$2'''.",
12181219 'nonefound' => "'''Note''': Unsuccessful searches are
@@ -1241,6 +1242,7 @@
12421243 'preferences' => 'Preferences',
12431244 'preferences-summary' => '', # only translate this message to other languages if you have to change it
12441245 'mypreferences' => 'My preferences',
 1246+'prefs-edits' => 'Number of edits:',
12451247 'prefsnologin' => 'Not logged in',
12461248 'prefsnologintext' => 'You must be [[Special:Userlogin|logged in]] to set user preferences.',
12471249 'prefsreset' => 'Preferences have been reset from storage.',
@@ -1422,6 +1424,7 @@
14231425 'uploadwarning' => 'Upload warning',
14241426 'savefile' => 'Save file',
14251427 'uploadedimage' => 'uploaded "[[$1]]"',
 1428+'overwroteimage' => 'uploaded a new version of "[[$1]]"',
14261429 'uploaddisabled' => 'Uploads disabled',
14271430 'uploaddisabledtext' => 'File uploads are disabled on this wiki.',
14281431 'uploadscripted' => 'This file contains HTML or script code that may be erroneously be interpreted by a web browser.',
@@ -2426,18 +2429,26 @@
24272430 'imagemaxsize' => 'Limit images on image description pages to:',
24282431 'thumbsize' => 'Thumbnail size:',
24292432 'widthheight' => '$1×$2', # only translate this message to other languages if you have to change it
 2433+'widthheightpage' => '$1×$2, $3 pages',
24302434 'file-info' => '(file size: $1, MIME type: $2)',
24312435 'file-info-size' => '($1 × $2 pixel, file size: $3, MIME type: $4)',
24322436 'file-nohires' => '<small>No higher resolution available.</small>',
2433 -'file-svg' => '<small>This is a lossless scalable vector image. Base size: $1 × $2 pixels.</small>',
 2437+'svg-long-desc' => '(SVG file, nominally $1 × $2 pixels, file size: $3)',
24342438 'show-big-image' => 'Full resolution',
24352439 'show-big-image-thumb' => '<small>Size of this preview: $1 × $2 pixels</small>',
24362440
 2441+# Special:Newimages
24372442 'newimages' => 'Gallery of new files',
24382443 'newimages-summary' => '', # only translate this message to other languages if you have to change it
24392444 'showhidebots' => '($1 bots)',
24402445 'noimages' => 'Nothing to see.',
24412446
 2447+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 2448+'video-dims' => '$1, $2×$3', # only translate this message to other languages if you have to change it
 2449+'seconds-abbrev' => 's', # only translate this message to other languages if you have to change it
 2450+'minutes-abbrev' => 'm', # only translate this message to other languages if you have to change it
 2451+'hours-abbrev' => 'h', # only translate this message to other languages if you have to change it
 2452+
24422453 # Bad image list
24432454 'bad_image_list' => 'The format is as follows:
24442455
Index: branches/liquidthreads/languages/messages/MessagesZh_tw.php
@@ -283,23 +283,24 @@
284284 'versionrequired' => '需要MediaWiki $1 版',
285285 'versionrequiredtext' => '需要版本$1的 MediaWiki 才能使用此页。参见[[Special:Version|版本頁]]。',
286286
287 -'ok' => 'OK',
288 -'pagetitle' => '$1 - {{SITENAME}}',
289 -'retrievedfrom' => '取自"$1"',
290 -'youhavenewmessages' => '您有$1($2)。',
291 -'newmessageslink' => '新訊息',
292 -'newmessagesdifflink' => '上次更改',
293 -'editsection' => '編輯',
294 -'editold' => '編輯',
295 -'editsectionhint' => '編輯段落: $1',
296 -'toc' => '目錄',
297 -'showtoc' => '顯示',
298 -'hidetoc' => '隱藏',
299 -'thisisdeleted' => '查看或恢復$1?',
300 -'viewdeleted' => '檢視$1',
301 -'restorelink' => '$1個被刪除的版本',
302 -'feedlinks' => '訂閱:',
303 -'feed-invalid' => '無效的訂閱類型。',
 287+'ok' => 'OK',
 288+'pagetitle' => '$1 - {{SITENAME}}',
 289+'retrievedfrom' => '取自"$1"',
 290+'youhavenewmessages' => '您有$1($2)。',
 291+'newmessageslink' => '新訊息',
 292+'newmessagesdifflink' => '上次更改',
 293+'youhavenewmessagesmulti' => '您在 $1 有一條新訊息',
 294+'editsection' => '編輯',
 295+'editold' => '編輯',
 296+'editsectionhint' => '編輯段落: $1',
 297+'toc' => '目錄',
 298+'showtoc' => '顯示',
 299+'hidetoc' => '隱藏',
 300+'thisisdeleted' => '查看或恢復$1?',
 301+'viewdeleted' => '檢視$1',
 302+'restorelink' => '$1個被刪除的版本',
 303+'feedlinks' => '訂閱:',
 304+'feed-invalid' => '無效的訂閱類型。',
304305
305306 # Short words for each namespace, by default used in the 'article' tab in monobook
306307 'nstab-main' => '文章',
@@ -376,8 +377,8 @@
377378 'protectedinterface' => '該頁提供了軟體的介面文字,它已被鎖定以防止隨意的修改。',
378379 'editinginterface' => "'''警告:''' 您正在編輯的頁面是用於提供軟體的介面文字。改變此頁將影響其他用戶的介面外觀。",
379380 'sqlhidden' => '(隱藏SQL查詢)',
380 -'cascadeprotected' => "這個頁面已經被保護,因為這個頁面被以下已標註\"聯鎖保護\"的{{PLURAL:$1|一個|多個}}被保護頁面包含:
381 -$2",
 381+'cascadeprotected' => '這個頁面已經被保護,因為這個頁面被以下已標註"聯鎖保護"的{{PLURAL:$1|一個|多個}}被保護頁面包含:
 382+$2',
382383 'namespaceprotected' => "您並沒有權限去編輯在'''$1'''名字空間內的頁面。",
383384 'customcssjsprotected' => '您並無許可權去編輯這個頁面,因為它包含了另一位用戶的個人設定。',
384385 'ns-specialprotected' => '在{{ns:special}}名字空間中的頁面是不可以編輯的。',
@@ -395,7 +396,6 @@
396397 'yourdomainname' => '您的網域:',
397398 'externaldberror' => '這可能是由於外部驗證資料庫錯誤或您被禁止更新您的外部帳號。',
398399 'loginproblem' => '<b>登入有問題。</b><br />再試一次!',
399 -'alreadyloggedin' => '<strong>用戶$1,您已經登入了!</strong><br />',
400400 'login' => '登入',
401401 'loginprompt' => '您必須允許瀏覽器紀錄Cookie才能成功登入 {{SITENAME}} 並順利進行操作',
402402 'userlogin' => '登入/建立新帳號',
@@ -453,6 +453,7 @@
454454 'invalidemailaddress' => '郵箱地址格式不正確,請輸入正確的郵箱位址或清空該輸入框。',
455455 'accountcreated' => '已建立帳戶',
456456 'accountcreatedtext' => '$1的帳戶已經被創建。',
 457+'loginlanguagelabel' => '語言: $1',
457458
458459 # Password reset dialog
459460 'resetpass' => '重設帳戶密碼',
@@ -566,7 +567,6 @@
567568 'session_fail_preview_html' => '<strong>很抱歉!部份資料已遺失,我們無法處理您的編輯。</strong><strong>如果這個編輯過程沒有問題,請再試一次。如果仍然有問題,請登出後再重新登入一次。</strong>',
568569 'token_suffix_mismatch' => '<strong>由於您用戶端中的編輯信符毀損了一些標點符號字元,為防止編輯的文字損壞,您的編輯已經被拒絕。
569570 這種情況通常出現於使用含有很多臭蟲、以網絡為主的匿名代理服務的時候。</strong>',
570 -'importing' => '正在匯入$1',
571571 'editing' => '正在編輯$1',
572572 'editinguser' => '正在編輯用戶<b>$1</b>',
573573 'editingsection' => '正在編輯$1 (段落)',
@@ -729,7 +729,7 @@
730730 'notextmatches' => '沒有文章內容匹配',
731731 'prevn' => '前$1個',
732732 'nextn' => '後$1個',
733 -'viewprevnext' => '檢視 ($1) ($2) ($3)。',
 733+'viewprevnext' => '檢視 ($1) ($2) ($3)',
734734 'showingresults' => '下面顯示從第<b>$2</b>條開始的<b>$1</b>條結果:',
735735 'showingresultsnum' => '下面顯示從第<b>$2</b>條開始的<b>$3</b>條結果:',
736736 'nonefound' => '<strong>注意:</strong>失敗的搜索往往是由於試圖搜索諸如「的」或「和」之類的常見字所引起。',
@@ -742,6 +742,7 @@
743743 # Preferences page
744744 'preferences' => '參數設置',
745745 'mypreferences' => '我的參數設置',
 746+'prefs-edits' => '編輯數量:',
746747 'prefsnologin' => '還未登入',
747748 'prefsnologintext' => '您必須先[[Special:Userlogin|登入]]才能設置個人參數。',
748749 'prefsreset' => '參數已重新設置。',
@@ -953,7 +954,6 @@
954955 # Image list
955956 'imagelist' => '檔案列表',
956957 'imagelisttext' => '以下是按$2排列的$1個檔案列表。',
957 -'imagelistforuser' => '此處僅僅顯示由$1上傳的圖像。',
958958 'getimagelist' => '正在獲取檔案列表',
959959 'ilsubmit' => '搜尋',
960960 'showlast' => '顯示按$2排列的最後$1個檔案。',
@@ -1178,7 +1178,6 @@
11791179 'watchlistfor' => "('''$1'''的監視列表)",
11801180 'nowatchlist' => '您的監視列表為空。',
11811181 'watchlistanontext' => '請$1以檢視或編輯您的監視列表。',
1182 -'watchlistcount' => "'''您的監視列表中共有$1個項目,包括討論頁。'''",
11831182 'watchnologin' => '未登入',
11841183 'watchnologintext' => '您必須先[[Special:Userlogin|登入]]
11851184 才能更改您的監視列表',
@@ -1310,6 +1309,7 @@
13111310 以下是<strong>$1</strong>現時的保護級別:',
13121311 'protect-cascadeon' => '以下的{{PLURAL:$1|一個|多個}}頁面包含着本頁面的同時,啟動了連鎖保護,因此本頁面目前也被保護,未能編輯。您可以設定本頁面的保護級別,但這並不會對連鎖保護有所影響。',
13131312 'protect-default' => '(預設)',
 1313+'protect-fallback' => '需要"$1"的許可',
13141314 'protect-level-autoconfirmed' => '禁止未註冊用戶',
13151315 'protect-level-sysop' => '僅操作員',
13161316 'protect-summary-cascade' => '連鎖',
@@ -1344,7 +1344,7 @@
13451345 'undeleterevdel' => '如果把最新修訂部份刪除,反刪除便無法進行。如果遇到這種情況,您必須反選或反隱藏最新已刪除的修訂。對於您沒有權限去檢視的修訂是無法恢復的。',
13461346 'undeletehistorynoadmin' => '這個文章已經被刪除,刪除原因顯示在下方編輯摘要中。被刪除前的所有修訂版本,連同刪除前貢獻用戶等等
13471347 細節只有[[Wikipedia:管理員|管理員]]可以看見。',
1348 -'undelete-revision' => '刪除版本 $1 自 $2:',
 1348+'undelete-revision' => '刪除$1時由$3(在$2)所編寫的修訂版本:',
13491349 'undeleterevision-missing' => '此版本的內容不正確或已經遺失。可能連結錯誤、被移除或已經被恢復。',
13501350 'undeletebtn' => '恢復',
13511351 'undeletereset' => '重設',
@@ -2144,15 +2144,12 @@
21452145 'confirm_purge' => '要清除此頁面的快取嗎?\n\n$1',
21462146 'confirm_purge_button' => '確定',
21472147
2148 -'youhavenewmessagesmulti' => '您在 $1 有一條新訊息',
2149 -
 2148+# AJAX search
21502149 'searchcontaining' => "搜索包含''$1''的文章。",
21512150 'searchnamed' => "搜索名稱為''$1''的文章。",
21522151 'articletitles' => '文章以"$1"開頭',
21532152 'hideresults' => '隱藏結果',
21542153
2155 -'loginlanguagelabel' => '語言: $1',
2156 -
21572154 # Multipage image navigation
21582155 'imgmultipageprev' => '← 上一頁',
21592156 'imgmultipagenext' => '下一頁 →',
Index: branches/liquidthreads/languages/messages/MessagesKk_tr.php
@@ -1,4 +1,4 @@
2 -<?php
 2+<?php
33 /**
44 * Kazakh (Qazaqşa)
55 *
@@ -136,8 +136,10 @@
137137
138138 /**
139139 * Magic words
140 - * Customisable syntax for wikitext and elsewhere
 140+ * Customisable syntax for wikitext and elsewhere.
141141 *
 142+ * IDs must be valid identifiers, they can't contain hyphens.
 143+ *
142144 * Note to translators:
143145 * Please include the English words as synonyms. This allows people
144146 * from other wikis to contribute more easily.
@@ -153,7 +155,6 @@
154156 'forcetoc' => array( 0, '__MAZMUNDATQIZW__', '__MQIZW__', '__FORCETOC__' ),
155157 'toc' => array( 0, '__MAZMUNI__', '__MZMN__', '__TOC__' ),
156158 'noeditsection' => array( 0, '__BÖLİMÖNDETKİZBEW__', '__NOEDITSECTION__' ),
157 - 'start' => array( 0, '__BASTAW__', '__START__' ),
158159 'currentmonth' => array( 1, 'AĞIMDAĞIAÝ', 'CURRENTMONTH' ),
159160 'currentmonthname' => array( 1, 'AĞIMDAĞIAÝATAWI', 'CURRENTMONTHNAME' ),
160161 'currentmonthnamegen' => array( 1, 'AĞIMDAĞIAÝİLİKATAWI', 'CURRENTMONTHNAMEGEN' ),
@@ -216,10 +217,10 @@
217218 'img_sub' => array( 1, 'astılığı', 'ast', 'sub'),
218219 'img_super' => array( 1, 'üstiligi', 'üst', 'sup', 'super', 'sup' ),
219220 'img_top' => array( 1, 'üstine', 'top' ),
220 - 'img_text-top' => array( 1, 'mätin-üstinde', 'text-top' ),
 221+ 'img_text_top' => array( 1, 'mätin-üstinde', 'text-top' ),
221222 'img_middle' => array( 1, 'aralığına', 'middle' ),
222223 'img_bottom' => array( 1, 'astına', 'bottom' ),
223 - 'img_text-bottom' => array( 1, 'mätin-astında', 'text-bottom' ),
 224+ 'img_text_bottom' => array( 1, 'mätin-astında', 'text-bottom' ),
224225 'int' => array( 0, 'İŞKİ:', 'INT:' ),
225226 'sitename' => array( 1, 'TORAPATAWI', 'SITENAME' ),
226227 'ns' => array( 0, 'EA:', 'ESİMAYA:', 'NS:' ),
@@ -872,10 +873,10 @@
873874 'accmailtext' => '$2 jaýına «$1» qupïya sözi jiberildi.',
874875 'newarticle' => '(Jaña)',
875876 'newarticletext' => 'Siltemege erip äli bastalmağan betke
876 -kelipsiz. Betti bastaw üşin, tömendegi awmaqta mätiniñizdi
877 -teriñiz (köbirek aqparat üşin [[{{{{ns:mediawiki}}:helppage}}|anıqtama betin]]
878 -qarañız).Eger jañılğannan osında kelgen bolsañız, şolğışıñız
879 -«Artqa» degen tüýmesin nuqıñız.',
 877+kelipsiz. Betti bastaw üşin, tömendegi awmaqta mätiniñizdi teriñiz
 878+(köbirek aqparat üşin [[{{{{ns:mediawiki}}:helppage}}|anıqtama betin]] qarañız).
 879+Eger jañılğannan osında kelgen bolsañız, şolğışıñız «Artqa» degen tüýmesin nuqıñız.',
 880+
880881 'anontalkpagetext' => "----''Bul tirkelgisiz (nemese tirkelgisin qoldanbağan) paýdalanwşınıñ talqılaw beti. Osı paýdalanwşını biz tek sandıq IP jaýımen teñdestiremiz. Osındaý IP jaýlar birneşe paýdalanwşığa ortaq bolwı mümkin. Eger siz tirkelgisiz paýdalanwşı bolsañız jäne sizge qatıssız mändemeler jiberilgenin sezseñiz, basqa tirkelgisiz paýdalanwşılarmen aralastırmawı üşin [[{{ns:special}}:Userlogin|tirkelgi jasañız ne kiriñiz]].''",
881882 'noarticletext' => 'Bul bette ağımda eş mätin joq, basqa betterden osı bet atawın [[{{ns:special}}:Search/{{PAGENAME}}|izdep körwiñizge]] nemese osı betti [{{fullurl:{{FULLPAGENAME}}|action=edit}} tüzetwiñizge] boladı.',
882883 'clearyourcache' => "'''Añğartpa:''' Saqtağannan keýin özgeristerdi körw üşin şolğış qosalqı qaltasın bosatw keregi mümkin. '''Mozilla / Safari:''' ''Shift'' pernesin basıp turıp ''Reload'' (''Qaýta jüktew'') tüýmesin nuqıñız (ne ''Ctrl-Shift-R'' basıñız); ''IE:'' ''Ctrl-F5'' basıñız; '''Opera / Konqueror''' ''F5'' pernesin basıñız.",
@@ -1077,7 +1078,7 @@
10781079 'notextmatches' => 'Eş bet mätini säýkes emes',
10791080 'prevn' => 'aldıñğı $1',
10801081 'nextn' => 'kelesi $1',
1081 -'viewprevnext' => 'Körsetilwi: ($1) ($2) ($3) jazba.',
 1082+'viewprevnext' => 'Körsetilwi: ($1) ($2) ($3) jazba',
10821083 'showingresults' => "Tömende nömir '''$2''' ornınan bastap, jetkenşe {{PLURAL:$1|'''1''' nätïje|'''$1''' nätïje}} körsetilgen.",
10831084 'showingresultsnum' => "Tömende nömir '''$2''' ornınan bastap {{PLURAL:$3|'''1''' nätïje|'''$3''' nätïje}} körsetilgen.",
10841085 'nonefound' => "'''Añğartpa''': Tabw sätsiz bitwi jïi «bolğan» jäne «degen» sïyaqtı
@@ -1092,6 +1093,7 @@
10931094 # Preferences page
10941095 'preferences' => 'Baptawlar',
10951096 'mypreferences' => 'Baptawım',
 1097+'prefs-edits' => 'Tüzetw sanı:',
10961098 'prefsnologin' => 'Kirmegensiz',
10971099 'prefsnologintext' => 'Baptawlardı qalaw üşin aldın ala [[{{ns:special}}:Userlogin|kirwiñiz]] qajet.',
10981100 'prefsreset' => 'Baptawlar arqawdan qaýta ornatıldı.',
@@ -1668,6 +1670,7 @@
16691671 Mına <strong>$1</strong> bettiñ ağımdıq baptawları:',
16701672 'protect-cascadeon' => 'Bul bet ağımda qorğalğan, sebebi: osı bet bawlı qorğawı bar kelesi {{PLURAL:$1|betke|betterge}} kiristirilgen. Bul bettiñ qorğaw deñgeýin özgerte alasız, biraq bul bawlı qorğawğa ıqpal etpeýdi.',
16711673 'protect-default' => '(ädepki)',
 1674+'protect-fallback' => '«$1» ruqsatı qajet boldı',
16721675 'protect-level-autoconfirmed' => 'Tirkelgisiz paýdalanwşılarğa tïım',
16731676 'protect-level-sysop' => 'Tek äkimşilerge ruqsat',
16741677 'protect-summary-cascade' => 'bawlı',
@@ -1822,8 +1825,8 @@
18231826 'ipb-blocklist-addr' => '$1 üşin bar buğattawlardı qaraw',
18241827 'ipb-blocklist' => 'Bar buğattawlardı qaraw',
18251828 'unblockip' => 'Paýdalanwşını buğattamaw',
1826 -'unblockiptext' => 'Tömendegi ülgit belgili IP jaýımen ne atawımen
1827 -burın buğattalğan paýdalanwşınıñ jazw ruqsatın qaýtarw üşin qoldanıladı.',
 1829+'unblockiptext' => 'Tömendegi ülgit belgili IP jaýımen ne atawımen burın buğattalğan paýdalanwşınıñ jazw ruqsatın qaýtarw üşin qoldanıladı.',
 1830+
18281831 'ipusubmit' => 'Osı jaýdı buğattamaw',
18291832 'unblocked' => '[[{{ns:user}}:$1|$1]] buğattawı öşirildi',
18301833 'unblocked-id' => '$1 degen buğattaw alastatıldı',
@@ -2225,17 +2228,25 @@
22262229 'imagemaxsize' => 'Sïpattaması betindegi swrettiñ mölşerin şektewi:',
22272230 'thumbsize' => 'Nobaý mölşeri:',
22282231 'widthheight' => '$1 × $2',
 2232+'widthheightpage' => '$1 × $2, $3 bet',
22292233 'file-info' => 'Faýl mölşeri: $1, MIME türi: $2',
22302234 'file-info-size' => '($1 × $2 pïksel, faýl mölşeri: $3, MIME türi: $4)',
22312235 'file-nohires' => '<small>Joğarı ajıratılımdığı jetimsiz.</small>',
2232 -'file-svg' => '<small>Bul şığınsız sozılğış vektorlıq swreti. Negizgi mölşeri: $1 × $2 pïksel.</small>',
 2236+'svg-long-desc' => '(SVG faýlı, kesimdi $1 × $2 pïksel, faýl mölşeri: $3)',
22332237 'show-big-image' => 'Joğarı ajıratılımdı',
22342238 'show-big-image-thumb' => '<small>Qarap şığw mölşeri: $1 × $2 pïksel</small>',
22352239
 2240+# Special:Newimages
22362241 'newimages' => 'Eñ jaña faýldar qoýması',
22372242 'showhidebots' => '(bottardı $1)',
22382243 'noimages' => 'Köretin eşteñe joq.',
22392244
 2245+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 2246+'video-dims' => '$1, $2 × $3',
 2247+'seconds-abbrev' => 's',
 2248+'minutes-abbrev' => 'mïn',
 2249+'hours-abbrev' => 'sağ',
 2250+
22402251 # Bad image list
22412252 'bad_image_list' => 'Pişimi tömendegideý:
22422253
Index: branches/liquidthreads/languages/messages/MessagesZh_classical.php
@@ -288,21 +288,22 @@
289289 'versionrequired' => '$1媒維基務安之',
290290 'versionrequiredtext' => '$1媒維基務安之,見[[Special:Version|版]]。',
291291
292 -'ok' => '可',
293 -'pagetitle' => '$1 - {{SITENAME}}',
294 -'retrievedfrom' => '取自"$1"',
295 -'youhavenewmessages' => '子有$1($2)',
296 -'newmessageslink' => '新訊',
297 -'newmessagesdifflink' => '變更',
298 -'editsection' => '纂',
299 -'editold' => '纂',
300 -'editsectionhint' => '纂 $1',
301 -'toc' => '章',
302 -'showtoc' => '示',
303 -'hidetoc' => '藏',
304 -'thisisdeleted' => '還$1或閱之?',
305 -'viewdeleted' => '閱$1之?',
306 -'restorelink' => '$1已刪',
 292+'ok' => '可',
 293+'pagetitle' => '$1 - {{SITENAME}}',
 294+'retrievedfrom' => '取自"$1"',
 295+'youhavenewmessages' => '子有$1($2)',
 296+'newmessageslink' => '新訊',
 297+'newmessagesdifflink' => '變更',
 298+'youhavenewmessagesmulti' => '新訊於$1',
 299+'editsection' => '纂',
 300+'editold' => '纂',
 301+'editsectionhint' => '纂 $1',
 302+'toc' => '章',
 303+'showtoc' => '示',
 304+'hidetoc' => '藏',
 305+'thisisdeleted' => '還$1或閱之?',
 306+'viewdeleted' => '閱$1之?',
 307+'restorelink' => '$1已刪',
307308
308309 # Short words for each namespace, by default used in the 'article' tab in monobook
309310 'nstab-main' => '文',
@@ -368,8 +369,8 @@
369370 'protectedinterface' => '此頁司版面,錮之以遠濫。',
370371 'editinginterface' => "'''警示:'''此頁司版面,一人易之眾人動,懇請戒慎之。",
371372 'sqlhidden' => '藏SQL問語',
372 -'cascadeprotected' => "這頁已錮,因註\"連環錮\"之{{PLURAL:$1|一|多}}頁有:
373 -$2",
 373+'cascadeprotected' => '這頁已錮,因註"連環錮"之{{PLURAL:$1|一|多}}頁有:
 374+$2',
374375 'namespaceprotected' => "舉凡'''$1'''者,爾無權耳,莫之能修。",
375376 'customcssjsprotected' => '爾無權耳,莫之能修,含他之喜好也。',
376377 'ns-specialprotected' => '{{ns:special}}領域之頁無修也。',
@@ -386,7 +387,6 @@
387388 'yourpasswordagain' => '復核符節',
388389 'remembermypassword' => '記之',
389390 'loginproblem' => '<b>登簿有誤</b><br />請再之',
390 -'alreadyloggedin' => '<strong>$1登簿矣</strong><br />',
391391 'login' => '登簿',
392392 'loginprompt' => '登簿{{SITENAME}}須cookies,請釋之。',
393393 'userlogin' => '登簿/增簿',
@@ -440,6 +440,7 @@
441441 'invalidemailaddress' => '驛址不格,請正之或空白。',
442442 'accountcreated' => '簿增矣',
443443 'accountcreatedtext' => '$1簿增矣',
 444+'loginlanguagelabel' => '語:$1',
444445
445446 # Edit page toolbar
446447 'bold_sample' => '粗體',
@@ -484,7 +485,7 @@
485486
486487 存惑可詢$1,或[[{{MediaWiki:grouppage-sysop}}|有秩]],[[Special:Preferences|簿註]]無驛則信不遣。
487488 另,子IP為$3,其禁號為#$5。詢時切附之。",
488 -'autoblockedtext' => "爾之IP或簿自禁,因簿先用,禁者$1也。
 489+'autoblockedtext' => "爾之IP或簿自禁,因簿先用,禁者$1也。
489490 因故:
490491
491492 :\'\'$2\'\'
@@ -534,7 +535,6 @@
535536 ''此維基亦合純HTML,除預覽以遠惡JavaScript侵。''
536537 <strong>纂文若合,請再之。如復不成,簿重登焉。</strong>",
537538 'token_suffix_mismatch' => '<strong>君修見拒,蓋因代理之故,亂事見兮。</strong>',
538 -'importing' => '匯入$1',
539539 'editing' => '纂$1',
540540 'editinguser' => '<b>$1</b>正纂之',
541541 'editingsection' => '纂節$1',
@@ -650,7 +650,7 @@
651651 'notextmatches' => '無文合',
652652 'prevn' => '前$1',
653653 'nextn' => '次$1',
654 -'viewprevnext' => '見($1)($2)($3)。',
 654+'viewprevnext' => '見($1)($2)($3)',
655655 'showingresults' => '見<b>$1</b>尋,自<b>$2</b>始:',
656656 'showingresultsnum' => '見<b>$3</b>尋,自<b>$2</b>始:',
657657 'powersearch' => '索',
@@ -658,6 +658,7 @@
659659 # Preferences page
660660 'preferences' => '簿註',
661661 'mypreferences' => '簿註',
 662+'prefs-edits' => '數篡:',
662663 'prefsnologin' => '未登簿',
663664 'prefsnologintext' => '註記須[[Special:Userlogin|登簿]]。',
664665 'prefsreset' => '簿註重謄',
@@ -931,7 +932,6 @@
932933 'watchlistfor' => "('''$1'''之哨)",
933934 'nowatchlist' => '無哨',
934935 'watchlistanontext' => '$1以治哨',
935 -'watchlistcount' => "'''含議,有哨$1'''",
936936 'watchnologin' => '未登簿',
937937 'watchnologintext' => '[[Special:Userlogin|登簿]]以治哨。',
938938 'addedwatch' => '派哨',
@@ -1026,6 +1026,7 @@
10271027 'protect-unchain' => '准遷之',
10281028 'protect-text' => '錮級可見<strong>$1</strong>',
10291029 'protect-default' => '(予定)',
 1030+'protect-fallback' => '需「$1」之權',
10301031 'protect-level-autoconfirmed' => '驅無簿',
10311032 'protect-level-sysop' => '惟有秩',
10321033
@@ -1039,6 +1040,7 @@
10401041 'viewdeletedpage' => '覽已刪',
10411042 'undeletepagetext' => '列已刪如下。有複存可還之,常清。',
10421043 'undeleterevisions' => '有審$1',
 1044+'undelete-revision' => '刪$1自$3(於$2)所篡之審:',
10431045 'undeletebtn' => '還',
10441046 'undeletereset' => '重置',
10451047 'undeletecomment' => '贊:',
@@ -1100,43 +1102,43 @@
11011103 'whatlinkshere-links' => '← 通',
11021104
11031105 # Block/unblock
1104 -'blockip' => '禁簿',
1105 -'ipaddress' => 'IP址',
1106 -'ipadressorusername' => 'IP或簿名',
1107 -'ipbexpiry' => '限期',
1108 -'ipbreason' => '緣',
1109 -'ipbanononly' => '禁名匿',
1110 -'ipbcreateaccount' => '禁增簿',
1111 -'ipbsubmit' => '禁此簿',
1112 -'ipbother' => '它時',
1113 -'ipboptions' => '二時:2 hours,一日:1 day,三日:3 days,一週:1 week,二週:2 weeks,一月:1 month,三月:3 months,六月:6 months,一年:1 year,永:infinite',
1114 -'ipbotheroption' => '他',
1115 -'badipaddress' => 'IP不格',
1116 -'blockipsuccesssub' => '見禁',
1117 -'blockipsuccesstext' => '[[{{ns:Special}}:Contributions/$1|$1]]見禁<br />見[[{{ns:Special}}:Ipblocklist|誌禁]]',
1118 -'unblockip' => '赦禁簿',
1119 -'unblockiptext' => '以下表赦禁簿、IP:',
1120 -'ipusubmit' => '赦此址',
1121 -'unblocked' => '[[User:$1|$1]]見赦。',
1122 -'ipblocklist' => '列禁簿、禁IP:',
1123 -'ipblocklist-legend' => '尋禁簿',
1124 -'ipblocklist-username'=> '簿或IP:',
1125 -'blocklistline' => '$1,$2禁$3($4)',
1126 -'infiniteblock' => '永',
1127 -'expiringblock' => '過$1',
1128 -'anononlyblock' => '惟名匿',
1129 -'createaccountblock' => '禁增簿',
1130 -'ipblocklist-empty' => '誌空也。',
1131 -'blocklink' => '禁',
1132 -'unblocklink' => '赦',
1133 -'contribslink' => '功績',
1134 -'autoblocker' => '近日"[[User:$1|$1]]"用子IP"\'\'\'$2\'\'\'",故禁',
1135 -'blocklogpage' => '誌禁',
1136 -'blocklogentry' => '禁[[$1]]至$2 $3',
1137 -'unblocklogentry' => '赦$1',
1138 -'ipb_expiry_invalid' => '限期不格。',
1139 -'ipb_already_blocked' => '"$1"早禁矣',
1140 -'proxyblocksuccess' => '已矣',
 1106+'blockip' => '禁簿',
 1107+'ipaddress' => 'IP址',
 1108+'ipadressorusername' => 'IP或簿名',
 1109+'ipbexpiry' => '限期',
 1110+'ipbreason' => '緣',
 1111+'ipbanononly' => '禁名匿',
 1112+'ipbcreateaccount' => '禁增簿',
 1113+'ipbsubmit' => '禁此簿',
 1114+'ipbother' => '它時',
 1115+'ipboptions' => '二時:2 hours,一日:1 day,三日:3 days,一週:1 week,二週:2 weeks,一月:1 month,三月:3 months,六月:6 months,一年:1 year,永:infinite',
 1116+'ipbotheroption' => '他',
 1117+'badipaddress' => 'IP不格',
 1118+'blockipsuccesssub' => '見禁',
 1119+'blockipsuccesstext' => '[[{{ns:Special}}:Contributions/$1|$1]]見禁<br />見[[{{ns:Special}}:Ipblocklist|誌禁]]',
 1120+'unblockip' => '赦禁簿',
 1121+'unblockiptext' => '以下表赦禁簿、IP:',
 1122+'ipusubmit' => '赦此址',
 1123+'unblocked' => '[[User:$1|$1]]見赦。',
 1124+'ipblocklist' => '列禁簿、禁IP:',
 1125+'ipblocklist-legend' => '尋禁簿',
 1126+'ipblocklist-username' => '簿或IP:',
 1127+'blocklistline' => '$1,$2禁$3($4)',
 1128+'infiniteblock' => '永',
 1129+'expiringblock' => '過$1',
 1130+'anononlyblock' => '惟名匿',
 1131+'createaccountblock' => '禁增簿',
 1132+'ipblocklist-empty' => '誌空也。',
 1133+'blocklink' => '禁',
 1134+'unblocklink' => '赦',
 1135+'contribslink' => '功績',
 1136+'autoblocker' => '近日"[[User:$1|$1]]"用子IP"\'\'\'$2\'\'\'",故禁',
 1137+'blocklogpage' => '誌禁',
 1138+'blocklogentry' => '禁[[$1]]至$2 $3',
 1139+'unblocklogentry' => '赦$1',
 1140+'ipb_expiry_invalid' => '限期不格。',
 1141+'ipb_already_blocked' => '"$1"早禁矣',
 1142+'proxyblocksuccess' => '已矣',
11411143
11421144 # Developer tools
11431145 'lockdb' => '鎖庫藏',
@@ -1343,15 +1345,12 @@
13441346 $1',
13451347 'confirm_purge_button' => '准',
13461348
1347 -'youhavenewmessagesmulti' => '新訊於$1',
1348 -
 1349+# AJAX search
13491350 'searchcontaining' => "尋文含''$1''",
13501351 'searchnamed' => "尋文名''$1''.",
13511352 'articletitles' => "文首為''$1''",
13521353 'hideresults' => '藏',
13531354
1354 -'loginlanguagelabel' => '語:$1',
1355 -
13561355 # Multipage image navigation
13571356 'imgmultipageprev' => '←前頁',
13581357 'imgmultipagenext' => '次頁→',
@@ -1423,4 +1422,3 @@
14241423
14251424 );
14261425
1427 -
Index: branches/liquidthreads/languages/messages/MessagesCs.php
@@ -133,10 +133,10 @@
134134 'img_sub' => array( 1, 'sub' ),
135135 'img_super' => array( 1, 'super', 'sup' ),
136136 'img_top' => array( 1, 'top' ),
137 - 'img_text-top' => array( 1, 'text-top' ),
 137+ 'img_text_top' => array( 1, 'text-top' ),
138138 'img_middle' => array( 1, 'middle' ),
139139 'img_bottom' => array( 1, 'bottom' ),
140 - 'img_text-bottom' => array( 1, 'text-bottom' ),
 140+ 'img_text_bottom' => array( 1, 'text-bottom' ),
141141 'int' => array( 0, 'INT:' ),
142142 'sitename' => array( 1, 'SITENAME', 'NÁZEVSERVERU' ),
143143 'ns' => array( 0, 'NS:' ),
Index: branches/liquidthreads/languages/messages/MessagesHe.php
@@ -59,7 +59,6 @@
6060 'forcetoc' => array( 0, '__חייב_תוכן_עניינים__', '__חייב_תוכן__', '__FORCETOC__' ),
6161 'toc' => array( 0, '__תוכן_עניינים__', '__תוכן__', '__TOC__' ),
6262 'noeditsection' => array( 0, '__ללא_עריכה__', '__NOEDITSECTION__' ),
63 - 'start' => array( 0, '__התחלה__', '__START__' ),
6463 'currentmonth' => array( 1, 'חודש נוכחי', 'CURRENTMONTH' ),
6564 'currentmonthname' => array( 1, 'שם חודש נוכחי', 'CURRENTMONTHNAME' ),
6665 'currentmonthnamegen' => array( 1, 'שם חודש נוכחי קניין', 'CURRENTMONTHNAMEGEN' ),
@@ -885,7 +884,7 @@
886885 'notextmatches' => 'אין דפים עם תוכן תואם',
887886 'prevn' => '$1 הקודמים',
888887 'nextn' => '$1 הבאים',
889 -'viewprevnext' => 'צפו ב - ($1) ($2) ($3).',
 888+'viewprevnext' => 'צפו ב - ($1) ($2) ($3)',
890889 'showingresults' => "מציג עד {{plural:$1|תוצאה '''אחת'''|'''$1''' תוצאות}} החל ממספר #'''$2''':",
891890 'showingresultsnum' => "מציג {{plural:$3|תוצאה '''אחת'''|'''$3''' תוצאות}} החל ממספר #'''$2''':",
892891 'nonefound' => 'לא נמצאו דפים עם תוכן תואם. אנא ודאו שהקלדתם את שאילתת החיפוש נכון. אם אכן הקלדתם אותה נכון, נסו לחפש נושא כללי יותר.
@@ -899,6 +898,7 @@
900899 # Preferences page
901900 'preferences' => 'העדפות',
902901 'mypreferences' => 'ההעדפות שלי',
 902+'prefs-edits' => 'מספר עריכות:',
903903 'prefsnologin' => 'לא נרשמת באתר',
904904 'prefsnologintext' => 'עליכם [[{{ns:special}}:Userlogin|להיכנס לחשבון]] כדי לשנות העדפות משתמש.',
905905 'prefsreset' => 'העדפותיך שוחזרו לברירת המחדל.',
@@ -1075,8 +1075,9 @@
10761076 'uploadwarning' => 'אזהרת העלאת קבצים',
10771077 'savefile' => 'שמור קובץ',
10781078 'uploadedimage' => 'העלה את הקובץ [[$1]]',
1079 -'uploaddisabled' => 'העלאת קבצים מנוטרלת',
1080 -'uploaddisabledtext' => 'אפשרות העלאת הקבצים מנוטרלת באתר זה.',
 1079+'overwroteimage' => 'העלה גרסה חדשה של הקובץ [[$1]]',
 1080+'uploaddisabled' => 'העלאת קבצים מבוטלת',
 1081+'uploaddisabledtext' => 'אפשרות העלאת הקבצים מבוטלת באתר זה.',
10811082 'uploadscripted' => 'הקובץ כולל קוד סקריפט או HTML שעשוי להתפרש או להתבצע בטעות על־ידי הדפדפן.',
10821083 'uploadcorrupt' => 'קובץ זה אינו תקין או שהסיומת שלו איננה מתאימה. אנא בדקו את הקובץ והעלו אותו שוב.',
10831084 'uploadvirus' => 'הקובץ מכיל וירוס! פרטים: <div style="direction: ltr;">$1</div>',
@@ -1846,8 +1847,8 @@
18471848 'monobook.js' => '/* מיושן; השתמשו ב[[מדיה ויקי:Common.js]] */',
18481849
18491850 # Metadata
1850 -'nodublincore' => 'Dublin Core RDF metadata מנוטרל בשרת זה.',
1851 -'nocreativecommons' => 'Creative Commons RDF metadata מנוטרל בשרת זה.',
 1851+'nodublincore' => 'Dublin Core RDF metadata מבוטל בשרת זה.',
 1852+'nocreativecommons' => 'Creative Commons RDF metadata מבוטל בשרת זה.',
18521853 'notacceptable' => 'האתר לא יכול לספק מידע בפורמט שתוכנת הלקוח יכולה לקרוא.',
18531854
18541855 # Attribution
@@ -1895,8 +1896,8 @@
18961897 'markedaspatrolled' => 'השינוי נבדק',
18971898 'markedaspatrolledtext' => 'השינוי שנבחר נבדק.',
18981899 'rcpatroldisabled' => 'בדיקת השינויים האחרונים מבוטלת',
1899 -'rcpatroldisabledtext' => 'תכונת סימון שינוי כבדוק בשינויים האחרונים היא כרגע מנוטרלת.',
1900 -'markedaspatrollederror' => 'לא יכול לסמן כבדוק',
 1900+'rcpatroldisabledtext' => 'התכונה של סימון שינוי כבדוק בשינויים האחרונים מבוטלת.',
 1901+'markedaspatrollederror' => 'לא ניתן לסמן כבדוק',
19011902 'markedaspatrollederrortext' => 'עליכם לציין גרסה שתציינו כבדוקה.',
19021903 'markedaspatrollederror-noautopatrol' => 'אינכם מורשים לסמן את השינויים של עצמכם כבדוקים.',
19031904
@@ -1926,13 +1927,15 @@
19271928 'mediawarning' => "'''אזהרה:''' קובץ זה עלול להכיל קוד זדוני, שהרצתו עלולה לסכן את המערכת שלכם.<hr />",
19281929 'imagemaxsize' => 'הגבל תמונות בדפי תיאור תמונה ל:',
19291930 'thumbsize' => 'הקטן לגודל של:',
 1931+'widthheightpage' => '$1×$2, $3 דפים',
19301932 'file-info' => '(גודל הקובץ: $1, סוג MIME: $2)',
19311933 'file-info-size' => '($1 × $2 פיקסלים, גודל הקובץ: $3, סוג MIME: $4)',
19321934 'file-nohires' => '<small>אין גרסת רזולוציה גבוהה יותר.</small>',
1933 -'file-svg' => '<small>זוהי תמונה וקטורית שניתן לשנות את גודלה ללא איבוד פרטים. הגודל המקורי: $1 × $2 פיקסלים.</small>',
 1935+'svg-long-desc' => '(קובץ SVG, הגודל המקורי: $1 × $2 פיקסלים, גודל הקובץ: $3)',
19341936 'show-big-image' => 'תמונה ברזולוציה גבוהה יותר',
19351937 'show-big-image-thumb' => '<small>גודל התצוגה הזו: $1 × $2 פיקסלים</small>',
19361938
 1939+# Special:Newimages
19371940 'newimages' => 'גלריית תמונות חדשות',
19381941 'showhidebots' => '($1 בוטים)',
19391942 'noimages' => 'אין תמונות.',
@@ -2245,7 +2248,7 @@
22462249 אם *לא* אתם ביקשתם קוד אישור זה, אל תפתחו את הקישור. קוד האישור יפקע ב־$4.',
22472250
22482251 # Scary transclusion
2249 -'scarytranscludedisabled' => '[הכללת תבניות בין אתרים מנוטרלת]',
 2252+'scarytranscludedisabled' => '[הכללת תבניות בין אתרים מבוטלת]',
22502253 'scarytranscludefailed' => '[מצטערים, קבלת התבנית נכשלה בגלל $1]',
22512254 'scarytranscludetoolong' => '[מצטערים, כתובת ה־URL ארוכה מדי]',
22522255
Index: branches/liquidthreads/languages/messages/MessagesKk_cn.php
@@ -1,4 +1,4 @@
2 -<?php
 2+<?php
33 /**
44 * Kazakh (قازاقشا)
55 *
@@ -143,8 +143,10 @@
144144
145145 /**
146146 * Magic words
147 - * Customisable syntax for wikitext and elsewhere
 147+ * Customisable syntax for wikitext and elsewhere.
148148 *
 149+ * IDs must be valid identifiers, they can't contain hyphens.
 150+ *
149151 * Note to translators:
150152 * Please include the English words as synonyms. This allows people
151153 * from other wikis to contribute more easily.
@@ -160,7 +162,6 @@
161163 'forcetoc' => array( 0, '__مازمۇنداتقىزۋ__', '__مقىزۋ__', '__FORCETOC__' ),
162164 'toc' => array( 0, '__مازمۇنى__', '__مزمن__', '__TOC__' ),
163165 'noeditsection' => array( 0, '__بٶلٸمٶندەتكٸزبەۋ__', '__NOEDITSECTION__' ),
164 - 'start' => array( 0, '__باستاۋ__', '__START__' ),
165166 'currentmonth' => array( 1, 'اعىمداعىاي', 'CURRENTMONTH' ),
166167 'currentmonthname' => array( 1, 'اعىمداعىاياتاۋى', 'CURRENTMONTHNAME' ),
167168 'currentmonthnamegen' => array( 1, 'اعىمداعىايٸلٸكاتاۋى', 'CURRENTMONTHNAMEGEN' ),
@@ -223,10 +224,10 @@
224225 'img_sub' => array( 1, 'استىلىعى', 'است', 'sub'),
225226 'img_super' => array( 1, 'ٷستٸلٸگٸ', 'ٷست', 'sup', 'super', 'sup' ),
226227 'img_top' => array( 1, 'ٷستٸنە', 'top' ),
227 - 'img_text-top' => array( 1, 'مٵتٸن-ٷستٸندە', 'text-top' ),
 228+ 'img_text_top' => array( 1, 'مٵتٸن-ٷستٸندە', 'text-top' ),
228229 'img_middle' => array( 1, 'ارالىعىنا', 'middle' ),
229230 'img_bottom' => array( 1, 'استىنا', 'bottom' ),
230 - 'img_text-bottom' => array( 1, 'مٵتٸن-استىندا', 'text-bottom' ),
 231+ 'img_text_bottom' => array( 1, 'مٵتٸن-استىندا', 'text-bottom' ),
231232 'int' => array( 0, 'ٸشكٸ:', 'INT:' ),
232233 'sitename' => array( 1, 'توراپاتاۋى', 'SITENAME' ),
233234 'ns' => array( 0, 'ەا:', 'ەسٸمايا:', 'NS:' ),
@@ -879,10 +880,10 @@
880881 'accmailtext' => '$2 جايىنا «$1» قۇپييا سٶزٸ جٸبەرٸلدٸ.',
881882 'newarticle' => '(جاڭا)',
882883 'newarticletext' => 'سٸلتەمەگە ەرٸپ ٵلٸ باستالماعان بەتكە
883 -كەلٸپسٸز. بەتتٸ باستاۋ ٷشٸن, تٶمەندەگٸ اۋماقتا مٵتٸنٸڭٸزدٸ
884 -تەرٸڭٸز (كٶبٸرەك اقپارات ٷشٸن [[{{{{ns:mediawiki}}:helppage}}|انىقتاما بەتٸن]]
885 -قاراڭىز).ەگەر جاڭىلعاننان وسىندا كەلگەن بولساڭىز, شولعىشىڭىز
886 -«ارتقا» دەگەن تٷيمەسٸن نۇقىڭىز.',
 884+كەلٸپسٸز. بەتتٸ باستاۋ ٷشٸن, تٶمەندەگٸ اۋماقتا مٵتٸنٸڭٸزدٸ تەرٸڭٸز
 885+(كٶبٸرەك اقپارات ٷشٸن [[{{{{ns:mediawiki}}:helppage}}|انىقتاما بەتٸن]] قاراڭىز).
 886+ەگەر جاڭىلعاننان وسىندا كەلگەن بولساڭىز, شولعىشىڭىز «ارتقا» دەگەن تٷيمەسٸن نۇقىڭىز.',
 887+
887888 'anontalkpagetext' => "----''بۇل تٸركەلگٸسٸز (نەمەسە تٸركەلگٸسٸن قولدانباعان) پايدالانۋشىنىڭ تالقىلاۋ بەتٸ. وسى پايدالانۋشىنى بٸز تەك ساندىق IP جايىمەن تەڭدەستٸرەمٸز. وسىنداي IP جايلار بٸرنەشە پايدالانۋشىعا ورتاق بولۋى مٷمكٸن. ەگەر سٸز تٸركەلگٸسٸز پايدالانۋشى بولساڭىز جٵنە سٸزگە قاتىسسىز مٵندەمەلەر جٸبەرٸلگەنٸن سەزسەڭٸز, باسقا تٸركەلگٸسٸز پايدالانۋشىلارمەن ارالاستىرماۋى ٷشٸن [[{{ns:special}}:Userlogin|تٸركەلگٸ جاساڭىز نە كٸرٸڭٸز]].''",
888889 'noarticletext' => 'بۇل بەتتە اعىمدا ەش مٵتٸن جوق, باسقا بەتتەردەن وسى بەت اتاۋىن [[{{ns:special}}:Search/{{PAGENAME}}|ٸزدەپ كٶرۋٸڭٸزگە]] نەمەسە وسى بەتتٸ [{{fullurl:{{FULLPAGENAME}}|action=edit}} تٷزەتۋٸڭٸزگە] بولادى.',
889890 'clearyourcache' => "'''اڭعارتپا:''' ساقتاعاننان كەيٸن ٶزگەرٸستەردٸ كٶرۋ ٷشٸن شولعىش قوسالقى قالتاسىن بوساتۋ كەرەگٸ مٷمكٸن. '''Mozilla / Safari:''' ''Shift'' پەرنەسٸن باسىپ تۇرىپ ''Reload'' (''قايتا جٷكتەۋ'') تٷيمەسٸن نۇقىڭىز (نە ''Ctrl-Shift-R'' باسىڭىز); ''IE:'' ''Ctrl-F5'' باسىڭىز; '''Opera / Konqueror''' ''F5'' پەرنەسٸن باسىڭىز.",
@@ -1084,7 +1085,7 @@
10851086 'notextmatches' => 'ەش بەت مٵتٸنٸ سٵيكەس ەمەس',
10861087 'prevn' => 'الدىڭعى $1',
10871088 'nextn' => 'كەلەسٸ $1',
1088 -'viewprevnext' => 'كٶرسەتٸلۋٸ: ($1) ($2) ($3) جازبا.',
 1089+'viewprevnext' => 'كٶرسەتٸلۋٸ: ($1) ($2) ($3) جازبا',
10891090 'showingresults' => "تٶمەندە نٶمٸر '''$2''' ورنىنان باستاپ, جەتكەنشە {{PLURAL:$1|'''1''' نٵتيجە|'''$1''' نٵتيجە}} كٶرسەتٸلگەن.",
10901091 'showingresultsnum' => "تٶمەندە نٶمٸر '''$2''' ورنىنان باستاپ {{PLURAL:$3|'''1''' نٵتيجە|'''$3''' نٵتيجە}} كٶرسەتٸلگەن.",
10911092 'nonefound' => "'''اڭعارتپا''': تابۋ سٵتسٸز بٸتۋٸ جيٸ «بولعان» جٵنە «دەگەن» سيياقتى
@@ -1099,6 +1100,7 @@
11001101 # Preferences page
11011102 'preferences' => 'باپتاۋلار',
11021103 'mypreferences' => 'باپتاۋىم',
 1104+'prefs-edits' => 'تٷزەتۋ سانى:',
11031105 'prefsnologin' => 'كٸرمەگەنسٸز',
11041106 'prefsnologintext' => 'باپتاۋلاردى قالاۋ ٷشٸن الدىن الا [[{{ns:special}}:Userlogin|كٸرۋٸڭٸز]] قاجەت.',
11051107 'prefsreset' => 'باپتاۋلار ارقاۋدان قايتا ورناتىلدى.',
@@ -1675,6 +1677,7 @@
16761678 مىنا <strong>$1</strong> بەتتٸڭ اعىمدىق باپتاۋلارى:',
16771679 'protect-cascadeon' => 'بۇل بەت اعىمدا قورعالعان, سەبەبٸ: وسى بەت باۋلى قورعاۋى بار كەلەسٸ {{PLURAL:$1|بەتكە|بەتتەرگە}} كٸرٸستٸرٸلگەن. بۇل بەتتٸڭ قورعاۋ دەڭگەيٸن ٶزگەرتە الاسىز, بٸراق بۇل باۋلى قورعاۋعا ىقپال ەتپەيدٸ.',
16781680 'protect-default' => '(ٵدەپكٸ)',
 1681+'protect-fallback' => '«$1» رۇقساتى قاجەت بولدى',
16791682 'protect-level-autoconfirmed' => 'تٸركەلگٸسٸز پايدالانۋشىلارعا تيىم',
16801683 'protect-level-sysop' => 'تەك ٵكٸمشٸلەرگە رۇقسات',
16811684 'protect-summary-cascade' => 'باۋلى',
@@ -1829,8 +1832,8 @@
18301833 'ipb-blocklist-addr' => '$1 ٷشٸن بار بۇعاتتاۋلاردى قاراۋ',
18311834 'ipb-blocklist' => 'بار بۇعاتتاۋلاردى قاراۋ',
18321835 'unblockip' => 'پايدالانۋشىنى بۇعاتتاماۋ',
1833 -'unblockiptext' => 'تٶمەندەگٸ ٷلگٸت بەلگٸلٸ IP جايىمەن نە اتاۋىمەن
1834 -بۇرىن بۇعاتتالعان پايدالانۋشىنىڭ جازۋ رۇقساتىن قايتارۋ ٷشٸن قولدانىلادى.',
 1836+'unblockiptext' => 'تٶمەندەگٸ ٷلگٸت بەلگٸلٸ IP جايىمەن نە اتاۋىمەن بۇرىن بۇعاتتالعان پايدالانۋشىنىڭ جازۋ رۇقساتىن قايتارۋ ٷشٸن قولدانىلادى.',
 1837+
18351838 'ipusubmit' => 'وسى جايدى بۇعاتتاماۋ',
18361839 'unblocked' => '[[{{ns:user}}:$1|$1]] بۇعاتتاۋى ٶشٸرٸلدٸ',
18371840 'unblocked-id' => '$1 دەگەن بۇعاتتاۋ الاستاتىلدى',
@@ -2232,17 +2235,25 @@
22332236 'imagemaxsize' => 'سيپاتتاماسى بەتٸندەگٸ سۋرەتتٸڭ مٶلشەرٸن شەكتەۋٸ:',
22342237 'thumbsize' => 'نوباي مٶلشەرٸ:',
22352238 'widthheight' => '$1 × $2',
 2239+'widthheightpage' => '$1 × $2, $3 بەت',
22362240 'file-info' => 'فايل مٶلشەرٸ: $1, MIME تٷرٸ: $2',
22372241 'file-info-size' => '($1 × $2 پيكسەل, فايل مٶلشەرٸ: $3, MIME تٷرٸ: $4)',
22382242 'file-nohires' => '<small>جوعارى اجىراتىلىمدىعى جەتٸمسٸز.</small>',
2239 -'file-svg' => '<small>بۇل شىعىنسىز سوزىلعىش ۆەكتورلىق سۋرەتٸ. نەگٸزگٸ مٶلشەرٸ: $1 × $2 پيكسەل.</small>',
 2243+'svg-long-desc' => '(SVG فايلى, كەسٸمدٸ $1 × $2 پيكسەل, فايل مٶلشەرٸ: $3)',
22402244 'show-big-image' => 'جوعارى اجىراتىلىمدى',
22412245 'show-big-image-thumb' => '<small>قاراپ شىعۋ مٶلشەرٸ: $1 × $2 پيكسەل</small>',
22422246
 2247+# Special:Newimages
22432248 'newimages' => 'ەڭ جاڭا فايلدار قويماسى',
22442249 'showhidebots' => '(بوتتاردى $1)',
22452250 'noimages' => 'كٶرەتٸن ەشتەڭە جوق.',
22462251
 2252+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 2253+'video-dims' => '$1, $2 × $3',
 2254+'seconds-abbrev' => 'س',
 2255+'minutes-abbrev' => 'مين',
 2256+'hours-abbrev' => 'ساع',
 2257+
22472258 # Bad image list
22482259 'bad_image_list' => 'پٸشٸمٸ تٶمەندەگٸدەي:
22492260
Index: branches/liquidthreads/languages/messages/MessagesId.php
@@ -147,10 +147,10 @@
148148 'img_sub' => array( 1, 'sub' ),
149149 'img_super' => array( 1, 'super', 'sup' ),
150150 'img_top' => array( 1, 'atas', 'top' ),
151 - 'img_text-top' => array( 1, 'atas-teks', 'text-top' ),
 151+ 'img_text_top' => array( 1, 'atas-teks', 'text-top' ),
152152 'img_middle' => array( 1, 'tengah', 'middle' ),
153153 'img_bottom' => array( 1, 'bawah', 'bottom' ),
154 - 'img_text-bottom' => array( 1, 'bawah-teks', 'text-bottom' ),
 154+ 'img_text_bottom' => array( 1, 'bawah-teks', 'text-bottom' ),
155155 'int' => array( 0, 'INT:' ),
156156 'sitename' => array( 1, 'NAMASITUS', 'SITENAME' ),
157157 'ns' => array( 0, 'RN:', 'NS:' ),
@@ -504,23 +504,24 @@
505505 'versionrequired' => 'Dibutuhkan MediaWiki versi $1',
506506 'versionrequiredtext' => 'MediaWiki versi $1 dibutuhkan untuk menggunakan halaman ini. Lihat [[Special:Version|halaman versi]]',
507507
508 -'ok' => 'OK',
509 -'pagetitle' => '$1 - {{SITENAME}}',
510 -'retrievedfrom' => 'Diperoleh dari "$1"',
511 -'youhavenewmessages' => 'Anda mempunyai $1 ($2).',
512 -'newmessageslink' => 'pesan baru',
513 -'newmessagesdifflink' => 'perubahan terakhir',
514 -'editsection' => 'sunting',
515 -'editold' => 'sunting',
516 -'editsectionhint' => 'Sunting bagian: $1',
517 -'toc' => 'Daftar isi',
518 -'showtoc' => 'tampilkan',
519 -'hidetoc' => 'sembunyikan',
520 -'thisisdeleted' => 'Lihat atau kembalikan $1?',
521 -'viewdeleted' => 'Lihat $1?',
522 -'restorelink' => '$1 suntingan yang telah dihapus',
523 -'feedlinks' => 'Asupan:',
524 -'feed-invalid' => 'Tipe permintaan asupan tidak tepat.',
 508+'ok' => 'OK',
 509+'pagetitle' => '$1 - {{SITENAME}}',
 510+'retrievedfrom' => 'Diperoleh dari "$1"',
 511+'youhavenewmessages' => 'Anda mempunyai $1 ($2).',
 512+'newmessageslink' => 'pesan baru',
 513+'newmessagesdifflink' => 'perubahan terakhir',
 514+'youhavenewmessagesmulti' => 'Anda mendapat pesan-pesan baru $1',
 515+'editsection' => 'sunting',
 516+'editold' => 'sunting',
 517+'editsectionhint' => 'Sunting bagian: $1',
 518+'toc' => 'Daftar isi',
 519+'showtoc' => 'tampilkan',
 520+'hidetoc' => 'sembunyikan',
 521+'thisisdeleted' => 'Lihat atau kembalikan $1?',
 522+'viewdeleted' => 'Lihat $1?',
 523+'restorelink' => '$1 suntingan yang telah dihapus',
 524+'feedlinks' => 'Asupan:',
 525+'feed-invalid' => 'Tipe permintaan asupan tidak tepat.',
525526
526527 # Short words for each namespace, by default used in the 'article' tab in monobook
527528 'nstab-main' => 'Artikel',
@@ -659,6 +660,7 @@
660661 'invalidemailaddress' => 'Alamat surat-e ini tidak dapat diterima karena formatnya tidak sesuai. Harap masukkan alamat surat-e dalam format yang benar atau kosongkan isian tersebut.',
661662 'accountcreated' => 'Akun dibuat',
662663 'accountcreatedtext' => 'Akun pengguna untuk $1 telah dibuat.',
 664+'loginlanguagelabel' => 'Bahasa: $1',
663665
664666 # Password reset dialog
665667 'resetpass' => 'Atur ulang kata sandi akun',
@@ -775,7 +777,6 @@
776778
777779 <strong>Jika ini merupakan upaya suntingan yang sahih, silakan coba lagi. Jika masih tetap tidak berhasil, cobalah keluar log dan masuk kembali.</strong>",
778780 'token_suffix_mismatch' => '<strong>Suntingan Anda ditolak karena aplikasi klien Anda mengubah karakter tanda baca pada suntingan. Suntingan tersebut ditolak untuk mencegah kesalahan pada artikel teks. Hal ini kadang terjadi jika Anda menggunakan layanan proxy anonim berbasis web yang bermasalah.</strong>',
779 -'importing' => 'Sedang mengimpor $1',
780781 'editing' => 'Menyunting $1',
781782 'editinguser' => 'Menyunting $1',
782783 'editingsection' => 'Menyunting $1 (bagian)',
@@ -913,7 +914,7 @@
914915 'notextmatches' => 'Tidak ada teks halaman yang cocok',
915916 'prevn' => '$1 lebih baru',
916917 'nextn' => '$1 lebih lama',
917 -'viewprevnext' => 'Lihat ($1) ($2) ($3).',
 918+'viewprevnext' => 'Lihat ($1) ($2) ($3)',
918919 'showingresults' => "Di bawah ini ditampilkan hingga {{PLURAL:$1|'''1''' hasil|'''$1''' hasil}}, dimulai dari #'''$2'''.",
919920 'showingresultsnum' => "Di bawah ini ditampilkan{{PLURAL:$3|'''1''' hasil|'''$3''' hasil}}, dimulai dari #'''$2'''.",
920921 'nonefound' => "'''Catatan''': Kegagalan pencarian biasanya disebabkan oleh pencarian kata-kata umum dalam bahasa Inggris, seperti \"have\" dan \"from\", yang biasanya tidak diindeks, atau dengan menentukan lebih dari satu kriteria pencarian (hanya halaman yang mengandung semua kriteria pencarianlah yang akan ditampilkan dalam hasil pencarian)",
@@ -925,6 +926,7 @@
926927 # Preferences page
927928 'preferences' => 'Preferensi',
928929 'mypreferences' => 'Preferensi saya',
 930+'prefs-edits' => 'Jumlah suntingan:',
929931 'prefsnologin' => 'Belum masuk log',
930932 'prefsnologintext' => 'Anda harus [[{{ns:special}}:Userlogin|masuk log]] untuk menetapkan preferensi Anda.',
931933 'prefsreset' => 'Preferensi telah dikembalikan ke konfigurasi baku.',
@@ -1133,7 +1135,6 @@
11341136 # Image list
11351137 'imagelist' => 'Daftar berkas',
11361138 'imagelisttext' => "Di bawah ini adalah daftar '''$1''' berkas diurutkan $2.",
1137 -'imagelistforuser' => 'Hanya berkas yang dimuat oleh $1.',
11381139 'getimagelist' => 'mengambil daftar berkas',
11391140 'ilsubmit' => 'Cari',
11401141 'showlast' => 'Tampilkan $1 berkas terakhir diurutkan $2.',
@@ -1349,7 +1350,6 @@
13501351 'watchlistfor' => "(untuk '''$1''')",
13511352 'nowatchlist' => 'Daftar pantauan Anda kosong.',
13521353 'watchlistanontext' => 'Silakan $1 untuk melihat atau menyunting daftar pantauan Anda.',
1353 -'watchlistcount' => "'''Anda memiliki $1 entri di daftar pantauan Anda, termasuk halaman pembicaraan.'''",
13541354 'watchnologin' => 'Belum masuk log',
13551355 'watchnologintext' => 'Anda harus [[{{ns:special}}:Userlogin|masuk log]] untuk mengubah daftar pantauan.',
13561356 'addedwatch' => 'Telah ditambahkan ke daftar pantauan',
@@ -1464,6 +1464,7 @@
14651465 'protect-locked-access' => 'Akun Anda tidak dapat memiliki hak untuk mengganti tingkat perlindungan halaman. Berikut adalah konfigurasi saat ini untuk halaman <strong>$1</strong>:',
14661466 'protect-cascadeon' => 'Halaman ini sedang dilindungi karena disertakan dalam {{PLURAL:$1|halaman|halaman-halaman}} berikut yang telah dilindungi dengan pilihan perlindungan runtun diaktifkan. Anda dapat mengganti tingkat perlindungan untuk halaman ini, tapi hal tersebut tidak akan mempengaruhi perlindungan runtun.',
14671467 'protect-default' => '(baku)',
 1468+'protect-fallback' => 'Memerlukan hak akses "$1"',
14681469 'protect-level-autoconfirmed' => 'Hanya pengguna terdaftar',
14691470 'protect-level-sysop' => 'Hanya pengurus',
14701471 'protect-summary-cascade' => 'runtun',
@@ -1494,7 +1495,7 @@
14951496 'undeletehistory' => 'Jika Anda mengembalikan halaman tersebut, semua revisi akan dikembalikan ke dalam sejarah. Jika sebuah halaman baru dengan nama yang sama telah dibuat sejak penghapusan, revisi yang telah dikembalikan akan kelihatan dalam sejarah dahulu, dan revisi terkini halaman tersebut tidak akan ditimpa secara otomatis. Ingat pula bahwa pembatasan revisi berkas terhapus sewaktu pemulihan',
14961497 'undeleterevdel' => 'Pembatalan penghapusan tidak akan dilakukan jika hal tersebut akan mengakibatkan revisi terkini halaman terhapus sebagian. Pada kondisi tersebut, Anda harus menghilangkan cek atau menghilangkan penyembunyian revisi yang dihapus terakhir. Revisi berkas yang tidak dapat Anda lihat tidak akan dipulihkan.',
14971498 'undeletehistorynoadmin' => 'Artikel ini telah dihapus. Alasan penghapusan diberikan pada ringkasan di bawah ini, berikut detil pengguna yang telah melakukan penyuntingan pada halaman ini sebelum dihapus. Isi terakhir dari revisi yang telah dihapus ini hanya tersedia untuk pengurus.',
1498 -'undelete-revision' => 'Revisi yang telah dihapus dari $1 sejak $2:',
 1499+'undelete-revision' => 'Deleted revision of $1 (as of $2) by $3:',
14991500 'undeleterevision-missing' => 'Revisi salah atau tak ditemukan. Anda mungkin mengikuti pranala yang salah, atau revisi tersebut telah dipulihkan atau dibuang dari arsip.',
15001501 'undeletebtn' => 'Kembalikan!',
15011502 'undeletereset' => 'Reset',
@@ -2255,15 +2256,12 @@
22562257 $1",
22572258 'confirm_purge_button' => 'OK',
22582259
2259 -'youhavenewmessagesmulti' => 'Anda mendapat pesan-pesan baru $1',
2260 -
 2260+# AJAX search
22612261 'searchcontaining' => "Mencari artikel yang mengandung ''$1''.",
22622262 'searchnamed' => "Mencari artikel yang berjudul ''$1''.",
22632263 'articletitles' => "Artikel yang diawali ''$1''",
22642264 'hideresults' => 'Sembunyikan hasil',
22652265
2266 -'loginlanguagelabel' => 'Bahasa: $1',
2267 -
22682266 # Multipage image navigation
22692267 'imgmultipageprev' => '&larr; halaman sebelumnya',
22702268 'imgmultipagenext' => 'halaman selanjutnya &rarr;',
Index: branches/liquidthreads/languages/messages/MessagesAr.php
@@ -156,10 +156,10 @@
157157 'img_page' => array( 1, "صفحة=$1", "صفحة $1", "page=$1", "page $1" ),
158158 'img_border' => array( 1, "حد", "حدود", "border" ),
159159 'img_top' => array( 1, "أعلى", "top" ),
160 - 'img_text-top' => array( 1, "نص_أعلى", "text-top" ),
 160+ 'img_text_top' => array( 1, "نص_أعلى", "text-top" ),
161161 'img_middle' => array( 1, "وسط", "middle" ),
162162 'img_bottom' => array( 1, "أسفل", "bottom" ),
163 - 'img_text-bottom' => array( 1, "نص_أسفل", "text-bottom" ),
 163+ 'img_text_bottom' => array( 1, "نص_أسفل", "text-bottom" ),
164164 'int' => array( 0, "محتوى:", "INT:" ),
165165 'sitename' => array( 1, "اسم_الموقع", "اسم_موقع", "SITENAME" ),
166166 'ns' => array( 0, "نط:", "NS:" ),
Index: branches/liquidthreads/languages/messages/MessagesKk_kz.php
@@ -135,8 +135,10 @@
136136
137137 /**
138138 * Magic words
139 - * Customisable syntax for wikitext and elsewhere
 139+ * Customisable syntax for wikitext and elsewhere.
140140 *
 141+ * IDs must be valid identifiers, they can't contain hyphens.
 142+ *
141143 * Note to translators:
142144 * Please include the English words as synonyms. This allows people
143145 * from other wikis to contribute more easily.
@@ -152,7 +154,6 @@
153155 'forcetoc' => array( 0, '__МАЗМҰНДАТҚЫЗУ__', '__МҚЫЗУ__', '__FORCETOC__' ),
154156 'toc' => array( 0, '__МАЗМҰНЫ__', '__МЗМН__', '__TOC__' ),
155157 'noeditsection' => array( 0, '__БӨЛІМӨНДЕТКІЗБЕУ__', '__NOEDITSECTION__' ),
156 - 'start' => array( 0, '__БАСТАУ__', '__START__' ),
157158 'currentmonth' => array( 1, 'АҒЫМДАҒЫАЙ', 'CURRENTMONTH' ),
158159 'currentmonthname' => array( 1, 'АҒЫМДАҒЫАЙАТАУЫ', 'CURRENTMONTHNAME' ),
159160 'currentmonthnamegen' => array( 1, 'АҒЫМДАҒЫАЙІЛІКАТАУЫ', 'CURRENTMONTHNAMEGEN' ),
@@ -215,10 +216,10 @@
216217 'img_sub' => array( 1, 'астылығы', 'аст', 'sub'),
217218 'img_super' => array( 1, 'үстілігі', 'үст', 'sup', 'super', 'sup' ),
218219 'img_top' => array( 1, 'үстіне', 'top' ),
219 - 'img_text-top' => array( 1, 'мәтін-үстінде', 'text-top' ),
 220+ 'img_text_top' => array( 1, 'мәтін-үстінде', 'text-top' ),
220221 'img_middle' => array( 1, 'аралығына', 'middle' ),
221222 'img_bottom' => array( 1, 'астына', 'bottom' ),
222 - 'img_text-bottom' => array( 1, 'мәтін-астында', 'text-bottom' ),
 223+ 'img_text_bottom' => array( 1, 'мәтін-астында', 'text-bottom' ),
223224 'int' => array( 0, 'ІШКІ:', 'INT:' ),
224225 'sitename' => array( 1, 'ТОРАПАТАУЫ', 'SITENAME' ),
225226 'ns' => array( 0, 'ЕА:', 'ЕСІМАЯ:', 'NS:' ),
@@ -1075,7 +1076,7 @@
10761077 'notextmatches' => 'Еш бет мәтіні сәйкес емес',
10771078 'prevn' => 'алдыңғы $1',
10781079 'nextn' => 'келесі $1',
1079 -'viewprevnext' => 'Көрсетілуі: ($1) ($2) ($3) жазба.',
 1080+'viewprevnext' => 'Көрсетілуі: ($1) ($2) ($3) жазба',
10801081 'showingresults' => "Төменде нөмір '''$2''' орнынан бастап, жеткенше {{PLURAL:$1|'''1''' нәтиже|'''$1''' нәтиже}} көрсетілген.",
10811082 'showingresultsnum' => "Төменде нөмір '''$2''' орнынан бастап {{PLURAL:$3|'''1''' нәтиже|'''$3''' нәтиже}} көрсетілген.",
10821083 'nonefound' => "'''Аңғартпа''': Табу сәтсіз бітуі жиі «болған» және «деген» сияқты
@@ -1090,6 +1091,7 @@
10911092 # Preferences page
10921093 'preferences' => 'Баптаулар',
10931094 'mypreferences' => 'Баптауым',
 1095+'prefs-edits' => 'Түзету саны:',
10941096 'prefsnologin' => 'Кірмегенсіз',
10951097 'prefsnologintext' => 'Баптауларды қалау үшін алдын ала [[{{ns:special}}:Userlogin|кіруіңіз]] қажет.',
10961098 'prefsreset' => 'Баптаулар арқаудан қайта орнатылды.',
@@ -1666,6 +1668,7 @@
16671669 Мына <strong>$1</strong> беттің ағымдық баптаулары:',
16681670 'protect-cascadeon' => 'Бұл бет ағымда қорғалған, себебі: осы бет баулы қорғауы бар келесі {{PLURAL:$1|бетке|беттерге}} кірістірілген. Бұл беттің қорғау деңгейін өзгерте аласыз, бірақ бұл баулы қорғауға ықпал етпейді.',
16691671 'protect-default' => '(әдепкі)',
 1672+'protect-fallback' => '«$1» рұқсаты қажет болды',
16701673 'protect-level-autoconfirmed' => 'Тіркелгісіз пайдаланушыларға тиым',
16711674 'protect-level-sysop' => 'Тек әкімшілерге рұқсат',
16721675 'protect-summary-cascade' => 'баулы',
@@ -2222,17 +2225,25 @@
22232226 'imagemaxsize' => 'Сипаттамасы бетіндегі суреттің мөлшерін шектеуі:',
22242227 'thumbsize' => 'Нобай мөлшері:',
22252228 'widthheight' => '$1 × $2',
 2229+'widthheightpage' => '$1 × $2, $3 бет',
22262230 'file-info' => 'Файл мөлшері: $1, MIME түрі: $2',
22272231 'file-info-size' => '($1 × $2 пиксел, файл мөлшері: $3, MIME түрі: $4)',
22282232 'file-nohires' => '<small>Жоғары ажыратылымдығы жетімсіз.</small>',
2229 -'file-svg' => '<small>Бұл шығынсыз созылғыш векторлық суреті. Негізгі мөлшері: $1 × $2 пиксел.</small>',
 2233+'svg-long-desc' => '(SVG файлы, кесімді $1 × $2 пиксел, файл мөлшері: $3)',
22302234 'show-big-image' => 'Жоғары ажыратылымды',
22312235 'show-big-image-thumb' => '<small>Қарап шығу мөлшері: $1 × $2 пиксел</small>',
22322236
 2237+# Special:Newimages
22332238 'newimages' => 'Ең жаңа файлдар қоймасы',
22342239 'showhidebots' => '(боттарды $1)',
22352240 'noimages' => 'Көретін ештеңе жоқ.',
22362241
 2242+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
 2243+'video-dims' => '$1, $2 × $3',
 2244+'seconds-abbrev' => 'с',
 2245+'minutes-abbrev' => 'мин',
 2246+'hours-abbrev' => 'сағ',
 2247+
22372248 # Bad image list
22382249 'bad_image_list' => 'Пішімі төмендегідей:
22392250
Index: branches/liquidthreads/languages/messages/MessagesBg.php
@@ -114,10 +114,10 @@
115115 'img_sub' => array( 1, 'sub' ),
116116 'img_super' => array( 1, 'super', 'sup' ),
117117 'img_top' => array( 1, 'top' ),
118 - 'img_text-top' => array( 1, 'text-top' ),
 118+ 'img_text_top' => array( 1, 'text-top' ),
119119 'img_middle' => array( 1, 'middle' ),
120120 'img_bottom' => array( 1, 'bottom' ),
121 - 'img_text-bottom' => array( 1, 'text-bottom' ),
 121+ 'img_text_bottom' => array( 1, 'text-bottom' ),
122122 'int' => array( 0, 'INT:', 'ВЪТР:'),
123123 'sitename' => array( 1, 'SITENAME', 'ИМЕНАСАЙТА'),
124124 'ns' => array( 0, 'NS:', 'ИП:' ),
Index: branches/liquidthreads/languages/Language.php
@@ -1824,6 +1824,73 @@
18251825 wfProfileOut( __METHOD__ );
18261826 return array( $wikiUpperChars, $wikiLowerChars );
18271827 }
 1828+
 1829+ function formatTimePeriod( $seconds ) {
 1830+ if ( $seconds < 10 ) {
 1831+ return $this->formatNum( sprintf( "%.1f", $seconds ) ) . wfMsg( 'seconds-abbrev' );
 1832+ } elseif ( $seconds < 60 ) {
 1833+ return $this->formatNum( round( $seconds ) ) . wfMsg( 'seconds-abbrev' );
 1834+ } elseif ( $seconds < 3600 ) {
 1835+ return $this->formatNum( floor( $seconds / 60 ) ) . wfMsg( 'minutes-abbrev' ) .
 1836+ $this->formatNum( round( fmod( $seconds, 60 ) ) ) . wfMsg( 'seconds-abbrev' );
 1837+ } else {
 1838+ $hours = floor( $seconds / 3600 );
 1839+ $minutes = floor( ( $seconds - $hours * 3600 ) / 60 );
 1840+ $secondsPart = round( $seconds - $hours * 3600 - $minutes * 60 );
 1841+ return $this->formatNum( $hours ) . wfMsg( 'hours-abbrev' ) .
 1842+ $this->formatNum( $minutes ) . wfMsg( 'minutes-abbrev' ) .
 1843+ $this->formatNum( $secondsPart ) . wfMsg( 'seconds-abbrev' );
 1844+ }
 1845+ }
 1846+
 1847+ function formatBitrate( $bps ) {
 1848+ $units = array( 'bps', 'kbps', 'Mbps', 'Gbps' );
 1849+ if ( $bps <= 0 ) {
 1850+ return $this->formatNum( $bps ) . $units[0];
 1851+ }
 1852+ $unitIndex = floor( log10( $bps ) / 3 );
 1853+ $mantissa = $bps / pow( 1000, $unitIndex );
 1854+ if ( $mantissa < 10 ) {
 1855+ $mantissa = round( $mantissa, 1 );
 1856+ } else {
 1857+ $mantissa = round( $mantissa );
 1858+ }
 1859+ return $this->formatNum( $mantissa ) . $units[$unitIndex];
 1860+ }
 1861+
 1862+ /**
 1863+ * Format a size in bytes for output, using an appropriate
 1864+ * unit (B, KB, MB or GB) according to the magnitude in question
 1865+ *
 1866+ * @param $size Size to format
 1867+ * @return string Plain text (not HTML)
 1868+ */
 1869+ function formatSize( $size ) {
 1870+ // For small sizes no decimal places necessary
 1871+ $round = 0;
 1872+ if( $size > 1024 ) {
 1873+ $size = $size / 1024;
 1874+ if( $size > 1024 ) {
 1875+ $size = $size / 1024;
 1876+ // For MB and bigger two decimal places are smarter
 1877+ $round = 2;
 1878+ if( $size > 1024 ) {
 1879+ $size = $size / 1024;
 1880+ $msg = 'size-gigabytes';
 1881+ } else {
 1882+ $msg = 'size-megabytes';
 1883+ }
 1884+ } else {
 1885+ $msg = 'size-kilobytes';
 1886+ }
 1887+ } else {
 1888+ $msg = 'size-bytes';
 1889+ }
 1890+ $size = round( $size, $round );
 1891+ $text = $this->getMessageFromDB( $msg );
 1892+ return str_replace( '$1', $this->formatNum( $size ), $text );
 1893+ }
18281894 }
18291895
18301896
 1897+
Property changes on: branches/liquidthreads
___________________________________________________________________
Modified: svnmerge-integrated
18311898 - /trunk/phase3:1-24754
18321899 + /trunk/phase3:1-24865

Follow-up revisions

RevisionCommit summaryAuthorDate
r25112* (bug 10367) Update Kazakh translations...raymond08:01, 24 August 2007
r25126Merged revisions 25109-25125 via svnmerge from...david22:55, 24 August 2007
r25196* (bug 10367) Update Kazakh translations...raymond14:25, 27 August 2007
r25223Merged revisions 25126-25214 via svnmerge from...david07:39, 28 August 2007
r25489* (bug 10367) Update Kazakh translations...raymond17:14, 4 September 2007
r25530Merged revisions 25454-25529 via svnmerge from...david08:28, 5 September 2007
r25622* (bug 10367) Update Kazakh translations...raymond09:20, 7 September 2007
r25754Merged revisions 25607-25751 via svnmerge from...david23:02, 10 September 2007
r25843* (bug 7890) Special:BrokenRedirects links deleted redirects to a non-existen...rotem04:21, 14 September 2007
r25849Merged revisions 25804-25848 via svnmerge from...david06:54, 14 September 2007
r26291* (bug 10367) Update Kazakh translations...raymond21:19, 1 October 2007
r26331Merged revisions 26280-26330 via svnmerge from...david22:28, 2 October 2007
r26935* (bug 10367) Kazakh message updates, by AlefZetraymond22:07, 24 October 2007
r27849* (bug 10367) Update Kazakh translations...raymond16:32, 26 November 2007

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r23472* (bug 10367) Update Kazakh translations...raymond10:35, 27 June 2007
r23581Merged revisions 23406-23580 via svnmerge from...david04:50, 30 June 2007
r24493* (bug 10367) Update Kazakh translations...raymond15:26, 31 July 2007
r24536* (bug 10367) Update Kazakh translations...raymond06:24, 2 August 2007
r24631Merged revisions 24480-24600 via svnmerge from...david18:39, 6 August 2007
r24710* (bug 10367) Update Kazakh translations...raymond20:46, 9 August 2007
r24739* (bug 10367) Update Kazakh translations...raymond07:52, 13 August 2007
r24755Merged revisions 24694-24754 via svnmerge from...david19:48, 13 August 2007
r24756Tweak comment to be clearer these are rights, not groupsrobchurch19:49, 13 August 2007
r24757don't use unspecific paths in require_once()'s ... they break with default in...brion19:56, 13 August 2007
r24758Show edit count in user preferencesrobchurch20:03, 13 August 2007
r24763Omit . from "viewprevnext"robchurch00:11, 14 August 2007
r24764Document all methods and mark them publicrobchurch01:14, 14 August 2007
r24765Tweak confusing comment for User::whoIsReal()robchurch01:17, 14 August 2007
r24766Update.rotem01:27, 14 August 2007
r24768Minor whitespace cleanup ... rmvd closing ?>amidaniel01:58, 14 August 2007
r24770* (bug 10367) Update Kazakh translations...raymond06:40, 14 August 2007
r24771Update Germanraymond06:47, 14 August 2007
r24784Removing magic word __START__ from message file, seems to be unused and a rel...raymond10:28, 14 August 2007
r24790Indonesian (id) localisation updates.ivanlanin15:52, 14 August 2007
r24800Update.rotem03:21, 15 August 2007
r24802New translations for dawegge07:51, 15 August 2007
r24803* (bug 10938) Update Swedish translations...raymond09:08, 15 August 2007
r24804* (bug 10892) Update Chinese translations...raymond09:12, 15 August 2007
r24805* (bug 10888) typo...raymond09:16, 15 August 2007
r24808Basic integrated audio/video support, with Ogg implementation....tstarling10:50, 15 August 2007
r24809Don't show warning if the file is missingtstarling10:50, 15 August 2007
r24822* Fix syntax error in translations of magic words in Romanian language...raymond14:17, 15 August 2007
r24823Language::lc() is non-staticrobchurch15:32, 15 August 2007
r24824* (bug 10942) Update French. Patch by Bertrand GRONDIN.raymond15:33, 15 August 2007
r24825Mark static methods as suchrobchurch15:37, 15 August 2007
r24827Correct grammer for dawegge17:38, 15 August 2007
r24828New translations for dawegge17:45, 15 August 2007
r24829Use subtitles to make this consistent with delete/protect and the likeaaron17:54, 15 August 2007
r24831* (bug 10946) Update French. Patch by Bertrand GRONDIN.raymond19:04, 15 August 2007
r24832Reverting r24829; using subtitles leads to an unclear UI, and is a practice t...robchurch19:15, 15 August 2007
r24833Updating language maintenance scriptsraymond19:29, 15 August 2007
r24836(bug 10937) Distinguish overwritten files in upload log; use the `upload/over...robchurch19:52, 15 August 2007
r24837Coerce mOutputHooks to an array; makes things backwards-compatible with old c...robchurch20:46, 15 August 2007
r24838(bug 8737) Fix warnings caused by incorrect use of `/dev/null` when piping pr...robchurch21:44, 15 August 2007
r24839* Updating language maintenance scripts...raymond22:04, 15 August 2007
r24841*Add ArticleUpdateBeforeRedirect hook, to allow for the page to redirect out ...aaron22:13, 15 August 2007
r24844Document hooks in release notes, too, please. Also tweak some odd whitespace ...robchurch22:43, 15 August 2007
r24845Tweak ArticleUpdateBeforeRedirect hook a tadaaron22:52, 15 August 2007
r24847whitespacerobchurch22:59, 15 August 2007
r24848Update and fixes.rotem00:24, 16 August 2007
r24849* Fix bug with Protected namespace message when protected namespace is NS_MAIN....amidaniel07:05, 16 August 2007
r24850Haha .. woops. Left some debugging in there :)amidaniel07:23, 16 August 2007
r24859(bug 7890) Don't list redirects to special pages in Special:BrokenRedirects...robchurch20:41, 16 August 2007
r24860Ditch this; uses old schema, redundant to deleteUnusedAccounts.phprobchurch20:52, 16 August 2007
r24863* (bug 10367) Update Kazakh translations...raymond21:36, 16 August 2007

Status & tagging log