r22717 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r22716‎ | r22717 | r22718 >
Date:20:00, 4 June 2007
Author:david
Status:old
Tags:
Comment:
Merged revisions 22667-22715 via svnmerge from
svn+ssh://david@svn.wikimedia.org/svnroot/mediawiki/trunk/phase3

........
r22671 | tstarling | 2007-06-03 02:05:29 -0700 (Sun, 03 Jun 2007) | 1 line

Fixed most of the parser tests broken by filerepo merge
........
r22672 | tstarling | 2007-06-03 02:23:58 -0700 (Sun, 03 Jun 2007) | 1 line

Revert r22661 as per wikitech-l
........
r22673 | tstarling | 2007-06-03 02:31:21 -0700 (Sun, 03 Jun 2007) | 1 line

revert accidental commit
........
r22674 | tstarling | 2007-06-03 03:44:27 -0700 (Sun, 03 Jun 2007) | 1 line

Partial implementation of $wgCapitalLinks differences between local wiki and file repository. Description pages don't work when $wgCapitalLinks=true and initialCapital=false, but it should work well enough in the converse situation.
........
r22675 | tstarling | 2007-06-03 04:23:53 -0700 (Sun, 03 Jun 2007) | 1 line

Fix SpecialUpload::unsaveUploadedFile(). Move UploadVerification hook so that it is only called as the file is uploaded, so that extensions don't die when fed an mwrepo:// URL.
........
r22676 | yurik | 2007-06-03 07:18:00 -0700 (Sun, 03 Jun 2007) | 1 line

API: fixed bug 10109 PostgreSQL API bug in ApiQueryWatchlist::run
........
r22679 | tstarling | 2007-06-03 08:18:33 -0700 (Sun, 03 Jun 2007) | 1 line

Script to undelete a page
........
r22680 | hashar | 2007-06-03 10:10:45 -0700 (Sun, 03 Jun 2007) | 2 lines

propset
........
r22681 | hashar | 2007-06-03 10:14:21 -0700 (Sun, 03 Jun 2007) | 2 lines

Fix Parse error: syntax error, unexpected T_LNUMBER
........
r22682 | yurik | 2007-06-03 10:22:09 -0700 (Sun, 03 Jun 2007) | 1 line

API fixed bug 10112 generator=backlinks&prop=info broken
........
r22684 | raymond | 2007-06-03 12:18:08 -0700 (Sun, 03 Jun 2007) | 2 lines

* (bug 10116) Update Portuguese translations
Patch by 555
........
r22686 | raymond | 2007-06-03 13:15:40 -0700 (Sun, 03 Jun 2007) | 2 lines

* (bug 10126) Update Chinese translations
Patch by Shinjiman
........
r22688 | raymond | 2007-06-03 13:52:42 -0700 (Sun, 03 Jun 2007) | 1 line

Update German
........
r22690 | ivanlanin | 2007-06-03 14:40:30 -0700 (Sun, 03 Jun 2007) | 1 line

Indonesian (id) localisation updates.
........
r22691 | aaron | 2007-06-03 15:31:09 -0700 (Sun, 03 Jun 2007) | 1 line

*Add two vars to ArticleViewHeader hook, $outputDone, $pcache
........
r22692 | aaron | 2007-06-03 15:34:53 -0700 (Sun, 03 Jun 2007) | 1 line

*Document old ArticleViewHeader hook
........
r22695 | robchurch | 2007-06-03 19:25:13 -0700 (Sun, 03 Jun 2007) | 1 line

Remove superfluous newlines from end of generated LocalSettings.php files
........
r22698 | raymond | 2007-06-04 01:39:13 -0700 (Mon, 04 Jun 2007) | 1 line

Adding CSS-IDs to deletion log section
........
r22700 | raymond | 2007-06-04 03:09:41 -0700 (Mon, 04 Jun 2007) | 1 line

* Added variables 'wgRestrictionEdit' and 'wgRestrictionMove' for JS to header
........
r22702 | raymond | 2007-06-04 06:27:09 -0700 (Mon, 04 Jun 2007) | 4 lines

* (bug 10129) Magic words translated for Farsi by Huji
untranslated English messages removed
earlier translated namespace names replaced by canonical namespace names
rebuild with rubuildLanguage.php
........
r22703 | brion | 2007-06-04 08:22:37 -0700 (Mon, 04 Jun 2007) | 3 lines

* (bug 10132, 10134) Restore back-compatibility Image::imageUrl() function
........
r22704 | tstarling | 2007-06-04 08:52:22 -0700 (Mon, 04 Jun 2007) | 1 line

Fix calling convention to makeThumbLinkObj()
........
r22705 | brion | 2007-06-04 08:57:22 -0700 (Mon, 04 Jun 2007) | 2 lines

fix to fix for calling convention :D
........
r22706 | brion | 2007-06-04 08:58:16 -0700 (Mon, 04 Jun 2007) | 2 lines

aaaand one more
........
r22709 | wegge | 2007-06-04 09:17:30 -0700 (Mon, 04 Jun 2007) | 1 line

Fix newtalk messages
........
r22713 | brion | 2007-06-04 12:20:49 -0700 (Mon, 04 Jun 2007) | 3 lines

* (bug 10113) Fix double-click for view source on protected pages
........
Modified paths:
  • /branches/liquidthreads (modified) (history)
  • /branches/liquidthreads/RELEASE-NOTES (modified) (history)
  • /branches/liquidthreads/StartProfiler.php (modified) (history)
  • /branches/liquidthreads/config/index.php (modified) (history)
  • /branches/liquidthreads/docs/hooks.txt (modified) (history)
  • /branches/liquidthreads/includes/Article.php (modified) (history)
  • /branches/liquidthreads/includes/DefaultSettings.php (modified) (history)
  • /branches/liquidthreads/includes/EditPage.php (modified) (history)
  • /branches/liquidthreads/includes/ImagePage.php (modified) (history)
  • /branches/liquidthreads/includes/Skin.php (modified) (history)
  • /branches/liquidthreads/includes/SkinTemplate.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialUpload.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialWatchlist.php (modified) (history)
  • /branches/liquidthreads/includes/Title.php (modified) (history)
  • /branches/liquidthreads/includes/api/ApiQuery.php (modified) (history)
  • /branches/liquidthreads/includes/api/ApiQueryBase.php (modified) (history)
  • /branches/liquidthreads/includes/api/ApiQueryInfo.php (modified) (history)
  • /branches/liquidthreads/includes/api/ApiQueryWatchlist.php (modified) (history)
  • /branches/liquidthreads/includes/filerepo/FSRepo.php (modified) (history)
  • /branches/liquidthreads/includes/filerepo/File.php (modified) (history)
  • /branches/liquidthreads/includes/filerepo/LocalFile.php (modified) (history)
  • /branches/liquidthreads/includes/filerepo/OldLocalFile.php (modified) (history)
  • /branches/liquidthreads/includes/filerepo/RepoGroup.php (modified) (history)
  • /branches/liquidthreads/includes/filerepo/UnregisteredLocalFile.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesDa.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesDe.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesFa.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesId.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesPt.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesZh_classical.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesZh_cn.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesZh_tw.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesZh_yue.php (modified) (history)
  • /branches/liquidthreads/maintenance/archives/patch-oi_metadata.sql (modified) (history)
  • /branches/liquidthreads/maintenance/language/digit2html.php (modified) (history)
  • /branches/liquidthreads/maintenance/parserTests.inc (modified) (history)
  • /branches/liquidthreads/maintenance/undelete.php (added) (history)
  • /branches/liquidthreads/maintenance/undelete.php (added) (history)

Diff [purge]

Index: branches/liquidthreads/includes/filerepo/FSRepo.php
@@ -11,7 +11,7 @@
1212 const DELETE_SOURCE = 1;
1313
1414 var $directory, $url, $hashLevels, $thumbScriptUrl, $transformVia404;
15 - var $descBaseUrl, $scriptDirUrl, $articleUrl, $fetchDescription;
 15+ var $descBaseUrl, $scriptDirUrl, $articleUrl, $fetchDescription, $initialCapital;
1616 var $fileFactory = array( 'UnregisteredLocalFile', 'newFromTitle' );
1717 var $oldFileFactory = false;
1818
@@ -24,8 +24,9 @@
2525 $this->transformVia404 = !empty( $info['transformVia404'] );
2626
2727 // Optional settings
 28+ $this->initialCapital = true; // by default
2829 foreach ( array( 'descBaseUrl', 'scriptDirUrl', 'articleUrl', 'fetchDescription',
29 - 'thumbScriptUrl' ) as $var )
 30+ 'thumbScriptUrl', 'initialCapital' ) as $var )
3031 {
3132 if ( isset( $info[$var] ) ) {
3233 $this->$var = $info[$var];
@@ -236,6 +237,25 @@
237238 }
238239
239240 /**
 241+ * Remove a temporary file or mark it for garbage collection
 242+ * @param string $virtualUrl The virtual URL returned by storeTemp
 243+ * @return boolean True on success, false on failure
 244+ */
 245+ function freeTemp( $virtualUrl ) {
 246+ $temp = 'mwrepo:///temp';
 247+ if ( substr( $virtualUrl, 0, strlen( $temp ) ) != $temp ) {
 248+ wfDebug( __METHOD__.": Invalid virtual URL\n" );
 249+ return false;
 250+ }
 251+ $path = $this->resolveVirtualUrl( $virtualUrl );
 252+ wfSuppressWarnings();
 253+ $success = unlink( $path );
 254+ wfRestoreWarnings();
 255+ return $success;
 256+ }
 257+
 258+
 259+ /**
240260 * Copy or move a file either from the local filesystem or from an mwrepo://
241261 * virtual URL, into this repository at the specified destination location.
242262 *
@@ -298,7 +318,7 @@
299319
300320 /**
301321 * Get a relative path including trailing slash, e.g. f/fa/
302 - * If the repo is not hashed, returns an empty string
 322+ * If the repo is not hashed, returns a slash
303323 */
304324 function getHashPath( $name ) {
305325 if ( $this->isHashed() ) {
@@ -309,7 +329,7 @@
310330 }
311331 return $path;
312332 } else {
313 - return '';
 333+ return '/';
314334 }
315335 }
316336
@@ -407,6 +427,23 @@
408428 function enumFiles( $callback ) {
409429 $this->enumFilesInFS( $callback );
410430 }
 431+
 432+ /**
 433+ * Get the name of an image from its title object
 434+ */
 435+ function getNameFromTitle( $title ) {
 436+ global $wgCapitalLinks;
 437+ if ( $this->initialCapital != $wgCapitalLinks ) {
 438+ global $wgContLang;
 439+ $name = $title->getUserCaseDBKey();
 440+ if ( $this->initialCapital ) {
 441+ $name = $wgContLang->ucfirst( $name );
 442+ }
 443+ } else {
 444+ $name = $title->getDBkey();
 445+ }
 446+ return $name;
 447+ }
411448 }
412449
413450 ?>
Index: branches/liquidthreads/includes/filerepo/File.php
@@ -119,7 +119,7 @@
120120 */
121121 function getName() {
122122 if ( !isset( $this->name ) ) {
123 - $this->name = $this->title->getDBkey();
 123+ $this->name = $this->repo->getNameFromTitle( $this->title );
124124 }
125125 return $this->name;
126126 }
Index: branches/liquidthreads/includes/filerepo/RepoGroup.php
@@ -14,7 +14,7 @@
1515 * Get a RepoGroup instance. At present only one instance of RepoGroup is
1616 * needed in a MediaWiki invocation, this may change in the future.
1717 */
18 - function singleton() {
 18+ static function singleton() {
1919 if ( self::$instance ) {
2020 return self::$instance;
2121 }
@@ -24,6 +24,14 @@
2525 }
2626
2727 /**
 28+ * Destroy the singleton instance, so that a new one will be created next
 29+ * time singleton() is called.
 30+ */
 31+ static function destroySingleton() {
 32+ self::$instance = null;
 33+ }
 34+
 35+ /**
2836 * Construct a group of file repositories.
2937 * @param array $data Array of repository info arrays.
3038 * Each info array is an associative array with the 'class' member
Index: branches/liquidthreads/includes/filerepo/OldLocalFile.php
@@ -1,222 +1,222 @@
2 -<?php
3 -
4 -/**
5 - * Class to represent a file in the oldimage table
6 - *
7 - * @addtogroup FileRepo
8 - */
9 -class OldLocalFile extends LocalFile {
10 - var $requestedTime, $archive_name;
11 -
12 - const CACHE_VERSION = 1;
13 - const MAX_CACHE_ROWS = 20;
14 -
15 - function newFromTitle( $title, $repo, $time ) {
16 - return new self( $title, $repo, $time, null );
17 - }
18 -
19 - function newFromArchiveName( $title, $repo, $archiveName ) {
20 - return new self( $title, $repo, null, $archiveName );
21 - }
22 -
23 - function newFromRow( $row, $repo ) {
24 - $title = Title::makeTitle( NS_IMAGE, $row->oi_name );
25 - $file = new self( $title, $repo, null, $row->oi_archive_name );
26 - $file->loadFromRow( $row, 'oi_' );
27 - return $file;
28 - }
29 -
30 - /**
31 - * @param Title $title
32 - * @param FileRepo $repo
33 - * @param string $time Timestamp or null to load by archive name
34 - * @param string $archiveName Archive name or null to load by timestamp
35 - */
36 - function __construct( $title, $repo, $time, $archiveName ) {
37 - parent::__construct( $title, $repo );
38 - $this->requestedTime = $time;
39 - $this->archive_name = $archiveName;
40 - if ( is_null( $time ) && is_null( $archiveName ) ) {
41 - throw new MWException( __METHOD__.': must specify at least one of $time or $archiveName' );
42 - }
43 - }
44 -
45 - function getCacheKey() {
46 - $hashedName = md5($this->getName());
47 - return wfMemcKey( 'oldfile', $hashedName );
48 - }
49 -
50 - function getArchiveName() {
51 - if ( !isset( $this->archive_name ) ) {
52 - $this->load();
53 - }
54 - return $this->archive_name;
55 - }
56 -
57 - function isOld() {
58 - return true;
59 - }
60 -
61 - /**
62 - * Try to load file metadata from memcached. Returns true on success.
63 - */
64 - function loadFromCache() {
65 - global $wgMemc;
66 - wfProfileIn( __METHOD__ );
67 - $this->dataLoaded = false;
68 - $key = $this->getCacheKey();
69 - if ( !$key ) {
70 - return false;
71 - }
72 - $oldImages = $wgMemc->get( $key );
73 -
74 - if ( isset( $oldImages['version'] ) && $oldImages['version'] == MW_OLDFILE_VERSION ) {
75 - unset( $oldImages['version'] );
76 - $more = isset( $oldImages['more'] );
77 - unset( $oldImages['more'] );
78 - $found = false;
79 - if ( is_null( $this->requestedTime ) ) {
80 - foreach ( $oldImages as $timestamp => $info ) {
81 - if ( $info['archive_name'] == $this->archive_name ) {
82 - $found = true;
83 - break;
84 - }
85 - }
86 - } else {
87 - krsort( $oldImages );
88 - foreach ( $oldImages as $timestamp => $info ) {
89 - if ( $timestamp <= $this->requestedTime ) {
90 - $found = true;
91 - break;
92 - }
93 - }
94 - }
95 - if ( $found ) {
96 - wfDebug( "Pulling file metadata from cache key {$key}[{$timestamp}]\n" );
97 - $this->dataLoaded = true;
98 - foreach ( $cachedValues as $name => $value ) {
99 - $this->$name = $value;
100 - }
101 - } elseif ( $more ) {
102 - wfDebug( "Cache key was truncated, oldimage row might be found in the database\n" );
103 - } else {
104 - wfDebug( "Image did not exist at the specified time.\n" );
105 - $this->fileExists = false;
106 - $this->dataLoaded = true;
107 - }
108 - }
109 -
110 - if ( $this->dataLoaded ) {
111 - wfIncrStats( 'image_cache_hit' );
112 - } else {
113 - wfIncrStats( 'image_cache_miss' );
114 - }
115 -
116 - wfProfileOut( __METHOD__ );
117 - return $this->dataLoaded;
118 - }
119 -
120 - function saveToCache() {
121 - // Cache the entire history of the image (up to MAX_CACHE_ROWS).
122 - // This is expensive, so we only do it if $wgMemc is real
123 - global $wgMemc;
124 - if ( $wgMemc instanceof FakeMemcachedClient ) {
125 - return;
126 - }
127 - $key = $this->getCacheKey();
128 - if ( !$key ) {
129 - return;
130 - }
131 - wfProfileIn( __METHOD__ );
132 -
133 - $dbr = $this->repo->getSlaveDB();
134 - $res = $dbr->select( 'oldimage', $this->getCacheFields(),
135 - array( 'oi_name' => $this->getName() ), __METHOD__,
136 - array(
137 - 'LIMIT' => self::MAX_CACHE_ROWS + 1,
138 - 'ORDER BY' => 'oi_timestamp DESC',
139 - ));
140 - $cache = array( 'version' => self::CACHE_VERSION );
141 - $numRows = $dbr->numRows( $res );
142 - if ( $numRows > self::MAX_CACHE_ROWS ) {
143 - $cache['more'] = true;
144 - $numRows--;
145 - }
146 - for ( $i = 0; $i < $numRows; $i++ ) {
147 - $row = $dbr->fetchObject( $res );
148 - $this->decodeRow( $row, 'oi_' );
149 - $cache[$row->oi_timestamp] = $row;
150 - }
151 - $dbr->freeResult( $res );
152 - $wgMemc->set( $key, $cache, 7*86400 /* 1 week */ );
153 - wfProfileOut( __METHOD__ );
154 - }
155 -
156 - function loadFromDB() {
157 - wfProfileIn( __METHOD__ );
158 - $dbr = $this->repo->getSlaveDB();
159 - $conds = array( 'oi_name' => $this->getName() );
160 - if ( is_null( $this->requestedTime ) ) {
161 - $conds['oi_archive_name'] = $this->archive_name;
162 - } else {
163 - $conds[] = 'oi_timestamp <= ' . $dbr->addQuotes( $this->requestedTime );
164 - }
165 - $row = $dbr->selectRow( 'oldimage', $this->getCacheFields( 'oi_' ),
166 - $conds, __METHOD__, array( 'ORDER BY' => 'oi_timestamp DESC' ) );
167 - if ( $row ) {
168 - $this->loadFromRow( $row, 'oi_' );
169 - } else {
170 - $this->fileExists = false;
171 - }
172 - $this->dataLoaded = true;
173 - }
174 -
175 - function getCacheFields( $prefix = 'img_' ) {
176 - $fields = parent::getCacheFields( $prefix );
177 - $fields[] = $prefix . 'archive_name';
178 -
179 - // XXX: Temporary hack before schema update
180 - $fields = array_diff( $fields, array(
181 - 'oi_media_type', 'oi_major_mime', 'oi_minor_mime', 'oi_metadata' ) );
182 - return $fields;
183 - }
184 -
185 - function getRel() {
186 - return 'archive/' . $this->getHashPath() . $this->getArchiveName();
187 - }
188 -
189 - function getUrlRel() {
190 - return 'archive/' . $this->getHashPath() . urlencode( $this->getArchiveName() );
191 - }
192 -
193 - function upgradeRow() {
194 - wfProfileIn( __METHOD__ );
195 -
196 - $this->loadFromFile();
197 -
198 - $dbw = $this->repo->getMasterDB();
199 - list( $major, $minor ) = self::splitMime( $this->mime );
200 -
201 - wfDebug(__METHOD__.': upgrading '.$this->archive_name." to the current schema\n");
202 - $dbw->update( 'oldimage',
203 - array(
204 - 'oi_width' => $this->width,
205 - 'oi_height' => $this->height,
206 - 'oi_bits' => $this->bits,
207 - #'oi_media_type' => $this->media_type,
208 - #'oi_major_mime' => $major,
209 - #'oi_minor_mime' => $minor,
210 - #'oi_metadata' => $this->metadata,
211 - ), array( 'oi_name' => $this->getName(), 'oi_timestamp' => $this->requestedTime ),
212 - __METHOD__
213 - );
214 - wfProfileOut( __METHOD__ );
215 - }
216 -
217 - // XXX: Temporary hack before schema update
218 - function maybeUpgradeRow() {}
219 -
220 -}
221 -
222 -
223 -?>
 2+<?php
 3+
 4+/**
 5+ * Class to represent a file in the oldimage table
 6+ *
 7+ * @addtogroup FileRepo
 8+ */
 9+class OldLocalFile extends LocalFile {
 10+ var $requestedTime, $archive_name;
 11+
 12+ const CACHE_VERSION = 1;
 13+ const MAX_CACHE_ROWS = 20;
 14+
 15+ function newFromTitle( $title, $repo, $time ) {
 16+ return new self( $title, $repo, $time, null );
 17+ }
 18+
 19+ function newFromArchiveName( $title, $repo, $archiveName ) {
 20+ return new self( $title, $repo, null, $archiveName );
 21+ }
 22+
 23+ function newFromRow( $row, $repo ) {
 24+ $title = Title::makeTitle( NS_IMAGE, $row->oi_name );
 25+ $file = new self( $title, $repo, null, $row->oi_archive_name );
 26+ $file->loadFromRow( $row, 'oi_' );
 27+ return $file;
 28+ }
 29+
 30+ /**
 31+ * @param Title $title
 32+ * @param FileRepo $repo
 33+ * @param string $time Timestamp or null to load by archive name
 34+ * @param string $archiveName Archive name or null to load by timestamp
 35+ */
 36+ function __construct( $title, $repo, $time, $archiveName ) {
 37+ parent::__construct( $title, $repo );
 38+ $this->requestedTime = $time;
 39+ $this->archive_name = $archiveName;
 40+ if ( is_null( $time ) && is_null( $archiveName ) ) {
 41+ throw new MWException( __METHOD__.': must specify at least one of $time or $archiveName' );
 42+ }
 43+ }
 44+
 45+ function getCacheKey() {
 46+ $hashedName = md5($this->getName());
 47+ return wfMemcKey( 'oldfile', $hashedName );
 48+ }
 49+
 50+ function getArchiveName() {
 51+ if ( !isset( $this->archive_name ) ) {
 52+ $this->load();
 53+ }
 54+ return $this->archive_name;
 55+ }
 56+
 57+ function isOld() {
 58+ return true;
 59+ }
 60+
 61+ /**
 62+ * Try to load file metadata from memcached. Returns true on success.
 63+ */
 64+ function loadFromCache() {
 65+ global $wgMemc;
 66+ wfProfileIn( __METHOD__ );
 67+ $this->dataLoaded = false;
 68+ $key = $this->getCacheKey();
 69+ if ( !$key ) {
 70+ return false;
 71+ }
 72+ $oldImages = $wgMemc->get( $key );
 73+
 74+ if ( isset( $oldImages['version'] ) && $oldImages['version'] == MW_OLDFILE_VERSION ) {
 75+ unset( $oldImages['version'] );
 76+ $more = isset( $oldImages['more'] );
 77+ unset( $oldImages['more'] );
 78+ $found = false;
 79+ if ( is_null( $this->requestedTime ) ) {
 80+ foreach ( $oldImages as $timestamp => $info ) {
 81+ if ( $info['archive_name'] == $this->archive_name ) {
 82+ $found = true;
 83+ break;
 84+ }
 85+ }
 86+ } else {
 87+ krsort( $oldImages );
 88+ foreach ( $oldImages as $timestamp => $info ) {
 89+ if ( $timestamp <= $this->requestedTime ) {
 90+ $found = true;
 91+ break;
 92+ }
 93+ }
 94+ }
 95+ if ( $found ) {
 96+ wfDebug( "Pulling file metadata from cache key {$key}[{$timestamp}]\n" );
 97+ $this->dataLoaded = true;
 98+ foreach ( $cachedValues as $name => $value ) {
 99+ $this->$name = $value;
 100+ }
 101+ } elseif ( $more ) {
 102+ wfDebug( "Cache key was truncated, oldimage row might be found in the database\n" );
 103+ } else {
 104+ wfDebug( "Image did not exist at the specified time.\n" );
 105+ $this->fileExists = false;
 106+ $this->dataLoaded = true;
 107+ }
 108+ }
 109+
 110+ if ( $this->dataLoaded ) {
 111+ wfIncrStats( 'image_cache_hit' );
 112+ } else {
 113+ wfIncrStats( 'image_cache_miss' );
 114+ }
 115+
 116+ wfProfileOut( __METHOD__ );
 117+ return $this->dataLoaded;
 118+ }
 119+
 120+ function saveToCache() {
 121+ // Cache the entire history of the image (up to MAX_CACHE_ROWS).
 122+ // This is expensive, so we only do it if $wgMemc is real
 123+ global $wgMemc;
 124+ if ( $wgMemc instanceof FakeMemcachedClient ) {
 125+ return;
 126+ }
 127+ $key = $this->getCacheKey();
 128+ if ( !$key ) {
 129+ return;
 130+ }
 131+ wfProfileIn( __METHOD__ );
 132+
 133+ $dbr = $this->repo->getSlaveDB();
 134+ $res = $dbr->select( 'oldimage', $this->getCacheFields(),
 135+ array( 'oi_name' => $this->getName() ), __METHOD__,
 136+ array(
 137+ 'LIMIT' => self::MAX_CACHE_ROWS + 1,
 138+ 'ORDER BY' => 'oi_timestamp DESC',
 139+ ));
 140+ $cache = array( 'version' => self::CACHE_VERSION );
 141+ $numRows = $dbr->numRows( $res );
 142+ if ( $numRows > self::MAX_CACHE_ROWS ) {
 143+ $cache['more'] = true;
 144+ $numRows--;
 145+ }
 146+ for ( $i = 0; $i < $numRows; $i++ ) {
 147+ $row = $dbr->fetchObject( $res );
 148+ $this->decodeRow( $row, 'oi_' );
 149+ $cache[$row->oi_timestamp] = $row;
 150+ }
 151+ $dbr->freeResult( $res );
 152+ $wgMemc->set( $key, $cache, 7*86400 /* 1 week */ );
 153+ wfProfileOut( __METHOD__ );
 154+ }
 155+
 156+ function loadFromDB() {
 157+ wfProfileIn( __METHOD__ );
 158+ $dbr = $this->repo->getSlaveDB();
 159+ $conds = array( 'oi_name' => $this->getName() );
 160+ if ( is_null( $this->requestedTime ) ) {
 161+ $conds['oi_archive_name'] = $this->archive_name;
 162+ } else {
 163+ $conds[] = 'oi_timestamp <= ' . $dbr->addQuotes( $this->requestedTime );
 164+ }
 165+ $row = $dbr->selectRow( 'oldimage', $this->getCacheFields( 'oi_' ),
 166+ $conds, __METHOD__, array( 'ORDER BY' => 'oi_timestamp DESC' ) );
 167+ if ( $row ) {
 168+ $this->loadFromRow( $row, 'oi_' );
 169+ } else {
 170+ $this->fileExists = false;
 171+ }
 172+ $this->dataLoaded = true;
 173+ }
 174+
 175+ function getCacheFields( $prefix = 'img_' ) {
 176+ $fields = parent::getCacheFields( $prefix );
 177+ $fields[] = $prefix . 'archive_name';
 178+
 179+ // XXX: Temporary hack before schema update
 180+ $fields = array_diff( $fields, array(
 181+ 'oi_media_type', 'oi_major_mime', 'oi_minor_mime', 'oi_metadata' ) );
 182+ return $fields;
 183+ }
 184+
 185+ function getRel() {
 186+ return 'archive/' . $this->getHashPath() . $this->getArchiveName();
 187+ }
 188+
 189+ function getUrlRel() {
 190+ return 'archive/' . $this->getHashPath() . urlencode( $this->getArchiveName() );
 191+ }
 192+
 193+ function upgradeRow() {
 194+ wfProfileIn( __METHOD__ );
 195+
 196+ $this->loadFromFile();
 197+
 198+ $dbw = $this->repo->getMasterDB();
 199+ list( $major, $minor ) = self::splitMime( $this->mime );
 200+
 201+ wfDebug(__METHOD__.': upgrading '.$this->archive_name." to the current schema\n");
 202+ $dbw->update( 'oldimage',
 203+ array(
 204+ 'oi_width' => $this->width,
 205+ 'oi_height' => $this->height,
 206+ 'oi_bits' => $this->bits,
 207+ #'oi_media_type' => $this->media_type,
 208+ #'oi_major_mime' => $major,
 209+ #'oi_minor_mime' => $minor,
 210+ #'oi_metadata' => $this->metadata,
 211+ ), array( 'oi_name' => $this->getName(), 'oi_timestamp' => $this->requestedTime ),
 212+ __METHOD__
 213+ );
 214+ wfProfileOut( __METHOD__ );
 215+ }
 216+
 217+ // XXX: Temporary hack before schema update
 218+ function maybeUpgradeRow() {}
 219+
 220+}
 221+
 222+
 223+?>
Property changes on: branches/liquidthreads/includes/filerepo/OldLocalFile.php
___________________________________________________________________
Added: svn:eol-style
224224 + native
Index: branches/liquidthreads/includes/filerepo/LocalFile.php
@@ -1330,6 +1330,7 @@
13311331 /**
13321332 * Wrapper for wfFindFile(), for backwards-compatibility only
13331333 * Do not use in core code.
 1334+ * @deprecated
13341335 */
13351336 function newFromTitle( $title, $time = false ) {
13361337 $img = wfFindFile( $title, $time );
@@ -1338,6 +1339,29 @@
13391340 }
13401341 return $img;
13411342 }
 1343+
 1344+ /**
 1345+ * Return the URL of an image, provided its name.
 1346+ *
 1347+ * Backwards-compatibility for extensions.
 1348+ * Note that fromSharedDirectory will only use the shared path for files
 1349+ * that actually exist there now, and will return local paths otherwise.
 1350+ *
 1351+ * @param string $name Name of the image, without the leading "Image:"
 1352+ * @param boolean $fromSharedDirectory Should this be in $wgSharedUploadPath?
 1353+ * @return string URL of $name image
 1354+ * @deprecated
 1355+ */
 1356+ static function imageUrl( $name, $fromSharedDirectory = false ) {
 1357+ $image = null;
 1358+ if( $fromSharedDirectory ) {
 1359+ $image = wfFindFile( $name );
 1360+ }
 1361+ if( !$image ) {
 1362+ $image = wfLocalFile( $name );
 1363+ }
 1364+ return $image->getUrl();
 1365+ }
