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 @@ |
7 | 7 | $optionsWithArgs = array( 'm' ); |
8 | 8 | |
9 | 9 | require_once( dirname(__FILE__) . '/../commandLine.inc' ); |
10 | | - require_once( 'includes/ExternalStoreDB.php' ); |
11 | 10 | |
12 | 11 | resolveStubs(); |
13 | 12 | } |
Index: branches/liquidthreads/maintenance/storage/checkStorage.php |
— | — | @@ -8,9 +8,6 @@ |
9 | 9 | |
10 | 10 | if ( !defined( 'MEDIAWIKI' ) ) { |
11 | 11 | require_once( dirname(__FILE__) . '/../commandLine.inc' ); |
12 | | - require_once( 'ExternalStore.php' ); |
13 | | - require_once( 'ExternalStoreDB.php' ); |
14 | | - require_once( 'SpecialImport.php' ); |
15 | 12 | |
16 | 13 | $cs = new CheckStorage; |
17 | 14 | $fix = isset( $options['fix'] ); |
Index: branches/liquidthreads/maintenance/language/messages.inc |
— | — | @@ -643,6 +643,7 @@ |
644 | 644 | 'preferences', |
645 | 645 | 'preferences-summary', |
646 | 646 | 'mypreferences', |
| 647 | + 'prefs-edits', |
647 | 648 | 'prefsnologin', |
648 | 649 | 'prefsnologintext', |
649 | 650 | 'prefsreset', |
— | — | @@ -813,6 +814,7 @@ |
814 | 815 | 'uploadwarning', |
815 | 816 | 'savefile', |
816 | 817 | 'uploadedimage', |
| 818 | + 'overwroteimage', |
817 | 819 | 'uploaddisabled', |
818 | 820 | 'uploaddisabledtext', |
819 | 821 | 'uploadscripted', |
— | — | @@ -1690,10 +1692,11 @@ |
1691 | 1693 | 'imagemaxsize', |
1692 | 1694 | 'thumbsize', |
1693 | 1695 | 'widthheight', |
| 1696 | + 'widthheightpage', |
1694 | 1697 | 'file-info', |
1695 | 1698 | 'file-info-size', |
1696 | 1699 | 'file-nohires', |
1697 | | - 'file-svg', |
| 1700 | + 'svg-long-desc', |
1698 | 1701 | 'show-big-image', |
1699 | 1702 | 'show-big-image-thumb', |
1700 | 1703 | ), |
— | — | @@ -1703,6 +1706,12 @@ |
1704 | 1707 | 'showhidebots', |
1705 | 1708 | 'noimages', |
1706 | 1709 | ), |
| 1710 | + 'video-info' => array( |
| 1711 | + 'video-dims', |
| 1712 | + 'seconds-abbrev', |
| 1713 | + 'minutes-abbrev', |
| 1714 | + 'hours-abbrev', |
| 1715 | + ), |
1707 | 1716 | 'badimagelist' => array( |
1708 | 1717 | 'bad_image_list', |
1709 | 1718 | ), |
— | — | @@ -2283,7 +2292,8 @@ |
2284 | 2293 | 'patrol-log' => 'Patrol log', |
2285 | 2294 | 'imagedeletion' => 'Image deletion', |
2286 | 2295 | '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', |
2288 | 2298 | 'badimagelist' => 'Bad image list', |
2289 | 2299 | 'variantname-zh' => "Short names for language variants used for language conversion links. |
2290 | 2300 | To disable showing a particular link, set it to 'disable', e.g. |
— | — | @@ -2374,5 +2384,3 @@ |
2375 | 2385 | 'enotif_body', |
2376 | 2386 | 'allmessagesnotsupportedDB', |
2377 | 2387 | ); |
2378 | | - |
2379 | | -?> |
Index: branches/liquidthreads/maintenance/language/messageTypes.inc |
— | — | @@ -195,6 +195,10 @@ |
196 | 196 | 'isbn', |
197 | 197 | 'sp-contributions-explain', |
198 | 198 | 'sorbs', |
| 199 | + 'video-dims', |
| 200 | + 'seconds-abbrev', |
| 201 | + 'minutes-abbrev', |
| 202 | + 'hours-abbrev', |
199 | 203 | ); |
200 | 204 | |
201 | 205 | /** EXIF messages, which may be set as optional in several checks, but are generally mandatory */ |
— | — | @@ -417,5 +421,3 @@ |
418 | 422 | 'exif-gpsdirection-t', |
419 | 423 | 'exif-gpsdirection-m', |
420 | 424 | ); |
421 | | - |
422 | | -?> |
Index: branches/liquidthreads/docs/hooks.txt |
— | — | @@ -332,6 +332,11 @@ |
333 | 333 | &$pcache: whether to try the parser cache or not |
334 | 334 | &$outputDone: whether the output for this page finished or not |
335 | 335 | |
| 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 | + |
336 | 341 | 'AuthPluginSetup': update or replace authentication plugin object ($wgAuth) |
337 | 342 | Gives a chance for an extension to set it programattically to a variable class. |
338 | 343 | &$auth: the $wgAuth object, probably a stub |
Index: branches/liquidthreads/includes/AutoLoader.php |
— | — | @@ -118,6 +118,7 @@ |
119 | 119 | 'LogPage' => 'includes/LogPage.php', |
120 | 120 | 'MacBinary' => 'includes/MacBinary.php', |
121 | 121 | 'MagicWord' => 'includes/MagicWord.php', |
| 122 | + 'MagicWordArray' => 'includes/MagicWord.php', |
122 | 123 | 'MathRenderer' => 'includes/Math.php', |
123 | 124 | 'MediaTransformOutput' => 'includes/MediaTransformOutput.php', |
124 | 125 | 'ThumbnailImage' => 'includes/MediaTransformOutput.php', |
— | — | @@ -385,3 +386,4 @@ |
386 | 387 | } |
387 | 388 | |
388 | 389 | |
| 390 | + |
Index: branches/liquidthreads/includes/SpecialAllmessages.php |
— | — | @@ -25,7 +25,8 @@ |
26 | 26 | $navText = wfMsg( 'allmessagestext' ); |
27 | 27 | |
28 | 28 | # Make sure all extension messages are available |
29 | | - MessageCache::loadAllMessages(); |
| 29 | + |
| 30 | + $wgMessageCache->loadAllMessages(); |
30 | 31 | |
31 | 32 | $sortedArray = array_merge( Language::getMessagesFor( 'en' ), $wgMessageCache->getExtensionMessagesFor( 'en' ) ); |
32 | 33 | ksort( $sortedArray ); |
Index: branches/liquidthreads/includes/Article.php |
— | — | @@ -269,13 +269,16 @@ |
270 | 270 | 'page_random', |
271 | 271 | 'page_touched', |
272 | 272 | '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', |
276 | 278 | $fields, |
277 | 279 | $conditions, |
278 | | - 'Article::pageData' ); |
279 | | - wfRunHooks( 'ArticlePageDataAfter', array( &$this , &$row ) ) ; |
| 280 | + __METHOD__ |
| 281 | + ); |
| 282 | + wfRunHooks( 'ArticlePageDataAfter', array( &$this, &$row ) ); |
280 | 283 | return $row ; |
281 | 284 | } |
282 | 285 | |
— | — | @@ -1250,7 +1253,10 @@ |
1251 | 1254 | } |
1252 | 1255 | } |
1253 | 1256 | |
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 ); |
1255 | 1261 | } |
1256 | 1262 | return $good; |
1257 | 1263 | } |
— | — | @@ -1486,12 +1492,14 @@ |
1487 | 1493 | * @param boolean $noRedir Add redirect=no |
1488 | 1494 | * @param string $sectionAnchor section to redirect to, including "#" |
1489 | 1495 | */ |
1490 | | - function doRedirect( $noRedir = false, $sectionAnchor = '' ) { |
| 1496 | + function doRedirect( $noRedir = false, $sectionAnchor = '', $extraq = '' ) { |
1491 | 1497 | global $wgOut; |
1492 | 1498 | if ( $noRedir ) { |
1493 | 1499 | $query = 'redirect=no'; |
| 1500 | + if( $extraq ) |
| 1501 | + $query .= "&$query"; |
1494 | 1502 | } else { |
1495 | | - $query = ''; |
| 1503 | + $query = $extraq; |
1496 | 1504 | } |
1497 | 1505 | $wgOut->redirect( $this->mTitle->getFullURL( $query ) . $sectionAnchor ); |
1498 | 1506 | } |
Index: branches/liquidthreads/includes/SpecialBrokenRedirects.php |
— | — | @@ -35,7 +35,8 @@ |
36 | 36 | FROM $redirect AS rd |
37 | 37 | JOIN $page p1 ON (rd.rd_from=p1.page_id) |
38 | 38 | 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"; |
40 | 41 | return $sql; |
41 | 42 | } |
42 | 43 | |
Index: branches/liquidthreads/includes/MimeMagic.php |
— | — | @@ -374,7 +374,9 @@ |
375 | 375 | $mime = $this->detectMimeType( $file, $ext ); |
376 | 376 | |
377 | 377 | // Read a chunk of the file |
| 378 | + wfSuppressWarnings(); |
378 | 379 | $f = fopen( $file, "rt" ); |
| 380 | + wfRestoreWarnings(); |
379 | 381 | if( !$f ) return "unknown/unknown"; |
380 | 382 | $head = fread( $f, 1024 ); |
381 | 383 | fclose( $f ); |
Index: branches/liquidthreads/includes/GlobalFunctions.php |
— | — | @@ -2297,3 +2297,27 @@ |
2298 | 2298 | function wfBoolToStr( $value ) { |
2299 | 2299 | return $value ? 'true' : 'false'; |
2300 | 2300 | } |
| 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 @@ |
593 | 593 | |
594 | 594 | $userInformationHtml = |
595 | 595 | $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 | + ); |
597 | 601 | |
598 | 602 | if( wfRunHooks( 'PreferencesUserInformationPanel', array( $this, &$userInformationHtml ) ) ) { |
599 | 603 | $wgOut->addHtml( $userInformationHtml ); |
Index: branches/liquidthreads/includes/ImagePage.php |
— | — | @@ -16,6 +16,7 @@ |
17 | 17 | class ImagePage extends Article { |
18 | 18 | |
19 | 19 | /* private */ var $img; // Image object this page is shown for |
| 20 | + /* private */ var $repo; |
20 | 21 | var $mExtraDescription = false; |
21 | 22 | |
22 | 23 | function __construct( $title ) { |
— | — | @@ -24,6 +25,7 @@ |
25 | 26 | if ( !$this->img ) { |
26 | 27 | $this->img = wfLocalFile( $this->mTitle ); |
27 | 28 | } |
| 29 | + $this->repo = $this->img->repo; |
28 | 30 | } |
29 | 31 | |
30 | 32 | /** |
— | — | @@ -46,6 +48,7 @@ |
47 | 49 | return Article::view(); |
48 | 50 | |
49 | 51 | if ($wgShowEXIF && $this->img->exists()) { |
| 52 | + // FIXME: bad interface, see note on MediaHandler::formatMetadata(). |
50 | 53 | $formattedMetadata = $this->img->formatMetadata(); |
51 | 54 | $showmeta = $formattedMetadata !== false; |
52 | 55 | } else { |
— | — | @@ -115,6 +118,8 @@ |
116 | 119 | /** |
117 | 120 | * Make a table with metadata to be shown in the output page. |
118 | 121 | * |
| 122 | + * FIXME: bad interface, see note on MediaHandler::formatMetadata(). |
| 123 | + * |
119 | 124 | * @access private |
120 | 125 | * |
121 | 126 | * @param array $exif The array containing the EXIF data |
— | — | @@ -188,14 +193,15 @@ |
189 | 194 | $mime = $this->img->getMimeType(); |
190 | 195 | $showLink = false; |
191 | 196 | $linkAttribs = array( 'href' => $full_url ); |
| 197 | + $longDesc = $this->img->getLongDesc(); |
192 | 198 | |
193 | | - wfRunHooks( 'ImageOpenShowImageInlineBefore', array( &$this , &$wgOut ) ) ; |
| 199 | + wfRunHooks( 'ImageOpenShowImageInlineBefore', array( &$this , &$wgOut ) ) ; |
194 | 200 | |
195 | | - if ( $this->img->allowInlineDisplay() and $width and $height) { |
| 201 | + if ( $this->img->allowInlineDisplay() ) { |
196 | 202 | # image |
197 | 203 | |
198 | 204 | # "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 ); |
200 | 206 | # We'll show a thumbnail of this image |
201 | 207 | if ( $width > $maxWidth || $height > $maxHeight ) { |
202 | 208 | # Calculate the thumbnail size. |
— | — | @@ -229,7 +235,7 @@ |
230 | 236 | } else { |
231 | 237 | $anchorclose .= |
232 | 238 | $msgsmall . |
233 | | - '<br />' . Xml::tags( 'a', $linkAttribs, $msgbig ) . ' ' . $msgsize; |
| 239 | + '<br />' . Xml::tags( 'a', $linkAttribs, $msgbig ) . ' ' . $longDesc; |
234 | 240 | } |
235 | 241 | |
236 | 242 | if ( $this->img->isMultipage() ) { |
— | — | @@ -301,26 +307,17 @@ |
302 | 308 | |
303 | 309 | |
304 | 310 | if ($showLink) { |
305 | | - // Workaround for incorrect MIME type on SVGs uploaded in previous versions |
306 | | - if ($mime == 'image/svg') $mime = 'image/svg+xml'; |
307 | | - |
308 | 311 | $filename = wfEscapeWikiText( $this->img->getName() ); |
309 | 312 | $info = wfMsg( 'file-info', $sk->formatSize( $this->img->getSize() ), $mime ); |
310 | | - $infores = ''; |
311 | 313 | |
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 | | - |
317 | 314 | global $wgContLang; |
318 | 315 | $dirmark = $wgContLang->getDirMark(); |
319 | 316 | if (!$this->img->isSafeFile()) { |
320 | 317 | $warning = wfMsg( 'mediawarning' ); |
321 | 318 | $wgOut->addWikiText( <<<EOT |
322 | | -<div class="fullMedia">$infores |
| 319 | +<div class="fullMedia"> |
323 | 320 | <span class="dangerousLink">[[Media:$filename|$filename]]</span>$dirmark |
324 | | -<span class="fileInfo"> $info</span> |
| 321 | +<span class="fileInfo"> $longDesc</span> |
325 | 322 | </div> |
326 | 323 | |
327 | 324 | <div class="mediaWarning">$warning</div> |
— | — | @@ -328,8 +325,8 @@ |
329 | 326 | ); |
330 | 327 | } else { |
331 | 328 | $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> |
334 | 331 | </div> |
335 | 332 | EOT |
336 | 333 | ); |
— | — | @@ -421,18 +418,22 @@ |
422 | 419 | |
423 | 420 | if ( $line ) { |
424 | 421 | $list = new ImageHistoryList( $sk, $this->img ); |
| 422 | + $file = $this->repo->newFileFromRow( $line ); |
| 423 | + $dims = $file->getDimensionsString(); |
425 | 424 | $s = $list->beginImageHistoryList() . |
426 | 425 | $list->imageHistoryLine( true, wfTimestamp(TS_MW, $line->img_timestamp), |
427 | 426 | $this->mTitle->getDBkey(), $line->img_user, |
428 | 427 | $line->img_user_text, $line->img_size, $line->img_description, |
429 | | - $line->img_width, $line->img_height |
| 428 | + $dims |
430 | 429 | ); |
431 | 430 | |
432 | 431 | 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 |
437 | 438 | ); |
438 | 439 | } |
439 | 440 | $s .= $list->endImageHistoryList(); |
— | — | @@ -655,7 +656,7 @@ |
656 | 657 | */ |
657 | 658 | class ImageHistoryList { |
658 | 659 | |
659 | | - protected $img, $skin, $title; |
| 660 | + protected $img, $skin, $title, $repo; |
660 | 661 | |
661 | 662 | public function __construct( $skin, $img ) { |
662 | 663 | $this->skin = $skin; |
— | — | @@ -682,7 +683,7 @@ |
683 | 684 | return "</table>\n"; |
684 | 685 | } |
685 | 686 | |
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 ) { |
687 | 688 | global $wgUser, $wgLang, $wgTitle, $wgContLang; |
688 | 689 | $local = $this->img->isLocal(); |
689 | 690 | $row = ''; |
— | — | @@ -740,10 +741,7 @@ |
741 | 742 | $row .= '</td>'; |
742 | 743 | |
743 | 744 | // 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>'; |
748 | 746 | |
749 | 747 | // File size |
750 | 748 | $row .= '<td class="mw-imagepage-filesize">' . $this->skin->formatSize( $size ) . '</td>'; |
— | — | @@ -754,4 +752,4 @@ |
755 | 753 | return "<tr>{$row}</tr>\n"; |
756 | 754 | } |
757 | 755 | |
758 | | -} |
\ No newline at end of file |
| 756 | +} |
Index: branches/liquidthreads/includes/SpecialVersion.php |
— | — | @@ -148,10 +148,14 @@ |
149 | 149 | |
150 | 150 | /** Callback to sort extensions by type */ |
151 | 151 | function compare( $a, $b ) { |
152 | | - if ( $a['name'] === $b['name'] ) |
| 152 | + global $wgLang; |
| 153 | + if( $a['name'] === $b['name'] ) { |
153 | 154 | 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 | + } |
156 | 160 | } |
157 | 161 | |
158 | 162 | function formatCredits( $name, $version = null, $author = null, $url = null, $description = null) { |
Index: branches/liquidthreads/includes/media/SVG.php |
— | — | @@ -14,7 +14,7 @@ |
15 | 15 | } |
16 | 16 | } |
17 | 17 | |
18 | | - function mustRender() { |
| 18 | + function mustRender( $file ) { |
19 | 19 | return true; |
20 | 20 | } |
21 | 21 | |
— | — | @@ -91,5 +91,12 @@ |
92 | 92 | function getThumbType( $ext, $mime ) { |
93 | 93 | return array( 'png', 'image/png' ); |
94 | 94 | } |
| 95 | + |
| 96 | + function getLongDesc( $file ) { |
| 97 | + global $wgLang; |
| 98 | + return wfMsg( 'svg-long-desc', $file->getWidth(), $file->getHeight(), |
| 99 | + $wgLang->formatSize( $file->getSize() ) ); |
| 100 | + } |
95 | 101 | } |
96 | 102 | |
| 103 | + |
Index: branches/liquidthreads/includes/media/DjVu.php |
— | — | @@ -17,6 +17,13 @@ |
18 | 18 | function mustRender() { return true; } |
19 | 19 | function isMultiPage() { return true; } |
20 | 20 | |
| 21 | + function getParamMap() { |
| 22 | + return array( |
| 23 | + 'img_width' => 'width', |
| 24 | + 'img_page' => 'page', |
| 25 | + ); |
| 26 | + } |
| 27 | + |
21 | 28 | function validateParam( $name, $value ) { |
22 | 29 | if ( in_array( $name, array( 'width', 'height', 'page' ) ) ) { |
23 | 30 | if ( $value <= 0 ) { |
Index: branches/liquidthreads/includes/media/Generic.php |
— | — | @@ -36,6 +36,12 @@ |
37 | 37 | return self::$handlers[$class]; |
38 | 38 | } |
39 | 39 | |
| 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 | + |
40 | 46 | /* |
41 | 47 | * Validate a thumbnail parameter at parse time. |
42 | 48 | * Return true to accept the parameter, and false to reject it. |
— | — | @@ -126,20 +132,20 @@ |
127 | 133 | /** |
128 | 134 | * True if the handled types can be transformed |
129 | 135 | */ |
130 | | - function canRender() { return true; } |
| 136 | + function canRender( $file ) { return true; } |
131 | 137 | /** |
132 | 138 | * True if handled types cannot be displayed directly in a browser |
133 | 139 | * but can be rendered |
134 | 140 | */ |
135 | | - function mustRender() { return false; } |
| 141 | + function mustRender( $file ) { return false; } |
136 | 142 | /** |
137 | 143 | * True if the type has multi-page capabilities |
138 | 144 | */ |
139 | | - function isMultiPage() { return false; } |
| 145 | + function isMultiPage( $file ) { return false; } |
140 | 146 | /** |
141 | 147 | * Page count for a multi-page document, false if unsupported or unknown |
142 | 148 | */ |
143 | | - function pageCount() { return false; } |
| 149 | + function pageCount( $file ) { return false; } |
144 | 150 | /** |
145 | 151 | * False if the handler is disabled for all files |
146 | 152 | */ |
— | — | @@ -177,10 +183,18 @@ |
178 | 184 | * |
179 | 185 | * The function should return false if there is no metadata to display. |
180 | 186 | */ |
| 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 | + */ |
181 | 195 | function formatMetadata( $image, $metadata ) { |
182 | 196 | return false; |
183 | 197 | } |
184 | | - |
| 198 | + |
185 | 199 | protected static function addMeta( &$array, $visibility, $type, $id, $value, $param = false ) { |
186 | 200 | $array[$visibility][] = array( |
187 | 201 | 'id' => "$type-$id", |
— | — | @@ -189,6 +203,26 @@ |
190 | 204 | ); |
191 | 205 | } |
192 | 206 | |
| 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 ) {} |
193 | 227 | } |
194 | 228 | |
195 | 229 | /** |
— | — | @@ -197,6 +231,18 @@ |
198 | 232 | * @addtogroup Media |
199 | 233 | */ |
200 | 234 | 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 | + |
201 | 247 | function validateParam( $name, $value ) { |
202 | 248 | if ( in_array( $name, array( 'width', 'height' ) ) ) { |
203 | 249 | if ( $value <= 0 ) { |
— | — | @@ -325,6 +371,31 @@ |
326 | 372 | wfRestoreWarnings(); |
327 | 373 | return $gis; |
328 | 374 | } |
| 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 | + } |
329 | 399 | } |
330 | 400 | |
331 | 401 | |
| 402 | + |
Index: branches/liquidthreads/includes/MagicWord.php |
— | — | @@ -386,6 +386,181 @@ |
387 | 387 | function isCaseSensitive() { |
388 | 388 | return $this->mCaseSensitive; |
389 | 389 | } |
| 390 | + |
| 391 | + function getId() { |
| 392 | + return $this->mId; |
| 393 | + } |
390 | 394 | } |
391 | 395 | |
| 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; |
392 | 403 | |
| 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 @@ |
20 | 20 | $mExternalLinks, # External link URLs, in the key only |
21 | 21 | $mNewSection, # Show a new section link? |
22 | 22 | $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 |
24 | 25 | |
25 | 26 | /** |
26 | 27 | * Overridden title for display |
— | — | @@ -44,6 +45,7 @@ |
45 | 46 | $this->mNoGallery = false; |
46 | 47 | $this->mHeadItems = array(); |
47 | 48 | $this->mTemplateIds = array(); |
| 49 | + $this->mOutputHooks = array(); |
48 | 50 | } |
49 | 51 | |
50 | 52 | function getText() { return $this->mText; } |
— | — | @@ -58,6 +60,7 @@ |
59 | 61 | function &getExternalLinks() { return $this->mExternalLinks; } |
60 | 62 | function getNoGallery() { return $this->mNoGallery; } |
61 | 63 | function getSubtitle() { return $this->mSubtitle; } |
| 64 | + function getOutputHooks() { return (array)$this->mOutputHooks; } |
62 | 65 | |
63 | 66 | function containsOldMagic() { return $this->mContainsOldMagic; } |
64 | 67 | function setText( $text ) { return wfSetVar( $this->mText, $text ); } |
— | — | @@ -71,6 +74,10 @@ |
72 | 75 | function addLanguageLink( $t ) { $this->mLanguageLinks[] = $t; } |
73 | 76 | function addExternalLink( $url ) { $this->mExternalLinks[$url] = 1; } |
74 | 77 | |
| 78 | + function addOutputHook( $hook, $data = false ) { |
| 79 | + $this->mOutputHooks[] = array( $hook, $data ); |
| 80 | + } |
| 81 | + |
75 | 82 | function setNewSection( $value ) { |
76 | 83 | $this->mNewSection = (bool)$value; |
77 | 84 | } |
Index: branches/liquidthreads/includes/User.php |
— | — | @@ -311,14 +311,14 @@ |
312 | 312 | } |
313 | 313 | |
314 | 314 | /** |
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 |
319 | 319 | */ |
320 | 320 | static function whoIsReal( $id ) { |
321 | 321 | $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__ ); |
323 | 323 | } |
324 | 324 | |
325 | 325 | /** |
— | — | @@ -2527,7 +2527,8 @@ |
2528 | 2528 | * @static |
2529 | 2529 | */ |
2530 | 2530 | static function getGroupName( $group ) { |
2531 | | - MessageCache::loadAllMessages(); |
| 2531 | + global $wgMessageCache; |
| 2532 | + $wgMessageCache->loadAllMessages(); |
2532 | 2533 | $key = "group-$group"; |
2533 | 2534 | $name = wfMsg( $key ); |
2534 | 2535 | return $name == '' || wfEmptyMsg( $key, $name ) |
— | — | @@ -2541,7 +2542,8 @@ |
2542 | 2543 | * @static |
2543 | 2544 | */ |
2544 | 2545 | static function getGroupMember( $group ) { |
2545 | | - MessageCache::loadAllMessages(); |
| 2546 | + global $wgMessageCache; |
| 2547 | + $wgMessageCache->loadAllMessages(); |
2546 | 2548 | $key = "group-$group-member"; |
2547 | 2549 | $name = wfMsg( $key ); |
2548 | 2550 | return $name == '' || wfEmptyMsg( $key, $name ) |
— | — | @@ -2586,7 +2588,8 @@ |
2587 | 2589 | * @return mixed |
2588 | 2590 | */ |
2589 | 2591 | static function getGroupPage( $group ) { |
2590 | | - MessageCache::loadAllMessages(); |
| 2592 | + global $wgMessageCache; |
| 2593 | + $wgMessageCache->loadAllMessages(); |
2591 | 2594 | $page = wfMsgForContent( 'grouppage-' . $group ); |
2592 | 2595 | if( !wfEmptyMsg( 'grouppage-' . $group, $page ) ) { |
2593 | 2596 | $title = Title::newFromText( $page ); |
Index: branches/liquidthreads/includes/Title.php |
— | — | @@ -1096,7 +1096,6 @@ |
1097 | 1097 | * @return array Array of arrays of the arguments to wfMsg to explain permissions problems. |
1098 | 1098 | */ |
1099 | 1099 | private function getUserPermissionsErrorsInternal( $action, $user, $doExpensiveQueries = true ) { |
1100 | | - global $wgContLang; |
1101 | 1100 | $fname = 'Title::userCan'; |
1102 | 1101 | wfProfileIn( $fname ); |
1103 | 1102 | |
— | — | @@ -1111,7 +1110,12 @@ |
1112 | 1111 | } |
1113 | 1112 | |
1114 | 1113 | 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 ) ); |
1116 | 1120 | } |
1117 | 1121 | |
1118 | 1122 | if( $this->mDbkeyform == '_' ) { |
Index: branches/liquidthreads/includes/RecentChange.php |
— | — | @@ -258,7 +258,7 @@ |
259 | 259 | } |
260 | 260 | |
261 | 261 | # 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, |
263 | 263 | $oldId, $lastTimestamp, $bot = "default", $ip = '', $oldSize = 0, $newSize = 0, |
264 | 264 | $newId = 0) |
265 | 265 | { |
— | — | @@ -361,7 +361,7 @@ |
362 | 362 | } |
363 | 363 | |
364 | 364 | # 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 ) |
366 | 366 | { |
367 | 367 | if ( !$ip ) { |
368 | 368 | $ip = wfGetIP(); |
— | — | @@ -402,17 +402,17 @@ |
403 | 403 | $rc->save(); |
404 | 404 | } |
405 | 405 | |
406 | | - /* static */ function notifyMoveToNew( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) { |
| 406 | + public static function notifyMoveToNew( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) { |
407 | 407 | RecentChange::notifyMove( $timestamp, $oldTitle, $newTitle, $user, $comment, $ip, false ); |
408 | 408 | } |
409 | 409 | |
410 | | - /* static */ function notifyMoveOverRedirect( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) { |
| 410 | + public static function notifyMoveOverRedirect( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='' ) { |
411 | 411 | RecentChange::notifyMove( $timestamp, $oldTitle, $newTitle, $user, $comment, $ip, true ); |
412 | 412 | } |
413 | 413 | |
414 | 414 | # A log entry is different to an edit in that previous revisions are |
415 | 415 | # not kept |
416 | | - /*static*/ function notifyLog( $timestamp, &$title, &$user, $comment, $ip='', |
| 416 | + public static function notifyLog( $timestamp, &$title, &$user, $comment, $ip='', |
417 | 417 | $type, $action, $target, $logComment, $params ) |
418 | 418 | { |
419 | 419 | if ( !$ip ) { |
Index: branches/liquidthreads/includes/Namespace.php |
— | — | @@ -48,54 +48,67 @@ |
49 | 49 | class Namespace { |
50 | 50 | |
51 | 51 | /** |
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 |
53 | 55 | * @return bool |
54 | 56 | */ |
55 | | - static function isMovable( $index ) { |
| 57 | + public static function isMovable( $index ) { |
56 | 58 | return !( $index < NS_MAIN || $index == NS_IMAGE || $index == NS_CATEGORY ); |
57 | 59 | } |
58 | 60 | |
59 | 61 | /** |
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 |
61 | 65 | * @return bool |
62 | 66 | */ |
63 | | - static function isMain( $index ) { |
64 | | - return ! Namespace::isTalk( $index ); |
| 67 | + public static function isMain( $index ) { |
| 68 | + return !self::isTalk( $index ); |
65 | 69 | } |
66 | 70 | |
67 | 71 | /** |
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 |
69 | 75 | * @return bool |
70 | 76 | */ |
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; |
74 | 80 | } |
75 | 81 | |
76 | 82 | /** |
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 |
78 | 87 | */ |
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; |
86 | 92 | } |
87 | 93 | |
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; |
94 | 104 | } |
95 | 105 | |
96 | 106 | /** |
97 | 107 | * Returns the canonical (English Wikipedia) name for a given index |
| 108 | + * |
| 109 | + * @param int $index Namespace index |
| 110 | + * @return string |
98 | 111 | */ |
99 | | - static function getCanonicalName( $index ) { |
| 112 | + public static function getCanonicalName( $index ) { |
100 | 113 | global $wgCanonicalNamespaceNames; |
101 | 114 | return $wgCanonicalNamespaceNames[$index]; |
102 | 115 | } |
— | — | @@ -103,8 +116,11 @@ |
104 | 117 | /** |
105 | 118 | * Returns the index for a given canonical name, or NULL |
106 | 119 | * The input *must* be converted to lower case first |
| 120 | + * |
| 121 | + * @param string $name Namespace name |
| 122 | + * @return int |
107 | 123 | */ |
108 | | - static function getCanonicalIndex( $name ) { |
| 124 | + public static function getCanonicalIndex( $name ) { |
109 | 125 | global $wgCanonicalNamespaceNames; |
110 | 126 | static $xNamespaces = false; |
111 | 127 | if ( $xNamespaces === false ) { |
— | — | @@ -122,10 +138,12 @@ |
123 | 139 | |
124 | 140 | /** |
125 | 141 | * Can this namespace ever have a talk namespace? |
| 142 | + * |
126 | 143 | * @param $index Namespace index |
| 144 | + * @return bool |
127 | 145 | */ |
128 | | - static function canTalk( $index ) { |
129 | | - return( $index >= NS_MAIN ); |
| 146 | + public static function canTalk( $index ) { |
| 147 | + return $index >= NS_MAIN; |
130 | 148 | } |
131 | 149 | |
132 | 150 | /** |
— | — | @@ -150,6 +168,4 @@ |
151 | 169 | return $index >= NS_MAIN; |
152 | 170 | } |
153 | 171 | |
154 | | -} |
155 | | - |
156 | | - |
| 172 | +} |
\ No newline at end of file |
Index: branches/liquidthreads/includes/SpecialSpecialpages.php |
— | — | @@ -8,9 +8,9 @@ |
9 | 9 | * |
10 | 10 | */ |
11 | 11 | function wfSpecialSpecialpages() { |
12 | | - global $wgOut, $wgUser; |
| 12 | + global $wgOut, $wgUser, $wgMessageCache; |
13 | 13 | |
14 | | - MessageCache::loadAllMessages(); |
| 14 | + $wgMessageCache->loadAllMessages(); |
15 | 15 | |
16 | 16 | $wgOut->setRobotpolicy( 'index,nofollow' ); |
17 | 17 | $sk = $wgUser->getSkin(); |
Index: branches/liquidthreads/includes/DefaultSettings.php |
— | — | @@ -1103,12 +1103,14 @@ |
1104 | 1104 | $wgRestrictionTypes = array( 'edit', 'move' ); |
1105 | 1105 | |
1106 | 1106 | /** |
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) |
1109 | 1108 | * |
1110 | 1109 | * You can add a new protection level that requires a specific |
1111 | 1110 | * permission by manipulating this array. The ordering of elements |
1112 | 1111 | * 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 |
1113 | 1115 | */ |
1114 | 1116 | $wgRestrictionLevels = array( '', 'autoconfirmed', 'sysop' ); |
1115 | 1117 | |
— | — | @@ -1915,6 +1917,28 @@ |
1916 | 1918 | $wgSkinExtensionFunctions = array(); |
1917 | 1919 | |
1918 | 1920 | /** |
| 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 | +/** |
1919 | 1943 | * List of valid skin names. |
1920 | 1944 | * The key should be the name in all lower case, the value should be a display name. |
1921 | 1945 | * The default skins will be added later, by Skin::getSkinNames(). Use |
— | — | @@ -2269,6 +2293,7 @@ |
2270 | 2294 | 'delete/restore' => 'undeletedarticle', |
2271 | 2295 | 'delete/revision' => 'revdelete-logentry', |
2272 | 2296 | 'upload/upload' => 'uploadedimage', |
| 2297 | + 'upload/overwrite' => 'overwroteimage', |
2273 | 2298 | 'upload/revert' => 'uploadedimage', |
2274 | 2299 | 'move/move' => '1movedto2', |
2275 | 2300 | 'move/move_redir' => '1movedto2_redir', |
Index: branches/liquidthreads/includes/MessageCache.php |
— | — | @@ -23,6 +23,7 @@ |
24 | 24 | var $mExtensionMessages = array(); |
25 | 25 | var $mInitialised = false; |
26 | 26 | var $mDeferred = true; |
| 27 | + var $mAllMessagesLoaded; |
27 | 28 | |
28 | 29 | function __construct( &$memCached, $useDB, $expiry, $memcPrefix) { |
29 | 30 | wfProfileIn( __METHOD__ ); |
— | — | @@ -669,12 +670,33 @@ |
670 | 671 | } |
671 | 672 | } |
672 | 673 | |
673 | | - static function loadAllMessages() { |
| 674 | + function loadAllMessages() { |
| 675 | + global $wgExtensionMessagesFiles; |
| 676 | + if ( $this->mAllMessagesLoaded ) { |
| 677 | + return; |
| 678 | + } |
| 679 | + $this->mAllMessagesLoaded = true; |
| 680 | + |
674 | 681 | # Some extensions will load their messages when you load their class file |
675 | 682 | wfLoadAllExtensions(); |
676 | 683 | # Others will respond to this hook |
677 | 684 | 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 | + } |
678 | 692 | # Still others will respond to neither, they are EVIL. We sometimes need to know! |
679 | 693 | } |
| 694 | + |
| 695 | + /** |
| 696 | + * Load messages from a given file |
| 697 | + */ |
| 698 | + function loadMessagesFile( $filename ) { |
| 699 | + require( $filename ); |
| 700 | + $this->addMessagesByLang( $messages ); |
| 701 | + } |
680 | 702 | } |
681 | 703 | |
Index: branches/liquidthreads/includes/Linker.php |
— | — | @@ -433,42 +433,96 @@ |
434 | 434 | return $s; |
435 | 435 | } |
436 | 436 | |
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 ) |
451 | 454 | { |
| 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() ) { |
452 | 500 | 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 | + } |
453 | 505 | |
454 | | - $img = wfFindFile( $nt, $time ); |
| 506 | + // Shortcuts |
| 507 | + $fp =& $frameParams; |
| 508 | + $hp =& $handlerParams; |
455 | 509 | |
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'] = ''; |
460 | 514 | |
461 | | - $error = $prefix = $postfix = ''; |
462 | | - $page = isset( $params['page'] ) ? $params['page'] : false; |
| 515 | + $prefix = $postfix = ''; |
463 | 516 | |
464 | | - if ( 'center' == $align ) |
| 517 | + if ( 'center' == $fp['align'] ) |
465 | 518 | { |
466 | 519 | $prefix = '<div class="center">'; |
467 | 520 | $postfix = '</div>'; |
468 | | - $align = 'none'; |
| 521 | + $fp['align'] = 'none'; |
469 | 522 | } |
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'] ) { |
473 | 527 | $wopt = $wgUser->getOption( 'thumbsize' ); |
474 | 528 | |
475 | 529 | if( !isset( $wgThumbLimits[$wopt] ) ) { |
— | — | @@ -476,16 +530,21 @@ |
477 | 531 | } |
478 | 532 | |
479 | 533 | // 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; |
482 | 536 | } |
483 | 537 | // Use width which is smaller: real image width or user preference width |
484 | 538 | // 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 | + } |
486 | 545 | } |
487 | 546 | } |
488 | 547 | |
489 | | - if ( $thumb || $framed ) { |
| 548 | + if ( isset( $fp['thumbnail'] ) || isset( $fp['framed'] ) ) { |
490 | 549 | |
491 | 550 | # Create a thumbnail. Alignment depends on language |
492 | 551 | # writing direction, # right aligned for left-to-right- |
— | — | @@ -494,15 +553,15 @@ |
495 | 554 | # |
496 | 555 | # If thumbnail width has not been provided, it is set |
497 | 556 | # 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'; |
500 | 559 | } |
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; |
502 | 561 | } |
503 | 562 | |
504 | | - if ( $img && $params['width'] ) { |
| 563 | + if ( $file && $hp['width'] ) { |
505 | 564 | # Create a resized image, without the additional thumbnail features |
506 | | - $thumb = $img->transform( $params ); |
| 565 | + $thumb = $file->transform( $hp ); |
507 | 566 | } else { |
508 | 567 | $thumb = false; |
509 | 568 | } |
— | — | @@ -512,58 +571,76 @@ |
513 | 572 | } else { |
514 | 573 | $query = ''; |
515 | 574 | } |
516 | | - $u = $nt->getLocalURL( $query ); |
| 575 | + $url = $title->getLocalURL( $query ); |
517 | 576 | $imgAttribs = array( |
518 | | - 'alt' => $alt, |
519 | | - 'longdesc' => $u |
| 577 | + 'alt' => $fp['alt'], |
| 578 | + 'longdesc' => $url |
520 | 579 | ); |
521 | 580 | |
522 | | - if ( $valign ) { |
523 | | - $imgAttribs['style'] = "vertical-align: $valign"; |
| 581 | + if ( isset( $fp['valign'] ) ) { |
| 582 | + $imgAttribs['style'] = "vertical-align: {$fp['valign']}"; |
524 | 583 | } |
525 | | - if ( isset( $params['border'] ) ) { |
| 584 | + if ( isset( $fp['border'] ) ) { |
526 | 585 | $imgAttribs['class'] = "thumbborder"; |
527 | 586 | } |
528 | 587 | $linkAttribs = array( |
529 | | - 'href' => $u, |
| 588 | + 'href' => $url, |
530 | 589 | 'class' => 'image', |
531 | | - 'title' => $alt |
| 590 | + 'title' => $fp['alt'] |
532 | 591 | ); |
533 | 592 | |
534 | 593 | if ( !$thumb ) { |
535 | | - $s = $this->makeBrokenImageLinkObj( $nt ); |
| 594 | + $s = $this->makeBrokenImageLinkObj( $title ); |
536 | 595 | } else { |
537 | 596 | $s = $thumb->toHtml( $imgAttribs, $linkAttribs ); |
538 | 597 | } |
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>"; |
541 | 600 | } |
542 | 601 | return str_replace("\n", ' ',$prefix.$s.$postfix); |
543 | 602 | } |
544 | 603 | |
545 | 604 | /** |
546 | 605 | * 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 |
549 | 608 | */ |
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() ) { |
551 | 621 | global $wgStylePath, $wgContLang; |
552 | | - $exists = $img && $img->exists(); |
| 622 | + $exists = $file && $file->exists(); |
553 | 623 | |
554 | | - $page = isset( $params['page'] ) ? $params['page'] : false; |
| 624 | + # Shortcuts |
| 625 | + $fp =& $frameParams; |
| 626 | + $hp =& $handlerParams; |
555 | 627 | |
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'] ) ) { |
557 | 634 | // 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; |
559 | 636 | } |
560 | 637 | $thumb = false; |
561 | 638 | |
562 | 639 | if ( !$exists ) { |
563 | | - $outerWidth = $params['width'] + 2; |
| 640 | + $outerWidth = $hp['width'] + 2; |
564 | 641 | } else { |
565 | | - if ( $manual_thumb != '' ) { |
| 642 | + if ( isset( $fp['manualthumb'] ) ) { |
566 | 643 | # Use manually specified thumbnail |
567 | | - $manual_title = Title::makeTitleSafe( NS_IMAGE, $manual_thumb ); |
| 644 | + $manual_title = Title::makeTitleSafe( NS_IMAGE, $fp['manualthumb'] ); |
568 | 645 | if( $manual_title ) { |
569 | 646 | $manual_img = wfFindFile( $manual_title ); |
570 | 647 | if ( $manual_img ) { |
— | — | @@ -572,63 +649,63 @@ |
573 | 650 | $exists = false; |
574 | 651 | } |
575 | 652 | } |
576 | | - } elseif ( $framed ) { |
| 653 | + } elseif ( isset( $fp['framed'] ) ) { |
577 | 654 | // Use image dimensions, don't scale |
578 | | - $thumb = $img->getUnscaledThumb( $page ); |
| 655 | + $thumb = $file->getUnscaledThumb( $page ); |
579 | 656 | } else { |
580 | 657 | # Do not present an image bigger than the source, for bitmap-style images |
581 | 658 | # 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; |
585 | 662 | } |
586 | | - $thumb = $img->transform( $params ); |
| 663 | + $thumb = $file->transform( $hp ); |
587 | 664 | } |
588 | 665 | |
589 | 666 | if ( $thumb ) { |
590 | 667 | $outerWidth = $thumb->getWidth() + 2; |
591 | 668 | } else { |
592 | | - $outerWidth = $params['width'] + 2; |
| 669 | + $outerWidth = $hp['width'] + 2; |
593 | 670 | } |
594 | 671 | } |
595 | 672 | |
596 | 673 | $query = $page ? 'page=' . urlencode( $page ) : ''; |
597 | | - $u = $nt->getLocalURL( $query ); |
| 674 | + $url = $title->getLocalURL( $query ); |
598 | 675 | |
599 | 676 | $more = htmlspecialchars( wfMsg( 'thumbnail-more' ) ); |
600 | 677 | $magnifyalign = $wgContLang->isRTL() ? 'left' : 'right'; |
601 | 678 | $textalign = $wgContLang->isRTL() ? ' style="text-align:right"' : ''; |
602 | 679 | |
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;\">"; |
604 | 681 | if( !$exists ) { |
605 | | - $s .= $this->makeBrokenImageLinkObj( $nt ); |
| 682 | + $s .= $this->makeBrokenImageLinkObj( $title ); |
606 | 683 | $zoomicon = ''; |
607 | 684 | } elseif ( !$thumb ) { |
608 | 685 | $s .= htmlspecialchars( wfMsg( 'thumbnail_error', '' ) ); |
609 | 686 | $zoomicon = ''; |
610 | 687 | } else { |
611 | 688 | $imgAttribs = array( |
612 | | - 'alt' => $alt, |
613 | | - 'longdesc' => $u, |
| 689 | + 'alt' => $fp['alt'], |
| 690 | + 'longdesc' => $url, |
614 | 691 | 'class' => 'thumbimage' |
615 | 692 | ); |
616 | 693 | $linkAttribs = array( |
617 | | - 'href' => $u, |
| 694 | + 'href' => $url, |
618 | 695 | 'class' => 'internal', |
619 | | - 'title' => $alt |
| 696 | + 'title' => $fp['alt'] |
620 | 697 | ); |
621 | | - |
| 698 | + |
622 | 699 | $s .= $thumb->toHtml( $imgAttribs, $linkAttribs ); |
623 | | - if ( $framed ) { |
| 700 | + if ( isset( $fp['framed'] ) ) { |
624 | 701 | $zoomicon=""; |
625 | 702 | } else { |
626 | 703 | $zoomicon = '<div class="magnify" style="float:'.$magnifyalign.'">'. |
627 | | - '<a href="'.$u.'" class="internal" title="'.$more.'">'. |
| 704 | + '<a href="'.$url.'" class="internal" title="'.$more.'">'. |
628 | 705 | '<img src="'.$wgStylePath.'/common/images/magnify-clip.png" ' . |
629 | 706 | 'width="15" height="11" alt="" /></a></div>'; |
630 | 707 | } |
631 | 708 | } |
632 | | - $s .= ' <div class="thumbcaption"'.$textalign.'>'.$zoomicon.$label."</div></div></div>"; |
| 709 | + $s .= ' <div class="thumbcaption"'.$textalign.'>'.$zoomicon.$fp['caption']."</div></div></div>"; |
633 | 710 | return str_replace("\n", ' ', $s); |
634 | 711 | } |
635 | 712 | |
— | — | @@ -1269,28 +1346,7 @@ |
1270 | 1347 | */ |
1271 | 1348 | public function formatSize( $size ) { |
1272 | 1349 | 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 ) ); |
1295 | 1351 | } |
1296 | 1352 | |
1297 | 1353 | /** |
— | — | @@ -1346,3 +1402,4 @@ |
1347 | 1403 | |
1348 | 1404 | |
1349 | 1405 | |
| 1406 | + |
Index: branches/liquidthreads/includes/Parser.php |
— | — | @@ -97,7 +97,8 @@ |
98 | 98 | * @private |
99 | 99 | */ |
100 | 100 | # Persistent: |
101 | | - var $mTagHooks, $mTransparentTagHooks, $mFunctionHooks, $mFunctionSynonyms, $mVariables; |
| 101 | + var $mTagHooks, $mTransparentTagHooks, $mFunctionHooks, $mFunctionSynonyms, $mVariables, |
| 102 | + $mImageParams, $mImageParamsMagicArray; |
102 | 103 | |
103 | 104 | # Cleared with clearState(): |
104 | 105 | var $mOutput, $mAutonumber, $mDTopen, $mStripState; |
— | — | @@ -350,13 +351,6 @@ |
351 | 352 | } |
352 | 353 | $text = $this->mStripState->unstripGeneral( $text ); |
353 | 354 | |
354 | | - |
355 | | - |
356 | | - |
357 | | - |
358 | | - |
359 | | - |
360 | | - |
361 | 355 | $text = Sanitizer::normalizeCharReferences( $text ); |
362 | 356 | |
363 | 357 | if (($wgUseTidy and $this->mOptions->mTidy) or $wgAlwaysUseTidy) { |
— | — | @@ -759,7 +753,7 @@ |
760 | 754 | $descriptorspec = array( |
761 | 755 | 0 => array('pipe', 'r'), |
762 | 756 | 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') |
764 | 758 | ); |
765 | 759 | $pipes = array(); |
766 | 760 | $process = proc_open("$wgTidyBin -config $wgTidyConf $wgTidyOpts$opts", $descriptorspec, $pipes); |
— | — | @@ -4480,10 +4474,50 @@ |
4481 | 4475 | return $ig->toHTML(); |
4482 | 4476 | } |
4483 | 4477 | |
| 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 | + |
4484 | 4518 | /** |
4485 | 4519 | * Parse image options text and use it to make an image |
4486 | 4520 | */ |
4487 | | - function makeImage( $nt, $options ) { |
| 4521 | + function makeImage( $title, $options ) { |
4488 | 4522 | # @TODO: let the MediaHandler specify its transform parameters |
4489 | 4523 | # |
4490 | 4524 | # Check if the options text is of the form "options|alt text" |
— | — | @@ -4507,77 +4541,55 @@ |
4508 | 4542 | # * middle |
4509 | 4543 | # * bottom |
4510 | 4544 | # * text-bottom |
| 4545 | + |
| 4546 | + $parts = array_map( 'trim', explode( '|', $options) ); |
| 4547 | + $sk = $this->mOptions->getSkin(); |
4511 | 4548 | |
| 4549 | + # Give extensions a chance to select the file revision for us |
| 4550 | + $skip = $time = false; |
| 4551 | + wfRunHooks( 'BeforeParserMakeImageLinkObj', array( &$this, &$title, &$skip, &$time ) ); |
4512 | 4552 | |
4513 | | - $part = array_map( 'trim', explode( '|', $options) ); |
| 4553 | + if ( $skip ) { |
| 4554 | + return $sk->makeLinkObj( $title ); |
| 4555 | + } |
4514 | 4556 | |
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 | + } |
4519 | 4575 | } |
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 = ''; |
4529 | 4576 | |
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 | + } |
4535 | 4584 | |
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] ); |
4561 | 4590 | } |
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 | | - } |
4580 | 4591 | } |
4581 | 4592 | } |
| 4593 | + |
4582 | 4594 | # Strip bad stuff out of the alt text |
4583 | 4595 | $alt = $this->replaceLinkHoldersText( $caption ); |
4584 | 4596 | |
— | — | @@ -4587,18 +4599,18 @@ |
4588 | 4600 | $alt = $this->mStripState->unstripBoth( $alt ); |
4589 | 4601 | $alt = Sanitizer::stripAllTags( $alt ); |
4590 | 4602 | |
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; |
4594 | 4605 | |
4595 | 4606 | # 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 ); |
4600 | 4612 | } |
4601 | | - |
4602 | | - return $link; |
| 4613 | + |
| 4614 | + return $ret; |
4603 | 4615 | } |
4604 | 4616 | |
4605 | 4617 | /** |
— | — | @@ -4841,7 +4853,6 @@ |
4842 | 4854 | : $this->mTitle->getPrefixedText(); |
4843 | 4855 | } |
4844 | 4856 | } |
4845 | | - |
4846 | 4857 | } |
4847 | 4858 | |
4848 | 4859 | /** |
— | — | @@ -4894,5 +4905,3 @@ |
4895 | 4906 | return $text; |
4896 | 4907 | } |
4897 | 4908 | } |
4898 | | - |
4899 | | -?> |
Index: branches/liquidthreads/includes/filerepo/File.php |
— | — | @@ -210,6 +210,18 @@ |
211 | 211 | public function getHeight( $page = 1 ) { return false; } |
212 | 212 | |
213 | 213 | /** |
| 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 | + /** |
214 | 226 | * Get handler-specific metadata |
215 | 227 | * Overridden by LocalFile, UnregisteredLocalFile |
216 | 228 | * STUB |
— | — | @@ -239,7 +251,9 @@ |
240 | 252 | function getMediaType() { return MEDIATYPE_UNKNOWN; } |
241 | 253 | |
242 | 254 | /** |
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. |
244 | 258 | * |
245 | 259 | * Currently, this checks if the file is an image format |
246 | 260 | * that can be converted to a format |
— | — | @@ -248,7 +262,7 @@ |
249 | 263 | */ |
250 | 264 | function canRender() { |
251 | 265 | if ( !isset( $this->canRender ) ) { |
252 | | - $this->canRender = $this->getHandler() && $this->handler->canRender(); |
| 266 | + $this->canRender = $this->getHandler() && $this->handler->canRender( $this ); |
253 | 267 | } |
254 | 268 | return $this->canRender; |
255 | 269 | } |
— | — | @@ -271,16 +285,11 @@ |
272 | 286 | * @return bool |
273 | 287 | */ |
274 | 288 | function mustRender() { |
275 | | - return $this->getHandler() && $this->handler->mustRender(); |
| 289 | + return $this->getHandler() && $this->handler->mustRender( $this ); |
276 | 290 | } |
277 | 291 | |
278 | 292 | /** |
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() |
285 | 294 | */ |
286 | 295 | function allowInlineDisplay() { |
287 | 296 | return $this->canRender(); |
— | — | @@ -470,7 +479,7 @@ |
471 | 480 | |
472 | 481 | wfProfileIn( __METHOD__ ); |
473 | 482 | do { |
474 | | - if ( !$this->getHandler() || !$this->handler->canRender() ) { |
| 483 | + if ( !$this->canRender() ) { |
475 | 484 | // not a bitmap or renderable image, don't try. |
476 | 485 | $thumb = $this->iconThumb(); |
477 | 486 | break; |
— | — | @@ -906,7 +915,7 @@ |
907 | 916 | * @return Bool |
908 | 917 | */ |
909 | 918 | function isMultipage() { |
910 | | - return $this->getHandler() && $this->handler->isMultiPage(); |
| 919 | + return $this->getHandler() && $this->handler->isMultiPage( $this ); |
911 | 920 | } |
912 | 921 | |
913 | 922 | /** |
— | — | @@ -915,7 +924,7 @@ |
916 | 925 | */ |
917 | 926 | function pageCount() { |
918 | 927 | if ( !isset( $this->pageCount ) ) { |
919 | | - if ( $this->getHandler() && $this->handler->isMultiPage() ) { |
| 928 | + if ( $this->getHandler() && $this->handler->isMultiPage( $this ) ) { |
920 | 929 | $this->pageCount = $this->handler->pageCount( $this ); |
921 | 930 | } else { |
922 | 931 | $this->pageCount = false; |
— | — | @@ -1014,7 +1023,9 @@ |
1015 | 1024 | static function getPropsFromPath( $path, $ext = true ) { |
1016 | 1025 | wfProfileIn( __METHOD__ ); |
1017 | 1026 | 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 | + ); |
1019 | 1030 | $gis = false; |
1020 | 1031 | if ( $info['fileExists'] ) { |
1021 | 1032 | $magic = MimeMagic::singleton(); |
— | — | @@ -1030,8 +1041,8 @@ |
1031 | 1042 | $handler = MediaHandler::getHandler( $info['mime'] ); |
1032 | 1043 | if ( $handler ) { |
1033 | 1044 | $tempImage = (object)array(); |
1034 | | - $gis = $handler->getImageSize( $tempImage, $path ); |
1035 | 1045 | $info['metadata'] = $handler->getMetadata( $tempImage, $path ); |
| 1046 | + $gis = $handler->getImageSize( $tempImage, $path, $info['metadata'] ); |
1036 | 1047 | } else { |
1037 | 1048 | $gis = false; |
1038 | 1049 | $info['metadata'] = ''; |
— | — | @@ -1074,13 +1085,42 @@ |
1075 | 1086 | * Returns false on failure |
1076 | 1087 | */ |
1077 | 1088 | static function sha1Base36( $path ) { |
| 1089 | + wfSuppressWarnings(); |
1078 | 1090 | $hash = sha1_file( $path ); |
| 1091 | + wfRestoreWarnings(); |
1079 | 1092 | if ( $hash === false ) { |
1080 | 1093 | return false; |
1081 | 1094 | } else { |
1082 | 1095 | return wfBaseConvert( $hash, 16, 36, 31 ); |
1083 | 1096 | } |
1084 | 1097 | } |
| 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 | + } |
1085 | 1125 | } |
1086 | 1126 | /** |
1087 | 1127 | * Aliases for backwards compatibility with 1.6 |
— | — | @@ -1090,3 +1130,4 @@ |
1091 | 1131 | define( 'MW_IMG_DELETED_USER', File::DELETED_USER ); |
1092 | 1132 | define( 'MW_IMG_DELETED_RESTRICTED', File::DELETED_RESTRICTED ); |
1093 | 1133 | |
| 1134 | + |
Index: branches/liquidthreads/includes/filerepo/OldLocalFile.php |
— | — | @@ -118,7 +118,10 @@ |
119 | 119 | } |
120 | 120 | |
121 | 121 | 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 | + } |
123 | 126 | // This is expensive, so we only do it if $wgMemc is real |
124 | 127 | global $wgMemc; |
125 | 128 | if ( $wgMemc instanceof FakeMemcachedClient ) { |
— | — | @@ -155,6 +158,7 @@ |
156 | 159 | |
157 | 160 | function loadFromDB() { |
158 | 161 | wfProfileIn( __METHOD__ ); |
| 162 | + $this->dataLoaded = true; |
159 | 163 | $dbr = $this->repo->getSlaveDB(); |
160 | 164 | $conds = array( 'oi_name' => $this->getName() ); |
161 | 165 | if ( is_null( $this->requestedTime ) ) { |
— | — | @@ -169,7 +173,6 @@ |
170 | 174 | } else { |
171 | 175 | $this->fileExists = false; |
172 | 176 | } |
173 | | - $this->dataLoaded = true; |
174 | 177 | wfProfileOut( __METHOD__ ); |
175 | 178 | } |
176 | 179 | |
— | — | @@ -178,8 +181,8 @@ |
179 | 182 | $fields[] = $prefix . 'archive_name'; |
180 | 183 | |
181 | 184 | // 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' ) ); |
184 | 187 | return $fields; |
185 | 188 | } |
186 | 189 | |
— | — | @@ -193,11 +196,18 @@ |
194 | 197 | |
195 | 198 | function upgradeRow() { |
196 | 199 | wfProfileIn( __METHOD__ ); |
197 | | - |
198 | 200 | $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 | + } |
199 | 208 | |
200 | 209 | $dbw = $this->repo->getMasterDB(); |
201 | 210 | list( $major, $minor ) = self::splitMime( $this->mime ); |
| 211 | + $mime = $this->mime; |
202 | 212 | |
203 | 213 | wfDebug(__METHOD__.': upgrading '.$this->archive_name." to the current schema\n"); |
204 | 214 | $dbw->update( 'oldimage', |
— | — | @@ -205,10 +215,10 @@ |
206 | 216 | 'oi_width' => $this->width, |
207 | 217 | 'oi_height' => $this->height, |
208 | 218 | '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, |
213 | 223 | 'oi_sha1' => $this->sha1, |
214 | 224 | ), array( |
215 | 225 | 'oi_name' => $this->getName(), |
Index: branches/liquidthreads/includes/filerepo/LocalFile.php |
— | — | @@ -39,7 +39,7 @@ |
40 | 40 | $media_type, # MEDIATYPE_xxx (bitmap, drawing, audio...) |
41 | 41 | $mime, # MIME type, determined by MimeMagic::guessMimeType |
42 | 42 | $major_mime, # Major mime type |
43 | | - $minor_mine, # Minor mime type |
| 43 | + $minor_mime, # Minor mime type |
44 | 44 | $size, # Size in bytes (loadFromXxx) |
45 | 45 | $metadata, # Handler-specific metadata |
46 | 46 | $timestamp, # Upload timestamp |
— | — | @@ -231,6 +231,7 @@ |
232 | 232 | * Load file metadata from a DB result row |
233 | 233 | */ |
234 | 234 | function loadFromRow( $row, $prefix = 'img_' ) { |
| 235 | + $this->dataLoaded = true; |
235 | 236 | $array = $this->decodeRow( $row, $prefix ); |
236 | 237 | foreach ( $array as $name => $value ) { |
237 | 238 | $this->$name = $value; |
— | — | @@ -287,6 +288,11 @@ |
288 | 289 | |
289 | 290 | $this->loadFromFile(); |
290 | 291 | |
| 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 | + } |
291 | 297 | $dbw = $this->repo->getMasterDB(); |
292 | 298 | list( $major, $minor ) = self::splitMime( $this->mime ); |
293 | 299 | |
— | — | @@ -318,6 +324,12 @@ |
319 | 325 | $this->$field = $info[$field]; |
320 | 326 | } |
321 | 327 | } |
| 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 | + } |
322 | 334 | } |
323 | 335 | |
324 | 336 | /** splitMime inherited */ |
— | — | @@ -560,14 +572,9 @@ |
561 | 573 | $dbr = $this->repo->getSlaveDB(); |
562 | 574 | |
563 | 575 | 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', |
565 | 577 | array( |
566 | | - 'img_size', |
567 | | - 'img_description', |
568 | | - 'img_user','img_user_text', |
569 | | - 'img_timestamp', |
570 | | - 'img_width', |
571 | | - 'img_height', |
| 578 | + '*', |
572 | 579 | "'' AS oi_archive_name" |
573 | 580 | ), |
574 | 581 | array( 'img_name' => $this->title->getDBkey() ), |
— | — | @@ -580,17 +587,7 @@ |
581 | 588 | } |
582 | 589 | } else if ( $this->historyLine == 1 ) { |
583 | 590 | $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', '*', |
595 | 592 | array( 'oi_name' => $this->title->getDBkey() ), |
596 | 593 | __METHOD__, |
597 | 594 | array( 'ORDER BY' => 'oi_timestamp DESC' ) |
— | — | @@ -697,6 +694,7 @@ |
698 | 695 | return false; |
699 | 696 | } |
700 | 697 | |
| 698 | + $reupload = false; |
701 | 699 | if ( $timestamp === false ) { |
702 | 700 | $timestamp = $dbw->timestamp(); |
703 | 701 | } |
— | — | @@ -726,6 +724,8 @@ |
727 | 725 | ); |
728 | 726 | |
729 | 727 | if( $dbw->affectedRows() == 0 ) { |
| 728 | + $reupload = true; |
| 729 | + |
730 | 730 | # Collision, this is an update of a file |
731 | 731 | # Insert previous contents into oldimage |
732 | 732 | $dbw->insertSelect( 'oldimage', 'image', |
— | — | @@ -780,7 +780,8 @@ |
781 | 781 | |
782 | 782 | # Add the log entry |
783 | 783 | $log = new LogPage( 'upload' ); |
784 | | - $log->addEntry( 'upload', $descTitle, $comment ); |
| 784 | + $action = $reupload ? 'overwrite' : 'upload'; |
| 785 | + $log->addEntry( $action, $descTitle, $comment ); |
785 | 786 | |
786 | 787 | if( $descTitle->exists() ) { |
787 | 788 | # Create a null revision |
Index: branches/liquidthreads/includes/Export.php |
— | — | @@ -558,7 +558,7 @@ |
559 | 559 | $command = "7za a -bd -si " . wfEscapeShellArg( $file ); |
560 | 560 | // Suppress annoying useless crap from p7zip |
561 | 561 | // Unfortunately this could suppress real error messages too |
562 | | - $command .= " >/dev/null 2>&1"; |
| 562 | + $command .= ' ' . wfGetNull() . ' 2>&1'; |
563 | 563 | parent::DumpPipeOutput( $command ); |
564 | 564 | } |
565 | 565 | } |
Index: branches/liquidthreads/includes/OutputPage.php |
— | — | @@ -112,6 +112,10 @@ |
113 | 113 | $this->mHeadItems[$name] = $value; |
114 | 114 | } |
115 | 115 | |
| 116 | + function hasHeadItem( $name ) { |
| 117 | + return isset( $this->mHeadItems[$name] ); |
| 118 | + } |
| 119 | + |
116 | 120 | function setETag($tag) { $this->mETag = $tag; } |
117 | 121 | function setArticleBodyOnly($only) { $this->mArticleBodyOnly = $only; } |
118 | 122 | function getArticleBodyOnly($only) { return $this->mArticleBodyOnly; } |
— | — | @@ -380,7 +384,16 @@ |
381 | 385 | # Display title |
382 | 386 | if( ( $dt = $parserOutput->getDisplayTitle() ) !== false ) |
383 | 387 | $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 | + |
385 | 398 | wfRunHooks( 'OutputPageParserOutput', array( &$this, $parserOutput ) ); |
386 | 399 | } |
387 | 400 | |
— | — | @@ -956,22 +969,27 @@ |
957 | 970 | } |
958 | 971 | |
959 | 972 | /** |
960 | | - * @param array $errors An array returned by Title::getUserPermissionsErrors |
| 973 | + * @param array $errors An array of arrays returned by Title::getUserPermissionsErrors |
961 | 974 | * @return string The error-messages, formatted into a list. |
962 | 975 | */ |
963 | 976 | public function formatPermissionsErrorMessage( $errors ) { |
964 | 977 | $text = ''; |
965 | 978 | |
966 | | - $text .= wfMsgExt( 'permissionserrorstext', array( 'parse' ), count( $errors ) ) . "\n"; |
967 | | - $text .= '<ul class="permissions-errors">' . "\n"; |
| 979 | + if (sizeof( $errors ) > 1) { |
968 | 980 | |
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]); |
974 | 993 | } |
975 | | - $text .= '</ul>'; |
976 | 994 | |
977 | 995 | return $text; |
978 | 996 | } |
— | — | @@ -1312,4 +1330,4 @@ |
1313 | 1331 | } |
1314 | 1332 | } |
1315 | 1333 | |
1316 | | -} |
\ No newline at end of file |
| 1334 | +} |
Index: branches/liquidthreads/includes/DjVuImage.php |
— | — | @@ -104,7 +104,9 @@ |
105 | 105 | } |
106 | 106 | |
107 | 107 | function getInfo() { |
| 108 | + wfSuppressWarnings(); |
108 | 109 | $file = fopen( $this->mFilename, 'rb' ); |
| 110 | + wfRestoreWarnings(); |
109 | 111 | if( $file === false ) { |
110 | 112 | wfDebug( __METHOD__ . ": missing or failed file read\n" ); |
111 | 113 | return false; |
Index: branches/liquidthreads/RELEASE-NOTES |
— | — | @@ -172,6 +172,11 @@ |
173 | 173 | * (bug 10832) Include user information when viewing a deleted revision |
174 | 174 | * (bug 10872) Fall back to sane defaults when generating protection selector |
175 | 175 | 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 |
176 | 181 | |
177 | 182 | == Bugfixes since 1.10 == |
178 | 183 | |
— | — | @@ -378,6 +383,10 @@ |
379 | 384 | free.fr shared hosting. No longer using it in Language::getLanguageNames() |
380 | 385 | * (bug 10763) Fix multi-insert logic for PostgreSQL |
381 | 386 | * 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 |
382 | 391 | |
383 | 392 | == API changes since 1.10 == |
384 | 393 | |
Index: branches/liquidthreads/languages/messages/MessagesJa.php |
— | — | @@ -263,23 +263,24 @@ |
264 | 264 | 'versionrequired' => 'MediaWiki バージョン $1 が必要', |
265 | 265 | 'versionrequiredtext' => 'このページの利用には MediaWiki Version $1 が必要です。[[Special:Version|{{int:version}}]]を確認してください。', |
266 | 266 | |
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' => 'フィード形式の指定が間違っています。', |
284 | 285 | |
285 | 286 | # Short words for each namespace, by default used in the 'article' tab in monobook |
286 | 287 | 'nstab-main' => '本文', |
— | — | @@ -357,7 +358,7 @@ |
358 | 359 | 'editinginterface' => "'''警告:''' あなたはソフトウェアのインターフェースに使用されているテキストを編集しています。このページの変更はすべての利用者に影響します。", |
359 | 360 | 'sqlhidden' => '(SQLクエリー非表示)', |
360 | 361 | 'cascadeprotected' => 'このページはカスケード保護されている以下のページから呼び出されているため、編集できないように保護されています。', |
361 | | -'namespaceprotected' => "'''$1''' 名前空間に属するページを編集する権限がありません。", |
| 362 | +'namespaceprotected' => "'''$1''' 名前空間に属するページを編集する権限がありません。", |
362 | 363 | |
363 | 364 | # Login and logout pages |
364 | 365 | 'logouttitle' => 'ログアウト', |
— | — | @@ -373,7 +374,6 @@ |
374 | 375 | 'yourdomainname' => 'あなたのドメイン', |
375 | 376 | 'externaldberror' => '外部の認証データベースでエラーが発生たか、または外部アカウント情報の更新が許可されていません。', |
376 | 377 | 'loginproblem' => '<b>ログインでエラーが発生しました。</b><br />再度実行してください。', |
377 | | -'alreadyloggedin' => '<strong>利用者 $1 は、すでにログイン済みです。</strong><br />', |
378 | 378 | 'login' => 'ログイン', |
379 | 379 | 'loginprompt' => '{{SITENAME}}にログインするにはクッキーを有効にする必要があります。', |
380 | 380 | 'userlogin' => 'ログインまたはアカウント作成', |
— | — | @@ -411,6 +411,7 @@ |
412 | 412 | 'nouserspecified' => '利用者名を指定してください。', |
413 | 413 | 'wrongpassword' => 'パスワードが間違っています。再度入力してください。', |
414 | 414 | 'wrongpasswordempty' => 'パスワードを空にすることはできません。再度入力してください。', |
| 415 | +'passwordtooshort' => 'パスワードが短すぎます。$1文字以上の文字列にしてください。', |
415 | 416 | 'mailmypassword' => '新しいパスワードをメールで送る', |
416 | 417 | 'passwordremindertitle' => '{{SITENAME}} パスワード再送通知', |
417 | 418 | 'passwordremindertext' => 'どなたか($1 のIPアドレスの使用者)が{{SITENAME}} ($4) のログイン用パスワードの再発行を依頼しました。 |
— | — | @@ -431,6 +432,7 @@ |
432 | 433 | 'invalidemailaddress' => '入力されたメールアドレスが正しい形式に従っていないため、受け付けられません。正しい形式で入力し直すか、メールアドレス欄を空にしてください。', |
433 | 434 | 'accountcreated' => 'アカウントを作成しました', |
434 | 435 | 'accountcreatedtext' => '利用者 $1 が作成されました。', |
| 436 | +'loginlanguagelabel' => '言語: $1', |
435 | 437 | |
436 | 438 | # Password reset dialog |
437 | 439 | 'resetpass' => 'パスワードの再設定', |
— | — | @@ -541,7 +543,6 @@ |
542 | 544 | 'token_suffix_mismatch' => '<strong>あなたの使用しているクライアントが、エディット・トークン内の句読点を正しく処理していないことを確認しました。 |
543 | 545 | このページの文章が破損するのを防ぐため、あなたの編集は反映されません。 |
544 | 546 | 問題のある匿名プロクシサービスを利用していると、この問題が起こることがあります。</strong>', |
545 | | -'importing' => '$1 をインポート中', |
546 | 547 | 'editing' => '$1 を編集中', |
547 | 548 | 'editinguser' => '$1 を編集中', |
548 | 549 | 'editingsection' => '$1 を編集中(節単位編集)', |
— | — | @@ -758,18 +759,18 @@ |
759 | 760 | 'files' => '画像等', |
760 | 761 | |
761 | 762 | # 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から削除できます。', |
774 | 775 | |
775 | 776 | # Groups |
776 | 777 | 'group' => 'グループ:', |
— | — | @@ -913,7 +914,6 @@ |
914 | 915 | # Image list |
915 | 916 | 'imagelist' => '画像リスト', |
916 | 917 | 'imagelisttext' => '$1 枚の画像を $2 に表示しています', |
917 | | -'imagelistforuser' => '$1 によってアップロードされた画像のみ表示しています。', |
918 | 918 | 'getimagelist' => '画像リストを取得', |
919 | 919 | 'ilsubmit' => '検索', |
920 | 920 | 'showlast' => '$2に $1 枚の画像を表示', |
— | — | @@ -923,13 +923,6 @@ |
924 | 924 | 'imgdelete' => '削除', |
925 | 925 | 'imgdesc' => '詳細', |
926 | 926 | 'imgfile' => 'ファイル', |
927 | | -'imglegend' => '凡例: (詳細)= 画像の詳細を表示/編集', |
928 | | -'imghistory' => '画像の履歴', |
929 | | -'revertimg' => '差戻', |
930 | | -'deleteimg' => '削除', |
931 | | -'deleteimgcompletely' => '全版削除', |
932 | | -'imghistlegend' => '凡例:(最新)= 最新版の画像、(削除)= この版の画像を削除、(差戻)= この版の画像に差し戻す<br /> |
933 | | -<b>アップロードされた画像を見るには日付をクリックします。</b>', |
934 | 927 | 'imagelinks' => 'リンク', |
935 | 928 | 'linkstoimage' => 'この画像にリンクしているページの一覧:', |
936 | 929 | 'nolinkstoimage' => 'この画像にリンクしているページはありません。', |
— | — | @@ -1094,7 +1087,7 @@ |
1095 | 1088 | |
1096 | 1089 | # E-mail user |
1097 | 1090 | 'mailnologin' => '送信先のアドレスがありません。', |
1098 | | -'mailnologintext' => '他の利用者宛てにメールを送信するためには、[[Special:Userlogin|ログイン]]し、あなたのメールアドレスを[[Special:Preference|オプション]]に設定する必要があります。', |
| 1091 | +'mailnologintext' => '他の利用者宛てにメールを送信するためには、[[Special:Userlogin|ログイン]]し、あなたのメールアドレスを[[Special:Preferences|オプション]]に設定する必要があります。', |
1099 | 1092 | 'emailuser' => 'この利用者にメールを送信', |
1100 | 1093 | 'emailpage' => 'メール送信ページ', |
1101 | 1094 | 'emailpagetext' => 'メールを送る先の利用者が有効なメールアドレスを{{int:preferences}}で登録していれば、下のフォームを通じてメールを送ることができます。 |
— | — | @@ -1119,7 +1112,6 @@ |
1120 | 1113 | 'watchlistfor' => "'''$1'''", |
1121 | 1114 | 'nowatchlist' => 'あなたのウォッチリストは空です。', |
1122 | 1115 | 'watchlistanontext' => 'ウォッチリストを確認あるいは編集するには $1 してください。', |
1123 | | -'watchlistcount' => "'''あなたのウォッチリストにはノートも含めて $1 ページ登録されています。'''", |
1124 | 1116 | 'watchnologin' => 'ログインしていません', |
1125 | 1117 | 'watchnologintext' => 'ウォッチリストを変更するためには、[[Special:Userlogin|ログイン]]している必要があります。', |
1126 | 1118 | 'addedwatch' => 'ウォッチリストに追加しました', |
— | — | @@ -1157,21 +1149,21 @@ |
1158 | 1150 | 'watching' => 'ウォッチリストに追加しています...', |
1159 | 1151 | 'unwatching' => 'ウォッチリストから削除しています...', |
1160 | 1152 | |
1161 | | -'enotif_mailer' => '{{SITENAME}} 通知メール', |
1162 | | -'enotif_reset' => 'すべてのページを訪問済みにする', |
1163 | | -'enotif_newpagetext' => '(新規ページ)', |
| 1153 | +'enotif_mailer' => '{{SITENAME}} 通知メール', |
| 1154 | +'enotif_reset' => 'すべてのページを訪問済みにする', |
| 1155 | +'enotif_newpagetext' => '(新規ページ)', |
1164 | 1156 | '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' => ' |
1169 | 1161 | あなたが最後に閲覧してからの差分を見るには以下のURLにアクセスしてください: |
1170 | 1162 | $1', |
1171 | | -'enotif_lastdiff' => ' |
| 1163 | +'enotif_lastdiff' => ' |
1172 | 1164 | 変更内容を見るには以下のURLにアクセスしてください: |
1173 | 1165 | $1', |
1174 | | -'enotif_anon_editor' => '匿名利用者 $1', |
1175 | | -'enotif_body' => 'Dear $WATCHINGUSERNAME, |
| 1166 | +'enotif_anon_editor' => '匿名利用者 $1', |
| 1167 | +'enotif_body' => 'Dear $WATCHINGUSERNAME, |
1176 | 1168 | |
1177 | 1169 | {{SITENAME}}のページ $PAGETITLE が $PAGEEDITDATE に |
1178 | 1170 | $PAGEEDITOR によって$CHANGEDORCREATEDされました。 |
— | — | @@ -1216,7 +1208,6 @@ |
1217 | 1209 | 'deletionlog' => '削除記録', |
1218 | 1210 | 'reverted' => '以前のバージョンへの差し戻し', |
1219 | 1211 | 'deletecomment' => '削除の理由', |
1220 | | -'imagereverted' => '以前のバージョンへの差し戻しに成功しました。', |
1221 | 1212 | 'rollback' => '編集の差し戻し', |
1222 | 1213 | 'rollback_short' => '差し戻し', |
1223 | 1214 | 'rollbacklink' => '差し戻し', |
— | — | @@ -1330,18 +1321,18 @@ |
1331 | 1322 | 'sp-newimages-showfrom' => '$1 以後現在までの新着画像を表示', |
1332 | 1323 | |
1333 | 1324 | # 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' => '← リンク', |
1346 | 1337 | |
1347 | 1338 | # Block/unblock |
1348 | 1339 | 'blockip' => '投稿ブロック', |
— | — | @@ -1459,7 +1450,7 @@ |
1460 | 1451 | 'move-watch' => '移動するページをウォッチ', |
1461 | 1452 | 'movepagebtn' => 'ページを移動', |
1462 | 1453 | '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. |
1464 | 1455 | 'articleexists' => '指定された移動先には既にページが存在するか、名前が不適切です。', |
1465 | 1456 | 'talkexists' => 'ページ自身は移動されましたが、付随のノートページは移動先のページが存在したため移動できませんでした。手動で内容を統合してください。', |
1466 | 1457 | 'movedto' => '移動先:', |
— | — | @@ -1499,7 +1490,6 @@ |
1500 | 1491 | 'allmessagesdefault' => '既定の文章', |
1501 | 1492 | 'allmessagescurrent' => '現在の文章', |
1502 | 1493 | 'allmessagestext' => 'これは{{ns:mediawiki}}名前空間にある全てのシステムメッセージの一覧です。', |
1503 | | -'allmessagesnotsupportedUI' => 'このサイトでは、あなたの現在のインターフェース言語 <b>$1</b> における {{ns:special}}:Allmessages はサポートされていません。', |
1504 | 1494 | 'allmessagesnotsupportedDB' => 'wgUseDatabaseMessages が無効のため、[[Special:Allmessages]] はサポートされません。', |
1505 | 1495 | 'allmessagesfilter' => 'メッセージ名フィルタ:', |
1506 | 1496 | 'allmessagesmodified' => '条件に当てはまるものを表示', |
— | — | @@ -1707,8 +1697,6 @@ |
1708 | 1698 | 'variantname-zh-sg' => '簡体(シンガポール)', |
1709 | 1699 | 'variantname-zh' => '無変換', |
1710 | 1700 | |
1711 | | -'passwordtooshort' => 'パスワードが短すぎます。$1文字以上の文字列にしてください。', |
1712 | | - |
1713 | 1701 | # Metadata |
1714 | 1702 | 'metadata' => 'メタデータ', |
1715 | 1703 | 'metadata-help' => 'このファイルはデジタルカメラ・スキャナなどが付加した追加情報を含んでいます。このファイルがオリジナルの状態から変更されている場合、いくつかの項目は変更を完全に反映していないかもしれません。', |
— | — | @@ -2063,16 +2051,12 @@ |
2064 | 2052 | $1', |
2065 | 2053 | 'confirm_purge_button' => 'はい', |
2066 | 2054 | |
2067 | | -'youhavenewmessagesmulti' => '$1 に新しいメッセージが届いています', |
2068 | | - |
| 2055 | +# AJAX search |
2069 | 2056 | 'searchcontaining' => "'''$1''' を含むページの検索。", |
2070 | 2057 | 'searchnamed' => "ページ名が '''$1''' の項目の検索。", |
2071 | 2058 | 'articletitles' => "''$1'' からはじまる項目", |
2072 | 2059 | 'hideresults' => '結果を隠す', |
2073 | 2060 | |
2074 | | - |
2075 | | -'loginlanguagelabel' => '言語: $1', |
2076 | | - |
2077 | 2061 | # Multipage image navigation |
2078 | 2062 | 'imgmultipageprev' => '← 前ページ', |
2079 | 2063 | 'imgmultipagenext' => '次ページ →', |
— | — | @@ -2095,7 +2079,7 @@ |
2096 | 2080 | # Auto-summaries |
2097 | 2081 | 'autosumm-blank' => 'ページの白紙化', |
2098 | 2082 | 'autosumm-replace' => "ページの置換: '$1'", |
2099 | | -'autoredircomment' => '[[$1]]へのリダイレクト', # This should be changed to the new naming convention, but existed beforehand |
| 2083 | +'autoredircomment' => '[[$1]]へのリダイレクト', |
2100 | 2084 | 'autosumm-new' => "新しいページ: '$1'", |
2101 | 2085 | |
2102 | 2086 | # Size units |
— | — | @@ -2146,7 +2130,3 @@ |
2147 | 2131 | 'watchlisttools-clear' => 'ウォッチリストを空にする', |
2148 | 2132 | |
2149 | 2133 | ); |
2150 | | - |
2151 | | - |
2152 | | - |
2153 | | - |
Index: branches/liquidthreads/languages/messages/MessagesFr.php |
— | — | @@ -279,23 +279,24 @@ |
280 | 280 | 'versionrequired' => 'Version $1 de MediaWiki nécessaire', |
281 | 281 | 'versionrequiredtext' => 'La version $1 de MediaWiki est nécessaire pour utiliser cette page. Consultez [[Special:Version]]', |
282 | 282 | |
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.', |
300 | 301 | |
301 | 302 | # Short words for each namespace, by default used in the 'article' tab in monobook |
302 | 303 | 'nstab-main' => 'Article', |
— | — | @@ -356,7 +357,7 @@ |
357 | 358 | '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.', |
358 | 359 | 'perfcached' => 'Ceci est une version en cache et n’est peut-être pas à jour.', |
359 | 360 | '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.', |
361 | 362 | 'wrong_wfQuery_params' => 'Paramètres incorrects sur wfQuery()<br /> |
362 | 363 | Fonction : $1<br /> |
363 | 364 | Requête : $2', |
— | — | @@ -371,7 +372,7 @@ |
372 | 373 | $2', |
373 | 374 | 'namespaceprotected' => "Vous n’avez pas la permission de modifier les pages de l’espace de noms « '''$1''' ».", |
374 | 375 | '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.', |
376 | 377 | |
377 | 378 | # Login and logout pages |
378 | 379 | 'logouttitle' => 'Déconnexion', |
— | — | @@ -403,8 +404,8 @@ |
404 | 405 | 'badretype' => 'Les mots de passe que vous avez saisis ne sont pas identiques.', |
405 | 406 | 'userexists' => 'Le nom d’utilisateur que vous avez saisi est déjà utilisé. Veuillez en choisir un autre.', |
406 | 407 | '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 :', |
409 | 410 | 'yourrealname' => 'Nom réel', |
410 | 411 | 'yourlanguage' => 'Langue de l’interface :', |
411 | 412 | 'yourvariant' => 'Variante', |
— | — | @@ -434,7 +435,7 @@ |
435 | 436 | Nous vous conseillons de vous connecter et de modifier ce mot de passe dès que possible. |
436 | 437 | |
437 | 438 | 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 ».', |
439 | 440 | '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.', |
440 | 441 | '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.', |
441 | 442 | 'eauthentsent' => 'Un courriel de confirmation a été envoyé à l’adresse indiquée. |
— | — | @@ -449,6 +450,7 @@ |
450 | 451 | '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.', |
451 | 452 | 'accountcreated' => 'Compte créé.', |
452 | 453 | 'accountcreatedtext' => 'Le compte utilisateur pour $1 a été créé.', |
| 454 | +'loginlanguagelabel' => 'Langue : $1', |
453 | 455 | |
454 | 456 | # Password reset dialog |
455 | 457 | 'resetpass' => 'Remise à zéro du mot de passe', |
— | — | @@ -496,7 +498,7 @@ |
497 | 499 | 'anoneditwarning' => "'''Attention :''' vous n’êtes pas identifié. Votre adresse IP sera enregistrée dans l’historique de cette page.", |
498 | 500 | '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.", |
499 | 501 | '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.", |
501 | 503 | 'summary-preview' => 'Prévisualisation du résumé', |
502 | 504 | 'subject-preview' => 'Prévisualisation du sujet/titre', |
503 | 505 | 'blockedtitle' => 'L’utilisateur est bloqué.', |
— | — | @@ -569,7 +571,6 @@ |
570 | 572 | |
571 | 573 | <strong>Si la tentative de modification était légitime, veuillez réessayer. Si cela échoue à nouveau, veuillez vous déconnecter, puis vous reconnecter.</strong>", |
572 | 574 | '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', |
574 | 575 | 'editing' => 'Modification de $1', |
575 | 576 | 'editinguser' => 'Modification de $1', |
576 | 577 | 'editingsection' => 'Modification de $1 (section)', |
— | — | @@ -730,6 +731,7 @@ |
731 | 732 | # Preferences page |
732 | 733 | 'preferences' => 'Préférences', |
733 | 734 | 'mypreferences' => 'Préférences', |
| 735 | +'prefs-edits' => 'Nombre d’éditions :', |
734 | 736 | 'prefsnologin' => 'Non connecté', |
735 | 737 | 'prefsnologintext' => 'Vous devez être [[Special:Userlogin|connecté]] pour modifier vos préférences d’utilisateur.', |
736 | 738 | 'prefsreset' => 'Les préférences ont été rétablies à partir de la version enregistrée.', |
— | — | @@ -938,7 +940,6 @@ |
939 | 941 | # Image list |
940 | 942 | 'imagelist' => 'Liste des images', |
941 | 943 | 'imagelisttext' => "Voici une liste de '''$1''' {{plural:$1|fichier|fichiers}} classées $2.", |
942 | | -'imagelistforuser' => 'Affiche uniquement les images importées par $1.', |
943 | 944 | 'getimagelist' => 'Récupération de la liste des images', |
944 | 945 | 'ilsubmit' => 'Chercher', |
945 | 946 | 'showlast' => 'Afficher les $1 dernières images classées $2.', |
— | — | @@ -949,7 +950,7 @@ |
950 | 951 | 'imgdesc' => 'page de l’image', |
951 | 952 | 'imgfile' => 'fichier', |
952 | 953 | '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à', |
954 | 955 | 'filehist-deleteall' => 'tout supprimer', |
955 | 956 | 'filehist-deleteone' => 'supprimer ceci', |
956 | 957 | 'filehist-revert' => 'révoquer', |
— | — | @@ -983,7 +984,7 @@ |
984 | 985 | 'filerevert-defaultcomment' => 'Révoqué jusqu’à la version du $1 à $2', |
985 | 986 | 'filerevert-submit' => 'Révoquer', |
986 | 987 | '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é.', |
988 | 989 | |
989 | 990 | # MIME search |
990 | 991 | 'mimesearch' => 'Recherche par type MIME', |
— | — | @@ -1070,7 +1071,7 @@ |
1071 | 1072 | 'allpages' => 'Toutes les pages', |
1072 | 1073 | 'prefixindex' => 'Toutes les pages par premières lettres', |
1073 | 1074 | '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.', |
1075 | 1076 | 'shortpages' => 'Pages courtes', |
1076 | 1077 | 'longpages' => 'Pages longues', |
1077 | 1078 | 'deadendpages' => 'Pages en impasse', |
— | — | @@ -1166,7 +1167,6 @@ |
1167 | 1168 | 'watchlistfor' => "(pour l’utilisateur '''$1''')", |
1168 | 1169 | 'nowatchlist' => 'Votre liste de suivi ne contient aucun article.', |
1169 | 1170 | '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", |
1171 | 1171 | 'watchnologin' => 'Non connecté', |
1172 | 1172 | 'watchnologintext' => 'Vous devez être [[Special:Userlogin|connecté]] pour modifier votre liste.', |
1173 | 1173 | 'addedwatch' => 'Ajouté à la liste de suivi', |
— | — | @@ -1288,6 +1288,7 @@ |
1289 | 1289 | Voici les réglages actuels de la page <strong>$1</strong> :', |
1290 | 1290 | '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.', |
1291 | 1291 | 'protect-default' => 'Pas de protection', |
| 1292 | +'protect-fallback' => 'Nécessite l’habilitation "$1" ', |
1292 | 1293 | 'protect-level-autoconfirmed' => 'Semi-protection', |
1293 | 1294 | 'protect-level-sysop' => 'Administrateurs uniquement', |
1294 | 1295 | 'protect-summary-cascade' => 'protection en cascade', |
— | — | @@ -1321,7 +1322,7 @@ |
1322 | 1323 | 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.', |
1323 | 1324 | '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.', |
1324 | 1325 | '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 : ', |
1326 | 1327 | '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.', |
1327 | 1328 | 'undeletebtn' => 'Restaurer', |
1328 | 1329 | 'undeletereset' => 'Réinitialiser', |
— | — | @@ -1338,7 +1339,7 @@ |
1339 | 1340 | 'undelete-search-box' => 'Chercher une page supprimée', |
1340 | 1341 | 'undelete-search-prefix' => 'Montrer les pages commençant par :', |
1341 | 1342 | '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.', |
1343 | 1344 | 'undelete-filename-mismatch' => 'Impossible de restaurer le fichier avec le timestamp $1 : fichier introuvable', |
1344 | 1345 | 'undelete-bad-store-key' => 'Impossible de restaurer le fichier avec le timestamp $1 : le fichier était absent avant la suppression.', |
1345 | 1346 | 'undelete-cleanup-error' => 'Erreur lors de la suppression de l’archive inutilisée « $1 ».', |
— | — | @@ -1436,6 +1437,8 @@ |
1437 | 1438 | 'unblocked' => '[[User:$1|$1]] a été débloqué', |
1438 | 1439 | 'unblocked-id' => 'Le blocage $1 a été enlevé', |
1439 | 1440 | 'ipblocklist' => 'Liste des utilisateurs bloqués', |
| 1441 | +'ipblocklist-legend' => 'Chercher un utilisateur bloqué', |
| 1442 | +'ipblocklist-username' => 'Nom de l’utilisateur ou adresse IP :', |
1440 | 1443 | '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.', |
1441 | 1444 | 'ipblocklist-submit' => 'Chercher', |
1442 | 1445 | 'blocklistline' => '$1 ($4) : $2 a bloqué $3', |
— | — | @@ -1680,7 +1683,7 @@ |
1681 | 1684 | 'siteuser' => 'Utilisateur $1 de {{SITENAME}}', |
1682 | 1685 | 'lastmodifiedatby' => 'Cette page a été modifiée pour la dernière fois le $1 à $2 par $3.', # $1 date, $2 time, $3 user |
1683 | 1686 | 'and' => 'et', |
1684 | | -'othercontribs' => 'Contributions de cet utilisateur.', |
| 1687 | +'othercontribs' => 'Basé sur le travail de $1.', |
1685 | 1688 | 'others' => 'autres', |
1686 | 1689 | 'siteusers' => 'Utilisateur(s) $1', |
1687 | 1690 | 'creditspage' => 'Page de crédits', |
— | — | @@ -1937,7 +1940,7 @@ |
1938 | 1941 | 'exif-meteringmode-2' => 'Mesure centrale moyenne', |
1939 | 1942 | 'exif-meteringmode-3' => 'Spot', |
1940 | 1943 | 'exif-meteringmode-4' => 'MultiSpot', |
1941 | | -'exif-meteringmode-5' => 'Pattern', |
| 1944 | +'exif-meteringmode-5' => 'Palette', |
1942 | 1945 | 'exif-meteringmode-6' => 'Partiel', |
1943 | 1946 | 'exif-meteringmode-255' => 'Autre', |
1944 | 1947 | |
— | — | @@ -1962,6 +1965,9 @@ |
1963 | 1966 | 'exif-focalplaneresolutionunit-2' => 'pouces', |
1964 | 1967 | |
1965 | 1968 | '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', |
1966 | 1972 | 'exif-sensingmethod-5' => 'Capteur couleur séquenciel', |
1967 | 1973 | 'exif-sensingmethod-7' => 'Capteur trilinéaire', |
1968 | 1974 | 'exif-sensingmethod-8' => 'Capteur couleur linéaire séquentiel', |
— | — | @@ -1986,6 +1992,10 @@ |
1987 | 1993 | 'exif-scenecapturetype-3' => 'Scène de nuit', |
1988 | 1994 | |
1989 | 1995 | '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', |
1990 | 2000 | |
1991 | 2001 | 'exif-contrast-0' => 'Normal', |
1992 | 2002 | 'exif-contrast-1' => 'Faible', |
— | — | @@ -2061,7 +2071,7 @@ |
2062 | 2072 | |
2063 | 2073 | $3 |
2064 | 2074 | |
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.', |
2066 | 2076 | |
2067 | 2077 | # Scary transclusion |
2068 | 2078 | 'scarytranscludedisabled' => '[La transclusion interwiki est désactivée]', |
— | — | @@ -2088,15 +2098,12 @@ |
2089 | 2099 | 'confirm_purge' => 'Voulez-vous rafraîchir cette page (purger le cache) ? $1', |
2090 | 2100 | 'confirm_purge_button' => 'Confirmer', |
2091 | 2101 | |
2092 | | -'youhavenewmessagesmulti' => 'Vous avez de nouveaux messages sur $1', |
2093 | | - |
| 2102 | +# AJAX search |
2094 | 2103 | 'searchcontaining' => 'Chercher les articles contenant « $1 ».', |
2095 | 2104 | 'searchnamed' => 'Chercher les articles nommés « $1 ».', |
2096 | 2105 | 'articletitles' => 'Articles commençant par « $1 »', |
2097 | 2106 | 'hideresults' => 'Cacher les résultats', |
2098 | 2107 | |
2099 | | -'loginlanguagelabel' => 'Langue : $1', |
2100 | | - |
2101 | 2108 | # Multipage image navigation |
2102 | 2109 | 'imgmultipageprev' => '← page précédente', |
2103 | 2110 | 'imgmultipagenext' => 'page suivante →', |
— | — | @@ -2167,4 +2174,7 @@ |
2168 | 2175 | 'watchlisttools-raw' => 'Modifier la liste (mode brut)', |
2169 | 2176 | 'watchlisttools-clear' => 'Vider la liste de suivi', |
2170 | 2177 | |
| 2178 | +# Unknown messages |
| 2179 | +'svg-long-desc' => '(Fichier SVG, résolution de $1 × $2 pixels, taille : $3)', |
| 2180 | + |
2171 | 2181 | ); |
Index: branches/liquidthreads/languages/messages/MessagesNl.php |
— | — | @@ -165,10 +165,10 @@ |
166 | 166 | 'img_sub' => array( 1, 'sub' ), |
167 | 167 | 'img_super' => array( 1, 'super', 'sup' ), |
168 | 168 | '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' ), |
170 | 170 | 'img_middle' => array( 1, 'middle', 'midden' ), |
171 | 171 | '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' ), |
173 | 173 | 'int' => array( 0, 'INT:' ), |
174 | 174 | 'sitename' => array( 1, 'SITENAME', 'SITENAAM' ), |
175 | 175 | 'ns' => array( 0, 'NS:', 'NR:' ), |
Index: branches/liquidthreads/languages/messages/MessagesRo.php |
— | — | @@ -10,27 +10,17 @@ |
11 | 11 | |
12 | 12 | $magicWords = array( |
13 | 13 | # ID CASE SYNONYMS |
14 | | - 'redirect' => array( 0, '#redirect' ), |
15 | 14 | 'notoc' => array( 0, '__NOTOC__', '__FARACUPRINS__' ), |
16 | 15 | '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' ), |
27 | 24 | '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:' ) |
35 | 25 | ); |
36 | 26 | |
37 | 27 | $namespaceNames = array( |
— | — | @@ -285,23 +275,24 @@ |
286 | 276 | 'versionrequired' => 'Este necesară versiunea $1 MediaWiki', |
287 | 277 | 'versionrequiredtext' => 'Versiunea $1 MediaWiki este necesară pentru a folosi această pagină. Vezi [[Special:Version|versiunea actuală]].', |
288 | 278 | |
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', |
306 | 297 | |
307 | 298 | # Short words for each namespace, by default used in the 'article' tab in monobook |
308 | 299 | 'nstab-main' => 'Articol', |
— | — | @@ -379,7 +370,6 @@ |
380 | 371 | 'externaldberror' => 'A fost fie o eroare de bază de date pentru o autentificare extenă sau nu aveţi permisiunea să actualizaţi contul extern.', |
381 | 372 | 'loginproblem' => '<b>A apărut o problemă la autentificarea ta.</b><br /> |
382 | 373 | Încearcă din nou!', |
383 | | -'alreadyloggedin' => '<strong>Sunteţi deja autentificat ca $1!</strong><br />', |
384 | 374 | 'login' => 'Autentificare', |
385 | 375 | 'loginprompt' => 'Trebuie să ai modulele cookie activate pentru a te autentifica la {{SITENAME}}.', |
386 | 376 | 'userlogin' => 'Creare cont / Autentificare', |
— | — | @@ -416,6 +406,7 @@ |
417 | 407 | 'nouserspecified' => 'Trebuie să specificaţi un nume de utilizator.', |
418 | 408 | 'wrongpassword' => 'Parola pe care ai introdus-o este greşită. Te rugăm să încerci din nou.', |
419 | 409 | '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.', |
420 | 411 | 'mailmypassword' => 'Trimite-mi parola pe e-mail!', |
421 | 412 | 'passwordremindertitle' => 'Amintirea parolei de la {{SITENAME}}', |
422 | 413 | 'passwordremindertext' => 'Cineva (probabil tu, de la adresa $1) |
— | — | @@ -436,6 +427,7 @@ |
437 | 428 | '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.', |
438 | 429 | 'accountcreated' => 'Contul a fost creat.', |
439 | 430 | 'accountcreatedtext' => 'Contul utilizatorului pentru $1 a fost creat.', |
| 431 | +'loginlanguagelabel' => 'Limba: $1', |
440 | 432 | |
441 | 433 | # Password reset dialog |
442 | 434 | 'resetpass' => 'Resetează parola contului', |
— | — | @@ -546,7 +538,6 @@ |
547 | 539 | ''Deoarece acest wiki are activat raw HTML, previzualizarea este ascunsă ca măsură de precauţie împotriva atacurilor JavaScript.'' |
548 | 540 | |
549 | 541 | <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', |
551 | 542 | 'editing' => 'modificare $1', |
552 | 543 | 'editinguser' => 'modificare $1', |
553 | 544 | 'editingsection' => 'modificare $1 (secţiune)', |
— | — | @@ -876,7 +867,6 @@ |
877 | 868 | # Image list |
878 | 869 | 'imagelist' => 'Lista imaginilor', |
879 | 870 | 'imagelisttext' => 'Mai jos se află lista a $1 imagini ordonate $2.', |
880 | | -'imagelistforuser' => 'Se afişează numai imagini încărcate de $1.', |
881 | 871 | 'getimagelist' => 'încarc lista de imagini', |
882 | 872 | 'ilsubmit' => 'Caută', |
883 | 873 | 'showlast' => 'Arată ultimele $1 imagini ordonate $2.', |
— | — | @@ -886,12 +876,6 @@ |
887 | 877 | 'imgdelete' => 'şterge', |
888 | 878 | 'imgdesc' => 'desc', |
889 | 879 | '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.', |
896 | 880 | 'imagelinks' => 'Legăturile imaginii', |
897 | 881 | 'linkstoimage' => 'Următoarele pagini leagă la această imagine:', |
898 | 882 | 'nolinkstoimage' => 'Nici o pagină nu se leagă la această imagine.', |
— | — | @@ -1009,7 +993,7 @@ |
1010 | 994 | 'unusedcategoriestext' => 'Următoarele categorii de pagini există şi totuşi nici un articol sau categorie nu le foloseşte.', |
1011 | 995 | |
1012 | 996 | # Book sources |
1013 | | -'booksources' => 'Surse de cărţi', |
| 997 | +'booksources' => 'Surse de cărţi', |
1014 | 998 | |
1015 | 999 | 'categoriespagetext' => 'Următoarele categorii există în wiki.', |
1016 | 1000 | 'data' => 'Data', |
— | — | @@ -1067,7 +1051,6 @@ |
1068 | 1052 | 'watchlistfor' => "(pentru '''$1''')", |
1069 | 1053 | 'nowatchlist' => 'Nu aţi ales să urmăriţi nici o pagină.', |
1070 | 1054 | '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.'''", |
1072 | 1055 | 'watchnologin' => 'Nu sunteţi autentificat', |
1073 | 1056 | 'watchnologintext' => 'Trebuie să fiţi [[Special:Userlogin|autentificat]] pentru a vă modifica lista de pagini urmărite.', |
1074 | 1057 | 'addedwatch' => 'Adăugată la lista de pagini urmărite', |
— | — | @@ -1148,7 +1131,6 @@ |
1149 | 1132 | 'deletionlog' => 'raportul de ştergeri', |
1150 | 1133 | 'reverted' => 'Revenire la o versiune mai veche', |
1151 | 1134 | 'deletecomment' => 'Motiv pentru ştergere', |
1152 | | -'imagereverted' => 'S-a revenit la o versiune veche.', |
1153 | 1135 | 'rollback' => 'Editări de revenire', |
1154 | 1136 | 'rollback_short' => 'Revenire', |
1155 | 1137 | 'rollbacklink' => 'revenire', |
— | — | @@ -1415,7 +1397,6 @@ |
1416 | 1398 | 'allmessagesdefault' => 'Textul standard', |
1417 | 1399 | 'allmessagescurrent' => 'Textul curent', |
1418 | 1400 | '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.', |
1420 | 1401 | 'allmessagesnotsupportedDB' => "'''Special:Allmessages''' nu poate fi folosit deoarece '''\$wgUseDatabaseMessages''' este închisă.", |
1421 | 1402 | 'allmessagesfilter' => 'Filtrare în funcţie de titlul mesajului:', |
1422 | 1403 | 'allmessagesmodified' => 'Arată doar mesajele modificate.', |
— | — | @@ -1600,8 +1581,6 @@ |
1601 | 1582 | 'showhidebots' => '($1 roboţi)', |
1602 | 1583 | 'noimages' => 'Nimic de văzut.', |
1603 | 1584 | |
1604 | | -'passwordtooshort' => 'Parola dumneavoastră este prea scurtă. Trebuie să aibă cel puţin $1 caractere.', |
1605 | | - |
1606 | 1585 | # Metadata |
1607 | 1586 | 'metadata' => 'Informaţii', |
1608 | 1587 | '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 @@ |
1916 | 1895 | 'confirm_purge' => 'Doriţi să reîncărcaţi pagina? $1', |
1917 | 1896 | 'confirm_purge_button' => 'Da', |
1918 | 1897 | |
1919 | | -'youhavenewmessagesmulti' => 'Aveţi mesaje noi la $1', |
1920 | | - |
| 1898 | +# AJAX search |
1921 | 1899 | 'searchcontaining' => "Caută articolele care conţin ''$1''.", |
1922 | 1900 | 'searchnamed' => "Caută articole cu numele ''$1''.", |
1923 | 1901 | 'articletitles' => "Articole începând cu ''$1''", |
1924 | 1902 | 'hideresults' => 'Ascunde rezultatele', |
1925 | 1903 | |
1926 | | -'loginlanguagelabel' => 'Limba: $1', |
1927 | | - |
1928 | 1904 | # Multipage image navigation |
1929 | | -'imgmultipageprev' => '← pagina anterioară', |
1930 | | -'imgmultipagenext' => 'pagina următoare →', |
| 1905 | +'imgmultipageprev' => '← pagina anterioară', |
| 1906 | +'imgmultipagenext' => 'pagina următoare →', |
1931 | 1907 | 'imgmultigotopre' => 'Mergi la pagina', |
1932 | 1908 | |
1933 | 1909 | # Table pager |
— | — | @@ -1940,7 +1916,7 @@ |
1941 | 1917 | # Auto-summaries |
1942 | 1918 | 'autosumm-blank' => 'Şters conţinutul paginii', |
1943 | 1919 | '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]]', |
1945 | 1921 | 'autosumm-new' => 'Pagină nouă: $1', |
1946 | 1922 | |
1947 | 1923 | # Live preview |
— | — | @@ -1948,5 +1924,3 @@ |
1949 | 1925 | 'livepreview-ready' => 'Încărcare… Gata!', |
1950 | 1926 | |
1951 | 1927 | ); |
1952 | | - |
1953 | | - |
Index: branches/liquidthreads/languages/messages/MessagesDa.php |
— | — | @@ -430,6 +430,7 @@ |
431 | 431 | 'filedeleteerror' => 'Kunne ikke slette filen "$1".', |
432 | 432 | 'directorycreateerror' => 'Kunne ikke oprette kataloget "$1".', |
433 | 433 | 'filenotfound' => 'Kunne ikke finde filen "$1".', |
| 434 | +'fileexistserror' => 'Kunne ikke oprette "$1": filen findes allerede', |
434 | 435 | 'unexpected' => 'Uventet værdi: "$1"="$2".', |
435 | 436 | 'formerror' => 'Fejl: Kunne ikke afsende formular', |
436 | 437 | 'badarticleerror' => 'Denne funktion kan ikke udføres på denne side.', |
— | — | @@ -450,8 +451,11 @@ |
451 | 452 | 'protectedinterface' => 'Denne side indeholder tekst til softwarens sprog-interface og er skrivebeskyttet for at forhindre misbrug.', |
452 | 453 | 'editinginterface' => "'''Advarsel:''' Denne side indeholder tekst, som bruges af MediaWiki-softwaren. Ændringer har virkning på brugergrænsefladen.", |
453 | 454 | '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', |
455 | 457 | '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.", |
456 | 460 | |
457 | 461 | # Login and logout pages |
458 | 462 | 'logouttitle' => 'Bruger-log-af', |
— | — | @@ -468,7 +472,6 @@ |
469 | 473 | 'yourdomainname' => 'Dit domænenavn', |
470 | 474 | 'externaldberror' => 'Der er opstået en fejl i en ekstern adgangsdatabase, eller du har ikke rettigheder til at opdatere denne.', |
471 | 475 | '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 />', |
473 | 476 | 'login' => 'Log på', |
474 | 477 | 'loginprompt' => 'Du skal have cookies slået til for at kunne logge på {{SITENAME}}.', |
475 | 478 | 'userlogin' => 'Opret en konto eller log på', |
— | — | @@ -508,6 +511,7 @@ |
509 | 512 | 'nouserspecified' => 'Angiv venligst et brugernavn.', |
510 | 513 | 'wrongpassword' => 'Den indtastede adgangskode var forkert. Prøv igen.', |
511 | 514 | 'wrongpasswordempty' => 'Du glemte at indtaste password. Prøv igen.', |
| 515 | +'passwordtooshort' => 'Dit kodeord er for kort. Det skal være mindst $1 tegn langt.', |
512 | 516 | 'mailmypassword' => 'Send et nyt password til min e-mail-adresse', |
513 | 517 | 'passwordremindertitle' => 'Nyt password til {{SITENAME}}', |
514 | 518 | 'passwordremindertext' => 'Nogen (sandsynligvis dig, fra IP-addressen $1) |
— | — | @@ -590,6 +594,7 @@ |
591 | 595 | |
592 | 596 | Blokeringen er lavet af $1. Begrundelsen er ''$2''. |
593 | 597 | |
| 598 | +Blokeringen starter: $8 |
594 | 599 | Blokeringen udløber: $6 |
595 | 600 | Blokeringen er rettet mod: $7 |
596 | 601 | |
— | — | @@ -601,13 +606,24 @@ |
602 | 607 | |
603 | 608 | :\'\'$2\'\' |
604 | 609 | |
| 610 | +Blokeringsperiodens start: $8 |
605 | 611 | Blokeringen udløber: $6 |
606 | 612 | |
607 | 613 | Du kan kontakte $1 eller en af de andre [[{{MediaWiki:grouppage-sysop}}|administratorer]] for at diskutere blokeringen. |
608 | 614 | |
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]]. |
610 | 616 | |
611 | 617 | 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.', |
612 | 628 | 'blockedoriginalsource' => "Kildekoden fra '''$1''' vises her:", |
613 | 629 | 'blockededitsource' => "Kildekoden fra '''Dine ændringer''' til '''$1''':", |
614 | 630 | 'whitelistedittitle' => 'Log på for at redigere', |
— | — | @@ -646,7 +662,6 @@ |
647 | 663 | |
648 | 664 | <strong>Forsøg venligst igen. Hvis problemet fortsætter, log af og log på igen.</strong>", |
649 | 665 | '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', |
651 | 666 | 'editing' => 'Redigerer $1', |
652 | 667 | 'editinguser' => 'Redigerer $1', |
653 | 668 | 'editingsection' => 'Redigerer $1 (afsnit)', |
— | — | @@ -687,6 +702,9 @@ |
688 | 703 | 'edittools' => '<!-- Denne tekst vises under formularen „Ændre“ samt "Upload". -->', |
689 | 704 | 'nocreatetitle' => 'Oprettelse af nye sider er begrænset.', |
690 | 705 | '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:", |
691 | 709 | 'recreate-deleted-warn' => "'''Advarsel: Du er ved at genskabe en tidligere slettet side.''' |
692 | 710 | |
693 | 711 | Overvej om det er passende at genoprette siden. De slettede versioner for |
— | — | @@ -820,6 +838,7 @@ |
821 | 839 | 'preferences' => 'Indstillinger', |
822 | 840 | 'preferences-summary' => 'På denne specialside kan du ændre og tilpasse bestemte dele af brugeroverfladen individuelt', |
823 | 841 | 'mypreferences' => 'Indstillinger', |
| 842 | +'prefs-edits' => 'Antal redigeringer:', |
824 | 843 | 'prefsnologin' => 'Ikke logget på', |
825 | 844 | 'prefsnologintext' => 'Du skal være [[Special:Userlogin|logget på]] for at ændre brugerindstillinger.', |
826 | 845 | 'prefsreset' => 'Indstillingerne er blevet gendannet fra lageret.', |
— | — | @@ -896,7 +915,7 @@ |
897 | 916 | 'group' => 'Gruppe:', |
898 | 917 | 'group-bot' => 'Bots', |
899 | 918 | 'group-sysop' => 'Administratorer', |
900 | | -'group-bureaucrat' => 'Burokrater', |
| 919 | +'group-bureaucrat' => 'Bureaukrater', |
901 | 920 | 'group-all' => '(alle)', |
902 | 921 | |
903 | 922 | 'group-bot-member' => 'Bot', |
— | — | @@ -905,7 +924,7 @@ |
906 | 925 | |
907 | 926 | 'grouppage-bot' => '{{ns:project}}:Bots', |
908 | 927 | 'grouppage-sysop' => '{{ns:project}}:Administratorer', |
909 | | -'grouppage-bureaucrat' => '{{ns:project}}:Burokrater', |
| 928 | +'grouppage-bureaucrat' => '{{ns:project}}:Bureaukrater', |
910 | 929 | |
911 | 930 | # User rights log |
912 | 931 | 'rightslog' => 'Rettigheds-logbog', |
— | — | @@ -1040,7 +1059,6 @@ |
1041 | 1060 | 'imagelist' => 'Billedliste', |
1042 | 1061 | '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.', |
1043 | 1062 | 'imagelisttext' => 'Herunder er en liste med $1 billeder sorteret $2.', |
1044 | | -'imagelistforuser' => 'Denne side viser kun filer, som er uploadet af $1.', |
1045 | 1063 | 'getimagelist' => 'henter billedliste', |
1046 | 1064 | 'ilsubmit' => 'Søg', |
1047 | 1065 | 'showlast' => 'Vis de sidste $1 billeder sorteret $2.', |
— | — | @@ -1050,12 +1068,17 @@ |
1051 | 1069 | 'imgdelete' => 'slet', |
1052 | 1070 | 'imgdesc' => 'beskrivelse', |
1053 | 1071 | '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', |
1060 | 1083 | 'imagelinks' => 'Billedehenvisninger', |
1061 | 1084 | 'linkstoimage' => 'De følgende sider henviser til dette billede:', |
1062 | 1085 | 'nolinkstoimage' => 'Der er ingen sider der henviser til dette billede.', |
— | — | @@ -1072,6 +1095,16 @@ |
1073 | 1096 | 'imagelist_description' => 'Beskrivelse', |
1074 | 1097 | 'imagelist_search_for' => 'Søge efter fil:', |
1075 | 1098 | |
| 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 | + |
1076 | 1109 | # MIME search |
1077 | 1110 | 'mimesearch' => 'Søge efter MIME-type', |
1078 | 1111 | '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 @@ |
1191 | 1224 | 'protectedpages-summary' => 'Denne specialside viser alle sider, der er beskyttet mod ændring eller flytning.', |
1192 | 1225 | 'protectedpagestext' => 'De følgende sider er beskyttede mod redigering og flytning.', |
1193 | 1226 | 'protectedpagesempty' => 'I øjeblikket er ingen sider beskyttet på denne måde.', |
1194 | | -'listusers' => 'Brugereliste', |
| 1227 | +'listusers' => 'Brugerliste', |
1195 | 1228 | '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.", |
1196 | 1229 | 'specialpages' => 'Specielle sider', |
1197 | 1230 | 'specialpages-summary' => 'Denne side giver en oversigt over alle specialsider. De genereres automatisk og kan ikke ændres.', |
— | — | @@ -1278,7 +1311,6 @@ |
1279 | 1312 | 'watchlistfor' => "(for '''$1''')", |
1280 | 1313 | 'nowatchlist' => 'Du har ingenting i din overvågningsliste.', |
1281 | 1314 | '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).'''", |
1283 | 1315 | 'watchnologin' => 'Ikke logget på', |
1284 | 1316 | 'watchnologintext' => 'Du skal være [[Special:Userlogin|logget på]] for at kunne ændre din overvågningsliste.', |
1285 | 1317 | 'addedwatch' => 'Tilføjet til din overvågningsliste', |
— | — | @@ -1364,7 +1396,6 @@ |
1365 | 1397 | 'deletionlog' => 'sletningslog', |
1366 | 1398 | 'reverted' => 'Gendannet en tidligere version', |
1367 | 1399 | 'deletecomment' => 'Begrundelse for sletning', |
1368 | | -'imagereverted' => 'En tidligere version er gendannet.', |
1369 | 1400 | 'rollback' => 'Fjern redigeringer', |
1370 | 1401 | 'rollback_short' => 'Fjern redigering', |
1371 | 1402 | 'rollbacklink' => 'fjern redigering', |
— | — | @@ -1394,6 +1425,7 @@ |
1395 | 1426 | '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>', |
1396 | 1427 | '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:', |
1397 | 1428 | 'protect-default' => 'Alle (Standard)', |
| 1429 | +'protect-fallback' => 'Kræv "$1"-tilladelse', |
1398 | 1430 | 'protect-level-autoconfirmed' => 'Spærring for ikke registrerede brugere', |
1399 | 1431 | 'protect-level-sysop' => 'Kun administratorer', |
1400 | 1432 | 'protect-summary-cascade' => 'nedarvende', |
— | — | @@ -1434,7 +1466,7 @@ |
1435 | 1467 | 'undeletehistorynoadmin' => 'Denne side blev ikke slettet. Årsagen til sletningen er angivet i resumeet, |
1436 | 1468 | sammen med oplysninger om den sidste bruger, der ændrede denne side før sletningen. |
1437 | 1469 | 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:', |
1439 | 1471 | 'undeleterevision-missing' => 'Ugyldig eller manglende version. Enten er henvisningen forkert eller versionen blev fjernet eller gendannet fra arkivet.', |
1440 | 1472 | 'undeletebtn' => 'Gendan!', |
1441 | 1473 | 'undeletereset' => 'Afbryde', |
— | — | @@ -1547,6 +1579,8 @@ |
1548 | 1580 | 'unblocked' => '[[User:$1|$1]] blev frigivet', |
1549 | 1581 | 'unblocked-id' => 'Blokering $1 er blevet fjernet', |
1550 | 1582 | 'ipblocklist' => 'Blokerede IP-adresser og brugernavne', |
| 1583 | +'ipblocklist-legend' => 'Find en blokeret bruger', |
| 1584 | +'ipblocklist-username' => 'Brugernavn eller IP-addresse:', |
1551 | 1585 | '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.", |
1552 | 1586 | 'ipblocklist-submit' => 'Søg', |
1553 | 1587 | 'blocklistline' => '$1, $2 blokerede $3 ($4)', |
— | — | @@ -1611,6 +1645,7 @@ |
1612 | 1646 | 'movenologintext' => 'Du skal være registreret bruger og være [[Special:Userlogin|logget på]] |
1613 | 1647 | |
1614 | 1648 | for at flytte en side.', |
| 1649 | +'movenotallowed' => 'Du har ikke rettigheder til at flytte sider.', |
1615 | 1650 | 'newtitle' => 'Til ny titel', |
1616 | 1651 | 'move-watch' => 'Denne side overvåges', |
1617 | 1652 | 'movepagebtn' => 'Flyt side', |
— | — | @@ -1654,7 +1689,6 @@ |
1655 | 1690 | 'allmessagesdefault' => 'Standard tekst', |
1656 | 1691 | 'allmessagescurrent' => 'Nuværende tekst', |
1657 | 1692 | '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.', |
1659 | 1693 | 'allmessagesnotsupportedDB' => 'Special:AllMessages ikke understøttet fordi wgUseDatabaseMessages er slået fra.', |
1660 | 1694 | 'allmessagesfilter' => 'Meddelelsesnavnefilter:', |
1661 | 1695 | 'allmessagesmodified' => 'Vis kun ændrede', |
— | — | @@ -1846,20 +1880,28 @@ |
1847 | 1881 | 'mediawarning' => "'''Advarsel''', denne filtype kan muligvis indeholde skadelig kode, du kan beskadige dit system hvis du udfører den.<hr />", |
1848 | 1882 | 'imagemaxsize' => 'Begræns størrelsen af billeder på billedsiderne til:', |
1849 | 1883 | 'thumbsize' => 'Thumbnail størrelse :', |
| 1884 | +'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|side|sider}}', |
1850 | 1885 | 'file-info' => '(Filstørrelse: $1, MIME-Typ: $2)', |
1851 | 1886 | 'file-info-size' => '($1 × $2 pixel, filstørrelse: $3, MIME-Typ: $4)', |
1852 | 1887 | '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)', |
1854 | 1889 | 'show-big-image' => 'Version i større opløsning', |
1855 | 1890 | 'show-big-image-thumb' => '<small>Størrelse af forhåndsvisning: $1 × $2 pixel</small>', |
1856 | 1891 | |
| 1892 | +# Special:Newimages |
1857 | 1893 | 'newimages' => 'Galleri med de nyeste billeder', |
1858 | 1894 | 'newimages-summary' => 'Denne specialside viser de nyeste uploadede billeder og filer.', |
1859 | 1895 | 'showhidebots' => '(Bots $1)', |
1860 | 1896 | 'noimages' => 'Ingen filer fundet.', |
1861 | 1897 | |
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 |
1863 | 1900 | |
| 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 | + |
1864 | 1906 | # Metadata |
1865 | 1907 | 'metadata' => 'Metadata', |
1866 | 1908 | '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 @@ |
247 | 247 | 'category_header' => 'Artiklar i kategorin "$1"', |
248 | 248 | 'subcategories' => 'Underkategorier', |
249 | 249 | 'category-media-header' => 'Media i kategorin "$1"', |
| 250 | +'category-empty' => "''Den här kategorin innehåller just nu inga artiklar eller filer.''", |
250 | 251 | |
251 | 252 | 'mainpagetext' => 'Installation av wikimjukvara klar.', |
252 | 253 | '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 @@ |
359 | 360 | 'versionrequired' => 'Version $1 av MediaWiki krävs', |
360 | 361 | 'versionrequiredtext' => 'För att kunna använda den här sidan, behövs version $1 av MediaWiki. Se [[Special:Version]].', |
361 | 362 | |
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.', |
379 | 381 | |
380 | 382 | # Short words for each namespace, by default used in the 'article' tab in monobook |
381 | 383 | 'nstab-main' => 'Artikel', |
— | — | @@ -414,10 +416,13 @@ |
415 | 417 | '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).', |
416 | 418 | 'readonly_lag' => 'Databasen har automatiskt låsts tills dess att databasservrarna återfår kontakten med huvudservern.', |
417 | 419 | 'internalerror' => 'Internt fel', |
| 420 | +'internalerror_info' => 'Internt fel: $1', |
418 | 421 | 'filecopyerror' => 'Kunde inte kopiera filen "$1" till "$2".', |
419 | 422 | 'filerenameerror' => 'Kunde inte byta namn på filen "$1" till "$2".', |
420 | 423 | 'filedeleteerror' => 'Kunde inte radera filen "$1".', |
| 424 | +'directorycreateerror' => 'Kunde inte skapa katalogen "$1".', |
421 | 425 | 'filenotfound' => 'Kunde inte hitta filen "$1".', |
| 426 | +'fileexistserror' => 'Kan inte skriva till "$1": filen finns redan', |
422 | 427 | 'unexpected' => 'Oväntat värde: "$1"="$2".', |
423 | 428 | 'formerror' => 'Fel: Kunde inte sända formulär', |
424 | 429 | 'badarticleerror' => 'Den åtgärden kan inte utföras på den här sidan.', |
— | — | @@ -437,8 +442,11 @@ |
438 | 443 | 'protectedinterface' => 'Denna sida innehåller text för mjukvarans gränssnitt, och är skrivskyddad för att förebygga missbruk.', |
439 | 444 | '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.", |
440 | 445 | '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', |
442 | 448 | '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.', |
443 | 451 | |
444 | 452 | # Login and logout pages |
445 | 453 | 'logouttitle' => 'Användarutloggning', |
— | — | @@ -452,7 +460,6 @@ |
453 | 461 | 'yourdomainname' => 'Din domän', |
454 | 462 | 'externaldberror' => 'Antingen inträffade autentiseringsproblem med en extern databas, eller så får du inte uppdatera ditt externa konto.', |
455 | 463 | 'loginproblem' => '<b>Det uppstod problem vid inloggningen.</b><br />Pröva igen!', |
456 | | -'alreadyloggedin' => '<strong>$1, du är redan inloggad!</strong><br />', |
457 | 464 | 'login' => 'Logga in', |
458 | 465 | 'loginprompt' => 'För att logga in måste tillåta cookies för att logga in på {{SITENAME}}.', |
459 | 466 | 'userlogin' => 'Skapa ett konto eller logga in', |
— | — | @@ -491,6 +498,7 @@ |
492 | 499 | 'nouserspecified' => 'Du måste ange ett användarnamn.', |
493 | 500 | 'wrongpassword' => 'Lösenordet du angav är felaktigt. Försök igen', |
494 | 501 | '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.', |
495 | 503 | 'mailmypassword' => 'Sänd mig ett nytt lösenord', |
496 | 504 | 'passwordremindertitle' => 'Nytt lösenord från {{SITENAME}}', |
497 | 505 | 'passwordremindertext' => 'Någon - förmodligen du - har från IP-numret $1 bett oss sända dig ett |
— | — | @@ -516,6 +524,7 @@ |
517 | 525 | 'invalidemailaddress' => 'Denna e-postadressen kan inte godtas då formatet verkar vara felaktigt. Skriv in en adress på korrekt format, eller töm fältet.', |
518 | 526 | 'accountcreated' => 'Användarkontot har skapats', |
519 | 527 | 'accountcreatedtext' => 'Användarkontot $1 har skapats.', |
| 528 | +'loginlanguagelabel' => 'Språk: $1', |
520 | 529 | |
521 | 530 | # Password reset dialog |
522 | 531 | 'resetpass' => 'Välj nytt lösenord', |
— | — | @@ -571,10 +580,11 @@ |
572 | 581 | |
573 | 582 | Blockeringen utfördes av $1 med motiveringen: ''$2''. |
574 | 583 | |
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. |
577 | 587 | |
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. |
579 | 589 | |
580 | 590 | 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.", |
581 | 591 | '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 @@ |
583 | 593 | |
584 | 594 | :\'\'$2\'\' |
585 | 595 | |
586 | | -Blockeringen upphävs: $6 |
| 596 | +* Blockeringen startade $8 |
| 597 | +* Blockeringen gäller till $6 |
587 | 598 | |
588 | 599 | Du kan kontakta $1 eller någon annan [[{{MediaWiki:grouppage-sysop}}|administratör]] för att diskutera blockeringen. |
589 | 600 | |
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. |
591 | 602 | |
592 | 603 | 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.', |
593 | 614 | 'blockedoriginalsource' => "Källkoden för '''$1''' visas nedan:", |
594 | 615 | 'blockededitsource' => "Texten för '''dina ändringar''' av '''$1''' visas nedanför:", |
595 | 616 | 'whitelistedittitle' => 'Redigering kräver inloggning', |
— | — | @@ -633,7 +654,6 @@ |
634 | 655 | 'token_suffix_mismatch' => '<strong>Din redigering har stoppats eftersom din klient har ändrat tecknen |
635 | 656 | i redigeringens "edit token". Redigeringen stoppades för att förhindra att artikeltexten skadas. |
636 | 657 | Detta händer ibland om du använder buggiga webbaserade anonyma proxytjänster.</strong>', |
637 | | -'importing' => 'Importerar $1', |
638 | 658 | 'editing' => 'Redigerar $1', |
639 | 659 | 'editinguser' => 'Redigerar $1', |
640 | 660 | 'editingsection' => 'Redigerar $1 (avsnitt)', |
— | — | @@ -668,6 +688,9 @@ |
669 | 689 | 'edittools' => '<!-- Denna text kommer att visas nedanför redigeringsrutor och uppladdningsformulär. -->', |
670 | 690 | 'nocreatetitle' => 'Skapande av sidor begränsat', |
671 | 691 | '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:', |
672 | 695 | 'recreate-deleted-warn' => "'''Varning: Den sida du skapar har tidigare raderats.''' |
673 | 696 | |
674 | 697 | Du bör överväga om det är lämpligt att fortsätta redigera sidan. |
— | — | @@ -791,6 +814,7 @@ |
792 | 815 | # Preferences page |
793 | 816 | 'preferences' => 'Inställningar', |
794 | 817 | 'mypreferences' => 'Mina inställningar', |
| 818 | +'prefs-edits' => 'Antal redigeringar:', |
795 | 819 | 'prefsnologin' => 'Du är inte inloggad', |
796 | 820 | 'prefsnologintext' => 'Du måste vara [[Special:Userlogin|inloggad]] för att kunna ändra i inställningar.', |
797 | 821 | 'prefsreset' => 'Inställningarna har återställts till ursprungsvärdena.', |
— | — | @@ -818,8 +842,8 @@ |
819 | 843 | 'prefs-personal' => 'Mitt konto', |
820 | 844 | 'prefs-rc' => 'Senaste ändringar', |
821 | 845 | '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:', |
824 | 848 | 'prefs-misc' => 'Diverse', |
825 | 849 | 'saveprefs' => 'Spara inställningar', |
826 | 850 | 'resetprefs' => 'Återställ ursprungliga inställningar', |
— | — | @@ -849,18 +873,18 @@ |
850 | 874 | 'files' => 'Filer', |
851 | 875 | |
852 | 876 | # 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.', |
865 | 889 | |
866 | 890 | # Groups |
867 | 891 | 'group' => 'Grupp:', |
— | — | @@ -992,13 +1016,13 @@ |
993 | 1017 | |
994 | 1018 | 'license' => 'Licens', |
995 | 1019 | 'nolicense' => 'Ingen angiven', |
| 1020 | +'license-nopreview' => '(Förhandsvisning är inte tillgänglig)', |
996 | 1021 | 'upload_source_url' => ' (en giltig URL som är allmänt åtkomlig)', |
997 | 1022 | 'upload_source_file' => ' (en fil på din dator)', |
998 | 1023 | |
999 | 1024 | # Image list |
1000 | 1025 | 'imagelist' => 'Bildlista', |
1001 | 1026 | '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.', |
1003 | 1027 | 'getimagelist' => 'hämta bildlista', |
1004 | 1028 | 'ilsubmit' => 'Sök', |
1005 | 1029 | 'showlast' => 'Visa de senaste $1 bilderna sorterade $2.', |
— | — | @@ -1008,14 +1032,17 @@ |
1009 | 1033 | 'imgdelete' => 'ta bort', |
1010 | 1034 | 'imgdesc' => 'beskrivning', |
1011 | 1035 | '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', |
1020 | 1047 | 'imagelinks' => 'Bildlänkar', |
1021 | 1048 | 'linkstoimage' => 'Följande sidor länkar till denna bild:', |
1022 | 1049 | 'nolinkstoimage' => 'Inga sidor länkar till den här bilden.', |
— | — | @@ -1032,6 +1059,16 @@ |
1033 | 1060 | 'imagelist_description' => 'Filbeskrivning', |
1034 | 1061 | 'imagelist_search_for' => 'Sök efter bildnamn:', |
1035 | 1062 | |
| 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 | + |
1036 | 1073 | # MIME search |
1037 | 1074 | 'mimesearch' => 'MIME-sökning', |
1038 | 1075 | '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 @@ |
1051 | 1088 | 'unusedtemplateswlh' => 'andra länkar', |
1052 | 1089 | |
1053 | 1090 | # Random redirect |
1054 | | -'randomredirect' => 'Slumpvald omdirigering', |
| 1091 | +'randomredirect' => 'Slumpvald omdirigering', |
1055 | 1092 | 'randomredirect-nopages' => 'Det finns inga omdirigeringar i den här namnrymden.', |
1056 | 1093 | |
1057 | 1094 | # Statistics |
— | — | @@ -1064,7 +1101,7 @@ |
1065 | 1102 | 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. |
1066 | 1103 | |
1067 | 1104 | [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.", |
1069 | 1106 | 'statistics-mostpopular' => 'Mest besökta sidor', |
1070 | 1107 | |
1071 | 1108 | 'disambiguations' => 'Sidor som länkar till förgreningssidor', |
— | — | @@ -1082,7 +1119,7 @@ |
1083 | 1120 | 'withoutinterwiki' => 'Sidor utan språklänkar', |
1084 | 1121 | 'withoutinterwiki-header' => 'Följande sidor saknar länkar till andra språkversioner:', |
1085 | 1122 | |
1086 | | -'fewestrevisions' => 'Artiklar med minst antal ändringar', |
| 1123 | +'fewestrevisions' => 'Artiklar med minst antal ändringar', |
1087 | 1124 | |
1088 | 1125 | # Miscellaneous special pages |
1089 | 1126 | 'nbytes' => '$1 {{PLURAL:$1|byte|bytes}}', |
— | — | @@ -1203,11 +1240,10 @@ |
1204 | 1241 | |
1205 | 1242 | # Watchlist |
1206 | 1243 | 'watchlist' => 'Min övervakningslista', |
1207 | | -'mywatchlist' => 'Min övervakningslista', |
| 1244 | +'mywatchlist' => 'Min övervakningslista', |
1208 | 1245 | 'watchlistfor' => "(för '''$1''')", |
1209 | 1246 | 'nowatchlist' => 'Du har inga sidor i din övervakningslista.', |
1210 | 1247 | '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.'''", |
1212 | 1248 | 'watchnologin' => 'Du är inte inloggad', |
1213 | 1249 | 'watchnologintext' => 'Du måste vara [[Special:Userlogin|inloggad]] för att kunna göra ändringar i din övervakningslista.', |
1214 | 1250 | 'addedwatch' => 'Tillagd på övervakningslistan', |
— | — | @@ -1243,17 +1279,17 @@ |
1244 | 1280 | 'watching' => 'Bevakar...', |
1245 | 1281 | 'unwatching' => 'Avbevakar...', |
1246 | 1282 | |
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.', |
1250 | 1286 | '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, |
1258 | 1294 | |
1259 | 1295 | {{SITENAME}}-sidan $PAGETITLE har blivit $CHANGEDORCREATED $PAGEEDITDATE av $PAGEEDITOR; den nuvarande versionen hittar du på $PAGETITLE_URL. |
1260 | 1296 | |
— | — | @@ -1298,7 +1334,6 @@ |
1299 | 1335 | 'deletionlog' => 'raderingslogg', |
1300 | 1336 | 'reverted' => 'Återgått till tidigare version', |
1301 | 1337 | 'deletecomment' => 'Anledning till borttagning', |
1302 | | -'imagereverted' => 'Återställningen av nyare artikelversion lyckades', |
1303 | 1338 | 'rollback' => 'Rulla tillbaka ändringar', |
1304 | 1339 | 'rollback_short' => 'Återställning', |
1305 | 1340 | 'rollbacklink' => 'rulla tillbaka', |
— | — | @@ -1314,7 +1349,7 @@ |
1315 | 1350 | 'protectedarticle' => 'skyddade [[$1]]', |
1316 | 1351 | 'modifiedarticleprotection' => 'ändrade skyddsnivån för "[[$1]]"', |
1317 | 1352 | 'unprotectedarticle' => 'tog bort skydd av $1', |
1318 | | -'protectsub' => '(Skyddar "$1")', |
| 1353 | +'protectsub' => '(Skyddsinställningar för "$1")', |
1319 | 1354 | 'confirmprotect' => 'Bekräfta skrivskydd av sida', |
1320 | 1355 | 'protectcomment' => 'Anledning till skydd av sidan', |
1321 | 1356 | 'protectexpiry' => 'Varaktighet', |
— | — | @@ -1331,6 +1366,7 @@ |
1332 | 1367 | Här kan du se gällande skyddsinställninger för sidan <strong>$1</strong>:', |
1333 | 1368 | '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:', |
1334 | 1369 | 'protect-default' => '(standard)', |
| 1370 | +'protect-fallback' => 'Behörigheten "$1"', |
1335 | 1371 | 'protect-level-autoconfirmed' => 'Enbart registrerade användare', |
1336 | 1372 | 'protect-level-sysop' => 'Enbart administratörer', |
1337 | 1373 | 'protect-summary-cascade' => 'kaskaderande', |
— | — | @@ -1352,37 +1388,43 @@ |
1353 | 1389 | 'restriction-level-all' => 'alla nivåer', |
1354 | 1390 | |
1355 | 1391 | # 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. |
1361 | 1397 | * 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'''. |
1362 | 1398 | * '''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. |
1366 | 1402 | I sådana fall måste du se till att den senaste raderade versionen inte är ikryssad, eller att den inte är dold. |
1367 | 1403 | 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> |
1380 | 1416 | |
1381 | 1417 | 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', |
1387 | 1429 | |
1388 | 1430 | # Namespace form on various pages |
1389 | 1431 | 'namespace' => 'Namnrymd:', |
— | — | @@ -1413,34 +1455,27 @@ |
1414 | 1456 | 'sp-newimages-showfrom' => 'Visa nya bilder från och med $1', |
1415 | 1457 | |
1416 | 1458 | # 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', |
1428 | 1470 | 'whatlinkshere-links' => '← länkar', |
1429 | 1471 | |
1430 | 1472 | # Block/unblock |
1431 | | -'blockip' => 'Blockera IP-adress', |
| 1473 | +'blockip' => 'Blockera användare eller IP-adress', |
1432 | 1474 | '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).', |
1433 | 1475 | 'ipaddress' => 'IP-adress', |
1434 | 1476 | 'ipadressorusername' => 'IP-adress eller användarnamn', |
1435 | 1477 | 'ipbexpiry' => 'Varaktighet', |
1436 | 1478 | 'ipbreason' => 'Anledning', |
1437 | 1479 | '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]]. |
1445 | 1480 | 'ipbreason-dropdown' => ' |
1446 | 1481 | *Vanliga motiv till blockering |
1447 | 1482 | ** Infogar falsk information |
— | — | @@ -1453,7 +1488,7 @@ |
1454 | 1489 | 'ipbcreateaccount' => 'Förhindra registrering av användarkonton', |
1455 | 1490 | 'ipbemailban' => 'Hindra användaren från att skicka e-post', |
1456 | 1491 | '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', |
1458 | 1493 | 'ipbother' => 'Annan tidsperiod', |
1459 | 1494 | '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', |
1460 | 1495 | 'ipbotheroption' => 'annan tidsperiod', |
— | — | @@ -1469,16 +1504,18 @@ |
1470 | 1505 | 'ipb-unblock' => 'Ta bort blockering av en användare eller IP-adress', |
1471 | 1506 | 'ipb-blocklist-addr' => 'Visa gällande blockeringar av $1', |
1472 | 1507 | 'ipb-blocklist' => 'Visa gällande blockeringar', |
1473 | | -'unblockip' => 'Ta bort blockering av IP-adress', |
| 1508 | +'unblockip' => 'Ta bort blockering av användare/IP-adress', |
1474 | 1509 | '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', |
1476 | 1511 | 'unblocked' => 'Blockeringen av [[User:$1|$1]] har hävts', |
1477 | 1512 | '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', |
1479 | 1516 | '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', |
1483 | 1520 | 'anononlyblock' => 'endast för oinloggade', |
1484 | 1521 | 'noautoblockblock' => 'utan automatisk blockering', |
1485 | 1522 | 'createaccountblock' => 'kontoregistrering blockerad', |
— | — | @@ -1535,12 +1572,13 @@ |
1536 | 1573 | *Du avmarkerar rutan nedan.", |
1537 | 1574 | 'movearticle' => 'Flytta sida', |
1538 | 1575 | '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.', |
1540 | 1578 | 'newtitle' => 'Till det nya uppslagsordet', |
1541 | 1579 | 'move-watch' => 'Bevaka denna sida', |
1542 | 1580 | 'movepagebtn' => 'Flytta sidan', |
1543 | 1581 | '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. |
1545 | 1583 | 'articleexists' => 'Antingen existerar redan en sida med det namnet, eller så har du valt ett namn som inte är tillåtet. |
1546 | 1584 | Välj något annat namn istället.', |
1547 | 1585 | '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 @@ |
1574 | 1612 | 'export-submit' => 'Exportera', |
1575 | 1613 | 'export-addcattext' => 'Lägg till sidor från kategori:', |
1576 | 1614 | 'export-addcat' => 'Lägg till', |
| 1615 | +'export-download' => 'Ladda ner som fil', |
1577 | 1616 | |
1578 | 1617 | # Namespace 8 related |
1579 | 1618 | 'allmessages' => 'Systemmeddelanden', |
— | — | @@ -1580,18 +1619,17 @@ |
1581 | 1620 | 'allmessagesdefault' => 'Standardtext', |
1582 | 1621 | 'allmessagescurrent' => 'Nuvarande text', |
1583 | 1622 | '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.", |
1585 | 1623 | 'allmessagesnotsupportedDB' => "Det finns inte stöd för ''Special:Allmessages'', eftersom '''\$wgUseDatabaseMessages''' är avstängd.", |
1586 | 1624 | 'allmessagesfilter' => 'Filter för meddelandenamn:', |
1587 | 1625 | 'allmessagesmodified' => 'Visa bara ändrade', |
1588 | 1626 | |
1589 | 1627 | # 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', |
1596 | 1634 | 'thumbnail_invalid_params' => 'Ogiltiga parametrar för miniatyrbilden', |
1597 | 1635 | 'thumbnail_dest_directory' => 'Kan inte skapa målkatalogen', |
1598 | 1636 | |
— | — | @@ -1756,7 +1794,13 @@ |
1757 | 1795 | 'patrol-log-diff' => 'version $1', |
1758 | 1796 | |
1759 | 1797 | # 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".', |
1761 | 1805 | |
1762 | 1806 | # Browsing diffs |
1763 | 1807 | 'previousdiff' => '← Gå till föregående ändring', |
— | — | @@ -1777,8 +1821,12 @@ |
1778 | 1822 | 'showhidebots' => '($1 robotar)', |
1779 | 1823 | 'noimages' => 'Ingenting att se.', |
1780 | 1824 | |
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: |
1782 | 1827 | |
| 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 | + |
1783 | 1831 | # Metadata |
1784 | 1832 | 'metadata' => 'Metadata', |
1785 | 1833 | '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 @@ |
2105 | 2153 | $1', |
2106 | 2154 | 'confirm_purge_button' => 'OK', |
2107 | 2155 | |
2108 | | -'youhavenewmessagesmulti' => 'Du har nya meddelanden på $1', |
2109 | | - |
| 2156 | +# AJAX search |
2110 | 2157 | 'searchcontaining' => "Leta efter artiklar som innehåller ''$1''.", |
2111 | 2158 | 'searchnamed' => "Leta efter artiklar som heter ''$1''.", |
2112 | 2159 | 'articletitles' => "Artiklar som börjar med ''$1''", |
2113 | 2160 | 'hideresults' => 'Göm resultat', |
2114 | 2161 | |
2115 | | -'loginlanguagelabel' => 'Språk: $1', |
2116 | | - |
2117 | 2162 | # Multipage image navigation |
2118 | 2163 | 'imgmultipageprev' => '← föregående sida', |
2119 | 2164 | 'imgmultipagenext' => 'nästa sida →', |
— | — | @@ -2134,7 +2179,7 @@ |
2135 | 2180 | # Auto-summaries |
2136 | 2181 | 'autosumm-blank' => 'Tar bort sidans innehåll', |
2137 | 2182 | '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]]', |
2139 | 2184 | 'autosumm-new' => 'Ny sida: $1', |
2140 | 2185 | |
2141 | 2186 | # Size units |
— | — | @@ -2190,6 +2235,3 @@ |
2191 | 2236 | |
2192 | 2237 | ); |
2193 | 2238 | |
2194 | | - |
2195 | | - |
2196 | | - |
Index: branches/liquidthreads/languages/messages/MessagesDe.php |
— | — | @@ -904,7 +904,7 @@ |
905 | 905 | 'notextmatches' => 'Keine Übereinstimmungen mit Inhalten', |
906 | 906 | 'prevn' => 'vorherige $1', |
907 | 907 | 'nextn' => 'nächste $1', |
908 | | -'viewprevnext' => 'Zeige ($1) ($2) ($3).', |
| 908 | +'viewprevnext' => 'Zeige ($1) ($2) ($3)', |
909 | 909 | 'showingresults' => "Hier {{PLURAL:$1|ist '''1''' Ergebnis|sind '''$1''' Ergebnisse}}, beginnend mit Nummer '''$2'''.", |
910 | 910 | 'showingresultsnum' => "Hier {{PLURAL:$3|ist '''1''' Ergebnis|sind '''$1''' Ergebnisse}}, beginnend mit Nummer '''$2'''.", |
911 | 911 | '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 @@ |
918 | 918 | 'preferences' => 'Einstellungen', |
919 | 919 | 'preferences-summary' => 'Auf dieser Spezialseite kannst du deine Zugangsdaten ändern und bestimmte Teile der Oberfläche individuell anpassen ', |
920 | 920 | 'mypreferences' => 'Einstellungen', |
| 921 | +'prefs-edits' => 'Anzahl Bearbeitungen:', |
921 | 922 | 'prefsnologin' => 'Nicht angemeldet', |
922 | 923 | 'prefsnologintext' => 'Du musst [[Special:Userlogin|angemeldet]] sein, um deine Einstellungen ändern zu können.', |
923 | 924 | 'prefsreset' => 'Die Eingaben wurden verworfen, es erfolgte keine Speicherung.', |
— | — | @@ -1104,6 +1105,7 @@ |
1105 | 1106 | 'uploadwarning' => 'Warnung', |
1106 | 1107 | 'savefile' => 'Datei speichern', |
1107 | 1108 | 'uploadedimage' => 'hat „[[$1]]“ hochgeladen', |
| 1109 | +'overwroteimage' => 'hat eine neue Version von „[[$1]]“ hochgeladen', |
1108 | 1110 | 'uploaddisabled' => 'Entschuldigung, das Hochladen ist deaktiviert.', |
1109 | 1111 | 'uploaddisabledtext' => 'Das Hochladen von Dateien ist in {{SITENAME}} deaktiviert.', |
1110 | 1112 | 'uploadscripted' => 'Diese Datei enthält HTML- oder Scriptcode, der irrtümlich von einem Webbrowser ausgeführt werden könnte.', |
— | — | @@ -1511,6 +1513,7 @@ |
1512 | 1514 | '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>', |
1513 | 1515 | '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:', |
1514 | 1516 | 'protect-default' => 'Alle (Standard)', |
| 1517 | +'protect-fallback' => 'Es wird die „$1“-Berechtigung benötigt.', |
1515 | 1518 | 'protect-level-autoconfirmed' => 'Sperrung für nicht registrierte Benutzer', |
1516 | 1519 | 'protect-level-sysop' => 'Nur Administratoren', |
1517 | 1520 | 'protect-summary-cascade' => 'kaskadierend', |
— | — | @@ -1980,13 +1983,15 @@ |
1981 | 1984 | '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 />", |
1982 | 1985 | 'imagemaxsize' => 'Maximale Bildgröße auf Bildbeschreibungsseiten:', |
1983 | 1986 | 'thumbsize' => 'Standardgröße der Vorschaubilder (thumbnails):', |
| 1987 | +'widthheightpage' => '$1×$2, $3 Seiten', |
1984 | 1988 | 'file-info' => '(Dateigröße: $1, MIME-Typ: $2)', |
1985 | 1989 | 'file-info-size' => '($1 × $2 Pixel, Dateigröße: $3, MIME-Typ: $4)', |
1986 | 1990 | '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)', |
1988 | 1992 | 'show-big-image' => 'Version in höherer Auflösung', |
1989 | 1993 | 'show-big-image-thumb' => '<small>Größe der Voransicht: $1 × $2 Pixel</small>', |
1990 | 1994 | |
| 1995 | +# Special:Newimages |
1991 | 1996 | 'newimages' => 'Neue Dateien', |
1992 | 1997 | 'newimages-summary' => 'Diese Spezialseite zeigt die zuletzt hochgeladenen Bilder und Dateien an.', |
1993 | 1998 | 'showhidebots' => '(Bots $1)', |
Index: branches/liquidthreads/languages/messages/MessagesZh_cn.php |
— | — | @@ -300,23 +300,24 @@ |
301 | 301 | 'versionrequired' => '需要MediaWiki $1 版', |
302 | 302 | 'versionrequiredtext' => '需要版本$1的 MediaWiki 才能使用此页。参见[[Special:Version|版本頁]]。', |
303 | 303 | |
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' => '无效的订阅类型。', |
321 | 322 | |
322 | 323 | # Short words for each namespace, by default used in the 'article' tab in monobook |
323 | 324 | 'nstab-main' => '文章', |
— | — | @@ -395,8 +396,8 @@ |
396 | 397 | 'protectedinterface' => '该页提供了软件的界面文本,它已被锁定以防止随意的修改。', |
397 | 398 | 'editinginterface' => "'''警告:''' 您正在编辑的页面是用于提供软件的界面文本。改变此页将影响其他用户的界面外观。", |
398 | 399 | 'sqlhidden' => '(SQL查询已隐藏)', |
399 | | -'cascadeprotected' => "这个页面已经被保护,因为这个页面被以下已标注\"联锁保护\"的{{PLURAL:$1|一个|多个}}被保护页面包含: |
400 | | -$2", |
| 400 | +'cascadeprotected' => '这个页面已经被保护,因为这个页面被以下已标注"联锁保护"的{{PLURAL:$1|一个|多个}}被保护页面包含: |
| 401 | +$2', |
401 | 402 | 'namespaceprotected' => "您并没有权限去编辑在'''$1'''名字空间内的页面。", |
402 | 403 | 'customcssjsprotected' => '您並無權限去編輯這個頁面,因為它包含了另一位用戶的個人設定。', |
403 | 404 | 'ns-specialprotected' => '在特殊名字空間中的頁面是不可以編輯的。', |
— | — | @@ -417,7 +418,6 @@ |
418 | 419 | 'yourdomainname' => '您的域名:', |
419 | 420 | 'externaldberror' => '这可能是由于外部验证数据库错误或您被禁止更新您的外部账号。', |
420 | 421 | 'loginproblem' => '<b>登录有问题。</b><br />请再试一次!', |
421 | | -'alreadyloggedin' => '<strong>用户$1,您已经登录了!</strong><br />', |
422 | 422 | 'login' => '登录', |
423 | 423 | 'loginprompt' => '您必须启用 Cookies 才能登录{{SITENAME}}。', |
424 | 424 | 'userlogin' => '登录/创建账户', |
— | — | @@ -474,6 +474,7 @@ |
475 | 475 | 'invalidemailaddress' => '邮箱地址格式不正确,请输入正确的邮箱地址或清空该输入框。', |
476 | 476 | 'accountcreated' => '已建立账户', |
477 | 477 | 'accountcreatedtext' => '$1的账户已经被创建。', |
| 478 | +'loginlanguagelabel' => '语言: $1', |
478 | 479 | |
479 | 480 | # Password reset dialog |
480 | 481 | 'resetpass' => '重设账户密码', |
— | — | @@ -592,7 +593,6 @@ |
593 | 594 | <strong>如果这是一次合法的编辑,请重新进行尝试。如果还不行,请退出并重新登录。</strong>", |
594 | 595 | 'token_suffix_mismatch' => '<strong>由于您用户端中的编辑令牌毁损了一些标点符号字元,为防止编辑的文字损坏,您的编辑已经被拒绝。 |
595 | 596 | 这种情况通常出现于使用含有很多臭虫、以网络为主的匿名代理服务的时候。</strong>', |
596 | | -'importing' => '正在导入$1', |
597 | 597 | 'editing' => '正在编辑$1', |
598 | 598 | 'editinguser' => '正在编辑用户<b>$1</b>', |
599 | 599 | 'editingsection' => '正在编辑$1 (段落)', |
— | — | @@ -756,7 +756,7 @@ |
757 | 757 | 'notextmatches' => '没有文章内容匹配', |
758 | 758 | 'prevn' => '前$1个', |
759 | 759 | 'nextn' => '后$1个', |
760 | | -'viewprevnext' => '查看 ($1) ($2) ($3)。', |
| 760 | +'viewprevnext' => '查看 ($1) ($2) ($3)', |
761 | 761 | 'showingresults' => '下面显示从第<b>$2</b>条开始的<b>$1</b>条结果:', |
762 | 762 | 'showingresultsnum' => '下面显示从第<b>$2</b>条开始的<b>$3</b>条结果:', |
763 | 763 | 'nonefound' => '<strong>注意:</strong>失败的搜索往往是由于试图搜索诸如“的”或“和”之类的常见字所引起。', |
— | — | @@ -769,6 +769,7 @@ |
770 | 770 | # Preferences page |
771 | 771 | 'preferences' => '参数设置', |
772 | 772 | 'mypreferences' => '我的参数设置', |
| 773 | +'prefs-edits' => '编辑数量:', |
773 | 774 | 'prefsnologin' => '尚未登录', |
774 | 775 | 'prefsnologintext' => '您必须先[[Special:Userlogin|登录]]才能设置个人参数。', |
775 | 776 | 'prefsreset' => '参数已被重新设置。', |
— | — | @@ -979,7 +980,6 @@ |
980 | 981 | # Image list |
981 | 982 | 'imagelist' => '文件列表', |
982 | 983 | 'imagelisttext' => '以下是按$2排列的$1个文件列表。', |
983 | | -'imagelistforuser' => '此处仅仅显示由$1上传的图像。', |
984 | 984 | 'getimagelist' => '正在获取文件列表', |
985 | 985 | 'ilsubmit' => '搜索', |
986 | 986 | 'showlast' => '显示按$2排列的最后$1个文件。', |
— | — | @@ -1205,7 +1205,6 @@ |
1206 | 1206 | 'watchlistfor' => "('''$1'''的监视列表')", |
1207 | 1207 | 'nowatchlist' => '您的监视列表为空。', |
1208 | 1208 | 'watchlistanontext' => '请$1以查看或编辑您的监视列表。', |
1209 | | -'watchlistcount' => "'''您的监视列表有$1项,其中包括讨论页。'''", |
1210 | 1209 | 'watchnologin' => '未登录', |
1211 | 1210 | 'watchnologintext' => '您必须先[[Special:Userlogin|登录]]才能更改您的监视列表。', |
1212 | 1211 | 'addedwatch' => '已添加至监视列表', |
— | — | @@ -1335,6 +1334,7 @@ |
1336 | 1335 | 以下是<strong>$1</strong>现时的保护级别:', |
1337 | 1336 | 'protect-cascadeon' => '以下的{{PLURAL:$1|一个|多个}}页面包含 本页面的同时,启动了连锁保护,因此本页面目前也被保护,未能编辑。您可以设置本页面的保护级别,但这并不会对连锁保护有所影响。', |
1338 | 1337 | 'protect-default' => '(默认)', |
| 1338 | +'protect-fallback' => '需要"$1"的许可', |
1339 | 1339 | 'protect-level-autoconfirmed' => '禁止未注册用户', |
1340 | 1340 | 'protect-level-sysop' => '仅操作员', |
1341 | 1341 | 'protect-summary-cascade' => '联锁', |
— | — | @@ -1368,7 +1368,7 @@ |
1369 | 1369 | 被恢复的版本将会称为较新的历史,而新页面的当前版本将无法被自动复原。', |
1370 | 1370 | 'undeleterevdel' => '如果把最新修订部份删除,反删除便无法进行。如果遇到这种情况,您必须反选或反隐藏最新已删除的修订。对于您没有权限去查看的修订是无法恢复的。', |
1371 | 1371 | 'undeletehistorynoadmin' => '这个文章已被删除。删除原因显示在下方编辑摘要中,被删除前的所有修订文本连同删除前贡献用户的细节信息只对管理员可见。', |
1372 | | -'undelete-revision' => '删除$1时在$2的修订版本', |
| 1372 | +'undelete-revision' => '删除$1时由$3(在$2)所编写的修订版本:', |
1373 | 1373 | 'undeleterevision-missing' => '无效或丢失的修订版本。您可能使用了错误的链接,或者此修订版本已经被从存档中恢复或移除。', |
1374 | 1374 | 'undeletebtn' => '恢复', |
1375 | 1375 | 'undeletereset' => '重设', |
— | — | @@ -2170,15 +2170,12 @@ |
2171 | 2171 | 'confirm_purge' => '要清除此页面的缓存吗?\n\n$1', |
2172 | 2172 | 'confirm_purge_button' => '确定', |
2173 | 2173 | |
2174 | | -'youhavenewmessagesmulti' => '您在$1上有新消息', |
2175 | | - |
| 2174 | +# AJAX search |
2176 | 2175 | 'searchcontaining' => "搜索包含''$1''的文章。", |
2177 | 2176 | 'searchnamed' => "搜索名为''$1''的文章。", |
2178 | 2177 | 'articletitles' => '文章以"$1"开头', |
2179 | 2178 | 'hideresults' => '隐藏结果', |
2180 | 2179 | |
2181 | | -'loginlanguagelabel' => '语言: $1', |
2182 | | - |
2183 | 2180 | # Multipage image navigation |
2184 | 2181 | 'imgmultipageprev' => '← 上一页', |
2185 | 2182 | 'imgmultipagenext' => '下一页 →', |
Index: branches/liquidthreads/languages/messages/MessagesZh_yue.php |
— | — | @@ -359,23 +359,24 @@ |
360 | 360 | 'versionrequired' => '係需要用 $1 版嘅 MediaWiki', |
361 | 361 | 'versionrequiredtext' => '要用呢一頁,係需要用MediaWiki版本 $1 。睇睇[[Special:Version|版本頁]]。', |
362 | 362 | |
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 類型。', |
380 | 381 | |
381 | 382 | # Short words for each namespace, by default used in the 'article' tab in monobook |
382 | 383 | 'nstab-main' => '文章', |
— | — | @@ -475,7 +476,6 @@ |
476 | 477 | 'yourdomainname' => '你嘅網域:', |
477 | 478 | 'externaldberror' => '外部驗證資料庫出錯,或者唔允許你更新你嘅外部帳戶。', |
478 | 479 | 'loginproblem' => '<b>你嘅登入手續出咗問題。</b><br />唔該再試吓登入。', |
479 | | -'alreadyloggedin' => '<strong>用戶$1,你已經登入咗喇喎!</strong><br />', |
480 | 480 | 'login' => '登入', |
481 | 481 | 'loginprompt' => '你一定要開咗 cookies 先登入到{{SITENAME}}。', |
482 | 482 | 'userlogin' => '登入/開新戶口', |
— | — | @@ -541,6 +541,7 @@ |
542 | 542 | 唔該輸入一個啱格式嘅地址,或清咗嗰個空格。', |
543 | 543 | 'accountcreated' => '戶口已經建立咗', |
544 | 544 | 'accountcreatedtext' => '$1嘅戶口起好咗。', |
| 545 | +'loginlanguagelabel' => '語言:$1', |
545 | 546 | |
546 | 547 | # Password reset dialog |
547 | 548 | 'resetpass' => '重設戶口密碼', |
— | — | @@ -665,7 +666,6 @@ |
666 | 667 | <strong>如果呢個係正當嘅編輯嘗試,請再試過。如果重係唔得嘅話,請先登出然後再登入。</strong>", |
667 | 668 | 'token_suffix_mismatch' => '<strong>因為你嘅用戶端度嘅編輯幣整壞咗一啲標點符號字元,你嘅編輯已經拒絕咗。個編輯已經拒絕,以防止文章嘅文字損毀。 |
668 | 669 | 當你響度用緊一啲好多臭蟲,以網絡為主嘅匿名代理服務。</strong>', |
669 | | -'importing' => '而家喺度滙入$1', |
670 | 670 | 'editing' => '而家喺度編輯$1', |
671 | 671 | 'editinguser' => '而家喺度編輯用戶<b>$1</b>', |
672 | 672 | 'editingsection' => '而家喺度編輯$1 (小節)', |
— | — | @@ -833,7 +833,7 @@ |
834 | 834 | 'notextmatches' => '冇頁面文字符合', |
835 | 835 | 'prevn' => '前$1', |
836 | 836 | 'nextn' => '後$1', |
837 | | -'viewprevnext' => '去睇 ($1) ($2) ($3)。', |
| 837 | +'viewprevnext' => '去睇 ($1) ($2) ($3)', |
838 | 838 | 'showingresults' => '自#<b>$2</b>起顯示最多<b>$1</b>個結果。', |
839 | 839 | 'showingresultsnum' => '自#<b>$2</b>起顯示<b>$3</b>個結果。', |
840 | 840 | 'nonefound' => "'''注意''':搵嘢結果為空通常係因為你搵嘅係\"have\"、 |
— | — | @@ -847,6 +847,7 @@ |
848 | 848 | # Preferences page |
849 | 849 | 'preferences' => '喜好設定', |
850 | 850 | 'mypreferences' => '我嘅喜好設定', |
| 851 | +'prefs-edits' => '編輯數:', |
851 | 852 | 'prefsnologin' => '重未登入', |
852 | 853 | 'prefsnologintext' => '你一定要去[[Special:Userlogin|登入]]設定好用戶喜好值先。', |
853 | 854 | 'prefsreset' => '喜好設定已經從儲存空間中重設。', |
— | — | @@ -1054,7 +1055,6 @@ |
1055 | 1056 | # Image list |
1056 | 1057 | 'imagelist' => '檔案清單', |
1057 | 1058 | 'imagelisttext' => "以下係'''$1'''個檔案'''$2'''排序嘅清單。", |
1058 | | -'imagelistforuser' => '只顯示$1上載嘅檔案。', |
1059 | 1059 | 'getimagelist' => '獲取檔案清單中', |
1060 | 1060 | 'ilsubmit' => '搵嘢', |
1061 | 1061 | 'showlast' => '顯示$2排序嘅最後$1個檔案。', |
— | — | @@ -1283,7 +1283,6 @@ |
1284 | 1284 | 'watchlistfor' => "(用戶「'''$1'''」嘅監視清單)", |
1285 | 1285 | 'nowatchlist' => '你嘅監視清單度並冇任何項目。', |
1286 | 1286 | 'watchlistanontext' => '請先$1去睇或者改響你監視清單度嘅項目。', |
1287 | | -'watchlistcount' => "'''你有 $1 個項目喺你嘅監視清單度,包括埋對話頁。'''", |
1288 | 1287 | 'watchnologin' => '未登入', |
1289 | 1288 | 'watchnologintext' => '你必須先[[Special:Userlogin|登入]]至可以更改你嘅監視清單。', |
1290 | 1289 | 'addedwatch' => '加到監視清單度', |
— | — | @@ -1396,7 +1395,7 @@ |
1397 | 1396 | 'protectedarticle' => '已經保護 "[[$1]]"', |
1398 | 1397 | 'modifiedarticleprotection' => '已經改咗 "[[$1]]" 嘅保護等級', |
1399 | 1398 | 'unprotectedarticle' => '已經唔再保護 "[[$1]]"', |
1400 | | -'protectsub' => '(保護緊「$1」)', |
| 1399 | +'protectsub' => '(設定緊「$1」嘅保護等級)', |
1401 | 1400 | 'confirmprotect' => '確認保護', |
1402 | 1401 | 'protectcomment' => '註解:', |
1403 | 1402 | 'protectexpiry' => '到期:', |
— | — | @@ -1413,6 +1412,7 @@ |
1414 | 1413 | 呢個係<strong>$1</strong>版嘅現時設定:', |
1415 | 1414 | 'protect-cascadeon' => '呢一版現時正響度保護緊,因為佢係響以下嘅{{PLURAL:$1|一|幾}}頁度包含咗,而當中又開咗連串保護。你可以更改呢一版嘅保護等級,但係呢個修改係唔會影響到嗰個連串保護。', |
1416 | 1415 | 'protect-default' => '(預設)', |
| 1416 | +'protect-fallback' => '需要"$1"嘅許可', |
1417 | 1417 | 'protect-level-autoconfirmed' => '限制未註冊嘅用戶', |
1418 | 1418 | 'protect-level-sysop' => '只限操作員', |
1419 | 1419 | 'protect-summary-cascade' => '連串保護', |
— | — | @@ -1449,7 +1449,7 @@ |
1450 | 1450 | 'undeletehistorynoadmin' => '呢篇文已經刪咗。刪除嘅原因喺下面嘅摘要度, |
1451 | 1451 | 連同重有刪除之前編輯過呢個頁面嘅用戶嘅詳細資料。 |
1452 | 1452 | 所刪除嘅版本嘅實際內容得管理員可以睇到。', |
1453 | | -'undelete-revision' => '已經刪除咗由$2嘅修訂$1:', |
| 1453 | +'undelete-revision' => '已經刪除咗$1嗰陣(響$2)由$3所寫嘅修訂:', |
1454 | 1454 | 'undeleterevision-missing' => '唔正確或者遺失咗修訂。你可能有一個壞連結, |
1455 | 1455 | 或者嗰個修訂已經響存檔度恢復咗或者刪除咗。', |
1456 | 1456 | 'undeletebtn' => '恢復', |
— | — | @@ -2273,15 +2273,12 @@ |
2274 | 2274 | $1', |
2275 | 2275 | 'confirm_purge_button' => '肯定', |
2276 | 2276 | |
2277 | | -'youhavenewmessagesmulti' => '你響 $1 有一個新信息', |
2278 | | - |
| 2277 | +# AJAX search |
2279 | 2278 | 'searchcontaining' => "搵含有''$1''嘅文章。", |
2280 | 2279 | 'searchnamed' => "搵個名係''$1''嘅文章。", |
2281 | 2280 | 'articletitles' => "以''$1''開頭嘅文章", |
2282 | 2281 | 'hideresults' => '收埋結果', |
2283 | 2282 | |
2284 | | -'loginlanguagelabel' => '語言:$1', |
2285 | | - |
2286 | 2283 | # Multipage image navigation |
2287 | 2284 | 'imgmultipageprev' => '← 上一版', |
2288 | 2285 | 'imgmultipagenext' => '下一版 →', |
Index: branches/liquidthreads/languages/messages/MessagesEn.php |
— | — | @@ -213,8 +213,10 @@ |
214 | 214 | |
215 | 215 | /** |
216 | 216 | * Magic words |
217 | | - * Customisable syntax for wikitext and elsewhere |
| 217 | + * Customisable syntax for wikitext and elsewhere. |
218 | 218 | * |
| 219 | + * IDs must be valid identifiers, they can't contain hyphens. |
| 220 | + * |
219 | 221 | * Note to translators: |
220 | 222 | * Please include the English words as synonyms. This allows people |
221 | 223 | * from other wikis to contribute more easily. |
— | — | @@ -229,7 +231,6 @@ |
230 | 232 | 'forcetoc' => array( 0, '__FORCETOC__' ), |
231 | 233 | 'toc' => array( 0, '__TOC__' ), |
232 | 234 | 'noeditsection' => array( 0, '__NOEDITSECTION__' ), |
233 | | - 'start' => array( 0, '__START__' ), |
234 | 235 | 'currentmonth' => array( 1, 'CURRENTMONTH' ), |
235 | 236 | 'currentmonthname' => array( 1, 'CURRENTMONTHNAME' ), |
236 | 237 | 'currentmonthnamegen' => array( 1, 'CURRENTMONTHNAMEGEN' ), |
— | — | @@ -292,10 +293,10 @@ |
293 | 294 | 'img_sub' => array( 1, 'sub' ), |
294 | 295 | 'img_super' => array( 1, 'super', 'sup' ), |
295 | 296 | 'img_top' => array( 1, 'top' ), |
296 | | - 'img_text-top' => array( 1, 'text-top' ), |
| 297 | + 'img_text_top' => array( 1, 'text-top' ), |
297 | 298 | 'img_middle' => array( 1, 'middle' ), |
298 | 299 | 'img_bottom' => array( 1, 'bottom' ), |
299 | | - 'img_text-bottom' => array( 1, 'text-bottom' ), |
| 300 | + 'img_text_bottom' => array( 1, 'text-bottom' ), |
300 | 301 | 'int' => array( 0, 'INT:' ), |
301 | 302 | 'sitename' => array( 1, 'SITENAME' ), |
302 | 303 | 'ns' => array( 0, 'NS:' ), |
— | — | @@ -1211,7 +1212,7 @@ |
1212 | 1213 | 'notextmatches' => 'No page text matches', |
1213 | 1214 | 'prevn' => 'previous $1', |
1214 | 1215 | 'nextn' => 'next $1', |
1215 | | -'viewprevnext' => 'View ($1) ($2) ($3).', |
| 1216 | +'viewprevnext' => 'View ($1) ($2) ($3)', |
1216 | 1217 | 'showingresults' => "Showing below up to {{PLURAL:$1|'''1''' result|'''$1''' results}} starting with #'''$2'''.", |
1217 | 1218 | 'showingresultsnum' => "Showing below {{PLURAL:$3|'''1''' result|'''$3''' results}} starting with #'''$2'''.", |
1218 | 1219 | 'nonefound' => "'''Note''': Unsuccessful searches are |
— | — | @@ -1241,6 +1242,7 @@ |
1242 | 1243 | 'preferences' => 'Preferences', |
1243 | 1244 | 'preferences-summary' => '', # only translate this message to other languages if you have to change it |
1244 | 1245 | 'mypreferences' => 'My preferences', |
| 1246 | +'prefs-edits' => 'Number of edits:', |
1245 | 1247 | 'prefsnologin' => 'Not logged in', |
1246 | 1248 | 'prefsnologintext' => 'You must be [[Special:Userlogin|logged in]] to set user preferences.', |
1247 | 1249 | 'prefsreset' => 'Preferences have been reset from storage.', |
— | — | @@ -1422,6 +1424,7 @@ |
1423 | 1425 | 'uploadwarning' => 'Upload warning', |
1424 | 1426 | 'savefile' => 'Save file', |
1425 | 1427 | 'uploadedimage' => 'uploaded "[[$1]]"', |
| 1428 | +'overwroteimage' => 'uploaded a new version of "[[$1]]"', |
1426 | 1429 | 'uploaddisabled' => 'Uploads disabled', |
1427 | 1430 | 'uploaddisabledtext' => 'File uploads are disabled on this wiki.', |
1428 | 1431 | 'uploadscripted' => 'This file contains HTML or script code that may be erroneously be interpreted by a web browser.', |
— | — | @@ -2426,18 +2429,26 @@ |
2427 | 2430 | 'imagemaxsize' => 'Limit images on image description pages to:', |
2428 | 2431 | 'thumbsize' => 'Thumbnail size:', |
2429 | 2432 | 'widthheight' => '$1×$2', # only translate this message to other languages if you have to change it |
| 2433 | +'widthheightpage' => '$1×$2, $3 pages', |
2430 | 2434 | 'file-info' => '(file size: $1, MIME type: $2)', |
2431 | 2435 | 'file-info-size' => '($1 × $2 pixel, file size: $3, MIME type: $4)', |
2432 | 2436 | '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)', |
2434 | 2438 | 'show-big-image' => 'Full resolution', |
2435 | 2439 | 'show-big-image-thumb' => '<small>Size of this preview: $1 × $2 pixels</small>', |
2436 | 2440 | |
| 2441 | +# Special:Newimages |
2437 | 2442 | 'newimages' => 'Gallery of new files', |
2438 | 2443 | 'newimages-summary' => '', # only translate this message to other languages if you have to change it |
2439 | 2444 | 'showhidebots' => '($1 bots)', |
2440 | 2445 | 'noimages' => 'Nothing to see.', |
2441 | 2446 | |
| 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 | + |
2442 | 2453 | # Bad image list |
2443 | 2454 | 'bad_image_list' => 'The format is as follows: |
2444 | 2455 | |
Index: branches/liquidthreads/languages/messages/MessagesZh_tw.php |
— | — | @@ -283,23 +283,24 @@ |
284 | 284 | 'versionrequired' => '需要MediaWiki $1 版', |
285 | 285 | 'versionrequiredtext' => '需要版本$1的 MediaWiki 才能使用此页。参见[[Special:Version|版本頁]]。', |
286 | 286 | |
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' => '無效的訂閱類型。', |
304 | 305 | |
305 | 306 | # Short words for each namespace, by default used in the 'article' tab in monobook |
306 | 307 | 'nstab-main' => '文章', |
— | — | @@ -376,8 +377,8 @@ |
377 | 378 | 'protectedinterface' => '該頁提供了軟體的介面文字,它已被鎖定以防止隨意的修改。', |
378 | 379 | 'editinginterface' => "'''警告:''' 您正在編輯的頁面是用於提供軟體的介面文字。改變此頁將影響其他用戶的介面外觀。", |
379 | 380 | 'sqlhidden' => '(隱藏SQL查詢)', |
380 | | -'cascadeprotected' => "這個頁面已經被保護,因為這個頁面被以下已標註\"聯鎖保護\"的{{PLURAL:$1|一個|多個}}被保護頁面包含: |
381 | | -$2", |
| 381 | +'cascadeprotected' => '這個頁面已經被保護,因為這個頁面被以下已標註"聯鎖保護"的{{PLURAL:$1|一個|多個}}被保護頁面包含: |
| 382 | +$2', |
382 | 383 | 'namespaceprotected' => "您並沒有權限去編輯在'''$1'''名字空間內的頁面。", |
383 | 384 | 'customcssjsprotected' => '您並無許可權去編輯這個頁面,因為它包含了另一位用戶的個人設定。', |
384 | 385 | 'ns-specialprotected' => '在{{ns:special}}名字空間中的頁面是不可以編輯的。', |
— | — | @@ -395,7 +396,6 @@ |
396 | 397 | 'yourdomainname' => '您的網域:', |
397 | 398 | 'externaldberror' => '這可能是由於外部驗證資料庫錯誤或您被禁止更新您的外部帳號。', |
398 | 399 | 'loginproblem' => '<b>登入有問題。</b><br />再試一次!', |
399 | | -'alreadyloggedin' => '<strong>用戶$1,您已經登入了!</strong><br />', |
400 | 400 | 'login' => '登入', |
401 | 401 | 'loginprompt' => '您必須允許瀏覽器紀錄Cookie才能成功登入 {{SITENAME}} 並順利進行操作', |
402 | 402 | 'userlogin' => '登入/建立新帳號', |
— | — | @@ -453,6 +453,7 @@ |
454 | 454 | 'invalidemailaddress' => '郵箱地址格式不正確,請輸入正確的郵箱位址或清空該輸入框。', |
455 | 455 | 'accountcreated' => '已建立帳戶', |
456 | 456 | 'accountcreatedtext' => '$1的帳戶已經被創建。', |
| 457 | +'loginlanguagelabel' => '語言: $1', |
457 | 458 | |
458 | 459 | # Password reset dialog |
459 | 460 | 'resetpass' => '重設帳戶密碼', |
— | — | @@ -566,7 +567,6 @@ |
567 | 568 | 'session_fail_preview_html' => '<strong>很抱歉!部份資料已遺失,我們無法處理您的編輯。</strong><strong>如果這個編輯過程沒有問題,請再試一次。如果仍然有問題,請登出後再重新登入一次。</strong>', |
568 | 569 | 'token_suffix_mismatch' => '<strong>由於您用戶端中的編輯信符毀損了一些標點符號字元,為防止編輯的文字損壞,您的編輯已經被拒絕。 |
569 | 570 | 這種情況通常出現於使用含有很多臭蟲、以網絡為主的匿名代理服務的時候。</strong>', |
570 | | -'importing' => '正在匯入$1', |
571 | 571 | 'editing' => '正在編輯$1', |
572 | 572 | 'editinguser' => '正在編輯用戶<b>$1</b>', |
573 | 573 | 'editingsection' => '正在編輯$1 (段落)', |
— | — | @@ -729,7 +729,7 @@ |
730 | 730 | 'notextmatches' => '沒有文章內容匹配', |
731 | 731 | 'prevn' => '前$1個', |
732 | 732 | 'nextn' => '後$1個', |
733 | | -'viewprevnext' => '檢視 ($1) ($2) ($3)。', |
| 733 | +'viewprevnext' => '檢視 ($1) ($2) ($3)', |
734 | 734 | 'showingresults' => '下面顯示從第<b>$2</b>條開始的<b>$1</b>條結果:', |
735 | 735 | 'showingresultsnum' => '下面顯示從第<b>$2</b>條開始的<b>$3</b>條結果:', |
736 | 736 | 'nonefound' => '<strong>注意:</strong>失敗的搜索往往是由於試圖搜索諸如「的」或「和」之類的常見字所引起。', |
— | — | @@ -742,6 +742,7 @@ |
743 | 743 | # Preferences page |
744 | 744 | 'preferences' => '參數設置', |
745 | 745 | 'mypreferences' => '我的參數設置', |
| 746 | +'prefs-edits' => '編輯數量:', |
746 | 747 | 'prefsnologin' => '還未登入', |
747 | 748 | 'prefsnologintext' => '您必須先[[Special:Userlogin|登入]]才能設置個人參數。', |
748 | 749 | 'prefsreset' => '參數已重新設置。', |
— | — | @@ -953,7 +954,6 @@ |
954 | 955 | # Image list |
955 | 956 | 'imagelist' => '檔案列表', |
956 | 957 | 'imagelisttext' => '以下是按$2排列的$1個檔案列表。', |
957 | | -'imagelistforuser' => '此處僅僅顯示由$1上傳的圖像。', |
958 | 958 | 'getimagelist' => '正在獲取檔案列表', |
959 | 959 | 'ilsubmit' => '搜尋', |
960 | 960 | 'showlast' => '顯示按$2排列的最後$1個檔案。', |
— | — | @@ -1178,7 +1178,6 @@ |
1179 | 1179 | 'watchlistfor' => "('''$1'''的監視列表)", |
1180 | 1180 | 'nowatchlist' => '您的監視列表為空。', |
1181 | 1181 | 'watchlistanontext' => '請$1以檢視或編輯您的監視列表。', |
1182 | | -'watchlistcount' => "'''您的監視列表中共有$1個項目,包括討論頁。'''", |
1183 | 1182 | 'watchnologin' => '未登入', |
1184 | 1183 | 'watchnologintext' => '您必須先[[Special:Userlogin|登入]] |
1185 | 1184 | 才能更改您的監視列表', |
— | — | @@ -1310,6 +1309,7 @@ |
1311 | 1310 | 以下是<strong>$1</strong>現時的保護級別:', |
1312 | 1311 | 'protect-cascadeon' => '以下的{{PLURAL:$1|一個|多個}}頁面包含着本頁面的同時,啟動了連鎖保護,因此本頁面目前也被保護,未能編輯。您可以設定本頁面的保護級別,但這並不會對連鎖保護有所影響。', |
1313 | 1312 | 'protect-default' => '(預設)', |
| 1313 | +'protect-fallback' => '需要"$1"的許可', |
1314 | 1314 | 'protect-level-autoconfirmed' => '禁止未註冊用戶', |
1315 | 1315 | 'protect-level-sysop' => '僅操作員', |
1316 | 1316 | 'protect-summary-cascade' => '連鎖', |
— | — | @@ -1344,7 +1344,7 @@ |
1345 | 1345 | 'undeleterevdel' => '如果把最新修訂部份刪除,反刪除便無法進行。如果遇到這種情況,您必須反選或反隱藏最新已刪除的修訂。對於您沒有權限去檢視的修訂是無法恢復的。', |
1346 | 1346 | 'undeletehistorynoadmin' => '這個文章已經被刪除,刪除原因顯示在下方編輯摘要中。被刪除前的所有修訂版本,連同刪除前貢獻用戶等等 |
1347 | 1347 | 細節只有[[Wikipedia:管理員|管理員]]可以看見。', |
1348 | | -'undelete-revision' => '刪除版本 $1 自 $2:', |
| 1348 | +'undelete-revision' => '刪除$1時由$3(在$2)所編寫的修訂版本:', |
1349 | 1349 | 'undeleterevision-missing' => '此版本的內容不正確或已經遺失。可能連結錯誤、被移除或已經被恢復。', |
1350 | 1350 | 'undeletebtn' => '恢復', |
1351 | 1351 | 'undeletereset' => '重設', |
— | — | @@ -2144,15 +2144,12 @@ |
2145 | 2145 | 'confirm_purge' => '要清除此頁面的快取嗎?\n\n$1', |
2146 | 2146 | 'confirm_purge_button' => '確定', |
2147 | 2147 | |
2148 | | -'youhavenewmessagesmulti' => '您在 $1 有一條新訊息', |
2149 | | - |
| 2148 | +# AJAX search |
2150 | 2149 | 'searchcontaining' => "搜索包含''$1''的文章。", |
2151 | 2150 | 'searchnamed' => "搜索名稱為''$1''的文章。", |
2152 | 2151 | 'articletitles' => '文章以"$1"開頭', |
2153 | 2152 | 'hideresults' => '隱藏結果', |
2154 | 2153 | |
2155 | | -'loginlanguagelabel' => '語言: $1', |
2156 | | - |
2157 | 2154 | # Multipage image navigation |
2158 | 2155 | 'imgmultipageprev' => '← 上一頁', |
2159 | 2156 | 'imgmultipagenext' => '下一頁 →', |
Index: branches/liquidthreads/languages/messages/MessagesKk_tr.php |
— | — | @@ -1,4 +1,4 @@ |
2 | | -<?php |
| 2 | +<?php |
3 | 3 | /** |
4 | 4 | * Kazakh (Qazaqşa) |
5 | 5 | * |
— | — | @@ -136,8 +136,10 @@ |
137 | 137 | |
138 | 138 | /** |
139 | 139 | * Magic words |
140 | | - * Customisable syntax for wikitext and elsewhere |
| 140 | + * Customisable syntax for wikitext and elsewhere. |
141 | 141 | * |
| 142 | + * IDs must be valid identifiers, they can't contain hyphens. |
| 143 | + * |
142 | 144 | * Note to translators: |
143 | 145 | * Please include the English words as synonyms. This allows people |
144 | 146 | * from other wikis to contribute more easily. |
— | — | @@ -153,7 +155,6 @@ |
154 | 156 | 'forcetoc' => array( 0, '__MAZMUNDATQIZW__', '__MQIZW__', '__FORCETOC__' ), |
155 | 157 | 'toc' => array( 0, '__MAZMUNI__', '__MZMN__', '__TOC__' ), |
156 | 158 | 'noeditsection' => array( 0, '__BÖLİMÖNDETKİZBEW__', '__NOEDITSECTION__' ), |
157 | | - 'start' => array( 0, '__BASTAW__', '__START__' ), |
158 | 159 | 'currentmonth' => array( 1, 'AĞIMDAĞIAÝ', 'CURRENTMONTH' ), |
159 | 160 | 'currentmonthname' => array( 1, 'AĞIMDAĞIAÝATAWI', 'CURRENTMONTHNAME' ), |
160 | 161 | 'currentmonthnamegen' => array( 1, 'AĞIMDAĞIAÝİLİKATAWI', 'CURRENTMONTHNAMEGEN' ), |
— | — | @@ -216,10 +217,10 @@ |
217 | 218 | 'img_sub' => array( 1, 'astılığı', 'ast', 'sub'), |
218 | 219 | 'img_super' => array( 1, 'üstiligi', 'üst', 'sup', 'super', 'sup' ), |
219 | 220 | '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' ), |
221 | 222 | 'img_middle' => array( 1, 'aralığına', 'middle' ), |
222 | 223 | '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' ), |
224 | 225 | 'int' => array( 0, 'İŞKİ:', 'INT:' ), |
225 | 226 | 'sitename' => array( 1, 'TORAPATAWI', 'SITENAME' ), |
226 | 227 | 'ns' => array( 0, 'EA:', 'ESİMAYA:', 'NS:' ), |
— | — | @@ -872,10 +873,10 @@ |
873 | 874 | 'accmailtext' => '$2 jaýına «$1» qupïya sözi jiberildi.', |
874 | 875 | 'newarticle' => '(Jaña)', |
875 | 876 | '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 | + |
880 | 881 | '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]].''", |
881 | 882 | '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ı.', |
882 | 883 | '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 @@ |
1078 | 1079 | 'notextmatches' => 'Eş bet mätini säýkes emes', |
1079 | 1080 | 'prevn' => 'aldıñğı $1', |
1080 | 1081 | 'nextn' => 'kelesi $1', |
1081 | | -'viewprevnext' => 'Körsetilwi: ($1) ($2) ($3) jazba.', |
| 1082 | +'viewprevnext' => 'Körsetilwi: ($1) ($2) ($3) jazba', |
1082 | 1083 | 'showingresults' => "Tömende nömir '''$2''' ornınan bastap, jetkenşe {{PLURAL:$1|'''1''' nätïje|'''$1''' nätïje}} körsetilgen.", |
1083 | 1084 | 'showingresultsnum' => "Tömende nömir '''$2''' ornınan bastap {{PLURAL:$3|'''1''' nätïje|'''$3''' nätïje}} körsetilgen.", |
1084 | 1085 | 'nonefound' => "'''Añğartpa''': Tabw sätsiz bitwi jïi «bolğan» jäne «degen» sïyaqtı |
— | — | @@ -1092,6 +1093,7 @@ |
1093 | 1094 | # Preferences page |
1094 | 1095 | 'preferences' => 'Baptawlar', |
1095 | 1096 | 'mypreferences' => 'Baptawım', |
| 1097 | +'prefs-edits' => 'Tüzetw sanı:', |
1096 | 1098 | 'prefsnologin' => 'Kirmegensiz', |
1097 | 1099 | 'prefsnologintext' => 'Baptawlardı qalaw üşin aldın ala [[{{ns:special}}:Userlogin|kirwiñiz]] qajet.', |
1098 | 1100 | 'prefsreset' => 'Baptawlar arqawdan qaýta ornatıldı.', |
— | — | @@ -1668,6 +1670,7 @@ |
1669 | 1671 | Mına <strong>$1</strong> bettiñ ağımdıq baptawları:', |
1670 | 1672 | '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.', |
1671 | 1673 | 'protect-default' => '(ädepki)', |
| 1674 | +'protect-fallback' => '«$1» ruqsatı qajet boldı', |
1672 | 1675 | 'protect-level-autoconfirmed' => 'Tirkelgisiz paýdalanwşılarğa tïım', |
1673 | 1676 | 'protect-level-sysop' => 'Tek äkimşilerge ruqsat', |
1674 | 1677 | 'protect-summary-cascade' => 'bawlı', |
— | — | @@ -1822,8 +1825,8 @@ |
1823 | 1826 | 'ipb-blocklist-addr' => '$1 üşin bar buğattawlardı qaraw', |
1824 | 1827 | 'ipb-blocklist' => 'Bar buğattawlardı qaraw', |
1825 | 1828 | '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 | + |
1828 | 1831 | 'ipusubmit' => 'Osı jaýdı buğattamaw', |
1829 | 1832 | 'unblocked' => '[[{{ns:user}}:$1|$1]] buğattawı öşirildi', |
1830 | 1833 | 'unblocked-id' => '$1 degen buğattaw alastatıldı', |
— | — | @@ -2225,17 +2228,25 @@ |
2226 | 2229 | 'imagemaxsize' => 'Sïpattaması betindegi swrettiñ mölşerin şektewi:', |
2227 | 2230 | 'thumbsize' => 'Nobaý mölşeri:', |
2228 | 2231 | 'widthheight' => '$1 × $2', |
| 2232 | +'widthheightpage' => '$1 × $2, $3 bet', |
2229 | 2233 | 'file-info' => 'Faýl mölşeri: $1, MIME türi: $2', |
2230 | 2234 | 'file-info-size' => '($1 × $2 pïksel, faýl mölşeri: $3, MIME türi: $4)', |
2231 | 2235 | '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)', |
2233 | 2237 | 'show-big-image' => 'Joğarı ajıratılımdı', |
2234 | 2238 | 'show-big-image-thumb' => '<small>Qarap şığw mölşeri: $1 × $2 pïksel</small>', |
2235 | 2239 | |
| 2240 | +# Special:Newimages |
2236 | 2241 | 'newimages' => 'Eñ jaña faýldar qoýması', |
2237 | 2242 | 'showhidebots' => '(bottardı $1)', |
2238 | 2243 | 'noimages' => 'Köretin eşteñe joq.', |
2239 | 2244 | |
| 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 | + |
2240 | 2251 | # Bad image list |
2241 | 2252 | 'bad_image_list' => 'Pişimi tömendegideý: |
2242 | 2253 | |
Index: branches/liquidthreads/languages/messages/MessagesZh_classical.php |
— | — | @@ -288,21 +288,22 @@ |
289 | 289 | 'versionrequired' => '$1媒維基務安之', |
290 | 290 | 'versionrequiredtext' => '$1媒維基務安之,見[[Special:Version|版]]。', |
291 | 291 | |
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已刪', |
307 | 308 | |
308 | 309 | # Short words for each namespace, by default used in the 'article' tab in monobook |
309 | 310 | 'nstab-main' => '文', |
— | — | @@ -368,8 +369,8 @@ |
369 | 370 | 'protectedinterface' => '此頁司版面,錮之以遠濫。', |
370 | 371 | 'editinginterface' => "'''警示:'''此頁司版面,一人易之眾人動,懇請戒慎之。", |
371 | 372 | 'sqlhidden' => '藏SQL問語', |
372 | | -'cascadeprotected' => "這頁已錮,因註\"連環錮\"之{{PLURAL:$1|一|多}}頁有: |
373 | | -$2", |
| 373 | +'cascadeprotected' => '這頁已錮,因註"連環錮"之{{PLURAL:$1|一|多}}頁有: |
| 374 | +$2', |
374 | 375 | 'namespaceprotected' => "舉凡'''$1'''者,爾無權耳,莫之能修。", |
375 | 376 | 'customcssjsprotected' => '爾無權耳,莫之能修,含他之喜好也。', |
376 | 377 | 'ns-specialprotected' => '{{ns:special}}領域之頁無修也。', |
— | — | @@ -386,7 +387,6 @@ |
387 | 388 | 'yourpasswordagain' => '復核符節', |
388 | 389 | 'remembermypassword' => '記之', |
389 | 390 | 'loginproblem' => '<b>登簿有誤</b><br />請再之', |
390 | | -'alreadyloggedin' => '<strong>$1登簿矣</strong><br />', |
391 | 391 | 'login' => '登簿', |
392 | 392 | 'loginprompt' => '登簿{{SITENAME}}須cookies,請釋之。', |
393 | 393 | 'userlogin' => '登簿/增簿', |
— | — | @@ -440,6 +440,7 @@ |
441 | 441 | 'invalidemailaddress' => '驛址不格,請正之或空白。', |
442 | 442 | 'accountcreated' => '簿增矣', |
443 | 443 | 'accountcreatedtext' => '$1簿增矣', |
| 444 | +'loginlanguagelabel' => '語:$1', |
444 | 445 | |
445 | 446 | # Edit page toolbar |
446 | 447 | 'bold_sample' => '粗體', |
— | — | @@ -484,7 +485,7 @@ |
485 | 486 | |
486 | 487 | 存惑可詢$1,或[[{{MediaWiki:grouppage-sysop}}|有秩]],[[Special:Preferences|簿註]]無驛則信不遣。 |
487 | 488 | 另,子IP為$3,其禁號為#$5。詢時切附之。", |
488 | | -'autoblockedtext' => "爾之IP或簿自禁,因簿先用,禁者$1也。 |
| 489 | +'autoblockedtext' => "爾之IP或簿自禁,因簿先用,禁者$1也。 |
489 | 490 | 因故: |
490 | 491 | |
491 | 492 | :\'\'$2\'\' |
— | — | @@ -534,7 +535,6 @@ |
535 | 536 | ''此維基亦合純HTML,除預覽以遠惡JavaScript侵。'' |
536 | 537 | <strong>纂文若合,請再之。如復不成,簿重登焉。</strong>", |
537 | 538 | 'token_suffix_mismatch' => '<strong>君修見拒,蓋因代理之故,亂事見兮。</strong>', |
538 | | -'importing' => '匯入$1', |
539 | 539 | 'editing' => '纂$1', |
540 | 540 | 'editinguser' => '<b>$1</b>正纂之', |
541 | 541 | 'editingsection' => '纂節$1', |
— | — | @@ -650,7 +650,7 @@ |
651 | 651 | 'notextmatches' => '無文合', |
652 | 652 | 'prevn' => '前$1', |
653 | 653 | 'nextn' => '次$1', |
654 | | -'viewprevnext' => '見($1)($2)($3)。', |
| 654 | +'viewprevnext' => '見($1)($2)($3)', |
655 | 655 | 'showingresults' => '見<b>$1</b>尋,自<b>$2</b>始:', |
656 | 656 | 'showingresultsnum' => '見<b>$3</b>尋,自<b>$2</b>始:', |
657 | 657 | 'powersearch' => '索', |
— | — | @@ -658,6 +658,7 @@ |
659 | 659 | # Preferences page |
660 | 660 | 'preferences' => '簿註', |
661 | 661 | 'mypreferences' => '簿註', |
| 662 | +'prefs-edits' => '數篡:', |
662 | 663 | 'prefsnologin' => '未登簿', |
663 | 664 | 'prefsnologintext' => '註記須[[Special:Userlogin|登簿]]。', |
664 | 665 | 'prefsreset' => '簿註重謄', |
— | — | @@ -931,7 +932,6 @@ |
932 | 933 | 'watchlistfor' => "('''$1'''之哨)", |
933 | 934 | 'nowatchlist' => '無哨', |
934 | 935 | 'watchlistanontext' => '$1以治哨', |
935 | | -'watchlistcount' => "'''含議,有哨$1'''", |
936 | 936 | 'watchnologin' => '未登簿', |
937 | 937 | 'watchnologintext' => '[[Special:Userlogin|登簿]]以治哨。', |
938 | 938 | 'addedwatch' => '派哨', |
— | — | @@ -1026,6 +1026,7 @@ |
1027 | 1027 | 'protect-unchain' => '准遷之', |
1028 | 1028 | 'protect-text' => '錮級可見<strong>$1</strong>', |
1029 | 1029 | 'protect-default' => '(予定)', |
| 1030 | +'protect-fallback' => '需「$1」之權', |
1030 | 1031 | 'protect-level-autoconfirmed' => '驅無簿', |
1031 | 1032 | 'protect-level-sysop' => '惟有秩', |
1032 | 1033 | |
— | — | @@ -1039,6 +1040,7 @@ |
1040 | 1041 | 'viewdeletedpage' => '覽已刪', |
1041 | 1042 | 'undeletepagetext' => '列已刪如下。有複存可還之,常清。', |
1042 | 1043 | 'undeleterevisions' => '有審$1', |
| 1044 | +'undelete-revision' => '刪$1自$3(於$2)所篡之審:', |
1043 | 1045 | 'undeletebtn' => '還', |
1044 | 1046 | 'undeletereset' => '重置', |
1045 | 1047 | 'undeletecomment' => '贊:', |
— | — | @@ -1100,43 +1102,43 @@ |
1101 | 1103 | 'whatlinkshere-links' => '← 通', |
1102 | 1104 | |
1103 | 1105 | # 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' => '已矣', |
1141 | 1143 | |
1142 | 1144 | # Developer tools |
1143 | 1145 | 'lockdb' => '鎖庫藏', |
— | — | @@ -1343,15 +1345,12 @@ |
1344 | 1346 | $1', |
1345 | 1347 | 'confirm_purge_button' => '准', |
1346 | 1348 | |
1347 | | -'youhavenewmessagesmulti' => '新訊於$1', |
1348 | | - |
| 1349 | +# AJAX search |
1349 | 1350 | 'searchcontaining' => "尋文含''$1''", |
1350 | 1351 | 'searchnamed' => "尋文名''$1''.", |
1351 | 1352 | 'articletitles' => "文首為''$1''", |
1352 | 1353 | 'hideresults' => '藏', |
1353 | 1354 | |
1354 | | -'loginlanguagelabel' => '語:$1', |
1355 | | - |
1356 | 1355 | # Multipage image navigation |
1357 | 1356 | 'imgmultipageprev' => '←前頁', |
1358 | 1357 | 'imgmultipagenext' => '次頁→', |
— | — | @@ -1423,4 +1422,3 @@ |
1424 | 1423 | |
1425 | 1424 | ); |
1426 | 1425 | |
1427 | | - |
Index: branches/liquidthreads/languages/messages/MessagesCs.php |
— | — | @@ -133,10 +133,10 @@ |
134 | 134 | 'img_sub' => array( 1, 'sub' ), |
135 | 135 | 'img_super' => array( 1, 'super', 'sup' ), |
136 | 136 | 'img_top' => array( 1, 'top' ), |
137 | | - 'img_text-top' => array( 1, 'text-top' ), |
| 137 | + 'img_text_top' => array( 1, 'text-top' ), |
138 | 138 | 'img_middle' => array( 1, 'middle' ), |
139 | 139 | 'img_bottom' => array( 1, 'bottom' ), |
140 | | - 'img_text-bottom' => array( 1, 'text-bottom' ), |
| 140 | + 'img_text_bottom' => array( 1, 'text-bottom' ), |
141 | 141 | 'int' => array( 0, 'INT:' ), |
142 | 142 | 'sitename' => array( 1, 'SITENAME', 'NÁZEVSERVERU' ), |
143 | 143 | 'ns' => array( 0, 'NS:' ), |
Index: branches/liquidthreads/languages/messages/MessagesHe.php |
— | — | @@ -59,7 +59,6 @@ |
60 | 60 | 'forcetoc' => array( 0, '__חייב_תוכן_עניינים__', '__חייב_תוכן__', '__FORCETOC__' ), |
61 | 61 | 'toc' => array( 0, '__תוכן_עניינים__', '__תוכן__', '__TOC__' ), |
62 | 62 | 'noeditsection' => array( 0, '__ללא_עריכה__', '__NOEDITSECTION__' ), |
63 | | - 'start' => array( 0, '__התחלה__', '__START__' ), |
64 | 63 | 'currentmonth' => array( 1, 'חודש נוכחי', 'CURRENTMONTH' ), |
65 | 64 | 'currentmonthname' => array( 1, 'שם חודש נוכחי', 'CURRENTMONTHNAME' ), |
66 | 65 | 'currentmonthnamegen' => array( 1, 'שם חודש נוכחי קניין', 'CURRENTMONTHNAMEGEN' ), |
— | — | @@ -885,7 +884,7 @@ |
886 | 885 | 'notextmatches' => 'אין דפים עם תוכן תואם', |
887 | 886 | 'prevn' => '$1 הקודמים', |
888 | 887 | 'nextn' => '$1 הבאים', |
889 | | -'viewprevnext' => 'צפו ב - ($1) ($2) ($3).', |
| 888 | +'viewprevnext' => 'צפו ב - ($1) ($2) ($3)', |
890 | 889 | 'showingresults' => "מציג עד {{plural:$1|תוצאה '''אחת'''|'''$1''' תוצאות}} החל ממספר #'''$2''':", |
891 | 890 | 'showingresultsnum' => "מציג {{plural:$3|תוצאה '''אחת'''|'''$3''' תוצאות}} החל ממספר #'''$2''':", |
892 | 891 | 'nonefound' => 'לא נמצאו דפים עם תוכן תואם. אנא ודאו שהקלדתם את שאילתת החיפוש נכון. אם אכן הקלדתם אותה נכון, נסו לחפש נושא כללי יותר. |
— | — | @@ -899,6 +898,7 @@ |
900 | 899 | # Preferences page |
901 | 900 | 'preferences' => 'העדפות', |
902 | 901 | 'mypreferences' => 'ההעדפות שלי', |
| 902 | +'prefs-edits' => 'מספר עריכות:', |
903 | 903 | 'prefsnologin' => 'לא נרשמת באתר', |
904 | 904 | 'prefsnologintext' => 'עליכם [[{{ns:special}}:Userlogin|להיכנס לחשבון]] כדי לשנות העדפות משתמש.', |
905 | 905 | 'prefsreset' => 'העדפותיך שוחזרו לברירת המחדל.', |
— | — | @@ -1075,8 +1075,9 @@ |
1076 | 1076 | 'uploadwarning' => 'אזהרת העלאת קבצים', |
1077 | 1077 | 'savefile' => 'שמור קובץ', |
1078 | 1078 | 'uploadedimage' => 'העלה את הקובץ [[$1]]', |
1079 | | -'uploaddisabled' => 'העלאת קבצים מנוטרלת', |
1080 | | -'uploaddisabledtext' => 'אפשרות העלאת הקבצים מנוטרלת באתר זה.', |
| 1079 | +'overwroteimage' => 'העלה גרסה חדשה של הקובץ [[$1]]', |
| 1080 | +'uploaddisabled' => 'העלאת קבצים מבוטלת', |
| 1081 | +'uploaddisabledtext' => 'אפשרות העלאת הקבצים מבוטלת באתר זה.', |
1081 | 1082 | 'uploadscripted' => 'הקובץ כולל קוד סקריפט או HTML שעשוי להתפרש או להתבצע בטעות על־ידי הדפדפן.', |
1082 | 1083 | 'uploadcorrupt' => 'קובץ זה אינו תקין או שהסיומת שלו איננה מתאימה. אנא בדקו את הקובץ והעלו אותו שוב.', |
1083 | 1084 | 'uploadvirus' => 'הקובץ מכיל וירוס! פרטים: <div style="direction: ltr;">$1</div>', |
— | — | @@ -1846,8 +1847,8 @@ |
1847 | 1848 | 'monobook.js' => '/* מיושן; השתמשו ב[[מדיה ויקי:Common.js]] */', |
1848 | 1849 | |
1849 | 1850 | # 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 מבוטל בשרת זה.', |
1852 | 1853 | 'notacceptable' => 'האתר לא יכול לספק מידע בפורמט שתוכנת הלקוח יכולה לקרוא.', |
1853 | 1854 | |
1854 | 1855 | # Attribution |
— | — | @@ -1895,8 +1896,8 @@ |
1896 | 1897 | 'markedaspatrolled' => 'השינוי נבדק', |
1897 | 1898 | 'markedaspatrolledtext' => 'השינוי שנבחר נבדק.', |
1898 | 1899 | 'rcpatroldisabled' => 'בדיקת השינויים האחרונים מבוטלת', |
1899 | | -'rcpatroldisabledtext' => 'תכונת סימון שינוי כבדוק בשינויים האחרונים היא כרגע מנוטרלת.', |
1900 | | -'markedaspatrollederror' => 'לא יכול לסמן כבדוק', |
| 1900 | +'rcpatroldisabledtext' => 'התכונה של סימון שינוי כבדוק בשינויים האחרונים מבוטלת.', |
| 1901 | +'markedaspatrollederror' => 'לא ניתן לסמן כבדוק', |
1901 | 1902 | 'markedaspatrollederrortext' => 'עליכם לציין גרסה שתציינו כבדוקה.', |
1902 | 1903 | 'markedaspatrollederror-noautopatrol' => 'אינכם מורשים לסמן את השינויים של עצמכם כבדוקים.', |
1903 | 1904 | |
— | — | @@ -1926,13 +1927,15 @@ |
1927 | 1928 | 'mediawarning' => "'''אזהרה:''' קובץ זה עלול להכיל קוד זדוני, שהרצתו עלולה לסכן את המערכת שלכם.<hr />", |
1928 | 1929 | 'imagemaxsize' => 'הגבל תמונות בדפי תיאור תמונה ל:', |
1929 | 1930 | 'thumbsize' => 'הקטן לגודל של:', |
| 1931 | +'widthheightpage' => '$1×$2, $3 דפים', |
1930 | 1932 | 'file-info' => '(גודל הקובץ: $1, סוג MIME: $2)', |
1931 | 1933 | 'file-info-size' => '($1 × $2 פיקסלים, גודל הקובץ: $3, סוג MIME: $4)', |
1932 | 1934 | 'file-nohires' => '<small>אין גרסת רזולוציה גבוהה יותר.</small>', |
1933 | | -'file-svg' => '<small>זוהי תמונה וקטורית שניתן לשנות את גודלה ללא איבוד פרטים. הגודל המקורי: $1 × $2 פיקסלים.</small>', |
| 1935 | +'svg-long-desc' => '(קובץ SVG, הגודל המקורי: $1 × $2 פיקסלים, גודל הקובץ: $3)', |
1934 | 1936 | 'show-big-image' => 'תמונה ברזולוציה גבוהה יותר', |
1935 | 1937 | 'show-big-image-thumb' => '<small>גודל התצוגה הזו: $1 × $2 פיקסלים</small>', |
1936 | 1938 | |
| 1939 | +# Special:Newimages |
1937 | 1940 | 'newimages' => 'גלריית תמונות חדשות', |
1938 | 1941 | 'showhidebots' => '($1 בוטים)', |
1939 | 1942 | 'noimages' => 'אין תמונות.', |
— | — | @@ -2245,7 +2248,7 @@ |
2246 | 2249 | אם *לא* אתם ביקשתם קוד אישור זה, אל תפתחו את הקישור. קוד האישור יפקע ב־$4.', |
2247 | 2250 | |
2248 | 2251 | # Scary transclusion |
2249 | | -'scarytranscludedisabled' => '[הכללת תבניות בין אתרים מנוטרלת]', |
| 2252 | +'scarytranscludedisabled' => '[הכללת תבניות בין אתרים מבוטלת]', |
2250 | 2253 | 'scarytranscludefailed' => '[מצטערים, קבלת התבנית נכשלה בגלל $1]', |
2251 | 2254 | 'scarytranscludetoolong' => '[מצטערים, כתובת ה־URL ארוכה מדי]', |
2252 | 2255 | |
Index: branches/liquidthreads/languages/messages/MessagesKk_cn.php |
— | — | @@ -1,4 +1,4 @@ |
2 | | -<?php |
| 2 | +<?php |
3 | 3 | /** |
4 | 4 | * Kazakh (قازاقشا) |
5 | 5 | * |
— | — | @@ -143,8 +143,10 @@ |
144 | 144 | |
145 | 145 | /** |
146 | 146 | * Magic words |
147 | | - * Customisable syntax for wikitext and elsewhere |
| 147 | + * Customisable syntax for wikitext and elsewhere. |
148 | 148 | * |
| 149 | + * IDs must be valid identifiers, they can't contain hyphens. |
| 150 | + * |
149 | 151 | * Note to translators: |
150 | 152 | * Please include the English words as synonyms. This allows people |
151 | 153 | * from other wikis to contribute more easily. |
— | — | @@ -160,7 +162,6 @@ |
161 | 163 | 'forcetoc' => array( 0, '__مازمۇنداتقىزۋ__', '__مقىزۋ__', '__FORCETOC__' ), |
162 | 164 | 'toc' => array( 0, '__مازمۇنى__', '__مزمن__', '__TOC__' ), |
163 | 165 | 'noeditsection' => array( 0, '__بٶلٸمٶندەتكٸزبەۋ__', '__NOEDITSECTION__' ), |
164 | | - 'start' => array( 0, '__باستاۋ__', '__START__' ), |
165 | 166 | 'currentmonth' => array( 1, 'اعىمداعىاي', 'CURRENTMONTH' ), |
166 | 167 | 'currentmonthname' => array( 1, 'اعىمداعىاياتاۋى', 'CURRENTMONTHNAME' ), |
167 | 168 | 'currentmonthnamegen' => array( 1, 'اعىمداعىايٸلٸكاتاۋى', 'CURRENTMONTHNAMEGEN' ), |
— | — | @@ -223,10 +224,10 @@ |
224 | 225 | 'img_sub' => array( 1, 'استىلىعى', 'است', 'sub'), |
225 | 226 | 'img_super' => array( 1, 'ٷستٸلٸگٸ', 'ٷست', 'sup', 'super', 'sup' ), |
226 | 227 | 'img_top' => array( 1, 'ٷستٸنە', 'top' ), |
227 | | - 'img_text-top' => array( 1, 'مٵتٸن-ٷستٸندە', 'text-top' ), |
| 228 | + 'img_text_top' => array( 1, 'مٵتٸن-ٷستٸندە', 'text-top' ), |
228 | 229 | 'img_middle' => array( 1, 'ارالىعىنا', 'middle' ), |
229 | 230 | 'img_bottom' => array( 1, 'استىنا', 'bottom' ), |
230 | | - 'img_text-bottom' => array( 1, 'مٵتٸن-استىندا', 'text-bottom' ), |
| 231 | + 'img_text_bottom' => array( 1, 'مٵتٸن-استىندا', 'text-bottom' ), |
231 | 232 | 'int' => array( 0, 'ٸشكٸ:', 'INT:' ), |
232 | 233 | 'sitename' => array( 1, 'توراپاتاۋى', 'SITENAME' ), |
233 | 234 | 'ns' => array( 0, 'ەا:', 'ەسٸمايا:', 'NS:' ), |
— | — | @@ -879,10 +880,10 @@ |
880 | 881 | 'accmailtext' => '$2 جايىنا «$1» قۇپييا سٶزٸ جٸبەرٸلدٸ.', |
881 | 882 | 'newarticle' => '(جاڭا)', |
882 | 883 | 'newarticletext' => 'سٸلتەمەگە ەرٸپ ٵلٸ باستالماعان بەتكە |
883 | | -كەلٸپسٸز. بەتتٸ باستاۋ ٷشٸن, تٶمەندەگٸ اۋماقتا مٵتٸنٸڭٸزدٸ |
884 | | -تەرٸڭٸز (كٶبٸرەك اقپارات ٷشٸن [[{{{{ns:mediawiki}}:helppage}}|انىقتاما بەتٸن]] |
885 | | -قاراڭىز).ەگەر جاڭىلعاننان وسىندا كەلگەن بولساڭىز, شولعىشىڭىز |
886 | | -«ارتقا» دەگەن تٷيمەسٸن نۇقىڭىز.', |
| 884 | +كەلٸپسٸز. بەتتٸ باستاۋ ٷشٸن, تٶمەندەگٸ اۋماقتا مٵتٸنٸڭٸزدٸ تەرٸڭٸز |
| 885 | +(كٶبٸرەك اقپارات ٷشٸن [[{{{{ns:mediawiki}}:helppage}}|انىقتاما بەتٸن]] قاراڭىز). |
| 886 | +ەگەر جاڭىلعاننان وسىندا كەلگەن بولساڭىز, شولعىشىڭىز «ارتقا» دەگەن تٷيمەسٸن نۇقىڭىز.', |
| 887 | + |
887 | 888 | 'anontalkpagetext' => "----''بۇل تٸركەلگٸسٸز (نەمەسە تٸركەلگٸسٸن قولدانباعان) پايدالانۋشىنىڭ تالقىلاۋ بەتٸ. وسى پايدالانۋشىنى بٸز تەك ساندىق IP جايىمەن تەڭدەستٸرەمٸز. وسىنداي IP جايلار بٸرنەشە پايدالانۋشىعا ورتاق بولۋى مٷمكٸن. ەگەر سٸز تٸركەلگٸسٸز پايدالانۋشى بولساڭىز جٵنە سٸزگە قاتىسسىز مٵندەمەلەر جٸبەرٸلگەنٸن سەزسەڭٸز, باسقا تٸركەلگٸسٸز پايدالانۋشىلارمەن ارالاستىرماۋى ٷشٸن [[{{ns:special}}:Userlogin|تٸركەلگٸ جاساڭىز نە كٸرٸڭٸز]].''", |
888 | 889 | 'noarticletext' => 'بۇل بەتتە اعىمدا ەش مٵتٸن جوق, باسقا بەتتەردەن وسى بەت اتاۋىن [[{{ns:special}}:Search/{{PAGENAME}}|ٸزدەپ كٶرۋٸڭٸزگە]] نەمەسە وسى بەتتٸ [{{fullurl:{{FULLPAGENAME}}|action=edit}} تٷزەتۋٸڭٸزگە] بولادى.', |
889 | 890 | 'clearyourcache' => "'''اڭعارتپا:''' ساقتاعاننان كەيٸن ٶزگەرٸستەردٸ كٶرۋ ٷشٸن شولعىش قوسالقى قالتاسىن بوساتۋ كەرەگٸ مٷمكٸن. '''Mozilla / Safari:''' ''Shift'' پەرنەسٸن باسىپ تۇرىپ ''Reload'' (''قايتا جٷكتەۋ'') تٷيمەسٸن نۇقىڭىز (نە ''Ctrl-Shift-R'' باسىڭىز); ''IE:'' ''Ctrl-F5'' باسىڭىز; '''Opera / Konqueror''' ''F5'' پەرنەسٸن باسىڭىز.", |
— | — | @@ -1084,7 +1085,7 @@ |
1085 | 1086 | 'notextmatches' => 'ەش بەت مٵتٸنٸ سٵيكەس ەمەس', |
1086 | 1087 | 'prevn' => 'الدىڭعى $1', |
1087 | 1088 | 'nextn' => 'كەلەسٸ $1', |
1088 | | -'viewprevnext' => 'كٶرسەتٸلۋٸ: ($1) ($2) ($3) جازبا.', |
| 1089 | +'viewprevnext' => 'كٶرسەتٸلۋٸ: ($1) ($2) ($3) جازبا', |
1089 | 1090 | 'showingresults' => "تٶمەندە نٶمٸر '''$2''' ورنىنان باستاپ, جەتكەنشە {{PLURAL:$1|'''1''' نٵتيجە|'''$1''' نٵتيجە}} كٶرسەتٸلگەن.", |
1090 | 1091 | 'showingresultsnum' => "تٶمەندە نٶمٸر '''$2''' ورنىنان باستاپ {{PLURAL:$3|'''1''' نٵتيجە|'''$3''' نٵتيجە}} كٶرسەتٸلگەن.", |
1091 | 1092 | 'nonefound' => "'''اڭعارتپا''': تابۋ سٵتسٸز بٸتۋٸ جيٸ «بولعان» جٵنە «دەگەن» سيياقتى |
— | — | @@ -1099,6 +1100,7 @@ |
1100 | 1101 | # Preferences page |
1101 | 1102 | 'preferences' => 'باپتاۋلار', |
1102 | 1103 | 'mypreferences' => 'باپتاۋىم', |
| 1104 | +'prefs-edits' => 'تٷزەتۋ سانى:', |
1103 | 1105 | 'prefsnologin' => 'كٸرمەگەنسٸز', |
1104 | 1106 | 'prefsnologintext' => 'باپتاۋلاردى قالاۋ ٷشٸن الدىن الا [[{{ns:special}}:Userlogin|كٸرۋٸڭٸز]] قاجەت.', |
1105 | 1107 | 'prefsreset' => 'باپتاۋلار ارقاۋدان قايتا ورناتىلدى.', |
— | — | @@ -1675,6 +1677,7 @@ |
1676 | 1678 | مىنا <strong>$1</strong> بەتتٸڭ اعىمدىق باپتاۋلارى:', |
1677 | 1679 | 'protect-cascadeon' => 'بۇل بەت اعىمدا قورعالعان, سەبەبٸ: وسى بەت باۋلى قورعاۋى بار كەلەسٸ {{PLURAL:$1|بەتكە|بەتتەرگە}} كٸرٸستٸرٸلگەن. بۇل بەتتٸڭ قورعاۋ دەڭگەيٸن ٶزگەرتە الاسىز, بٸراق بۇل باۋلى قورعاۋعا ىقپال ەتپەيدٸ.', |
1678 | 1680 | 'protect-default' => '(ٵدەپكٸ)', |
| 1681 | +'protect-fallback' => '«$1» رۇقساتى قاجەت بولدى', |
1679 | 1682 | 'protect-level-autoconfirmed' => 'تٸركەلگٸسٸز پايدالانۋشىلارعا تيىم', |
1680 | 1683 | 'protect-level-sysop' => 'تەك ٵكٸمشٸلەرگە رۇقسات', |
1681 | 1684 | 'protect-summary-cascade' => 'باۋلى', |
— | — | @@ -1829,8 +1832,8 @@ |
1830 | 1833 | 'ipb-blocklist-addr' => '$1 ٷشٸن بار بۇعاتتاۋلاردى قاراۋ', |
1831 | 1834 | 'ipb-blocklist' => 'بار بۇعاتتاۋلاردى قاراۋ', |
1832 | 1835 | 'unblockip' => 'پايدالانۋشىنى بۇعاتتاماۋ', |
1833 | | -'unblockiptext' => 'تٶمەندەگٸ ٷلگٸت بەلگٸلٸ IP جايىمەن نە اتاۋىمەن |
1834 | | -بۇرىن بۇعاتتالعان پايدالانۋشىنىڭ جازۋ رۇقساتىن قايتارۋ ٷشٸن قولدانىلادى.', |
| 1836 | +'unblockiptext' => 'تٶمەندەگٸ ٷلگٸت بەلگٸلٸ IP جايىمەن نە اتاۋىمەن بۇرىن بۇعاتتالعان پايدالانۋشىنىڭ جازۋ رۇقساتىن قايتارۋ ٷشٸن قولدانىلادى.', |
| 1837 | + |
1835 | 1838 | 'ipusubmit' => 'وسى جايدى بۇعاتتاماۋ', |
1836 | 1839 | 'unblocked' => '[[{{ns:user}}:$1|$1]] بۇعاتتاۋى ٶشٸرٸلدٸ', |
1837 | 1840 | 'unblocked-id' => '$1 دەگەن بۇعاتتاۋ الاستاتىلدى', |
— | — | @@ -2232,17 +2235,25 @@ |
2233 | 2236 | 'imagemaxsize' => 'سيپاتتاماسى بەتٸندەگٸ سۋرەتتٸڭ مٶلشەرٸن شەكتەۋٸ:', |
2234 | 2237 | 'thumbsize' => 'نوباي مٶلشەرٸ:', |
2235 | 2238 | 'widthheight' => '$1 × $2', |
| 2239 | +'widthheightpage' => '$1 × $2, $3 بەت', |
2236 | 2240 | 'file-info' => 'فايل مٶلشەرٸ: $1, MIME تٷرٸ: $2', |
2237 | 2241 | 'file-info-size' => '($1 × $2 پيكسەل, فايل مٶلشەرٸ: $3, MIME تٷرٸ: $4)', |
2238 | 2242 | 'file-nohires' => '<small>جوعارى اجىراتىلىمدىعى جەتٸمسٸز.</small>', |
2239 | | -'file-svg' => '<small>بۇل شىعىنسىز سوزىلعىش ۆەكتورلىق سۋرەتٸ. نەگٸزگٸ مٶلشەرٸ: $1 × $2 پيكسەل.</small>', |
| 2243 | +'svg-long-desc' => '(SVG فايلى, كەسٸمدٸ $1 × $2 پيكسەل, فايل مٶلشەرٸ: $3)', |
2240 | 2244 | 'show-big-image' => 'جوعارى اجىراتىلىمدى', |
2241 | 2245 | 'show-big-image-thumb' => '<small>قاراپ شىعۋ مٶلشەرٸ: $1 × $2 پيكسەل</small>', |
2242 | 2246 | |
| 2247 | +# Special:Newimages |
2243 | 2248 | 'newimages' => 'ەڭ جاڭا فايلدار قويماسى', |
2244 | 2249 | 'showhidebots' => '(بوتتاردى $1)', |
2245 | 2250 | 'noimages' => 'كٶرەتٸن ەشتەڭە جوق.', |
2246 | 2251 | |
| 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 | + |
2247 | 2258 | # Bad image list |
2248 | 2259 | 'bad_image_list' => 'پٸشٸمٸ تٶمەندەگٸدەي: |
2249 | 2260 | |
Index: branches/liquidthreads/languages/messages/MessagesId.php |
— | — | @@ -147,10 +147,10 @@ |
148 | 148 | 'img_sub' => array( 1, 'sub' ), |
149 | 149 | 'img_super' => array( 1, 'super', 'sup' ), |
150 | 150 | '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' ), |
152 | 152 | 'img_middle' => array( 1, 'tengah', 'middle' ), |
153 | 153 | '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' ), |
155 | 155 | 'int' => array( 0, 'INT:' ), |
156 | 156 | 'sitename' => array( 1, 'NAMASITUS', 'SITENAME' ), |
157 | 157 | 'ns' => array( 0, 'RN:', 'NS:' ), |
— | — | @@ -504,23 +504,24 @@ |
505 | 505 | 'versionrequired' => 'Dibutuhkan MediaWiki versi $1', |
506 | 506 | 'versionrequiredtext' => 'MediaWiki versi $1 dibutuhkan untuk menggunakan halaman ini. Lihat [[Special:Version|halaman versi]]', |
507 | 507 | |
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.', |
525 | 526 | |
526 | 527 | # Short words for each namespace, by default used in the 'article' tab in monobook |
527 | 528 | 'nstab-main' => 'Artikel', |
— | — | @@ -659,6 +660,7 @@ |
660 | 661 | '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.', |
661 | 662 | 'accountcreated' => 'Akun dibuat', |
662 | 663 | 'accountcreatedtext' => 'Akun pengguna untuk $1 telah dibuat.', |
| 664 | +'loginlanguagelabel' => 'Bahasa: $1', |
663 | 665 | |
664 | 666 | # Password reset dialog |
665 | 667 | 'resetpass' => 'Atur ulang kata sandi akun', |
— | — | @@ -775,7 +777,6 @@ |
776 | 778 | |
777 | 779 | <strong>Jika ini merupakan upaya suntingan yang sahih, silakan coba lagi. Jika masih tetap tidak berhasil, cobalah keluar log dan masuk kembali.</strong>", |
778 | 780 | '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', |
780 | 781 | 'editing' => 'Menyunting $1', |
781 | 782 | 'editinguser' => 'Menyunting $1', |
782 | 783 | 'editingsection' => 'Menyunting $1 (bagian)', |
— | — | @@ -913,7 +914,7 @@ |
914 | 915 | 'notextmatches' => 'Tidak ada teks halaman yang cocok', |
915 | 916 | 'prevn' => '$1 lebih baru', |
916 | 917 | 'nextn' => '$1 lebih lama', |
917 | | -'viewprevnext' => 'Lihat ($1) ($2) ($3).', |
| 918 | +'viewprevnext' => 'Lihat ($1) ($2) ($3)', |
918 | 919 | 'showingresults' => "Di bawah ini ditampilkan hingga {{PLURAL:$1|'''1''' hasil|'''$1''' hasil}}, dimulai dari #'''$2'''.", |
919 | 920 | 'showingresultsnum' => "Di bawah ini ditampilkan{{PLURAL:$3|'''1''' hasil|'''$3''' hasil}}, dimulai dari #'''$2'''.", |
920 | 921 | '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 @@ |
926 | 927 | # Preferences page |
927 | 928 | 'preferences' => 'Preferensi', |
928 | 929 | 'mypreferences' => 'Preferensi saya', |
| 930 | +'prefs-edits' => 'Jumlah suntingan:', |
929 | 931 | 'prefsnologin' => 'Belum masuk log', |
930 | 932 | 'prefsnologintext' => 'Anda harus [[{{ns:special}}:Userlogin|masuk log]] untuk menetapkan preferensi Anda.', |
931 | 933 | 'prefsreset' => 'Preferensi telah dikembalikan ke konfigurasi baku.', |
— | — | @@ -1133,7 +1135,6 @@ |
1134 | 1136 | # Image list |
1135 | 1137 | 'imagelist' => 'Daftar berkas', |
1136 | 1138 | 'imagelisttext' => "Di bawah ini adalah daftar '''$1''' berkas diurutkan $2.", |
1137 | | -'imagelistforuser' => 'Hanya berkas yang dimuat oleh $1.', |
1138 | 1139 | 'getimagelist' => 'mengambil daftar berkas', |
1139 | 1140 | 'ilsubmit' => 'Cari', |
1140 | 1141 | 'showlast' => 'Tampilkan $1 berkas terakhir diurutkan $2.', |
— | — | @@ -1349,7 +1350,6 @@ |
1350 | 1351 | 'watchlistfor' => "(untuk '''$1''')", |
1351 | 1352 | 'nowatchlist' => 'Daftar pantauan Anda kosong.', |
1352 | 1353 | 'watchlistanontext' => 'Silakan $1 untuk melihat atau menyunting daftar pantauan Anda.', |
1353 | | -'watchlistcount' => "'''Anda memiliki $1 entri di daftar pantauan Anda, termasuk halaman pembicaraan.'''", |
1354 | 1354 | 'watchnologin' => 'Belum masuk log', |
1355 | 1355 | 'watchnologintext' => 'Anda harus [[{{ns:special}}:Userlogin|masuk log]] untuk mengubah daftar pantauan.', |
1356 | 1356 | 'addedwatch' => 'Telah ditambahkan ke daftar pantauan', |
— | — | @@ -1464,6 +1464,7 @@ |
1465 | 1465 | 'protect-locked-access' => 'Akun Anda tidak dapat memiliki hak untuk mengganti tingkat perlindungan halaman. Berikut adalah konfigurasi saat ini untuk halaman <strong>$1</strong>:', |
1466 | 1466 | '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.', |
1467 | 1467 | 'protect-default' => '(baku)', |
| 1468 | +'protect-fallback' => 'Memerlukan hak akses "$1"', |
1468 | 1469 | 'protect-level-autoconfirmed' => 'Hanya pengguna terdaftar', |
1469 | 1470 | 'protect-level-sysop' => 'Hanya pengurus', |
1470 | 1471 | 'protect-summary-cascade' => 'runtun', |
— | — | @@ -1494,7 +1495,7 @@ |
1495 | 1496 | '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', |
1496 | 1497 | '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.', |
1497 | 1498 | '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:', |
1499 | 1500 | 'undeleterevision-missing' => 'Revisi salah atau tak ditemukan. Anda mungkin mengikuti pranala yang salah, atau revisi tersebut telah dipulihkan atau dibuang dari arsip.', |
1500 | 1501 | 'undeletebtn' => 'Kembalikan!', |
1501 | 1502 | 'undeletereset' => 'Reset', |
— | — | @@ -2255,15 +2256,12 @@ |
2256 | 2257 | $1", |
2257 | 2258 | 'confirm_purge_button' => 'OK', |
2258 | 2259 | |
2259 | | -'youhavenewmessagesmulti' => 'Anda mendapat pesan-pesan baru $1', |
2260 | | - |
| 2260 | +# AJAX search |
2261 | 2261 | 'searchcontaining' => "Mencari artikel yang mengandung ''$1''.", |
2262 | 2262 | 'searchnamed' => "Mencari artikel yang berjudul ''$1''.", |
2263 | 2263 | 'articletitles' => "Artikel yang diawali ''$1''", |
2264 | 2264 | 'hideresults' => 'Sembunyikan hasil', |
2265 | 2265 | |
2266 | | -'loginlanguagelabel' => 'Bahasa: $1', |
2267 | | - |
2268 | 2266 | # Multipage image navigation |
2269 | 2267 | 'imgmultipageprev' => '← halaman sebelumnya', |
2270 | 2268 | 'imgmultipagenext' => 'halaman selanjutnya →', |
Index: branches/liquidthreads/languages/messages/MessagesAr.php |
— | — | @@ -156,10 +156,10 @@ |
157 | 157 | 'img_page' => array( 1, "صفحة=$1", "صفحة $1", "page=$1", "page $1" ), |
158 | 158 | 'img_border' => array( 1, "حد", "حدود", "border" ), |
159 | 159 | 'img_top' => array( 1, "أعلى", "top" ), |
160 | | - 'img_text-top' => array( 1, "نص_أعلى", "text-top" ), |
| 160 | + 'img_text_top' => array( 1, "نص_أعلى", "text-top" ), |
161 | 161 | 'img_middle' => array( 1, "وسط", "middle" ), |
162 | 162 | 'img_bottom' => array( 1, "أسفل", "bottom" ), |
163 | | - 'img_text-bottom' => array( 1, "نص_أسفل", "text-bottom" ), |
| 163 | + 'img_text_bottom' => array( 1, "نص_أسفل", "text-bottom" ), |
164 | 164 | 'int' => array( 0, "محتوى:", "INT:" ), |
165 | 165 | 'sitename' => array( 1, "اسم_الموقع", "اسم_موقع", "SITENAME" ), |
166 | 166 | 'ns' => array( 0, "نط:", "NS:" ), |
Index: branches/liquidthreads/languages/messages/MessagesKk_kz.php |
— | — | @@ -135,8 +135,10 @@ |
136 | 136 | |
137 | 137 | /** |
138 | 138 | * Magic words |
139 | | - * Customisable syntax for wikitext and elsewhere |
| 139 | + * Customisable syntax for wikitext and elsewhere. |
140 | 140 | * |
| 141 | + * IDs must be valid identifiers, they can't contain hyphens. |
| 142 | + * |
141 | 143 | * Note to translators: |
142 | 144 | * Please include the English words as synonyms. This allows people |
143 | 145 | * from other wikis to contribute more easily. |
— | — | @@ -152,7 +154,6 @@ |
153 | 155 | 'forcetoc' => array( 0, '__МАЗМҰНДАТҚЫЗУ__', '__МҚЫЗУ__', '__FORCETOC__' ), |
154 | 156 | 'toc' => array( 0, '__МАЗМҰНЫ__', '__МЗМН__', '__TOC__' ), |
155 | 157 | 'noeditsection' => array( 0, '__БӨЛІМӨНДЕТКІЗБЕУ__', '__NOEDITSECTION__' ), |
156 | | - 'start' => array( 0, '__БАСТАУ__', '__START__' ), |
157 | 158 | 'currentmonth' => array( 1, 'АҒЫМДАҒЫАЙ', 'CURRENTMONTH' ), |
158 | 159 | 'currentmonthname' => array( 1, 'АҒЫМДАҒЫАЙАТАУЫ', 'CURRENTMONTHNAME' ), |
159 | 160 | 'currentmonthnamegen' => array( 1, 'АҒЫМДАҒЫАЙІЛІКАТАУЫ', 'CURRENTMONTHNAMEGEN' ), |
— | — | @@ -215,10 +216,10 @@ |
216 | 217 | 'img_sub' => array( 1, 'астылығы', 'аст', 'sub'), |
217 | 218 | 'img_super' => array( 1, 'үстілігі', 'үст', 'sup', 'super', 'sup' ), |
218 | 219 | 'img_top' => array( 1, 'үстіне', 'top' ), |
219 | | - 'img_text-top' => array( 1, 'мәтін-үстінде', 'text-top' ), |
| 220 | + 'img_text_top' => array( 1, 'мәтін-үстінде', 'text-top' ), |
220 | 221 | 'img_middle' => array( 1, 'аралығына', 'middle' ), |
221 | 222 | 'img_bottom' => array( 1, 'астына', 'bottom' ), |
222 | | - 'img_text-bottom' => array( 1, 'мәтін-астында', 'text-bottom' ), |
| 223 | + 'img_text_bottom' => array( 1, 'мәтін-астында', 'text-bottom' ), |
223 | 224 | 'int' => array( 0, 'ІШКІ:', 'INT:' ), |
224 | 225 | 'sitename' => array( 1, 'ТОРАПАТАУЫ', 'SITENAME' ), |
225 | 226 | 'ns' => array( 0, 'ЕА:', 'ЕСІМАЯ:', 'NS:' ), |
— | — | @@ -1075,7 +1076,7 @@ |
1076 | 1077 | 'notextmatches' => 'Еш бет мәтіні сәйкес емес', |
1077 | 1078 | 'prevn' => 'алдыңғы $1', |
1078 | 1079 | 'nextn' => 'келесі $1', |
1079 | | -'viewprevnext' => 'Көрсетілуі: ($1) ($2) ($3) жазба.', |
| 1080 | +'viewprevnext' => 'Көрсетілуі: ($1) ($2) ($3) жазба', |
1080 | 1081 | 'showingresults' => "Төменде нөмір '''$2''' орнынан бастап, жеткенше {{PLURAL:$1|'''1''' нәтиже|'''$1''' нәтиже}} көрсетілген.", |
1081 | 1082 | 'showingresultsnum' => "Төменде нөмір '''$2''' орнынан бастап {{PLURAL:$3|'''1''' нәтиже|'''$3''' нәтиже}} көрсетілген.", |
1082 | 1083 | 'nonefound' => "'''Аңғартпа''': Табу сәтсіз бітуі жиі «болған» және «деген» сияқты |
— | — | @@ -1090,6 +1091,7 @@ |
1091 | 1092 | # Preferences page |
1092 | 1093 | 'preferences' => 'Баптаулар', |
1093 | 1094 | 'mypreferences' => 'Баптауым', |
| 1095 | +'prefs-edits' => 'Түзету саны:', |
1094 | 1096 | 'prefsnologin' => 'Кірмегенсіз', |
1095 | 1097 | 'prefsnologintext' => 'Баптауларды қалау үшін алдын ала [[{{ns:special}}:Userlogin|кіруіңіз]] қажет.', |
1096 | 1098 | 'prefsreset' => 'Баптаулар арқаудан қайта орнатылды.', |
— | — | @@ -1666,6 +1668,7 @@ |
1667 | 1669 | Мына <strong>$1</strong> беттің ағымдық баптаулары:', |
1668 | 1670 | 'protect-cascadeon' => 'Бұл бет ағымда қорғалған, себебі: осы бет баулы қорғауы бар келесі {{PLURAL:$1|бетке|беттерге}} кірістірілген. Бұл беттің қорғау деңгейін өзгерте аласыз, бірақ бұл баулы қорғауға ықпал етпейді.', |
1669 | 1671 | 'protect-default' => '(әдепкі)', |
| 1672 | +'protect-fallback' => '«$1» рұқсаты қажет болды', |
1670 | 1673 | 'protect-level-autoconfirmed' => 'Тіркелгісіз пайдаланушыларға тиым', |
1671 | 1674 | 'protect-level-sysop' => 'Тек әкімшілерге рұқсат', |
1672 | 1675 | 'protect-summary-cascade' => 'баулы', |
— | — | @@ -2222,17 +2225,25 @@ |
2223 | 2226 | 'imagemaxsize' => 'Сипаттамасы бетіндегі суреттің мөлшерін шектеуі:', |
2224 | 2227 | 'thumbsize' => 'Нобай мөлшері:', |
2225 | 2228 | 'widthheight' => '$1 × $2', |
| 2229 | +'widthheightpage' => '$1 × $2, $3 бет', |
2226 | 2230 | 'file-info' => 'Файл мөлшері: $1, MIME түрі: $2', |
2227 | 2231 | 'file-info-size' => '($1 × $2 пиксел, файл мөлшері: $3, MIME түрі: $4)', |
2228 | 2232 | 'file-nohires' => '<small>Жоғары ажыратылымдығы жетімсіз.</small>', |
2229 | | -'file-svg' => '<small>Бұл шығынсыз созылғыш векторлық суреті. Негізгі мөлшері: $1 × $2 пиксел.</small>', |
| 2233 | +'svg-long-desc' => '(SVG файлы, кесімді $1 × $2 пиксел, файл мөлшері: $3)', |
2230 | 2234 | 'show-big-image' => 'Жоғары ажыратылымды', |
2231 | 2235 | 'show-big-image-thumb' => '<small>Қарап шығу мөлшері: $1 × $2 пиксел</small>', |
2232 | 2236 | |
| 2237 | +# Special:Newimages |
2233 | 2238 | 'newimages' => 'Ең жаңа файлдар қоймасы', |
2234 | 2239 | 'showhidebots' => '(боттарды $1)', |
2235 | 2240 | 'noimages' => 'Көретін ештеңе жоқ.', |
2236 | 2241 | |
| 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 | + |
2237 | 2248 | # Bad image list |
2238 | 2249 | 'bad_image_list' => 'Пішімі төмендегідей: |
2239 | 2250 | |
Index: branches/liquidthreads/languages/messages/MessagesBg.php |
— | — | @@ -114,10 +114,10 @@ |
115 | 115 | 'img_sub' => array( 1, 'sub' ), |
116 | 116 | 'img_super' => array( 1, 'super', 'sup' ), |
117 | 117 | 'img_top' => array( 1, 'top' ), |
118 | | - 'img_text-top' => array( 1, 'text-top' ), |
| 118 | + 'img_text_top' => array( 1, 'text-top' ), |
119 | 119 | 'img_middle' => array( 1, 'middle' ), |
120 | 120 | 'img_bottom' => array( 1, 'bottom' ), |
121 | | - 'img_text-bottom' => array( 1, 'text-bottom' ), |
| 121 | + 'img_text_bottom' => array( 1, 'text-bottom' ), |
122 | 122 | 'int' => array( 0, 'INT:', 'ВЪТР:'), |
123 | 123 | 'sitename' => array( 1, 'SITENAME', 'ИМЕНАСАЙТА'), |
124 | 124 | 'ns' => array( 0, 'NS:', 'ИП:' ), |
Index: branches/liquidthreads/languages/Language.php |
— | — | @@ -1824,6 +1824,73 @@ |
1825 | 1825 | wfProfileOut( __METHOD__ ); |
1826 | 1826 | return array( $wikiUpperChars, $wikiLowerChars ); |
1827 | 1827 | } |
| 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 | + } |
1828 | 1894 | } |
1829 | 1895 | |
1830 | 1896 | |
| 1897 | + |
Property changes on: branches/liquidthreads |
___________________________________________________________________ |
Modified: svnmerge-integrated |
1831 | 1898 | - /trunk/phase3:1-24754 |
1832 | 1899 | + /trunk/phase3:1-24865 |