Index: branches/liquidthreads/includes/filerepo/FSRepo.php |
— | — | @@ -11,7 +11,7 @@ |
12 | 12 | const DELETE_SOURCE = 1; |
13 | 13 | |
14 | 14 | var $directory, $url, $hashLevels, $thumbScriptUrl, $transformVia404; |
15 | | - var $descBaseUrl, $scriptDirUrl, $articleUrl, $fetchDescription; |
| 15 | + var $descBaseUrl, $scriptDirUrl, $articleUrl, $fetchDescription, $initialCapital; |
16 | 16 | var $fileFactory = array( 'UnregisteredLocalFile', 'newFromTitle' ); |
17 | 17 | var $oldFileFactory = false; |
18 | 18 | |
— | — | @@ -24,8 +24,9 @@ |
25 | 25 | $this->transformVia404 = !empty( $info['transformVia404'] ); |
26 | 26 | |
27 | 27 | // Optional settings |
| 28 | + $this->initialCapital = true; // by default |
28 | 29 | foreach ( array( 'descBaseUrl', 'scriptDirUrl', 'articleUrl', 'fetchDescription', |
29 | | - 'thumbScriptUrl' ) as $var ) |
| 30 | + 'thumbScriptUrl', 'initialCapital' ) as $var ) |
30 | 31 | { |
31 | 32 | if ( isset( $info[$var] ) ) { |
32 | 33 | $this->$var = $info[$var]; |
— | — | @@ -236,6 +237,25 @@ |
237 | 238 | } |
238 | 239 | |
239 | 240 | /** |
| 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 | + /** |
240 | 260 | * Copy or move a file either from the local filesystem or from an mwrepo:// |
241 | 261 | * virtual URL, into this repository at the specified destination location. |
242 | 262 | * |
— | — | @@ -298,7 +318,7 @@ |
299 | 319 | |
300 | 320 | /** |
301 | 321 | * 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 |
303 | 323 | */ |
304 | 324 | function getHashPath( $name ) { |
305 | 325 | if ( $this->isHashed() ) { |
— | — | @@ -309,7 +329,7 @@ |
310 | 330 | } |
311 | 331 | return $path; |
312 | 332 | } else { |
313 | | - return ''; |
| 333 | + return '/'; |
314 | 334 | } |
315 | 335 | } |
316 | 336 | |
— | — | @@ -407,6 +427,23 @@ |
408 | 428 | function enumFiles( $callback ) { |
409 | 429 | $this->enumFilesInFS( $callback ); |
410 | 430 | } |
| 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 | + } |
411 | 448 | } |
412 | 449 | |
413 | 450 | ?> |
Index: branches/liquidthreads/includes/filerepo/File.php |
— | — | @@ -119,7 +119,7 @@ |
120 | 120 | */ |
121 | 121 | function getName() { |
122 | 122 | if ( !isset( $this->name ) ) { |
123 | | - $this->name = $this->title->getDBkey(); |
| 123 | + $this->name = $this->repo->getNameFromTitle( $this->title ); |
124 | 124 | } |
125 | 125 | return $this->name; |
126 | 126 | } |
Index: branches/liquidthreads/includes/filerepo/RepoGroup.php |
— | — | @@ -14,7 +14,7 @@ |
15 | 15 | * Get a RepoGroup instance. At present only one instance of RepoGroup is |
16 | 16 | * needed in a MediaWiki invocation, this may change in the future. |
17 | 17 | */ |
18 | | - function singleton() { |
| 18 | + static function singleton() { |
19 | 19 | if ( self::$instance ) { |
20 | 20 | return self::$instance; |
21 | 21 | } |
— | — | @@ -24,6 +24,14 @@ |
25 | 25 | } |
26 | 26 | |
27 | 27 | /** |
| 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 | + /** |
28 | 36 | * Construct a group of file repositories. |
29 | 37 | * @param array $data Array of repository info arrays. |
30 | 38 | * 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 |
224 | 224 | + native |
Index: branches/liquidthreads/includes/filerepo/LocalFile.php |
— | — | @@ -1330,6 +1330,7 @@ |
1331 | 1331 | /** |
1332 | 1332 | * Wrapper for wfFindFile(), for backwards-compatibility only |
1333 | 1333 | * Do not use in core code. |
| 1334 | + * @deprecated |
1334 | 1335 | */ |
1335 | 1336 | function newFromTitle( $title, $time = false ) { |
1336 | 1337 | $img = wfFindFile( $title, $time ); |
— | — | @@ -1338,6 +1339,29 @@ |
1339 | 1340 | } |
1340 | 1341 | return $img; |
1341 | 1342 | } |
| 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 | + } |
1342 | 1366 | } |
1343 | 1367 | |
1344 | 1368 | /** |
Index: branches/liquidthreads/includes/filerepo/UnregisteredLocalFile.php |
— | — | @@ -27,7 +27,7 @@ |
28 | 28 | } |
29 | 29 | if ( $title ) { |
30 | 30 | $this->title = $title; |
31 | | - $this->name = $title->getDBkey(); |
| 31 | + $this->name = $repo->getNameFromTitle( $title ); |
32 | 32 | } else { |
33 | 33 | $this->name = basename( $path ); |
34 | 34 | $this->title = Title::makeTitleSafe( NS_IMAGE, $this->name ); |
Index: branches/liquidthreads/includes/Article.php |
— | — | @@ -724,7 +724,7 @@ |
725 | 725 | } |
726 | 726 | |
727 | 727 | $outputDone = false; |
728 | | - wfRunHooks( 'ArticleViewHeader', array( &$this ) ); |
| 728 | + wfRunHooks( 'ArticleViewHeader', array( &$this, &$outputDone, &$pcache ) ); |
729 | 729 | if ( $pcache ) { |
730 | 730 | if ( $wgOut->tryParserCache( $this, $wgUser ) ) { |
731 | 731 | // Ensure that UI elements requiring revision ID have |
— | — | @@ -857,7 +857,7 @@ |
858 | 858 | * This won't appear when editing a new page, but will when viewing a nonexistant one. |
859 | 859 | */ |
860 | 860 | if ( 0 == $this->getID() ) { |
861 | | - $this->showLogExtract( $wgOut ); |
| 861 | + $this->showLogExtract( $wgOut, 'view' ); |
862 | 862 | } |
863 | 863 | |
864 | 864 | # Trackbacks |
— | — | @@ -2006,22 +2006,23 @@ |
2007 | 2007 | |
2008 | 2008 | $wgOut->returnToMain( false ); |
2009 | 2009 | |
2010 | | - $this->showLogExtract( $wgOut ); |
| 2010 | + $this->showLogExtract( $wgOut, 'delete' ); |
2011 | 2011 | } |
2012 | 2012 | |
2013 | 2013 | |
2014 | 2014 | /** |
2015 | 2015 | * Fetch deletion log |
2016 | 2016 | */ |
2017 | | - function showLogExtract( &$out ) { |
| 2017 | + function showLogExtract( &$out, $type = '' ) { |
2018 | 2018 | # 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" ); |
2020 | 2020 | $logViewer = new LogViewer( |
2021 | 2021 | new LogReader( |
2022 | 2022 | new FauxRequest( |
2023 | 2023 | array( 'page' => $this->mTitle->getPrefixedText(), |
2024 | 2024 | 'type' => 'delete' ) ) ) ); |
2025 | 2025 | $logViewer->showList( $out ); |
| 2026 | + $out->addHTML( "</div>" ); |
2026 | 2027 | } |
2027 | 2028 | |
2028 | 2029 | |
Index: branches/liquidthreads/includes/SpecialUpload.php |
— | — | @@ -368,17 +368,18 @@ |
369 | 369 | if( $veri !== true ) { //it's a wiki error... |
370 | 370 | return $this->uploadError( $veri->toString() ); |
371 | 371 | } |
372 | | - } |
373 | 372 | |
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 | + } |
381 | 381 | } |
382 | 382 | |
| 383 | + |
383 | 384 | /** |
384 | 385 | * Check for non-fatal conditions |
385 | 386 | */ |
— | — | @@ -602,9 +603,8 @@ |
603 | 604 | */ |
604 | 605 | function unsaveUploadedFile() { |
605 | 606 | global $wgOut; |
606 | | - wfSuppressWarnings(); |
607 | | - $success = unlink( $this->mUploadTempName ); |
608 | | - wfRestoreWarnings(); |
| 607 | + $repo = RepoGroup::singleton()->getLocalRepo(); |
| 608 | + $success = $repo->freeTemp( $this->mUploadTempName ); |
609 | 609 | if ( ! $success ) { |
610 | 610 | $wgOut->showFileDeleteError( $this->mUploadTempName ); |
611 | 611 | return false; |
Index: branches/liquidthreads/includes/SkinTemplate.php |
— | — | @@ -440,7 +440,8 @@ |
441 | 441 | // XXX: attach this from javascript, same with section editing |
442 | 442 | if($this->iseditable && $wgUser->getOption("editondblclick") ) |
443 | 443 | { |
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 . '";'); |
445 | 446 | } else { |
446 | 447 | $tpl->set('body_ondblclick', false); |
447 | 448 | } |
Index: branches/liquidthreads/includes/Title.php |
— | — | @@ -47,6 +47,7 @@ |
48 | 48 | var $mTextform; # Text form (spaces not underscores) of the main part |
49 | 49 | var $mUrlform; # URL-encoded form of the main part |
50 | 50 | var $mDbkeyform; # Main part with underscores |
| 51 | + var $mUserCaseDBKey; # DB key with the initial letter in the case specified by the user |
51 | 52 | var $mNamespace; # Namespace index, i.e. one of the NS_xxxx constants |
52 | 53 | var $mInterwiki; # Interwiki prefix (or null string) |
53 | 54 | var $mFragment; # Title fragment (i.e. the bit after the #) |
— | — | @@ -556,6 +557,12 @@ |
557 | 558 | return $wgContLang->getNsText( $this->mNamespace ); |
558 | 559 | } |
559 | 560 | /** |
| 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 | + /** |
560 | 567 | * Get the namespace text of the subject (rather than talk) page |
561 | 568 | * @return string |
562 | 569 | */ |
— | — | @@ -1749,6 +1756,7 @@ |
1750 | 1757 | * Don't force it for interwikis, since the other |
1751 | 1758 | * site might be case-sensitive. |
1752 | 1759 | */ |
| 1760 | + $this->mUserCaseDBKey = $dbkey; |
1753 | 1761 | if( $wgCapitalLinks && $this->mInterwiki == '') { |
1754 | 1762 | $dbkey = $wgContLang->ucfirst( $dbkey ); |
1755 | 1763 | } |
Index: branches/liquidthreads/includes/Skin.php |
— | — | @@ -300,7 +300,7 @@ |
301 | 301 | |
302 | 302 | $ns = $wgTitle->getNamespace(); |
303 | 303 | $nsname = isset( $wgCanonicalNamespaceNames[ $ns ] ) ? $wgCanonicalNamespaceNames[ $ns ] : $wgTitle->getNsText(); |
304 | | - |
| 304 | + |
305 | 305 | $vars = array( |
306 | 306 | 'skin' => $data['skinname'], |
307 | 307 | 'stylepath' => $wgStylePath, |
— | — | @@ -313,6 +313,8 @@ |
314 | 314 | 'wgPageName' => $wgTitle->getPrefixedDBKey(), |
315 | 315 | 'wgTitle' => $wgTitle->getText(), |
316 | 316 | 'wgAction' => $wgRequest->getText( 'action', 'view' ), |
| 317 | + 'wgRestrictionEdit' => $wgTitle->getRestrictions( 'edit' ), |
| 318 | + 'wgRestrictionMove' => $wgTitle->getRestrictions( 'move' ), |
317 | 319 | 'wgArticleId' => $wgTitle->getArticleId(), |
318 | 320 | 'wgIsArticle' => $wgOut->isArticle(), |
319 | 321 | 'wgUserName' => $wgUser->isAnon() ? NULL : $wgUser->getName(), |
Index: branches/liquidthreads/includes/ImagePage.php |
— | — | @@ -274,7 +274,7 @@ |
275 | 275 | if ( $page > 1 ) { |
276 | 276 | $label = $wgOut->parse( wfMsg( 'imgmultipageprev' ), false ); |
277 | 277 | $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', |
279 | 279 | array( 'page' => $page - 1 ) ); |
280 | 280 | } else { |
281 | 281 | $thumb1 = ''; |
— | — | @@ -283,7 +283,7 @@ |
284 | 284 | if ( $page < $count ) { |
285 | 285 | $label = wfMsg( 'imgmultipagenext' ); |
286 | 286 | $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', |
288 | 288 | array( 'page' => $page + 1 ) ); |
289 | 289 | } else { |
290 | 290 | $thumb2 = ''; |
Index: branches/liquidthreads/includes/EditPage.php |
— | — | @@ -611,8 +611,8 @@ |
612 | 612 | $wgOut->addWikiText( wfMsg( 'newarticletext' ) ); |
613 | 613 | else |
614 | 614 | $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' ); |
617 | 617 | } |
618 | 618 | } |
619 | 619 | |
Index: branches/liquidthreads/includes/api/ApiQueryBase.php |
— | — | @@ -139,9 +139,9 @@ |
140 | 140 | |
141 | 141 | /** |
142 | 142 | * Override this method to request extra fields from the pageSet |
143 | | - * using $this->getPageSet()->requestField('fieldName') |
| 143 | + * using $pageSet->requestField('fieldName') |
144 | 144 | */ |
145 | | - public function requestExtraData() { |
| 145 | + public function requestExtraData($pageSet) { |
146 | 146 | } |
147 | 147 | |
148 | 148 | /** |
Index: branches/liquidthreads/includes/api/ApiQueryInfo.php |
— | — | @@ -39,8 +39,7 @@ |
40 | 40 | parent :: __construct($query, $moduleName); |
41 | 41 | } |
42 | 42 | |
43 | | - public function requestExtraData() { |
44 | | - $pageSet = $this->getPageSet(); |
| 43 | + public function requestExtraData($pageSet) { |
45 | 44 | $pageSet->requestField('page_is_redirect'); |
46 | 45 | $pageSet->requestField('page_is_new'); |
47 | 46 | $pageSet->requestField('page_counter'); |
Index: branches/liquidthreads/includes/api/ApiQueryWatchlist.php |
— | — | @@ -48,10 +48,11 @@ |
49 | 49 | $this->run($resultPageSet); |
50 | 50 | } |
51 | 51 | |
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; |
53 | 54 | |
54 | 55 | private function run($resultPageSet = null) { |
55 | | - global $wgUser; |
| 56 | + global $wgUser, $wgDBtype; |
56 | 57 | |
57 | 58 | $this->selectNamedDB('watchlist', DB_SLAVE, 'watchlist'); |
58 | 59 | |
— | — | @@ -132,7 +133,9 @@ |
133 | 134 | $this->addWhereRange('rc_timestamp', $dir, $start, $end); |
134 | 135 | $this->addWhereFld('wl_namespace', $namespace); |
135 | 136 | $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'); |
137 | 140 | |
138 | 141 | $this->addOption('LIMIT', $limit +1); |
139 | 142 | |
Index: branches/liquidthreads/includes/api/ApiQuery.php |
— | — | @@ -164,22 +164,16 @@ |
165 | 165 | $this->InstantiateModules($modules, 'list', $this->mQueryListModules); |
166 | 166 | $this->InstantiateModules($modules, 'meta', $this->mQueryMetaModules); |
167 | 167 | |
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 | | - |
174 | 168 | // |
175 | | - // Populate page information for the given pageSet |
176 | | - // |
177 | | - $this->mPageSet->execute(); |
178 | | - |
179 | | - // |
180 | 169 | // If given, execute generator to substitute user supplied data with generated data. |
181 | 170 | // |
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 | + } |
184 | 178 | |
185 | 179 | // |
186 | 180 | // Record page information (title, namespace, if exists, etc) |
— | — | @@ -195,6 +189,18 @@ |
196 | 190 | $module->profileOut(); |
197 | 191 | } |
198 | 192 | } |
| 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 | + } |
199 | 205 | |
200 | 206 | /** |
201 | 207 | * Create instances of all modules requested by the client |
— | — | @@ -206,6 +212,10 @@ |
207 | 213 | $modules[] = new $moduleList[$moduleName] ($this, $moduleName); |
208 | 214 | } |
209 | 215 | |
| 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 | + */ |
210 | 220 | private function outputGeneralPageInfo() { |
211 | 221 | |
212 | 222 | $pageSet = $this->getPageSet(); |
— | — | @@ -299,7 +309,10 @@ |
300 | 310 | } |
301 | 311 | } |
302 | 312 | |
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) { |
304 | 317 | |
305 | 318 | // Find class that implements requested generator |
306 | 319 | if (isset ($this->mQueryListModules[$generatorName])) { |
— | — | @@ -319,8 +332,14 @@ |
320 | 333 | $this->dieUsage("Module $generatorName cannot be used as a generator", "badgenerator"); |
321 | 334 | |
322 | 335 | $generator->setGeneratorMode(); |
323 | | - $generator->requestExtraData(); |
324 | 336 | |
| 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 | + |
325 | 344 | // populate resultPageSet with the generator output |
326 | 345 | $generator->profileIn(); |
327 | 346 | $generator->executeGenerator($resultPageSet); |
— | — | @@ -380,6 +399,9 @@ |
381 | 400 | return $msg; |
382 | 401 | } |
383 | 402 | |
| 403 | + /** |
| 404 | + * For all modules in $moduleList, generate help messages and join them together |
| 405 | + */ |
384 | 406 | private function makeHelpMsgHelper($moduleList, $paramName) { |
385 | 407 | |
386 | 408 | $moduleDscriptions = array (); |
Index: branches/liquidthreads/includes/SpecialWatchlist.php |
— | — | @@ -94,7 +94,7 @@ |
95 | 95 | $wgOut->addHTML( '<li class="mw-unwatch-failure">' . wfMsg( 'couldntremove', htmlspecialchars($one) ) . "</li>\n" ); |
96 | 96 | } else { |
97 | 97 | 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" ); |
99 | 99 | } |
100 | 100 | } else { |
101 | 101 | $wgOut->addHTML( '<li class="mw-unwatch-invalid">' . wfMsg( 'iteminvalidname', htmlspecialchars($one) ) . "</li>\n" ); |
Index: branches/liquidthreads/includes/DefaultSettings.php |
— | — | @@ -203,6 +203,10 @@ |
204 | 204 | * thumbScriptUrl The URL for thumb.php (optional, not recommended) |
205 | 205 | * transformVia404 Whether to skip media file transformation on parse and rely on a 404 |
206 | 206 | * 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. |
207 | 211 | * |
208 | 212 | * These settings describe a foreign MediaWiki installation. They are optional, and will be ignored |
209 | 213 | * for local repositories: |
Index: branches/liquidthreads/StartProfiler.php |
— | — | @@ -1,24 +1,22 @@ |
2 | 2 | <?php |
3 | 3 | |
4 | | -#require_once( './includes/ProfilerStub.php' ); |
| 4 | +require_once( dirname(__FILE__).'/includes/ProfilerStub.php' ); |
5 | 5 | |
6 | 6 | /** |
7 | 7 | * To use a profiler, delete the line above and add something like this: |
8 | 8 | * |
9 | | - * require_once( './includes/Profiler.php' ); |
| 9 | + * require_once( dirname(__FILE__).'/includes/Profiler.php' ); |
10 | 10 | * $wgProfiler = new Profiler; |
11 | 11 | * |
12 | 12 | * Or for a sampling profiler: |
13 | 13 | * if ( !mt_rand( 0, 100 ) ) { |
14 | | - * require_once( './includes/Profiler.php' ); |
| 14 | + * require_once( dirname(__FILE__).'/includes/Profiler.php' ); |
15 | 15 | * $wgProfiler = new Profiler; |
16 | 16 | * } else { |
17 | | - * require_once( './includes/ProfilerStub.php' ); |
| 17 | + * require_once( dirname(__FILE__).'/includes/ProfilerStub.php' ); |
18 | 18 | * } |
19 | 19 | * |
20 | 20 | * Configuration of the profiler output can be done in LocalSettings.php |
21 | 21 | */ |
22 | | -require_once( dirname(__FILE__).'/includes/Profiler.php' ); |
23 | | -$wgProfiler = new Profiler; |
24 | 22 | |
25 | 23 | ?> |
Index: branches/liquidthreads/config/index.php |
— | — | @@ -968,7 +968,7 @@ |
969 | 969 | /* Write out the config file now that all is well */ |
970 | 970 | print "<li style=\"list-style: none\">\n"; |
971 | 971 | print "<p>Creating LocalSettings.php...</p>\n\n"; |
972 | | - $localSettings = "<" . "?php$endl$local$endl\r\n"; |
| 972 | + $localSettings = "<" . "?php$endl$local"; |
973 | 973 | // Fix up a common line-ending problem (due to CVS on Windows) |
974 | 974 | $localSettings = str_replace( "\r\n", "\n", $localSettings ); |
975 | 975 | $f = fopen( "LocalSettings.php", 'xt' ); |
Index: branches/liquidthreads/RELEASE-NOTES |
— | — | @@ -54,6 +54,7 @@ |
55 | 55 | * (bug 7691) Deletion log now shown when creating a new article, following |
56 | 56 | MediaWiki:Noarticletext(anon) or MediaWiki:Newarticletext(anon). |
57 | 57 | current user. |
| 58 | +* Added variables 'wgRestrictionEdit' and 'wgRestrictionMove' for JS to header |
58 | 59 | |
59 | 60 | == Bugfixes since 1.10 == |
60 | 61 | |
— | — | @@ -107,6 +108,8 @@ |
108 | 109 | * Add Google Wireless Transcoder to the Unicode editing blacklist |
109 | 110 | * (bug 10083) Fix for Special:Version breakage on PHP 5.2 with some hooks |
110 | 111 | * (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 |
111 | 114 | |
112 | 115 | |
113 | 116 | == MediaWiki API changes since 1.10 == |
— | — | @@ -166,6 +169,7 @@ |
167 | 170 | * Burmese (my) |
168 | 171 | * Norwegian (no) |
169 | 172 | * Polish (pl) |
| 173 | +* Portuguese (pt) |
170 | 174 | * Russian (ru) |
171 | 175 | * Slovak (sk) |
172 | 176 | * Shona (sn) |
Index: branches/liquidthreads/languages/messages/MessagesZh_classical.php |
— | — | @@ -467,7 +467,8 @@ |
468 | 468 | |
469 | 469 | 禁者$1也,因''$2''故。 |
470 | 470 | |
471 | | -終止之時為:$6 |
| 471 | +終止之時為:$6<br /> |
| 472 | +見禁之人:$7 |
472 | 473 | |
473 | 474 | 存惑可詢$1,或[[{{ns:project}}:Administrators|有秩]],[[Special:Preferences|簿註]]無驛則信不遣。 |
474 | 475 | 另,子IP為$3,其簿名為#$5。詢時切附之。", |
— | — | @@ -1006,13 +1007,17 @@ |
1007 | 1008 | 'sp-newimages-showfrom' => '賞新圖,自$1', |
1008 | 1009 | |
1009 | 1010 | # 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' => '← 通', |
1017 | 1022 | |
1018 | 1023 | # Block/unblock |
1019 | 1024 | 'blockip' => '禁簿', |
Index: branches/liquidthreads/languages/messages/MessagesZh_cn.php |
— | — | @@ -522,7 +522,8 @@ |
523 | 523 | |
524 | 524 | 这次查封是由$1所封的。当中的原因是''$2''。 |
525 | 525 | |
526 | | -这次查封的到期时间是:$6 |
| 526 | +这次查封的到期时间是:$6<br /> |
| 527 | +对于被查封者:$7 |
527 | 528 | |
528 | 529 | 你可以联络$1或者其他的[[{{MediaWiki:grouppage-sysop}}|管理员]],讨论这次查封。 |
529 | 530 | |
— | — | @@ -1401,9 +1402,9 @@ |
1402 | 1403 | 'nolinkshere-ns' => '在所选的名字空间内没有页面链接到[[:$1]]。', |
1403 | 1404 | 'isredirect' => '重定向页', |
1404 | 1405 | 'istemplate' => '包含', |
1405 | | -'whatlinkshere-links' => '(←链入页面)', |
1406 | 1406 | 'whatlinkshere-prev' => '前$1个', |
1407 | 1407 | 'whatlinkshere-next' => '后$1个', |
| 1408 | +'whatlinkshere-links' => '←链入', |
1408 | 1409 | |
1409 | 1410 | # Block/unblock |
1410 | 1411 | 'blockip' => '查封IP地址', |
Index: branches/liquidthreads/languages/messages/MessagesId.php |
— | — | @@ -643,7 +643,7 @@ |
644 | 644 | '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.', |
645 | 645 | '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.', |
646 | 646 | '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.', |
648 | 648 | 'emailauthenticated' => 'Alamat surat-e Anda telah dikonfirmasi pada $1.', |
649 | 649 | 'emailnotauthenticated' => 'Alamat surat-e Anda belum dikonfirmasi. Sebelum dikonfirmasi Anda tidak bisa menggunakan fitur surat elektronik.', |
650 | 650 | 'noemailprefs' => 'Anda harus memasukkan suatu alamat surat-e untuk dapat menggunakan fitur ini.', |
— | — | @@ -706,7 +706,7 @@ |
707 | 707 | |
708 | 708 | Blokir dilakukan oleh $1. Alasan yang diberikan adalah ''$2''. |
709 | 709 | |
710 | | -Blokir kadaluwarsa pada: $6 |
| 710 | +Blokir kadaluwarsa pada: $6<br /> |
711 | 711 | Sasaran pemblokiran: $7 |
712 | 712 | |
713 | 713 | 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 @@ |
502 | 502 | |
503 | 503 | 這次查封是由$1所封的。當中的原因是''$2''。 |
504 | 504 | |
505 | | -這次查封的到期時間是:$6 |
| 505 | +這次查封的到期時間是:$6<br /> |
| 506 | +對於被查封者:$7 |
506 | 507 | |
507 | 508 | 你可以聯絡$1或者其他的[[{{MediaWiki:grouppage-sysop}}|管理員]],討論這次查封。 |
508 | 509 | |
— | — | @@ -1378,9 +1379,9 @@ |
1379 | 1380 | 'nolinkshere-ns' => '在所選的名字空間內沒有頁面鏈接到[[:$1]]。', |
1380 | 1381 | 'isredirect' => '重定向頁', |
1381 | 1382 | 'istemplate' => '包含', |
1382 | | -'whatlinkshere-links' => '(← 鏈入頁面)', |
1383 | 1383 | 'whatlinkshere-prev' => '前$1個', |
1384 | 1384 | 'whatlinkshere-next' => '後$1個', |
| 1385 | +'whatlinkshere-links' => '← 鏈入', |
1385 | 1386 | |
1386 | 1387 | # Block/unblock |
1387 | 1388 | 'blockip' => '查封IP地址', |
Index: branches/liquidthreads/languages/messages/MessagesDa.php |
— | — | @@ -364,9 +364,9 @@ |
365 | 365 | 'ok' => 'OK', |
366 | 366 | 'pagetitle' => '$1 - {{SITENAME}}', |
367 | 367 | 'retrievedfrom' => 'Hentet fra "$1"', |
368 | | -'youhavenewmessages' => 'Du har $2 på din $1.', |
| 368 | +'youhavenewmessages' => 'Du har $1 ($2).', |
369 | 369 | 'newmessageslink' => 'nye beskeder', |
370 | | -'newmessagesdifflink' => 'sidste ændring', |
| 370 | +'newmessagesdifflink' => 'ændringer siden sidste visning', |
371 | 371 | 'editsection' => 'redigér', |
372 | 372 | 'editold' => 'redigér', |
373 | 373 | 'editsectionhint' => 'Rediger afsnit: $1', |
Index: branches/liquidthreads/languages/messages/MessagesDe.php |
— | — | @@ -604,6 +604,7 @@ |
605 | 605 | *Sperrgrund: $2 |
606 | 606 | *Sperrende: $6 |
607 | 607 | *IP-Adresse: $3 |
| 608 | +*Sperre betrifft: $7 |
608 | 609 | *Sperr-ID: #$5 |
609 | 610 | </div>', |
610 | 611 | '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 @@ |
597 | 597 | |
598 | 598 | 呢次封鎖係由$1所封嘅。當中嘅原因係''$2''。 |
599 | 599 | |
600 | | -呢次封鎖嘅到期時間係:$6 |
| 600 | +呢次封鎖嘅到期時間係:$6<br /> |
| 601 | +對於被封鎖者:$7 |
601 | 602 | |
602 | 603 | 你可以聯絡 $1 或者其他嘅[[{{MediaWiki:grouppage-sysop}}|管理員]],討論呢次封鎖。 |
603 | 604 | |
— | — | @@ -1515,7 +1516,7 @@ |
1516 | 1517 | 'istemplate' => '包含', |
1517 | 1518 | 'whatlinkshere-prev' => '前$1版', |
1518 | 1519 | 'whatlinkshere-next' => '後$1版', |
1519 | | -'whatlinkshere-links' => '(← 連結)', |
| 1520 | +'whatlinkshere-links' => '← 連結', |
1520 | 1521 | |
1521 | 1522 | # Block/unblock IP |
1522 | 1523 | # |
Index: branches/liquidthreads/languages/messages/MessagesPt.php |
— | — | @@ -46,57 +46,28 @@ |
47 | 47 | 'chick' => 'Chick' |
48 | 48 | ); |
49 | 49 | |
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 | + |
101 | 72 | ); |
102 | 73 | |
103 | 74 | $separatorTransformTable = array(',' => ' ', '.' => ',' ); |
— | — | @@ -556,7 +527,8 @@ |
557 | 528 | |
558 | 529 | O bloqueio foi realizado por $1. O motivo apresentado foi \'\'$2\'\'. |
559 | 530 | |
560 | | -Expiração do bloqueio: $6 |
| 531 | +Expiração do bloqueio: $6<br /> |
| 532 | +Destino do bloqueio: $7 |
561 | 533 | |
562 | 534 | Você pode contactar $1 ou outro [[{{MediaWiki:grouppage-sysop}}|administrador]] para discutir sobre o bloqueio. |
563 | 535 | |
— | — | @@ -730,7 +702,7 @@ |
731 | 703 | |
732 | 704 | 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.", |
733 | 705 | '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', |
735 | 707 | 'revdelete-hide-name' => 'Ocultar acção e alvo', |
736 | 708 | 'revdelete-hide-comment' => 'Esconder comentário de edição', |
737 | 709 | 'revdelete-hide-user' => 'Esconder nome de utilizador/IP do editor', |
— | — | @@ -739,7 +711,7 @@ |
740 | 712 | 'revdelete-hide-image' => 'Ocultar conteúdos do ficheiro', |
741 | 713 | 'revdelete-unsuppress' => 'Remover restrições das edições restauradas', |
742 | 714 | 'revdelete-log' => 'Comentário de registo:', |
743 | | -'revdelete-submit' => 'Aplicar a revisões seleccionadas', |
| 715 | +'revdelete-submit' => 'Aplicar à edição seleccionada', |
744 | 716 | 'revdelete-logentry' => 'modificada visibilidade de revisão para [[$1]]', |
745 | 717 | 'logdelete-logentry' => 'alterada visibilidade de eventos para [[$1]]', |
746 | 718 | 'revdelete-logaction' => '$1 {{PLURAL:$1|edição definida|edições definidas}} como $2', |
— | — | @@ -838,7 +810,7 @@ |
839 | 811 | 'contextchars' => 'Contexto por linha:', |
840 | 812 | 'stubthreshold' => 'Variação para a visualização de esboços:', |
841 | 813 | '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:', |
843 | 815 | 'savedprefs' => 'As suas preferências foram salvas.', |
844 | 816 | 'timezonelegend' => 'Fuso horário', |
845 | 817 | 'timezonetext' => 'Número de horas que o seu horário local difere do horário do servidor (UTC).', |
— | — | @@ -905,7 +877,7 @@ |
906 | 878 | 'show' => 'Mostrar', |
907 | 879 | 'minoreditletter' => 'm', |
908 | 880 | 'newpageletter' => 'N', |
909 | | -'boteditletter' => 'r', |
| 881 | +'boteditletter' => 'b', |
910 | 882 | 'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 utilizador|$1 utilizadores}} a vigiar]', |
911 | 883 | 'rc_categories' => 'Limite para categorias (separar com "|")', |
912 | 884 | 'rc_categories_any' => 'Qualquer', |
— | — | @@ -1107,7 +1079,7 @@ |
1108 | 1080 | 'wantedcategories' => 'Categorias pedidas', |
1109 | 1081 | 'wantedpages' => 'Páginas pedidas', |
1110 | 1082 | 'mostlinked' => 'Páginas com mais afluentes', |
1111 | | -'mostlinkedcategories' => 'Categorias com mais afluentes', |
| 1083 | +'mostlinkedcategories' => 'Categorias com mais membros', |
1112 | 1084 | 'mostcategories' => 'Páginas de conteúdo com mais categorias', |
1113 | 1085 | 'mostimages' => 'Imagens com mais afluentes', |
1114 | 1086 | 'mostrevisions' => 'Páginas de conteúdo com mais revisões', |
— | — | @@ -1134,7 +1106,7 @@ |
1135 | 1107 | 'move' => 'Mover', |
1136 | 1108 | 'movethispage' => 'Mover esta página', |
1137 | 1109 | '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.', |
1139 | 1111 | |
1140 | 1112 | # Book sources |
1141 | 1113 | 'booksources' => 'Fontes de livros', |
— | — | @@ -1158,7 +1130,7 @@ |
1159 | 1131 | 'log-search-legend' => 'Pesquisar nos registos', |
1160 | 1132 | 'log-search-submit' => 'Ir', |
1161 | 1133 | '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.', |
1163 | 1135 | 'logempty' => 'Nenhum item idêntico no registo.', |
1164 | 1136 | 'log-title-wildcard' => 'Procurar por títulos que sejam iniciados com o seguinte texto', |
1165 | 1137 | |
— | — | @@ -1296,7 +1268,7 @@ |
1297 | 1269 | # Delete/protect/revert |
1298 | 1270 | 'deletepage' => 'Eliminar página', |
1299 | 1271 | 'confirm' => 'Confirmar', |
1300 | | -'excontent' => "conteúdo era: '$1'", |
| 1272 | +'excontent' => "o conteúdo era: '$1'", |
1301 | 1273 | 'excontentauthor' => "o conteúdo era: '$1' (e o único editor era '[[{{ns:special}}:Contributions/$2|$2]]')", |
1302 | 1274 | 'exbeforeblank' => "o conteúdo antes de esvaziar era: '$1'", |
1303 | 1275 | 'exblank' => 'página esvaziada', |
— | — | @@ -1325,7 +1297,7 @@ |
1326 | 1298 | |
1327 | 1299 | A última edição foi de [[{{ns:user}}:$3|$3]] ([[{{ns:user_talk}}:$3|Discussão]]).', |
1328 | 1300 | '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]]', |
1330 | 1302 | 'sessionfailure' => 'Foram detectados problemas com a sua sessão; |
1331 | 1303 | Esta acção foi cancelada como medida de protecção contra a intercepção de sessões. |
1332 | 1304 | Experimente usar o botão "Voltar" e refrescar a página de onde veio e tente novamente.', |
— | — | @@ -1347,8 +1319,7 @@ |
1348 | 1320 | 'confirmunprotect' => 'Confirmar desprotecção', |
1349 | 1321 | 'unprotectcomment' => 'Motivo de desprotecção', |
1350 | 1322 | '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>.', |
1353 | 1324 | '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>:', |
1354 | 1325 | 'protect-locked-dblock' => 'Não é possível alterar os níveis de proteção, uma vez que a base de dados se encontra trancada. |
1355 | 1326 | Esta é a configuração atual para a página <strong>$1</strong>:', |
— | — | @@ -1392,8 +1363,7 @@ |
1393 | 1364 | that you don't have permission to view will not be restored.", |
1394 | 1365 | '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.', |
1395 | 1366 | '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.', |
1398 | 1368 | 'undeletebtn' => 'Restaurar', |
1399 | 1369 | 'undeletereset' => 'Limpar', |
1400 | 1370 | 'undeletecomment' => 'Comentário:', |
— | — | @@ -1438,17 +1408,18 @@ |
1439 | 1409 | 'sp-newimages-showfrom' => 'Mostrar novas imagens começando de $1', |
1440 | 1410 | |
1441 | 1411 | # 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', |
1453 | 1424 | |
1454 | 1425 | # Block/unblock |
1455 | 1426 | 'blockip' => 'Bloquear utilizador', |
— | — | @@ -1826,20 +1797,12 @@ |
1827 | 1798 | 'exif-orientation' => 'Orientação', |
1828 | 1799 | 'exif-samplesperpixel' => 'Número de componentes', |
1829 | 1800 | 'exif-planarconfiguration' => 'Arranjo de dados', |
1830 | | -'exif-ycbcrsubsampling' => 'Subsampling ratio of Y to C', |
1831 | 1801 | 'exif-ycbcrpositioning' => 'Posicionamento Y e C', |
1832 | 1802 | 'exif-xresolution' => 'Resolução horizontal', |
1833 | 1803 | 'exif-yresolution' => 'Resolução vertical', |
1834 | | -'exif-resolutionunit' => 'Unit of X and Y resolution', |
1835 | 1804 | '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', |
1839 | 1805 | 'exif-jpeginterchangeformatlength' => 'Bytes de dados JPEG', |
1840 | 1806 | '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', |
1844 | 1807 | 'exif-referenceblackwhite' => 'Par de valores de referência de preto e branco', |
1845 | 1808 | 'exif-datetime' => 'Data e hora de modificação do ficheiro', |
1846 | 1809 | 'exif-imagedescription' => 'Título', |
— | — | @@ -1860,15 +1823,11 @@ |
1861 | 1824 | 'exif-relatedsoundfile' => 'Ficheiro áudio relacionado', |
1862 | 1825 | 'exif-datetimeoriginal' => 'Data e hora de geração de dados', |
1863 | 1826 | 'exif-datetimedigitized' => 'Data e hora de digitalização', |
1864 | | -'exif-subsectime' => 'DateTime subseconds', |
1865 | | -'exif-subsectimeoriginal' => 'DateTimeOriginal subseconds', |
1866 | | -'exif-subsectimedigitized' => 'DateTimeDigitized subseconds', |
1867 | 1827 | 'exif-exposuretime' => 'Tempo de exposição', |
1868 | 1828 | 'exif-exposuretime-format' => '$1 seg ($2)', |
1869 | 1829 | 'exif-fnumber' => 'Número F', |
1870 | 1830 | 'exif-fnumber-format' => 'f/$1', |
1871 | 1831 | 'exif-exposureprogram' => 'Programa de exposição', |
1872 | | -'exif-spectralsensitivity' => 'Spectral sensitivity', |
1873 | 1832 | 'exif-isospeedratings' => 'Taxa de velocidade ISO', |
1874 | 1833 | 'exif-oecf' => 'Factor optoelectrónico de conversão.', |
1875 | 1834 | 'exif-shutterspeedvalue' => 'Velocidade do obturador', |
— | — | @@ -1877,33 +1836,24 @@ |
1878 | 1837 | 'exif-exposurebiasvalue' => 'Polarização de exposição', |
1879 | 1838 | 'exif-maxaperturevalue' => 'Abertura máxima', |
1880 | 1839 | 'exif-subjectdistance' => 'Distância do sujeito', |
1881 | | -'exif-meteringmode' => 'Metering mode', |
1882 | 1840 | 'exif-lightsource' => 'Fonte de luz', |
1883 | 1841 | 'exif-flash' => 'Flash', |
1884 | 1842 | 'exif-focallength' => 'Comprimento de foco da lente', |
1885 | 1843 | 'exif-focallength-format' => '$1 mm', |
1886 | 1844 | 'exif-subjectarea' => 'Área de sujeito', |
1887 | 1845 | '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', |
1892 | 1846 | 'exif-subjectlocation' => 'Localização de sujeito', |
1893 | 1847 | 'exif-exposureindex' => 'Índice de exposição', |
1894 | 1848 | 'exif-sensingmethod' => 'Método de sensação', |
1895 | 1849 | 'exif-filesource' => 'Fonte do ficheiro', |
1896 | 1850 | 'exif-scenetype' => 'Tipo de cena', |
1897 | 1851 | 'exif-cfapattern' => 'padrão CFA', |
1898 | | -'exif-customrendered' => 'Custom image processing', |
1899 | 1852 | 'exif-exposuremode' => 'Modo de exposição', |
1900 | | -'exif-whitebalance' => 'White Balance', |
1901 | 1853 | 'exif-digitalzoomratio' => 'Proporção de zoom digital', |
1902 | | -'exif-focallengthin35mmfilm' => 'Focal length in 35 mm film', |
1903 | 1854 | 'exif-scenecapturetype' => 'Tipo de captura de cena', |
1904 | 1855 | 'exif-gaincontrol' => 'Controlo de cena', |
1905 | 1856 | 'exif-contrast' => 'Contraste', |
1906 | 1857 | 'exif-saturation' => 'Saturação', |
1907 | | -'exif-sharpness' => 'Sharpness', |
1908 | 1858 | 'exif-devicesettingdescription' => 'Descrição das configurações do dispositivo', |
1909 | 1859 | 'exif-subjectdistancerange' => 'Distância de alcance do sujeito', |
1910 | 1860 | 'exif-imageuniqueid' => 'Identificação única da imagem', |
— | — | @@ -1931,7 +1881,6 @@ |
1932 | 1882 | 'exif-gpsdestlongituderef' => 'Referência para a longitude do destino', |
1933 | 1883 | 'exif-gpsdestlongitude' => 'Longitude do destino', |
1934 | 1884 | 'exif-gpsdestbearingref' => 'Reference for bearing of destination', |
1935 | | -'exif-gpsdestbearing' => 'Bearing of destination', |
1936 | 1885 | 'exif-gpsdestdistanceref' => 'Referência de distância para o destino', |
1937 | 1886 | 'exif-gpsdestdistance' => 'Distância para o destino', |
1938 | 1887 | 'exif-gpsprocessingmethod' => 'Nome do método de processamento do GPS', |
— | — | @@ -1948,15 +1897,6 @@ |
1949 | 1898 | |
1950 | 1899 | 'exif-unknowndate' => 'Data desconhecida', |
1951 | 1900 | |
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 | | - |
1961 | 1901 | 'exif-planarconfiguration-1' => 'formato irregular', |
1962 | 1902 | 'exif-planarconfiguration-2' => 'formato plano', |
1963 | 1903 | |
— | — | @@ -1976,10 +1916,6 @@ |
1977 | 1917 | |
1978 | 1918 | 'exif-exposureprogram-0' => 'Não definido', |
1979 | 1919 | '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)', |
1984 | 1920 | 'exif-exposureprogram-6' => 'Programa de movimento (tende a velocidade de disparo mais rápida)', |
1985 | 1921 | 'exif-exposureprogram-7' => 'Modo de retrato (para fotos em <i>closeup</i> com o fundo fora de foco)', |
1986 | 1922 | 'exif-exposureprogram-8' => 'Modo de paisagem (para fotos de paisagem com o fundo em foco)', |
— | — | @@ -2001,7 +1937,6 @@ |
2002 | 1938 | |
2003 | 1939 | 'exif-exposuremode-0' => 'Exposição automática', |
2004 | 1940 | 'exif-exposuremode-1' => 'Exposição manual', |
2005 | | -'exif-exposuremode-2' => 'Auto bracket', |
2006 | 1941 | |
2007 | 1942 | 'exif-scenecapturetype-0' => 'Padrão', |
2008 | 1943 | 'exif-scenecapturetype-1' => 'Paisagem', |
— | — | @@ -2152,6 +2087,10 @@ |
2153 | 2088 | 'livepreview-error' => 'Falha ao conectar: $1 "$2" |
2154 | 2089 | Tente a previsão comum.', |
2155 | 2090 | |
| 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 | + |
2156 | 2095 | ); |
2157 | 2096 | |
2158 | 2097 | ?> |
Index: branches/liquidthreads/languages/messages/MessagesFa.php |
— | — | @@ -2,6 +2,7 @@ |
3 | 3 | /** Persian (فارسی) |
4 | 4 | * |
5 | 5 | * @addtogroup Language |
| 6 | + * Maintainer: Hojjat - huji.odp@gmail.com |
6 | 7 | */ |
7 | 8 | $skinNames = array( |
8 | 9 | 'standard' => 'استاندارد', |
— | — | @@ -117,283 +118,324 @@ |
118 | 119 | 'ISO 8601 date' => 'xnY-xnm-xnd', |
119 | 120 | 'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns', |
120 | 121 | ); |
| 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 | + |
121 | 188 | $linkTrail = "/^([a-z]+)(.*)\$/sD"; /* This may need to be changed --RP */ |
122 | 189 | |
123 | 190 | $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' => 'از کار انداختن حافظهی نهانی صفحات', |
125 | 209 | |
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' => "از کار انداختن حافظهی نهانی صفحات", |
143 | 210 | # 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' => 'دسامبر', |
144 | 242 | |
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' => 'زیرردهها', |
176 | 248 | |
177 | | -# Bits of text used by many pages: |
178 | | -# |
179 | | -'categories' => "ردههای صفحات", |
180 | | -'pagecategories' => "ردههای صفحات", |
181 | | -'category_header' => "مقالههای ردهی «$1»", |
182 | | -'subcategories' => "زیرردهها", |
| 249 | +'mainpagetext' => 'نرمافزار ویکی با موفقیت نصب شد.', |
183 | 250 | |
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' => 'بحث من', |
251 | 263 | |
| 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 | + |
252 | 319 | # Main script and global functions |
253 | | -# |
254 | | -'nosuchaction' => "چنین عملی وجود ندارد", |
255 | | -'nosuchactiontext' => "ویکی عمل مشخص شده در URL را نمیشناسد", |
256 | | -'nosuchspecialpage' => "چنین صفحهی ویژهای وجود ندارد", |
257 | | -'nospecialpagetext' => "شما صفحهی ویژهای را درخواست کردهاید که ویکی نمیشناسد.", |
| 320 | +'nosuchaction' => 'چنین عملی وجود ندارد', |
| 321 | +'nosuchactiontext' => 'ویکی عمل مشخص شده در URL را نمیشناسد', |
| 322 | +'nosuchspecialpage' => 'چنین صفحهی ویژهای وجود ندارد', |
| 323 | +'nospecialpagetext' => 'شما صفحهی ویژهای را درخواست کردهاید که ویکی نمیشناسد.', |
258 | 324 | |
259 | 325 | # 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» را که باید مییافت، نیافت. |
279 | 334 | |
280 | 335 | <p>این مشکل معمولاٌ بر اثر ادامه دادن پیوندهای تاریخگذشتهی تفاوت یا تاریخچهی صفحاتی رخ میدهد که حذف شدهاند. |
281 | 336 | |
282 | 337 | <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 /> |
299 | 354 | تابع: $1<br /> |
300 | | -پرسوجو: $2", |
301 | | -'viewsource' => "نمایش مبدأ", |
302 | | -'protectedtext' => "این صفحه برای جلوگیری از ویرایش قفل شده است؛ این کار ممکن است دلایل مختلفی داشته باشد. لطفاً به |
303 | | -[[{{ns:project}}:صفحهی محافظتشده]] مراجعه کنید. |
| 355 | +پرسوجو: $2', |
| 356 | +'viewsource' => 'نمایش مبدأ', |
304 | 357 | |
305 | | -شما میتوانید مبدأ این صفحه را مشاهده و تکثیر کنید:", |
306 | | - |
307 | 358 | # Login and logout pages |
308 | | -# |
309 | | -'logouttitle' => "خروج کاربر از سیستم", |
310 | | -'logouttext' => "اکنون از سیستم خارج شدید. |
| 359 | +'logouttitle' => 'خروج کاربر از سیستم', |
| 360 | +'logouttext' => 'اکنون از سیستم خارج شدید. |
311 | 361 | شما میتوانید به استفادهی گمنام از {{SITENAME}} ادامه دهید، یا میتوانید با همین کاربر یا کاربر دیگری |
312 | 362 | به سیستم وارد شوید. توجه کنید که تا زمانی که cache مرورگرتان را پاک کنید، |
313 | | -بعضی صفحات ممکن است به شکلی نمایش یابند که انگار هنوز وارد سیستم هستید.", |
314 | | - |
315 | | -'welcomecreation' => "<h2>$1، خوش آمدید!</h2><p>حساب شما |
| 363 | +بعضی صفحات ممکن است به شکلی نمایش یابند که انگار هنوز وارد سیستم هستید.', |
| 364 | +'welcomecreation' => '<h2>$1، خوش آمدید!</h2><p>حساب شما |
316 | 365 | ایجاد شد. |
317 | 366 | فراموش نکنید که ترجیحات {{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 | +لطفاٌ پس از دریافت آن دوباره به سیستم وارد شوید.', |
319 | 402 | |
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 | | - |
360 | 403 | # 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' => 'خط افقی (با صرفهجویی استفاده کنید)', |
381 | 424 | |
382 | 425 | # 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 بسته شده است. |
393 | 435 | دلیل دادهشده این است:<br />''$2''<p>شما میتوانید با $1 یا یکی از |
394 | 436 | [[{{ns:project}}:مدیران|مدیران]] تماس بگیرید و در این باره صحبت کنید. |
395 | 437 | |
396 | 438 | توجه کنید که شما نمیتوانید از امکان «فرستادن پست الکترونیکی به این کاربر» استفاده کنید مگر اینکه نشانی پست الکترونیکی |
397 | | -معتبری در [[ویژه:ترجیحات|ترجیحات کاربری]]تان ثبت کرده باشید. |
| 439 | +معتبری در [[Special:Preferences|ترجیحات کاربری]]تان ثبت کرده باشید. |
398 | 440 | |
399 | 441 | نشانی IP شما $3 است. لطفاً این نشانی را در کلیهی پرسوجوهایتان ذکر کنید. |
400 | 442 | |
— | — | @@ -404,197 +446,175 @@ |
405 | 447 | |
406 | 448 | اگر این اتفاق برای شما افتاد، لطفاً به یکی از مدیران از یک نشانی پست الکترونیک AOL پیغام بفرستید. حتماً نشانی IPی را در فوق داده شده |
407 | 449 | ذکر کنید.", |
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' => "شما پیوندی را دنبال کردهاید و به صفحهای رسیدهاید که هنوز وجود ندارد. |
421 | 462 | برای ایجاد صفحه، در مستطیل زیر شروع به تایپ کنید |
422 | 463 | (برای اطلاعات بیشتر به [[{{ns:project}}:راهنما|صفحهی راهنما]] مراجعه کنید). |
423 | 464 | اگر اشتباهاً اینجا آمدهاید، دکمهی '''back''' مرورگرتان را بزنید.", |
424 | | -'anontalkpagetext' => "---- ''این صفحهی بحث برای کاربر گمنامی است که هنوز حسابی درست نکرده است یا از آن استفاده نمیکند. |
425 | | -بنابراین برای شناساییاش مجبوریم از [[نشانی IP]] عددی استفاده کنیم. چنین نشانیهای IPای ممکن است توسط چندین کاربر به شکل |
| 465 | +'anontalkpagetext' => "---- ''این صفحهی بحث برای کاربر گمنامی است که هنوز حسابی درست نکرده است یا از آن استفاده نمیکند. |
| 466 | +بنابراین برای شناساییاش مجبوریم از نشانی IP عددی استفاده کنیم. چنین نشانیهای IPای ممکن است توسط چندین کاربر به شکل |
426 | 467 | مشترک استفاده شود. |
427 | 468 | اگر شما کاربر گمنامی هستید و تصور میکنید اظهار نظرات نامربوط به شما صورت گرفته است، |
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' => 'از وقتی شما ویرایش این صفحه را آغاز کردهاید شخص دیگری آن را تغییر داده است. |
441 | 482 | ناحیهی متنی بالایی شامل متن صفحه به شکل فعلی آن است. |
442 | 483 | تغییرات شما در ناحیهی متنی پایینی نشان داده شده است. |
443 | 484 | شما باید تغییراتتان را با متن فعلی ترکیب کنید. |
444 | | -وقتی «ذخیرهی صفحه» را فشار دهید، <b>فقط</b> متن ناحیهی متنی بالایی ذخیره خواهد شد.<br />", |
445 | | -'yourtext' => "متن شما", |
446 | | -'storedversion' => "نسخهی ضبطشده", |
447 | | -'editingold' => "<strong>هشدار: |
| 485 | +وقتی «ذخیرهی صفحه» را فشار دهید، <b>فقط</b> متن ناحیهی متنی بالایی ذخیره خواهد شد.<br />', |
| 486 | +'yourtext' => 'متن شما', |
| 487 | +'storedversion' => 'نسخهی ضبطشده', |
| 488 | +'editingold' => '<strong>هشدار: |
448 | 489 | شما دارید نسخهی قدیمیای از این صفحه را ویرایش میکنید. |
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 کیلوبایت طول دارد؛ |
461 | 493 | بعضی مرورگرها ممکن با ویرایش صفحات نزدیک به ۳۲ کیلوبایت یا طولانیتر از آن مشکلاتی داشته باشند. |
462 | | -لطفاً دربارهی شکستن این صفحه به قسمتهای کوچکتر فکر کنید.</strong>", |
463 | | -'readonlywarning' => "<strong>هشدار: پایگاه داده برای نگهداری قفل شده است، |
| 494 | +لطفاً دربارهی شکستن این صفحه به قسمتهای کوچکتر فکر کنید.</strong>', |
| 495 | +'readonlywarning' => '<strong>هشدار: پایگاه داده برای نگهداری قفل شده است، |
464 | 496 | بنابراین نمیتوانید ویرایشهایتان را همین الآن ذخیره کنید. |
465 | | -اگر میخواهید متن را در یک پروندهی متنی ببرید و بچسبانید و برای آینده ذخیرهاش کنید.</strong>", |
466 | | -'protectedpagewarning' => "<strong>هشدار: این صفحه قفل شده است تا فقط کاربران با امتیاز اپراتور سیستم بتوانند ویرایشش کنند. |
| 497 | +اگر میخواهید متن را در یک پروندهی متنی ببرید و بچسبانید و برای آینده ذخیرهاش کنید.</strong>', |
| 498 | +'protectedpagewarning' => '<strong>هشدار: این صفحه قفل شده است تا فقط کاربران با امتیاز اپراتور سیستم بتوانند ویرایشش کنند. |
467 | 499 | مطمئن شوید که از |
468 | | -[[{{ns:project}}:توصیههای صفحات محافظتشده|توصیههای صفحات محافظتشده]] پیروی میکنید.</strong>", |
| 500 | +[[{{ns:project}}:توصیههای صفحات محافظتشده|توصیههای صفحات محافظتشده]] پیروی میکنید.</strong>', |
469 | 501 | |
470 | 502 | # 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 | +(آخرین) = تفاوت با نسخهی قبلی، جز = ویرایش جزئی', |
486 | 517 | |
487 | 518 | # Diffs |
488 | | -# |
489 | | -'difference' => "(تفاوت بین نسخهها)", |
490 | | -'loadingrev' => "در حال خواندن نسخه برای تفاوت گرفتن", |
491 | | -'lineno' => "سطر $1:", |
492 | | -'editcurrent' => "ویرایش نسخهی فعلی این صفحه", |
| 519 | +'difference' => '(تفاوت بین نسخهها)', |
| 520 | +'loadingrev' => 'در حال خواندن نسخه برای تفاوت گرفتن', |
| 521 | +'lineno' => 'سطر $1:', |
| 522 | +'editcurrent' => 'ویرایش نسخهی فعلی این صفحه', |
493 | 523 | |
494 | 524 | # 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' => 'نتوانستیم پرسوجوی شما را پردازش کنیم. |
502 | 531 | این مشکل احتمالاً به این دلیل است که سعی کردهاید به دنبال کلمهای کوتاهتر از سه حرف |
503 | 532 | بگردید، که هنوز پشتیبانی نمیشود. |
504 | 533 | همینطور ممکن است عبارت را اشتباه وارد کرده باشید، مثلاً «ماهی و و پولک». |
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' => ' |
524 | 545 | جستجو در فضاهای نام :<br /> |
525 | 546 | $1<br /> |
526 | | -$2 تغییرمسیرها فهرست شوند جستجو برای $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 تغییرمسیرها فهرست شوند جستجو برای $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' => '(اصلی)', |
529 | 550 | |
530 | 551 | # 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' => 'به طور پیشفرض در این فضاهای نام جستجو شود:', |
572 | 592 | |
573 | 593 | # 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' => 'جد', |
588 | 606 | |
| 607 | +# Recent changes linked |
| 608 | +'recentchangeslinked' => 'تغییرات مرتبط', |
| 609 | + |
589 | 610 | # 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' => "'''ایست!''' قبل از این که چیزی اینجا بار کنید، |
599 | 619 | مطمئن شوید که |
600 | 620 | [[{{ns:project}}:سیاست_استفاده_از_تصاویر|سیاست استفاده از تصاویر]] |
601 | 621 | را خواندهاید و از آن پیروی میکنید. |
— | — | @@ -624,300 +644,273 @@ |
625 | 645 | for drawings and other iconic images, and OGG for sounds. |
626 | 646 | Please name your files descriptively to avoid confusion. |
627 | 647 | 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. |
631 | 651 | |
632 | 652 | Please note that as with wiki pages, others may edit or |
633 | 653 | delete your uploads if they think it serves the encyclopedia, and |
634 | 654 | 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» با موفقیت بار شد. |
655 | 668 | لطفاً این پیوند را تعقیب کنید: ($2) تا صفحهی توصیف و اطلاعات در مورد |
656 | 669 | پرونده را، از قبیل این که از کجا آمده است، چه کسی و در چه زمانی آن را ایجاد کرده است، |
657 | | -و هر چیز دیگری که ممکن است در مورد آن بدانید، پر کنید.", |
658 | | -'uploadwarning' => "هشدار بار کردن", |
659 | | -'savefile' => "ذخیرهی پرونده", |
660 | | -'uploadedimage' => "«[[$1]]» بار شد", |
661 | | -'uploaddisabled' => "شرمنده، بار کردن از کار افتاده است.", |
| 670 | +و هر چیز دیگری که ممکن است در مورد آن بدانید، پر کنید.', |
| 671 | +'uploadwarning' => 'هشدار بار کردن', |
| 672 | +'savefile' => 'ذخیرهی پرونده', |
| 673 | +'uploadedimage' => '«[[$1]]» بار شد', |
| 674 | +'uploaddisabled' => 'شرمنده، بار کردن از کار افتاده است.', |
662 | 675 | |
663 | 676 | # 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' => 'شرح: (فعلی) = این تصویر فعلی است، (حذف) = این |
681 | 693 | نسخهی قدیمی حذف شود، (برگرد) = برگرداندن به این نسخهی قدیمی. |
682 | | -<br /><i>برای دیدن تصویر بار شده در تاریخ مشخص، روی تاریخ کلیک کنید</i>.", |
683 | | -'imagelinks' => "پیوندهای تصاویر", |
684 | | -'linkstoimage' => "این صفحات به این تصویر پیوند دارند:", |
685 | | -'nolinkstoimage' => "هیچ صفحهای به این تصویر پیوند ندارد.", |
| 694 | +<br /><i>برای دیدن تصویر بار شده در تاریخ مشخص، روی تاریخ کلیک کنید</i>.', |
| 695 | +'imagelinks' => 'پیوندهای تصاویر', |
| 696 | +'linkstoimage' => 'این صفحات به این تصویر پیوند دارند:', |
| 697 | +'nolinkstoimage' => 'هیچ صفحهای به این تصویر پیوند ندارد.', |
686 | 698 | |
687 | 699 | # Statistics |
688 | | -# |
689 | | -'statistics' => "آمار", |
690 | | -'sitestats' => "آمار وبگاه", |
691 | | -'userstats' => "آمار کاربران", |
692 | | -'sitestatstext' => "کلاً <b>$1</b> صفحه در پایگاه داده هست. |
| 700 | +'statistics' => 'آمار', |
| 701 | +'sitestats' => 'آمار وبگاه', |
| 702 | +'userstats' => 'آمار کاربران', |
| 703 | +'sitestatstext' => 'کلاً <b>$1</b> صفحه در پایگاه داده هست. |
693 | 704 | این شامل صفحات «بحث»، صفحات دربارهی {{SITENAME}}، صفحات «ناقص» کوچک، |
694 | 705 | تغییرمسیرها، و صفحات دیگری میشود که احتمالاً مقاله به حساب نمیآیند. |
695 | 706 | فارق از اینها، <b>$2</b> صفحه هست که احتمالاً مقالهی معقول هستند.<p> |
696 | 707 | از زمانی که نرمافزار ارتقا یافته (۲۰ ژوئیهی ۲۰۰۲)، کلاً <b>$3</b> بازدید از صفحات، |
697 | 708 | و <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 مراجعه شود).', |
701 | 712 | |
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}}:پیوند به صفحات رفع ابهام', |
711 | 715 | |
| 716 | +'doubleredirects' => 'تغییرمسیرهای دوتایی', |
712 | 717 | |
| 718 | +'brokenredirects' => 'تغییرمسیرهای خراب', |
| 719 | +'brokenredirectstext' => 'تغییرمسیرهای زیر به یک صفحهی ناموجود پیوند دارند.', |
| 720 | + |
713 | 721 | # 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}}های بینالمللی |
736 | 743 | ممکن است با 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 | +اینجا فهرست شده باشند.', |
745 | 745 | |
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' => 'اگر این کاربر نشانی پست الکترونیکی معتبری در ترجیحات کاربریش وارد کرده |
755 | 759 | باشد، فرم زیر یک پیغام میفرستد. |
756 | 760 | نشانی پست الکترونیکیای که در ترجیحات کاربریتان وارد کردهاید در نشانی فرستنده (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' => 'پیغام پست الکترونیکی شما فرستاده شد.', |
768 | 772 | |
769 | 773 | # 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; |
784 | 787 | $2 total pages edited since cutoff; |
785 | 788 | $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' => 'در اینجا فهرست الفباییای از صفحات در تعقیب شما میآید. |
792 | 795 | در جعبهی صفحاتی که میخواهید از فهرست تعقیباتتان حذف شود تیک بزنید و روی دکمهی «برداشتن موارد» در پایین |
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' => 'این نسخهی ذخیرهشدهای از فهرست تعقیبات شما است.', |
800 | 803 | |
801 | | - |
802 | 804 | # 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' => 'فهرست زیر فهرستی از اخیرترین حذفها است. |
816 | 817 | همهی زمانهای نشاندادهشده زمان خادم (وقت گرینیچ) است. |
817 | 818 | <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]] |
825 | 826 | by [[User:$2|$2]] ([[User talk:$2|Talk]]); someone else has edited or rolled back the article already. |
826 | 827 | |
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]] از محافظت در آمد', |
836 | 836 | |
837 | 837 | # 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' => 'اگر این صفحه را احیا کنید، همهی نسخههای آن در تاریخچه احیا خواهند شد. |
845 | 844 | اگر صفحهی جدیدی با نام یکسان از زمان حذف ایجاد شده باشد، نسخههای احیاشده در تاریخچهی قبلی خواهند آمد، |
846 | | -و نسخهی فعلی صفحهی زنده به طور خودکار جایگزین نخواهد شد.", |
847 | | -'undeleterevision' => "حذف نسخهی به تاریخ $1", |
848 | | -'undeletebtn' => "احیا شود!", |
849 | | -'undeletedarticle' => "«$1» احیا شد", |
| 845 | +و نسخهی فعلی صفحهی زنده به طور خودکار جایگزین نخواهد شد.', |
| 846 | +'undeletebtn' => 'احیا شود!', |
| 847 | +'undeletedarticle' => '«$1» احیا شد', |
850 | 848 | |
851 | 849 | # 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' => ' (بالا)', |
860 | 857 | |
861 | 858 | # 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' => 'صفحهی تغییر مسیر', |
870 | 866 | |
871 | | -# Block/unblock IP |
872 | | -# |
873 | | -'blockip' => "بستن کاربر", |
874 | | -'blockiptext' => "از فرم زیر برای بستن دسترسی نوشتن از یک نشانی IP یا |
| 867 | +# Block/unblock |
| 868 | +'blockip' => 'بستن کاربر', |
| 869 | +'blockiptext' => 'از فرم زیر برای بستن دسترسی نوشتن از یک نشانی IP یا |
875 | 870 | نام کاربری مشخص استفاده کنید. |
876 | 871 | این کار فقط فقط باید برای جلوگیری از خرابکاری انجام شود، و بر اساس |
877 | 872 | [[{{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ی که به طور |
899 | 894 | خودکار بسته شدهاند فهرست نشدهاند. برای فهرست محرومیتها و بستهشدنهای عملیاتی در لحظهی حاضر، |
900 | | -به [[Special:Ipblocklist|فهرست IPهای بسته]] مراجعه کنید.", |
901 | | -'unblocklogentry' => '«$1» باز شد', |
| 895 | +به [[Special:Ipblocklist|فهرست IPهای بسته]] مراجعه کنید.', |
| 896 | +'unblocklogentry' => '«$1» باز شد', |
902 | 897 | |
903 | 898 | # 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' => 'پایگاه داده از قفل در آمد.', |
917 | 911 | |
918 | 912 | # Move page |
919 | | -# |
920 | | -'movepage' => "انتقال صفحه", |
921 | | -'movepagetext' => "با استفاده از فرم زیر نام صفحه تغییر خواهد کرد، و تمام تاریخچهاش به |
| 913 | +'movepage' => 'انتقال صفحه', |
| 914 | +'movepagetext' => "با استفاده از فرم زیر نام صفحه تغییر خواهد کرد، و تمام تاریخچهاش به |
922 | 915 | نام جدید منتقل خواهد شد. |
923 | 916 | عنوان قدیمی تبدیل به یک صفحهی تغییر مسیر به عنوان جدید خواهد شد. |
924 | 917 | پیوندهای به عنوان صفحهی قدیمی تغییر نخواهند کرد؛ حتماً تغییرمسیرهای دوتایی یا خراب را |
— | — | @@ -932,49 +925,44 @@ |
933 | 926 | <b>هشدار!</b> |
934 | 927 | این کار ممکن است تغییر اساسی و غیرمنتظرهای برای صفحات محبوب باشد؛ |
935 | 928 | لطفاً مطمئن شوید که قبل از ادامه دادن عواقب این کار را درک میکنید.", |
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 منتقل شد', |
953 | 946 | |
954 | 947 | # Export |
| 948 | +'export' => 'صدور صفحات', |
| 949 | +'exporttext' => 'شما میتوانید متن و تاریخچهی ویرایش یک صفحهی مشخص یا مجموعهای از صفحات را به شکل پوشیده در XML صادر کنید؛ |
| 950 | +این اطلاعات را میتوان وارد ویکی دیگری که نرمافزار مدیاویکی اجرا میکند کرد، تبدیل کرد، یا برای سرگرمی شخصی نگه داشت.', |
| 951 | +'exportcuronly' => 'فقط نسخهی فعلی بیاید، نه کل تاریخچه', |
955 | 952 | |
956 | | -'export' => "صدور صفحات", |
957 | | -'exporttext' => "شما میتوانید متن و تاریخچهی ویرایش یک صفحهی مشخص یا مجموعهای از صفحات را به شکل پوشیده در XML صادر کنید؛ |
958 | | -این اطلاعات را میتوان وارد ویکی دیگری که نرمافزار مدیاویکی اجرا میکند کرد، تبدیل کرد، یا برای سرگرمی شخصی نگه داشت.", |
959 | | -'exportcuronly' => "فقط نسخهی فعلی بیاید، نه کل تاریخچه", |
960 | | - |
961 | 953 | # Namespace 8 related |
| 954 | +'allmessages' => 'همهی پیغامها', |
| 955 | +'allmessagestext' => 'این فهرستی از همهی پیغامهای موجود در فضای نام مدیاویکی: است', |
962 | 956 | |
963 | | -'allmessages' => "همهی پیغامها", |
964 | | -'allmessagestext' => "این فهرستی از همهی پیغامهای موجود در فضای نام مدیاویکی: است", |
965 | | - |
966 | 957 | # Thumbnails |
| 958 | +'thumbnail-more' => 'بزرگ شود', |
967 | 959 | |
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' => 'توصیه برای مرورگرهای امروزی', |
969 | 966 | |
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 | | - |
978 | 967 | ); |
979 | 968 | |
980 | | - |
981 | 969 | ?> |
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 |
1 | 35 | + native |
Property changes on: branches/liquidthreads/maintenance/language/digit2html.php |
___________________________________________________________________ |
Added: svn:eol-style |
2 | 36 | + native |
Index: branches/liquidthreads/maintenance/parserTests.inc |
— | — | @@ -372,8 +372,14 @@ |
373 | 373 | 'wgScriptPath' => '/', |
374 | 374 | 'wgArticlePath' => '/wiki/$1', |
375 | 375 | '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 | + ), |
378 | 384 | 'wgStyleSheetPath' => '/skins', |
379 | 385 | 'wgSitename' => 'MediaWiki', |
380 | 386 | 'wgServerName' => 'Britney Spears', |
— | — | @@ -541,20 +547,12 @@ |
542 | 548 | */ |
543 | 549 | private function setupUploadDir() { |
544 | 550 | global $IP; |
545 | | - |
546 | 551 | $dir = wfTempDir() . "/mwParser-" . mt_rand() . "-images"; |
| 552 | + wfDebug( "Creating upload directory $dir\n" ); |
547 | 553 | mkdir( $dir ); |
548 | 554 | mkdir( $dir . '/3' ); |
549 | 555 | 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" ); |
559 | 557 | return $dir; |
560 | 558 | } |
561 | 559 | |
— | — | @@ -563,6 +561,7 @@ |
564 | 562 | * after each test runs. |
565 | 563 | */ |
566 | 564 | private function teardownGlobals() { |
| 565 | + RepoGroup::destroySingleton(); |
567 | 566 | foreach( $this->savedGlobals as $var => $val ) { |
568 | 567 | $GLOBALS[$var] = $val; |
569 | 568 | } |
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 |
12 | 18 | + native |
Index: branches/liquidthreads/docs/hooks.txt |
— | — | @@ -303,6 +303,10 @@ |
304 | 304 | $create: Whether or not the restoration caused the page to be created |
305 | 305 | (i.e. it didn't exist before) |
306 | 306 | |
| 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 | + |
307 | 311 | 'AuthPluginSetup': update or replace authentication plugin object ($wgAuth) |
308 | 312 | Gives a chance for an extension to set it programattically to a variable class. |
309 | 313 | &$auth: the $wgAuth object, probably a stub |
Property changes on: branches/liquidthreads |
___________________________________________________________________ |
Modified: svnmerge-integrated |
310 | 314 | - /trunk/phase3:1-22666 |
311 | 315 | + /trunk/phase3:1-22715 |