13421366 }
13431367
13441368 /**
Index: branches/liquidthreads/includes/filerepo/UnregisteredLocalFile.php
@@ -27,7 +27,7 @@
2828 }
2929 if ( $title ) {
3030 $this->title = $title;
31 - $this->name = $title->getDBkey();
 31+ $this->name = $repo->getNameFromTitle( $title );
3232 } else {
3333 $this->name = basename( $path );
3434 $this->title = Title::makeTitleSafe( NS_IMAGE, $this->name );
Index: branches/liquidthreads/includes/Article.php
@@ -724,7 +724,7 @@
725725 }
726726
727727 $outputDone = false;
728 - wfRunHooks( 'ArticleViewHeader', array( &$this ) );
 728+ wfRunHooks( 'ArticleViewHeader', array( &$this, &$outputDone, &$pcache ) );
729729 if ( $pcache ) {
730730 if ( $wgOut->tryParserCache( $this, $wgUser ) ) {
731731 // Ensure that UI elements requiring revision ID have
@@ -857,7 +857,7 @@
858858 * This won't appear when editing a new page, but will when viewing a nonexistant one.
859859 */
860860 if ( 0 == $this->getID() ) {
861 - $this->showLogExtract( $wgOut );
 861+ $this->showLogExtract( $wgOut, 'view' );
862862 }
863863
864864 # Trackbacks
@@ -2006,22 +2006,23 @@
20072007
20082008 $wgOut->returnToMain( false );
20092009
2010 - $this->showLogExtract( $wgOut );
 2010+ $this->showLogExtract( $wgOut, 'delete' );
20112011 }
20122012
20132013
20142014 /**
20152015 * Fetch deletion log
20162016 */
2017 - function showLogExtract( &$out ) {
 2017+ function showLogExtract( &$out, $type = '' ) {
20182018 # Show relevant lines from the deletion log:
2019 - $out->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'delete' ) ) . "</h2>\n" );
 2019+ $out->addHTML( "<div id='mw-article-$type-deletionlog'><h2>" . htmlspecialchars( LogPage::logName( 'delete' ) ) . "</h2>\n" );
20202020 $logViewer = new LogViewer(
20212021 new LogReader(
20222022 new FauxRequest(
20232023 array( 'page' => $this->mTitle->getPrefixedText(),
20242024 'type' => 'delete' ) ) ) );
20252025 $logViewer->showList( $out );
 2026+ $out->addHTML( "</div>" );
20262027 }
20272028
20282029
Index: branches/liquidthreads/includes/SpecialUpload.php
@@ -368,17 +368,18 @@
369369 if( $veri !== true ) { //it's a wiki error...
370370 return $this->uploadError( $veri->toString() );
371371 }
372 - }
373372
374 - /**
375 - * Provide an opportunity for extensions to add futher checks
376 - */
377 - $error = '';
378 - if( !wfRunHooks( 'UploadVerification',
379 - array( $this->mUploadSaveName, $this->mUploadTempName, &$error ) ) ) {
380 - return $this->uploadError( $error );
 373+ /**
 374+ * Provide an opportunity for extensions to add futher checks
 375+ */
 376+ $error = '';
 377+ if( !wfRunHooks( 'UploadVerification',
 378+ array( $this->mUploadSaveName, $this->mUploadTempName, &$error ) ) ) {
 379+ return $this->uploadError( $error );
 380+ }
381381 }
382382
 383+
383384 /**
384385 * Check for non-fatal conditions
385386 */
@@ -602,9 +603,8 @@
603604 */
604605 function unsaveUploadedFile() {
605606 global $wgOut;
606 - wfSuppressWarnings();
607 - $success = unlink( $this->mUploadTempName );
608 - wfRestoreWarnings();
 607+ $repo = RepoGroup::singleton()->getLocalRepo();
 608+ $success = $repo->freeTemp( $this->mUploadTempName );
609609 if ( ! $success ) {
610610 $wgOut->showFileDeleteError( $this->mUploadTempName );
611611 return false;
Index: branches/liquidthreads/includes/SkinTemplate.php
@@ -440,7 +440,8 @@
441441 // XXX: attach this from javascript, same with section editing
442442 if($this->iseditable && $wgUser->getOption("editondblclick") )
443443 {
444 - $tpl->set('body_ondblclick', 'document.location = "' .$content_actions['edit']['href'] .'";');
 444+ $encEditUrl = wfEscapeJsString( $this->mTitle->getLocalUrl( $this->editUrlOptions() ) );
 445+ $tpl->set('body_ondblclick', 'document.location = "' . $encEditUrl . '";');
445446 } else {
446447 $tpl->set('body_ondblclick', false);
447448 }
Index: branches/liquidthreads/includes/Title.php
@@ -47,6 +47,7 @@
4848 var $mTextform; # Text form (spaces not underscores) of the main part
4949 var $mUrlform; # URL-encoded form of the main part
5050 var $mDbkeyform; # Main part with underscores
 51+ var $mUserCaseDBKey; # DB key with the initial letter in the case specified by the user
5152 var $mNamespace; # Namespace index, i.e. one of the NS_xxxx constants
5253 var $mInterwiki; # Interwiki prefix (or null string)
5354 var $mFragment; # Title fragment (i.e. the bit after the #)
@@ -556,6 +557,12 @@
557558 return $wgContLang->getNsText( $this->mNamespace );
558559 }
559560 /**
 561+ * Get the DB key with the initial letter case as specified by the user
 562+ */
 563+ function getUserCaseDBKey() {
 564+ return $this->mUserCaseDBKey;
 565+ }
 566+ /**
560567 * Get the namespace text of the subject (rather than talk) page
561568 * @return string
562569 */
@@ -1749,6 +1756,7 @@
17501757 * Don't force it for interwikis, since the other
17511758 * site might be case-sensitive.
17521759 */
 1760+ $this->mUserCaseDBKey = $dbkey;
17531761 if( $wgCapitalLinks && $this->mInterwiki == '') {
17541762 $dbkey = $wgContLang->ucfirst( $dbkey );
17551763 }
Index: branches/liquidthreads/includes/Skin.php
@@ -300,7 +300,7 @@
301301
302302 $ns = $wgTitle->getNamespace();
303303 $nsname = isset( $wgCanonicalNamespaceNames[ $ns ] ) ? $wgCanonicalNamespaceNames[ $ns ] : $wgTitle->getNsText();
304 -
 304+
305305 $vars = array(
306306 'skin' => $data['skinname'],
307307 'stylepath' => $wgStylePath,
@@ -313,6 +313,8 @@
314314 'wgPageName' => $wgTitle->getPrefixedDBKey(),
315315 'wgTitle' => $wgTitle->getText(),
316316 'wgAction' => $wgRequest->getText( 'action', 'view' ),
 317+ 'wgRestrictionEdit' => $wgTitle->getRestrictions( 'edit' ),
 318+ 'wgRestrictionMove' => $wgTitle->getRestrictions( 'move' ),
317319 'wgArticleId' => $wgTitle->getArticleId(),
318320 'wgIsArticle' => $wgOut->isArticle(),
319321 'wgUserName' => $wgUser->isAnon() ? NULL : $wgUser->getName(),
Index: branches/liquidthreads/includes/ImagePage.php
@@ -274,7 +274,7 @@
275275 if ( $page > 1 ) {
276276 $label = $wgOut->parse( wfMsg( 'imgmultipageprev' ), false );
277277 $link = $sk->makeKnownLinkObj( $this->mTitle, $label, 'page='. ($page-1) );
278 - $thumb1 = $sk->makeThumbLinkObj( $this->img, $link, $label, 'none',
 278+ $thumb1 = $sk->makeThumbLinkObj( $this->mTitle, $this->img, $link, $label, 'none',
279279 array( 'page' => $page - 1 ) );
280280 } else {
281281 $thumb1 = '';
@@ -283,7 +283,7 @@
284284 if ( $page < $count ) {
285285 $label = wfMsg( 'imgmultipagenext' );
286286 $link = $sk->makeKnownLinkObj( $this->mTitle, $label, 'page='. ($page+1) );
287 - $thumb2 = $sk->makeThumbLinkObj( $this->img, $link, $label, 'none',
 287+ $thumb2 = $sk->makeThumbLinkObj( $this->mTitle, $this->img, $link, $label, 'none',
288288 array( 'page' => $page + 1 ) );
289289 } else {
290290 $thumb2 = '';
Index: branches/liquidthreads/includes/EditPage.php
@@ -611,8 +611,8 @@
612612 $wgOut->addWikiText( wfMsg( 'newarticletext' ) );
613613 else
614614 $wgOut->addWikiText( wfMsg( 'newarticletextanon' ) );
615 - // Show deletion log when editing new article.
616 - $this->mArticle->showLogExtract( $wgOut );
 615+ // Show deletion log when editing new article.
 616+ $this->mArticle->showLogExtract( $wgOut, 'create' );
617617 }
618618 }
619619
Index: branches/liquidthreads/includes/api/ApiQueryBase.php
@@ -139,9 +139,9 @@
140140
141141 /**
142142 * Override this method to request extra fields from the pageSet
143 - * using $this->getPageSet()->requestField('fieldName')
 143+ * using $pageSet->requestField('fieldName')
144144 */
145 - public function requestExtraData() {
 145+ public function requestExtraData($pageSet) {
146146 }
147147
148148 /**
Index: branches/liquidthreads/includes/api/ApiQueryInfo.php
@@ -39,8 +39,7 @@
4040 parent :: __construct($query, $moduleName);
4141 }
4242
43 - public function requestExtraData() {
44 - $pageSet = $this->getPageSet();
 43+ public function requestExtraData($pageSet) {
4544 $pageSet->requestField('page_is_redirect');
4645 $pageSet->requestField('page_is_new');
4746 $pageSet->requestField('page_counter');
Index: branches/liquidthreads/includes/api/ApiQueryWatchlist.php
@@ -48,10 +48,11 @@
4949 $this->run($resultPageSet);
5050 }
5151
52 - private $fld_ids = false, $fld_title = false, $fld_patrol = false, $fld_flags = false, $fld_timestamp = false, $fld_user = false, $fld_comment = false;
 52+ private $fld_ids = false, $fld_title = false, $fld_patrol = false, $fld_flags = false,
 53+ $fld_timestamp = false, $fld_user = false, $fld_comment = false;
5354
5455 private function run($resultPageSet = null) {
55 - global $wgUser;
 56+ global $wgUser, $wgDBtype;
5657
5758 $this->selectNamedDB('watchlist', DB_SLAVE, 'watchlist');
5859
@@ -132,7 +133,9 @@
133134 $this->addWhereRange('rc_timestamp', $dir, $start, $end);
134135 $this->addWhereFld('wl_namespace', $namespace);
135136 $this->addWhereIf('rc_this_oldid=page_latest', !$allrev);
136 - $this->addWhereIf("rc_timestamp > ''", !isset ($start) && !isset ($end));
 137+
 138+ # This is a index optimization for mysql, as done in the Special:Watchlist page
 139+ $this->addWhereIf("rc_timestamp > ''", !isset ($start) && !isset ($end) && $wgDBtype == 'mysql');
137140
138141 $this->addOption('LIMIT', $limit +1);
139142
Index: branches/liquidthreads/includes/api/ApiQuery.php
@@ -164,22 +164,16 @@
165165 $this->InstantiateModules($modules, 'list', $this->mQueryListModules);
166166 $this->InstantiateModules($modules, 'meta', $this->mQueryMetaModules);
167167
168 - // Modules may optimize data requests through the $this->getPageSet() object
169 - // Execute all requested modules.
170 - foreach ($modules as $module) {
171 - $module->requestExtraData();
172 - }
173 -
174168 //
175 - // Populate page information for the given pageSet
176 - //
177 - $this->mPageSet->execute();
178 -
179 - //
180169 // If given, execute generator to substitute user supplied data with generated data.
181170 //
182 - if (isset ($this->params['generator']))
183 - $this->executeGeneratorModule($this->params['generator']);
 171+ if (isset ($this->params['generator'])) {
 172+ $this->executeGeneratorModule($this->params['generator'], $modules);
 173+ } else {
 174+ // Append custom fields and populate page/revision information
 175+ $this->addCustomFldsToPageSet($modules, $this->mPageSet);
 176+ $this->mPageSet->execute();
 177+ }
184178
185179 //
186180 // Record page information (title, namespace, if exists, etc)
@@ -195,6 +189,18 @@
196190 $module->profileOut();
197191 }
198192 }
 193+
 194+ /**
 195+ * Query modules may optimize data requests through the $this->getPageSet() object
 196+ * by adding extra fields from the page table.
 197+ * This function will gather all the extra request fields from the modules.
 198+ */
 199+ private function addCustomFldsToPageSet($modules, $pageSet) {
 200+ // Query all requested modules.
 201+ foreach ($modules as $module) {
 202+ $module->requestExtraData($pageSet);
 203+ }
 204+ }
199205
200206 /**
201207 * Create instances of all modules requested by the client
@@ -206,6 +212,10 @@
207213 $modules[] = new $moduleList[$moduleName] ($this, $moduleName);
208214 }
209215
 216+ /**
 217+ * Appends an element for each page in the current pageSet with the most general
 218+ * information (id, title), plus any title normalizations and missing title/pageids/revids.
 219+ */
210220 private function outputGeneralPageInfo() {
211221
212222 $pageSet = $this->getPageSet();
@@ -299,7 +309,10 @@
300310 }
301311 }
302312
303 - protected function executeGeneratorModule($generatorName) {
 313+ /**
 314+ * For generator mode, execute generator, and use its output as new pageSet
 315+ */
 316+ protected function executeGeneratorModule($generatorName, $modules) {
304317
305318 // Find class that implements requested generator
306319 if (isset ($this->mQueryListModules[$generatorName])) {
@@ -319,8 +332,14 @@
320333 $this->dieUsage("Module $generatorName cannot be used as a generator", "badgenerator");
321334
322335 $generator->setGeneratorMode();
323 - $generator->requestExtraData();
324336
 337+ // Add any additional fields modules may need
 338+ $generator->requestExtraData($this->mPageSet);
 339+ $this->addCustomFldsToPageSet($modules, $resultPageSet);
 340+
 341+ // Populate page information with the original user input
 342+ $this->mPageSet->execute();
 343+
325344 // populate resultPageSet with the generator output
326345 $generator->profileIn();
327346 $generator->executeGenerator($resultPageSet);
@@ -380,6 +399,9 @@
381400 return $msg;
382401 }
383402
 403+ /**
 404+ * For all modules in $moduleList, generate help messages and join them together
 405+ */
384406 private function makeHelpMsgHelper($moduleList, $paramName) {
385407
386408 $moduleDscriptions = array ();
Index: branches/liquidthreads/includes/SpecialWatchlist.php
@@ -94,7 +94,7 @@
9595 $wgOut->addHTML( '<li class="mw-unwatch-failure">' . wfMsg( 'couldntremove', htmlspecialchars($one) ) . "</li>\n" );
9696 } else {
9797 wfRunHooks('UnwatchArticle', array(&$wgUser, new Article($t)));
98 - $wgOut->addHTML( '<li class="mw-unwatch-success">' . htmlspecialchars($one) . "</li>\n" );
 98+ $wgOut->addHTML( '<li class="mw-unwatch-success">[[' . htmlspecialchars($one) . "]]</li>\n" );
9999 }
100100 } else {
101101 $wgOut->addHTML( '<li class="mw-unwatch-invalid">' . wfMsg( 'iteminvalidname', htmlspecialchars($one) ) . "</li>\n" );
Index: branches/liquidthreads/includes/DefaultSettings.php
@@ -203,6 +203,10 @@
204204 * thumbScriptUrl The URL for thumb.php (optional, not recommended)
205205 * transformVia404 Whether to skip media file transformation on parse and rely on a 404
206206 * handler instead.
 207+ * initialCapital Equivalent to $wgCapitalLinks, determines whether filenames implicitly
 208+ * start with a capital letter. The current implementation may give incorrect
 209+ * description page links when the local $wgCapitalLinks and initialCapital
 210+ * are mismatched.
207211 *
208212 * These settings describe a foreign MediaWiki installation. They are optional, and will be ignored
209213 * for local repositories:
Index: branches/liquidthreads/StartProfiler.php
@@ -1,24 +1,22 @@
22 <?php
33
4 -#require_once( './includes/ProfilerStub.php' );
 4+require_once( dirname(__FILE__).'/includes/ProfilerStub.php' );
55
66 /**
77 * To use a profiler, delete the line above and add something like this:
88 *
9 - * require_once( './includes/Profiler.php' );
 9+ * require_once( dirname(__FILE__).'/includes/Profiler.php' );
1010 * $wgProfiler = new Profiler;
1111 *
1212 * Or for a sampling profiler:
1313 * if ( !mt_rand( 0, 100 ) ) {
14 - * require_once( './includes/Profiler.php' );
 14+ * require_once( dirname(__FILE__).'/includes/Profiler.php' );
1515 * $wgProfiler = new Profiler;
1616 * } else {
17 - * require_once( './includes/ProfilerStub.php' );
 17+ * require_once( dirname(__FILE__).'/includes/ProfilerStub.php' );
1818 * }
1919 *
2020 * Configuration of the profiler output can be done in LocalSettings.php
2121 */
22 -require_once( dirname(__FILE__).'/includes/Profiler.php' );
23 -$wgProfiler = new Profiler;
2422
2523 ?>
Index: branches/liquidthreads/config/index.php
@@ -968,7 +968,7 @@
969969 /* Write out the config file now that all is well */
970970 print "<li style=\"list-style: none\">\n";
971971 print "<p>Creating LocalSettings.php...</p>\n\n";
972 - $localSettings = "<" . "?php$endl$local$endl\r\n";
 972+ $localSettings = "<" . "?php$endl$local";
973973 // Fix up a common line-ending problem (due to CVS on Windows)
974974 $localSettings = str_replace( "\r\n", "\n", $localSettings );
975975 $f = fopen( "LocalSettings.php", 'xt' );
Index: branches/liquidthreads/RELEASE-NOTES
@@ -54,6 +54,7 @@
5555 * (bug 7691) Deletion log now shown when creating a new article, following
5656 MediaWiki:Noarticletext(anon) or MediaWiki:Newarticletext(anon).
5757 current user.
 58+* Added variables 'wgRestrictionEdit' and 'wgRestrictionMove' for JS to header
5859
5960 == Bugfixes since 1.10 ==
6061
@@ -107,6 +108,8 @@
108109 * Add Google Wireless Transcoder to the Unicode editing blacklist
109110 * (bug 10083) Fix for Special:Version breakage on PHP 5.2 with some hooks
110111 * (bug 3624) TeX: \ker, \hom, \arg, \dim treated like \sin & \cos
 112+* (bug 10132, 10134) Restore back-compatibility Image::imageUrl() function
 113+* (bug 10113) Fix double-click for view source on protected pages
111114
112115
113116 == MediaWiki API changes since 1.10 ==
@@ -166,6 +169,7 @@
167170 * Burmese (my)
168171 * Norwegian (no)
169172 * Polish (pl)
 173+* Portuguese (pt)
170174 * Russian (ru)
171175 * Slovak (sk)
172176 * Shona (sn)
Index: branches/liquidthreads/languages/messages/MessagesZh_classical.php
@@ -467,7 +467,8 @@
468468
469469 禁者$1也,因''$2''故。
470470
471 -終止之時為:$6
 471+終止之時為:$6<br />
 472+見禁之人:$7
472473
473474 存惑可詢$1,或[[{{ns:project}}:Administrators|有秩]],[[Special:Preferences|簿註]]無驛則信不遣。
474475 另,子IP為$3,其簿名為#$5。詢時切附之。",
@@ -1006,13 +1007,17 @@
10071008 'sp-newimages-showfrom' => '賞新圖,自$1',
10081009
10091010 # What links here
1010 -'whatlinkshere' => '何通此',
1011 -'notargettitle' => '無向',
1012 -'linklistsub' => '(表通)',
1013 -'linkshere' => "下文通'''[[:$1]]''':",
1014 -'nolinkshere' => "無頁通'''[[:$1]]'''.",
1015 -'isredirect' => '導',
1016 -'istemplate' => '含',
 1011+'whatlinkshere' => '何通此',
 1012+'notargettitle' => '無向',
 1013+'linklistsub' => '(表通)',
 1014+'linkshere' => "下文通'''[[:$1]]''':",
 1015+'nolinkshere' => "無頁通'''[[:$1]]'''.",
 1016+'nolinkshere-ns' => "名集中無頁通'''[[:$1]]'''.",
 1017+'isredirect' => '導',
 1018+'istemplate' => '含',
 1019+'whatlinkshere-prev' => '前$1通',
 1020+'whatlinkshere-next' => '次$1通',
 1021+'whatlinkshere-links' => '← 通',
10171022
10181023 # Block/unblock
10191024 'blockip' => '禁簿',
Index: branches/liquidthreads/languages/messages/MessagesZh_cn.php
@@ -522,7 +522,8 @@
523523
524524 这次查封是由$1所封的。当中的原因是''$2''。
525525
526 -这次查封的到期时间是:$6
 526+这次查封的到期时间是:$6<br />
 527+对于被查封者:$7
527528
528529 你可以联络$1或者其他的[[{{MediaWiki:grouppage-sysop}}|管理员]],讨论这次查封。
529530
@@ -1401,9 +1402,9 @@
14021403 'nolinkshere-ns' => '在所选的名字空间内没有页面链接到[[:$1]]。',
14031404 'isredirect' => '重定向页',
14041405 'istemplate' => '包含',
1405 -'whatlinkshere-links' => '(←链入页面)',
14061406 'whatlinkshere-prev' => '前$1个',
14071407 'whatlinkshere-next' => '后$1个',
 1408+'whatlinkshere-links' => '←链入',
14081409
14091410 # Block/unblock
14101411 'blockip' => '查封IP地址',
Index: branches/liquidthreads/languages/messages/MessagesId.php
@@ -643,7 +643,7 @@
644644 'eauthentsent' => 'Sebuah surat elektronik untuk konfirmasi telah dikirim ke alamat surat elektronik Anda. Anda harus mengikuti instruksi di dalam surat elektronik tersebut untuk melakukan konfirmasi bahwa alamat tersebut adalah benar kepunyaan Anda. {{SITENAME}} tidak akan mengaktifkan fitur surat elektronik jika langkah ini belum dilakukan.',
645645 'throttled-mailpassword' => 'Suatu pengingat kata sandi telah dikirimkan dalam $1 jam terakhir. Untuk menghindari penyalahgunaan, hanya satu kata sandi yang akan dikirimkan setiap $1 jam.',
646646 'mailerror' => 'Kesalahan dalam mengirimkan surat-e: $1',
647 -'acct_creation_throttle_hit' => 'Maaf, Anda telah membuat $1 akun. Anda tidak dapat membuat akun lagi.',
 647+'acct_creation_throttle_hit' => 'Alamat IP yang Anda gunakan telah membuat $1 akun dalam 24 jam terakhir, jumlah maksimum pembuatan akun yang diizinkan. Untuk sementara waktu pengguna dari alamat IP ini tidak bisa lagi membuat akun.',
648648 'emailauthenticated' => 'Alamat surat-e Anda telah dikonfirmasi pada $1.',
649649 'emailnotauthenticated' => 'Alamat surat-e Anda belum dikonfirmasi. Sebelum dikonfirmasi Anda tidak bisa menggunakan fitur surat elektronik.',
650650 'noemailprefs' => 'Anda harus memasukkan suatu alamat surat-e untuk dapat menggunakan fitur ini.',
@@ -706,7 +706,7 @@
707707
708708 Blokir dilakukan oleh $1. Alasan yang diberikan adalah ''$2''.
709709
710 -Blokir kadaluwarsa pada: $6
 710+Blokir kadaluwarsa pada: $6<br />
711711 Sasaran pemblokiran: $7
712712
713713 Anda dapat menghubungi $1 atau [[{{MediaWiki:grouppage-sysop}}|pengurus lainnya]] untuk membicarakan hal ini.
Index: branches/liquidthreads/languages/messages/MessagesZh_tw.php
@@ -501,7 +501,8 @@
502502
503503 這次查封是由$1所封的。當中的原因是''$2''。
504504
505 -這次查封的到期時間是:$6
 505+這次查封的到期時間是:$6<br />
 506+對於被查封者:$7
506507
507508 你可以聯絡$1或者其他的[[{{MediaWiki:grouppage-sysop}}|管理員]],討論這次查封。
508509
@@ -1378,9 +1379,9 @@
13791380 'nolinkshere-ns' => '在所選的名字空間內沒有頁面鏈接到[[:$1]]。',
13801381 'isredirect' => '重定向頁',
13811382 'istemplate' => '包含',
1382 -'whatlinkshere-links' => '(← 鏈入頁面)',
13831383 'whatlinkshere-prev' => '前$1個',
13841384 'whatlinkshere-next' => '後$1個',
 1385+'whatlinkshere-links' => '← 鏈入',
13851386
13861387 # Block/unblock
13871388 'blockip' => '查封IP地址',
Index: branches/liquidthreads/languages/messages/MessagesDa.php
@@ -364,9 +364,9 @@
365365 'ok' => 'OK',
366366 'pagetitle' => '$1 - {{SITENAME}}',
367367 'retrievedfrom' => 'Hentet fra "$1"',
368 -'youhavenewmessages' => 'Du har $2 på din $1.',
 368+'youhavenewmessages' => 'Du har $1 ($2).',
369369 'newmessageslink' => 'nye beskeder',
370 -'newmessagesdifflink' => 'sidste ændring',
 370+'newmessagesdifflink' => 'ændringer siden sidste visning',
371371 'editsection' => 'redigér',
372372 'editold' => 'redigér',
373373 'editsectionhint' => 'Rediger afsnit: $1',
Index: branches/liquidthreads/languages/messages/MessagesDe.php
@@ -604,6 +604,7 @@
605605 *Sperrgrund: $2
606606 *Sperrende: $6
607607 *IP-Adresse: $3
 608+*Sperre betrifft: $7
608609 *Sperr-ID: #$5
609610 </div>',
610611 'autoblockedtext' => 'Ihre IP-Adresse wurde automatisch gesperrt, da sie von einem anderen Benutzer genutzt wurde, der durch $1 gesperrt wurde.
Index: branches/liquidthreads/languages/messages/MessagesZh_yue.php
@@ -596,7 +596,8 @@
597597
598598 呢次封鎖係由$1所封嘅。當中嘅原因係''$2''。
599599
600 -呢次封鎖嘅到期時間係:$6
 600+呢次封鎖嘅到期時間係:$6<br />
 601+對於被封鎖者:$7
601602
602603 你可以聯絡 $1 或者其他嘅[[{{MediaWiki:grouppage-sysop}}|管理員]],討論呢次封鎖。
603604
@@ -1515,7 +1516,7 @@
15161517 'istemplate' => '包含',
15171518 'whatlinkshere-prev' => '前$1版',
15181519 'whatlinkshere-next' => '後$1版',
1519 -'whatlinkshere-links' => '(← 連結)',
 1520+'whatlinkshere-links' => '← 連結',
15201521
15211522 # Block/unblock IP
15221523 #
Index: branches/liquidthreads/languages/messages/MessagesPt.php
@@ -46,57 +46,28 @@
4747 'chick' => 'Chick'
4848 );
4949
50 -# Note to translators:
51 -# Please include the English words as synonyms. This allows people
52 -# from other wikis to contribute more easily.
53 -#
54 -$magicWords = array(
55 -# ID CASE SYNONYMS
56 - 'redirect' => array( 0, '#REDIRECT', '#redir' ),
57 - 'notoc' => array( 0, '__NOTOC__' ),
58 - 'forcetoc' => array( 0, '__FORCETOC__' ),
59 - 'toc' => array( 0, '__TOC__' ),
60 - 'noeditsection' => array( 0, '__NOEDITSECTION__' ),
61 - 'start' => array( 0, '__START__' ),
62 - 'currentmonth' => array( 1, 'CURRENTMONTH' ),
63 - 'currentmonthname' => array( 1, 'CURRENTMONTHNAME' ),
64 - 'currentmonthnamegen' => array( 1, 'CURRENTMONTHNAMEGEN' ),
65 - 'currentmonthabbrev' => array( 1, 'CURRENTMONTHABBREV' ),
66 - 'currentday' => array( 1, 'CURRENTDAY' ),
67 - 'currentdayname' => array( 1, 'CURRENTDAYNAME' ),
68 - 'currentyear' => array( 1, 'CURRENTYEAR' ),
69 - 'currenttime' => array( 1, 'CURRENTTIME' ),
70 - 'numberofarticles' => array( 1, 'NUMBEROFARTICLES' ),
71 - 'numberoffiles' => array( 1, 'NUMBEROFFILES' ),
72 - 'pagename' => array( 1, 'PAGENAME' ),
73 - 'pagenamee' => array( 1, 'PAGENAMEE' ),
74 - 'namespace' => array( 1, 'NAMESPACE' ),
75 - 'msg' => array( 0, 'MSG:' ),
76 - 'subst' => array( 0, 'SUBST:' ),
77 - 'msgnw' => array( 0, 'MSGNW:' ),
78 - 'img_thumbnail' => array( 1, 'thumbnail', 'thumb' ),
79 - 'img_manualthumb' => array( 1, 'thumbnail=$1', 'thumb=$1'),
80 - 'img_right' => array( 1, 'right', 'direita' ),
81 - 'img_left' => array( 1, 'left', 'esquerda' ),
82 - 'img_none' => array( 1, 'none', 'nenhum' ),
83 - 'img_width' => array( 1, '$1px' ),
84 - 'img_center' => array( 1, 'center', 'centre' ),
85 - 'img_framed' => array( 1, 'framed', 'enframed', 'frame' ),
86 - 'img_page' => array( 1, 'page=$1', 'page $1' ),
87 - 'int' => array( 0, 'INT:' ),
88 - 'sitename' => array( 1, 'SITENAME' ),
89 - 'ns' => array( 0, 'NS:' ),
90 - 'localurl' => array( 0, 'LOCALURL:' ),
91 - 'localurle' => array( 0, 'LOCALURLE:' ),
92 - 'server' => array( 0, 'SERVER' ),
93 - 'servername' => array( 0, 'SERVERNAME' ),
94 - 'scriptpath' => array( 0, 'SCRIPTPATH' ),
95 - 'grammar' => array( 0, 'GRAMMAR:' ),
96 - 'notitleconvert' => array( 0, '__NOTITLECONVERT__', '__NOTC__'),
97 - 'nocontentconvert' => array( 0, '__NOCONTENTCONVERT__', '__NOCC__'),
98 - 'currentweek' => array( 1, 'CURRENTWEEK' ),
99 - 'currentdow' => array( 1, 'CURRENTDOW' ),
100 - 'revisionid' => array( 1, 'REVISIONID' ),
 50+/**
 51+ * The date format to use for generated dates in the user interface.
 52+ * This may be one of the above date preferences, or the special value
 53+ * "dmy or mdy", which uses mdy if $wgAmericanDates is true, and dmy
 54+ * if $wgAmericanDates is false.
 55+ */
 56+$defaultDateFormat = 'dmy';
 57+
 58+/**
 59+ * These are formats for dates generated by MediaWiki (as opposed to the wikitext
 60+ * DateFormatter). Documentation for the format string can be found in
 61+ * Language.php, search for sprintfDate.
 62+ *
 63+ * This array is automatically inherited by all subclasses. Individual keys can be
 64+ * overridden.
 65+ */
 66+$dateFormats = array(
 67+
 68+ 'dmy time' => 'H\hi\m\i\n',
 69+ 'dmy date' => 'j \d\e F \d\e Y',
 70+ 'dmy both' => 'H\hi\m\i\n \d\e j \d\e F \d\e Y',
 71+
10172 );
10273
10374 $separatorTransformTable = array(',' => ' ', '.' => ',' );
@@ -556,7 +527,8 @@
557528
558529 O bloqueio foi realizado por $1. O motivo apresentado foi \'\'$2\'\'.
559530
560 -Expiração do bloqueio: $6
 531+Expiração do bloqueio: $6<br />
 532+Destino do bloqueio: $7
561533
562534 Você pode contactar $1 ou outro [[{{MediaWiki:grouppage-sysop}}|administrador]] para discutir sobre o bloqueio.
563535
@@ -730,7 +702,7 @@
731703
732704 Outros administradores nesta wiki continuarão a poder aceder ao conteúdo escondido e restaurá-lo através desta mesma ''interface'', a menos que uma restrição adicional seja definida.",
733705 'revdelete-legend' => 'Atribuir restrições de revisões:',
734 -'revdelete-hide-text' => 'Esconder texto de revisão',
 706+'revdelete-hide-text' => 'Ocultar texto da edição',
735707 'revdelete-hide-name' => 'Ocultar acção e alvo',
736708 'revdelete-hide-comment' => 'Esconder comentário de edição',
737709 'revdelete-hide-user' => 'Esconder nome de utilizador/IP do editor',
@@ -739,7 +711,7 @@
740712 'revdelete-hide-image' => 'Ocultar conteúdos do ficheiro',
741713 'revdelete-unsuppress' => 'Remover restrições das edições restauradas',
742714 'revdelete-log' => 'Comentário de registo:',
743 -'revdelete-submit' => 'Aplicar a revisões seleccionadas',
 715+'revdelete-submit' => 'Aplicar à edição seleccionada',
744716 'revdelete-logentry' => 'modificada visibilidade de revisão para [[$1]]',
745717 'logdelete-logentry' => 'alterada visibilidade de eventos para [[$1]]',
746718 'revdelete-logaction' => '$1 {{PLURAL:$1|edição definida|edições definidas}} como $2',
@@ -838,7 +810,7 @@
839811 'contextchars' => 'Contexto por linha:',
840812 'stubthreshold' => 'Variação para a visualização de esboços:',
841813 'recentchangesdays' => 'Dias a serem exibidos nas Mudanças recentes:',
842 -'recentchangescount' => 'Número de artigos nas mudanças recentes:',
 814+'recentchangescount' => 'Número de edições a serem exibidas nas Mudanças recentes:',
843815 'savedprefs' => 'As suas preferências foram salvas.',
844816 'timezonelegend' => 'Fuso horário',
845817 'timezonetext' => 'Número de horas que o seu horário local difere do horário do servidor (UTC).',
@@ -905,7 +877,7 @@
906878 'show' => 'Mostrar',
907879 'minoreditletter' => 'm',
908880 'newpageletter' => 'N',
909 -'boteditletter' => 'r',
 881+'boteditletter' => 'b',
910882 'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 utilizador|$1 utilizadores}} a vigiar]',
911883 'rc_categories' => 'Limite para categorias (separar com "|")',
912884 'rc_categories_any' => 'Qualquer',
@@ -1107,7 +1079,7 @@
11081080 'wantedcategories' => 'Categorias pedidas',
11091081 'wantedpages' => 'Páginas pedidas',
11101082 'mostlinked' => 'Páginas com mais afluentes',
1111 -'mostlinkedcategories' => 'Categorias com mais afluentes',
 1083+'mostlinkedcategories' => 'Categorias com mais membros',
11121084 'mostcategories' => 'Páginas de conteúdo com mais categorias',
11131085 'mostimages' => 'Imagens com mais afluentes',
11141086 'mostrevisions' => 'Páginas de conteúdo com mais revisões',
@@ -1134,7 +1106,7 @@
11351107 'move' => 'Mover',
11361108 'movethispage' => 'Mover esta página',
11371109 'unusedimagestext' => '<p>Por favor, note que outros websites podem apontar para uma imagem através de um URL directamente e, por isso, podem estar a não aparecer aqui, mesmo estando em uso.</p>',
1138 -'unusedcategoriestext' => 'As seguintes categorias existem embora nenhum artigo ou categoria faça uso delas.',
 1110+'unusedcategoriestext' => 'As seguintes categorias existem, embora nenhuma página ou categoria faça uso delas.',
11391111
11401112 # Book sources
11411113 'booksources' => 'Fontes de livros',
@@ -1158,7 +1130,7 @@
11591131 'log-search-legend' => 'Pesquisar nos registos',
11601132 'log-search-submit' => 'Ir',
11611133 'alllogstext' => 'Exposição combinada de todos registos disponíveis no wiki {{SITENAME}}.
1162 -Você pode diminuir a lista escolhendo um tipo de registo, um nome de utilizar, ou uma página afectada.',
 1134+Você pode diminuir a lista escolhendo um tipo de registo, um nome de utilizador, ou uma página afectada.',
11631135 'logempty' => 'Nenhum item idêntico no registo.',
11641136 'log-title-wildcard' => 'Procurar por títulos que sejam iniciados com o seguinte texto',
11651137
@@ -1296,7 +1268,7 @@
12971269 # Delete/protect/revert
12981270 'deletepage' => 'Eliminar página',
12991271 'confirm' => 'Confirmar',
1300 -'excontent' => "conteúdo era: '$1'",
 1272+'excontent' => "o conteúdo era: '$1'",
13011273 'excontentauthor' => "o conteúdo era: '$1' (e o único editor era '[[{{ns:special}}:Contributions/$2|$2]]')",
13021274 'exbeforeblank' => "o conteúdo antes de esvaziar era: '$1'",
13031275 'exblank' => 'página esvaziada',
@@ -1325,7 +1297,7 @@
13261298
13271299 A última edição foi de [[{{ns:user}}:$3|$3]] ([[{{ns:user_talk}}:$3|Discussão]]).',
13281300 'editcomment' => 'O sumário de edição era: "<i>$1</i>".', # only shown if there is an edit comment
1329 -'revertpage' => 'Revertidas edições por [[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) para a última versão por [[User:$1|$1]]',
 1301+'revertpage' => 'Revertidas edições por [[Special:Contributions/$2|$2]] ([[User talk:$2|disc]]) para a última versão por [[User:$1|$1]]',
13301302 'sessionfailure' => 'Foram detectados problemas com a sua sessão;
13311303 Esta acção foi cancelada como medida de protecção contra a intercepção de sessões.
13321304 Experimente usar o botão "Voltar" e refrescar a página de onde veio e tente novamente.',
@@ -1347,8 +1319,7 @@
13481320 'confirmunprotect' => 'Confirmar desprotecção',
13491321 'unprotectcomment' => 'Motivo de desprotecção',
13501322 'protect-unchain' => 'Desbloquear permissões de moção',
1351 -'protect-text' => 'Pode ver e alterar aqui, o nível de protecção para a página <strong>$1</strong>.
1352 -Por favor tenha a certeza que segue as [[{{ns:project}}:Página protegida|normas do projecto]].',
 1323+'protect-text' => 'Você pode, nesta página, alterar o nível de proteção para <strong>$1</strong>.',
13531324 'protect-locked-blocked' => 'Você não poderá alterar os níveis de proteção enquanto estiver bloqueado. Esta é a configuração atual para a página <strong>$1</strong>:',
13541325 'protect-locked-dblock' => 'Não é possível alterar os níveis de proteção, uma vez que a base de dados se encontra trancada.
13551326 Esta é a configuração atual para a página <strong>$1</strong>:',
@@ -1392,8 +1363,7 @@
13931364 that you don't have permission to view will not be restored.",
13941365 'undeletehistorynoadmin' => 'Esta página foi eliminada. O motivo de eliminação é apresentado no súmario abaixo, junto dos detalhes do utilizador que editou esta página antes de eliminar. O texto actual destas edições eliminadas encontra-se agora apenas disponível para administradores.',
13951366 'undelete-revision' => 'A edição $1 de $2 foi eliminada:',
1396 -'undeleterevision-missing' => 'Invalid or missing revision. You may have a bad link, or the
1397 -revision may have been restored or removed from the archive.',
 1367+'undeleterevision-missing' => 'Edição inválida ou não encontrada. Talvez você esteja com um link incorrecto ou talvez a edição foi restaurada ou removida dos arquivos.',
13981368 'undeletebtn' => 'Restaurar',
13991369 'undeletereset' => 'Limpar',
14001370 'undeletecomment' => 'Comentário:',
@@ -1438,17 +1408,18 @@
14391409 'sp-newimages-showfrom' => 'Mostrar novas imagens começando de $1',
14401410
14411411 # What links here
1442 -'whatlinkshere' => 'Páginas afluentes',
1443 -'notargettitle' => 'Sem alvo',
1444 -'notargettext' => 'Você não especificou uma página alvo ou um utilizador para executar esta função.',
1445 -'linklistsub' => '(Lista de ligações)',
1446 -'linkshere' => "As seguintes páginas possuem ligações para '''[[:$1]]''':",
1447 -'nolinkshere' => "Não existem ligações para '''[[:$1]]'''.",
1448 -'nolinkshere-ns' => "Não há links para '''[[:$1]]''' no espaço nominal selecionado.",
1449 -'isredirect' => 'página de redireccionamento',
1450 -'istemplate' => 'inclusão',
1451 -'whatlinkshere-prev' => '{{PLURAL:$1|anterior|$1 anteriores}}',
1452 -'whatlinkshere-next' => '{{PLURAL:$1|próximo|próximos $1}}',
 1412+'whatlinkshere' => 'Páginas afluentes',
 1413+'notargettitle' => 'Sem alvo',
 1414+'notargettext' => 'Você não especificou uma página alvo ou um utilizador para executar esta função.',
 1415+'linklistsub' => '(Lista de ligações)',
 1416+'linkshere' => "As seguintes páginas possuem ligações para '''[[:$1]]''':",
 1417+'nolinkshere' => "Não existem ligações para '''[[:$1]]'''.",
 1418+'nolinkshere-ns' => "Não há links para '''[[:$1]]''' no espaço nominal selecionado.",
 1419+'isredirect' => 'página de redireccionamento',
 1420+'istemplate' => 'inclusão',
 1421+'whatlinkshere-prev' => '{{PLURAL:$1|anterior|$1 anteriores}}',
 1422+'whatlinkshere-next' => '{{PLURAL:$1|próximo|próximos $1}}',
 1423+'whatlinkshere-links' => '← links',
14531424
14541425 # Block/unblock
14551426 'blockip' => 'Bloquear utilizador',
@@ -1826,20 +1797,12 @@
18271798 'exif-orientation' => 'Orientação',
18281799 'exif-samplesperpixel' => 'Número de componentes',
18291800 'exif-planarconfiguration' => 'Arranjo de dados',
1830 -'exif-ycbcrsubsampling' => 'Subsampling ratio of Y to C',
18311801 'exif-ycbcrpositioning' => 'Posicionamento Y e C',
18321802 'exif-xresolution' => 'Resolução horizontal',
18331803 'exif-yresolution' => 'Resolução vertical',
1834 -'exif-resolutionunit' => 'Unit of X and Y resolution',
18351804 'exif-stripoffsets' => 'Localização de dados da imagem',
1836 -'exif-rowsperstrip' => 'Number of rows per strip',
1837 -'exif-stripbytecounts' => 'Bytes per compressed strip',
1838 -'exif-jpeginterchangeformat' => 'Offset to JPEG SOI',
18391805 'exif-jpeginterchangeformatlength' => 'Bytes de dados JPEG',
18401806 'exif-transferfunction' => 'Função de transferência',
1841 -'exif-whitepoint' => 'White point chromaticity',
1842 -'exif-primarychromaticities' => 'Chromaticities of primarities',
1843 -'exif-ycbcrcoefficients' => 'Color space transformation matrix coefficients',
18441807 'exif-referenceblackwhite' => 'Par de valores de referência de preto e branco',
18451808 'exif-datetime' => 'Data e hora de modificação do ficheiro',
18461809 'exif-imagedescription' => 'Título',
@@ -1860,15 +1823,11 @@
18611824 'exif-relatedsoundfile' => 'Ficheiro áudio relacionado',
18621825 'exif-datetimeoriginal' => 'Data e hora de geração de dados',
18631826 'exif-datetimedigitized' => 'Data e hora de digitalização',
1864 -'exif-subsectime' => 'DateTime subseconds',
1865 -'exif-subsectimeoriginal' => 'DateTimeOriginal subseconds',
1866 -'exif-subsectimedigitized' => 'DateTimeDigitized subseconds',
18671827 'exif-exposuretime' => 'Tempo de exposição',
18681828 'exif-exposuretime-format' => '$1 seg ($2)',
18691829 'exif-fnumber' => 'Número F',
18701830 'exif-fnumber-format' => 'f/$1',
18711831 'exif-exposureprogram' => 'Programa de exposição',
1872 -'exif-spectralsensitivity' => 'Spectral sensitivity',
18731832 'exif-isospeedratings' => 'Taxa de velocidade ISO',
18741833 'exif-oecf' => 'Factor optoelectrónico de conversão.',
18751834 'exif-shutterspeedvalue' => 'Velocidade do obturador',
@@ -1877,33 +1836,24 @@
18781837 'exif-exposurebiasvalue' => 'Polarização de exposição',
18791838 'exif-maxaperturevalue' => 'Abertura máxima',
18801839 'exif-subjectdistance' => 'Distância do sujeito',
1881 -'exif-meteringmode' => 'Metering mode',
18821840 'exif-lightsource' => 'Fonte de luz',
18831841 'exif-flash' => 'Flash',
18841842 'exif-focallength' => 'Comprimento de foco da lente',
18851843 'exif-focallength-format' => '$1 mm',
18861844 'exif-subjectarea' => 'Área de sujeito',
18871845 'exif-flashenergy' => 'Energia do flash',
1888 -'exif-spatialfrequencyresponse' => 'Spatial frequency response',
1889 -'exif-focalplanexresolution' => 'Focal plane X resolution',
1890 -'exif-focalplaneyresolution' => 'Focal plane Y resolution',
1891 -'exif-focalplaneresolutionunit' => 'Focal plane resolution unit',
18921846 'exif-subjectlocation' => 'Localização de sujeito',
18931847 'exif-exposureindex' => 'Índice de exposição',
18941848 'exif-sensingmethod' => 'Método de sensação',
18951849 'exif-filesource' => 'Fonte do ficheiro',
18961850 'exif-scenetype' => 'Tipo de cena',
18971851 'exif-cfapattern' => 'padrão CFA',
1898 -'exif-customrendered' => 'Custom image processing',
18991852 'exif-exposuremode' => 'Modo de exposição',
1900 -'exif-whitebalance' => 'White Balance',
19011853 'exif-digitalzoomratio' => 'Proporção de zoom digital',
1902 -'exif-focallengthin35mmfilm' => 'Focal length in 35 mm film',
19031854 'exif-scenecapturetype' => 'Tipo de captura de cena',
19041855 'exif-gaincontrol' => 'Controlo de cena',
19051856 'exif-contrast' => 'Contraste',
19061857 'exif-saturation' => 'Saturação',
1907 -'exif-sharpness' => 'Sharpness',
19081858 'exif-devicesettingdescription' => 'Descrição das configurações do dispositivo',
19091859 'exif-subjectdistancerange' => 'Distância de alcance do sujeito',
19101860 'exif-imageuniqueid' => 'Identificação única da imagem',
@@ -1931,7 +1881,6 @@
19321882 'exif-gpsdestlongituderef' => 'Referência para a longitude do destino',
19331883 'exif-gpsdestlongitude' => 'Longitude do destino',
19341884 'exif-gpsdestbearingref' => 'Reference for bearing of destination',
1935 -'exif-gpsdestbearing' => 'Bearing of destination',
19361885 'exif-gpsdestdistanceref' => 'Referência de distância para o destino',
19371886 'exif-gpsdestdistance' => 'Distância para o destino',
19381887 'exif-gpsprocessingmethod' => 'Nome do método de processamento do GPS',
@@ -1948,15 +1897,6 @@
19491898
19501899 'exif-unknowndate' => 'Data desconhecida',
19511900
1952 -'exif-orientation-1' => 'Normal', # 0th row: top; 0th column: left
1953 -'exif-orientation-2' => 'Flipped horizontally', # 0th row: top; 0th column: right
1954 -'exif-orientation-3' => 'Rotated 180°', # 0th row: bottom; 0th column: right
1955 -'exif-orientation-4' => 'Flipped vertically', # 0th row: bottom; 0th column: left
1956 -'exif-orientation-5' => 'Rotated 90° CCW and flipped vertically', # 0th row: left; 0th column: top
1957 -'exif-orientation-6' => 'Rotated 90° CW', # 0th row: right; 0th column: top
1958 -'exif-orientation-7' => 'Rotated 90° CW and flipped vertically', # 0th row: right; 0th column: bottom
1959 -'exif-orientation-8' => 'Rotated 90° CCW', # 0th row: left; 0th column: bottom
1960 -
19611901 'exif-planarconfiguration-1' => 'formato irregular',
19621902 'exif-planarconfiguration-2' => 'formato plano',
19631903
@@ -1976,10 +1916,6 @@
19771917
19781918 'exif-exposureprogram-0' => 'Não definido',
19791919 'exif-exposureprogram-1' => 'Manual',
1980 -'exif-exposureprogram-2' => 'Programa normal',
1981 -'exif-exposureprogram-3' => 'Aperture priority',
1982 -'exif-exposureprogram-4' => 'Shutter priority',
1983 -'exif-exposureprogram-5' => 'Creative program (biased toward depth of field)',
19841920 'exif-exposureprogram-6' => 'Programa de movimento (tende a velocidade de disparo mais rápida)',
19851921 'exif-exposureprogram-7' => 'Modo de retrato (para fotos em <i>closeup</i> com o fundo fora de foco)',
19861922 'exif-exposureprogram-8' => 'Modo de paisagem (para fotos de paisagem com o fundo em foco)',
@@ -2001,7 +1937,6 @@
20021938
20031939 'exif-exposuremode-0' => 'Exposição automática',
20041940 'exif-exposuremode-1' => 'Exposição manual',
2005 -'exif-exposuremode-2' => 'Auto bracket',
20061941
20071942 'exif-scenecapturetype-0' => 'Padrão',
20081943 'exif-scenecapturetype-1' => 'Paisagem',
@@ -2152,6 +2087,10 @@
21532088 'livepreview-error' => 'Falha ao conectar: $1 "$2"
21542089 Tente a previsão comum.',
21552090
 2091+# Friendlier slave lag warnings
 2092+'lag-warn-normal' => 'Possivelmente as alterações que sejam mais recentes do que $1 segundos não serão exibidas nesta lista.',
 2093+'lag-warn-high' => 'Devido a sérios problemas de latência no servidor da base de dados, as alterações mais recentes que $1 segundos poderão não ser exibidas nesta lista.',
 2094+
21562095 );
21572096
21582097 ?>
Index: branches/liquidthreads/languages/messages/MessagesFa.php
@@ -2,6 +2,7 @@
33 /** Persian (فارسی)
44 *
55 * @addtogroup Language
 6+ * Maintainer: Hojjat - huji.odp@gmail.com
67 */
78 $skinNames = array(
89 'standard' => 'استاندارد',
@@ -117,283 +118,324 @@
118119 'ISO 8601 date' => 'xnY-xnm-xnd',
119120 'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns',
120121 );
 122+
 123+$magicWords = array(
 124+ 'redirect' => array( 0, "#تغییرمسیر", "#REDIRECT" ),
 125+ 'notoc' => array( 0, "__بی‌فهرست__", "__NOTOC__" ),
 126+ 'forcetoc' => array( 0, "__بافهرست__", "__FORCETOC__" ),
 127+ 'toc' => array( 0, "__فهرست__", "__TOC__" ),
 128+ 'noeditsection' => array( 0, "__بی‌بخش__", "__NOEDITSECTION__" ),
 129+ 'start' => array( 0, "__آغاز__", "__START__" ),
 130+ 'currentmonth' => array( 1, "ماه", "ماه‌کنونی", "CURRENTMONTH" ),
 131+ 'currentmonthname' => array( 1, "نام_ماه", "نام‌ماه‌کنونی", "CURRENTMONTHNAME" ),
 132+ 'currentday' => array( 1, "روز", "CURRENTDAY" ),
 133+ 'currentday2' => array( 1, "روز۲", "CURRENTDAY2" ),
 134+ 'currentdayname' => array( 1, "نام‌روز", "CURRENTDAYNAME" ),
 135+ 'currentyear' => array( 1, "سال", "سال‌کنونی", "CURRENTYEAR" ),
 136+ 'currenttime' => array( 1, "زمان", "CURRENTTIME" ),
 137+ 'currenthour' => array( 1, "ساعت", "CURRENTHOUR" ),
 138+ 'localmonth' => array( 1, "ماه‌محلی", "LOCALMONTH" ),
 139+ 'localmonthname' => array( 1, "نام‌ماه‌محلی", "LOCALMONTHNAME" ),
 140+ 'localmonthabbrev' => array( 1, "اختصارماه‌محلی", "LOCALMONTHABBREV" ),
 141+ 'localday' => array( 1, "روزمحلی", "LOCALDAY" ),
 142+ 'localday2' => array( 1, "روزمحلی۲", "LOCALDAY2" ),
 143+ 'localdayname' => array( 1, "نام‌روزمحلی", "LOCALDAYNAME" ),
 144+ 'localyear' => array( 1, "سال‌محلی", "LOCALYEAR" ),
 145+ 'localtime' => array( 1, "زمان‌محلی", "LOCALTIME" ),
 146+ 'localhour' => array( 1, "ساعت‌محلی", "LOCALHOUR" ),
 147+ 'numberofpages' => array( 1, "تعدادصفحه‌ها", "تعداد_صفحه‌ها", "NUMBEROFPAGES" ),
 148+ 'numberofarticles' => array( 1, "تعدادمقاله‌ها", "تعداد_مقاله‌ها", "NUMBEROFARTICLES" ),
 149+ 'numberoffiles' => array( 1, "تعدادپرونده‌ها", "تعداد_پرونده‌ها", "NUMBEROFFILES" ),
 150+ 'numberofusers' => array( 1, "تعدادکاربران", "تعداد_کاربران", "NUMBEROFUSERS" ),
 151+ 'pagename' => array( 1, "نام‌صفحه", "PAGENAME" ),
 152+ 'pagenamee' => array( 1, "عنوان‌صفحه", "PAGENAMEE" ),
 153+ 'namespace' => array( 1, "فضاینام", "فضای_نام", "NAMESPACE" ),
 154+ 'namespacee' => array( 1, "عنوان‌فضای‌نام", "NAMESPACEE" ),
 155+ 'talkspace' => array( 1, "فضای‌بحث", "TALKSPACE" ),
 156+ 'talkspacee' => array( 1, "عنوان‌بحث", "TALKSPACEE" ),
 157+ 'fullpagename' => array( 1, "نام‌کامل‌صفحه", "FULLPAGENAME" ),
 158+ 'fullpagenamee' => array( 1, "عنوان‌کامل‌صفحه", "FULLPAGENAMEE" ),
 159+ 'subst' => array( 0, "جایگزین:", "جا:", "SUBST:" ),
 160+ 'img_thumbnail' => array( 1, "بندانگشتی", "انگشتدان", "thumbnail", "thumb" ),
 161+ 'img_manualthumb' => array( 1, "بندانگشتی=$1", "انگشتدانهای=$1", "thumbnail=$1", "thumb=$1" ),
 162+ 'img_right' => array( 1, "راست", "right" ),
 163+ 'img_left' => array( 1, "چپ", "left" ),
 164+ 'img_none' => array( 1, "هیچ", "none" ),
 165+ 'img_width' => array( 0, "$1px" ),
 166+ 'img_center' => array( 1, "وسط", "center", "centre" ),
 167+ 'img_framed' => array( 1, "قاب", "framed", "enframed", "frame" ),
 168+ 'img_page' => array( 1, "صفحه=$1", "صفحه $1", "page=$1", "page $1" ),
 169+ 'int' => array( 0, "محتوى:", "INT:" ),
 170+ 'sitename' => array( 1, "نام‌وبگاه", "SITENAME" ),
 171+ 'ns' => array( 0, "فن:", "NS:" ),
 172+ 'localurl' => array( 0, "نشانی:", "LOCALURL:" ),
 173+ 'server' => array( 0, "کارگزار", "SERVER" ),
 174+ 'servername' => array( 0, "نام‌کارگزار", "SERVERNAME" ),
 175+ 'scriptpath' => array( 0, "مسیر", "SCRIPTPATH" ),
 176+ 'currentweek' => array( 1, "هفته", "CURRENTWEEK" ),
 177+ 'currentdow' => array( 1, "روزهفته", "CURRENTDOW" ),
 178+ 'localweek' => array( 1, "هفته‌محلی", "LOCALWEEK" ),
 179+ 'revisionid' => array( 1, "نسخه", "REVISIONID" ),
 180+ 'plural' => array( 0, "جمع:", "PLURAL:" ),
 181+ 'fullurl' => array( 0, "نشانی‌کامل:", "FULLURL:" ),
 182+ 'newsectionlink' => array( 1, "__بخش‌جدید__", "__NEWSECTIONLINK__" ),
 183+ 'language' => array( 0, "#زبان:", "#LANGUAGE:" ),
 184+ 'numberofadmins' => array( 1, "تعدادمدیران", "تعداد_مدیران", "NUMBEROFADMINS" ),
 185+ 'special' => array( 0, "ویژه", "special" ),
 186+);
 187+
121188 $linkTrail = "/^([a-z]+)(.*)\$/sD"; /* This may need to be changed --RP */
122189
123190 $messages = array(
124 -# User toggles
 191+# User preference toggles
 192+'tog-underline' => 'زیر پیوندها خط کشیده شود',
 193+'tog-highlightbroken' => 'قالب‌بندی پیوندهای ناقص <a href="" class="new">به این شکل</a> (امکان دیگر: به این شکل<a href="" class="internal">؟</a>).',
 194+'tog-justify' => 'تنظیم بندها',
 195+'tog-hideminor' => 'نشان ندادن تغییرات جزئی در فهرست تغییرات اخیر',
 196+'tog-usenewrc' => 'تغییرات اخیر گسترش‌یافته (برای هر مرورگری نیست)',
 197+'tog-numberheadings' => 'شماره‌گذاری خودکار عناوین',
 198+'tog-showtoolbar' => 'نمایش نوار ابزار جعبه‌ی ویرایش',
 199+'tog-editondblclick' => 'ویرایش صفحه‌ها با دوکلیک (جاوااسکریپت)',
 200+'tog-editsection' => 'به کار انداختن ویرایش قسمت‌ها از طریق پیوندهای [ویرایش]',
 201+'tog-editsectiononrightclick' => 'به کار انداختن ویرایش قسمت‌ها با کلیک راست<br />روی عناوین قسمت‌ها (جاوااسکریپت)',
 202+'tog-showtoc' => 'نمایش فهرست مندرجات<br />(برای مقالات با بیش از ۳ سرفصل)',
 203+'tog-rememberpassword' => 'کلمه‌ی عبور برای نشست‌های بعدی بماند',
 204+'tog-editwidth' => 'عرض جعبه‌ی ویرایش کامل باشد',
 205+'tog-watchdefault' => 'افزودن صفحاتی که ویرایش می‌کند به فهرست تعقیبات',
 206+'tog-minordefault' => 'پیش‌فرض همه‌ی ویرایش‌ها «جزئی» باشد',
 207+'tog-previewontop' => 'نمایش پیش‌نمایش قبل از جعبه‌ی ویرایش و نه قبل از آن',
 208+'tog-nocache' => 'از کار انداختن حافظه‌ی نهانی صفحات',
125209
126 -'tog-underline' => "زیر پیوندها خط کشیده شود",
127 -'tog-highlightbroken' => "قالب‌بندی پیوندهای ناقص <a href=\"\" class=\"new\">به این شکل</a> (امکان دیگر: به این شکل<a href=\"\" class=\"internal\">؟</a>).",
128 -'tog-justify' => "تنظیم بندها",
129 -'tog-hideminor' => "نشان ندادن تغییرات جزئی در فهرست تغییرات اخیر",
130 -'tog-usenewrc' => "تغییرات اخیر گسترش‌یافته (برای هر مرورگری نیست)",
131 -'tog-numberheadings' => "شماره‌گذاری خودکار عناوین",
132 -'tog-showtoolbar'=>"نمایش نوار ابزار جعبه‌ی ویرایش",
133 -'tog-editondblclick' => "ویرایش صفحه‌ها با دوکلیک (جاوااسکریپت)",
134 -'tog-editsection'=>"به کار انداختن ویرایش قسمت‌ها از طریق پیوندهای [ویرایش]",
135 -'tog-editsectiononrightclick'=>"به کار انداختن ویرایش قسمت‌ها با کلیک راست<br />روی عناوین قسمت‌ها (جاوااسکریپت)",
136 -'tog-showtoc'=>"نمایش فهرست مندرجات<br />(برای مقالات با بیش از ۳ سرفصل)",
137 -'tog-rememberpassword' => "کلمه‌ی عبور برای نشست‌های بعدی بماند",
138 -'tog-editwidth' => "عرض جعبه‌ی ویرایش کامل باشد",
139 -'tog-watchdefault' => "افزودن صفحاتی که ویرایش می‌کند به فهرست تعقیبات",
140 -'tog-minordefault' => "پیش‌فرض همه‌ی ویرایش‌ها «جزئی» باشد",
141 -'tog-previewontop' => "نمایش پیش‌نمایش قبل از جعبه‌ی ویرایش و نه قبل از آن",
142 -'tog-nocache' => "از کار انداختن حافظه‌ی نهانی صفحات",
143210 # Dates
 211+'sunday' => 'یک‌شنبه',
 212+'monday' => 'دوشنبه',
 213+'tuesday' => 'سه‌شنبه',
 214+'wednesday' => 'چهارشنبه',
 215+'thursday' => 'پنجشنبه',
 216+'friday' => 'جمعه',
 217+'saturday' => 'شنبه',
 218+'january' => 'ژانویه',
 219+'february' => 'فوریه',
 220+'march' => 'مارس',
 221+'april' => 'آوریل',
 222+'may_long' => 'مه',
 223+'june' => 'ژوئن',
 224+'july' => 'ژوئیه',
 225+'august' => 'اوت',
 226+'september' => 'سپتامبر',
 227+'october' => 'اکتبر',
 228+'november' => 'نوامبر',
 229+'december' => 'دسامبر',
 230+'jan' => 'ژانویه',
 231+'feb' => 'فوریه',
 232+'mar' => 'مارس',
 233+'apr' => 'آوریل',
 234+'may' => 'مه',
 235+'jun' => 'ژوئن',
 236+'jul' => 'ژوئیه',
 237+'aug' => 'اوت',
 238+'sep' => 'سپتامبر',
 239+'oct' => 'اکتبر',
 240+'nov' => 'نوامبر',
 241+'dec' => 'دسامبر',
144242
145 -'sunday' => "یک‌شنبه",
146 -'monday' => "دوشنبه",
147 -'tuesday' => "سه‌شنبه",
148 -'wednesday' => "چهارشنبه",
149 -'thursday' => "پنجشنبه",
150 -'friday' => "جمعه",
151 -'saturday' => "شنبه",
152 -'january' => "ژانویه",
153 -'february' => "فوریه",
154 -'march' => "مارس",
155 -'april' => "آوریل",
156 -'may_long' => "مه",
157 -'june' => "ژوئن",
158 -'july' => "ژوئیه",
159 -'august' => "اوت",
160 -'september' => "سپتامبر",
161 -'october' => "اکتبر",
162 -'november' => "نوامبر",
163 -'december' => "دسامبر",
164 -'jan' => "ژانویه",
165 -'feb' => "فوریه",
166 -'mar' => "مارس",
167 -'apr' => "آوریل",
168 -'may' => "مه",
169 -'jun' => "ژوئن",
170 -'jul' => "ژوئیه",
171 -'aug' => "اوت",
172 -'sep' => "سپتامبر",
173 -'oct' => "اکتبر",
174 -'nov' => "نوامبر",
175 -'dec' => "دسامبر",
 243+# Bits of text used by many pages
 244+'categories' => 'رده‌های صفحات',
 245+'pagecategories' => 'رده‌های صفحات',
 246+'category_header' => 'مقاله‌های رده‌ی «$1»',
 247+'subcategories' => 'زیررده‌ها',
176248
177 -# Bits of text used by many pages:
178 -#
179 -'categories' => "رده‌های صفحات",
180 -'pagecategories' => "رده‌های صفحات",
181 -'category_header' => "مقاله‌های رده‌ی «$1»",
182 -'subcategories' => "زیررده‌ها",
 249+'mainpagetext' => 'نرم‌افزار ویکی با موفقیت نصب شد.',
183250
184 -'mainpage' => "صفحه‌ی اصلی",
185 -'mainpagetext' => "نرم‌افزار ویکی با موفقیت نصب شد.",
186 -'about' => "درباره",
187 -'aboutsite' => "درباره‌ی {{SITENAME}}",
188 -'aboutpage' => "{{ns:project}}:درباره",
189 -'help' => "راهنما",
190 -'helppage' => "{{ns:project}}:راهنما",
191 -'bugreports' => "گزارش اشکالات",
192 -'bugreportspage' => "{{ns:project}}:گزارش اشکالات",
193 -'sitesupport' => "کمک مالی",
194 -'faq' => "سؤالات معمول",
195 -'faqpage' => "{{ns:project}}:سؤالات معمول",
196 -'edithelp' => "راهنمای ویرایش کردن",
197 -'edithelppage' => "{{ns:project}}:چگونه_صفحات_را_ویرایش_کنیم",
198 -'cancel' => "لغو",
199 -'qbfind' => "یافتن",
200 -'qbbrowse' => "مرور",
201 -'qbedit' => "ویرایش",
202 -'qbpageoptions' => "این صفحه",
203 -'qbpageinfo' => "بافت",
204 -'qbmyoptions' => "صفحات من",
205 -'qbspecialpages' => "صفحات ویژه",
206 -'moredotdotdot' => "بیشتر...",
207 -'mypage' => "صفحه‌ی من",
208 -'mytalk' => "بحث من",
209 -'currentevents' => "وقایع کنونی",
210 -'disclaimers' => "تکذیب‌نامه‌ها",
211 -'disclaimerpage' => "{{ns:project}}:تکذیب‌نامه‌ی عمومی",
212 -'errorpagetitle' => "خطا",
213 -'returnto' => "بازگشت به $1.",
214 -'whatlinkshere' => "صفحاتی که به اینجا پیوند دارند",
215 -'help' => "راهنما",
216 -'search' => "جستجو شود",
217 -'searchbutton' => "جستجو شود",
218 -'go' => "برود",
219 -'searcharticle' => "برود",
220 -'history' => "تاریخچه‌ی صفحه",
221 -'printableversion' => "نسخه‌ی قابل چاپ",
222 -'editthispage' => "ویرایش این صفحه",
223 -'deletethispage' => "حذف این صفحه",
224 -'protectthispage' => "محافظت از این صفحه",
225 -'unprotectthispage' => "از محافظت در آوردن این صفحه",
226 -'newpage' => "صفحه‌ی جدید",
227 -'talkpage' => "بحث درباره‌ی این صفحه",
228 -'postcomment' => "نوشتن نظر",
229 -'articlepage' => "نمایش مقاله",
230 -'userpage' => "نمایش صفحه‌ی کاربر",
231 -'projectpage' => "نمایش فوق صفحه",
232 -'imagepage' => "نمایش صفحه‌ی تصویر",
233 -'viewtalkpage' => "نمایش مباحثات",
234 -'otherlanguages' => "زبان‌های دیگر",
235 -'redirectedfrom' => "(تغییر مسیر از $1)",
236 -'lastmodifiedat' => "این صفحه آخرین بار در $2, $1 تغییر کرده است.",
237 -'viewcount' => "این صفحه $1 بار دیده شده است.",
238 -'protectedpage' => "صفحه‌ی محافظت‌شده",
239 -'nbytes' => "$1 بایت",
240 -'go' => "برو",
241 -'searcharticle' => "برو",
242 -'ok' => "باشد",
243 -'retrievedfrom' => "گرفته شده از «$1»",
244 -'editsection'=>"ویرایش",
245 -'editold'=>"ویرایش",
246 -'toc' => "فهرست مندرجات",
247 -'showtoc' => "نمایش داده شود",
248 -'hidetoc' => "مخفی شود",
249 -'thisisdeleted' => "نمایش یا احیای $1؟",
250 -'restorelink' => "$1 ویرایش حذف‌شده",
 251+'about' => 'درباره',
 252+'cancel' => 'لغو',
 253+'qbfind' => 'یافتن',
 254+'qbbrowse' => 'مرور',
 255+'qbedit' => 'ویرایش',
 256+'qbpageoptions' => 'این صفحه',
 257+'qbpageinfo' => 'بافت',
 258+'qbmyoptions' => 'صفحات من',
 259+'qbspecialpages' => 'صفحات ویژه',
 260+'moredotdotdot' => 'بیشتر...',
 261+'mypage' => 'صفحه‌ی من',
 262+'mytalk' => 'بحث من',
251263
 264+'errorpagetitle' => 'خطا',
 265+'returnto' => 'بازگشت به $1.',
 266+'help' => 'راهنما',
 267+'search' => 'جستجو شود',
 268+'searchbutton' => 'جستجو شود',
 269+'go' => 'برو',
 270+'searcharticle' => 'برو',
 271+'history' => 'تاریخچه‌ی صفحه',
 272+'printableversion' => 'نسخه‌ی قابل چاپ',
 273+'editthispage' => 'ویرایش این صفحه',
 274+'deletethispage' => 'حذف این صفحه',
 275+'protectthispage' => 'محافظت از این صفحه',
 276+'unprotectthispage' => 'از محافظت در آوردن این صفحه',
 277+'newpage' => 'صفحه‌ی جدید',
 278+'talkpage' => 'بحث درباره‌ی این صفحه',
 279+'postcomment' => 'نوشتن نظر',
 280+'articlepage' => 'نمایش مقاله',
 281+'userpage' => 'نمایش صفحه‌ی کاربر',
 282+'projectpage' => 'نمایش فوق صفحه',
 283+'imagepage' => 'نمایش صفحه‌ی تصویر',
 284+'viewtalkpage' => 'نمایش مباحثات',
 285+'otherlanguages' => 'زبان‌های دیگر',
 286+'redirectedfrom' => '(تغییر مسیر از $1)',
 287+'lastmodifiedat' => 'این صفحه آخرین بار در $2, $1 تغییر کرده است.', # $1 date, $2 time
 288+'viewcount' => 'این صفحه $1 بار دیده شده است.',
 289+'protectedpage' => 'صفحه‌ی محافظت‌شده',
 290+
 291+# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
 292+'aboutsite' => 'درباره‌ی {{SITENAME}}',
 293+'aboutpage' => '{{ns:project}}:درباره',
 294+'bugreports' => 'گزارش اشکالات',
 295+'bugreportspage' => '{{ns:project}}:گزارش اشکالات',
 296+'copyrightpagename' => 'حق تکثیر {{SITENAME}}',
 297+'copyrightpage' => '{{ns:project}}:حق_تکثیر',
 298+'currentevents' => 'وقایع کنونی',
 299+'disclaimers' => 'تکذیب‌نامه‌ها',
 300+'disclaimerpage' => '{{ns:project}}:تکذیب‌نامه‌ی عمومی',
 301+'edithelp' => 'راهنمای ویرایش کردن',
 302+'edithelppage' => '{{ns:project}}:چگونه_صفحات_را_ویرایش_کنیم',
 303+'faq' => 'سؤالات معمول',
 304+'faqpage' => '{{ns:project}}:سؤالات معمول',
 305+'helppage' => '{{ns:project}}:راهنما',
 306+'mainpage' => 'صفحه‌ی اصلی',
 307+'sitesupport' => 'کمک مالی',
 308+
 309+'ok' => 'باشد',
 310+'retrievedfrom' => 'گرفته شده از «$1»',
 311+'editsection' => 'ویرایش',
 312+'editold' => 'ویرایش',
 313+'toc' => 'فهرست مندرجات',
 314+'showtoc' => 'نمایش داده شود',
 315+'hidetoc' => 'مخفی شود',
 316+'thisisdeleted' => 'نمایش یا احیای $1؟',
 317+'restorelink' => '$1 ویرایش حذف‌شده',
 318+
252319 # Main script and global functions
253 -#
254 -'nosuchaction' => "چنین عملی وجود ندارد",
255 -'nosuchactiontext' => "ویکی عمل مشخص شده در URL را نمی‌شناسد",
256 -'nosuchspecialpage' => "چنین صفحه‌ی ویژه‌ای وجود ندارد",
257 -'nospecialpagetext' => "شما صفحه‌ی ویژه‌ای را درخواست کرده‌اید که ویکی نمی‌شناسد.",
 320+'nosuchaction' => 'چنین عملی وجود ندارد',
 321+'nosuchactiontext' => 'ویکی عمل مشخص شده در URL را نمی‌شناسد',
 322+'nosuchspecialpage' => 'چنین صفحه‌ی ویژه‌ای وجود ندارد',
 323+'nospecialpagetext' => 'شما صفحه‌ی ویژه‌ای را درخواست کرده‌اید که ویکی نمی‌شناسد.',
258324
259325 # General errors
260 -#
261 -'error' => "خطا",
262 -'databaseerror' => "خطای پایگاه داده",
263 -'dberrortextcl' => "A database query syntax error has occurred.
264 -The last attempted database query was:
265 -\"$1\"
266 -from within function \"$2\".
267 -MySQL returned error \"$3: $4\".",
268 -'noconnect' => "شرمنده! ویکی مشکلات فنی دارد، و نمی‌تواند با خادم پایگاه داده تماس بگیرد.",
269 -'nodb' => "نمی‌توان پایگاه داده‌ی $1 را انتخاب کرد",
270 -'cachederror' => "در زیر یک نسخه‌ی بایگانی‌شده‌ی صفحه‌ی درخواستی می‌آید، و ممکن است به‌روز نباشد.",
271 -'readonly' => "پایگاه داده قفل شد",
272 -'enterlockreason' => "دلیلی برای قفل کردن ذکر کنید، شامل تقریبی برای زمانی که قفل برداشته خواهد شد",
273 -'readonlytext' => "The database is currently locked to new
274 -entries and other modifications, probably for routine database maintenance,
275 -after which it will be back to normal.
276 -The administrator who locked it offered this explanation:
277 -<p>$1",
278 -'missingarticle' => "پایگاه داده متن صفحه‌ای به نام «$1» را که باید می‌یافت، نیافت.
 326+'error' => 'خطا',
 327+'databaseerror' => 'خطای پایگاه داده',
 328+'noconnect' => 'شرمنده! ویکی مشکلات فنی دارد، و نمی‌تواند با خادم پایگاه داده تماس بگیرد.',
 329+'nodb' => 'نمی‌توان پایگاه داده‌ی $1 را انتخاب کرد',
 330+'cachederror' => 'در زیر یک نسخه‌ی بایگانی‌شده‌ی صفحه‌ی درخواستی می‌آید، و ممکن است به‌روز نباشد.',
 331+'readonly' => 'پایگاه داده قفل شد',
 332+'enterlockreason' => 'دلیلی برای قفل کردن ذکر کنید، شامل تقریبی برای زمانی که قفل برداشته خواهد شد',
 333+'missingarticle' => 'پایگاه داده متن صفحه‌ای به نام «$1» را که باید می‌یافت، نیافت.
279334
280335 <p>این مشکل معمولاٌ بر اثر ادامه دادن پیوندهای تاریخ‌گذشته‌ی تفاوت یا تاریخچه‌ی صفحاتی رخ می‌دهد که حذف شده‌اند.
281336
282337 <p>اگر مورد شما این نیست، ممکن است اشکالی در نرم‌افزار پیدا کرده باشید.
283 -لطفاً این مسئله را، با ذکر URL، به یکی از مدیران گزارش کنید.",
284 -'internalerror' => "خطای داخلی",
285 -'filecopyerror' => "نتوانستم از پرونده‌ی «$1» روی «$2» نسخه‌برداری کنم.",
286 -'filerenameerror' => "نتوانستم پرونده‌ی «$1» را به «$2» تغییر نام دهم.",
287 -'filedeleteerror' => "نتوانستم پرونده‌ی «$1» را حذف کنم",
288 -'filenotfound' => "پرونده‌ی «$1» یافت نشد.",
289 -'unexpected' => "مقدار غیرمنتظره: «$1»=«$2».",
290 -'formerror' => "خطا: نمی‌توان فرم را فرستاد",
291 -'badarticleerror' => "نمی‌توان این عمل را بر این صفحه انجام داد.",
292 -'cannotdelete' => "نتوانستم صفحه را تصویر مشخص‌شده را حذف کنم. (ممکن است قبلاً کس دیگری آن را حذف کرده باشد.)",
293 -'badtitle' => "عنوان بد",
294 -'badtitletext' => "عنوان درخواستی نامعتبر، خالی، یا عنوانی بین زبانی یا بین‌ویکی‌ای با پیوند نادرست بود.",
295 -'perfdisabled' => "شرمنده! این امکان موفقتاً برداشته شده چون پایگاه داده را چنان کند می‌کند
296 -که هیچ کس نمی‌تواند از ویکی استفاده کند.",
297 -'perfdisabledsub' => "این نسخه‌ی ذخیره‌شده‌ای از $1 است:",
298 -'wrong_wfQuery_params' => "پارامترهای wfQuery() نادرست است<br />
 338+لطفاً این مسئله را، با ذکر URL، به یکی از مدیران گزارش کنید.',
 339+'internalerror' => 'خطای داخلی',
 340+'filecopyerror' => 'نتوانستم از پرونده‌ی «$1» روی «$2» نسخه‌برداری کنم.',
 341+'filerenameerror' => 'نتوانستم پرونده‌ی «$1» را به «$2» تغییر نام دهم.',
 342+'filedeleteerror' => 'نتوانستم پرونده‌ی «$1» را حذف کنم',
 343+'filenotfound' => 'پرونده‌ی «$1» یافت نشد.',
 344+'unexpected' => 'مقدار غیرمنتظره: «$1»=«$2».',
 345+'formerror' => 'خطا: نمی‌توان فرم را فرستاد',
 346+'badarticleerror' => 'نمی‌توان این عمل را بر این صفحه انجام داد.',
 347+'cannotdelete' => 'نتوانستم صفحه را تصویر مشخص‌شده را حذف کنم. (ممکن است قبلاً کس دیگری آن را حذف کرده باشد.)',
 348+'badtitle' => 'عنوان بد',
 349+'badtitletext' => 'عنوان درخواستی نامعتبر، خالی، یا عنوانی بین زبانی یا بین‌ویکی‌ای با پیوند نادرست بود.',
 350+'perfdisabled' => 'شرمنده! این امکان موفقتاً برداشته شده چون پایگاه داده را چنان کند می‌کند
 351+که هیچ کس نمی‌تواند از ویکی استفاده کند.',
 352+'perfdisabledsub' => 'این نسخه‌ی ذخیره‌شده‌ای از $1 است:', # obsolete?
 353+'wrong_wfQuery_params' => 'پارامترهای wfQuery() نادرست است<br />
299354 تابع: $1<br />
300 -پرس‌وجو: $2",
301 -'viewsource' => "نمایش مبدأ",
302 -'protectedtext' => "این صفحه برای جلوگیری از ویرایش قفل شده است؛ این کار ممکن است دلایل مختلفی داشته باشد. لطفاً به
303 -[[{{ns:project}}:صفحه‌ی محافظت‌شده]] مراجعه کنید.
 355+پرس‌وجو: $2',
 356+'viewsource' => 'نمایش مبدأ',
304357
305 -شما می‌توانید مبدأ این صفحه را مشاهده و تکثیر کنید:",
306 -
307358 # Login and logout pages
308 -#
309 -'logouttitle' => "خروج کاربر از سیستم",
310 -'logouttext' => "اکنون از سیستم خارج شدید.
 359+'logouttitle' => 'خروج کاربر از سیستم',
 360+'logouttext' => 'اکنون از سیستم خارج شدید.
311361 شما می‌توانید به استفاده‌ی گمنام از {{SITENAME}} ادامه دهید، یا می‌توانید با همین کاربر یا کاربر دیگری
312362 به سیستم وارد شوید. توجه کنید که تا زمانی که cache مرورگرتان را پاک کنید،
313 -بعضی صفحات ممکن است به شکلی نمایش یابند که انگار هنوز وارد سیستم هستید.",
314 -
315 -'welcomecreation' => "<h2>$1، خوش آمدید!</h2><p>حساب شما
 363+بعضی صفحات ممکن است به شکلی نمایش یابند که انگار هنوز وارد سیستم هستید.',
 364+'welcomecreation' => '<h2>$1، خوش آمدید!</h2><p>حساب شما
316365 ایجاد شد.
317366 فراموش نکنید که ترجیحات {{SITENAME}} خود را
318 -تنظیم کنید.",
 367+تنظیم کنید.',
 368+'loginpagetitle' => 'ورود کاربر به سیستم',
 369+'yourname' => 'نام کاربری شما',
 370+'yourpassword' => 'کلمه‌ی عبور شما',
 371+'yourpasswordagain' => 'کلمه‌ی عبور را دوباره وارد کنید',
 372+'remembermypassword' => 'کلمه‌ی عبور بین نشست‌ها به خاطر سپرده شود.',
 373+'loginproblem' => '<b>ورود شما به سیستم با مشکلی مواجه شد.</b><br />دوباره تلاش کنید!',
 374+'alreadyloggedin' => '<strong>کاربر $1, شما از قبل وارد سیستم شده‌اید!</strong><br />',
 375+'login' => 'ورود به سیستم',
 376+'loginprompt' => 'برای ورود به {{SITENAME}} باید cookieها را فعال کنید.',
 377+'userlogin' => 'ورود به سیستم',
 378+'logout' => 'خروج از سیستم',
 379+'userlogout' => 'خروج از سیستم',
 380+'notloggedin' => 'به سیستم وارد نشده‌اید',
 381+'createaccount' => 'ایجاد حساب جدید',
 382+'createaccountmail' => 'با پست الکترونیکی',
 383+'badretype' => 'کلمه‌های عبوری که وارد کردید یکسان نیستند.',
 384+'userexists' => 'نام کاربری‌ای که وارد کردید قبلاً استفاده شده است. لطفاً یک نام دیگر انتخاب کنید.',
 385+'youremail' => 'پست الکترونیکی شما*',
 386+'yournick' => 'لقب شما (برای امضاها)',
 387+'loginerror' => 'خطا در ورود به سیستم',
 388+'nocookiesnew' => 'حساب کاربری ایجاد شد، اما شما وارد سیستم نشدید. {{SITENAME}} برای ورود کاربران به سیستم از cookie استفاده می‌کند. شما
 389+cookieها را از کار انداخته‌اید. لطفاً cookieها را به کار بیندازید، و سپس با نام کاربری و کلمه‌ی عبور جدیدتان به سیستم وارد شوید.',
 390+'nocookieslogin' => '{{SITENAME}} برای ورود کاربران به سیستم از cookie استفاده می‌کند. شما cookieها را از کار
 391+انداخته‌اید. لطفاً cookieها را به کار بیندازید و دوباره تلاش کنید.',
 392+'noname' => 'شما نام کاربری معتبری مشخص نکرده‌اید.',
 393+'loginsuccesstitle' => 'ورود موفقیت‌آمیز به سیستم',
 394+'loginsuccess' => 'شما اکنون با نام «$1» به {{SITENAME}} وارد شده‌اید.',
 395+'nosuchuser' => 'کاربری با نام «$1» وجود ندارد.
 396+املای نام را بررسی کنید، یا از فرم زیر برای ایجاد یک حساب کاربری جدید استفاده کنید.',
 397+'wrongpassword' => 'کلمه‌ی عبوری که وارد کردید نادرست است. لطفاٌ دوباره تلاش کنید.',
 398+'mailmypassword' => 'یک کلمه‌ی عبور جدید به شما فرستاده شود',
 399+'noemail' => 'هیچ نشانی پست الکترونیکی‌ای برای کاربر «$1» ثبت نشده است.',
 400+'passwordsent' => 'یک کلمه‌ی عبور جدید به نشانی الکترونیکی ثبت شده برای کاربر «$1» فرستاده شد.
 401+لطفاٌ پس از دریافت آن دوباره به سیستم وارد شوید.',
319402
320 -'loginpagetitle' => "ورود کاربر به سیستم",
321 -'yourname' => "نام کاربری شما",
322 -'yourpassword' => "کلمه‌ی عبور شما",
323 -'yourpasswordagain' => "کلمه‌ی عبور را دوباره وارد کنید",
324 -'remembermypassword' => "کلمه‌ی عبور بین نشست‌ها به خاطر سپرده شود.",
325 -'loginproblem' => "<b>ورود شما به سیستم با مشکلی مواجه شد.</b><br />دوباره تلاش کنید!",
326 -'alreadyloggedin' => "<strong>کاربر $1, شما از قبل وارد سیستم شده‌اید!</strong><br />",
327 -
328 -'login' => "ورود به سیستم",
329 -'loginprompt' => "برای ورود به {{SITENAME}} باید cookieها را فعال کنید.",
330 -'userlogin' => "ورود به سیستم",
331 -'logout' => "خروج از سیستم",
332 -'userlogout' => "خروج از سیستم",
333 -'notloggedin' => "به سیستم وارد نشده‌اید",
334 -'createaccount' => "ایجاد حساب جدید",
335 -'createaccountmail' => "با پست الکترونیکی",
336 -'badretype' => "کلمه‌های عبوری که وارد کردید یکسان نیستند.",
337 -'userexists' => "نام کاربری‌ای که وارد کردید قبلاً استفاده شده است. لطفاً یک نام دیگر انتخاب کنید.",
338 -'youremail' => "پست الکترونیکی شما*",
339 -'yournick' => "لقب شما (برای امضاها)",
340 -'loginerror' => "خطا در ورود به سیستم",
341 -'nocookiesnew' => "حساب کاربری ایجاد شد، اما شما وارد سیستم نشدید. {{SITENAME}} برای ورود کاربران به سیستم از cookie استفاده می‌کند. شما
342 -cookieها را از کار انداخته‌اید. لطفاً cookieها را به کار بیندازید، و سپس با نام کاربری و کلمه‌ی عبور جدیدتان به سیستم وارد شوید.",
343 -'nocookieslogin' => "{{SITENAME}} برای ورود کاربران به سیستم از cookie استفاده می‌کند. شما cookieها را از کار
344 -انداخته‌اید. لطفاً cookieها را به کار بیندازید و دوباره تلاش کنید.",
345 -'noname' => "شما نام کاربری معتبری مشخص نکرده‌اید.",
346 -'loginsuccesstitle' => "ورود موفقیت‌آمیز به سیستم",
347 -'loginsuccess' => "شما اکنون با نام «$1» به {{SITENAME}} وارد شده‌اید.",
348 -'nosuchuser' => "کاربری با نام «$1» وجود ندارد.
349 -املای نام را بررسی کنید، یا از فرم زیر برای ایجاد یک حساب کاربری جدید استفاده کنید.",
350 -'wrongpassword' => "کلمه‌ی عبوری که وارد کردید نادرست است. لطفاٌ دوباره تلاش کنید.",
351 -'mailmypassword' => "یک کلمه‌ی عبور جدید به شما فرستاده شود",
352 -/* The following two passwordreminder messages should not be translated, in case
353 - the user doesn't use email software able to read Persian. */
354 -//inherit en//'passwordremindertitle' => '',
355 -//inherit en//'passwordremindertext' => '',
356 -'noemail' => "هیچ نشانی پست الکترونیکی‌ای برای کاربر «$1» ثبت نشده است.",
357 -'passwordsent' => "یک کلمه‌ی عبور جدید به نشانی الکترونیکی ثبت شده برای کاربر «$1» فرستاده شد.
358 -لطفاٌ پس از دریافت آن دوباره به سیستم وارد شوید.",
359 -
360403 # Edit page toolbar
361 -'bold_sample'=>"متن سیاه",
362 -'bold_tip'=>"متن سیاه",
363 -'italic_sample'=>"متن ایتالیک",
364 -'italic_tip'=>"متن ایتالیک",
365 -'link_sample'=>"عنوان پیوند",
366 -'link_tip'=>"پیوند داخلی",
367 -'extlink_sample'=>"http://www.example.com عنوان پیوند",
368 -'extlink_tip'=>"پیوند خارجی (پیشوند http://‎ را فراموش نکنید)",
369 -'headline_sample'=>"متن عنوان",
370 -'headline_tip'=>"عنوان سطح ۲",
371 -'math_sample'=>"درج فرمول در اینجا",
372 -'math_tip'=>"فرمول ریاضی (LaTeX)",
373 -'nowiki_sample'=>"اینجا متن قالب‌بندی‌نشده وارد شود",
374 -'nowiki_tip'=>"نادیده گرفتن قالب‌بندی ویکی",
375 -'image_sample'=>"مثال.jpg",
376 -'image_tip'=>"تصویر داخل متن",
377 -'media_sample'=>"مثال.mp3",
378 -'media_tip'=>"پیوند پرونده‌ی رسانه",
379 -'sig_tip'=>"امضای شما و برچسب زمان",
380 -'hr_tip'=>"خط افقی (با صرفه‌جویی استفاده کنید)",
 404+'bold_sample' => 'متن سیاه',
 405+'bold_tip' => 'متن سیاه',
 406+'italic_sample' => 'متن ایتالیک',
 407+'italic_tip' => 'متن ایتالیک',
 408+'link_sample' => 'عنوان پیوند',
 409+'link_tip' => 'پیوند داخلی',
 410+'extlink_sample' => 'http://www.example.com عنوان پیوند',
 411+'extlink_tip' => 'پیوند خارجی (پیشوند http://‎ را فراموش نکنید)',
 412+'headline_sample' => 'متن عنوان',
 413+'headline_tip' => 'عنوان سطح ۲',
 414+'math_sample' => 'درج فرمول در اینجا',
 415+'math_tip' => 'فرمول ریاضی (LaTeX)',
 416+'nowiki_sample' => 'اینجا متن قالب‌بندی‌نشده وارد شود',
 417+'nowiki_tip' => 'نادیده گرفتن قالب‌بندی ویکی',
 418+'image_sample' => 'مثال.jpg',
 419+'image_tip' => 'تصویر داخل متن',
 420+'media_sample' => 'مثال.mp3',
 421+'media_tip' => 'پیوند پرونده‌ی رسانه',
 422+'sig_tip' => 'امضای شما و برچسب زمان',
 423+'hr_tip' => 'خط افقی (با صرفه‌جویی استفاده کنید)',
381424
382425 # Edit pages
383 -#
384 -'summary' => "خلاصه",
385 -'subject' => "موضوع/عنوان",
386 -'minoredit' => "این ویرایش جزئی است",
387 -'watchthis' => "تعقیب این مقاله",
388 -'savearticle' => "صفحه ذخیره شود",
389 -'preview' => "پیش‌نمایش",
390 -'showpreview' => "پیش‌نمایش نمایش یابد",
391 -'blockedtitle' => "کاربر بسته شده است",
392 -'blockedtext' => "نام کاربری یا نشانی IP شما توسط $1 بسته شده است.
 426+'summary' => 'خلاصه',
 427+'subject' => 'موضوع/عنوان',
 428+'minoredit' => 'این ویرایش جزئی است',
 429+'watchthis' => 'تعقیب این مقاله',
 430+'savearticle' => 'صفحه ذخیره شود',
 431+'preview' => 'پیش‌نمایش',
 432+'showpreview' => 'پیش‌نمایش نمایش یابد',
 433+'blockedtitle' => 'کاربر بسته شده است',
 434+'blockedtext' => "نام کاربری یا نشانی IP شما توسط $1 بسته شده است.
393435 دلیل داده‌شده این است:<br />''$2''<p>شما می‌توانید با $1 یا یکی از
394436 [[{{ns:project}}:مدیران|مدیران]] تماس بگیرید و در این باره صحبت کنید.
395437
396438 توجه کنید که شما نمی‌توانید از امکان «فرستادن پست الکترونیکی به این کاربر» استفاده کنید مگر اینکه نشانی پست الکترونیکی
397 -معتبری در [[ویژه:ترجیحات|ترجیحات کاربری]]‌تان ثبت کرده باشید.
 439+معتبری در [[Special:Preferences|ترجیحات کاربری]]‌تان ثبت کرده باشید.
398440
399441 نشانی IP شما $3 است. لطفاً این نشانی را در کلیه‌ی پرس‌وجوهایتان ذکر کنید.
400442
@@ -404,197 +446,175 @@
405447
406448 اگر این اتفاق برای شما افتاد، لطفاً به یکی از مدیران از یک نشانی پست الکترونیک AOL پیغام بفرستید. حتماً نشانی IPی را در فوق داده شده
407449 ذکر کنید.",
408 -'whitelistedittitle' => "برای ویرایش باید به سیستم وارد شوید",
409 -'whitelistedittext' => "برای ویرایش مقاله‌ها باید به سیستم [[ویژه:Userlogin|وارد]] شوید.",
410 -'whitelistreadtitle' => "برای خواندن باید به سیستم وارد شوید",
411 -'whitelistreadtext' => "
412 -برای خواندن مقالات باید [[ویژه:Userlogin|به سیستم وارد شوید]].",
413 -'whitelistacctitle' => "شما مجاز نیستید حساب درست کنید.",
414 -'whitelistacctext' => "برای ایجاد حساب در این ویکی باید [[ویژه:Userlogin|به سیستم وارد شوید]] و اجازه
415 -‌های مربوط به این کار را داشته باشید.",
416 -'accmailtitle' => "کلمه‌ی عبور فرستاده شد.",
417 -'accmailtext' => "کلمه‌ی عبور «$1» به «$2» فرستاده شد.",
418 -'newarticle' => "(جدید)",
419 -'newarticletext' =>
420 -"شما پیوندی را دنبال کرده‌اید و به صفحه‌ای رسیده‌اید که هنوز وجود ندارد.
 450+'whitelistedittitle' => 'برای ویرایش باید به سیستم وارد شوید',
 451+'whitelistedittext' => 'برای ویرایش مقاله‌ها باید به سیستم [[Special:Userlogin|وارد]] شوید.',
 452+'whitelistreadtitle' => 'برای خواندن باید به سیستم وارد شوید',
 453+'whitelistreadtext' => '
 454+برای خواندن مقالات باید [[Special:Userlogin|به سیستم وارد شوید]].',
 455+'whitelistacctitle' => 'شما مجاز نیستید حساب درست کنید.',
 456+'whitelistacctext' => 'برای ایجاد حساب در این ویکی باید [[Special:Userlogin|به سیستم وارد شوید]] و اجازه
 457+‌های مربوط به این کار را داشته باشید.',
 458+'accmailtitle' => 'کلمه‌ی عبور فرستاده شد.',
 459+'accmailtext' => 'کلمه‌ی عبور «$1» به «$2» فرستاده شد.',
 460+'newarticle' => '(جدید)',
 461+'newarticletext' => "شما پیوندی را دنبال کرده‌اید و به صفحه‌ای رسیده‌اید که هنوز وجود ندارد.
421462 برای ایجاد صفحه، در مستطیل زیر شروع به تایپ کنید
422463 (برای اطلاعات بیشتر به [[{{ns:project}}:راهنما|صفحه‌ی راهنما]] مراجعه کنید).
423464 اگر اشتباهاً اینجا آمده‌اید، دکمه‌ی '''back''' مرورگرتان را بزنید.",
424 -'anontalkpagetext' => "---- ''این صفحه‌ی بحث برای کاربر گمنامی است که هنوز حسابی درست نکرده است یا از آن استفاده نمی‌کند.
425 -بنابراین برای شناسایی‌اش مجبوریم از [[نشانی IP]] عددی استفاده کنیم. چنین نشانی‌های IPای ممکن است توسط چندین کاربر به شکل
 465+'anontalkpagetext' => "---- ''این صفحه‌ی بحث برای کاربر گمنامی است که هنوز حسابی درست نکرده است یا از آن استفاده نمی‌کند.
 466+بنابراین برای شناسایی‌اش مجبوریم از نشانی IP عددی استفاده کنیم. چنین نشانی‌های IPای ممکن است توسط چندین کاربر به شکل
426467 مشترک استفاده شود.
427468 اگر شما کاربر گمنامی هستید و تصور می‌کنید اظهار نظرات نامربوط به شما صورت گرفته است،
428 -لطفاً برای پیشگیری از اشتباه گرفته شدن با کاربران گمنام دیگر در آیند [[ویژه:Userlogin|حسابی ایجاد کنید یا به سیستم وارد شوید]].''",
429 -'noarticletext' => "(این صفحه در حال حاضر متنی ندارد)",
430 -'updated' => "(به‌روز شد)",
431 -'note' => "<strong>نکته:</strong>",
432 -'previewnote' => "توجه کنید که این فقط پیش‌نمایش است، و ذخیره نشده است!",
433 -'previewconflict' => "این پیش‌نمایش منعکس‌کننده‌ی متن ناحیه‌ی ویرایش متن بالایی است،
434 -به شکلی که اگر بخواهید متن را ذخیره کنید نشان داده خواهد شد.",
435 -'editing' => "در حال ویرایش $1",
436 -'editinguser' => "در حال ویرایش $1",
437 -'editingsection' => "در حال ویرایش $1 (قسمت)",
438 -'editingcomment' => "در حال ویرایش $1 (یادداشت)",
439 -'editconflict' => "تعارض ویرایشی: $1",
440 -'explainconflict' => "از وقتی شما ویرایش این صفحه را آغاز کرده‌اید شخص دیگری آن را تغییر داده است.
 469+لطفاً برای پیشگیری از اشتباه گرفته شدن با کاربران گمنام دیگر در آیند [[Special:Userlogin|حسابی ایجاد کنید یا به سیستم وارد شوید]].''",
 470+'noarticletext' => '(این صفحه در حال حاضر متنی ندارد)',
 471+'updated' => '(به‌روز شد)',
 472+'note' => '<strong>نکته:</strong>',
 473+'previewnote' => 'توجه کنید که این فقط پیش‌نمایش است، و ذخیره نشده است!',
 474+'previewconflict' => 'این پیش‌نمایش منعکس‌کننده‌ی متن ناحیه‌ی ویرایش متن بالایی است،
 475+به شکلی که اگر بخواهید متن را ذخیره کنید نشان داده خواهد شد.',
 476+'editing' => 'در حال ویرایش $1',
 477+'editinguser' => 'در حال ویرایش $1',
 478+'editingsection' => 'در حال ویرایش $1 (قسمت)',
 479+'editingcomment' => 'در حال ویرایش $1 (یادداشت)',
 480+'editconflict' => 'تعارض ویرایشی: $1',
 481+'explainconflict' => 'از وقتی شما ویرایش این صفحه را آغاز کرده‌اید شخص دیگری آن را تغییر داده است.
441482 ناحیه‌ی متنی بالایی شامل متن صفحه به شکل فعلی آن است.
442483 تغییرات شما در ناحیه‌ی متنی پایینی نشان داده شده است.
443484 شما باید تغییراتتان را با متن فعلی ترکیب کنید.
444 -وقتی «ذخیره‌ی صفحه» را فشار دهید، <b>فقط</b> متن ناحیه‌ی متنی بالایی ذخیره خواهد شد.<br />",
445 -'yourtext' => "متن شما",
446 -'storedversion' => "نسخه‌ی ضبط‌شده",
447 -'editingold' => "<strong>هشدار:
 485+وقتی «ذخیره‌ی صفحه» را فشار دهید، <b>فقط</b> متن ناحیه‌ی متنی بالایی ذخیره خواهد شد.<br />',
 486+'yourtext' => 'متن شما',
 487+'storedversion' => 'نسخه‌ی ضبط‌شده',
 488+'editingold' => '<strong>هشدار:
448489 شما دارید نسخه‌ی قدیمی‌ای از این صفحه را ویرایش می‌کنید.
449 -اگر ذخیره‌اش کنید، هر تغییری که پس از این نسخه انجام شده از بین خواهد رفت.</strong>",
450 -'yourdiff' => "تفاوت‌ها",
451 -# FIXME: This is inappropriate for third-party use!
452 -/*'copyrightwarning' => "لطفاٌ توجه داشته باشید که فرض می‌شود کلیه‌ی مشارکت‌های شما با {{SITENAME}}
453 -تحت اجازه‌نامه‌ی مستندات آزاد گنو منتشر می‌شوند
454 -(برای جزئیات بیشتر به $1 مراجعه کنید).
455 -اگر نمی‌خواهد نوشته‌هایتان بیرحمانه ویرایش شده و به دلخواه توزیع شود،
456 -اینجا نفرستیدشان.<br />
457 -همینطور شما دارید به ما قول می‌دهید که خودتان این را نوشته‌اید، یا آن را از یک منبع آزاد با
458 -مالکیت عمومی یا مشابه آن برداشته‌اید.
459 -<strong>کارهای دارای حق انحصاری تکثیر (کپی‌رایت) را بی اجازه نفرستید!</strong>",*/
460 -'longpagewarning' => "<strong>هشدار: این صفحه $1 کیلوبایت طول دارد؛
 490+اگر ذخیره‌اش کنید، هر تغییری که پس از این نسخه انجام شده از بین خواهد رفت.</strong>',
 491+'yourdiff' => 'تفاوت‌ها',
 492+'longpagewarning' => '<strong>هشدار: این صفحه $1 کیلوبایت طول دارد؛
461493 بعضی مرورگرها ممکن با ویرایش صفحات نزدیک به ۳۲ کیلوبایت یا طولانیتر از آن مشکلاتی داشته باشند.
462 -لطفاً درباره‌ی شکستن این صفحه به قسمت‌های کوچکتر فکر کنید.</strong>",
463 -'readonlywarning' => "<strong>هشدار: پایگاه داده برای نگهداری قفل شده است،
 494+لطفاً درباره‌ی شکستن این صفحه به قسمت‌های کوچکتر فکر کنید.</strong>',
 495+'readonlywarning' => '<strong>هشدار: پایگاه داده برای نگهداری قفل شده است،
464496 بنابراین نمی‌توانید ویرایش‌هایتان را همین الآن ذخیره کنید.
465 -اگر می‌خواهید متن را در یک پرونده‌ی متنی ببرید و بچسبانید و برای آینده ذخیره‌اش کنید.</strong>",
466 -'protectedpagewarning' => "<strong>هشدار: این صفحه قفل شده است تا فقط کاربران با امتیاز اپراتور سیستم بتوانند ویرایشش کنند.
 497+اگر می‌خواهید متن را در یک پرونده‌ی متنی ببرید و بچسبانید و برای آینده ذخیره‌اش کنید.</strong>',
 498+'protectedpagewarning' => '<strong>هشدار: این صفحه قفل شده است تا فقط کاربران با امتیاز اپراتور سیستم بتوانند ویرایشش کنند.
467499 مطمئن شوید که از
468 -[[{{ns:project}}:توصیه‌های صفحات محافظت‌شده|توصیه‌های صفحات محافظت‌شده]] پیروی می‌کنید.</strong>",
 500+[[{{ns:project}}:توصیه‌های صفحات محافظت‌شده|توصیه‌های صفحات محافظت‌شده]] پیروی می‌کنید.</strong>',
469501
470502 # History pages
471 -#
472 -'revhistory' => "تاریخچه‌ی تغییرات",
473 -'nohistory' => "این صفحه تاریخچه‌ی ویرایش ندارد.",
474 -'revnotfound' => "نسخه یافت نشد",
475 -'revnotfoundtext' => "نسخه‌ی قدیمی‌از از صفحه که درخواست کرده بودید یافت نشد.
476 -لطفاً URLی را که برای دسترسی به این صفحه استفاده کرده‌اید بررسی کنید.n",
477 -'loadhist' => "در حال خواندن تاریخچه‌ی صفحه",
478 -'currentrev' => "نسخه‌ی فعلی",
479 -'revisionasof' => "نسخه‌ی $1",
480 -'cur' => "فعلی",
481 -'next' => "بعدی",
482 -'last' => "آخرین",
483 -'orig' => "اصلی",
484 -'histlegend' => "شرح: (فعلی) = تفاوت با نسخه‌ی فعلی،
485 -(آخرین) = تفاوت با نسخه‌ی قبلی، جز = ویرایش جزئی",
 503+'revhistory' => 'تاریخچه‌ی تغییرات',
 504+'nohistory' => 'این صفحه تاریخچه‌ی ویرایش ندارد.',
 505+'revnotfound' => 'نسخه یافت نشد',
 506+'revnotfoundtext' => 'نسخه‌ی قدیمی‌از از صفحه که درخواست کرده بودید یافت نشد.
 507+لطفاً URLی را که برای دسترسی به این صفحه استفاده کرده‌اید بررسی کنید.n',
 508+'loadhist' => 'در حال خواندن تاریخچه‌ی صفحه',
 509+'currentrev' => 'نسخه‌ی فعلی',
 510+'revisionasof' => 'نسخه‌ی $1',
 511+'cur' => 'فعلی',
 512+'next' => 'بعدی',
 513+'last' => 'آخرین',
 514+'orig' => 'اصلی',
 515+'histlegend' => 'شرح: (فعلی) = تفاوت با نسخه‌ی فعلی،
 516+(آخرین) = تفاوت با نسخه‌ی قبلی، جز = ویرایش جزئی',
486517
487518 # Diffs
488 -#
489 -'difference' => "(تفاوت بین نسخه‌ها)",
490 -'loadingrev' => "در حال خواندن نسخه برای تفاوت گرفتن",
491 -'lineno' => "سطر $1:",
492 -'editcurrent' => "ویرایش نسخه‌ی فعلی این صفحه",
 519+'difference' => '(تفاوت بین نسخه‌ها)',
 520+'loadingrev' => 'در حال خواندن نسخه برای تفاوت گرفتن',
 521+'lineno' => 'سطر $1:',
 522+'editcurrent' => 'ویرایش نسخه‌ی فعلی این صفحه',
493523
494524 # Search results
495 -#
496 -'searchresults' => "نتایج جستجو",
497 -'searchresulttext' => "برای اطلاعات بیشتر درباره‌ی جستجوی {{SITENAME}}، به [[{{ns:project}}:جستجو کردن|جستجوی {{SITENAME}}]] مراجعه کنید.",
498 -'searchsubtitle' => "برای پرس‌وجوی «[[:$1]]»",
499 -'searchsubtitleinvalid' => "برای پرس‌وجوی «$1»",
500 -'badquery' => "پرس‌وجوی جستجویی بدشکل",
501 -'badquerytext' => "نتوانستیم پرس‌وجوی شما را پردازش کنیم.
 525+'searchresults' => 'نتایج جستجو',
 526+'searchresulttext' => 'برای اطلاعات بیشتر درباره‌ی جستجوی {{SITENAME}}، به [[{{ns:project}}:جستجو کردن|جستجوی {{SITENAME}}]] مراجعه کنید.',
 527+'searchsubtitle' => 'برای پرس‌وجوی «[[:$1]]»',
 528+'searchsubtitleinvalid' => 'برای پرس‌وجوی «$1»',
 529+'badquery' => 'پرس‌وجوی جستجویی بدشکل',
 530+'badquerytext' => 'نتوانستیم پرس‌وجوی شما را پردازش کنیم.
502531 این مشکل احتمالاً به این دلیل است که سعی کرده‌اید به دنبال کلمه‌ای کوتاهتر از سه حرف
503532 بگردید، که هنوز پشتیبانی نمی‌شود.
504533 همین‌طور ممکن است عبارت را اشتباه وارد کرده باشید، مثلاً «ماهی و و پولک».
505 -لطفاً یک پرس‌وجوی دیگر را امتحان کنید.",
506 -'matchtotals' => "پرس‌وجوی «$1» متناظر $2 عنوان مقاله
507 -و $3 متن مقاله است.",
508 -'noexactmatch' => "صفحه‌ی با دقیقاً این عنوان وجود ندارد، تلاش برای جستجوی کل متن.",
509 -'titlematches' => 'Article title matches',
510 -'notitlematches' => "عنوان هیچ مقاله‌ای نمی‌خورد",
511 -'textmatches' => 'Article text matches',
512 -'notextmatches' => "متن هیچ مقاله‌ای نمی‌خورد",
513 -'prevn' => "$1تای قبلی",
514 -'nextn' => "$1تای بعدی",
515 -'viewprevnext' => "نمایش ($1) ($2) ($3).",
516 -'showingresults' => "Showing below <b>$1</b> results starting with #<b>$2</b>.",
517 -'showingresultsnum' => "Showing below <b>$3</b> results starting with #<b>$2</b>.",
518 -'nonefound' => "<strong>نکته</strong>: unsuccessful searches are
519 -often caused by searching for common words like \"have\" and \"from\",
520 -which are not indexed, or by specifying more than one search term (only pages
521 -containing all of the search terms will appear in the result).",
522 -'powersearch' => "جستجو",
523 -'powersearchtext' => "
 534+لطفاً یک پرس‌وجوی دیگر را امتحان کنید.',
 535+'matchtotals' => 'پرس‌وجوی «$1» متناظر $2 عنوان مقاله
 536+و $3 متن مقاله است.',
 537+'noexactmatch' => 'صفحه‌ی با دقیقاً این عنوان وجود ندارد، تلاش برای جستجوی کل متن.',
 538+'notitlematches' => 'عنوان هیچ مقاله‌ای نمی‌خورد',
 539+'notextmatches' => 'متن هیچ مقاله‌ای نمی‌خورد',
 540+'prevn' => '$1تای قبلی',
 541+'nextn' => '$1تای بعدی',
 542+'viewprevnext' => 'نمایش ($1) ($2) ($3).',
 543+'powersearch' => 'جستجو',
 544+'powersearchtext' => '
524545 جستجو در فضاهای نام :<br />
525546 $1<br />
526 -$2 تغییرمسیرها فهرست شوند &nbsp; جستجو برای $3 $9",
527 -'searchdisabled' => "<p>شرمنده! جستجوی کل متن موقتاً از کار انداخته شده, for performance reasons. In the meantime, you can use the Google search below, which may be out of date.</p>",
528 -'blanknamespace' => "(اصلی)",
 547+$2 تغییرمسیرها فهرست شوند &nbsp; جستجو برای $3 $9',
 548+'searchdisabled' => '<p>شرمنده! جستجوی کل متن موقتاً از کار انداخته شده, for performance reasons. In the meantime, you can use the Google search below, which may be out of date.</p>',
 549+'blanknamespace' => '(اصلی)',
529550
530551 # Preferences page
531 -#
532 -'preferences' => "ترجیحات",
533 -'prefsnologin' => "به سیستم وارد نشده‌اید",
534 -'prefsnologintext' => "برای تنظیم ترجیحات کاربر باید [[ویژه:Userlogin|به سیستم وارد شوید]].",
535 -'prefsreset' => "ترجیحات از حافظه میزان شد.",
536 -'qbsettings' => "تنظیمات نوار سریع",
537 -'qbsettings-none' => 'نباشد',
538 -'qbsettings-fixedleft' => 'ثابت چپ',
539 -'qbsettings-fixedright' => 'ثابت راست',
540 -'qbsettings-floatingleft' => 'شناور چپ',
541 -'changepassword' => "تغییر کلمه‌ی عبور",
542 -'skin' => "پوسته",
543 -'math' => "نمایش ریاضیات",
544 -'dateformat' => "قالب تاریخ",
545 -'math_failure' => "شکست در تجزیه",
546 -'math_unknown_error' => "خطای ناشناخته",
547 -'math_unknown_function' => "تابع ناشناخته‌ی",
548 -'math_lexing_error' => "خطای lexing",
549 -'math_syntax_error' => "خطای نحوی",
550 -'math_image_error' => "تبدیل به PNG شکست خورد",
551 -'saveprefs' => "ذخیره‌ی ترجیحات",
552 -'resetprefs' => "صفر کردن ترجیحات",
553 -'oldpassword' => "کلمه‌ی عبور قدیمی",
554 -'newpassword' => "کلمه‌ی عبور جدید",
555 -'retypenew' => "کلمه‌ی عبور جدید را دوباره وارد کنید",
556 -'textboxsize' => "ابعاد جعبه‌ی متن",
557 -'rows' => "تعداد سطرها",
558 -'columns' => "تعداد ستون‌ها",
559 -'searchresultshead' => "تنظیمات نتیجه‌ی جستجو",
560 -'resultsperpage' => "تعداد نتایج در هر صفحه",
561 -'contextlines' => "تعداد سطرها در هر نتیجه",
562 -'contextchars' => "تعداد نویسه‌های اطراف در سطر",
563 -'stubthreshold' => "آستانه‌ی نمایش ناقص‌ها",
564 -'recentchangescount' => "تعداد عناوین در تغییرات اخیر",
565 -'savedprefs' => "ترجیحات شما ذخیره شد.",
566 -'timezonetext' => "تفاوت تعداد ساعت زمان محلی‌تان با زمان خادم (وقت گرینیچ) را وارد کنید.",
567 -'localtime' => "نمایش زمان محلی",
568 -'timezoneoffset' => "تفاوت",
569 -'servertime' => "زمان فعلی خادم",
570 -'guesstimezone' => "از مرورگر گرفته شود",
571 -'defaultns' => "به طور پیشفرض در این فضاهای نام جستجو شود:",
 552+'preferences' => 'ترجیحات',
 553+'prefsnologin' => 'به سیستم وارد نشده‌اید',
 554+'prefsnologintext' => 'برای تنظیم ترجیحات کاربر باید [[Special:Userlogin|به سیستم وارد شوید]].',
 555+'prefsreset' => 'ترجیحات از حافظه میزان شد.',
 556+'qbsettings' => 'تنظیمات نوار سریع',
 557+'qbsettings-none' => 'نباشد',
 558+'qbsettings-fixedleft' => 'ثابت چپ',
 559+'qbsettings-fixedright' => 'ثابت راست',
 560+'qbsettings-floatingleft' => 'شناور چپ',
 561+'changepassword' => 'تغییر کلمه‌ی عبور',
 562+'skin' => 'پوسته',
 563+'math' => 'نمایش ریاضیات',
 564+'dateformat' => 'قالب تاریخ',
 565+'math_failure' => 'شکست در تجزیه',
 566+'math_unknown_error' => 'خطای ناشناخته',
 567+'math_unknown_function' => 'تابع ناشناخته‌ی',
 568+'math_lexing_error' => 'خطای lexing',
 569+'math_syntax_error' => 'خطای نحوی',
 570+'math_image_error' => 'تبدیل به PNG شکست خورد',
 571+'saveprefs' => 'ذخیره‌ی ترجیحات',
 572+'resetprefs' => 'صفر کردن ترجیحات',
 573+'oldpassword' => 'کلمه‌ی عبور قدیمی',
 574+'newpassword' => 'کلمه‌ی عبور جدید',
 575+'retypenew' => 'کلمه‌ی عبور جدید را دوباره وارد کنید',
 576+'textboxsize' => 'ابعاد جعبه‌ی متن',
 577+'rows' => 'تعداد سطرها',
 578+'columns' => 'تعداد ستون‌ها',
 579+'searchresultshead' => 'تنظیمات نتیجه‌ی جستجو',
 580+'resultsperpage' => 'تعداد نتایج در هر صفحه',
 581+'contextlines' => 'تعداد سطرها در هر نتیجه',
 582+'contextchars' => 'تعداد نویسه‌های اطراف در سطر',
 583+'stubthreshold' => 'آستانه‌ی نمایش ناقص‌ها',
 584+'recentchangescount' => 'تعداد عناوین در تغییرات اخیر',
 585+'savedprefs' => 'ترجیحات شما ذخیره شد.',
 586+'timezonetext' => 'تفاوت تعداد ساعت زمان محلی‌تان با زمان خادم (وقت گرینیچ) را وارد کنید.',
 587+'localtime' => 'نمایش زمان محلی',
 588+'timezoneoffset' => 'تفاوت',
 589+'servertime' => 'زمان فعلی خادم',
 590+'guesstimezone' => 'از مرورگر گرفته شود',
 591+'defaultns' => 'به طور پیشفرض در این فضاهای نام جستجو شود:',
572592
573593 # Recent changes
574 -#
575 -'changes' => "تغییرات",
576 -'recentchanges' => "تغییرات اخیر",
577 -'recentchangestext' => "آخرین تغییرات ویکی را در این صفحه تعقیب کنید.",
578 -'rcnote' => "در زیر آخرین <strong>$1</strong> تغییر در <strong>$2</strong> روز اخیر آمده است.",
579 -'rcnotefrom' => "در زیر تغییرات از تاریخ <b>$2</b> آمده‌اند (تا <b>$1</b> مورد نشان داده می‌شود).",
580 -'rclistfrom' => "نمایش تغییرات جدید با شروع از $1",
581 -'rclinks' => "نمایش آخرین $1 تغییر در $2 روز اخیر؛ $3",
582 -'diff' => "تفاوت",
583 -'hist' => "تاریخچه",
584 -'hide' => "مخفی شود",
585 -'show' => "نمایش یابد",
586 -'minoreditletter' => "جز",
587 -'newpageletter' => "جد",
 594+'recentchanges' => 'تغییرات اخیر',
 595+'recentchangestext' => 'آخرین تغییرات ویکی را در این صفحه تعقیب کنید.',
 596+'rcnote' => 'در زیر آخرین <strong>$1</strong> تغییر در <strong>$2</strong> روز اخیر آمده است.',
 597+'rcnotefrom' => 'در زیر تغییرات از تاریخ <b>$2</b> آمده‌اند (تا <b>$1</b> مورد نشان داده می‌شود).',
 598+'rclistfrom' => 'نمایش تغییرات جدید با شروع از $1',
 599+'rclinks' => 'نمایش آخرین $1 تغییر در $2 روز اخیر؛ $3',
 600+'diff' => 'تفاوت',
 601+'hist' => 'تاریخچه',
 602+'hide' => 'مخفی شود',
 603+'show' => 'نمایش یابد',
 604+'minoreditletter' => 'جز',
 605+'newpageletter' => 'جد',
588606
 607+# Recent changes linked
 608+'recentchangeslinked' => 'تغییرات مرتبط',
 609+
589610 # Upload
590 -#
591 -'upload' => "بار کردن پرونده",
592 -'uploadbtn' => "پرونده بار شود",
593 -'reupload' => "بار کردن مجدد",
594 -'reuploaddesc' => "بازگشت به فرم بار کردن",
595 -'uploadnologin' => "به سیستم وارد نشده‌اید",
596 -'uploadnologintext' => "برای بار کردن پرونده‌ها باید [[ویژه:Userlogin|وارد سیستم شوید]].",
597 -'uploaderror' => "خطا در بار کردن",
598 -'uploadtext' => "'''ایست!''' قبل از این که چیزی اینجا بار کنید،
 611+'upload' => 'بار کردن پرونده',
 612+'uploadbtn' => 'پرونده بار شود',
 613+'reupload' => 'بار کردن مجدد',
 614+'reuploaddesc' => 'بازگشت به فرم بار کردن',
 615+'uploadnologin' => 'به سیستم وارد نشده‌اید',
 616+'uploadnologintext' => 'برای بار کردن پرونده‌ها باید [[Special:Userlogin|وارد سیستم شوید]].',
 617+'uploaderror' => 'خطا در بار کردن',
 618+'uploadtext' => "'''ایست!''' قبل از این که چیزی اینجا بار کنید،
599619 مطمئن شوید که
600620 [[{{ns:project}}:سیاست_استفاده_از_تصاویر|سیاست استفاده از تصاویر]]
601621 را خوانده‌اید و از آن پیروی می‌کنید.
@@ -624,300 +644,273 @@
625645 for drawings and other iconic images, and OGG for sounds.
626646 Please name your files descriptively to avoid confusion.
627647 To include the image in an article, use a link in the form
628 -'''<nowiki>[[image:file.jpg]]</nowiki>''' or
629 -'''<nowiki>[[image:file.png|alt text]]</nowiki>''' or
630 -'''<nowiki>[[media:file.ogg]]</nowiki>''' for sounds.
 648+'''<nowiki>[[</nowiki>{{ns:image}}:file.jpg]]''' or
 649+'''<nowiki>[[</nowiki>{{ns:image}}:file.png|alt text]]''' or
 650+'''<nowiki>[[</nowiki>{{ns:media}}:file.ogg]]''' for sounds.
631651
632652 Please note that as with wiki pages, others may edit or
633653 delete your uploads if they think it serves the encyclopedia, and
634654 you may be blocked from uploading if you abuse the system.",
635 -
636 -'uploadlog' => "سیاهه‌ی بارکردن‌ها",
637 -'uploadlogpage' => "سیاهه‌ی_بارکردن‌ها",
638 -'uploadlogpagetext' => "فهرست زیر فهرستی از آخرین بارکردن‌های پرونده‌های است.
639 -همه‌ی زمان‌های نشان‌داده‌شده زمان خادم هستند (وقت گرینیچ).
640 -<ul>
641 -</ul>",
642 -'filename' => "نام پرونده",
643 -'filedesc' => "خلاصه",
644 -'filestatus' => "وضعیت حق تکثیر",
645 -'filesource' => "منبع",
646 -'copyrightpage' => "{{ns:project}}:حق_تکثیر",
647 -'copyrightpagename' => "حق تکثیر {{SITENAME}}",
648 -'uploadedfiles' => "پرونده‌های بارشده",
649 -'minlength' => "نام پرونده باید حداقل سه‌حرفی باشد.",
650 -'badfilename' => "نام پرونده به «$1» تغییر کرد.",
651 -'badfiletype' => "قالب پرونده‌ای «‎.$1» برای پرونده‌های تصویری توصیه نمی‌شود.",
652 -'largefile' => "توصیه می‌شود که اندازه‌ی تصاویر از ۱۰۰ کیلوبایت بیشتر نباشد.",
653 -'successfulupload' => "بار کردن با موفقیت انجام شد",
654 -'fileuploaded' => "پرونده‌ی «$1» با موفقیت بار شد.
 655+'uploadlog' => 'سیاهه‌ی بارکردن‌ها',
 656+'uploadlogpage' => 'سیاهه‌ی_بارکردن‌ها',
 657+'uploadlogpagetext' => 'فهرست زیر فهرستی از آخرین بارکردن‌های پرونده‌های است.
 658+همه‌ی زمان‌های نشان‌داده‌شده زمان خادم هستند (وقت گرینیچ).',
 659+'filename' => 'نام پرونده',
 660+'filedesc' => 'خلاصه',
 661+'filestatus' => 'وضعیت حق تکثیر',
 662+'filesource' => 'منبع',
 663+'uploadedfiles' => 'پرونده‌های بارشده',
 664+'minlength' => 'نام پرونده باید حداقل سه‌حرفی باشد.',
 665+'badfilename' => 'نام پرونده به «$1» تغییر کرد.',
 666+'successfulupload' => 'بار کردن با موفقیت انجام شد',
 667+'fileuploaded' => 'پرونده‌ی «$1» با موفقیت بار شد.
655668 لطفاً این پیوند را تعقیب کنید: ($2) تا صفحه‌ی توصیف و اطلاعات در مورد
656669 پرونده را، از قبیل این که از کجا آمده است، چه کسی و در چه زمانی آن را ایجاد کرده است،
657 -و هر چیز دیگری که ممکن است در مورد آن بدانید، پر کنید.",
658 -'uploadwarning' => "هشدار بار کردن",
659 -'savefile' => "ذخیره‌ی پرونده",
660 -'uploadedimage' => "«[[$1]]» بار شد",
661 -'uploaddisabled' => "شرمنده، بار کردن از کار افتاده است.",
 670+و هر چیز دیگری که ممکن است در مورد آن بدانید، پر کنید.',
 671+'uploadwarning' => 'هشدار بار کردن',
 672+'savefile' => 'ذخیره‌ی پرونده',
 673+'uploadedimage' => '«[[$1]]» بار شد',
 674+'uploaddisabled' => 'شرمنده، بار کردن از کار افتاده است.',
662675
663676 # Image list
664 -#
665 -'imagelist' => "فهرست تصاویر",
666 -'imagelisttext' => "در زیر فهرست $1 تصویری که $2 مرتب شده است آمده است.",
667 -'getimagelist' => "در حال اخذ فهرست تصاویر",
668 -'ilsubmit' => "جستجو",
669 -'showlast' => "نمایش آخرین $1 تصویر مرتب‌شده $2.",
670 -'byname' => "از روی نام",
671 -'bydate' => "از روی تاریخ",
672 -'bysize' => "از روی اندازه",
673 -'imgdelete' => "حذف",
674 -'imgdesc' => "توصیف",
675 -'imglegend' => "شرح: (توصیف) = نمایش/ویرایش توصیف تصویر.",
676 -'imghistory' => "تاریخچه‌ی تصویر",
677 -'revertimg' => "برگرد",
678 -'deleteimg' => "حذف",
679 -'deleteimgcompletely' => "حذف",
680 -'imghistlegend' => "شرح: (فعلی) = این تصویر فعلی است، (حذف) = این
 677+'imagelist' => 'فهرست تصاویر',
 678+'imagelisttext' => 'در زیر فهرست $1 تصویری که $2 مرتب شده است آمده است.',
 679+'getimagelist' => 'در حال اخذ فهرست تصاویر',
 680+'ilsubmit' => 'جستجو',
 681+'showlast' => 'نمایش آخرین $1 تصویر مرتب‌شده $2.',
 682+'byname' => 'از روی نام',
 683+'bydate' => 'از روی تاریخ',
 684+'bysize' => 'از روی اندازه',
 685+'imgdelete' => 'حذف',
 686+'imgdesc' => 'توصیف',
 687+'imglegend' => 'شرح: (توصیف) = نمایش/ویرایش توصیف تصویر.',
 688+'imghistory' => 'تاریخچه‌ی تصویر',
 689+'revertimg' => 'برگرد',
 690+'deleteimg' => 'حذف',
 691+'deleteimgcompletely' => 'حذف',
 692+'imghistlegend' => 'شرح: (فعلی) = این تصویر فعلی است، (حذف) = این
681693 نسخه‌ی قدیمی حذف شود، (برگرد) = برگرداندن به این نسخه‌ی قدیمی.
682 -<br /><i>برای دیدن تصویر بار شده در تاریخ مشخص، روی تاریخ کلیک کنید</i>.",
683 -'imagelinks' => "پیوند‌های تصاویر",
684 -'linkstoimage' => "این صفحات به این تصویر پیوند دارند:",
685 -'nolinkstoimage' => "هیچ صفحه‌ای به این تصویر پیوند ندارد.",
 694+<br /><i>برای دیدن تصویر بار شده در تاریخ مشخص، روی تاریخ کلیک کنید</i>.',
 695+'imagelinks' => 'پیوند‌های تصاویر',
 696+'linkstoimage' => 'این صفحات به این تصویر پیوند دارند:',
 697+'nolinkstoimage' => 'هیچ صفحه‌ای به این تصویر پیوند ندارد.',
686698
687699 # Statistics
688 -#
689 -'statistics' => "آمار",
690 -'sitestats' => "آمار وبگاه",
691 -'userstats' => "آمار کاربران",
692 -'sitestatstext' => "کلاً <b>$1</b> صفحه در پایگاه داده هست.
 700+'statistics' => 'آمار',
 701+'sitestats' => 'آمار وبگاه',
 702+'userstats' => 'آمار کاربران',
 703+'sitestatstext' => 'کلاً <b>$1</b> صفحه در پایگاه داده هست.
693704 این شامل صفحات «بحث»، صفحات درباره‌ی {{SITENAME}}، صفحات «ناقص» کوچک،
694705 تغییرمسیرها، و صفحات دیگری می‌شود که احتمالاً مقاله به حساب نمی‌آیند.
695706 فارق از این‌ها، <b>$2</b> صفحه هست که احتمالاً مقاله‌ی معقول هستند.<p>
696707 از زمانی که نرم‌افزار ارتقا یافته (۲۰ ژوئیه‌ی ۲۰۰۲)، کلاً <b>$3</b> بازدید از صفحات،
697708 و <b>$4</b> ویرایش صفحات صورت گرفته است.
698 -این می‌شود به طور متوسط <b>$5</b> ویرایش برای هر صفحه، و <b>$6</b> بازدید به‌ازای هر ویرایش.",
699 -'userstatstext' => "تعداد <b>$1</b> کاربر ثبت‌شده وجود دارد.
700 -تعداد <b>$2</b> از این کاربران مدیرند (به $3 مراجعه شود).",
 709+این می‌شود به طور متوسط <b>$5</b> ویرایش برای هر صفحه، و <b>$6</b> بازدید به‌ازای هر ویرایش.',
 710+'userstatstext' => 'تعداد <b>$1</b> کاربر ثبت‌شده وجود دارد.
 711+تعداد <b>$2</b> از این کاربران مدیرند (به $3 مراجعه شود).',
701712
702 -# Maintenance Page
703 -#
704 -'disambiguations' => "صفحات رفع ابهام",
705 -'disambiguationspage' => "{{ns:project}}:پیوند به صفحات رفع ابهام",
706 -'disambiguationstext' => "مقاله‌های زیر به یک <i>صفحه‌ی رفع ابهام</i> پیوند دارند. به جای این، این صفحات باید به
707 -They should link to the appropriate topic instead.<br />A page is treated as dismbiguation if it is linked from $1.<br />Links from other namespaces are <i>not</i> listed here.",
708 -'doubleredirects' => "تغییرمسیرهای دوتایی",
709 -'brokenredirects' => "تغییرمسیرهای خراب",
710 -'brokenredirectstext' => "تغییرمسیرهای زیر به یک صفحه‌ی ناموجود پیوند دارند.",
 713+'disambiguations' => 'صفحات رفع ابهام',
 714+'disambiguationspage' => '{{ns:project}}:پیوند به صفحات رفع ابهام',
711715
 716+'doubleredirects' => 'تغییرمسیرهای دوتایی',
712717
 718+'brokenredirects' => 'تغییرمسیرهای خراب',
 719+'brokenredirectstext' => 'تغییرمسیرهای زیر به یک صفحه‌ی ناموجود پیوند دارند.',
 720+
713721 # Miscellaneous special pages
714 -#
715 -'lonelypages' => "صفحات یتیم",
716 -'unusedimages' => "تصاویر بلااستفاده",
717 -'popularpages' => "صفحات محبوب",
718 -'nviews' => "$1 نمایش",
719 -'wantedpages' => "صفحات مورد نیاز",
720 -'nlinks' => "$1 پیوند",
721 -'allpages' => "همه‌ی صفحات",
722 -'randompage' => "صفحه‌ی تصادفی",
723 -'shortpages' => "صفحات کوتاه",
724 -'longpages' => "صفحات بلند",
725 -'deadendpages' => "صفحات بن‌بست",
726 -'listusers' => "فهرست کاربران",
727 -'specialpages' => "صفحات ویژه",
728 -'spheading' => "صفحات ویژه‌ی همه‌ی کاربران",
729 -'recentchangeslinked' => "تغییرات مرتبط",
730 -'rclsub' => "(به صفحات پیونددار از «$1»)",
731 -'newpages' => "صفحات جدید",
732 -'ancientpages' => "قدیمی‌ترین مقاله‌ها",
733 -'intl' => "پیوندهای بین زبانی",
734 -'movethispage' => "انتقال این صفحه",
735 -'unusedimagestext' => "<p>لطفاٌ توجه کنید که وبگاه‌های دیگر از جمله {{SITENAME}}های بین‌المللی
 722+'nbytes' => '$1 بایت',
 723+'nlinks' => '$1 پیوند',
 724+'nviews' => '$1 نمایش',
 725+'lonelypages' => 'صفحات یتیم',
 726+'unusedimages' => 'تصاویر بلااستفاده',
 727+'popularpages' => 'صفحات محبوب',
 728+'wantedpages' => 'صفحات مورد نیاز',
 729+'allpages' => 'همه‌ی صفحات',
 730+'randompage' => 'صفحه‌ی تصادفی',
 731+'shortpages' => 'صفحات کوتاه',
 732+'longpages' => 'صفحات بلند',
 733+'deadendpages' => 'صفحات بن‌بست',
 734+'listusers' => 'فهرست کاربران',
 735+'specialpages' => 'صفحات ویژه',
 736+'spheading' => 'صفحات ویژه‌ی همه‌ی کاربران',
 737+'rclsub' => '(به صفحات پیونددار از «$1»)',
 738+'newpages' => 'صفحات جدید',
 739+'ancientpages' => 'قدیمی‌ترین مقاله‌ها',
 740+'intl' => 'پیوندهای بین زبانی',
 741+'movethispage' => 'انتقال این صفحه',
 742+'unusedimagestext' => '<p>لطفاٌ توجه کنید که وبگاه‌های دیگر از جمله {{SITENAME}}های بین‌المللی
736743 ممکن است با URL مستقیم به تصاویر پیوند داشته باشند، و نتیجتاً با وجود استفاده‌ی فعال
737 -اینجا فهرست شده باشند.",
738 -'booksources' => "منابع کتاب",
739 -# FIXME: Other sites, of course, may have affiliate relations with the booksellers list
740 -'booksourcetext' => "در زیر فهرستی از پیوندها به وبگاه‌های دیگری که کتاب‌های نو و دست دوم می‌فروشند آمده است،
741 -و ممکن است اطلاعات بیشتری نیز درباره‌ی کتاب‌هایی که دنبالشان می‌گردید داشته باشند.
742 -{{SITENAME}} وابستگی یا ارتباطی با هیچ یک از این کسب‌وکارها ندارد، و این فهرست
743 -نباید به معنی تأیید یا حمایت تعبیر شود.",
744 -'alphaindexline' => "$1 تا $2",
 744+اینجا فهرست شده باشند.',
745745
746 -# Email this user
747 -#
748 -'mailnologin' => "نشانی فرستنده‌ای نیست",
749 -'mailnologintext' => "برای فرستادن پست الکترونیکی به کاربران دیگر باید [[ویژه:Userlogin|به سیستم وارد شوید]]
750 -و نشانی پست الکترونیکی معتبری در [[ویژه:ترجیحات|ترجیحات]]
751 -خود داشته باشید.",
752 -'emailuser' => "پست الکترونیکی به این کاربر",
753 -'emailpage' => "پست الکترونیکی به کاربر",
754 -'emailpagetext' => "اگر این کاربر نشانی پست الکترونیکی معتبری در ترجیحات کاربریش وارد کرده
 746+# Book sources
 747+'booksources' => 'منابع کتاب',
 748+
 749+'alphaindexline' => '$1 تا $2',
 750+
 751+# E-mail user
 752+'mailnologin' => 'نشانی فرستنده‌ای نیست',
 753+'mailnologintext' => 'برای فرستادن پست الکترونیکی به کاربران دیگر باید [[Special:Userlogin|به سیستم وارد شوید]]
 754+و نشانی پست الکترونیکی معتبری در [[Special:Preferences|ترجیحات]]
 755+خود داشته باشید.',
 756+'emailuser' => 'پست الکترونیکی به این کاربر',
 757+'emailpage' => 'پست الکترونیکی به کاربر',
 758+'emailpagetext' => 'اگر این کاربر نشانی پست الکترونیکی معتبری در ترجیحات کاربریش وارد کرده
755759 باشد، فرم زیر یک پیغام می‌فرستد.
756760 نشانی پست الکترونیکی‌ای که در ترجیحات کاربریتان وارد کرده‌اید در نشانی فرستنده (From) نامه
757 -خواهد آمد، تا گیرنده بتواند پاسخ دهد.",
758 -'noemailtitle' => "نشانی پست‌الکترونیک موجود نیست",
759 -'noemailtext' => "این کاربر نشانی پست الکترونیکی معتبری مشخص نکرده است،
760 -یا تصمیم گرفته از کاربران دیگر پست الکترونیکی دریافت نکند.",
761 -'emailfrom' => "از",
762 -'emailto' => "به",
763 -'emailsubject' => "عنوان",
764 -'emailmessage' => "پیغام",
765 -'emailsend' => "فرستاده شود",
766 -'emailsent' => "پست الکترونیکی فرستاده شد",
767 -'emailsenttext' => "پیغام پست الکترونیکی شما فرستاده شد.",
 761+خواهد آمد، تا گیرنده بتواند پاسخ دهد.',
 762+'noemailtitle' => 'نشانی پست‌الکترونیک موجود نیست',
 763+'noemailtext' => 'این کاربر نشانی پست الکترونیکی معتبری مشخص نکرده است،
 764+یا تصمیم گرفته از کاربران دیگر پست الکترونیکی دریافت نکند.',
 765+'emailfrom' => 'از',
 766+'emailto' => 'به',
 767+'emailsubject' => 'عنوان',
 768+'emailmessage' => 'پیغام',
 769+'emailsend' => 'فرستاده شود',
 770+'emailsent' => 'پست الکترونیکی فرستاده شد',
 771+'emailsenttext' => 'پیغام پست الکترونیکی شما فرستاده شد.',
768772
769773 # Watchlist
770 -#
771 -'watchlist' => "فهرست تعقیبات من",
772 -'mywatchlist' => "فهرست تعقیبات من",
773 -'nowatchlist' => "در فهرست تعقیبات شما هیچ موردی نیست.",
774 -'watchnologin' => "به سیستم وارد نشده‌اید",
775 -'watchnologintext' => "برای تغییر فهرست تعقیباتتان باید [[ویژه:Userlogin|به سیستم وارد شوید]].",
776 -'addedwatch' => "به فهرست تعقیبات اضافه شود",
777 -'removedwatch' => "از فهرست تعقیبات برداشته شد",
778 -'removedwatchtext' => "صفحه‌ی «$1» از فهرست تعقیبات شما برداشته شد",
779 -'watchthispage' => "تعقیب این صفحه",
780 -'unwatchthispage' => "توقف تعقیب",
781 -'notanarticle' => "مقاله نیست",
782 -'watchnochange' => "هیچ یک از موارد در حال تعقیب شما در دوره‌ی زمانی نمایش‌یافته ویرایش نشده است.",
783 -'watchdetails' => "($1 pages watched not counting talk pages;
 774+'watchlist' => 'فهرست تعقیبات من',
 775+'mywatchlist' => 'فهرست تعقیبات من',
 776+'nowatchlist' => 'در فهرست تعقیبات شما هیچ موردی نیست.',
 777+'watchnologin' => 'به سیستم وارد نشده‌اید',
 778+'watchnologintext' => 'برای تغییر فهرست تعقیباتتان باید [[Special:Userlogin|به سیستم وارد شوید]].',
 779+'addedwatch' => 'به فهرست تعقیبات اضافه شود',
 780+'removedwatch' => 'از فهرست تعقیبات برداشته شد',
 781+'removedwatchtext' => 'صفحه‌ی «$1» از فهرست تعقیبات شما برداشته شد',
 782+'watchthispage' => 'تعقیب این صفحه',
 783+'unwatchthispage' => 'توقف تعقیب',
 784+'notanarticle' => 'مقاله نیست',
 785+'watchnochange' => 'هیچ یک از موارد در حال تعقیب شما در دوره‌ی زمانی نمایش‌یافته ویرایش نشده است.',
 786+'watchdetails' => '($1 pages watched not counting talk pages;
784787 $2 total pages edited since cutoff;
785788 $3...
786 -[$4 نمایش و ویرایش فهرست کامل].)",
787 -'watchmethod-recent'=> "بررسی ویرایش‌های اخیر برای صفحات در حال تعقیب",
788 -'watchmethod-list' => "بررسی صفحات در حال تعقیب برای ویرایش‌های اخیر",
789 -'removechecked' => "برداشتن موارد تیک‌خورده از فهرست تعقیبات",
790 -'watchlistcontains' => "فهرست تعقیبات شما حاوی $1 صفحه است.",
791 -'watcheditlist' => "در اینجا فهرست الفبایی‌ای از صفحات در تعقیب شما می‌آید.
 789+[$4 نمایش و ویرایش فهرست کامل].)',
 790+'watchmethod-recent' => 'بررسی ویرایش‌های اخیر برای صفحات در حال تعقیب',
 791+'watchmethod-list' => 'بررسی صفحات در حال تعقیب برای ویرایش‌های اخیر',
 792+'removechecked' => 'برداشتن موارد تیک‌خورده از فهرست تعقیبات',
 793+'watchlistcontains' => 'فهرست تعقیبات شما حاوی $1 صفحه است.',
 794+'watcheditlist' => 'در اینجا فهرست الفبایی‌ای از صفحات در تعقیب شما می‌آید.
792795 در جعبه‌ی صفحاتی که می‌خواهید از فهرست تعقیباتتان حذف شود تیک بزنید و روی دکمه‌ی «برداشتن موارد» در پایین
793 -صفحه کلیک کنید.",
794 -'removingchecked' => "در حال برداشتن موارد درخواستی از فهرست تعقیبات...",
795 -'couldntremove' => "نمی‌توان مورد «$1» را حذف کرد...",
796 -'iteminvalidname' => "مشکل با مورد «$1»، نام نامعتبر است...",
797 -'wlnote' => "در زیر آخرین $1 تغییر در $2 ساعت آخر آمده است.",
798 -'wlshowlast' => "نمایش آخرین $1 ساعت $2 روز $3",
799 -'wlsaved' => "این نسخه‌ی ذخیره‌شده‌ای از فهرست تعقیبات شما است.",
 796+صفحه کلیک کنید.',
 797+'removingchecked' => 'در حال برداشتن موارد درخواستی از فهرست تعقیبات...',
 798+'couldntremove' => 'نمی‌توان مورد «$1» را حذف کرد...',
 799+'iteminvalidname' => 'مشکل با مورد «$1»، نام نامعتبر است...',
 800+'wlnote' => 'در زیر آخرین $1 تغییر در $2 ساعت آخر آمده است.',
 801+'wlshowlast' => 'نمایش آخرین $1 ساعت $2 روز $3',
 802+'wlsaved' => 'این نسخه‌ی ذخیره‌شده‌ای از فهرست تعقیبات شما است.',
800803
801 -
802804 # Delete/protect/revert
803 -#
804 -'deletepage' => "حذف صفحه",
805 -'confirm' => "تأیید",
806 -'exblank' => "صفحه خالی بود",
807 -'confirmdelete' => "تأیید حذف",
808 -'deletesub' => "(در حال حذف «$1»)",
809 -'historywarning' => "هشدار: صفحه‌ای که دارید حذف می‌کند تاریخچه‌ای دارد:",
810 -'actioncomplete' => "عمل انجام شد",
811 -'deletedtext' => "«$1» حذف شده است.
812 -برای سابقه‌ی حذف‌های اخیر به $2 مراجعه کنید.",
813 -'deletedarticle' => "«$1» حذف شد",
814 -'dellogpage' => "سیاهه‌ی_حذف",
815 -'dellogpagetext' => "فهرست زیر فهرستی از اخیرترین حذف‌ها است.
 805+'deletepage' => 'حذف صفحه',
 806+'confirm' => 'تأیید',
 807+'exblank' => 'صفحه خالی بود',
 808+'confirmdelete' => 'تأیید حذف',
 809+'deletesub' => '(در حال حذف «$1»)',
 810+'historywarning' => 'هشدار: صفحه‌ای که دارید حذف می‌کند تاریخچه‌ای دارد:',
 811+'actioncomplete' => 'عمل انجام شد',
 812+'deletedtext' => '«$1» حذف شده است.
 813+برای سابقه‌ی حذف‌های اخیر به $2 مراجعه کنید.',
 814+'deletedarticle' => '«$1» حذف شد',
 815+'dellogpage' => 'سیاهه‌ی_حذف',
 816+'dellogpagetext' => 'فهرست زیر فهرستی از اخیرترین حذف‌ها است.
816817 همه‌ی زمان‌های نشان‌داده‌شده زمان خادم (وقت گرینیچ) است.
817818 <ul>
818 -</ul>",
819 -'deletionlog' => "سیاهه‌ی حذف",
820 -'reverted' => "به نسخه‌ی قدیمی‌تر برگردانده شد",
821 -'deletecomment' => "دلیل حذف",
822 -'imagereverted' => "برگرداندن به نسخه‌ی قدیمی‌تر با موفقیت انجام شد.",
823 -'cantrollback' => "نمی‌توان ویرایش را برگرداند؛ آخرین مشارکت‌کننده تنها مؤلف این مقاله است.",
824 -'alreadyrolled' => "Cannot rollback last edit of [[:$1]]
 819+</ul>',
 820+'deletionlog' => 'سیاهه‌ی حذف',
 821+'reverted' => 'به نسخه‌ی قدیمی‌تر برگردانده شد',
 822+'deletecomment' => 'دلیل حذف',
 823+'imagereverted' => 'برگرداندن به نسخه‌ی قدیمی‌تر با موفقیت انجام شد.',
 824+'cantrollback' => 'نمی‌توان ویرایش را برگرداند؛ آخرین مشارکت‌کننده تنها مؤلف این مقاله است.',
 825+'alreadyrolled' => 'Cannot rollback last edit of [[:$1]]
825826 by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already.
826827
827 -آخرین ویرایش توسط [[کاربر:$3|$3]] ([[بحث کاربر:$3|بحث]]).",
828 -# only shown if there is an edit comment
829 -'editcomment' => "توضیح ویرایش این بود: \"<i>$1</i>\".",
830 -'revertpage' => "ویرایش $2 برگردانده شد، به آخرین تغییری که $1 انجام داده است",
831 -'protectlogpage' => "سیاهه‌ی_محافظت",
832 -'protectlogtext' => "در زیر فهرست قفل کردن‌ها/ازقفل‌درآوردن‌های صفحات آمده است.
833 -برای اطلاعات بیشتر به [[{{ns:project}}:صفحه‌ی محافظت‌شده]] مراجعه کنید.",
834 -'protectedarticle' => "[[$1]] محافظت شد",
835 -'unprotectedarticle' => "[[$1]] از محافظت در آمد",
 828+آخرین ویرایش توسط [[User:$3|$3]] ([[User talk:$3|بحث]]).',
 829+'editcomment' => 'توضیح ویرایش این بود: "<i>$1</i>".', # only shown if there is an edit comment
 830+'revertpage' => 'ویرایش $2 برگردانده شد، به آخرین تغییری که $1 انجام داده است',
 831+'protectlogpage' => 'سیاهه‌ی_محافظت',
 832+'protectlogtext' => 'در زیر فهرست قفل کردن‌ها/ازقفل‌درآوردن‌های صفحات آمده است.
 833+برای اطلاعات بیشتر به [[{{ns:project}}:صفحه‌ی محافظت‌شده]] مراجعه کنید.',
 834+'protectedarticle' => '[[$1]] محافظت شد',
 835+'unprotectedarticle' => '[[$1]] از محافظت در آمد',
836836
837837 # Undelete
838 -'undelete' => "احیای صفحه‌ی حذف شده",
839 -'undeletepage' => "نمایش و احیای صفحات حذف شده",
840 -'undeletepagetext' => "صفحات زیر حذف شده‌اند ولی هنوز در بایگانی هستند و می‌توانند احیا شوند.
841 -این آرشیو ممکن است هر چند وقت تمیز شود.",
842 -'undeletearticle' => "احیای مقاله‌ی حذف‌شده",
843 -'undeleterevisions' => "$1 نسخه بایگانی شده است",
844 -'undeletehistory' => "اگر این صفحه را احیا کنید، همه‌ی نسخه‌های آن در تاریخچه احیا خواهند شد.
 838+'undelete' => 'احیای صفحه‌ی حذف شده',
 839+'undeletepage' => 'نمایش و احیای صفحات حذف شده',
 840+'undeletepagetext' => 'صفحات زیر حذف شده‌اند ولی هنوز در بایگانی هستند و می‌توانند احیا شوند.
 841+این آرشیو ممکن است هر چند وقت تمیز شود.',
 842+'undeleterevisions' => '$1 نسخه بایگانی شده است',
 843+'undeletehistory' => 'اگر این صفحه را احیا کنید، همه‌ی نسخه‌های آن در تاریخچه احیا خواهند شد.
845844 اگر صفحه‌ی جدیدی با نام یکسان از زمان حذف ایجاد شده باشد، نسخه‌های احیاشده در تاریخچه‌ی قبلی خواهند آمد،
846 -و نسخه‌ی فعلی صفحه‌ی زنده به طور خودکار جایگزین نخواهد شد.",
847 -'undeleterevision' => "حذف نسخه‌ی به تاریخ $1",
848 -'undeletebtn' => "احیا شود!",
849 -'undeletedarticle' => "«$1» احیا شد",
 845+و نسخه‌ی فعلی صفحه‌ی زنده به طور خودکار جایگزین نخواهد شد.',
 846+'undeletebtn' => 'احیا شود!',
 847+'undeletedarticle' => '«$1» احیا شد',
850848
851849 # Contributions
852 -#
853 -'contributions' => "مشارکت‌های کاربر",
854 -'mycontris' => "مشارکت‌های من",
855 -'contribsub2' => "برای $1 ($2)",
856 -'nocontribs' => "هیچ تغییری نظیر این مشخصات یافت نشد.",
857 -'ucnote' => "در زیر آخرین <b>$1</b> تغییر این کاربر در <b>$2</b> روز اخیر می‌آید.",
858 -'uclinks' => "نمایش آخرین $1 تغییر؛ نمایش $2 روز اخیر.",
859 -'uctop' => " (بالا)" ,
 850+'contributions' => 'مشارکت‌های کاربر',
 851+'mycontris' => 'مشارکت‌های من',
 852+'contribsub2' => 'برای $1 ($2)',
 853+'nocontribs' => 'هیچ تغییری نظیر این مشخصات یافت نشد.',
 854+'ucnote' => 'در زیر آخرین <b>$1</b> تغییر این کاربر در <b>$2</b> روز اخیر می‌آید.',
 855+'uclinks' => 'نمایش آخرین $1 تغییر؛ نمایش $2 روز اخیر.',
 856+'uctop' => ' (بالا)',
860857
861858 # What links here
862 -#
863 -'whatlinkshere' => "آنچه به اینجا پیوند دارد",
864 -'notargettitle' => "مقصدی نیست",
865 -'notargettext' => "شما صفحه‌ی یا کاربر مقصدی برای انجام این عمل روی آن مشخص نکرده‌اید.",
866 -'linklistsub' => "(فهرست پیوندها)",
867 -'linkshere' => "صفحات زیر به اینجا پیوند دارند:",
868 -'nolinkshere' => "هیچ صفحه‌ای به اینجا پیوند ندارد.",
869 -'isredirect' => "صفحه‌ی تغییر مسیر",
 859+'whatlinkshere' => 'آنچه به اینجا پیوند دارد',
 860+'notargettitle' => 'مقصدی نیست',
 861+'notargettext' => 'شما صفحه‌ی یا کاربر مقصدی برای انجام این عمل روی آن مشخص نکرده‌اید.',
 862+'linklistsub' => '(فهرست پیوندها)',
 863+'linkshere' => 'صفحات زیر به اینجا پیوند دارند:',
 864+'nolinkshere' => 'هیچ صفحه‌ای به اینجا پیوند ندارد.',
 865+'isredirect' => 'صفحه‌ی تغییر مسیر',
870866
871 -# Block/unblock IP
872 -#
873 -'blockip' => "بستن کاربر",
874 -'blockiptext' => "از فرم زیر برای بستن دسترسی نوشتن از یک نشانی IP یا
 867+# Block/unblock
 868+'blockip' => 'بستن کاربر',
 869+'blockiptext' => 'از فرم زیر برای بستن دسترسی نوشتن از یک نشانی IP یا
875870 نام کاربری مشخص استفاده کنید.
876871 این کار فقط فقط باید برای جلوگیری از خرابکاری انجام شود، و بر اساس
877872 [[{{ns:project}}:خط مشی|خط مشی]].
878 -دلیل مشخص این کار را در زیر ذکر کنید (مثلاً با ذکر صفحات به‌خصوصی که تخریب شده‌اند).",
879 -'ipaddress' => "نشانی IP/نام کاربر",
880 -'ipbreason' => "دلیل",
881 -'ipbsubmit' => "این کاربر بسته شود",
882 -'badipaddress' => "کاربری با این نام وجود ندارد.",
883 -'blockipsuccesssub' => "بستن با موفقیت انجام شد",
884 -'blockipsuccesstext' => "«$1» بسته شده است.
885 -<br />برای بررسی بسته‌شدن‌ها، به [[ویژه:فهرستIPهای‌بسته|فهرست IPهای بسته]] مراجعه کنید.",
886 -'unblockip' => "باز کردن کاربر",
887 -'unblockiptext' => "برای باز گرداندن دسترسی نوشتن به یک نشانی IP یا نام کاربری بسته‌شده
888 -از فرم زیر استفاده کنید.",
889 -'ipusubmit' => "باز کردن این نشانی",
890 -'ipblocklist' => "فهرست نشانی‌های IP و نام‌های کاربری بسته‌شده",
891 -'blocklistline' => "$1، $2 بست $3 را ($4)",
892 -'blocklink' => "بسته شود",
893 -'unblocklink' => "باز شود",
894 -'contribslink' => "مشارکت‌ها",
895 -'autoblocker' => "به طور خودکار بسته شد چون IP شما و «$1» یکی است. دلیل «$2».",
896 -'blocklogpage' => "سیاهه‌ی_بسته‌شدن‌ها",
897 -'blocklogentry' => '«$1» بسته شد',
898 -'blocklogtext' => "این سیاهه‌ای از اعمال بستن و باز کردن کاربرها است. نشانی‌های IPی که به طور
 873+دلیل مشخص این کار را در زیر ذکر کنید (مثلاً با ذکر صفحات به‌خصوصی که تخریب شده‌اند).',
 874+'ipaddress' => 'نشانی IP/نام کاربر',
 875+'ipbreason' => 'دلیل',
 876+'ipbsubmit' => 'این کاربر بسته شود',
 877+'badipaddress' => 'کاربری با این نام وجود ندارد.',
 878+'blockipsuccesssub' => 'بستن با موفقیت انجام شد',
 879+'blockipsuccesstext' => '«$1» بسته شده است.
 880+<br />برای بررسی بسته‌شدن‌ها، به [[Special:Ipblocklist|فهرست IPهای بسته]] مراجعه کنید.',
 881+'unblockip' => 'باز کردن کاربر',
 882+'unblockiptext' => 'برای باز گرداندن دسترسی نوشتن به یک نشانی IP یا نام کاربری بسته‌شده
 883+از فرم زیر استفاده کنید.',
 884+'ipusubmit' => 'باز کردن این نشانی',
 885+'ipblocklist' => 'فهرست نشانی‌های IP و نام‌های کاربری بسته‌شده',
 886+'blocklistline' => '$1، $2 بست $3 را ($4)',
 887+'blocklink' => 'بسته شود',
 888+'unblocklink' => 'باز شود',
 889+'contribslink' => 'مشارکت‌ها',
 890+'autoblocker' => 'به طور خودکار بسته شد چون IP شما و «$1» یکی است. دلیل «$2».',
 891+'blocklogpage' => 'سیاهه‌ی_بسته‌شدن‌ها',
 892+'blocklogentry' => '«$1» بسته شد',
 893+'blocklogtext' => 'این سیاهه‌ای از اعمال بستن و باز کردن کاربرها است. نشانی‌های IPی که به طور
899894 خودکار بسته شده‌اند فهرست نشده‌اند. برای فهرست محرومیت‌ها و بسته‌شدن‌های عملیاتی در لحظه‌ی حاضر،
900 -به [[Special:Ipblocklist|فهرست IPهای بسته]] مراجعه کنید.",
901 -'unblocklogentry' => '«$1» باز شد',
 895+به [[Special:Ipblocklist|فهرست IPهای بسته]] مراجعه کنید.',
 896+'unblocklogentry' => '«$1» باز شد',
902897
903898 # Developer tools
904 -#
905 -'lockdb' => "قفل کردن پایگاه داده",
906 -'unlockdb' => "از قفل در آوردن پایگاه داده",
907 -'lockconfirm' => "بله، من جداً می‌خواهم پایگاه داده را قفل کنم.",
908 -'unlockconfirm' => "بله، من جداً می‌خواهم پایگاه داده را از قفل در آورم.",
909 -'lockbtn' => "قفل کردن پایگاه داده",
910 -'unlockbtn' => "از قفل درآوردن پایگاه داده",
911 -'locknoconfirm' => "شما در جعبه‌ی تأیید تیک نزدید",
912 -'lockdbsuccesssub' => "قفل کردن پایگاه داده با موفقیت انجام شد",
913 -'unlockdbsuccesssub' => "قفل پایگاه داده برداشته شد",
914 -'lockdbsuccesstext' => "پایگاه داده قفل شد.
915 -<br />فراموش نکنید که پس از اتمام نگهداری قفل را بردارید.",
916 -'unlockdbsuccesstext' => "پایگاه داده از قفل در آمد.",
 899+'lockdb' => 'قفل کردن پایگاه داده',
 900+'unlockdb' => 'از قفل در آوردن پایگاه داده',
 901+'lockconfirm' => 'بله، من جداً می‌خواهم پایگاه داده را قفل کنم.',
 902+'unlockconfirm' => 'بله، من جداً می‌خواهم پایگاه داده را از قفل در آورم.',
 903+'lockbtn' => 'قفل کردن پایگاه داده',
 904+'unlockbtn' => 'از قفل درآوردن پایگاه داده',
 905+'locknoconfirm' => 'شما در جعبه‌ی تأیید تیک نزدید',
 906+'lockdbsuccesssub' => 'قفل کردن پایگاه داده با موفقیت انجام شد',
 907+'unlockdbsuccesssub' => 'قفل پایگاه داده برداشته شد',
 908+'lockdbsuccesstext' => 'پایگاه داده قفل شد.
 909+<br />فراموش نکنید که پس از اتمام نگهداری قفل را بردارید.',
 910+'unlockdbsuccesstext' => 'پایگاه داده از قفل در آمد.',
917911
918912 # Move page
919 -#
920 -'movepage' => "انتقال صفحه",
921 -'movepagetext' => "با استفاده از فرم زیر نام صفحه تغییر خواهد کرد، و تمام تاریخچه‌اش به
 913+'movepage' => 'انتقال صفحه',
 914+'movepagetext' => "با استفاده از فرم زیر نام صفحه تغییر خواهد کرد، و تمام تاریخچه‌اش به
922915 نام جدید منتقل خواهد شد.
923916 عنوان قدیمی تبدیل به یک صفحه‌ی تغییر مسیر به عنوان جدید خواهد شد.
924917 پیوندهای به عنوان صفحه‌ی قدیمی تغییر نخواهند کرد؛ حتماً تغییرمسیرهای دوتایی یا خراب را
@@ -932,49 +925,44 @@
933926 <b>هشدار!</b>
934927 این کار ممکن است تغییر اساسی و غیرمنتظره‌ای برای صفحات محبوب باشد؛
935928 لطفاً مطمئن شوید که قبل از ادامه دادن عواقب این کار را درک می‌کنید.",
936 -'movearticle' => "انتقال صفحه",
937 -'movenologin' => "به سیستم وارد نشده‌اید",
938 -'movenologintext' => "برای انتقال صفحات باید کاربر ثبت‌شده بوده و
939 -[[ویژه:Userlogin|به سیستم وارد شوید]].",
940 -'newtitle' => "به عنوان جدید",
941 -'movepagebtn' => "صفحه منتقل شود",
942 -'pagemovedsub' => "انتقال با موفقیت انجام شد",
943 -'pagemovedtext' => "صفحه‌ی «[[$1]]» به «[[$2]]» منتقل شد.",
944 -'articleexists' => "صفحه‌ای با این نام از قبل وجود دارد، یا نامی که انتخاب کرده‌اید معتبر نیست.
945 -لطفاً نام دیگری انتخاب کنید.",
946 -'talkexists' => "صفحه با موفقیت منتقل شد، ولی صفحه‌ی بحث را، به این دلیل که صفحه‌ی بحثی در عنوان جدید
947 -وجود دارد، نمی‌توان منتقل کرد. لطفاً آنها را دستی ترکیب کنید.",
948 -'movedto' => "منتقل شد به",
949 -'movetalk' => "صفحه‌ی «بحث» هم، در صورت لزوم، منتقل شود.",
950 -'talkpagemoved' => "صفحه‌ی بحث متناظر نیز منتقل شد.",
951 -'talkpagenotmoved' => "صفحه‌ی بحث متناظر منتقل <strong>نشد</strong>.",
952 -"1movedto2" => "$1 به $2 منتقل شد",
 929+'movearticle' => 'انتقال صفحه',
 930+'movenologin' => 'به سیستم وارد نشده‌اید',
 931+'movenologintext' => 'برای انتقال صفحات باید کاربر ثبت‌شده بوده و
 932+[[Special:Userlogin|به سیستم وارد شوید]].',
 933+'newtitle' => 'به عنوان جدید',
 934+'movepagebtn' => 'صفحه منتقل شود',
 935+'pagemovedsub' => 'انتقال با موفقیت انجام شد',
 936+'pagemovedtext' => 'صفحه‌ی «[[$1]]» به «[[$2]]» منتقل شد.',
 937+'articleexists' => 'صفحه‌ای با این نام از قبل وجود دارد، یا نامی که انتخاب کرده‌اید معتبر نیست.
 938+لطفاً نام دیگری انتخاب کنید.',
 939+'talkexists' => 'صفحه با موفقیت منتقل شد، ولی صفحه‌ی بحث را، به این دلیل که صفحه‌ی بحثی در عنوان جدید
 940+وجود دارد، نمی‌توان منتقل کرد. لطفاً آنها را دستی ترکیب کنید.',
 941+'movedto' => 'منتقل شد به',
 942+'movetalk' => 'صفحه‌ی «بحث» هم، در صورت لزوم، منتقل شود.',
 943+'talkpagemoved' => 'صفحه‌ی بحث متناظر نیز منتقل شد.',
 944+'talkpagenotmoved' => 'صفحه‌ی بحث متناظر منتقل <strong>نشد</strong>.',
 945+'1movedto2' => '$1 به $2 منتقل شد',
953946
954947 # Export
 948+'export' => 'صدور صفحات',
 949+'exporttext' => 'شما می‌توانید متن و تاریخچه‌ی ویرایش یک صفحه‌ی مشخص یا مجموعه‌ای از صفحات را به شکل پوشیده در XML صادر کنید؛
 950+این اطلاعات را می‌توان وارد ویکی دیگری که نرم‌افزار مدیاویکی اجرا می‌کند کرد، تبدیل کرد، یا برای سرگرمی شخصی نگه داشت.',
 951+'exportcuronly' => 'فقط نسخه‌ی فعلی بیاید، نه کل تاریخچه',
955952
956 -'export' => "صدور صفحات",
957 -'exporttext' => "شما می‌توانید متن و تاریخچه‌ی ویرایش یک صفحه‌ی مشخص یا مجموعه‌ای از صفحات را به شکل پوشیده در XML صادر کنید؛
958 -این اطلاعات را می‌توان وارد ویکی دیگری که نرم‌افزار مدیاویکی اجرا می‌کند کرد، تبدیل کرد، یا برای سرگرمی شخصی نگه داشت.",
959 -'exportcuronly' => "فقط نسخه‌ی فعلی بیاید، نه کل تاریخچه",
960 -
961953 # Namespace 8 related
 954+'allmessages' => 'همه‌ی پیغام‌ها',
 955+'allmessagestext' => 'این فهرستی از همه‌ی پیغام‌های موجود در فضای نام مدیاویکی: است',
962956
963 -'allmessages' => "همه‌ی پیغام‌ها",
964 -'allmessagestext' => "این فهرستی از همه‌ی پیغام‌های موجود در فضای نام مدیاویکی: است",
965 -
966957 # Thumbnails
 958+'thumbnail-more' => 'بزرگ شود',
967959
968 -'thumbnail-more' => "بزرگ شود",
 960+# Math options
 961+'mw_math_png' => 'همیشه PNG کشیده شود',
 962+'mw_math_simple' => 'اگر خیلی ساده بودHTML وگرنه PNG',
 963+'mw_math_html' => 'اگر ممکن بود HTML وگرنه PNG',
 964+'mw_math_source' => 'در قالب TeX باقی بماند (برای مرورگرهای متنی)',
 965+'mw_math_modern' => 'توصیه برای مرورگرهای امروزی',
969966
970 -# Math
971 -
972 -'mw_math_png' => "همیشه PNG کشیده شود",
973 -'mw_math_simple' => "اگر خیلی ساده بودHTML وگرنه PNG",
974 -'mw_math_html' => "اگر ممکن بود HTML وگرنه PNG",
975 -'mw_math_source' => "در قالب TeX باقی بماند (برای مرورگرهای متنی)",
976 -'mw_math_modern' => "توصیه برای مرورگرهای امروزی",
977 -
978967 );
979968
980 -
981969 ?>
Index: branches/liquidthreads/maintenance/undelete.php
@@ -0,0 +1,33 @@
 2+<?php
 3+
 4+$usage = <<<EOT
 5+Undelete a page
 6+Usage: php undelete.php [-u <user>] [-r <reason>] <pagename>
 7+
 8+EOT;
 9+
 10+$optionsWithArgs = array( 'u', 'r' );
 11+require_once( 'commandLine.inc' );
 12+
 13+$user = 'Command line script';
 14+$reason = '';
 15+
 16+if ( isset( $options['u'] ) ) {
 17+ $user = $options['u'];
 18+}
 19+if ( isset( $options['r'] ) ) {
 20+ $reason = $options['r'];
 21+}
 22+$pageName = @$args[0];
 23+$title = Title::newFromText( $pageName );
 24+if ( !$title ) {
 25+ echo $usage;
 26+ exit( 1 );
 27+}
 28+$wgUser = User::newFromName( $user );
 29+$archive = new PageArchive( $title );
 30+echo "Undeleting " . $title->getPrefixedDBkey() . '...';
 31+$archive->undelete( array(), $reason );
 32+echo "done\n";
 33+
 34+?>
Property changes on: branches/liquidthreads/maintenance/undelete.php
___________________________________________________________________
Added: svn:eol-style
135 + native
Property changes on: branches/liquidthreads/maintenance/language/digit2html.php
___________________________________________________________________
Added: svn:eol-style
236 + native
Index: branches/liquidthreads/maintenance/parserTests.inc
@@ -372,8 +372,14 @@
373373 'wgScriptPath' => '/',
374374 'wgArticlePath' => '/wiki/$1',
375375 'wgActionPaths' => array(),
376 - 'wgUploadPath' => 'http://example.com/images',
377 - 'wgUploadDirectory' => $this->uploadDir,
 376+ 'wgLocalFileRepo' => array(
 377+ 'class' => 'LocalRepo',
 378+ 'name' => 'local',
 379+ 'directory' => $this->uploadDir,
 380+ 'url' => 'http://example.com/images',
 381+ 'hashLevels' => 2,
 382+ 'transformVia404' => false,
 383+ ),
378384 'wgStyleSheetPath' => '/skins',
379385 'wgSitename' => 'MediaWiki',
380386 'wgServerName' => 'Britney Spears',
@@ -541,20 +547,12 @@
542548 */
543549 private function setupUploadDir() {
544550 global $IP;
545 -
546551 $dir = wfTempDir() . "/mwParser-" . mt_rand() . "-images";
 552+ wfDebug( "Creating upload directory $dir\n" );
547553 mkdir( $dir );
548554 mkdir( $dir . '/3' );
549555 mkdir( $dir . '/3/3a' );
550 -
551 - $img = "$IP/skins/monobook/headbg.jpg";
552 - $h = fopen($img, 'r');
553 - $c = fread($h, filesize($img));
554 - fclose($h);
555 -
556 - $f = fopen( $dir . '/3/3a/Foobar.jpg', 'wb' );
557 - fwrite( $f, $c );
558 - fclose( $f );
 556+ copy( "$IP/skins/monobook/headbg.jpg", "$dir/3/3a/Foobar.jpg" );
559557 return $dir;
560558 }
561559
@@ -563,6 +561,7 @@
564562 * after each test runs.
565563 */
566564 private function teardownGlobals() {
 565+ RepoGroup::destroySingleton();
567566 foreach( $this->savedGlobals as $var => $val ) {
568567 $GLOBALS[$var] = $val;
569568 }
Index: branches/liquidthreads/maintenance/archives/patch-oi_metadata.sql
@@ -1,16 +1,16 @@
2 -
3 -ALTER TABLE /*$wgDBprefix*/oldimage
4 - DROP INDEX oi_name,
5 - ADD INDEX oi_name_timestamp (oi_name,oi_timestamp),
6 - ADD INDEX oi_name_archive_name (oi_name,oi_archive_name),
7 - ADD oi_metadata mediumblob NOT NULL,
8 - ADD oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
9 - ADD oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
10 - ADD oi_minor_mime varchar(32) NOT NULL default "unknown",
11 - ADD oi_deleted tinyint(1) unsigned NOT NULL default '0';
 2+--
 3+-- patch-indexes.sql
 4+--
 5+-- Add data to allow for direct reference to old images
 6+-- They can be included into pages
 7+--
 8+
 9+ALTER TABLE /*$wgDBprefix*/oldimage
 10+ DROP INDEX oi_name,
 11+ ADD INDEX oi_name_timestamp (oi_name,oi_timestamp),
 12+ ADD INDEX oi_name_archive_name (oi_name,oi_archive_name),
 13+ ADD oi_metadata mediumblob NOT NULL,
 14+ ADD oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
 15+ ADD oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
 16+ ADD oi_minor_mime varchar(32) NOT NULL default "unknown",
 17+ ADD oi_deleted tinyint(1) unsigned NOT NULL default '0';
Property changes on: branches/liquidthreads/maintenance/archives/patch-oi_metadata.sql
___________________________________________________________________
Added: svn:eol-style
1218 + native
Index: branches/liquidthreads/docs/hooks.txt
@@ -303,6 +303,10 @@
304304 $create: Whether or not the restoration caused the page to be created
305305 (i.e. it didn't exist before)
306306
 307+'ArticleViewHeader': Before the parser cache is about to be tried for article viewing.
 308+&$pcache: whether to try the parser cache or not
 309+&$outputDone: whether the output for this page finished or not
 310+
307311 'AuthPluginSetup': update or replace authentication plugin object ($wgAuth)
308312 Gives a chance for an extension to set it programattically to a variable class.
309313 &$auth: the $wgAuth object, probably a stub
Property changes on: branches/liquidthreads
___________________________________________________________________
Modified: svnmerge-integrated
310314 - /trunk/phase3:1-22666
311315 + /trunk/phase3:1-22715

Follow-up revisions

RevisionCommit summaryAuthorDate
r22775(bug 10129) small change in Farsi translation of magic wordsraymond18:45, 5 June 2007
r22791Merged revisions 22747-22790 via svnmerge from...david09:21, 6 June 2007

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r22661*Remove silly unparsed brackets from list shown when items are removedaaron18:15, 2 June 2007
r22671Fixed most of the parser tests broken by filerepo mergetstarling09:05, 3 June 2007
r22672Revert r22661 as per wikitech-ltstarling09:23, 3 June 2007
r22673revert accidental committstarling09:31, 3 June 2007
r22674Partial implementation of $wgCapitalLinks differences between local wiki and ...tstarling10:44, 3 June 2007
r22675Fix SpecialUpload::unsaveUploadedFile(). Move UploadVerification hook so that...tstarling11:23, 3 June 2007
r22676API: fixed bug 10109 PostgreSQL API bug in ApiQueryWatchlist::runyurik14:18, 3 June 2007
r22679Script to undelete a pagetstarling15:18, 3 June 2007
r22680propsethashar17:10, 3 June 2007
r22681Fix Parse error: syntax error, unexpected T_LNUMBERhashar17:14, 3 June 2007
r22682API fixed bug 10112 generator=backlinks&prop=info brokenyurik17:22, 3 June 2007
r22684* (bug 10116) Update Portuguese translations...raymond19:18, 3 June 2007
r22686* (bug 10126) Update Chinese translations...raymond20:15, 3 June 2007
r22688Update Germanraymond20:52, 3 June 2007
r22690Indonesian (id) localisation updates.ivanlanin21:40, 3 June 2007
r22691*Add two vars to ArticleViewHeader hook, $outputDone, $pcacheaaron22:31, 3 June 2007
r22692*Document old ArticleViewHeader hookaaron22:34, 3 June 2007
r22695Remove superfluous newlines from end of generated LocalSettings.php filesrobchurch02:25, 4 June 2007
r22698Adding CSS-IDs to deletion log sectionraymond08:39, 4 June 2007
r22700* Added variables 'wgRestrictionEdit' and 'wgRestrictionMove' for JS to headerraymond10:09, 4 June 2007
r22702* (bug 10129) Magic words translated for Farsi by Huji...raymond13:27, 4 June 2007
r22703* (bug 10132, 10134) Restore back-compatibility Image::imageUrl() functionbrion15:22, 4 June 2007
r22704Fix calling convention to makeThumbLinkObj()tstarling15:52, 4 June 2007
r22705fix to fix for calling convention :Dbrion15:57, 4 June 2007
r22706aaaand one morebrion15:58, 4 June 2007
r22709Fix newtalk messageswegge16:17, 4 June 2007
r22713* (bug 10113) Fix double-click for view source on protected pagesbrion19:20, 4 June 2007

Status & tagging log