r23087 MediaWiki - Code Review archive

Repository:MediaWiki
Revision:r23086‎ | r23087 | r23088 >
Date:03:14, 19 June 2007
Author:david
Status:old
Tags:
Comment:
Merged revisions 23050-23086 via svnmerge from
svn+ssh://david@svn.wikimedia.org/svnroot/mediawiki/trunk/phase3

........
r23051 | ivanlanin | 2007-06-17 17:43:56 -0700 (Sun, 17 Jun 2007) | 1 line

Indonesian (id) localisation updates.
........
r23052 | yurik | 2007-06-17 19:00:23 -0700 (Sun, 17 Jun 2007) | 1 line

API: enh 10260: Added page protection status query in prop=info. Applied modified patch from Roan Kattouw.
........
r23055 | tstarling | 2007-06-17 23:33:48 -0700 (Sun, 17 Jun 2007) | 4 lines

* Allow the extension used for mime type detection to be different from the temporary file extension
* Fixed detection of script type from shell-style #! line
* When loading type info files, don't rely on $IP being the working directory
* Formatting
........
r23056 | tstarling | 2007-06-17 23:35:20 -0700 (Sun, 17 Jun 2007) | 1 line

Fixed regression in file type detection -- use the real file extension not the temporary file extension
........
r23057 | midom | 2007-06-18 00:37:43 -0700 (Mon, 18 Jun 2007) | 2 lines

Bug #10228 : don't show 1, when we can show 0. Literally. Yay.
........
r23058 | raymond | 2007-06-18 00:49:23 -0700 (Mon, 18 Jun 2007) | 2 lines

* (bug 7859) Update Kazakh translations
Patch by AlefZet
........
r23060 | raymond | 2007-06-18 01:04:29 -0700 (Mon, 18 Jun 2007) | 2 lines

* (bug 9742) Update Lithuanian translations
Patch by Edgaras
........
r23066 | robchurch | 2007-06-18 05:11:36 -0700 (Mon, 18 Jun 2007) | 1 line

Update per r22013
........
r23067 | raymond | 2007-06-18 05:55:01 -0700 (Mon, 18 Jun 2007) | 3 lines

Kurdish interface latin/arabic writing script system with transliteration
Adapted from Kazakh interface
Interface messages in Arabic script will be translated by Kurdish Wikipedia community
........
r23068 | nikerabbit | 2007-06-18 06:34:07 -0700 (Mon, 18 Jun 2007) | 3 lines

* Escape the output of magic variables that return page name or part of it
........
r23069 | brion | 2007-06-18 08:20:13 -0700 (Mon, 18 Jun 2007) | 2 lines

some minor fixlets, checking commit notifications
........
r23070 | brion | 2007-06-18 08:25:13 -0700 (Mon, 18 Jun 2007) | 2 lines

remove extra whitespace; testing commit notifications
........
r23071 | brion | 2007-06-18 08:30:39 -0700 (Mon, 18 Jun 2007) | 2 lines

cap consistency; testing commit notices
........
r23072 | brion | 2007-06-18 08:34:04 -0700 (Mon, 18 Jun 2007) | 2 lines

whitespace consistency
........
r23073 | brion | 2007-06-18 08:37:10 -0700 (Mon, 18 Jun 2007) | 2 lines

don't mix spaces and tabs in code examples, or the WHITESPACE GODS SHALL SMITE THEE
........
r23074 | raymond | 2007-06-18 08:37:49 -0700 (Mon, 18 Jun 2007) | 3 lines

* (bug 10305) Update Chinese translations
Patch by Shinjiman
* Update German
........
r23075 | aaron | 2007-06-18 11:03:38 -0700 (Mon, 18 Jun 2007) | 1 line

*Add username and talk to newbie contribs (bug 10306)
........
r23076 | raymond | 2007-06-18 12:23:48 -0700 (Mon, 18 Jun 2007) | 1 line

Removing accidentally inserted parts from kk-tr file
........
r23082 | nikerabbit | 2007-06-18 13:25:52 -0700 (Mon, 18 Jun 2007) | 2 lines

* Updates
........
Modified paths:
  • /branches/liquidthreads (modified) (history)
  • /branches/liquidthreads/RELEASE-NOTES (modified) (history)
  • /branches/liquidthreads/docs/hooks.txt (modified) (history)
  • /branches/liquidthreads/docs/title.txt (modified) (history)
  • /branches/liquidthreads/includes/Block.php (modified) (history)
  • /branches/liquidthreads/includes/MimeMagic.php (modified) (history)
  • /branches/liquidthreads/includes/Parser.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialContributions.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialStatistics.php (modified) (history)
  • /branches/liquidthreads/includes/SpecialUpload.php (modified) (history)
  • /branches/liquidthreads/includes/api/ApiQueryInfo.php (modified) (history)
  • /branches/liquidthreads/includes/filerepo/File.php (modified) (history)
  • /branches/liquidthreads/languages/Names.php (modified) (history)
  • /branches/liquidthreads/languages/classes/LanguageKu.deps.php (added) (history)
  • /branches/liquidthreads/languages/classes/LanguageKu.deps.php (added) (history)
  • /branches/liquidthreads/languages/classes/LanguageKu.php (added) (history)
  • /branches/liquidthreads/languages/classes/LanguageKu.php (added) (history)
  • /branches/liquidthreads/languages/classes/LanguageKu_ku.php (added) (history)
  • /branches/liquidthreads/languages/classes/LanguageKu_ku.php (added) (history)
  • /branches/liquidthreads/languages/messages/MessagesDe.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesEn.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesFi.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesId.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesKk_cn.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesKk_kz.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesKk_tr.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesKu.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesKu_arab.php (added) (history)
  • /branches/liquidthreads/languages/messages/MessagesKu_arab.php (added) (history)
  • /branches/liquidthreads/languages/messages/MessagesKu_latn.php (added) (history)
  • /branches/liquidthreads/languages/messages/MessagesKu_latn.php (added) (history)
  • /branches/liquidthreads/languages/messages/MessagesLt.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesZh_cn.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesZh_tw.php (modified) (history)
  • /branches/liquidthreads/languages/messages/MessagesZh_yue.php (modified) (history)
  • /branches/liquidthreads/maintenance/language/messageTypes.inc (modified) (history)
  • /branches/liquidthreads/maintenance/language/messages.inc (modified) (history)

Diff [purge]

Index: branches/liquidthreads/maintenance/language/messages.inc
@@ -1678,6 +1678,11 @@
16791679 'variantname-kk-cn',
16801680 'variantname-kk',
16811681 ),
 1682+ 'variantname-ku' => array(
 1683+ 'variantname-ku-arab',
 1684+ 'variantname-ku-latn',
 1685+ 'variantname-ku',
 1686+ ),
16821687 'passwordtooshort' => array(
16831688 'passwordtooshort',
16841689 ),
@@ -2227,6 +2232,7 @@
22282233 Variants for Chinese language",
22292234 'variantname-sr' => 'Variants for Serbian language',
22302235 'variantname-kk' => 'Variants for Kazakh language',
 2236+ 'variantname-ku' => 'Variants for Kurdish language',
22312237 'passwordtooshort' => '',
22322238 'media-info' => 'Media information',
22332239 'metadata' => 'Metadata',
Index: branches/liquidthreads/maintenance/language/messageTypes.inc
@@ -163,6 +163,9 @@
164164 'variantname-kk-kz',
165165 'variantname-kk-cn',
166166 'variantname-kk',
 167+ 'variantname-ku-latn',
 168+ 'variantname-ku-arab',
 169+ 'variantname-ku',
167170 'rc-change-size',
168171 'resetpass_text',
169172 'widthheight',
Index: branches/liquidthreads/docs/title.txt
@@ -10,15 +10,15 @@
1111 immutable "value" class, so there are no mutator functions.
1212
1313 To get a new instance, call one of the static factory
14 -methods WikiTitle::newFromURL(), WikiTitle::newFromDBKey(),
15 -or WikiTitle::newFromText(). Once instantiated, the
 14+methods Title::newFromURL(), Title::newFromDBKey(),
 15+or Title::newFromText(). Once instantiated, the
1616 other non-static accessor methods can be used, such as
1717 getText(), getDBKey(), getNamespace(), etc.
1818
19 -The prefix rules: a title consists of an optional Interwiki
 19+The prefix rules: a title consists of an optional interwiki
2020 prefix (such as "m:" for meta or "de:" for German), followed
2121 by an optional namespace, followed by the remainder of the
22 -title. Both Interwiki prefixes and namespace prefixes have
 22+title. Both interwiki prefixes and namespace prefixes have
2323 the same rules: they contain only letters, digits, space, and
2424 underscore, must start with a letter, are case insensitive,
2525 and spaces and underscores are interchangeable. Prefixes end
@@ -74,4 +74,3 @@
7575 the IDs for all instances of Title created during a request are
7676 cached, so they can be looked up quickly while rendering wiki
7777 text with lots of internal links.
78 -
Index: branches/liquidthreads/docs/hooks.txt
@@ -35,20 +35,20 @@
3636 title to all uppercase letters. Currently, in MediaWiki code, we
3737 would handle this as follows (note: not real code, here):
3838
39 - function showAnArticle($article) {
40 - global $wgReverseTitle, $wgCapitalizeTitle;
41 -
42 - if ($wgReverseTitle) {
43 - wfReverseTitle($article);
44 - }
45 -
46 - if ($wgCapitalizeTitle) {
47 - wfCapitalizeTitle($article);
48 - }
49 -
50 - # code to actually show the article goes here
51 - }
 39+ function showAnArticle($article) {
 40+ global $wgReverseTitle, $wgCapitalizeTitle;
5241
 42+ if ($wgReverseTitle) {
 43+ wfReverseTitle($article);
 44+ }
 45+
 46+ if ($wgCapitalizeTitle) {
 47+ wfCapitalizeTitle($article);
 48+ }
 49+
 50+ # code to actually show the article goes here
 51+ }
 52+
5353 An extension writer, or a local admin, will often add custom code to
5454 the function -- with or without a global variable. For example,
5555 someone wanting email notification when an article is shown may add:
@@ -75,15 +75,15 @@
7676 option-specific stuff in our mainline code. Using hooks, the function
7777 becomes:
7878
79 - function showAnArticle($article) {
 79+ function showAnArticle($article) {
8080
81 - if (wfRunHooks('ArticleShow', array(&$article))) {
82 -
83 - # code to actually show the article goes here
84 -
85 - wfRunHooks('ArticleShowComplete', array(&$article));
 81+ if (wfRunHooks('ArticleShow', array(&$article))) {
 82+
 83+ # code to actually show the article goes here
 84+
 85+ wfRunHooks('ArticleShowComplete', array(&$article));
 86+ }
8687 }
87 - }
8888
8989 We've cleaned up the code here by removing clumps of weird,
9090 infrequently used code and moving them off somewhere else. It's much
@@ -96,25 +96,25 @@
9797 in showAnArticle, deleteAnArticle, exportArticle, etc., we can
9898 concentrate it all in an extension file:
9999
100 - function reverseArticleTitle($article) {
101 - # ...
102 - }
 100+ function reverseArticleTitle($article) {
 101+ # ...
 102+ }
103103
104 - function reverseForExport($article) {
105 - # ...
106 - }
 104+ function reverseForExport($article) {
 105+ # ...
 106+ }
107107
108108 The setup function for the extension just has to add its hook
109109 functions to the appropriate events:
110110
111 - setupTitleReversingExtension() {
112 - global $wgHooks;
113 -
114 - $wgHooks['ArticleShow'][] = 'reverseArticleTitle';
115 - $wgHooks['ArticleDelete'][] = 'reverseArticleTitle';
116 - $wgHooks['ArticleExport'][] = 'reverseForExport';
117 - }
 111+ setupTitleReversingExtension() {
 112+ global $wgHooks;
118113
 114+ $wgHooks['ArticleShow'][] = 'reverseArticleTitle';
 115+ $wgHooks['ArticleDelete'][] = 'reverseArticleTitle';
 116+ $wgHooks['ArticleExport'][] = 'reverseForExport';
 117+ }
 118+
119119 Having all this code related to the title-reversion option in one
120120 place means that it's easier to read and understand; you don't have to
121121 do a grep-find to see where the $wgReverseTitle variable is used, say.
@@ -124,8 +124,8 @@
125125 performance at runtime. Admins who want to have all the reversed
126126 titles can add:
127127
128 - require_once('extensions/ReverseTitle.php');
129 -
 128+ require_once('extensions/ReverseTitle.php');
 129+
130130 ...to their LocalSettings.php file; those of us who don't want or need
131131 it can just leave it out.
132132
@@ -143,31 +143,31 @@
144144 Hooks are registered by adding them to the global $wgHooks array for a
145145 given event. All the following are valid ways to define hooks:
146146
147 - $wgHooks['EventName'][] = 'someFunction'; # function, no data
148 - $wgHooks['EventName'][] = array('someFunction', $someData);
149 - $wgHooks['EventName'][] = array('someFunction'); # weird, but OK
150 -
151 - $wgHooks['EventName'][] = $object; # object only
152 - $wgHooks['EventName'][] = array($object, 'someMethod');
153 - $wgHooks['EventName'][] = array($object, 'someMethod', $someData);
154 - $wgHooks['EventName'][] = array($object); # weird but OK
 147+ $wgHooks['EventName'][] = 'someFunction'; # function, no data
 148+ $wgHooks['EventName'][] = array('someFunction', $someData);
 149+ $wgHooks['EventName'][] = array('someFunction'); # weird, but OK
155150
 151+ $wgHooks['EventName'][] = $object; # object only
 152+ $wgHooks['EventName'][] = array($object, 'someMethod');
 153+ $wgHooks['EventName'][] = array($object, 'someMethod', $someData);
 154+ $wgHooks['EventName'][] = array($object); # weird but OK
 155+
156156 When an event occurs, the function (or object method) will be called
157157 with the optional data provided as well as event-specific parameters.
158158 The above examples would result in the following code being executed
159159 when 'EventName' happened:
160160
161 - # function, no data
162 - someFunction($param1, $param2)
163 - # function with data
164 - someFunction($someData, $param1, $param2)
 161+ # function, no data
 162+ someFunction($param1, $param2)
 163+ # function with data
 164+ someFunction($someData, $param1, $param2)
165165
166 - # object only
167 - $object->onEventName($param1, $param2)
168 - # object with method
169 - $object->someMethod($param1, $param2)
170 - # object with method and data
171 - $object->someMethod($someData, $param1, $param2)
 166+ # object only
 167+ $object->onEventName($param1, $param2)
 168+ # object with method
 169+ $object->someMethod($param1, $param2)
 170+ # object with method and data
 171+ $object->someMethod($someData, $param1, $param2)
172172
173173 Note that when an object is the hook, and there's no specified method,
174174 the default method called is 'onEventName'. For different events this
@@ -176,8 +176,8 @@
177177 The extra data is useful if we want to use the same function or object
178178 for different purposes. For example:
179179
180 - $wgHooks['ArticleSaveComplete'][] = array('ircNotify', 'TimStarling');
181 - $wgHooks['ArticleSaveComplete'][] = array('ircNotify', 'brion');
 180+ $wgHooks['ArticleSaveComplete'][] = array('ircNotify', 'TimStarling');
 181+ $wgHooks['ArticleSaveComplete'][] = array('ircNotify', 'brion');
182182
183183 This code would result in ircNotify being run twice when an article is
184184 saved: once for 'TimStarling', and once for 'brion'.
@@ -195,12 +195,12 @@
196196 users to a custom system (LDAP, another PHP program, whatever), you
197197 could do:
198198
199 - $wgHooks['UserLogin'][] = array('ldapLogin', $ldapServer);
200 -
201 - function ldapLogin($username, $password) {
202 - # log user into LDAP
203 - return false;
204 - }
 199+ $wgHooks['UserLogin'][] = array('ldapLogin', $ldapServer);
 200+
 201+ function ldapLogin($username, $password) {
 202+ # log user into LDAP
 203+ return false;
 204+ }
205205
206206 Returning false makes less sense for events where the action is
207207 complete, and will normally be ignored.
@@ -210,14 +210,15 @@
211211 A calling function or method uses the wfRunHooks() function to run
212212 the hooks related to a particular event, like so:
213213
214 - class Article {
215 - # ...
216 - function protect() {
217 - global $wgUser;
218 - if (wfRunHooks('ArticleProtect', array(&$this, &$wgUser))) {
219 - # protect the article
220 - wfRunHooks('ArticleProtectComplete', array(&$this, &$wgUser));
221 - }
 214+ class Article {
 215+ # ...
 216+ function protect() {
 217+ global $wgUser;
 218+ if (wfRunHooks('ArticleProtect', array(&$this, &$wgUser))) {
 219+ # protect the article
 220+ wfRunHooks('ArticleProtectComplete', array(&$this, &$wgUser));
 221+ }
 222+ }
222223 }
223224
224225 wfRunHooks() returns true if the calling function should continue
Index: branches/liquidthreads/includes/MimeMagic.php
@@ -111,56 +111,67 @@
112112 * --- load mime.types ---
113113 */
114114
115 - global $wgMimeTypeFile;
 115+ global $wgMimeTypeFile, $IP;
116116
117 - $types= MM_WELL_KNOWN_MIME_TYPES;
 117+ $types = MM_WELL_KNOWN_MIME_TYPES;
118118
119 - if ($wgMimeTypeFile) {
120 - if (is_file($wgMimeTypeFile) and is_readable($wgMimeTypeFile)) {
121 - wfDebug("MimeMagic::MimeMagic: loading mime types from $wgMimeTypeFile\n");
122 -
123 - $types.= "\n";
124 - $types.= file_get_contents($wgMimeTypeFile);
 119+ if ( $wgMimeTypeFile == 'includes/mime.types' ) {
 120+ $wgMimeTypeFile = "$IP/$wgMimeTypeFile";
 121+ }
 122+
 123+ if ( $wgMimeTypeFile ) {
 124+ if ( is_file( $wgMimeTypeFile ) and is_readable( $wgMimeTypeFile ) ) {
 125+ wfDebug( __METHOD__.": loading mime types from $wgMimeTypeFile\n" );
 126+ $types .= "\n";
 127+ $types .= file_get_contents( $wgMimeTypeFile );
 128+ } else {
 129+ wfDebug( __METHOD__.": can't load mime types from $wgMimeTypeFile\n" );
125130 }
126 - else wfDebug("MimeMagic::MimeMagic: can't load mime types from $wgMimeTypeFile\n");
 131+ } else {
 132+ wfDebug( __METHOD__.": no mime types file defined, using build-ins only.\n" );
127133 }
128 - else wfDebug("MimeMagic::MimeMagic: no mime types file defined, using build-ins only.\n");
129134
130 - $types= str_replace(array("\r\n","\n\r","\n\n","\r\r","\r"),"\n",$types);
131 - $types= str_replace("\t"," ",$types);
 135+ $types = str_replace( array( "\r\n", "\n\r", "\n\n", "\r\r", "\r" ), "\n", $types );
 136+ $types = str_replace( "\t", " ", $types );
132137
133 - $this->mMimeToExt= array();
134 - $this->mToMime= array();
 138+ $this->mMimeToExt = array();
 139+ $this->mToMime = array();
135140
136 - $lines= explode("\n",$types);
137 - foreach ($lines as $s) {
138 - $s= trim($s);
139 - if (empty($s)) continue;
140 - if (strpos($s,'#')===0) continue;
 141+ $lines = explode( "\n",$types );
 142+ foreach ( $lines as $s ) {
 143+ $s = trim( $s );
 144+ if ( empty( $s ) ) continue;
 145+ if ( strpos( $s, '#' ) === 0 ) continue;
141146
142 - $s= strtolower($s);
143 - $i= strpos($s,' ');
 147+ $s = strtolower( $s );
 148+ $i = strpos( $s, ' ' );
144149
145 - if ($i===false) continue;
 150+ if ( $i === false ) continue;
146151
147152 #print "processing MIME line $s<br>";
148153
149 - $mime= substr($s,0,$i);
150 - $ext= trim(substr($s,$i+1));
 154+ $mime = substr( $s, 0, $i );
 155+ $ext = trim( substr($s, $i+1 ) );
151156
152 - if (empty($ext)) continue;
 157+ if ( empty( $ext ) ) continue;
153158
154 - if ( !empty($this->mMimeToExt[$mime])) $this->mMimeToExt[$mime] .= ' '.$ext;
155 - else $this->mMimeToExt[$mime]= $ext;
 159+ if ( !empty( $this->mMimeToExt[$mime] ) ) {
 160+ $this->mMimeToExt[$mime] .= ' ' . $ext;
 161+ } else {
 162+ $this->mMimeToExt[$mime] = $ext;
 163+ }
156164
157 - $extensions= explode(' ',$ext);
 165+ $extensions = explode( ' ', $ext );
158166
159 - foreach ($extensions as $e) {
160 - $e= trim($e);
161 - if (empty($e)) continue;
 167+ foreach ( $extensions as $e ) {
 168+ $e = trim( $e );
 169+ if ( empty( $e ) ) continue;
162170
163 - if ( !empty($this->mExtToMime[$e])) $this->mExtToMime[$e] .= ' '.$mime;
164 - else $this->mExtToMime[$e]= $mime;
 171+ if ( !empty( $this->mExtToMime[$e] ) ) {
 172+ $this->mExtToMime[$e] .= ' ' . $mime;
 173+ } else {
 174+ $this->mExtToMime[$e] = $mime;
 175+ }
165176 }
166177 }
167178
@@ -169,62 +180,69 @@
170181 */
171182
172183 global $wgMimeInfoFile;
 184+ if ( $wgMimeInfoFile == 'includes/mime.info' ) {
 185+ $wgMimeInfoFile = "$IP/$wgMimeInfoFile";
 186+ }
173187
174 - $info= MM_WELL_KNOWN_MIME_INFO;
 188+ $info = MM_WELL_KNOWN_MIME_INFO;
175189
176 - if ($wgMimeInfoFile) {
177 - if (is_file($wgMimeInfoFile) and is_readable($wgMimeInfoFile)) {
178 - wfDebug("MimeMagic::MimeMagic: loading mime info from $wgMimeInfoFile\n");
179 -
180 - $info.= "\n";
181 - $info.= file_get_contents($wgMimeInfoFile);
 190+ if ( $wgMimeInfoFile ) {
 191+ if ( is_file( $wgMimeInfoFile ) and is_readable( $wgMimeInfoFile ) ) {
 192+ wfDebug( __METHOD__.": loading mime info from $wgMimeInfoFile\n" );
 193+ $info .= "\n";
 194+ $info .= file_get_contents( $wgMimeInfoFile );
 195+ } else {
 196+ wfDebug(__METHOD__.": can't load mime info from $wgMimeInfoFile\n");
182197 }
183 - else wfDebug("MimeMagic::MimeMagic: can't load mime info from $wgMimeInfoFile\n");
 198+ } else {
 199+ wfDebug(__METHOD__.": no mime info file defined, using build-ins only.\n");
184200 }
185 - else wfDebug("MimeMagic::MimeMagic: no mime info file defined, using build-ins only.\n");
186201
187 - $info= str_replace(array("\r\n","\n\r","\n\n","\r\r","\r"),"\n",$info);
188 - $info= str_replace("\t"," ",$info);
 202+ $info = str_replace( array( "\r\n", "\n\r", "\n\n", "\r\r", "\r" ), "\n", $info);
 203+ $info = str_replace( "\t", " ", $info );
189204
190 - $this->mMimeTypeAliases= array();
191 - $this->mMediaTypes= array();
 205+ $this->mMimeTypeAliases = array();
 206+ $this->mMediaTypes = array();
192207
193 - $lines= explode("\n",$info);
194 - foreach ($lines as $s) {
195 - $s= trim($s);
196 - if (empty($s)) continue;
197 - if (strpos($s,'#')===0) continue;
 208+ $lines = explode( "\n", $info );
 209+ foreach ( $lines as $s ) {
 210+ $s = trim( $s );
 211+ if ( empty( $s ) ) continue;
 212+ if ( strpos( $s, '#' ) === 0 ) continue;
198213
199 - $s= strtolower($s);
200 - $i= strpos($s,' ');
 214+ $s = strtolower( $s );
 215+ $i = strpos( $s, ' ' );
201216
202 - if ($i===false) continue;
 217+ if ( $i === false ) continue;
203218
204219 #print "processing MIME INFO line $s<br>";
205220
206 - $match= array();
207 - if (preg_match('!\[\s*(\w+)\s*\]!',$s,$match)) {
208 - $s= preg_replace('!\[\s*(\w+)\s*\]!','',$s);
209 - $mtype= trim(strtoupper($match[1]));
 221+ $match = array();
 222+ if ( preg_match( '!\[\s*(\w+)\s*\]!', $s, $match ) ) {
 223+ $s = preg_replace( '!\[\s*(\w+)\s*\]!', '', $s );
 224+ $mtype = trim( strtoupper( $match[1] ) );
 225+ } else {
 226+ $mtype = MEDIATYPE_UNKNOWN;
210227 }
211 - else $mtype= MEDIATYPE_UNKNOWN;
212228
213 - $m= explode(' ',$s);
 229+ $m = explode( ' ', $s );
214230
215 - if (!isset($this->mMediaTypes[$mtype])) $this->mMediaTypes[$mtype]= array();
 231+ if ( !isset( $this->mMediaTypes[$mtype] ) ) {
 232+ $this->mMediaTypes[$mtype] = array();
 233+ }
216234
217 - foreach ($m as $mime) {
218 - $mime= trim($mime);
219 - if (empty($mime)) continue;
 235+ foreach ( $m as $mime ) {
 236+ $mime = trim( $mime );
 237+ if ( empty( $mime ) ) continue;
220238
221 - $this->mMediaTypes[$mtype][]= $mime;
 239+ $this->mMediaTypes[$mtype][] = $mime;
222240 }
223241
224 - if (sizeof($m)>1) {
225 - $main= $m[0];
226 - for ($i=1; $i<sizeof($m); $i+= 1) {
227 - $mime= $m[$i];
228 - $this->mMimeTypeAliases[$mime]= $main;
 242+ if ( sizeof( $m ) > 1 ) {
 243+ $main = $m[0];
 244+ for ( $i=1; $i<sizeof($m); $i += 1 ) {
 245+ $mime = $m[$i];
 246+ $this->mMimeTypeAliases[$mime] = $main;
229247 }
230248 }
231249 }
@@ -244,14 +262,14 @@
245263 /** returns a list of file extensions for a given mime type
246264 * as a space separated string.
247265 */
248 - function getExtensionsForType($mime) {
249 - $mime= strtolower($mime);
 266+ function getExtensionsForType( $mime ) {
 267+ $mime = strtolower( $mime );
250268
251 - $r= @$this->mMimeToExt[$mime];
 269+ $r = @$this->mMimeToExt[$mime];
252270
253 - if (@!$r and isset($this->mMimeTypeAliases[$mime])) {
254 - $mime= $this->mMimeTypeAliases[$mime];
255 - $r= @$this->mMimeToExt[$mime];
 271+ if ( @!$r and isset( $this->mMimeTypeAliases[$mime] ) ) {
 272+ $mime = $this->mMimeTypeAliases[$mime];
 273+ $r = @$this->mMimeToExt[$mime];
256274 }
257275
258276 return $r;
@@ -260,22 +278,22 @@
261279 /** returns a list of mime types for a given file extension
262280 * as a space separated string.
263281 */
264 - function getTypesForExtension($ext) {
265 - $ext= strtolower($ext);
 282+ function getTypesForExtension( $ext ) {
 283+ $ext = strtolower( $ext );
266284
267 - $r= isset( $this->mExtToMime[$ext] ) ? $this->mExtToMime[$ext] : null;
 285+ $r = isset( $this->mExtToMime[$ext] ) ? $this->mExtToMime[$ext] : null;
268286 return $r;
269287 }
270288
271289 /** returns a single mime type for a given file extension.
272290 * This is always the first type from the list returned by getTypesForExtension($ext).
273291 */
274 - function guessTypesForExtension($ext) {
275 - $m= $this->getTypesForExtension( $ext );
276 - if( is_null($m) ) return NULL;
 292+ function guessTypesForExtension( $ext ) {
 293+ $m = $this->getTypesForExtension( $ext );
 294+ if ( is_null( $m ) ) return NULL;
277295
278 - $m= trim( $m );
279 - $m= preg_replace('/\s.*$/','',$m);
 296+ $m = trim( $m );
 297+ $m = preg_replace( '/\s.*$/', '', $m );
280298
281299 return $m;
282300 }
@@ -285,17 +303,17 @@
286304 * returns true if a match was found, NULL if the mime type is unknown,
287305 * and false if the mime type is known but no matches where found.
288306 */
289 - function isMatchingExtension($extension,$mime) {
290 - $ext= $this->getExtensionsForType($mime);
 307+ function isMatchingExtension( $extension, $mime ) {
 308+ $ext = $this->getExtensionsForType( $mime );
291309
292 - if (!$ext) {
 310+ if ( !$ext ) {
293311 return NULL; //unknown
294312 }
295313
296 - $ext= explode(' ',$ext);
 314+ $ext = explode( ' ', $ext );
297315
298 - $extension= strtolower($extension);
299 - if (in_array($extension,$ext)) {
 316+ $extension = strtolower( $extension );
 317+ if ( in_array( $extension, $ext ) ) {
300318 return true;
301319 }
302320
@@ -347,13 +365,13 @@
348366 * or misinterpreter by the default mime detection (namely xml based formats like XHTML or SVG).
349367 *
350368 * @param string $file The file to check
351 - * @param bool $useExt switch for allowing to use the file extension to guess the mime type. true by default.
 369+ * @param mixed $ext The file extension, or true to extract it from the filename.
 370+ * Set it to false to ignore the extension.
352371 *
353372 * @return string the mime type of $file
354373 */
355 - function guessMimeType( $file, $useExt=true ) {
356 - $fname = 'MimeMagic::guessMimeType';
357 - $mime= $this->detectMimeType($file,$useExt);
 374+ function guessMimeType( $file, $ext = true ) {
 375+ $mime = $this->detectMimeType( $file, $ext );
358376
359377 // Read a chunk of the file
360378 $f = fopen( $file, "rt" );
@@ -369,67 +387,88 @@
370388 $mime = "application/x-msmetafile";
371389 }
372390
373 - if (strpos($mime,"text/")===0 || $mime==="application/xml") {
 391+ if ( strpos( $mime, "text/" ) === 0 || $mime === "application/xml" ) {
374392
375 - $xml_type= NULL;
376 - $script_type= NULL;
 393+ $xml_type = NULL;
 394+ $script_type = NULL;
377395
378396 /*
379397 * look for XML formats (XHTML and SVG)
380398 */
381 - if ($mime==="text/sgml" ||
382 - $mime==="text/plain" ||
383 - $mime==="text/html" ||
384 - $mime==="text/xml" ||
385 - $mime==="application/xml") {
 399+ if ($mime === "text/sgml" ||
 400+ $mime === "text/plain" ||
 401+ $mime === "text/html" ||
 402+ $mime === "text/xml" ||
 403+ $mime === "application/xml") {
386404
387 - if (substr($head,0,5)=="<?xml") $xml_type= "ASCII";
388 - elseif (substr($head,0,8)=="\xef\xbb\xbf<?xml") $xml_type= "UTF-8";
389 - elseif (substr($head,0,10)=="\xfe\xff\x00<\x00?\x00x\x00m\x00l") $xml_type= "UTF-16BE";
390 - elseif (substr($head,0,10)=="\xff\xfe<\x00?\x00x\x00m\x00l\x00") $xml_type= "UTF-16LE";
 405+ if ( substr( $head, 0, 5 ) == "<?xml" ) {
 406+ $xml_type = "ASCII";
 407+ } elseif ( substr( $head, 0, 8 ) == "\xef\xbb\xbf<?xml") {
 408+ $xml_type = "UTF-8";
 409+ } elseif ( substr( $head, 0, 10 ) == "\xfe\xff\x00<\x00?\x00x\x00m\x00l" ) {
 410+ $xml_type = "UTF-16BE";
 411+ } elseif ( substr( $head, 0, 10 ) == "\xff\xfe<\x00?\x00x\x00m\x00l\x00") {
 412+ $xml_type = "UTF-16LE";
 413+ }
391414
392 - if ($xml_type) {
393 - if ($xml_type!=="UTF-8" && $xml_type!=="ASCII") $head= iconv($xml_type,"ASCII//IGNORE",$head);
 415+ if ( $xml_type ) {
 416+ if ( $xml_type !== "UTF-8" && $xml_type !== "ASCII" ) {
 417+ $head = iconv( $xml_type, "ASCII//IGNORE", $head );
 418+ }
394419
395 - $match= array();
396 - $doctype= "";
397 - $tag= "";
 420+ $match = array();
 421+ $doctype = "";
 422+ $tag = "";
398423
399 - if (preg_match('%<!DOCTYPE\s+[\w-]+\s+PUBLIC\s+["'."'".'"](.*?)["'."'".'"].*>%sim',$head,$match)) $doctype= $match[1];
400 - if (preg_match('%<(\w+).*>%sim',$head,$match)) $tag= $match[1];
 424+ if ( preg_match( '%<!DOCTYPE\s+[\w-]+\s+PUBLIC\s+["'."'".'"](.*?)["'."'".'"].*>%sim',
 425+ $head, $match ) ) {
 426+ $doctype = $match[1];
 427+ }
 428+ if ( preg_match( '%<(\w+).*>%sim', $head, $match ) ) {
 429+ $tag = $match[1];
 430+ }
401431
402432 #print "<br>ANALYSING $file ($mime): doctype= $doctype; tag= $tag<br>";
403433
404 - if (strpos($doctype,"-//W3C//DTD SVG")===0) $mime= "image/svg+xml";
405 - elseif ($tag==="svg") $mime= "image/svg+xml";
406 - elseif (strpos($doctype,"-//W3C//DTD XHTML")===0) $mime= "text/html";
407 - elseif ($tag==="html") $mime= "text/html";
 434+ if ( strpos( $doctype, "-//W3C//DTD SVG" ) === 0 ) {
 435+ $mime = "image/svg+xml";
 436+ } elseif ( $tag === "svg" ) {
 437+ $mime = "image/svg+xml";
 438+ } elseif ( strpos( $doctype, "-//W3C//DTD XHTML" ) === 0 ) {
 439+ $mime = "text/html";
 440+ } elseif ( $tag === "html" ) {
 441+ $mime = "text/html";
 442+ }
408443 }
409444 }
410445
411446 /*
412447 * look for shell scripts
413448 */
414 - if (!$xml_type) {
415 - $script_type= NULL;
 449+ if ( !$xml_type ) {
 450+ $script_type = NULL;
416451
417 - #detect by shebang
418 - if (substr($head,0,2)=="#!") $script_type= "ASCII";
419 - elseif (substr($head,0,5)=="\xef\xbb\xbf#!") $script_type= "UTF-8";
420 - elseif (substr($head,0,7)=="\xfe\xff\x00#\x00!") $script_type= "UTF-16BE";
421 - elseif (substr($head,0,7)=="\xff\xfe#\x00!") $script_type= "UTF-16LE";
 452+ # detect by shebang
 453+ if ( substr( $head, 0, 2) == "#!" ) {
 454+ $script_type = "ASCII";
 455+ } elseif ( substr( $head, 0, 5) == "\xef\xbb\xbf#!" ) {
 456+ $script_type = "UTF-8";
 457+ } elseif ( substr( $head, 0, 7) == "\xfe\xff\x00#\x00!" ) {
 458+ $script_type = "UTF-16BE";
 459+ } elseif ( substr( $head, 0, 7 ) == "\xff\xfe#\x00!" ) {
 460+ $script_type= "UTF-16LE";
 461+ }
422462
423 - if ($script_type) {
424 - if ($script_type!=="UTF-8" && $script_type!=="ASCII") $head= iconv($script_type,"ASCII//IGNORE",$head);
 463+ if ( $script_type ) {
 464+ if ( $script_type !== "UTF-8" && $script_type !== "ASCII") {
 465+ $head = iconv( $script_type, "ASCII//IGNORE", $head);
 466+ }
425467
426 - $match= array();
427 - $prog= "";
 468+ $match = array();
428469
429 - if (preg_match('%/?([^\s]+/)(w+)%sim',$head,$match)) {
430 - $script= $match[2]; // FIXME: $script variable not used; should this be "$prog = $match[2];" instead?
 470+ if ( preg_match( '%/?([^\s]+/)(\w+)%', $head, $match ) ) {
 471+ $mime = "application/x-{$match[2]}";
431472 }
432 -
433 - $mime= "application/x-$prog";
434473 }
435474 }
436475
@@ -450,42 +489,43 @@
451490 ( strpos( $head, "<\x00?\x00\t" ) !== false ) ||
452491 ( strpos( $head, "<\x00?\x00=" ) !== false ) ) {
453492
454 - $mime= "application/x-php";
 493+ $mime = "application/x-php";
455494 }
456495 }
457496
458497 }
459498
460 - if (isset($this->mMimeTypeAliases[$mime])) $mime= $this->mMimeTypeAliases[$mime];
 499+ if ( isset( $this->mMimeTypeAliases[$mime] ) ) {
 500+ $mime = $this->mMimeTypeAliases[$mime];
 501+ }
461502
462 - wfDebug("$fname: final mime type of $file: $mime\n");
 503+ wfDebug(__METHOD__.": final mime type of $file: $mime\n");
463504 return $mime;
464505 }
465506
466507 /** Internal mime type detection, please use guessMimeType() for application code instead.
467508 * Detection is done using an external program, if $wgMimeDetectorCommand is set.
468509 * Otherwise, the fileinfo extension and mime_content_type are tried (in this order), if they are available.
469 - * If the dections fails and $useExt is true, the mime type is guessed from the file extension, using guessTypesForExtension.
 510+ * If the dections fails and $ext is not false, the mime type is guessed from the file extension, using
 511+ * guessTypesForExtension.
470512 * If the mime type is still unknown, getimagesize is used to detect the mime type if the file is an image.
471513 * If no mime type can be determined, this function returns "unknown/unknown".
472514 *
473515 * @param string $file The file to check
474 - * @param bool $useExt switch for allowing to use the file extension to guess the mime type. true by default.
 516+ * @param mixed $ext The file extension, or true to extract it from the filename.
 517+ * Set it to false to ignore the extension.
475518 *
476519 * @return string the mime type of $file
477520 * @access private
478521 */
479 - function detectMimeType( $file, $useExt=true ) {
480 - $fname = 'MimeMagic::detectMimeType';
481 -
 522+ function detectMimeType( $file, $ext = true ) {
482523 global $wgMimeDetectorCommand;
483524
484 - $m= NULL;
485 - if ($wgMimeDetectorCommand) {
486 - $fn= wfEscapeShellArg($file);
487 - $m= `$wgMimeDetectorCommand $fn`;
488 - }
489 - else if (function_exists("finfo_open") && function_exists("finfo_file")) {
 525+ $m = NULL;
 526+ if ( $wgMimeDetectorCommand ) {
 527+ $fn = wfEscapeShellArg( $file );
 528+ $m = `$wgMimeDetectorCommand $fn`;
 529+ } elseif ( function_exists( "finfo_open" ) && function_exists( "finfo_file" ) ) {
490530
491531 # This required the fileinfo extension by PECL,
492532 # see http://pecl.php.net/package/fileinfo
@@ -500,13 +540,12 @@
501541 $mime_magic_resource = finfo_open(FILEINFO_MIME); /* return mime type ala mimetype extension */
502542
503543 if ($mime_magic_resource) {
504 - $m= finfo_file($mime_magic_resource, $file);
505 -
506 - finfo_close($mime_magic_resource);
 544+ $m = finfo_file( $mime_magic_resource, $file );
 545+ finfo_close( $mime_magic_resource );
 546+ } else {
 547+ wfDebug( __METHOD__.": finfo_open failed on ".FILEINFO_MIME."!\n" );
507548 }
508 - else wfDebug("$fname: finfo_open failed on ".FILEINFO_MIME."!\n");
509 - }
510 - else if (function_exists("mime_content_type")) {
 549+ } elseif ( function_exists( "mime_content_type" ) ) {
511550
512551 # NOTE: this function is available since PHP 4.3.0, but only if
513552 # PHP was compiled with --with-mime-magic or, before 4.3.2, with --enable-mime-magic.
@@ -517,93 +556,99 @@
518557 # Also note that this has been DEPRECATED in favor of the fileinfo extension by PECL, see above.
519558 # see http://www.php.net/manual/en/ref.mime-magic.php for details.
520559
521 - $m= mime_content_type($file);
 560+ $m = mime_content_type($file);
522561
523562 if ( $m == 'text/plain' ) {
524563 // mime_content_type sometimes considers DJVU files to be text/plain.
525564 $deja = new DjVuImage( $file );
526565 if( $deja->isValid() ) {
527 - wfDebug("$fname: (re)detected $file as image/vnd.djvu\n");
 566+ wfDebug( __METHOD__.": (re)detected $file as image/vnd.djvu\n" );
528567 $m = 'image/vnd.djvu';
529568 }
530569 }
 570+ } else {
 571+ wfDebug( __METHOD__.": no magic mime detector found!\n" );
531572 }
532 - else wfDebug("$fname: no magic mime detector found!\n");
533573
534 - if ($m) {
535 - #normalize
536 - $m= preg_replace('![;, ].*$!','',$m); #strip charset, etc
537 - $m= trim($m);
538 - $m= strtolower($m);
 574+ if ( $m ) {
 575+ # normalize
 576+ $m = preg_replace( '![;, ].*$!', '', $m ); #strip charset, etc
 577+ $m = trim( $m );
 578+ $m = strtolower( $m );
539579
540 - if (strpos($m,'unknown')!==false) $m= NULL;
541 - else {
542 - wfDebug("$fname: magic mime type of $file: $m\n");
 580+ if ( strpos( $m, 'unknown' ) !== false ) {
 581+ $m = NULL;
 582+ } else {
 583+ wfDebug( __METHOD__.": magic mime type of $file: $m\n" );
543584 return $m;
544585 }
545586 }
546587
547 - #if still not known, use getimagesize to find out the type of image
548 - #TODO: skip things that do not have a well-known image extension? Would that be safe?
 588+ # if still not known, use getimagesize to find out the type of image
 589+ # TODO: skip things that do not have a well-known image extension? Would that be safe?
549590 wfSuppressWarnings();
550591 $gis = getimagesize( $file );
551592 wfRestoreWarnings();
552593
553 - $notAnImage= false;
 594+ $notAnImage = false;
554595
555 - if ($gis && is_array($gis) && $gis[2]) {
556 - switch ($gis[2]) {
557 - case IMAGETYPE_GIF: $m= "image/gif"; break;
558 - case IMAGETYPE_JPEG: $m= "image/jpeg"; break;
559 - case IMAGETYPE_PNG: $m= "image/png"; break;
560 - case IMAGETYPE_SWF: $m= "application/x-shockwave-flash"; break;
561 - case IMAGETYPE_PSD: $m= "application/photoshop"; break;
562 - case IMAGETYPE_BMP: $m= "image/bmp"; break;
563 - case IMAGETYPE_TIFF_II: $m= "image/tiff"; break;
564 - case IMAGETYPE_TIFF_MM: $m= "image/tiff"; break;
565 - case IMAGETYPE_JPC: $m= "image"; break;
566 - case IMAGETYPE_JP2: $m= "image/jpeg2000"; break;
567 - case IMAGETYPE_JPX: $m= "image/jpeg2000"; break;
568 - case IMAGETYPE_JB2: $m= "image"; break;
569 - case IMAGETYPE_SWC: $m= "application/x-shockwave-flash"; break;
570 - case IMAGETYPE_IFF: $m= "image/vnd.xiff"; break;
571 - case IMAGETYPE_WBMP: $m= "image/vnd.wap.wbmp"; break;
572 - case IMAGETYPE_XBM: $m= "image/x-xbitmap"; break;
 596+ if ( $gis && is_array($gis) && $gis[2] ) {
 597+
 598+ switch ( $gis[2] ) {
 599+ case IMAGETYPE_GIF: $m = "image/gif"; break;
 600+ case IMAGETYPE_JPEG: $m = "image/jpeg"; break;
 601+ case IMAGETYPE_PNG: $m = "image/png"; break;
 602+ case IMAGETYPE_SWF: $m = "application/x-shockwave-flash"; break;
 603+ case IMAGETYPE_PSD: $m = "application/photoshop"; break;
 604+ case IMAGETYPE_BMP: $m = "image/bmp"; break;
 605+ case IMAGETYPE_TIFF_II: $m = "image/tiff"; break;
 606+ case IMAGETYPE_TIFF_MM: $m = "image/tiff"; break;
 607+ case IMAGETYPE_JPC: $m = "image"; break;
 608+ case IMAGETYPE_JP2: $m = "image/jpeg2000"; break;
 609+ case IMAGETYPE_JPX: $m = "image/jpeg2000"; break;
 610+ case IMAGETYPE_JB2: $m = "image"; break;
 611+ case IMAGETYPE_SWC: $m = "application/x-shockwave-flash"; break;
 612+ case IMAGETYPE_IFF: $m = "image/vnd.xiff"; break;
 613+ case IMAGETYPE_WBMP: $m = "image/vnd.wap.wbmp"; break;
 614+ case IMAGETYPE_XBM: $m = "image/x-xbitmap"; break;
573615 }
574616
575 - if ($m) {
576 - wfDebug("$fname: image mime type of $file: $m\n");
 617+ if ( $m ) {
 618+ wfDebug( __METHOD__.": image mime type of $file: $m\n" );
577619 return $m;
578620 }
579 - else $notAnImage= true;
 621+ else {
 622+ $notAnImage = true;
 623+ }
580624 } else {
581625 // Also test DjVu
582626 $deja = new DjVuImage( $file );
583627 if( $deja->isValid() ) {
584 - wfDebug("$fname: detected $file as image/vnd.djvu\n");
 628+ wfDebug( __METHOD__.": detected $file as image/vnd.djvu\n" );
585629 return 'image/vnd.djvu';
586630 }
587631 }
588632
589 - #if desired, look at extension as a fallback.
590 - if ($useExt) {
 633+ # if desired, look at extension as a fallback.
 634+ if ( $ext === true ) {
591635 $i = strrpos( $file, '.' );
592 - $e= strtolower( $i ? substr( $file, $i + 1 ) : '' );
 636+ $ext = strtolower( $i ? substr( $file, $i + 1 ) : '' );
 637+ }
 638+ if ( $ext ) {
 639+ $m = $this->guessTypesForExtension( $ext );
593640
594 - $m= $this->guessTypesForExtension($e);
595 -
596 - #TODO: if $notAnImage is set, do not trust the file extension if
 641+ # TODO: if $notAnImage is set, do not trust the file extension if
597642 # the results is one of the image types that should have been recognized
598643 # by getimagesize
599644
600 - if ($m) {
601 - wfDebug("$fname: extension mime type of $file: $m\n");
 645+ if ( $m ) {
 646+ wfDebug( __METHOD__.": extension mime type of $file: $m\n" );
602647 return $m;
603648 }
604649 }
605650
606651 #unknown type
607 - wfDebug("$fname: failed to guess mime type for $file!\n");
 652+ wfDebug( __METHOD__.": failed to guess mime type for $file!\n" );
608653 return "unknown/unknown";
609654 }
610655
@@ -623,61 +668,61 @@
624669 *
625670 * @return (int?string?) a value to be used with the MEDIATYPE_xxx constants.
626671 */
627 - function getMediaType($path=NULL,$mime=NULL) {
 672+ function getMediaType( $path = NULL, $mime = NULL ) {
628673 if( !$mime && !$path ) return MEDIATYPE_UNKNOWN;
629674
630 - #if mime type is unknown, guess it
631 - if( !$mime ) $mime= $this->guessMimeType($path,false);
 675+ # If mime type is unknown, guess it
 676+ if( !$mime ) $mime = $this->guessMimeType( $path, false );
632677
633 - #special code for ogg - detect if it's video (theora),
634 - #else label it as sound.
635 - if( $mime=="application/ogg" && file_exists($path) ) {
 678+ # Special code for ogg - detect if it's video (theora),
 679+ # else label it as sound.
 680+ if( $mime == "application/ogg" && file_exists( $path ) ) {
636681
637682 // Read a chunk of the file
638683 $f = fopen( $path, "rt" );
639 - if( !$f ) return MEDIATYPE_UNKNOWN;
 684+ if ( !$f ) return MEDIATYPE_UNKNOWN;
640685 $head = fread( $f, 256 );
641686 fclose( $f );
642687
643 - $head= strtolower( $head );
 688+ $head = strtolower( $head );
644689
645 - #This is an UGLY HACK, file should be parsed correctly
646 - if( strpos($head,'theora')!==false ) return MEDIATYPE_VIDEO;
647 - elseif( strpos($head,'vorbis')!==false ) return MEDIATYPE_AUDIO;
648 - elseif( strpos($head,'flac')!==false ) return MEDIATYPE_AUDIO;
649 - elseif( strpos($head,'speex')!==false ) return MEDIATYPE_AUDIO;
 690+ # This is an UGLY HACK, file should be parsed correctly
 691+ if ( strpos( $head, 'theora' ) !== false ) return MEDIATYPE_VIDEO;
 692+ elseif ( strpos( $head, 'vorbis' ) !== false ) return MEDIATYPE_AUDIO;
 693+ elseif ( strpos( $head, 'flac' ) !== false ) return MEDIATYPE_AUDIO;
 694+ elseif ( strpos( $head, 'speex' ) !== false ) return MEDIATYPE_AUDIO;
650695 else return MEDIATYPE_MULTIMEDIA;
651696 }
652697
653 - #check for entry for full mime type
 698+ # check for entry for full mime type
654699 if( $mime ) {
655 - $type= $this->findMediaType($mime);
656 - if( $type!==MEDIATYPE_UNKNOWN ) return $type;
 700+ $type = $this->findMediaType( $mime );
 701+ if( $type !== MEDIATYPE_UNKNOWN ) return $type;
657702 }
658703
659 - #check for entry for file extension
660 - $e= NULL;
661 - if( $path ) {
 704+ # Check for entry for file extension
 705+ $e = NULL;
 706+ if ( $path ) {
662707 $i = strrpos( $path, '.' );
663 - $e= strtolower( $i ? substr( $path, $i + 1 ) : '' );
 708+ $e = strtolower( $i ? substr( $path, $i + 1 ) : '' );
664709
665 - #TODO: look at multi-extension if this fails, parse from full path
 710+ # TODO: look at multi-extension if this fails, parse from full path
666711
667 - $type= $this->findMediaType('.'.$e);
668 - if( $type!==MEDIATYPE_UNKNOWN ) return $type;
 712+ $type = $this->findMediaType( '.' . $e );
 713+ if ( $type !== MEDIATYPE_UNKNOWN ) return $type;
669714 }
670715
671 - #check major mime type
 716+ # Check major mime type
672717 if( $mime ) {
673 - $i= strpos($mime,'/');
 718+ $i = strpos( $mime, '/' );
674719 if( $i !== false ) {
675 - $major= substr($mime,0,$i);
676 - $type= $this->findMediaType($major);
677 - if( $type!==MEDIATYPE_UNKNOWN ) return $type;
 720+ $major = substr( $mime, 0, $i );
 721+ $type = $this->findMediaType( $major );
 722+ if( $type !== MEDIATYPE_UNKNOWN ) return $type;
678723 }
679724 }
680725
681 - if( !$type ) $type= MEDIATYPE_UNKNOWN;
 726+ if( !$type ) $type = MEDIATYPE_UNKNOWN;
682727
683728 return $type;
684729 }
@@ -689,25 +734,26 @@
690735 * This funktion relies on the mapping defined by $this->mMediaTypes
691736 * @access private
692737 */
693 - function findMediaType($extMime) {
 738+ function findMediaType( $extMime ) {
 739+ if ( strpos( $extMime, '.' ) === 0 ) { #if it's an extension, look up the mime types
 740+ $m = $this->getTypesForExtension( substr( $extMime, 1 ) );
 741+ if ( !$m ) return MEDIATYPE_UNKNOWN;
694742
695 - if (strpos($extMime,'.')===0) { #if it's an extension, look up the mime types
696 - $m= $this->getTypesForExtension(substr($extMime,1));
697 - if (!$m) return MEDIATYPE_UNKNOWN;
698 -
699 - $m= explode(' ',$m);
700 - }
701 - else { #normalize mime type
702 - if (isset($this->mMimeTypeAliases[$extMime])) {
703 - $extMime= $this->mMimeTypeAliases[$extMime];
 743+ $m = explode( ' ', $m );
 744+ } else {
 745+ # Normalize mime type
 746+ if ( isset( $this->mMimeTypeAliases[$extMime] ) ) {
 747+ $extMime = $this->mMimeTypeAliases[$extMime];
704748 }
705749
706 - $m= array($extMime);
 750+ $m = array($extMime);
707751 }
708752
709 - foreach ($m as $mime) {
710 - foreach ($this->mMediaTypes as $type => $codes) {
711 - if (in_array($mime,$codes,true)) return $type;
 753+ foreach ( $m as $mime ) {
 754+ foreach ( $this->mMediaTypes as $type => $codes ) {
 755+ if ( in_array($mime, $codes, true ) ) {
 756+ return $type;
 757+ }
712758 }
713759 }
714760
Index: branches/liquidthreads/includes/Parser.php
@@ -2455,25 +2455,25 @@
24562456 case 'localday2':
24572457 return $varCache[$index] = $wgContLang->formatNum( $localDay2 );
24582458 case 'pagename':
2459 - return $this->mTitle->getText();
 2459+ return wfEscapeWikiText( $this->mTitle->getText() );
24602460 case 'pagenamee':
24612461 return $this->mTitle->getPartialURL();
24622462 case 'fullpagename':
2463 - return $this->mTitle->getPrefixedText();
 2463+ return wfEscapeWikiText( $this->mTitle->getPrefixedText() );
24642464 case 'fullpagenamee':
24652465 return $this->mTitle->getPrefixedURL();
24662466 case 'subpagename':
2467 - return $this->mTitle->getSubpageText();
 2467+ return wfEscapeWikiText( $this->mTitle->getSubpageText() );
24682468 case 'subpagenamee':
24692469 return $this->mTitle->getSubpageUrlForm();
24702470 case 'basepagename':
2471 - return $this->mTitle->getBaseText();
 2471+ return wfEscapeWikiText( $this->mTitle->getBaseText() );
24722472 case 'basepagenamee':
24732473 return wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getBaseText() ) );
24742474 case 'talkpagename':
24752475 if( $this->mTitle->canTalk() ) {
24762476 $talkPage = $this->mTitle->getTalkPage();
2477 - return $talkPage->getPrefixedText();
 2477+ return wfEscapeWikiText( $talkPage->getPrefixedText() );
24782478 } else {
24792479 return '';
24802480 }
@@ -2486,7 +2486,7 @@
24872487 }
24882488 case 'subjectpagename':
24892489 $subjPage = $this->mTitle->getSubjectPage();
2490 - return $subjPage->getPrefixedText();
 2490+ return wfEscapeWikiText( $subjPage->getPrefixedText() );
24912491 case 'subjectpagenamee':
24922492 $subjPage = $this->mTitle->getSubjectPage();
24932493 return $subjPage->getPrefixedUrl();
Index: branches/liquidthreads/includes/SpecialContributions.php
@@ -138,6 +138,13 @@
139139
140140 $comment = $sk->revComment( $rev );
141141 $d = $wgLang->timeanddate( wfTimestamp( TS_MW, $row->rev_timestamp ), true );
 142+
 143+ if( $this->target == 'newbies' ) {
 144+ $userlink = ' . . ' . $sk->userLink( $row->rev_user, $row->rev_user_text );
 145+ $userlink .= ' (' . $sk->userTalkLink( $row->rev_user, $row->rev_user_text ) . ') ';
 146+ } else {
 147+ $userlink = '';
 148+ }
142149
143150 if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
144151 $d = '<span class="history-deleted">' . $d . '</span>';
@@ -149,7 +156,7 @@
150157 $mflag = '';
151158 }
152159
153 - $ret = "{$d} {$histlink} {$difftext} {$mflag} {$link} {$comment} {$topmarktext}";
 160+ $ret = "{$d} {$histlink} {$difftext} {$mflag} {$link}{$userlink}{$comment} {$topmarktext}";
154161 if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
155162 $ret .= ' ' . wfMsgHtml( 'deletedrev' );
156163 }
Index: branches/liquidthreads/includes/filerepo/File.php
@@ -1001,9 +1001,13 @@
10021002 }
10031003
10041004 /**
1005 - * Get an associative array containing information about a file in the local filesystem
 1005+ * Get an associative array containing information about a file in the local filesystem\
 1006+ *
 1007+ * @param string $path Absolute local filesystem path
 1008+ * @param mixed $ext The file extension, or true to extract it from the filename.
 1009+ * Set it to false to ignore the extension.
10061010 */
1007 - static function getPropsFromPath( $path ) {
 1011+ static function getPropsFromPath( $path, $ext = true ) {
10081012 wfProfileIn( __METHOD__ );
10091013 wfDebug( __METHOD__.": Getting file info for $path\n" );
10101014 $info = array( 'fileExists' => file_exists( $path ) );
@@ -1011,7 +1015,7 @@
10121016 if ( $info['fileExists'] ) {
10131017 $magic = MimeMagic::singleton();
10141018
1015 - $info['mime'] = $magic->guessMimeType( $path, true );
 1019+ $info['mime'] = $magic->guessMimeType( $path, $ext );
10161020 list( $info['major_mime'], $info['minor_mime'] ) = self::splitMime( $info['mime'] );
10171021 $info['media_type'] = $magic->getMediaType( $path, $info['mime'] );
10181022
Index: branches/liquidthreads/includes/SpecialUpload.php
@@ -108,7 +108,6 @@
109109 $this->mFileSize = $request->getFileSize( 'wpUploadFile' );
110110 $this->mSrcName = $request->getFileName( 'wpUploadFile' );
111111 $this->mCurlError = $request->getUploadError( 'wpUploadFile' );
112 - $this->mFileProps = File::getPropsFromPath( $this->mTempPath );
113112 $this->mSessionKey = false;
114113 $this->mStashed = false;
115114 $this->mRemoveTempFile = false; // PHP will handle this
@@ -360,6 +359,7 @@
361360 * probably not accept it.
362361 */
363362 if( !$this->mStashed ) {
 363+ $this->mFileProps = File::getPropsFromPath( $this->mTempPath, $finalExt );
364364 $this->checkMacBinary();
365365 $veri = $this->verify( $this->mTempPath, $finalExt );
366366
Index: branches/liquidthreads/includes/api/ApiQueryInfo.php
@@ -36,7 +36,7 @@
3737 class ApiQueryInfo extends ApiQueryBase {
3838
3939 public function __construct($query, $moduleName) {
40 - parent :: __construct($query, $moduleName);
 40+ parent :: __construct($query, $moduleName, 'in');
4141 }
4242
4343 public function requestExtraData($pageSet) {
@@ -50,6 +50,13 @@
5151
5252 public function execute() {
5353
 54+ $params = $this->extractRequestParams();
 55+ $fld_protection = false;
 56+ if(!is_null($params['prop'])) {
 57+ $prop = array_flip($params['prop']);
 58+ $fld_protection = isset($prop['protection']);
 59+ }
 60+
5461 $pageSet = $this->getPageSet();
5562 $titles = $pageSet->getGoodTitles();
5663 $result = $this->getResult();
@@ -61,6 +68,23 @@
6269 $pageLatest = $pageSet->getCustomField('page_latest');
6370 $pageLength = $pageSet->getCustomField('page_len');
6471
 72+ if ($fld_protection) {
 73+ $this->addTables('page_restrictions');
 74+ $this->addFields(array('pr_page', 'pr_type', 'pr_level', 'pr_expiry'));
 75+ $this->addWhereFld('pr_page', array_keys($titles));
 76+
 77+ $db = $this->getDB();
 78+ $res = $this->select(__METHOD__);
 79+ while($row = $db->fetchObject($res)) {
 80+ $protections[$row->pr_page][] = array(
 81+ 'type' => $row->pr_type,
 82+ 'level' => $row->pr_level,
 83+ 'expiry' => Block::decodeExpiry( $row->pr_expiry, TS_ISO_8601 )
 84+ );
 85+ }
 86+ $db->freeResult($res);
 87+ }
 88+
6589 foreach ( $titles as $pageid => $unused ) {
6690 $pageInfo = array (
6791 'touched' => wfTimestamp(TS_ISO_8601, $pageTouched[$pageid]),
@@ -75,6 +99,15 @@
76100 if ($pageIsNew[$pageid])
77101 $pageInfo['new'] = '';
78102
 103+ if($fld_protection) {
 104+ if (isset($protections[$pageid])) {
 105+ $pageInfo['protection'] = $protections[$pageid];
 106+ $result->setIndexedTagName($pageInfo['protection'], 'pr');
 107+ } else {
 108+ $pageInfo['protection'] = array();
 109+ }
 110+ }
 111+
79112 $result->addValue(array (
80113 'query',
81114 'pages'
@@ -82,13 +115,35 @@
83116 }
84117 }
85118
 119+ protected function getAllowedParams() {
 120+ return array (
 121+ 'prop' => array (
 122+ ApiBase :: PARAM_DFLT => NULL,
 123+ ApiBase :: PARAM_ISMULTI => true,
 124+ ApiBase :: PARAM_TYPE => array (
 125+ 'protection'
 126+ ))
 127+ );
 128+ }
 129+
 130+ protected function getParamDescription() {
 131+ return array (
 132+ 'prop' => array (
 133+ 'Which additional properties to get:',
 134+ ' "protection" - List the protection level of each page'
 135+ )
 136+ );
 137+ }
 138+
 139+
86140 protected function getDescription() {
87141 return 'Get basic page information such as namespace, title, last touched date, ...';
88142 }
89143
90144 protected function getExamples() {
91145 return array (
92 - 'api.php?action=query&prop=info&titles=Main%20Page'
 146+ 'api.php?action=query&prop=info&titles=Main%20Page',
 147+ 'api.php?action=query&prop=info&inprop=protection&titles=Main%20Page'
93148 );
94149 }
95150
Index: branches/liquidthreads/includes/SpecialStatistics.php
@@ -24,6 +24,10 @@
2525
2626 $admins = $dbr->selectField( 'user_groups', 'COUNT(*)', array( 'ug_group' => 'sysop' ), $fname );
2727 $numJobs = $dbr->estimateRowCount('job');
 28+ /* Zero rows still do single row read for row that doesn't exist, but people are annoyed by that */
 29+ if ($numJobs == 1) {
 30+ $numJobs = 0;
 31+ }
2832
2933 if ($action == 'raw') {
3034 $wgOut->disable();
Index: branches/liquidthreads/includes/Block.php
@@ -628,11 +628,11 @@
629629 /**
630630 * Decode expiry which has come from the DB
631631 */
632 - static function decodeExpiry( $expiry ) {
 632+ static function decodeExpiry( $expiry, $timestampType = TS_MW ) {
633633 if ( $expiry == '' || $expiry == Block::infinity() ) {
634634 return Block::infinity();
635635 } else {
636 - return wfTimestamp( TS_MW, $expiry );
 636+ return wfTimestamp( $timestampType, $expiry );
637637 }
638638 }
639639
Index: branches/liquidthreads/languages/messages/MessagesEn.php
@@ -2426,6 +2426,11 @@
24272427 'variantname-kk-cn' => 'kk-cn', # only translate this message to other languages if you have to change it
24282428 'variantname-kk' => 'kk', # only translate this message to other languages if you have to change it
24292429
 2430+# Variants for Kurdish language
 2431+'variantname-ku-latn' => 'ku-latn', # only translate this message to other languages if you have to change it
 2432+'variantname-ku-arab' => 'ku-arab', # only translate this message to other languages if you have to change it
 2433+'variantname-ku' => 'ku', # only translate this message to other languages if you have to change it
 2434+
24302435 'passwordtooshort' => 'Your password is invalid or too short. It must have at least $1 characters and be different from your username.',
24312436
24322437 # Metadata
Index: branches/liquidthreads/languages/messages/MessagesKu_latn.php
@@ -0,0 +1,940 @@
 2+<?php
 3+/**
 4+ * Kurdish (Latin)
 5+ *
 6+ * @addtogroup Language
 7+ *
 8+ */
 9+
 10+$namespaceNames = array(
 11+ NS_MEDIA => 'Medya',
 12+ NS_SPECIAL => 'Taybet',
 13+ NS_MAIN => '',
 14+ NS_TALK => 'Nîqaş',
 15+ NS_USER => 'Bikarhêner',
 16+ NS_USER_TALK => 'Bikarhêner_nîqaş',
 17+ # NS_PROJECT set by $wgMetaNamespace
 18+ NS_PROJECT_TALK => '$1_nîqaş',
 19+ NS_IMAGE => 'Wêne',
 20+ NS_IMAGE_TALK => 'Wêne_nîqaş',
 21+ NS_MEDIAWIKI => 'MediaWiki',
 22+ NS_MEDIAWIKI_TALK => 'MediaWiki_nîqaş',
 23+ NS_TEMPLATE => 'Şablon',
 24+ NS_TEMPLATE_TALK => 'Şablon_nîqaş',
 25+ NS_HELP => 'Alîkarî',
 26+ NS_HELP_TALK => 'Alîkarî_nîqaş',
 27+ NS_CATEGORY => 'Kategorî',
 28+ NS_CATEGORY_TALK => 'Kategorî_nîqaş'
 29+);
 30+
 31+$messages = array(
 32+# User preference toggles
 33+'tog-watchlisthideminor' => 'Xeyrandinên biçûk pêşneke',
 34+
 35+'underline-always' => 'Tim',
 36+'underline-never' => 'Ne carekê',
 37+
 38+'skinpreview' => '(Pêşdîtin)',
 39+
 40+# Dates
 41+'sunday' => 'yekşem',
 42+'monday' => 'duşem',
 43+'tuesday' => 'Sêşem',
 44+'wednesday' => 'Çarşem',
 45+'thursday' => 'Pêncşem',
 46+'friday' => 'În',
 47+'saturday' => 'şemî',
 48+'wed' => 'Çarş',
 49+'january' => 'Rêbendan',
 50+'february' => 'reşemî',
 51+'march' => 'adar',
 52+'april' => 'avrêl',
 53+'may_long' => 'gulan',
 54+'june' => 'pûşper',
 55+'july' => 'Tîrmeh',
 56+'august' => 'tebax',
 57+'september' => 'rezber',
 58+'october' => 'kewçêr',
 59+'november' => 'sermawez',
 60+'december' => 'Berfanbar',
 61+'december-gen' => 'Berfanbar',
 62+'jan' => 'rêb',
 63+'feb' => 'reş',
 64+'mar' => 'adr',
 65+'apr' => 'avr',
 66+'may' => 'gul',
 67+'jun' => 'pşr',
 68+'jul' => 'tîr',
 69+'aug' => 'teb',
 70+'sep' => 'rez',
 71+'oct' => 'kew',
 72+'nov' => 'ser',
 73+'dec' => 'ber',
 74+
 75+# Bits of text used by many pages
 76+'categories' => 'Kategorî',
 77+'pagecategories' => '$1 Kategorîyan',
 78+'category_header' => 'Gotarên di kategoriya "$1" de',
 79+'subcategories' => 'Binekategorî',
 80+
 81+'about' => 'Der barê',
 82+'article' => 'Gotar',
 83+'cancel' => 'Betal',
 84+'qbfind' => 'Bibîne',
 85+'qbbrowse' => 'Bigere',
 86+'qbedit' => 'Biguherîne',
 87+'qbpageoptions' => 'Ev rûpel',
 88+'qbmyoptions' => 'Rûpelên min',
 89+'qbspecialpages' => 'Rûpelên taybet',
 90+'moredotdotdot' => 'Zêde...',
 91+'mypage' => 'Rûpela min',
 92+'mytalk' => 'Rûpela guftûgo ya min',
 93+'anontalk' => 'Guftûgo ji bo vê IPê',
 94+'navigation' => 'Navîgasyon',
 95+
 96+'errorpagetitle' => 'Çewtî (Error)',
 97+'returnto' => 'Bizivire $1.',
 98+'tagline' => 'Ji {{SITENAME}}',
 99+'help' => 'Alîkarî',
 100+'search' => 'Lêbigere',
 101+'searchbutton' => 'Lêbigere',
 102+'go' => 'Gotar',
 103+'searcharticle' => 'Gotar',
 104+'history' => 'Dîroka rûpelê',
 105+'history_short' => 'Dîrok / Nivîskar',
 106+'info_short' => 'Zanyarî',
 107+'printableversion' => 'Versiyon ji bo çapkirinê',
 108+'print' => 'Çap',
 109+'edit' => 'Biguherîne',
 110+'editthispage' => 'Vê rûpelê biguherîne',
 111+'delete' => 'Jê bibe',
 112+'deletethispage' => 'Vê rûpelê jê bibe',
 113+'protect' => 'Biparêze',
 114+'protectthispage' => 'Vê rûpelê biparêze',
 115+'unprotect' => 'Parastinê rake',
 116+'unprotectthispage' => 'Parastina vê rûpelê rake',
 117+'newpage' => 'Rûpela nû',
 118+'talkpage' => 'Vê rûpelê guftûgo bike',
 119+'specialpage' => 'Rûpela taybet',
 120+'personaltools' => 'Amûrên şexsî',
 121+'postcomment' => 'Şîroveyekê bişîne',
 122+'articlepage' => 'Li naveroka rûpelê binêre',
 123+'talk' => 'Guftûgo (nîqaş)',
 124+'views' => 'Dîtin',
 125+'toolbox' => 'Qutiya amûran',
 126+'userpage' => 'Rûpelê vê/vî bikarhênerê/î temaşe bike',
 127+'templatepage' => 'Rûpelê şablonê seke',
 128+'viewhelppage' => 'Rûpelê alîkarîyê seke',
 129+'viewtalkpage' => 'Guftûgoyê temaşe bike',
 130+'otherlanguages' => 'Zimanên din',
 131+'redirectedfrom' => '(Hat ragihandin ji $1)',
 132+'lastmodifiedat' => 'Ev rûpel carî dawî di $2, $1 de hat guherandin.', # $1 date, $2 time
 133+'viewcount' => 'Ev rûpel $1 car hat xwestin.',
 134+'protectedpage' => 'Rûpela parastî',
 135+
 136+# 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).
 137+'aboutsite' => 'Der barê {{SITENAME}}',
 138+'aboutpage' => '{{SITENAME}}:Der barê',
 139+'bugreports' => 'Raporên çewtiyan',
 140+'bugreportspage' => '{{ns:project}}:Raporên çewtiyan',
 141+'copyright' => 'Ji bo naverokê $1 derbas dibe.',
 142+'copyrightpagename' => 'Mafên nivîsanê',
 143+'copyrightpage' => '{{ns:project}}:Mafên nivîsanê',
 144+'currentevents' => 'Bûyerên rojane',
 145+'currentevents-url' => 'Bûyerên rojane',
 146+'disclaimers' => 'Ferexetname',
 147+'edithelp' => 'Alîkarî ji bo guherandin',
 148+'edithelppage' => '{{ns:project}}: Rûpelekê çawa biguherînim',
 149+'faq' => 'Pirs û Bersîv (FAQ)',
 150+'faqpage' => '{{SITENAME}}: Pirs û Bersîv',
 151+'helppage' => '{{SITENAME}}: Alîkarî',
 152+'mainpage' => 'Destpêk',
 153+'portal' => 'Portala komê',
 154+'portal-url' => '{{ns:project}}:Portala komê',
 155+'sitesupport' => 'Ji bo Weqfa Wikimedia Beş',
 156+
 157+'badaccess' => 'Eror li bi dest Hînan',
 158+
 159+'versionrequired' => 'Verzîyonê $1 ji MediaWiki pêwîste',
 160+'versionrequiredtext' => 'Verzîyonê $1 ji MediaWiki pêwîste ji bo bikaranîna vê rûpelê. Li [[{{ns:special}}:version|versyon]] seke.',
 161+
 162+'ok' => 'Temam',
 163+'retrievedfrom' => 'Ji "$1" hatiye standin.',
 164+'youhavenewmessages' => '$1 yên te hene ($2).',
 165+'newmessageslink' => 'Nameyên nû',
 166+'newmessagesdifflink' => 'Ciyawazî ji revîzyona berê re',
 167+'editsection' => 'biguherîne',
 168+'editold' => 'biguherîne',
 169+'toc' => 'Tabloya Naverokê',
 170+'showtoc' => 'nîşan bide',
 171+'hidetoc' => 'veşêre',
 172+'viewdeleted' => 'Li $1 seke?',
 173+
 174+# Short words for each namespace, by default used in the 'article' tab in monobook
 175+'nstab-main' => 'Gotar',
 176+'nstab-user' => 'Bikarhêner',
 177+'nstab-media' => 'Medya',
 178+'nstab-special' => 'Taybet',
 179+'nstab-project' => 'Rûpela projeyê',
 180+'nstab-image' => 'Wêne',
 181+'nstab-mediawiki' => 'Peyam',
 182+'nstab-template' => 'Şablon',
 183+'nstab-help' => 'Alîkarî',
 184+'nstab-category' => 'Kategorî',
 185+
 186+# Main script and global functions
 187+'nosuchaction' => 'Çalakiyek bi vê rengê tune',
 188+'nosuchspecialpage' => 'Rûpeleke taybet bi vê rengê tune',
 189+
 190+# General errors
 191+'error' => 'Çewtî (Error)',
 192+'noconnect' => 'Bibexşîne! Çend pirsgrêkên teknîkî heye, girêdan ji pêşkêşvanê (suxrekirê, server) re niha ne gengaz e.<br />$1',
 193+'enterlockreason' => 'Hoyek ji bo bestin binav bike, herweha zemaneke mezende kirî ji bo helgirtina bestinê!',
 194+'filerenameerror' => 'Navê faylê "$1" nebû "$2".',
 195+'filenotfound' => 'Dosya bi navê "$1" nehat dîtin.',
 196+'badarticleerror' => 'Ev çalakî di vê rûpelê de nabe.',
 197+'badtitle' => 'Sernivîsa nebaş',
 198+'viewsource' => 'Çavkanî',
 199+'viewsourcefor' => 'ji $1 ra',
 200+
 201+# Login and logout pages
 202+'logouttitle' => 'Derketina bikarhêner',
 203+'logouttext' => 'Tu niha derketî (logged out).
 204+
 205+Tu dikarî di {{SITENAME}} da niha wekî bikarhênerekî nedîyarkirî bikarbînê, yan jî tu dikarî dîsa bi vî navê xwe yan navekî din wek bikarhêner têkevî {{SITENAME}}. Bila di bîra te de be ku gengaz e hin rûpel mîna ku tu hîn bi navê xwe qeyd kirîyî werin nîşandan, heta ku tu nîşanên çavlêgerandina (browser) xwe jênebî.',
 206+'welcomecreation' => '<h2>Bi xêr hatî, $1!</h2><p>Hesaba te hat afirandin. Tu dikarî niha tercîhên xwe eyar bikî.',
 207+'loginpagetitle' => 'Qeyda bikarhêner (User login)',
 208+'yourname' => 'Navê te wek bikarhêner (user name)',
 209+'yourpassword' => 'Şîfreya te (password)',
 210+'yourpasswordagain' => 'Şîfreya xwe careke din binîvîse',
 211+'remembermypassword' => 'Şifreya min di her rûniştdemê de bîne bîra xwe.',
 212+'yourdomainname' => 'Domaînê te',
 213+'loginproblem' => '<b>Di qeyda te (login) de pirsgirêkek derket.</b><br />Careke din biceribîne!',
 214+'alreadyloggedin' => '<font color=red><b>Bikarhêner $1, tu jixwe têketî!</b></font><br />',
 215+'login' => 'Têkeve (login)',
 216+'loginprompt' => "<b>Eger tu xwe nû qeyd bikî, nav û şîfreya xwe hilbijêre.</b> Ji bo xwe qeyd kirinê di {{SITENAME}} de divê ku ''cookies'' gengaz be.",
 217+'userlogin' => 'Têkeve an hesabeke nû çêke',
 218+'logout' => 'Derkeve (log out)',
 219+'userlogout' => 'Derkeve',
 220+'notloggedin' => 'Xwe qeyd nekir (not logged in)',
 221+'nologin' => 'Tu hêj ne endamî? $1.',
 222+'nologinlink' => 'Bibe endam',
 223+'createaccount' => 'Hesabê nû çêke',
 224+'gotaccount' => 'Hesabê te heye? $1.',
 225+'gotaccountlink' => 'Têkeve (login)',
 226+'createaccountmail' => 'bi e-name',
 227+'badretype' => 'Herdu şîfreyên ku te nivîsîn hevûdin nagirin.',
 228+'youremail' => 'E-maila te*',
 229+'username' => 'Navê bikarhêner:',
 230+'yourrealname' => 'Navê te yê rastî*',
 231+'yourlanguage' => 'Ziman',
 232+'yournick' => 'Leqeba te (ji bo îmza)',
 233+'loginerror' => 'Çewtî (Login error)',
 234+'nocookieslogin' => 'Ji bo qeydkirina bikarhêneran {{SITENAME}} "cookies" bikartîne. Te fonksîyona "cookies" girtîye. Xêra xwe kerema xwe "cookies" gengaz bike û careke din biceribîne.',
 235+'noname' => 'Navê ku te nivîsand derbas nabe.',
 236+'loginsuccesstitle' => 'Têketin serkeftî!',
 237+'loginsuccess' => 'Tu niha di {{SITENAME}} de qeydkirî yî wek "$1".',
 238+'nosuchuser' => 'Bikarhênera/ê bi navê "$1" tune. Navê rast binivîse an bi vê formê <b>hesabeke nû çêke</b>. (Ji bo hevalên nû "Têkeve" çênabe!)',
 239+'wrongpassword' => 'Şifreya ku te nivîsand şaşe. Ji kerema xwe careke din biceribîne.',
 240+'wrongpasswordempty' => 'Cîhê şîfreya te vala ye. Carekê din binivisîne.',
 241+'mailmypassword' => 'Şîfreyeke nû bi e-mail ji min re bişîne',
 242+'noemail' => 'Navnîşana bikarhênerê/î "$1" nehat tomar kirine.',
 243+'passwordsent' => 'Ji navnîşana e-mail ku ji bo "$1" hat tomarkirin şîfreyekê nû hat şandin. Vê bistîne û dîsa têkeve.',
 244+'acct_creation_throttle_hit' => 'Biborîne! Te hesab $1 vekirine. Tu êdî nikarî hesabên din vekî.',
 245+
 246+# Edit page toolbar
 247+'bold_sample' => 'Nivîsa estûr',
 248+'bold_tip' => 'Nivîsa estûr',
 249+'italic_sample' => 'Nivîsa xwar (îtalîk)',
 250+'italic_tip' => 'Nivîsa xwar (îtalîk)',
 251+'link_sample' => 'Navê lînkê',
 252+'link_tip' => 'Lînka hundir',
 253+'extlink_sample' => 'http://www.minak.com navê lînkê',
 254+'extlink_tip' => 'Lînka derve (http:// di destpêkê de ji bîr neke)',
 255+'headline_sample' => 'Nivîsara sernameyê',
 256+'headline_tip' => 'Sername asta 2',
 257+'nowiki_sample' => 'Nivîs ku nebe formatkirin',
 258+'image_sample' => 'Mînak.jpg',
 259+'image_tip' => 'Wêne li hundirê gotarê',
 260+'media_sample' => 'Mînak.ogg',
 261+'sig_tip' => 'Îmze û demxeya wext ya te',
 262+'hr_tip' => 'Rastexêza berwarî (kêm bi kar bîne)',
 263+
 264+# Edit pages
 265+'summary' => 'Kurte û çavkanî (Te çi kir?)',
 266+'subject' => 'Mijar/sernivîs',
 267+'minoredit' => 'Ev guheraniyekê biçûk e',
 268+'watchthis' => 'Vê gotarê bişopîne',
 269+'savearticle' => 'Rûpelê tomar bike',
 270+'preview' => 'Pêşdîtin',
 271+'showpreview' => 'Pêşdîtin',
 272+'showdiff' => 'Guherandinê nîşan bide',
 273+'anoneditwarning' => 'Tu ne têketî. Navnîşana IP ya te wê di dîroka guherandina vê rûpelê de bê tomar kirin.',
 274+'subject-preview' => 'Pêşdîtinê sernivîsê',
 275+'blockedtitle' => 'Bikarhêner hat asteng kirin',
 276+'blockedtext' => 'Navê bikarhêner an jî navnîşana IP ya te ji aliyê $1 hat asteng kirin. Sedema vê ev e:<br />\'\'$2\'\'<p>Tu dikarî bi $1 an yek ji [[{{SITENAME}}:Koordînator|koordînatorên din]] re ser vê blokê guftûgo bikî.
 277+
 278+Têbînî: Tu nikarî fonksiyona "Ji vê bikarhêner re E-mail bişîne" bi kar bîne eger te navnîşana email a xwe di "[[{{ns:special}}:Preferences|Tercîhên min]]" de nenivîsand.
 279+
 280+Navnîşana te ya IP $3 ye. Ji kerema xwe eger pirsên te hebe vê navnîşanê bibêje.',
 281+'whitelistedittitle' => 'Ji bo guherandinê vê gotarê tu gireke xwe qeydbikê.',
 282+'whitelistedittext' => 'Ji bo guherandinê vê gotarê tu gireke xwe [[{{ns:special}}:Userlogin|li vir]] qeydbikê.',
 283+'whitelistreadtitle' => 'Ji xandinê vê gotarê tu gireke xwe qeydbikê',
 284+'whitelistreadtext' => 'Ji bo xandinê vê gotarê tu gireke xwe [[{{ns:special}}:Userlogin|li vir]] qedybikê.',
 285+'whitelistacctitle' => 'Tu nikanê xwe qeydbikê.',
 286+'whitelistacctext' => 'To be allowed to create accounts in this wiki you have to [[{{ns:special}}:Userlogin|log]] in and have the appropriate permissions.',
 287+'loginreqtitle' => 'Têketin pêwîst e',
 288+'accmailtitle' => 'Şîfre hat şandin.',
 289+'accmailtext' => "Şîfreya '$1' hat şandin ji $2 re.",
 290+'newarticle' => '(Nû)',
 291+'newarticletext' => "<div style=\"font-size:small;color:#003333;border-width:1px;border-style:solid;border-color:#aaaaaa;padding:3px\">
 292+Ev rûpel hîn tune. Eger tu bixwazî vê rûpelê çêkî, dest bi nivîsandinê bike û piştre qeyd bike.
 293+'''Wêrek be''', biceribîne!<br /> Ji bo alîkarî binêre: [[Help:Alîkarî|Alîkarî]].<br /> Eger tu bi şaştî hatî, bizivire rûpela berê. </div>",
 294+'anontalkpagetext' => "----
 295+''Ev rûpela guftûgo ye ji bo bikarhênerên nediyarkirî ku hîn hesabekî xwe çênekirine an jî bikarnaînin.
 296+Ji ber vê yekê divê em wan bi navnîşana IP ya hejmarî nîşan bikin. Navnîşaneke IP dikare ji aliyê gelek kesan ve were bikaranîn.
 297+Heger tu bikarhênerekî nediyarkirî bî û bawerdikî ku nirxandinên bê peywend di der barê te de hatine kirin ji kerema xwe re
 298+[[{{ns:special}}:Userlogin|hesabekî xwe veke an jî têkeve Ensîklopediya Azad]] da ku tu xwe ji tevlîheviyên bi bikarhênerên din re biparêzî.''",
 299+'noarticletext' => 'Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an
 300+[{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].',
 301+'usercssjsyoucanpreview' => "<strong>Tîp:</strong> 'Pêşdîtin' bikarwîne ji bo tu bibînê çawa CSS/JS'ê te yê nuh e berî tomarkirinê.",
 302+'usercsspreview' => "'''Zanibe ku tu bes CSS'ê xwe pêşdibînê, ew ne hatîye tomarkirin!'''",
 303+'updated' => '(Hat taze kirin)',
 304+'note' => '<strong>Not:</strong>',
 305+'previewnote' => 'Ji bîr neke ku ev bi tenê çavdêriyek e, ev rûpel hîn nehat qeyd kirin!',
 306+'editing' => 'Biguherîne: "$1"',
 307+'editinguser' => 'Biguherîne: "$1"',
 308+'editingsection' => 'Tê guherandin: $1 (beş)',
 309+'editingcomment' => '$1 (şîrove) tê guherandin.',
 310+'editconflict' => 'Têkçûna guherandinan: $1',
 311+'explainconflict' => 'Ji dema te dest bi guherandinê kir heta niha kesekê/î din ev rûpel guherand.
 312+
 313+Jor guhartoya heyî tê dîtîn. Guherandinên te jêr tên nîşan dan. Divê tû wan bikî yek. Heke niha tomar bikî, <b>bi tene</b> nivîsara qutiya jor wê bê tomarkirin. <p>',
 314+'yourtext' => 'Nivîsara te',
 315+'storedversion' => 'Versiyona qeydkirî',
 316+'editingold' => '<strong>HÎŞYAR: Tu ser revîsyoneke kevn a vê rûpelê dixebitî.
 317+Eger tu qeyd bikî, hemû guhertinên ji vê revîzyonê piştre winda dibin.
 318+</strong>',
 319+'yourdiff' => 'Ciyawazî',
 320+'copyrightwarning' => "Dîqat bike: Hemû tevkariyên {{SITENAME}} di bin $2 de tên belav kirin (ji bo hûragahiyan li $1 binêre).
 321+Eger tu nexwazî ku nivîsên te bê dilrehmî bên guherandin û li gora keyfa herkesî bên belavkirin, li vir neweşîne.<br />
 322+Tu soz didî ku te ev bi xwe nivîsand an jî ji çavkaniyekê azad an geliyane ''(public domain)'' girt. <strong>BERHEMÊN MAFÊN WAN PARASTÎ (©) BÊ DESTÛR NEWEŞÎNE!</strong>",
 323+'longpagewarning' => "HIŞYAR: Drêjahiya vê rûpelê $1 kB (kilobayt) e, ev pir e. Dibe ku çend ''browser''
 324+baş nikarin rûpelên ku ji 32 kB drêjtir in biguherînin. Eger tu vê rûpelê beş beş bikî gelo ne çêtir e?",
 325+'protectedpagewarning' => "'''ŞIYARÎ''': Ev rûpela tê parastin. Bi tenê bikarhênerên ku xwediyên mafên \"koordînator\" (sysop) ne dikarin vê rûpelê biguherînin.<br />
 326+
 327+Zanibe tu bi qebûlkirinên rûpelên astengkirinê kardikê!",
 328+'templatesused' => 'Şablon di van rûpelan da tê bikaranîn',
 329+'templatesusedpreview' => 'Şablon yê di vê pêşdîtinê da tên bikaranîn:',
 330+'templatesusedsection' => 'Şablon yê di vê perçê da tên bikaranîn:',
 331+'template-protected' => '(tê parastin)',
 332+'template-semiprotected' => '(nîv-parastî)',
 333+
 334+# "Undo" feature
 335+'undo-summary' => 'Rêvîsyona $1 yê [[{{ns:special}}:Contributions/$2|$2]] ([[User talk:$2|guftûgo]]) şondakir',
 336+
 337+# History pages
 338+'revhistory' => 'Dîroka revîzyonan',
 339+'viewpagelogs' => 'Înformasîyonan li ser vê rûpelê seke',
 340+'nohistory' => 'Ew rûpel dîroka guherandinê tune.',
 341+'revnotfound' => 'Revîzyon nehat dîtin',
 342+'currentrev' => 'Revîzyona niha',
 343+'revisionasof' => 'Revîzyon a $1',
 344+'previousrevision' => '←Rêvîzyona kevintir',
 345+'nextrevision' => 'Revîzyona nûtir→',
 346+'currentrevisionlink' => 'Revîzyona niha nîşan bide',
 347+'cur' => 'ferq',
 348+'next' => 'pêş',
 349+'last' => 'berê',
 350+'orig' => 'orîj',
 351+'histlegend' => 'Legend: (ferq) = cudayî nav vê û versiyon a niha,
 352+(berê) = cudayî nav vê û yê berê vê, B = guhêrka biçûk',
 353+'histfirst' => 'Kevintirîn',
 354+'histlast' => 'Nûtirîn',
 355+
 356+# Revision feed
 357+'history-feed-empty' => "The requested page doesn't exist.
 358+It may have been deleted from the wiki, or renamed.
 359+Try [[{{ns:special}}:Search|searching on the wiki]] for relevant new pages.",
 360+
 361+# Revision deletion
 362+'rev-delundel' => 'nîşan bide/veşêre',
 363+
 364+# Diffs
 365+'difference' => '(Ciyawaziya nav revîzyonan)',
 366+'lineno' => 'Dêrra $1:',
 367+'compareselectedversions' => 'Guhartoyan Helsengêne',
 368+'editundo' => 'Betalbike',
 369+
 370+# Search results
 371+'searchresults' => 'Encamên lêgerînê',
 372+'searchresulttext' => 'Ji bo zêdetir agahî der barê lêgerînê di {{SITENAME}} da, binêre $1.',
 373+'searchsubtitle' => 'Ji bo query "[[:$1]]"',
 374+'searchsubtitleinvalid' => 'Ji bo query "$1"',
 375+'noexactmatch' => "'''Rûpeleke bi navê \"\$1\" tune.''' Tu dikarî [[:\$1|vê rûpelê biafirînî]]",
 376+'titlematches' => 'Dîtinên di sernivîsên gotaran de',
 377+'notitlematches' => 'Di nav sernivîsan de nehat dîtin.',
 378+'textmatches' => 'Dîtinên di nivîsara rûpelan de',
 379+'notextmatches' => 'Di nivîsarê de nehat dîtin.',
 380+'prevn' => '$1 paş',
 381+'nextn' => '$1 pêş',
 382+'viewprevnext' => '($1) ($2) ($3).',
 383+'showingresults' => '<b>$1</b> encam, bi #<b>$2</b> dest pê dike.',
 384+'showingresultsnum' => '<b>$3</b> encam, bi #<b>$2</b> dest pê dike.',
 385+'powersearch' => 'Lê bigere',
 386+'powersearchtext' => 'Lêgerîn di nav cihên navan de:<br />
 387+$1<br />
 388+$2 Ragihandinan nîşan bide &amp;nbsp; Lêbigere: $3 $9',
 389+'searchdisabled' => '<p>Tu dikarî li {{SITENAME}} bi Google an Yahoo! bigere. Têbînî: Dibe ku encamen lêgerîne ne yên herî nû ne.
 390+</p>',
 391+'blanknamespace' => '(Serekî)',
 392+
 393+# Preferences page
 394+'preferences' => 'Tercîhên min',
 395+'prefsnologin' => 'Xwe qeyd nekir',
 396+'changepassword' => 'Şîfre biguherîne',
 397+'skin' => 'Pêste',
 398+'datetime' => 'Dem û rêkewt',
 399+'prefs-personal' => 'Agahiyên bikarhênerê/î',
 400+'prefs-rc' => 'Guherandinên dawî',
 401+'prefs-misc' => 'Eyaren cuda',
 402+'saveprefs' => 'Tercîhan qeyd bike',
 403+'oldpassword' => 'Şîfreya kevn',
 404+'newpassword' => 'Şîfreya nû',
 405+'retypenew' => 'Şîfreya nû careke din binîvîse',
 406+'textboxsize' => 'Guheranin',
 407+'rows' => 'Rêz',
 408+'columns' => 'sitûn',
 409+'searchresultshead' => 'Eyarên encamên lêgerinê',
 410+'savedprefs' => 'Tercîhên te qeyd kirî ne.',
 411+'default' => 'asayî',
 412+'files' => 'Dosya',
 413+
 414+# User rights
 415+'userrights-lookup-user' => 'Îdarekirina grûpan',
 416+'userrights-user-editname' => 'Navî bikarhênerê têke:',
 417+'userrights-groupsmember' => 'Endamê:',
 418+
 419+# Groups
 420+'group-sysop' => 'Koordînatoran',
 421+
 422+'group-sysop-member' => 'Koordînator',
 423+
 424+# User rights log
 425+'rightsnone' => '(tune)',
 426+
 427+# Recent changes
 428+'nchanges' => '$1 guherandin',
 429+'recentchanges' => 'Guherandinên dawî',
 430+'rcnote' => "Jêr {{PLURAL:$1|'''1''' xeyrandin|'''$1''' xeyrandinên dawî}} tên wêşandin yê {{PLURAL:$2|rojê dawî|'''$2''' rojên dawî}}. Ji $3.",
 431+'rclistfrom' => 'an jî guherandinên ji $1 şûnda nîşan bide.',
 432+'rclinks' => '$1 guherandinên di $2 rojên dawî de nîşan bide<br />$3',
 433+'diff' => 'ciyawazî',
 434+'hist' => 'dîrok',
 435+'hide' => 'veşêre',
 436+'show' => 'nîşan bide',
 437+'minoreditletter' => 'B',
 438+'newpageletter' => 'Nû',
 439+
 440+# Recent changes linked
 441+'recentchangeslinked' => 'Guherandinên peywend',
 442+
 443+# Upload
 444+'upload' => 'Wêneyekî barbike',
 445+'uploadbtn' => 'Wêneyê (ya tiştekî din ya mêdya) barbike',
 446+'reupload' => 'Dîsa barbike',
 447+'uploadnologin' => 'Xwe qeyd nekir',
 448+'uploadnologintext' => 'Ji bo barkirina wêneyan divê ku tu [[{{ns:special}}:Userlogin|têkevî]].',
 449+'uploadtext' => "Berê tu wêneyên nû bar bikî, ji bo dîtin an vedîtina wêneyên ku ji xwe hene binêre: [[Special:Imagelist|lîsteya wêneyên barkirî]].
 450+Herwisa wêneyên ku hatine barkirin an jî jê birin li vir dikarî bibînî: [[Special:Log/upload|reşahiya barkiriyan]].
 451+Yek ji lînkên jêr ji bo bikarhînana wêne an faylê di gotarê de bikar bihîne:
 452+* '''<nowiki>[[</nowiki>{{ns:Image}}:File.jpg]]'''
 453+* '''<nowiki>[[</nowiki>{{ns:Image}}:File.png|alt text]]''' anjî ji bo faylên dengî
 454+* '''<nowiki>[[</nowiki>{{ns:Media}}:File.ogg]]'''",
 455+'filename' => 'Navê dosyayê',
 456+'filedesc' => 'Kurte',
 457+'fileuploadsummary' => 'Kurte:',
 458+'filesource' => 'Çavkanî',
 459+'uploadedfiles' => 'Dosyayên bar kirî',
 460+'ignorewarning' => 'Hişyarê qebûl neke û dosyayê qeyd bike.',
 461+'ignorewarnings' => 'Guh nede hîşyaran',
 462+'minlength' => 'Navê wêne bi lanî kêm dive ji 3 tîpan pêtir be.',
 463+'badfilename' => 'Navê vî wêneyî hat guherandin û bû "$1".',
 464+'fileexists-forbidden' => 'Medyayek bi vê navî heye; xêra xwe şonda here û vê medyayê bi navekî din barbike.
 465+[[Image:$1|thumb|center|$1]]',
 466+'successfulupload' => 'Barkirin serkeftî',
 467+'fileuploaded' => 'Barkirina dosyaya bi navê $1 serkeftî.
 468+Ji kerema xwe, biçe: $2 û agahî li der barê dosyayê binivîse (ji ku derê hat girtin, kîngê hat çêkirin, kê çêkir û hwd.)
 469+
 470+Heke ev dosya wêneyek be, bi vî rengî bi kar bîne:
 471+<br />
 472+<tt><nowiki>[[</nowiki>{{ns:Image}}:$1|thumb|Binnivîs]]</tt>',
 473+'uploadwarning' => 'Hişyara barkirinê',
 474+'savefile' => 'Dosyayê tomar bike',
 475+'uploadedimage' => '"$1" barkirî',
 476+'sourcefilename' => 'Navî wêneyê (ya tiştekî din ya mêdya)',
 477+'destfilename' => 'Navî wêneyê (ya tiştekî din ya mêdya) yê xastî',
 478+'watchthisupload' => 'Vê rûpelê bişopîne',
 479+
 480+# Image list
 481+'imagelist' => 'Listeya wêneyan',
 482+'imagelisttext' => 'Below is a list of $1 files sorted $2.',
 483+'ilsubmit' => 'Lêbigere',
 484+'showlast' => '$1 wêneyên dawî bi rêz kirî $2 nîşan bide.',
 485+'byname' => 'li gor navê',
 486+'bydate' => 'li gor dîrokê',
 487+'bysize' => 'li gor mezinayiyê',
 488+'imghistory' => 'Dîroka vî wêneyî',
 489+'deleteimg' => 'jêbibe',
 490+'imagelinks' => 'Lînkên vî wêneyî',
 491+'linkstoimage' => 'Di van rûpelan de lînkek ji vî wêneyî re heye:',
 492+'nolinkstoimage' => 'Rûpelekî ku ji vî wêneyî re girêdankê çêdike nîne.',
 493+'noimage' => 'Medyayek bi vê navî tune, lê tu kanî $1',
 494+'noimage-linktext' => 'wê barbike',
 495+
 496+# MIME search
 497+'download' => 'dabezandin',
 498+
 499+# Unwatched pages
 500+'unwatchedpages' => 'Gotar ê ne tên şopandin',
 501+
 502+# Unused templates
 503+'unusedtemplateswlh' => 'lînkên din',
 504+
 505+# Statistics
 506+'statistics' => 'Statîstîk',
 507+'sitestats' => 'Statîstîkên rûpelê',
 508+'userstats' => 'Statistîkên bikarhêneran',
 509+'sitestatstext' => "Di ''database'' de <b>$1</b> rûpel hene. Tê de rûpelên guftûgoyê, rûpelên der barê {{SITENAME}}, rûpelên pir kurt, rûpelên ragihandinê (redirect) û rûpelên din ku qey ne gotar in hene.
 510+
 511+Derve wan, '''$2''' rûpel hene ku qey '''gotarên rewa''' ne.
 512+
 513+Ji 28'ê çileya 2004 heta roja îro <b>$4</b> carî rûpel hatin guherandin û wergî '''$5''' guherandin her rûpel.
 514+
 515+Dirêjbûnê „[[m:Help:Job queue|Job queue]]“: '''$7'''.
 516+
 517+----
 518+
 519+Fonksiyonên ku hîn rast naxebitin:
 520+*<b>$3</b> rûpel tê şopandin
 521+*<b>$5</b> xeyrandinên her rûpelê
 522+*<b>$6</b> pêşdîtin her rûpelê.",
 523+'userstatstext' => '<b>$1</b> bikarhênerên qeydkirî hene. Ji wan <b>$2</b> administrator/koordînator in. (Binêre $3).
 524+<br /><br />
 525+Ji bo statîstîkên din ser rûpela Destpêkê biçe: <b>Statîstîk</b>',
 526+
 527+'disambiguations' => 'Rûpelên cudakirinê',
 528+
 529+'brokenredirects' => 'Ragihandinên jê bûye',
 530+
 531+# Miscellaneous special pages
 532+'nbytes' => '$1 bayt',
 533+'nlinks' => '$1 lînk',
 534+'nmembers' => '$1 endam',
 535+'nviews' => '$1 dîtin',
 536+'lonelypages' => 'Rûpelên sêwî',
 537+'uncategorizedpages' => 'Rûpelên bê kategorî',
 538+'uncategorizedcategories' => 'Kategoriyên bê kategorî',
 539+'unusedcategories' => 'Kategoriyên ku nayên bi kar anîn',
 540+'unusedimages' => 'Wêneyên ku nayên bi kar anîn',
 541+'popularpages' => 'Rûpelên populer',
 542+'wantedcategories' => 'Kategorîyên tên xwestin',
 543+'wantedpages' => 'Rûpelên ku tên xwestin',
 544+'mostcategories' => 'Gotar bi pir kategorîyan',
 545+'allpages' => 'Hemû rûpel',
 546+'randompage' => 'Rûpelek bi helkeft',
 547+'shortpages' => 'Rûpelên kurt',
 548+'longpages' => 'Rûpelên dirêj',
 549+'deadendpages' => 'Rûpelên bê dergeh',
 550+'listusers' => 'Lîsteya bikarhêneran',
 551+'specialpages' => 'Rûpelên taybet',
 552+'spheading' => 'Rûpelên taybet ji bo hemû bikarhêneran',
 553+'newpages' => 'Rûpelên nû',
 554+'ancientpages' => 'Gotarên kevintirîn',
 555+'move' => 'Navê rûpelê biguherîne',
 556+'movethispage' => 'Vê rûpelê bigerîne',
 557+
 558+# Book sources
 559+'booksources' => 'Çavkaniyên pirtûkan',
 560+
 561+'categoriespagetext' => 'Di vê wîkiyê de ev kategorî hene:',
 562+'groups' => 'Grûpen bikarhêneran',
 563+'alphaindexline' => '$1 heta $2',
 564+'version' => 'Verzîyon',
 565+
 566+# Special:Log
 567+'specialloguserlabel' => 'Bikarhêner:',
 568+'log' => 'Reşahiyan',
 569+'logempty' => 'Tişt di vir da tune.',
 570+
 571+# Special:Allpages
 572+'nextpage' => 'Rûpela pêşî ($1)',
 573+'allpagesfrom' => 'Pêşdîtina rûpelan bi dest pê kirin ji',
 574+'allarticles' => 'Hemû gotar',
 575+'allinnamespace' => 'Hemû rûpelan ($1 boşahî a nav)',
 576+'allpagesprev' => 'Pêş',
 577+'allpagesnext' => 'Paş',
 578+'allpagessubmit' => 'Biçe',
 579+'allpagesprefix' => 'Nîşan bide rûpelên bi pêşgira:',
 580+
 581+# E-mail user
 582+'mailnologin' => 'Navnîşan neşîne',
 583+'emailuser' => 'Ji vê/î bikarhênerê/î re e-name bişîne',
 584+'emailpage' => 'E-name bikarhêner',
 585+'defemailsubject' => '{{SITENAME}} e-name',
 586+'noemailtitle' => 'Navnîşana e-name tune',
 587+'emailfrom' => 'Ji',
 588+'emailto' => 'Bo',
 589+'emailsubject' => 'Mijar',
 590+'emailmessage' => 'Name',
 591+'emailsend' => 'Bişîne',
 592+'emailsent' => 'E-name hat şandin',
 593+'emailsenttext' => 'E-nameya te hat şandin.',
 594+
 595+# Watchlist
 596+'watchlist' => 'Lîsteya min ya şopandinê',
 597+'mywatchlist' => 'Lîsteya min ya şopandinê',
 598+'watchlistfor' => '(ji bo $1)',
 599+'watchlistanontext' => 'Ji bo sekirinê ya xeyrandinê lîsteya te ya şopandinê tu gireke xwe $1.',
 600+'watchlistcount' => "'''$1 qeydkirin li lîsteya te ya şopandinê bi guftûgoran jî hene.'''",
 601+'watchlistcleartext' => 'Di rast dixazê wan betalbikê?',
 602+'watchlistclearbutton' => 'Lîsteya te ya şopandinê betalbike',
 603+'watchlistcleardone' => 'Lîsteya te ya şopandinê hate betalkirin. $1 gotar çûn.',
 604+'watchnologin' => 'Te xwe qeyd nekirîye.',
 605+'watchnologintext' => 'Ji bo xeyrandinê lîsteya te ya şopandinê tu gireke xwe [[{{ns:special}}:Userlogin|qedy kiribe]].',
 606+'addedwatch' => 'Hat îlawekirinî listeya şopandinê',
 607+'addedwatchtext' => "Rûpela \"\$1\" çû ser [[{{ns:special}}:Watchlist|lîsteya te ya şopandinê]].
 608+Li dahatû de her guhartoyek li wê rûpelê û rûpela guftûgo ya wê were kirin li vir dêt nîşan dan,
 609+
 610+Li rûpela [[{{ns:special}}:Recentchanges|Guherandinên dawî]] jî ji bo hasan dîtina wê, ew rûpel bi '''Nivîsa estûr''' dê nîşan dayîn.
 611+
 612+
 613+<p>Her dem tu bixwazî ew rûpel li nav lîsteya te ya şopandinê derbikî, li ser wê rûpelê, klîk bike \"êdî neşopîne\".",
 614+'removedwatch' => 'Ji lîsteya şopandinê hate jêbirin',
 615+'removedwatchtext' => 'Rûpela "$1" ji lîsteya te ya şopandinê hate jêbirin.',
 616+'watch' => 'Bişopîne',
 617+'watchthispage' => 'Vê rûpelê bişopîne',
 618+'unwatch' => 'Êdî neşopîne',
 619+'notanarticle' => 'Ne gotar e',
 620+'watchnochange' => 'Ne rûpelek, yê tu dişopînê, hate xeyrandin di vê wextê da, yê tu dixazê bibînê.',
 621+'watchdetails' => '* $1 rûpel tên şopandin, rûpelên guftûgoyê netên jimartin
 622+* [[{{ns:special}}:Watchlist/edit|Lîsteya şopandinê bibîne û bixeyrîne]]
 623+* [[{{ns:special}}:Watchlist/clear|Giştik rûpel derxe]]',
 624+'wlheader-enotif' => '* E-mail-şandin çêbû.',
 625+'wlheader-showupdated' => "* Ew rûpel yê hatin xeyrandin jilkî te li wan sekir di '''nivîsa estûr''' tên pêşandin.",
 626+'watchlistcontains' => 'Di lîsteya şopandina te de $1 rûpel hene.',
 627+'watcheditlist' => "Li vir lîstekî alfabêtî ji rûpelên te yê tu dişopînê ye. Li çargoşa xwe eger tu dixazê wan gotaran ji lîstê xwe bibê û paşê li 'Gotar bi şixtekî jêbibe' xwe.",
 628+'removingchecked' => 'Gotarên bi xeta tên jêbirin ji lîsteya te ya şopandinê',
 629+'couldntremove' => "'$1' naye jêbirin...",
 630+'wlnote' => 'Nuha $1 xeyrandinên dawî yê <b>$2</b> seetên dawî tên.',
 631+'wlshowlast' => 'Xeyrandînên berî $1 seetan, $2 rojan, ya $3 (di rojên sîyî paşî)',
 632+'wlsaved' => 'Ev rûpela verzîonekî qeydkirî ji lîsteya te ya şopandinê ye.',
 633+'watchlist-hide-bots' => "Guherandinên Bot'an veşêre",
 634+'watchlist-show-own' => 'Guherandinên min pêşke',
 635+'watchlist-hide-own' => 'Guherandinên min veşêre',
 636+'watchlist-show-minor' => 'Guherandinên biçûk pêşke',
 637+'watchlist-hide-minor' => 'Guherandinên biçûk veşêre',
 638+'wldone' => 'Çêbû.',
 639+
 640+'enotif_newpagetext' => 'Ev rûpeleke nû ye.',
 641+'changed' => 'guhart',
 642+'created' => 'afirandî',
 643+
 644+# Delete/protect/revert
 645+'deletepage' => 'Rûpelê jê bibe',
 646+'confirm' => 'Pesend bike',
 647+'excontent' => 'Naveroka berê: $1',
 648+'excontentauthor' => "Nawerokê wê rûpelê ew bû: '$1' (û tenya bikarhêner '$2' bû)",
 649+'exbeforeblank' => "Nawerok berî betal kirinê ew bû: '$1'",
 650+'exblank' => 'rûpel vala bû',
 651+'confirmdelete' => 'Teyîda jêbirinê',
 652+'deletesub' => '("$1" tê jêbirin)',
 653+'historywarning' => 'Hîşyar: Ew rûpel ku tu dixwazî jê bibî dîrokek heye:',
 654+'actioncomplete' => 'Çalakî temam',
 655+'deletedtext' => '"$1" hat jêbirin. Ji bo qeyda rûpelên ku di dema nêzîk de hatin jêbirin binêre $2.',
 656+'deletedarticle' => '"$1" hat jêbirin',
 657+'dellogpage' => 'Reşahiya_jêbirin',
 658+'dellogpagetext' => 'Li jêr lîsteyek ji jêbirinên dawî heye.',
 659+'deletionlog' => 'reşahiya jêbirin',
 660+'deletecomment' => 'Sedema jêbirinê',
 661+'rollback_short' => 'Bizivirîne pêş',
 662+'rollbacklink' => 'bizivirîne pêş',
 663+'cantrollback' => "Guharto naye vegerandin; bikarhêrê dawî, '''tenya''' nivîskarê wê rûpelê ye.",
 664+'alreadyrolled' => 'Guherandina dawiya [[$1]]
 665+bi [[User:$2|$2]] ([[User talk:$2|Guftûgo]]) venizivre; keseke din wê rûpelê zivrandiye an guherandiye.
 666+
 667+Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|Gufûgo]]).',
 668+'revertpage' => 'Guherandina $2 hat betal kirin, vegerand guhartoya dawî ya $1',
 669+'protectlogpage' => 'Reşahiya _parastiyan',
 670+'protectlogtext' => 'Below is a list of page locks and unlocks. See the [[{{ns:special}}:Protectedpages|protected pages list]] for the list of currently operational page protections.',
 671+'protectedarticle' => 'parastî [[$1]]',
 672+'unprotectedarticle' => '"[[$1]]" niha vê parastin e',
 673+'confirmprotect' => 'Parastinê teyîd bike',
 674+'protectcomment' => 'Sedema parastinê',
 675+'unprotectsub' => 'Parastinê "$1" rake',
 676+
 677+# Restrictions (nouns)
 678+'restriction-edit' => 'Biguherîne',
 679+'restriction-move' => 'Nav biguherîne',
 680+
 681+# Undelete
 682+'undelete' => 'Li rûpelên jêbirî seke',
 683+'viewdeletedpage' => 'Rûpelên vemirandî seke',
 684+'undeletebtn' => 'Dîsa çêke!',
 685+'undeletedarticle' => '"[[$1]]" dîsa çêkir',
 686+'undelete-search-box' => 'Rûpelên jêbirî lêbigere',
 687+'undelete-search-prefix' => 'Rûpela pêşe min ke ê bi vê destpêdîkin:',
 688+'undelete-search-submit' => 'Lêbigere',
 689+
 690+# Namespace form on various pages
 691+'namespace' => 'Boşahiya nav:',
 692+'invert' => 'Hilbijardinê pêçewane bike',
 693+
 694+# Contributions
 695+'contributions' => 'Beşdariyên vê bikarhêner',
 696+'mycontris' => 'Beşdariyên min',
 697+'contribsub2' => 'Ji bo $1 ($2)',
 698+'uclinks' => '$1 guherandinên dawî; $2 rojên dawî',
 699+'uctop' => ' (ser)',
 700+
 701+'sp-contributions-newest' => 'Nûtirîn',
 702+'sp-contributions-oldest' => 'Kevintirîn',
 703+'sp-contributions-newer' => '$1 yên nûtir',
 704+'sp-contributions-older' => '$1 yên kevintir',
 705+
 706+# What links here
 707+'whatlinkshere' => 'Lînk yê tên ser vê rûpelê',
 708+'notargettitle' => 'Hedef tune',
 709+'linklistsub' => '(Listeya lînkan)',
 710+'linkshere' => "Ev rûpel tên ser vê rûpelê '''„[[:$1]]“''':",
 711+'nolinkshere' => "Ne ji rûpelekê lînk tên ser '''„[[:$1]]“'''.",
 712+'isredirect' => 'rûpela ragihandinê',
 713+
 714+# Block/unblock
 715+'blockip' => 'Bikarhêner asteng bike',
 716+'blockiptext' => 'Ji bo astengkirina nivîsandinê ji navnîşaneke IP an bi navekî bikarhêner, vê formê bikarbîne.
 717+Ev bes gireke were bikaranîn ji bo vandalîzmê biskinîne (bi vê [[{{ns:project}}:Policy|qebûlkirinê]]).
 718+
 719+Sedemekê binivîse!',
 720+'ipbreason' => 'Sedem',
 721+'ipbreasonotherlist' => 'Sedemekî din',
 722+'ipbreason-dropdown' => '*Sedemên astengkirinê (bi tevayî)
 723+** vandalîzm
 724+** înformasyonên şaş kir gotarekê
 725+** rûpelê vala kir
 726+** bes lînkan dikir rûpelan
 727+** kovan dikir gotaran
 728+** heqaretkirin
 729+** pir accounts dikaranîn
 730+** navekî pîs',
 731+'ipbsubmit' => 'Vê bikarhêner asteng bike',
 732+'ipbother' => 'demekî din',
 733+'ipboptions' => '1 seet:1 hour,2 seet:2 hours,6 seet:6 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 mihe:1 month,3 mihe:3 months,1 sal:1 year,ji her demê ra:infinite',
 734+'ipbotheroption' => 'yên din',
 735+'ipbotherreason' => 'Sedemekî din',
 736+'badipaddress' => 'Bikarhêner bi vî navî tune',
 737+'blockipsuccesssub' => 'Blok serkeftî',
 738+'blockipsuccesstext' => '"$1" hat asteng kirin.
 739+<br />
 740+Bibîne [[{{ns:special}}:Ipblocklist|Lîsteya IP\'yan hatî asteng kirin]] ji bo lîsteya blokan.',
 741+'blocklistline' => '$1, $2 $3 asteng kir ($4)',
 742+'blocklink' => 'asteng bike',
 743+'unblocklink' => 'betala astengê',
 744+'contribslink' => 'Beşdarî',
 745+'autoblocker' => 'Otomatîk hat bestin jiberku IP-ya we û ya "[[User:$1|$1]]" yek in. Sedem: "\'\'\'$2\'\'\'"',
 746+'blocklogpage' => 'Reşahiya_asteng kiriyan',
 747+'blocklogentry' => '"[[$1]]" $3 astengkir ji bo dema $2.',
 748+'unblocklogentry' => 'astenga "$1" hat betal kirin',
 749+'proxyblocksuccess' => 'Çêbû.',
 750+
 751+# Move page
 752+'movepage' => 'Vê rûpelê bigerîne',
 753+'movepagetalktext' => "Rûpela '''guftûgoyê''' vê rûpelê wê were, eger hebe, gerandin. Lê ev tişta nameşe, eger
 754+
 755+*berê guftûgoyek bi wê navê hebe ya
 756+*tu tiştekî jêr hilbijêrê.
 757+
 758+Eger ev mişkla çêbû, tu gireke vê rûpelê bi xwe bigerînê.
 759+
 760+Xêra xwe navî nuh û sedemê navgerandinê binivisîne.",
 761+'movearticle' => 'Rûpelê bigerîne',
 762+'movenologin' => 'Xwe qeyd nekir',
 763+'movenologintext' => 'Tu dive bikarhênereke qeydkirî bî û [[{{ns:special}}:Userlogin|werî nav sîstemê]]
 764+da bikarî navê wê rûpelê biguherînî.',
 765+'newtitle' => 'Sernivîsa nû',
 766+'movepagebtn' => 'Vê rûpelê bigerîne',
 767+'pagemovedsub' => 'Gerandin serkeftî',
 768+'pagemovedtext' => 'Rûpela "[[$1]]" çû cihê "[[$2]]".',
 769+'articleexists' => 'Rûpela bi vî navî heye, an navê ku te hilbijart derbas nabe. Navekî din hilbijêre.',
 770+'movedto' => 'bû',
 771+'movetalk' => "Rûpela '''guftûgo''' ya wê jî bigerîne, eger gengaz be.",
 772+'1movedto2' => '$1 çû cihê $2',
 773+'1movedto2_redir' => '$1 çû cihê $2 ser redirect',
 774+'movelogpage' => 'Reşahiya nav guherandin',
 775+'movelogpagetext' => 'Li jêr lîsteyek ji rûpelan ku navê wan hatiye guherandin heye.',
 776+'movereason' => 'Sedem',
 777+
 778+# Namespace 8 related
 779+'allmessages' => 'Hemû mesajên sîstemê',
 780+'allmessagesname' => 'Nav',
 781+'allmessagescurrent' => 'Texta niha',
 782+'allmessagestext' => 'Ev lîsteya hemû mesajên di namespace a MediaWiki: de ye.',
 783+'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nikane were bikaranîn çunkî '''\$wgUseDatabaseMessages''' hatîye temirandin.",
 784+
 785+# Thumbnails
 786+'thumbnail-more' => 'Mezin bike',
 787+
 788+# Special:Import
 789+'importnotext' => 'Vala an nivîs tune',
 790+
 791+# Tooltip help for the actions
 792+'tooltip-pt-userpage' => 'Rûpela min a şexsî',
 793+'tooltip-pt-anonuserpage' => 'The user page for the ip you',
 794+'tooltip-pt-mytalk' => 'Rûpela guftûgo ya min',
 795+'tooltip-pt-preferences' => ',Tercîhên min',
 796+'tooltip-pt-watchlist' => 'The list of pages you',
 797+'tooltip-pt-mycontris' => 'Lîsteya tevkariyên min',
 798+'tooltip-pt-logout' => 'Derkeve (Log out)',
 799+'tooltip-ca-talk' => 'guftûgo û şîrove ser vê rûpelê',
 800+'tooltip-ca-edit' => 'Vê rûpelê biguherîne! Berê qeydkirinê bişkoka "Pêşdîtin',
 801+'tooltip-ca-addsection' => 'Beşekê zêde bike.',
 802+'tooltip-ca-history' => 'Versyonên berê yên vê rûpelê.',
 803+'tooltip-ca-protect' => 'Vê rûplê biparêze',
 804+'tooltip-ca-delete' => 'Vê rûpelê jê bibe',
 805+'tooltip-ca-move' => 'Navekî nû bide vê rûpelê',
 806+'tooltip-search' => 'Li vê wikiyê bigêre',
 807+'tooltip-p-logo' => 'Destpêk',
 808+'tooltip-n-mainpage' => 'Biçe Destpêkê',
 809+'tooltip-n-help' => 'Bersivên ji bo pirsên te.',
 810+'tooltip-t-whatlinkshere' => 'Lîsteya hemû rûpelên ku ji vê re grêdidin.',
 811+'tooltip-t-recentchangeslinked' => 'Recent changes in pages linking to this page',
 812+'tooltip-t-emailuser' => 'Jê re name bişîne',
 813+'tooltip-ca-nstab-user' => 'Rûpela bikarhênerê/î temaşe bike',
 814+'tooltip-ca-nstab-special' => 'This is a special page, you can',
 815+'tooltip-compareselectedversions' => 'Cudatiyên guhartoyên hilbijartî yên vê rûpelê bibîne. [alt-v]',
 816+
 817+# Stylesheets
 818+'monobook.css' => '*.rtl
 819+ {
 820+ dir:rtl;
 821+ text-align:right;
 822+ font-family: "Tahoma", "Unikurd Web", "Arial Unicode MS", "DejaVu Sans", "Lateef", "Scheherazade", "ae_Rasheeq", sans-serif, sans;
 823+ }
 824+
 825+ /*Make the site more suitable for Soranî users */
 826+ h1 {font-family: "Tahoma", "Arial Unicode MS", sans-serif, sans, "Unikurd Web", "Scheherazade";}
 827+ h2 {font-family: "Tahoma", "Arial Unicode MS", sans-serif, sans, "Unikurd Web", "Scheherazade";}
 828+ h3 {font-family: "Tahoma", "Arial Unicode MS", sans-serif, sans, "Unikurd Web", "Scheherazade";}
 829+ body {font-family: "Tahoma", "Arial Unicode MS", sans-serif, sans, "Unikurd Web", "Scheherazade";}
 830+ textarea {font-family: Lucida Console, Tahoma;}
 831+ pre {font-family: Lucida Console, Tahoma;}',
 832+
 833+# Scripts
 834+'common.js' => '/* JavaScript */
 835+
 836+/* Workaround for language variants */
 837+
 838+// Set user-defined "lang" attributes for the document element (from zh)
 839+var htmlE=document.documentElement;
 840+if (wgUserLanguage == "ku"){ variant = "ku"; }
 841+if (wgUserLanguage == "ku-latn"){ variant = "ku-Latn"; }
 842+if (wgUserLanguage == "ku-arab"){ variant = "ku-Arab"; htmlE.setAttribute("dir","rtl"); }
 843+htmlE.setAttribute("lang",variant);
 844+htmlE.setAttribute("xml:lang",variant);
 845+
 846+// Switch language variants of messages (from zh)
 847+function wgULS(latn,arab){
 848+ //
 849+ ku=latn||arab;
 850+ ku=ku;
 851+ latn=latn;
 852+ arab=arab;
 853+ switch(wgUserLanguage){
 854+ case "ku": return ku;
 855+ case "ku-arab": return arab;
 856+ case "ku-latn": return latn;
 857+ default: return "";
 858+ }
 859+}
 860+
 861+// workaround for RTL ([[bugzilla:6756]]) and for [[bugzilla:02020]] & [[bugzilla:04295]]
 862+if (wgUserLanguage == "ku-arab")
 863+{
 864+ document.direction="rtl";
 865+ document.write(\'<link rel="stylesheet" type="text/css" href="\'+stylepath+\'/common/common_rtl.css">\');
 866+ document.write(\'<style type="text/css">html {direction:rtl;} body {direction:rtl; unicode-bidi:embed; lang:ku-Arab; font-family:"Arial Unicode MS",Arial,Tahoma; font-size: 75%; letter-spacing: 0.001em;} html > body div#content ol {clear: left;} ol {margin-left:2.4em; margin-right:2.4em;} ul {margin-left:1.5em; margin-right:1.5em;} h1.firstHeading {background-position: bottom right; background-repeat: no-repeat;} h3 {font-size:110%;} h4 {font-size:100%;} h5 {font-size:90%;} #catlinks {width:100%;} #userloginForm {float: right !important;}</style>\');
 867+
 868+ if (skin == "monobook"){
 869+ document.write(\'<link rel="stylesheet" type="text/css" href="\'+stylepath+\'/monobook/rtl.css">\');
 870+ }
 871+}',
 872+
 873+# Attribution
 874+'anonymous' => 'Bikarhênera/ê nediyarkirî ya/yê {{SITENAME}}',
 875+'siteuser' => 'Bikarhênera $1 ê {{SITENAME}}',
 876+'and' => 'û',
 877+'others' => 'ên din',
 878+'siteusers' => 'Bikarhênerên $1 yên {{SITENAME}}',
 879+
 880+# Spam protection
 881+'subcategorycount' => 'Di vê kategoriyê de $1 binkategorî hene.',
 882+'categoryarticlecount' => 'Di vê kategoriyê de $1 gotar hene.',
 883+'listingcontinuesabbrev' => ' dewam',
 884+
 885+# Browsing diffs
 886+'previousdiff' => '← Ciyawaziya pêştir',
 887+'nextdiff' => 'Ciyawaziya paştir →',
 888+
 889+'newimages' => 'Pêşangeha wêneyên nû',
 890+
 891+# Variants for Kurdish language
 892+'variantname-ku' => 'disable',
 893+
 894+# 'all' in various places, this might be different for inflected languages
 895+'recentchangesall' => 'hemû',
 896+'imagelistall' => 'hemû',
 897+'watchlistall1' => 'giştik',
 898+'watchlistall2' => 'giştik',
 899+'namespacesall' => 'Hemû',
 900+
 901+# E-mail address confirmation
 902+'confirmemail_noemail' => 'Te e-mail-adressê xwe di [[{{ns:special}}:Preferences|tercihên xwe da]] nenivîsandîye.',
 903+'confirmemail_body' => 'Kesek, dibê tu, bi IP adressê $1, xwe li {{SITENAME}} bi vê navnîşana e-name tomar kir ("$2") .
 904+
 905+Eger ev rast qeydkirinê te ye û di dixwazî bikaranîna e-nama ji te ra çêbibe li {{SITENAME}}, li vê lînkê bitikîne:
 906+
 907+$3
 908+
 909+Lê eger ev *ne* tu bû, li lînkê netikîne. Ev e-nameya di rojê $4 da netê qebûlkirin.',
 910+
 911+# Inputbox extension, may be useful in other contexts as well
 912+'createarticle' => 'Gotarê biafirîne',
 913+
 914+# Scary transclusion
 915+'scarytranscludefailed' => '[Anîna şablona $1 biserneket; biborîne]',
 916+
 917+# Delete conflict
 918+'deletedwhileediting' => 'Hîşyar: Piştî te guherandinê xwe dest pê kir ev rûpela hate jêbirin!',
 919+
 920+# action=purge
 921+'confirm_purge' => 'Bîra vê rûpelê jêbîbe ?
 922+
 923+$1',
 924+'confirm_purge_button' => 'Temam',
 925+
 926+'youhavenewmessagesmulti' => 'Nameyên nih li $1 ji te ra hene.',
 927+
 928+'loginlanguagelabel' => 'Ziman: $1',
 929+
 930+# Auto-summaries
 931+'autosumm-blank' => 'Rûpel hate vala kirin',
 932+'autoredircomment' => 'Redirect berve [[$1]]', # This should be changed to the new naming convention, but existed beforehand
 933+'autosumm-new' => 'Rûpela nû: $1',
 934+
 935+# Live preview
 936+'livepreview-loading' => 'Tê…',
 937+'livepreview-ready' => 'Tê… Çêbû!',
 938+
 939+);
 940+
 941+?>
Property changes on: branches/liquidthreads/languages/messages/MessagesKu_latn.php
___________________________________________________________________
Added: svn:eol-style
1942 + native
Index: branches/liquidthreads/languages/messages/MessagesFi.php
@@ -101,6 +101,7 @@
102102 'Uncategorizedpages' => array( 'Luokittelemattomat_sivut' ),
103103 'Uncategorizedcategories' => array( 'Luokittelemattomat_luokat' ),
104104 'Uncategorizedimages' => array( 'Luokittelemattomat_tiedostot' ),
 105+ 'Uncategorizedtemplates' => array( 'Luokittelemattomat_mallineet' ),
105106 'Unusedcategories' => array( 'Käyttämättömät_luokat' ),
106107 'Unusedimages' => array( 'Käyttämättömät_tiedostot' ),
107108 'Wantedpages' => array( 'Halutuimmat_sivut' ),
@@ -498,6 +499,7 @@
499500 'yourvariant' => 'Kielivariantti',
500501 'yournick' => 'Allekirjoitus',
501502 'badsig' => 'Allekirjoitus ei kelpaa.',
 503+'badsiglength' => 'Allekirjoitus on liian pitkä – enimmäispituus on $1 merkkiä.',
502504 'email' => 'Sähköpostitoiminnot',
503505 'prefs-help-realname' => 'Vapaaehtoinen. Nimesi näytetään käyttäjätunnuksesi sijasta sivun tekijäluettelossa.',
504506 'loginerror' => 'Sisäänkirjautumisvirhe',
@@ -616,7 +618,7 @@
617619 'newarticletext' => 'Linkki toi sivulle, jota ei vielä ole. Voit luoda sivun kirjoittamalla alla olevaan tilaan. Jos et halua luoda sivua, käytä selaimen paluutoimintoa.',
618620 'anontalkpagetext' => "----''Tämä on nimettömän käyttäjän keskustelusivu. Hän ei ole joko luonut itselleen käyttäjätunnusta tai ei käytä sitä. Siksi hänet tunnistetaan nyt numeerisella IP-osoitteella. Kyseinen IP-osoite voi olla useamman henkilön käytössä. Jos olet nimetön käyttäjä, ja sinusta tuntuu, että aiheettomia kommentteja on ohjattu sinulle, [[Special:Userlogin|luo itsellesi käyttäjätunnus tai kirjaudu sisään]] välttääksesi jatkossa sekaannukset muiden nimettömien käyttäjien kanssa.''",
619621 'noarticletext' => "<big>'''{{GRAMMAR:inessive|{{SITENAME}}}} ei ole tämän nimistä sivua.'''</big>
620 -* Voit kirjoittaa uuden sivun '''<span class=\"plainlinks\">[{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} {{PAGENAME}}]</span>.'''
 622+* Voit kirjoittaa uuden sivun '''<span class=\"plainlinks\">[{{fullurl:{{FULLPAGENAME}}|action=edit}} {{PAGENAME}}]</span>.'''
621623 * Jos olet luonut sivun tällä nimellä, se on saatettu poistaa — katso [[Special:Log/delete|poistoloki]].",
622624 'clearyourcache' => "'''Huomautus:''' Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan:
623625 *'''Mozilla, Konqueror ja Safari:''' napsauta ''Shift''-näppäin pohjassa päivitä tai paina ''Ctrl-Shift-R'' (''Cmd-Shift-R'' Applella)
@@ -908,6 +910,7 @@
909911 # Recent changes linked
910912 'recentchangeslinked' => 'Linkitettyjen sivujen muutokset',
911913 'recentchangeslinked-noresult' => 'Ei muutoksia linkitettyihin sivuihin annetulla aikavälillä.',
 914+'recentchangeslinked-summary' => "Tämä toimintosivu näyttää muutokset sivuihin, joihin on viitattu tältä sivulta. Tarkkailulistallasi olevat sivut on '''paksunnettu'''.",
912915
913916 # Upload
914917 'upload' => 'Tallenna tiedosto',
@@ -1094,6 +1097,7 @@
10951098 'uncategorizedpages' => 'Luokittelemattomat sivut',
10961099 'uncategorizedcategories' => 'Luokittelemattomat luokat',
10971100 'uncategorizedimages' => 'Luokittelemattomat tiedostot',
 1101+'uncategorizedtemplates' => 'Luokittelemattomat mallineet',
10981102 'unusedcategories' => 'Käyttämättömät luokat',
10991103 'unusedimages' => 'Käyttämättömät tiedostot',
11001104 'popularpages' => 'Suositut sivut',
@@ -1149,6 +1153,7 @@
11501154 'specialloguserlabel' => 'Käyttäjä',
11511155 'speciallogtitlelabel' => 'Kohde',
11521156 'log' => 'Lokit',
 1157+'all-logs-page' => 'Kaikki lokit',
11531158 'log-search-legend' => 'Etsi lokeista',
11541159 'log-search-submit' => 'Hae',
11551160 'alllogstext' => 'Yhdistetty lokien näyttö. Voit rajoittaa listaa valitsemalla lokityypin, käyttäjän tai sivun johon muutos on kohdistunut.',
@@ -1309,6 +1314,7 @@
13101315 'protectlogpage' => 'Suojausloki',
13111316 'protectlogtext' => 'Alla on loki sivujen suojauksista ja suojauksien poistoista. Luettelo tällä hetkellä suojatuista sivuista löytyy [[Special:Protectedpages|suojattuen sivujen luettelosta]].',
13121317 'protectedarticle' => 'suojasi sivun $1',
 1318+'modifiedarticleprotection' => 'muutti sivun [[$1]] suojaustasoa',
13131319 'unprotectedarticle' => 'poisti suojauksen sivulta $1',
13141320 'protectsub' => 'Sivun $1 suojaus',
13151321 'confirmprotect' => 'Vahvista suojaus',
@@ -1432,6 +1438,7 @@
14331439 ** Sopimaton käyttäjätunnus',
14341440 'ipbanononly' => 'Estä vain kirjautumattomat käyttäjät',
14351441 'ipbcreateaccount' => 'Estä tunnusten luonti',
 1442+'ipbemailban' => 'Estä käyttäjää lähettämästä sähköpostia',
14361443 'ipbenableautoblock' => 'Estä viimeisin IP-osoite, josta käyttäjä on muokannut, sekä ne osoitteet, joista hän jatkossa yrittää muokata.',
14371444 'ipbsubmit' => 'Estä',
14381445 'ipbother' => 'Vapaamuotoinen kesto',
@@ -1460,6 +1467,7 @@
14611468 'anononlyblock' => 'vain kirjautumattomat',
14621469 'noautoblockblock' => 'ei automaattista IP-osoitteiden estoa',
14631470 'createaccountblock' => 'tunnusten luonti estetty',
 1471+'emailblock' => 'sähköpostin lähettäminen estetty',
14641472 'ipblocklist-empty' => 'Estolista on tyhjä.',
14651473 'ipblocklist-no-results' => 'Pyydettyä IP-osoitetta tai käyttäjätunnusta ei ole estetty.',
14661474 'blocklink' => 'estä',
@@ -1473,6 +1481,7 @@
14741482 'block-log-flags-anononly' => 'vain kirjautumattomat käyttäjät',
14751483 'block-log-flags-nocreate' => 'tunnusten luonti estetty',
14761484 'block-log-flags-noautoblock' => 'ei automaattista IP-osoitteiden estoa',
 1485+'block-log-flags-noemail' => 'sähköpostin lähettäminen estetty',
14771486 'range_block_disabled' => 'Ylläpitäjän oikeus luoda alue-estoja ei ole käytössä.',
14781487 'ipb_expiry_invalid' => 'Virheellinen umpeutumisaika.',
14791488 'ipb_already_blocked' => '”$1” on jo estetty.',
@@ -2139,11 +2148,6 @@
21402149 'lag-warn-normal' => 'Muutokset, jotka ovat uudempia kuin $1 sekuntia, eivät välttämättä näy tällä sivulla.',
21412150 'lag-warn-high' => 'Tietokannoilla on työjonoa. Muutokset, jotka ovat uudempia kuin $1 sekuntia, eivät välttämättä näy tällä sivulla.',
21422151
2143 -# Unknown messages
2144 -'block-log-flags-noemail' => 'sähköpostin lähettäminen estetty',
2145 -'emailblock' => 'sähköpostin lähettäminen estetty',
2146 -'ipbemailban' => 'Estä käyttäjää lähettämästä sähköpostia',
2147 -
21482152 );
21492153
21502154 ?>
Index: branches/liquidthreads/languages/messages/MessagesZh_cn.php
@@ -1119,6 +1119,7 @@
11201120 'specialloguserlabel' => '用户:',
11211121 'speciallogtitlelabel' => '标题:',
11221122 'log' => '日志',
 1123+'all-logs-page' => '所有日志',
11231124 'log-search-legend' => '搜寻日志',
11241125 'log-search-submit' => '去',
11251126 'alllogstext' => '综合显示上传、删除、保护、查封以及管理日志。
Index: branches/liquidthreads/languages/messages/MessagesKu_arab.php
@@ -0,0 +1,11 @@
 2+<?php
 3+/**
 4+ * Kurdish (Arab)
 5+ *
 6+ * @addtogroup Language
 7+ *
 8+ */
 9+
 10+$fallback = 'ku-latn';
 11+
 12+?>
Property changes on: branches/liquidthreads/languages/messages/MessagesKu_arab.php
___________________________________________________________________
Added: svn:eol-style
113 + native
Index: branches/liquidthreads/languages/messages/MessagesKu.php
@@ -1,895 +1,10 @@
22 <?php
3 -/** Kurdish (Kurdî / كوردي)
 3+/**
 4+ * Kurdish (latin)
45 *
56 * @addtogroup Language
67 */
78
8 -$namespaceNames = array(
9 - NS_MEDIA => 'Medya',
10 - NS_SPECIAL => 'Taybet',
11 - NS_MAIN => '',
12 - NS_TALK => 'Nîqaş',
13 - NS_USER => 'Bikarhêner',
14 - NS_USER_TALK => 'Bikarhêner_nîqaş',
15 - # NS_PROJECT set by $wgMetaNamespace
16 - NS_PROJECT_TALK => '$1_nîqaş',
17 - NS_IMAGE => 'Wêne',
18 - NS_IMAGE_TALK => 'Wêne_nîqaş',
19 - NS_MEDIAWIKI => 'MediaWiki',
20 - NS_MEDIAWIKI_TALK => 'MediaWiki_nîqaş',
21 - NS_TEMPLATE => 'Şablon',
22 - NS_TEMPLATE_TALK => 'Şablon_nîqaş',
23 - NS_HELP => 'Alîkarî',
24 - NS_HELP_TALK => 'Alîkarî_nîqaş',
25 - NS_CATEGORY => 'Kategorî',
26 - NS_CATEGORY_TALK => 'Kategorî_nîqaş'
27 -);
 9+$fallback = 'ku-latn';
2810
29 -$messages = array(
30 -# User preference toggles
31 -'tog-watchlisthideminor' => 'Xeyrandinên biçûk pêşneke',
32 -
33 -'underline-always' => 'Tim',
34 -'underline-never' => 'Ne carekê',
35 -
36 -'skinpreview' => '(Pêşdîtin)',
37 -
38 -# Dates
39 -'sunday' => 'yekşem',
40 -'monday' => 'duşem',
41 -'tuesday' => 'Sêşem',
42 -'wednesday' => 'Çarşem',
43 -'thursday' => 'Pêncşem',
44 -'friday' => 'În',
45 -'saturday' => 'şemî',
46 -'wed' => 'Çarş',
47 -'january' => 'Rêbendan',
48 -'february' => 'reşemî',
49 -'march' => 'adar',
50 -'april' => 'avrêl',
51 -'may_long' => 'gulan',
52 -'june' => 'pûşper',
53 -'july' => 'Tîrmeh',
54 -'august' => 'tebax',
55 -'september' => 'rezber',
56 -'october' => 'kewçêr',
57 -'november' => 'sermawez',
58 -'december' => 'Berfanbar',
59 -'december-gen' => 'Berfanbar',
60 -'jan' => 'rêb',
61 -'feb' => 'reş',
62 -'mar' => 'adr',
63 -'apr' => 'avr',
64 -'may' => 'gul',
65 -'jun' => 'pşr',
66 -'jul' => 'tîr',
67 -'aug' => 'teb',
68 -'sep' => 'rez',
69 -'oct' => 'kew',
70 -'nov' => 'ser',
71 -'dec' => 'ber',
72 -
73 -# Bits of text used by many pages
74 -'categories' => 'Kategorî',
75 -'pagecategories' => '$1 Kategorîyan',
76 -'category_header' => 'Gotarên di kategoriya "$1" de',
77 -'subcategories' => 'Binekategorî',
78 -
79 -'about' => 'Der barê',
80 -'article' => 'Gotar',
81 -'cancel' => 'Betal',
82 -'qbfind' => 'Bibîne',
83 -'qbbrowse' => 'Bigere',
84 -'qbedit' => 'Biguherîne',
85 -'qbpageoptions' => 'Ev rûpel',
86 -'qbmyoptions' => 'Rûpelên min',
87 -'qbspecialpages' => 'Rûpelên taybet',
88 -'moredotdotdot' => 'Zêde...',
89 -'mypage' => 'Rûpela min',
90 -'mytalk' => 'Rûpela guftûgo ya min',
91 -'anontalk' => 'Guftûgo ji bo vê IPê',
92 -'navigation' => 'Navîgasyon',
93 -
94 -'errorpagetitle' => 'Çewtî (Error)',
95 -'returnto' => 'Bizivire $1.',
96 -'tagline' => 'Ji {{SITENAME}}',
97 -'help' => 'Alîkarî',
98 -'search' => 'Lêbigere',
99 -'searchbutton' => 'Lêbigere',
100 -'go' => 'Gotar',
101 -'searcharticle' => 'Gotar',
102 -'history' => 'Dîroka rûpelê',
103 -'history_short' => 'Dîrok / Nivîskar',
104 -'info_short' => 'Zanyarî',
105 -'printableversion' => 'Versiyon ji bo çapkirinê',
106 -'print' => 'Çap',
107 -'edit' => 'Biguherîne',
108 -'editthispage' => 'Vê rûpelê biguherîne',
109 -'delete' => 'Jê bibe',
110 -'deletethispage' => 'Vê rûpelê jê bibe',
111 -'protect' => 'Biparêze',
112 -'protectthispage' => 'Vê rûpelê biparêze',
113 -'unprotect' => 'Parastinê rake',
114 -'unprotectthispage' => 'Parastina vê rûpelê rake',
115 -'newpage' => 'Rûpela nû',
116 -'talkpage' => 'Vê rûpelê guftûgo bike',
117 -'specialpage' => 'Rûpela taybet',
118 -'personaltools' => 'Amûrên şexsî',
119 -'postcomment' => 'Şîroveyekê bişîne',
120 -'articlepage' => 'Li naveroka rûpelê binêre',
121 -'talk' => 'Guftûgo (nîqaş)',
122 -'views' => 'Dîtin',
123 -'toolbox' => 'Qutiya amûran',
124 -'userpage' => 'Rûpelê vê/vî bikarhênerê/î temaşe bike',
125 -'templatepage' => 'Rûpelê şablonê seke',
126 -'viewhelppage' => 'Rûpelê alîkarîyê seke',
127 -'viewtalkpage' => 'Guftûgoyê temaşe bike',
128 -'otherlanguages' => 'Zimanên din',
129 -'redirectedfrom' => '(Hat ragihandin ji $1)',
130 -'lastmodifiedat' => 'Ev rûpel carî dawî di $2, $1 de hat guherandin.', # $1 date, $2 time
131 -'viewcount' => 'Ev rûpel $1 car hat xwestin.',
132 -'protectedpage' => 'Rûpela parastî',
133 -
134 -# 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).
135 -'aboutsite' => 'Der barê {{SITENAME}}',
136 -'aboutpage' => '{{SITENAME}}:Der barê',
137 -'bugreports' => 'Raporên çewtiyan',
138 -'bugreportspage' => '{{ns:project}}:Raporên çewtiyan',
139 -'copyright' => 'Ji bo naverokê $1 derbas dibe.',
140 -'copyrightpagename' => 'Mafên nivîsanê',
141 -'copyrightpage' => '{{ns:project}}:Mafên nivîsanê',
142 -'currentevents' => 'Bûyerên rojane',
143 -'currentevents-url' => 'Bûyerên rojane',
144 -'disclaimers' => 'Ferexetname',
145 -'edithelp' => 'Alîkarî ji bo guherandin',
146 -'edithelppage' => '{{ns:project}}: Rûpelekê çawa biguherînim',
147 -'faq' => 'Pirs û Bersîv (FAQ)',
148 -'faqpage' => '{{SITENAME}}: Pirs û Bersîv',
149 -'helppage' => '{{SITENAME}}: Alîkarî',
150 -'mainpage' => 'Destpêk',
151 -'portal' => 'Portala komê',
152 -'portal-url' => '{{ns:project}}:Portala komê',
153 -'sitesupport' => 'Ji bo Weqfa Wikimedia Beş',
154 -
155 -'badaccess' => 'Eror li bi dest Hînan',
156 -
157 -'versionrequired' => 'Verzîyonê $1 ji MediaWiki pêwîste',
158 -'versionrequiredtext' => 'Verzîyonê $1 ji MediaWiki pêwîste ji bo bikaranîna vê rûpelê. Li [[{{ns:special}}:version|versyon]] seke.',
159 -
160 -'ok' => 'Temam',
161 -'retrievedfrom' => 'Ji "$1" hatiye standin.',
162 -'youhavenewmessages' => '$1 yên te hene ($2).',
163 -'newmessageslink' => 'Nameyên nû',
164 -'newmessagesdifflink' => 'Ciyawazî ji revîzyona berê re',
165 -'editsection' => 'biguherîne',
166 -'editold' => 'biguherîne',
167 -'toc' => 'Tabloya Naverokê',
168 -'showtoc' => 'nîşan bide',
169 -'hidetoc' => 'veşêre',
170 -'viewdeleted' => 'Li $1 seke?',
171 -
172 -# Short words for each namespace, by default used in the 'article' tab in monobook
173 -'nstab-main' => 'Gotar',
174 -'nstab-user' => 'Bikarhêner',
175 -'nstab-media' => 'Medya',
176 -'nstab-special' => 'Taybet',
177 -'nstab-project' => 'Rûpela projeyê',
178 -'nstab-image' => 'Wêne',
179 -'nstab-mediawiki' => 'Peyam',
180 -'nstab-template' => 'Şablon',
181 -'nstab-help' => 'Alîkarî',
182 -'nstab-category' => 'Kategorî',
183 -
184 -# Main script and global functions
185 -'nosuchaction' => 'Çalakiyek bi vê rengê tune',
186 -'nosuchspecialpage' => 'Rûpeleke taybet bi vê rengê tune',
187 -
188 -# General errors
189 -'error' => 'Çewtî (Error)',
190 -'noconnect' => 'Bibexşîne! Çend pirsgrêkên teknîkî heye, girêdan ji pêşkêşvanê (suxrekirê, server) re niha ne gengaz e.<br />$1',
191 -'enterlockreason' => 'Hoyek ji bo bestin binav bike, herweha zemaneke mezende kirî ji bo helgirtina bestinê!',
192 -'filerenameerror' => 'Navê faylê "$1" nebû "$2".',
193 -'filenotfound' => 'Dosya bi navê "$1" nehat dîtin.',
194 -'badarticleerror' => 'Ev çalakî di vê rûpelê de nabe.',
195 -'badtitle' => 'Sernivîsa nebaş',
196 -'viewsource' => 'Çavkanî',
197 -'viewsourcefor' => 'ji $1 ra',
198 -
199 -# Login and logout pages
200 -'logouttitle' => 'Derketina bikarhêner',
201 -'logouttext' => 'Tu niha derketî (logged out).
202 -
203 -Tu dikarî di {{SITENAME}} da niha wekî bikarhênerekî nedîyarkirî bikarbînê, yan jî tu dikarî dîsa bi vî navê xwe yan navekî din wek bikarhêner têkevî {{SITENAME}}. Bila di bîra te de be ku gengaz e hin rûpel mîna ku tu hîn bi navê xwe qeyd kirîyî werin nîşandan, heta ku tu nîşanên çavlêgerandina (browser) xwe jênebî.',
204 -'welcomecreation' => '<h2>Bi xêr hatî, $1!</h2><p>Hesaba te hat afirandin. Tu dikarî niha tercîhên xwe eyar bikî.',
205 -'loginpagetitle' => 'Qeyda bikarhêner (User login)',
206 -'yourname' => 'Navê te wek bikarhêner (user name)',
207 -'yourpassword' => 'Şîfreya te (password)',
208 -'yourpasswordagain' => 'Şîfreya xwe careke din binîvîse',
209 -'remembermypassword' => 'Şifreya min di her rûniştdemê de bîne bîra xwe.',
210 -'yourdomainname' => 'Domaînê te',
211 -'loginproblem' => '<b>Di qeyda te (login) de pirsgirêkek derket.</b><br />Careke din biceribîne!',
212 -'alreadyloggedin' => '<font color=red><b>Bikarhêner $1, tu jixwe têketî!</b></font><br />',
213 -'login' => 'Têkeve (login)',
214 -'loginprompt' => "<b>Eger tu xwe nû qeyd bikî, nav û şîfreya xwe hilbijêre.</b> Ji bo xwe qeyd kirinê di {{SITENAME}} de divê ku ''cookies'' gengaz be.",
215 -'userlogin' => 'Têkeve an hesabeke nû çêke',
216 -'logout' => 'Derkeve (log out)',
217 -'userlogout' => 'Derkeve',
218 -'notloggedin' => 'Xwe qeyd nekir (not logged in)',
219 -'nologin' => 'Tu hêj ne endamî? $1.',
220 -'nologinlink' => 'Bibe endam',
221 -'createaccount' => 'Hesabê nû çêke',
222 -'gotaccount' => 'Hesabê te heye? $1.',
223 -'gotaccountlink' => 'Têkeve (login)',
224 -'createaccountmail' => 'bi e-name',
225 -'badretype' => 'Herdu şîfreyên ku te nivîsîn hevûdin nagirin.',
226 -'youremail' => 'E-maila te*',
227 -'username' => 'Navê bikarhêner:',
228 -'yourrealname' => 'Navê te yê rastî*',
229 -'yourlanguage' => 'Ziman',
230 -'yournick' => 'Leqeba te (ji bo îmza)',
231 -'loginerror' => 'Çewtî (Login error)',
232 -'nocookieslogin' => 'Ji bo qeydkirina bikarhêneran {{SITENAME}} "cookies" bikartîne. Te fonksîyona "cookies" girtîye. Xêra xwe kerema xwe "cookies" gengaz bike û careke din biceribîne.',
233 -'noname' => 'Navê ku te nivîsand derbas nabe.',
234 -'loginsuccesstitle' => 'Têketin serkeftî!',
235 -'loginsuccess' => 'Tu niha di {{SITENAME}} de qeydkirî yî wek "$1".',
236 -'nosuchuser' => 'Bikarhênera/ê bi navê "$1" tune. Navê rast binivîse an bi vê formê <b>hesabeke nû çêke</b>. (Ji bo hevalên nû "Têkeve" çênabe!)',
237 -'wrongpassword' => 'Şifreya ku te nivîsand şaşe. Ji kerema xwe careke din biceribîne.',
238 -'wrongpasswordempty' => 'Cîhê şîfreya te vala ye. Carekê din binivisîne.',
239 -'mailmypassword' => 'Şîfreyeke nû bi e-mail ji min re bişîne',
240 -'noemail' => 'Navnîşana bikarhênerê/î "$1" nehat tomar kirine.',
241 -'passwordsent' => 'Ji navnîşana e-mail ku ji bo "$1" hat tomarkirin şîfreyekê nû hat şandin. Vê bistîne û dîsa têkeve.',
242 -'acct_creation_throttle_hit' => 'Biborîne! Te hesab $1 vekirine. Tu êdî nikarî hesabên din vekî.',
243 -
244 -# Edit page toolbar
245 -'bold_sample' => 'Nivîsa estûr',
246 -'bold_tip' => 'Nivîsa estûr',
247 -'italic_sample' => 'Nivîsa xwar (îtalîk)',
248 -'italic_tip' => 'Nivîsa xwar (îtalîk)',
249 -'link_sample' => 'Navê lînkê',
250 -'link_tip' => 'Lînka hundir',
251 -'extlink_sample' => 'http://www.minak.com navê lînkê',
252 -'extlink_tip' => 'Lînka derve (http:// di destpêkê de ji bîr neke)',
253 -'headline_sample' => 'Nivîsara sernameyê',
254 -'headline_tip' => 'Sername asta 2',
255 -'nowiki_sample' => 'Nivîs ku nebe formatkirin',
256 -'image_sample' => 'Mînak.jpg',
257 -'image_tip' => 'Wêne li hundirê gotarê',
258 -'media_sample' => 'Mînak.ogg',
259 -'sig_tip' => 'Îmze û demxeya wext ya te',
260 -'hr_tip' => 'Rastexêza berwarî (kêm bi kar bîne)',
261 -
262 -# Edit pages
263 -'summary' => 'Kurte û çavkanî (Te çi kir?)',
264 -'subject' => 'Mijar/sernivîs',
265 -'minoredit' => 'Ev guheraniyekê biçûk e',
266 -'watchthis' => 'Vê gotarê bişopîne',
267 -'savearticle' => 'Rûpelê tomar bike',
268 -'preview' => 'Pêşdîtin',
269 -'showpreview' => 'Pêşdîtin',
270 -'showdiff' => 'Guherandinê nîşan bide',
271 -'anoneditwarning' => 'Tu ne têketî. Navnîşana IP ya te wê di dîroka guherandina vê rûpelê de bê tomar kirin.',
272 -'subject-preview' => 'Pêşdîtinê sernivîsê',
273 -'blockedtitle' => 'Bikarhêner hat asteng kirin',
274 -'blockedtext' => 'Navê bikarhêner an jî navnîşana IP ya te ji aliyê $1 hat asteng kirin. Sedema vê ev e:<br />\'\'$2\'\'<p>Tu dikarî bi $1 an yek ji [[{{SITENAME}}:Koordînator|koordînatorên din]] re ser vê blokê guftûgo bikî.
275 -
276 -Têbînî: Tu nikarî fonksiyona "Ji vê bikarhêner re E-mail bişîne" bi kar bîne eger te navnîşana email a xwe di "[[{{ns:special}}:Preferences|Tercîhên min]]" de nenivîsand.
277 -
278 -Navnîşana te ya IP $3 ye. Ji kerema xwe eger pirsên te hebe vê navnîşanê bibêje.',
279 -'whitelistedittitle' => 'Ji bo guherandinê vê gotarê tu gireke xwe qeydbikê.',
280 -'whitelistedittext' => 'Ji bo guherandinê vê gotarê tu gireke xwe [[{{ns:special}}:Userlogin|li vir]] qeydbikê.',
281 -'whitelistreadtitle' => 'Ji xandinê vê gotarê tu gireke xwe qeydbikê',
282 -'whitelistreadtext' => 'Ji bo xandinê vê gotarê tu gireke xwe [[{{ns:special}}:Userlogin|li vir]] qedybikê.',
283 -'whitelistacctitle' => 'Tu nikanê xwe qeydbikê.',
284 -'whitelistacctext' => 'To be allowed to create accounts in this wiki you have to [[{{ns:special}}:Userlogin|log]] in and have the appropriate permissions.',
285 -'loginreqtitle' => 'Têketin pêwîst e',
286 -'accmailtitle' => 'Şîfre hat şandin.',
287 -'accmailtext' => "Şîfreya '$1' hat şandin ji $2 re.",
288 -'newarticle' => '(Nû)',
289 -'newarticletext' => "<div style=\"font-size:small;color:#003333;border-width:1px;border-style:solid;border-color:#aaaaaa;padding:3px\">
290 -Ev rûpel hîn tune. Eger tu bixwazî vê rûpelê çêkî, dest bi nivîsandinê bike û piştre qeyd bike.
291 -'''Wêrek be''', biceribîne!<br /> Ji bo alîkarî binêre: [[Help:Alîkarî|Alîkarî]].<br /> Eger tu bi şaştî hatî, bizivire rûpela berê. </div>",
292 -'anontalkpagetext' => "----
293 -''Ev rûpela guftûgo ye ji bo bikarhênerên nediyarkirî ku hîn hesabekî xwe çênekirine an jî bikarnaînin.
294 -Ji ber vê yekê divê em wan bi navnîşana IP ya hejmarî nîşan bikin. Navnîşaneke IP dikare ji aliyê gelek kesan ve were bikaranîn.
295 -Heger tu bikarhênerekî nediyarkirî bî û bawerdikî ku nirxandinên bê peywend di der barê te de hatine kirin ji kerema xwe re
296 -[[{{ns:special}}:Userlogin|hesabekî xwe veke an jî têkeve Ensîklopediya Azad]] da ku tu xwe ji tevlîheviyên bi bikarhênerên din re biparêzî.''",
297 -'noarticletext' => 'Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an
298 -[{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].',
299 -'usercssjsyoucanpreview' => "<strong>Tîp:</strong> 'Pêşdîtin' bikarwîne ji bo tu bibînê çawa CSS/JS'ê te yê nuh e berî tomarkirinê.",
300 -'usercsspreview' => "'''Zanibe ku tu bes CSS'ê xwe pêşdibînê, ew ne hatîye tomarkirin!'''",
301 -'updated' => '(Hat taze kirin)',
302 -'note' => '<strong>Not:</strong>',
303 -'previewnote' => 'Ji bîr neke ku ev bi tenê çavdêriyek e, ev rûpel hîn nehat qeyd kirin!',
304 -'editing' => 'Biguherîne: "$1"',
305 -'editinguser' => 'Biguherîne: "$1"',
306 -'editingsection' => 'Tê guherandin: $1 (beş)',
307 -'editingcomment' => '$1 (şîrove) tê guherandin.',
308 -'editconflict' => 'Têkçûna guherandinan: $1',
309 -'explainconflict' => 'Ji dema te dest bi guherandinê kir heta niha kesekê/î din ev rûpel guherand.
310 -
311 -Jor guhartoya heyî tê dîtîn. Guherandinên te jêr tên nîşan dan. Divê tû wan bikî yek. Heke niha tomar bikî, <b>bi tene</b> nivîsara qutiya jor wê bê tomarkirin. <p>',
312 -'yourtext' => 'Nivîsara te',
313 -'storedversion' => 'Versiyona qeydkirî',
314 -'editingold' => '<strong>HÎŞYAR: Tu ser revîsyoneke kevn a vê rûpelê dixebitî.
315 -Eger tu qeyd bikî, hemû guhertinên ji vê revîzyonê piştre winda dibin.
316 -</strong>',
317 -'yourdiff' => 'Ciyawazî',
318 -'copyrightwarning' => "Dîqat bike: Hemû tevkariyên {{SITENAME}} di bin $2 de tên belav kirin (ji bo hûragahiyan li $1 binêre).
319 -Eger tu nexwazî ku nivîsên te bê dilrehmî bên guherandin û li gora keyfa herkesî bên belavkirin, li vir neweşîne.<br />
320 -Tu soz didî ku te ev bi xwe nivîsand an jî ji çavkaniyekê azad an geliyane ''(public domain)'' girt. <strong>BERHEMÊN MAFÊN WAN PARASTÎ (©) BÊ DESTÛR NEWEŞÎNE!</strong>",
321 -'longpagewarning' => "HIŞYAR: Drêjahiya vê rûpelê $1 kB (kilobayt) e, ev pir e. Dibe ku çend ''browser''
322 -baş nikarin rûpelên ku ji 32 kB drêjtir in biguherînin. Eger tu vê rûpelê beş beş bikî gelo ne çêtir e?",
323 -'protectedpagewarning' => "'''ŞIYARÎ''': Ev rûpela tê parastin. Bi tenê bikarhênerên ku xwediyên mafên \"koordînator\" (sysop) ne dikarin vê rûpelê biguherînin.<br />
324 -
325 -Zanibe tu bi qebûlkirinên rûpelên astengkirinê kardikê!",
326 -'templatesused' => 'Şablon di van rûpelan da tê bikaranîn',
327 -'templatesusedpreview' => 'Şablon yê di vê pêşdîtinê da tên bikaranîn:',
328 -'templatesusedsection' => 'Şablon yê di vê perçê da tên bikaranîn:',
329 -'template-protected' => '(tê parastin)',
330 -'template-semiprotected' => '(nîv-parastî)',
331 -
332 -# "Undo" feature
333 -'undo-summary' => 'Rêvîsyona $1 yê [[{{ns:special}}:Contributions/$2|$2]] ([[User talk:$2|guftûgo]]) şondakir',
334 -
335 -# History pages
336 -'revhistory' => 'Dîroka revîzyonan',
337 -'viewpagelogs' => 'Înformasîyonan li ser vê rûpelê seke',
338 -'nohistory' => 'Ew rûpel dîroka guherandinê tune.',
339 -'revnotfound' => 'Revîzyon nehat dîtin',
340 -'currentrev' => 'Revîzyona niha',
341 -'revisionasof' => 'Revîzyon a $1',
342 -'previousrevision' => '←Rêvîzyona kevintir',
343 -'nextrevision' => 'Revîzyona nûtir→',
344 -'currentrevisionlink' => 'Revîzyona niha nîşan bide',
345 -'cur' => 'ferq',
346 -'next' => 'pêş',
347 -'last' => 'berê',
348 -'orig' => 'orîj',
349 -'histlegend' => 'Legend: (ferq) = cudayî nav vê û versiyon a niha,
350 -(berê) = cudayî nav vê û yê berê vê, B = guhêrka biçûk',
351 -'histfirst' => 'Kevintirîn',
352 -'histlast' => 'Nûtirîn',
353 -
354 -# Revision feed
355 -'history-feed-empty' => "The requested page doesn't exist.
356 -It may have been deleted from the wiki, or renamed.
357 -Try [[{{ns:special}}:Search|searching on the wiki]] for relevant new pages.",
358 -
359 -# Revision deletion
360 -'rev-delundel' => 'nîşan bide/veşêre',
361 -
362 -# Diffs
363 -'difference' => '(Ciyawaziya nav revîzyonan)',
364 -'lineno' => 'Dêrra $1:',
365 -'compareselectedversions' => 'Guhartoyan Helsengêne',
366 -'editundo' => 'Betalbike',
367 -
368 -# Search results
369 -'searchresults' => 'Encamên lêgerînê',
370 -'searchresulttext' => 'Ji bo zêdetir agahî der barê lêgerînê di {{SITENAME}} da, binêre $1.',
371 -'searchsubtitle' => 'Ji bo query "[[:$1]]"',
372 -'searchsubtitleinvalid' => 'Ji bo query "$1"',
373 -'noexactmatch' => "'''Rûpeleke bi navê \"\$1\" tune.''' Tu dikarî [[:\$1|vê rûpelê biafirînî]]",
374 -'titlematches' => 'Dîtinên di sernivîsên gotaran de',
375 -'notitlematches' => 'Di nav sernivîsan de nehat dîtin.',
376 -'textmatches' => 'Dîtinên di nivîsara rûpelan de',
377 -'notextmatches' => 'Di nivîsarê de nehat dîtin.',
378 -'prevn' => '$1 paş',
379 -'nextn' => '$1 pêş',
380 -'viewprevnext' => '($1) ($2) ($3).',
381 -'showingresults' => '<b>$1</b> encam, bi #<b>$2</b> dest pê dike.',
382 -'showingresultsnum' => '<b>$3</b> encam, bi #<b>$2</b> dest pê dike.',
383 -'powersearch' => 'Lê bigere',
384 -'powersearchtext' => 'Lêgerîn di nav cihên navan de:<br />
385 -$1<br />
386 -$2 Ragihandinan nîşan bide &amp;nbsp; Lêbigere: $3 $9',
387 -'searchdisabled' => '<p>Tu dikarî li {{SITENAME}} bi Google an Yahoo! bigere. Têbînî: Dibe ku encamen lêgerîne ne yên herî nû ne.
388 -</p>',
389 -'blanknamespace' => '(Serekî)',
390 -
391 -# Preferences page
392 -'preferences' => 'Tercîhên min',
393 -'prefsnologin' => 'Xwe qeyd nekir',
394 -'changepassword' => 'Şîfre biguherîne',
395 -'skin' => 'Pêste',
396 -'datetime' => 'Dem û rêkewt',
397 -'prefs-personal' => 'Agahiyên bikarhênerê/î',
398 -'prefs-rc' => 'Guherandinên dawî',
399 -'prefs-misc' => 'Eyaren cuda',
400 -'saveprefs' => 'Tercîhan qeyd bike',
401 -'oldpassword' => 'Şîfreya kevn',
402 -'newpassword' => 'Şîfreya nû',
403 -'retypenew' => 'Şîfreya nû careke din binîvîse',
404 -'textboxsize' => 'Guheranin',
405 -'rows' => 'Rêz',
406 -'columns' => 'sitûn',
407 -'searchresultshead' => 'Eyarên encamên lêgerinê',
408 -'savedprefs' => 'Tercîhên te qeyd kirî ne.',
409 -'default' => 'asayî',
410 -'files' => 'Dosya',
411 -
412 -# User rights
413 -'userrights-lookup-user' => 'Îdarekirina grûpan',
414 -'userrights-user-editname' => 'Navî bikarhênerê têke:',
415 -'userrights-groupsmember' => 'Endamê:',
416 -
417 -# Groups
418 -'group-sysop' => 'Koordînatoran',
419 -
420 -'group-sysop-member' => 'Koordînator',
421 -
422 -# User rights log
423 -'rightsnone' => '(tune)',
424 -
425 -# Recent changes
426 -'nchanges' => '$1 guherandin',
427 -'recentchanges' => 'Guherandinên dawî',
428 -'rcnote' => "Jêr {{PLURAL:$1|'''1''' xeyrandin|'''$1''' xeyrandinên dawî}} tên wêşandin yê {{PLURAL:$2|rojê dawî|'''$2''' rojên dawî}}. Ji $3.",
429 -'rclistfrom' => 'an jî guherandinên ji $1 şûnda nîşan bide.',
430 -'rclinks' => '$1 guherandinên di $2 rojên dawî de nîşan bide<br />$3',
431 -'diff' => 'ciyawazî',
432 -'hist' => 'dîrok',
433 -'hide' => 'veşêre',
434 -'show' => 'nîşan bide',
435 -'minoreditletter' => 'B',
436 -'newpageletter' => 'Nû',
437 -
438 -# Recent changes linked
439 -'recentchangeslinked' => 'Guherandinên peywend',
440 -
441 -# Upload
442 -'upload' => 'Wêneyekî barbike',
443 -'uploadbtn' => 'Wêneyê (ya tiştekî din ya mêdya) barbike',
444 -'reupload' => 'Dîsa barbike',
445 -'uploadnologin' => 'Xwe qeyd nekir',
446 -'uploadnologintext' => 'Ji bo barkirina wêneyan divê ku tu [[{{ns:special}}:Userlogin|têkevî]].',
447 -'uploadtext' => "Berê tu wêneyên nû bar bikî, ji bo dîtin an vedîtina wêneyên ku ji xwe hene binêre: [[Special:Imagelist|lîsteya wêneyên barkirî]].
448 -Herwisa wêneyên ku hatine barkirin an jî jê birin li vir dikarî bibînî: [[Special:Log/upload|reşahiya barkiriyan]].
449 -Yek ji lînkên jêr ji bo bikarhînana wêne an faylê di gotarê de bikar bihîne:
450 -* '''<nowiki>[[</nowiki>{{ns:Image}}:File.jpg]]'''
451 -* '''<nowiki>[[</nowiki>{{ns:Image}}:File.png|alt text]]''' anjî ji bo faylên dengî
452 -* '''<nowiki>[[</nowiki>{{ns:Media}}:File.ogg]]'''",
453 -'filename' => 'Navê dosyayê',
454 -'filedesc' => 'Kurte',
455 -'fileuploadsummary' => 'Kurte:',
456 -'filesource' => 'Çavkanî',
457 -'uploadedfiles' => 'Dosyayên bar kirî',
458 -'ignorewarning' => 'Hişyarê qebûl neke û dosyayê qeyd bike.',
459 -'ignorewarnings' => 'Guh nede hîşyaran',
460 -'minlength' => 'Navê wêne bi lanî kêm dive ji 3 tîpan pêtir be.',
461 -'badfilename' => 'Navê vî wêneyî hat guherandin û bû "$1".',
462 -'fileexists-forbidden' => 'Medyayek bi vê navî heye; xêra xwe şonda here û vê medyayê bi navekî din barbike.
463 -[[Image:$1|thumb|center|$1]]',
464 -'successfulupload' => 'Barkirin serkeftî',
465 -'fileuploaded' => 'Barkirina dosyaya bi navê $1 serkeftî.
466 -Ji kerema xwe, biçe: $2 û agahî li der barê dosyayê binivîse (ji ku derê hat girtin, kîngê hat çêkirin, kê çêkir û hwd.)
467 -
468 -Heke ev dosya wêneyek be, bi vî rengî bi kar bîne:
469 -<br />
470 -<tt><nowiki>[[</nowiki>{{ns:Image}}:$1|thumb|Binnivîs]]</tt>',
471 -'uploadwarning' => 'Hişyara barkirinê',
472 -'savefile' => 'Dosyayê tomar bike',
473 -'uploadedimage' => '"$1" barkirî',
474 -'sourcefilename' => 'Navî wêneyê (ya tiştekî din ya mêdya)',
475 -'destfilename' => 'Navî wêneyê (ya tiştekî din ya mêdya) yê xastî',
476 -'watchthisupload' => 'Vê rûpelê bişopîne',
477 -
478 -# Image list
479 -'imagelist' => 'Listeya wêneyan',
480 -'imagelisttext' => 'Below is a list of $1 files sorted $2.',
481 -'ilsubmit' => 'Lêbigere',
482 -'showlast' => '$1 wêneyên dawî bi rêz kirî $2 nîşan bide.',
483 -'byname' => 'li gor navê',
484 -'bydate' => 'li gor dîrokê',
485 -'bysize' => 'li gor mezinayiyê',
486 -'imghistory' => 'Dîroka vî wêneyî',
487 -'deleteimg' => 'jêbibe',
488 -'imagelinks' => 'Lînkên vî wêneyî',
489 -'linkstoimage' => 'Di van rûpelan de lînkek ji vî wêneyî re heye:',
490 -'nolinkstoimage' => 'Rûpelekî ku ji vî wêneyî re girêdankê çêdike nîne.',
491 -'noimage' => 'Medyayek bi vê navî tune, lê tu kanî $1',
492 -'noimage-linktext' => 'wê barbike',
493 -
494 -# MIME search
495 -'download' => 'dabezandin',
496 -
497 -# Unwatched pages
498 -'unwatchedpages' => 'Gotar ê ne tên şopandin',
499 -
500 -# Unused templates
501 -'unusedtemplateswlh' => 'lînkên din',
502 -
503 -# Statistics
504 -'statistics' => 'Statîstîk',
505 -'sitestats' => 'Statîstîkên rûpelê',
506 -'userstats' => 'Statistîkên bikarhêneran',
507 -'sitestatstext' => "Di ''database'' de <b>$1</b> rûpel hene. Tê de rûpelên guftûgoyê, rûpelên der barê {{SITENAME}}, rûpelên pir kurt, rûpelên ragihandinê (redirect) û rûpelên din ku qey ne gotar in hene.
508 -
509 -Derve wan, '''$2''' rûpel hene ku qey '''gotarên rewa''' ne.
510 -
511 -Ji 28'ê çileya 2004 heta roja îro <b>$4</b> carî rûpel hatin guherandin û wergî '''$5''' guherandin her rûpel.
512 -
513 -Dirêjbûnê „[[m:Help:Job queue|Job queue]]“: '''$7'''.
514 -
515 -
516 -Fonksiyonên ku hîn rast naxebitin:
517 -*<b>$3</b> rûpel tê şopandin
518 -*<b>$5</b> xeyrandinên her rûpelê
519 -*<b>$6</b> pêşdîtin her rûpelê.",
520 -'userstatstext' => '<b>$1</b> bikarhênerên qeydkirî hene. Ji wan <b>$2</b> administrator/koordînator in. (Binêre $3).
521 -<br /><br />
522 -Ji bo statîstîkên din ser rûpela Destpêkê biçe: <b>Statîstîk</b>',
523 -
524 -'disambiguations' => 'Rûpelên cudakirinê',
525 -
526 -'brokenredirects' => 'Ragihandinên jê bûye',
527 -
528 -# Miscellaneous special pages
529 -'nbytes' => '$1 bayt',
530 -'nlinks' => '$1 lînk',
531 -'nmembers' => '$1 endam',
532 -'nviews' => '$1 dîtin',
533 -'lonelypages' => 'Rûpelên sêwî',
534 -'uncategorizedpages' => 'Rûpelên bê kategorî',
535 -'uncategorizedcategories' => 'Kategoriyên bê kategorî',
536 -'unusedcategories' => 'Kategoriyên ku nayên bi kar anîn',
537 -'unusedimages' => 'Wêneyên ku nayên bi kar anîn',
538 -'popularpages' => 'Rûpelên populer',
539 -'wantedcategories' => 'Kategorîyên tên xwestin',
540 -'wantedpages' => 'Rûpelên ku tên xwestin',
541 -'mostcategories' => 'Gotar bi pir kategorîyan',
542 -'allpages' => 'Hemû rûpel',
543 -'randompage' => 'Rûpelek bi helkeft',
544 -'shortpages' => 'Rûpelên kurt',
545 -'longpages' => 'Rûpelên dirêj',
546 -'deadendpages' => 'Rûpelên bê dergeh',
547 -'listusers' => 'Lîsteya bikarhêneran',
548 -'specialpages' => 'Rûpelên taybet',
549 -'spheading' => 'Rûpelên taybet ji bo hemû bikarhêneran',
550 -'newpages' => 'Rûpelên nû',
551 -'ancientpages' => 'Gotarên kevintirîn',
552 -'move' => 'Navê rûpelê biguherîne',
553 -'movethispage' => 'Vê rûpelê bigerîne',
554 -
555 -# Book sources
556 -'booksources' => 'Çavkaniyên pirtûkan',
557 -
558 -'categoriespagetext' => 'Di vê wîkiyê de ev kategorî hene:',
559 -'groups' => 'Grûpen bikarhêneran',
560 -'alphaindexline' => '$1 heta $2',
561 -'version' => 'Verzîyon',
562 -
563 -# Special:Log
564 -'specialloguserlabel' => 'Bikarhêner:',
565 -'log' => 'Reşahiyan',
566 -'logempty' => 'Tişt di vir da tune.',
567 -
568 -# Special:Allpages
569 -'nextpage' => 'Rûpela pêşî ($1)',
570 -'allpagesfrom' => 'Pêşdîtina rûpelan bi dest pê kirin ji',
571 -'allarticles' => 'Hemû gotar',
572 -'allinnamespace' => 'Hemû rûpelan ($1 boşahî a nav)',
573 -'allpagesprev' => 'Pêş',
574 -'allpagesnext' => 'Paş',
575 -'allpagessubmit' => 'Biçe',
576 -'allpagesprefix' => 'Nîşan bide rûpelên bi pêşgira:',
577 -
578 -# E-mail user
579 -'mailnologin' => 'Navnîşan neşîne',
580 -'emailuser' => 'Ji vê/î bikarhênerê/î re e-name bişîne',
581 -'emailpage' => 'E-name bikarhêner',
582 -'defemailsubject' => '{{SITENAME}} e-name',
583 -'noemailtitle' => 'Navnîşana e-name tune',
584 -'emailfrom' => 'Ji',
585 -'emailto' => 'Bo',
586 -'emailsubject' => 'Mijar',
587 -'emailmessage' => 'Name',
588 -'emailsend' => 'Bişîne',
589 -'emailsent' => 'E-name hat şandin',
590 -'emailsenttext' => 'E-nameya te hat şandin.',
591 -
592 -# Watchlist
593 -'watchlist' => 'Lîsteya min ya şopandinê',
594 -'mywatchlist' => 'Lîsteya min ya şopandinê',
595 -'watchlistfor' => '(ji bo $1)',
596 -'watchlistanontext' => 'Ji bo sekirinê ya xeyrandinê lîsteya te ya şopandinê tu gireke xwe $1.',
597 -'watchlistcount' => "'''$1 qeydkirin li lîsteya te ya şopandinê bi guftûgoran jî hene.'''",
598 -'watchlistcleartext' => 'Di rast dixazê wan betalbikê?',
599 -'watchlistclearbutton' => 'Lîsteya te ya şopandinê betalbike',
600 -'watchlistcleardone' => 'Lîsteya te ya şopandinê hate betalkirin. $1 gotar çûn.',
601 -'watchnologin' => 'Te xwe qeyd nekirîye.',
602 -'watchnologintext' => 'Ji bo xeyrandinê lîsteya te ya şopandinê tu gireke xwe [[{{ns:special}}:Userlogin|qedy kiribe]].',
603 -'addedwatch' => 'Hat îlawekirinî listeya şopandinê',
604 -'addedwatchtext' => "Rûpela \"\$1\" çû ser [[{{ns:special}}:Watchlist|lîsteya te ya şopandinê]].
605 -Li dahatû de her guhartoyek li wê rûpelê û rûpela guftûgo ya wê were kirin li vir dêt nîşan dan,
606 -
607 -Li rûpela [[{{ns:special}}:Recentchanges|Guherandinên dawî]] jî ji bo hasan dîtina wê, ew rûpel bi '''Nivîsa estûr''' dê nîşan dayîn.
608 -
609 -
610 -<p>Her dem tu bixwazî ew rûpel li nav lîsteya te ya şopandinê derbikî, li ser wê rûpelê, klîk bike \"êdî neşopîne\".",
611 -'removedwatch' => 'Ji lîsteya şopandinê hate jêbirin',
612 -'removedwatchtext' => 'Rûpela "$1" ji lîsteya te ya şopandinê hate jêbirin.',
613 -'watch' => 'Bişopîne',
614 -'watchthispage' => 'Vê rûpelê bişopîne',
615 -'unwatch' => 'Êdî neşopîne',
616 -'notanarticle' => 'Ne gotar e',
617 -'watchnochange' => 'Ne rûpelek, yê tu dişopînê, hate xeyrandin di vê wextê da, yê tu dixazê bibînê.',
618 -'watchdetails' => '* $1 rûpel tên şopandin, rûpelên guftûgoyê netên jimartin
619 -* [[{{ns:special}}:Watchlist/edit|Lîsteya şopandinê bibîne û bixeyrîne]]
620 -* [[{{ns:special}}:Watchlist/clear|Giştik rûpel derxe]]',
621 -'wlheader-enotif' => '* E-mail-şandin çêbû.',
622 -'wlheader-showupdated' => "* Ew rûpel yê hatin xeyrandin jilkî te li wan sekir di '''nivîsa estûr''' tên pêşandin.",
623 -'watchlistcontains' => 'Di lîsteya şopandina te de $1 rûpel hene.',
624 -'watcheditlist' => "Li vir lîstekî alfabêtî ji rûpelên te yê tu dişopînê ye. Li çargoşa xwe eger tu dixazê wan gotaran ji lîstê xwe bibê û paşê li 'Gotar bi şixtekî jêbibe' xwe.",
625 -'removingchecked' => 'Gotarên bi xeta tên jêbirin ji lîsteya te ya şopandinê',
626 -'couldntremove' => "'$1' naye jêbirin...",
627 -'wlnote' => 'Nuha $1 xeyrandinên dawî yê <b>$2</b> seetên dawî tên.',
628 -'wlshowlast' => 'Xeyrandînên berî $1 seetan, $2 rojan, ya $3 (di rojên sîyî paşî)',
629 -'wlsaved' => 'Ev rûpela verzîonekî qeydkirî ji lîsteya te ya şopandinê ye.',
630 -'watchlist-hide-bots' => "Guherandinên Bot'an veşêre",
631 -'watchlist-show-own' => 'Guherandinên min pêşke',
632 -'watchlist-hide-own' => 'Guherandinên min veşêre',
633 -'watchlist-show-minor' => 'Guherandinên biçûk pêşke',
634 -'watchlist-hide-minor' => 'Guherandinên biçûk veşêre',
635 -'wldone' => 'Çêbû.',
636 -
637 -'enotif_newpagetext' => 'Ev rûpeleke nû ye.',
638 -'changed' => 'guhart',
639 -'created' => 'afirandî',
640 -
641 -# Delete/protect/revert
642 -'deletepage' => 'Rûpelê jê bibe',
643 -'confirm' => 'Pesend bike',
644 -'excontent' => 'Naveroka berê: $1',
645 -'excontentauthor' => "Nawerokê wê rûpelê ew bû: '$1' (û tenya bikarhêner '$2' bû)",
646 -'exbeforeblank' => "Nawerok berî betal kirinê ew bû: '$1'",
647 -'exblank' => 'rûpel vala bû',
648 -'confirmdelete' => 'Teyîda jêbirinê',
649 -'deletesub' => '("$1" tê jêbirin)',
650 -'historywarning' => 'Hîşyar: Ew rûpel ku tu dixwazî jê bibî dîrokek heye:',
651 -'actioncomplete' => 'Çalakî temam',
652 -'deletedtext' => '"$1" hat jêbirin. Ji bo qeyda rûpelên ku di dema nêzîk de hatin jêbirin binêre $2.',
653 -'deletedarticle' => '"$1" hat jêbirin',
654 -'dellogpage' => 'Reşahiya_jêbirin',
655 -'dellogpagetext' => 'Li jêr lîsteyek ji jêbirinên dawî heye.',
656 -'deletionlog' => 'reşahiya jêbirin',
657 -'deletecomment' => 'Sedema jêbirinê',
658 -'rollback_short' => 'Bizivirîne pêş',
659 -'rollbacklink' => 'bizivirîne pêş',
660 -'cantrollback' => "Guharto naye vegerandin; bikarhêrê dawî, '''tenya''' nivîskarê wê rûpelê ye.",
661 -'alreadyrolled' => 'Guherandina dawiya [[$1]]
662 -bi [[User:$2|$2]] ([[User talk:$2|Guftûgo]]) venizivre; keseke din wê rûpelê zivrandiye an guherandiye.
663 -
664 -Guhartoya dawî bi [[User:$3|$3]] ([[User talk:$3|Gufûgo]]).',
665 -'revertpage' => 'Guherandina $2 hat betal kirin, vegerand guhartoya dawî ya $1',
666 -'protectlogpage' => 'Reşahiya _parastiyan',
667 -'protectlogtext' => 'Below is a list of page locks and unlocks. See the [[{{ns:special}}:Protectedpages|protected pages list]] for the list of currently operational page protections.',
668 -'protectedarticle' => 'parastî [[$1]]',
669 -'unprotectedarticle' => '"[[$1]]" niha vê parastin e',
670 -'confirmprotect' => 'Parastinê teyîd bike',
671 -'protectcomment' => 'Sedema parastinê',
672 -'unprotectsub' => 'Parastinê "$1" rake',
673 -
674 -# Restrictions (nouns)
675 -'restriction-edit' => 'Biguherîne',
676 -'restriction-move' => 'Nav biguherîne',
677 -
678 -# Undelete
679 -'undelete' => 'Li rûpelên jêbirî seke',
680 -'viewdeletedpage' => 'Rûpelên vemirandî seke',
681 -'undeletebtn' => 'Dîsa çêke!',
682 -'undeletedarticle' => '"[[$1]]" dîsa çêkir',
683 -'undelete-search-box' => 'Rûpelên jêbirî lêbigere',
684 -'undelete-search-prefix' => 'Rûpela pêşe min ke ê bi vê destpêdîkin:',
685 -'undelete-search-submit' => 'Lêbigere',
686 -
687 -# Namespace form on various pages
688 -'namespace' => 'Boşahiya nav:',
689 -'invert' => 'Hilbijardinê pêçewane bike',
690 -
691 -# Contributions
692 -'contributions' => 'Beşdariyên vê bikarhêner',
693 -'mycontris' => 'Beşdariyên min',
694 -'contribsub2' => 'Ji bo $1 ($2)',
695 -'uclinks' => '$1 guherandinên dawî; $2 rojên dawî',
696 -'uctop' => ' (ser)',
697 -
698 -'sp-contributions-newest' => 'Nûtirîn',
699 -'sp-contributions-oldest' => 'Kevintirîn',
700 -'sp-contributions-newer' => '$1 yên nûtir',
701 -'sp-contributions-older' => '$1 yên kevintir',
702 -
703 -# What links here
704 -'whatlinkshere' => 'Lînk yê tên ser vê rûpelê',
705 -'notargettitle' => 'Hedef tune',
706 -'linklistsub' => '(Listeya lînkan)',
707 -'linkshere' => "Ev rûpel tên ser vê rûpelê '''„[[:$1]]“''':",
708 -'nolinkshere' => "Ne ji rûpelekê lînk tên ser '''„[[:$1]]“'''.",
709 -'isredirect' => 'rûpela ragihandinê',
710 -
711 -# Block/unblock
712 -'blockip' => 'Bikarhêner asteng bike',
713 -'blockiptext' => 'Ji bo astengkirina nivîsandinê ji navnîşaneke IP an bi navekî bikarhêner, vê formê bikarbîne.
714 -Ev bes gireke were bikaranîn ji bo vandalîzmê biskinîne (bi vê [[{{ns:project}}:Policy|qebûlkirinê]]).
715 -
716 -Sedemekê binivîse!',
717 -'ipbreason' => 'Sedem',
718 -'ipbreasonotherlist' => 'Sedemekî din',
719 -'ipbreason-dropdown' => '*Sedemên astengkirinê (bi tevayî)
720 -** vandalîzm
721 -** înformasyonên şaş kir gotarekê
722 -** rûpelê vala kir
723 -** bes lînkan dikir rûpelan
724 -** kovan dikir gotaran
725 -** heqaretkirin
726 -** pir accounts dikaranîn
727 -** navekî pîs',
728 -'ipbsubmit' => 'Vê bikarhêner asteng bike',
729 -'ipbother' => 'demekî din',
730 -'ipboptions' => '1 seet:1 hour,2 seet:2 hours,6 seet:6 hours,1 roj:1 day,3 roj:3 days,1 hefte:1 week,2 hefte:2 weeks,1 mihe:1 month,3 mihe:3 months,1 sal:1 year,ji her demê ra:infinite',
731 -'ipbotheroption' => 'yên din',
732 -'ipbotherreason' => 'Sedemekî din',
733 -'badipaddress' => 'Bikarhêner bi vî navî tune',
734 -'blockipsuccesssub' => 'Blok serkeftî',
735 -'blockipsuccesstext' => '"$1" hat asteng kirin.
736 -<br />
737 -Bibîne [[{{ns:special}}:Ipblocklist|Lîsteya IP\'yan hatî asteng kirin]] ji bo lîsteya blokan.',
738 -'blocklistline' => '$1, $2 $3 asteng kir ($4)',
739 -'blocklink' => 'asteng bike',
740 -'unblocklink' => 'betala astengê',
741 -'contribslink' => 'Beşdarî',
742 -'autoblocker' => 'Otomatîk hat bestin jiberku IP-ya we û ya "[[User:$1|$1]]" yek in. Sedem: "\'\'\'$2\'\'\'"',
743 -'blocklogpage' => 'Reşahiya_asteng kiriyan',
744 -'blocklogentry' => '"[[$1]]" $3 astengkir ji bo dema $2.',
745 -'unblocklogentry' => 'astenga "$1" hat betal kirin',
746 -'proxyblocksuccess' => 'Çêbû.',
747 -
748 -# Move page
749 -'movepage' => 'Vê rûpelê bigerîne',
750 -'movepagetalktext' => "Rûpela '''guftûgoyê''' vê rûpelê wê were, eger hebe, gerandin. Lê ev tişta nameşe, eger
751 -
752 -*berê guftûgoyek bi wê navê hebe ya
753 -*tu tiştekî jêr hilbijêrê.
754 -
755 -Eger ev mişkla çêbû, tu gireke vê rûpelê bi xwe bigerînê.
756 -
757 -Xêra xwe navî nuh û sedemê navgerandinê binivisîne.",
758 -'movearticle' => 'Rûpelê bigerîne',
759 -'movenologin' => 'Xwe qeyd nekir',
760 -'movenologintext' => 'Tu dive bikarhênereke qeydkirî bî û [[{{ns:special}}:Userlogin|werî nav sîstemê]]
761 -da bikarî navê wê rûpelê biguherînî.',
762 -'newtitle' => 'Sernivîsa nû',
763 -'movepagebtn' => 'Vê rûpelê bigerîne',
764 -'pagemovedsub' => 'Gerandin serkeftî',
765 -'pagemovedtext' => 'Rûpela "[[$1]]" çû cihê "[[$2]]".',
766 -'articleexists' => 'Rûpela bi vî navî heye, an navê ku te hilbijart derbas nabe. Navekî din hilbijêre.',
767 -'movedto' => 'bû',
768 -'movetalk' => "Rûpela '''guftûgo''' ya wê jî bigerîne, eger gengaz be.",
769 -'1movedto2' => '$1 çû cihê $2',
770 -'1movedto2_redir' => '$1 çû cihê $2 ser redirect',
771 -'movelogpage' => 'Reşahiya nav guherandin',
772 -'movelogpagetext' => 'Li jêr lîsteyek ji rûpelan ku navê wan hatiye guherandin heye.',
773 -'movereason' => 'Sedem',
774 -
775 -# Namespace 8 related
776 -'allmessages' => 'Hemû mesajên sîstemê',
777 -'allmessagesname' => 'Nav',
778 -'allmessagescurrent' => 'Texta niha',
779 -'allmessagestext' => 'Ev lîsteya hemû mesajên di namespace a MediaWiki: de ye.',
780 -'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nikane were bikaranîn çunkî '''\$wgUseDatabaseMessages''' hatîye temirandin.",
781 -
782 -# Thumbnails
783 -'thumbnail-more' => 'Mezin bike',
784 -
785 -# Special:Import
786 -'importnotext' => 'Vala an nivîs tune',
787 -
788 -# Tooltip help for the actions
789 -'tooltip-pt-userpage' => 'Rûpela min a şexsî',
790 -'tooltip-pt-anonuserpage' => 'The user page for the ip you',
791 -'tooltip-pt-mytalk' => 'Rûpela guftûgo ya min',
792 -'tooltip-pt-preferences' => ',Tercîhên min',
793 -'tooltip-pt-watchlist' => 'The list of pages you',
794 -'tooltip-pt-mycontris' => 'Lîsteya tevkariyên min',
795 -'tooltip-pt-logout' => 'Derkeve (Log out)',
796 -'tooltip-ca-talk' => 'guftûgo û şîrove ser vê rûpelê',
797 -'tooltip-ca-edit' => 'Vê rûpelê biguherîne! Berê qeydkirinê bişkoka "Pêşdîtin',
798 -'tooltip-ca-addsection' => 'Beşekê zêde bike.',
799 -'tooltip-ca-history' => 'Versyonên berê yên vê rûpelê.',
800 -'tooltip-ca-protect' => 'Vê rûplê biparêze',
801 -'tooltip-ca-delete' => 'Vê rûpelê jê bibe',
802 -'tooltip-ca-move' => 'Navekî nû bide vê rûpelê',
803 -'tooltip-search' => 'Li vê wikiyê bigêre',
804 -'tooltip-p-logo' => 'Destpêk',
805 -'tooltip-n-mainpage' => 'Biçe Destpêkê',
806 -'tooltip-n-help' => 'Bersivên ji bo pirsên te.',
807 -'tooltip-t-whatlinkshere' => 'Lîsteya hemû rûpelên ku ji vê re grêdidin.',
808 -'tooltip-t-recentchangeslinked' => 'Recent changes in pages linking to this page',
809 -'tooltip-t-emailuser' => 'Jê re name bişîne',
810 -'tooltip-ca-nstab-user' => 'Rûpela bikarhênerê/î temaşe bike',
811 -'tooltip-ca-nstab-special' => 'This is a special page, you can',
812 -'tooltip-compareselectedversions' => 'Cudatiyên guhartoyên hilbijartî yên vê rûpelê bibîne. [alt-v]',
813 -
814 -# Stylesheets
815 -'monobook.css' => '*.rtl
816 - {
817 - dir:rtl;
818 - text-align:right;
819 - font-family: "Tahoma", "Unikurd Web", "Arial Unicode MS", "DejaVu Sans", "Lateef", "Scheherazade", "ae_Rasheeq", sans-serif, sans;
820 - }
821 -
822 - /*Make the site more suitable for Soranî users */
823 - h1 {font-family: "Tahoma", "Arial Unicode MS", sans-serif, sans, "Unikurd Web", "Scheherazade";}
824 - h2 {font-family: "Tahoma", "Arial Unicode MS", sans-serif, sans, "Unikurd Web", "Scheherazade";}
825 - h3 {font-family: "Tahoma", "Arial Unicode MS", sans-serif, sans, "Unikurd Web", "Scheherazade";}
826 - body {font-family: "Tahoma", "Arial Unicode MS", sans-serif, sans, "Unikurd Web", "Scheherazade";}
827 - textarea {font-family: Lucida Console, Tahoma;}
828 - pre {font-family: Lucida Console, Tahoma;}',
829 -
830 -# Attribution
831 -'anonymous' => 'Bikarhênera/ê nediyarkirî ya/yê {{SITENAME}}',
832 -'siteuser' => 'Bikarhênera $1 ê {{SITENAME}}',
833 -'and' => 'û',
834 -'others' => 'ên din',
835 -'siteusers' => 'Bikarhênerên $1 yên {{SITENAME}}',
836 -
837 -# Spam protection
838 -'subcategorycount' => 'Di vê kategoriyê de $1 binkategorî hene.',
839 -'categoryarticlecount' => 'Di vê kategoriyê de $1 gotar hene.',
840 -'listingcontinuesabbrev' => ' dewam',
841 -
842 -# Browsing diffs
843 -'previousdiff' => '← Ciyawaziya pêştir',
844 -'nextdiff' => 'Ciyawaziya paştir →',
845 -
846 -'newimages' => 'Pêşangeha wêneyên nû',
847 -
848 -# 'all' in various places, this might be different for inflected languages
849 -'recentchangesall' => 'hemû',
850 -'imagelistall' => 'hemû',
851 -'watchlistall1' => 'giştik',
852 -'watchlistall2' => 'giştik',
853 -'namespacesall' => 'Hemû',
854 -
855 -# E-mail address confirmation
856 -'confirmemail_noemail' => 'Te e-mail-adressê xwe di [[{{ns:special}}:Preferences|tercihên xwe da]] nenivîsandîye.',
857 -'confirmemail_body' => 'Kesek, dibê tu, bi IP adressê $1, xwe li {{SITENAME}} bi vê navnîşana e-name tomar kir ("$2") .
858 -
859 -Eger ev rast qeydkirinê te ye û di dixwazî bikaranîna e-nama ji te ra çêbibe li {{SITENAME}}, li vê lînkê bitikîne:
860 -
861 -$3
862 -
863 -Lê eger ev *ne* tu bû, li lînkê netikîne. Ev e-nameya di rojê $4 da netê qebûlkirin.',
864 -
865 -# Inputbox extension, may be useful in other contexts as well
866 -'createarticle' => 'Gotarê biafirîne',
867 -
868 -# Scary transclusion
869 -'scarytranscludefailed' => '[Anîna şablona $1 biserneket; biborîne]',
870 -
871 -# Delete conflict
872 -'deletedwhileediting' => 'Hîşyar: Piştî te guherandinê xwe dest pê kir ev rûpela hate jêbirin!',
873 -
874 -# action=purge
875 -'confirm_purge' => 'Bîra vê rûpelê jêbîbe ?
876 -
877 -$1',
878 -'confirm_purge_button' => 'Temam',
879 -
880 -'youhavenewmessagesmulti' => 'Nameyên nih li $1 ji te ra hene.',
881 -
882 -'loginlanguagelabel' => 'Ziman: $1',
883 -
884 -# Auto-summaries
885 -'autosumm-blank' => 'Rûpel hate vala kirin',
886 -'autoredircomment' => 'Redirect berve [[$1]]', # This should be changed to the new naming convention, but existed beforehand
887 -'autosumm-new' => 'Rûpela nû: $1',
888 -
889 -# Live preview
890 -'livepreview-loading' => 'Tê…',
891 -'livepreview-ready' => 'Tê… Çêbû!',
892 -
893 -);
894 -
89511 ?>
Index: branches/liquidthreads/languages/messages/MessagesZh_yue.php
@@ -432,7 +432,7 @@
433433 'filedeleteerror' => '唔可以刪除檔案 "$1"。',
434434 'filenotfound' => '搵唔到檔案 "$1"。',
435435 'unexpected' => '意外數值。 "$1"="$2"。',
436 -'formerror' => '錯誤:唔可以遞交表格',
 436+'formerror' => '錯誤:表格交唔到',
437437 'badarticleerror' => '呢個動作唔可以喺頁面度進行。',
438438 'cannotdelete' => '唔可以刪除指定嘅頁面或檔案。(可能呢個頁面或檔案已經刪除咗。)',
439439 'badtitle' => '錯誤嘅標題',
@@ -570,7 +570,7 @@
571571 'media_sample' => 'Example.ogg',
572572 'media_tip' => '媒體檔案連結',
573573 'sig_tip' => '你嘅簽名同埋時間戳',
574 -'hr_tip' => '橫線(請謹慎咁用)',
 574+'hr_tip' => '橫線(請小心用)',
575575
576576 # Edit pages
577577 #
@@ -619,7 +619,7 @@
620620 'blockededitsource' => "有關'''你'''對'''$1'''嘅'''編輯'''文字響下面列示:",
621621 'whitelistedittitle' => '需要登入之後先至可以編輯',
622622 'whitelistedittext' => '你需要$1去編輯呢頁。',
623 -'whitelistreadtitle' => '需要登入之後先至睇到',
 623+'whitelistreadtitle' => '登入咗至睇到',
624624 'whitelistreadtext' => '你需要[[Special:Userlogin|登入]]先可以去睇呢頁。',
625625 'whitelistacctitle' => '你唔可以開一個新戶口',
626626 'whitelistacctext' => '要喺呢個 wiki 開戶口,你要[[Special:Userlogin|登入]]同提供適當嘅許可。',
@@ -1049,7 +1049,7 @@
10501050
10511051 'license' => '協議',
10521052 'nolicense' => '未揀',
1053 -'upload_source_url' => ' (一個正確嘅,公眾可到嘅網址)',
 1053+'upload_source_url' => ' (啱嘅,公開嘅網址)',
10541054 'upload_source_file' => ' (你部電腦裏面嘅一個檔案)',
10551055
10561056 # Image list
@@ -1182,7 +1182,7 @@
11831183 'shortpages' => '短頁',
11841184 'longpages' => '長頁',
11851185 'deadendpages' => '掘頭頁',
1186 -'deadendpagestext' => '以下嘅面頁響呢個wiki度連結到其它頁面。',
 1186+'deadendpagestext' => '呢啲頁無連到呢個wiki內嘅任何一頁。',
11871187 'protectedpages' => '保護頁',
11881188 'protectedpagestext' => '以下嘅頁面係受保頁面,唔能夠移動或編輯',
11891189 'protectedpagesempty' => '響呢啲參數度,現時無頁面響度保護緊。',
@@ -1191,7 +1191,7 @@
11921192 'spheading' => '所有用戶嘅特別頁',
11931193 'restrictedpheading' => '有限制嘅特別頁',
11941194 'rclsub' => "(由\"$1\"已經連結嘅頁面)",
1195 -'newpages' => '新頁面',
 1195+'newpages' => '新頁',
11961196 'newpages-username' => '用戶名:',
11971197 'ancientpages' => '舊頁面',
11981198 'intl' => '跨語連結',
@@ -1221,6 +1221,7 @@
12221222 'specialloguserlabel' => '用戶:',
12231223 'speciallogtitlelabel' => '標題:',
12241224 'log' => '日誌',
 1225+'all-logs-page' => '全部嘅日誌',
12251226 'log-search-legend' => '搵日誌',
12261227 'log-search-submit' => '去',
12271228 'alllogstext' => '響{{SITENAME}}度全部日誌嘅綜合顯示。
@@ -1267,7 +1268,7 @@
12681269 'emailmessage' => '信息',
12691270 'emailsend' => '傳送',
12701271 'emailccme' => '傳送一個我嘅信息電郵畀我。',
1271 -'emailccsubject' => '複製你嘅信息到 $1: $2',
 1272+'emailccsubject' => '你畀$1: $2封信嘅副本',
12721273 'emailsent' => '電郵已傳送',
12731274 'emailsenttext' => '你嘅電郵信息已傳送。',
12741275
@@ -1734,7 +1735,7 @@
17351736 'import-interwiki-submit' => '倒入',
17361737 'import-interwiki-namespace' => '轉移頁面到空間名:',
17371738 'importtext' => '請由原 wiki 嘅 Special:Export 工具匯出成檔案,儲存喺你個磁碟度,然後再上載到呢度。',
1738 -'importstart' => "倒入頁面中...",
 1739+'importstart' => "倒入緊...",
17391740 'import-revision-count' => '$1次修訂',
17401741 'importnopages' => "冇頁面去倒入。",
17411742 'importfailed' => "倒入失敗:$1",
@@ -1902,7 +1903,7 @@
19031904 'file-info' => '(檔案大細:$1 ,MIME類型:$2)',
19041905 'file-info-size' => '($1 × $2 像素,檔案大細:$3 ,MIME類型:$4)',
19051906 'file-nohires' => '<small>冇更高解像度嘅圖像。</small>',
1906 -'file-svg' => '<small>呢個係一幅無損,可以放大縮細嘅向量圖像。基礎大細: $1 × $2 像素。</small>',
 1907+'file-svg' => '<small>呢幅係可以無損放縮嘅向量圖。基礎大細: $1 × $2 像素。</small>',
19071908 'show-big-image' => '完整解像度',
19081909 'show-big-image-thumb' => '<small>呢個預覽嘅大細: $1 × $2 像素</small>',
19091910
@@ -1929,6 +1930,10 @@
19301931 'variantname-kk-kz' => '哈薩克西里爾字',
19311932 'variantname-kk-cn' => '哈薩克阿剌伯文',
19321933 'variantname-kk' => 'disable',
 1934+# Variants for Kurdish language
 1935+'variantname-ku-latn' => '庫爾德拉丁文',
 1936+'variantname-ku-arab' => '庫爾德阿剌伯文',
 1937+'variantname-ku' => '無變換',
19331938
19341939 'passwordtooshort' => '你嘅密碼唔正確或者太短喇。佢最少要有$1個半形字元,同埋要同你嘅用戶名唔同。',
19351940
Index: branches/liquidthreads/languages/messages/MessagesLt.php
@@ -250,7 +250,7 @@
251251 'aboutpage' => '{{ns:project}}:Apie',
252252 'bugreports' => 'Pranešti apie klaidą',
253253 'bugreportspage' => '{{ns:project}}:Klaidų pranešimai',
254 -'copyright' => 'Turinys pateikiamas su $1 licencija.',
 254+'copyright' => 'Turinys pateikiamas pagal $1 licenciją.',
255255 'copyrightpagename' => '{{SITENAME}} autorystės teisės',
256256 'copyrightpage' => '{{ns:project}}:Autorystės teisės',
257257 'currentevents' => 'Naujienos',
@@ -415,6 +415,7 @@
416416 'yourvariant' => 'Variantas',
417417 'yournick' => 'Slapyvardis:',
418418 'badsig' => 'Neteisingas parašas; patikrinkite HTML žymes.',
 419+'badsiglength' => 'Slapyvardis per ilgas; turi būti iki $1 {{PLURAL:$1|simbolio|simbolių}}.',
419420 'email' => 'El. paštas',
420421 'prefs-help-realname' => 'Tikrasis vardas yra neprivalomas, bet jei jūs jį įvesite, jis bus naudojamas jūsų darbo pažymėjimui.',
421422 'loginerror' => 'Prisijungimo klaida',
@@ -512,11 +513,13 @@
513514
514515 Užblokavo $1. Nurodyta priežastis yra ''$2''.
515516
516 -Blokavimo pabaiga: $6
 517+Blokavimo pabaiga: $6<br />
 518+Numatytas blokuojamasis: $7
517519
518520 Jūs galite susisiekti su $1 arba kitu
519521 [[{{MediaWiki:grouppage-sysop}}|administratoriumi]], kad aptartumėte užblokavimą.
520 -Jūs negalite naudotis funkcija „Rašyti laišką šiam naudotojui“, jei nesate pateikę tikro savo el. pašto adreso savo [[{{ns:special}}:Preferences|paskyros nustatymuose]]. Jūsų IP adresas yra $3, o blokavimo ID yra #$5. Prašome nurodyti vieną ar abu juos, kai kreipiatės dėl blokavimo.",
 522+Jūs negalite naudotis funkcija „Rašyti laišką šiam naudotojui“, jei nesate pateikę tikro savo el. pašto adreso savo [[{{ns:special}}:Preferences|paskyros nustatymuose]] ir nesate užblokuotas nuo jos naudojimo.
 523+Jūsų dabartinis IP adresas yra $3, o blokavimo ID yra #$5. Prašome nurodyti vieną ar abu juos, kai kreipiatės dėl blokavimo.",
521524 'autoblockedtext' => "Jūsų IP adresas buvo automatiškai užblokuotas, nes jį naudojo kitas naudotojas, kurį užblokavo $1.
522525 Nurodyta priežastis yra ši:
523526
@@ -527,7 +530,7 @@
528531 Jūs galite susisiekti su $1 arba kitu
529532 [[{{MediaWiki:grouppage-sysop}}|administratoriumi]], kad aptartumėte užblokavimą.
530533
531 -Jūs negalite naudotis funkcija „Rašyti laišką šiam naudotojui“, jei nesate užregistravę tikro el. pašto adreso savo [[{{ns:special}}:Preferences|naudotojo nustatymuose]].
 534+Jūs negalite naudotis funkcija „Rašyti laišką šiam naudotojui“, jei nesate užregistravę tikro el. pašto adreso savo [[{{ns:special}}:Preferences|naudotojo nustatymuose]] ir nesate užblokuotas nuo jos naudojimo.
532535
533536 Jūsų blokavimo ID yra $5. Prašome nurodyti šį ID visuose prašymuose, kuriuos darote.",
534537 'blockedoriginalsource' => "Žemiau yra rodomas '''$1''' turinys:",
@@ -615,7 +618,11 @@
616619 'nocreatetitle' => 'Puslapių kūrimas apribotas',
617620 'nocreatetext' => 'Šioje svetainėje yra apribota galimybė kurti naujus puslapius.
618621 Jūs galite grįžti ir redaguoti jau esantį puslapį, arba [[{{ns:special}}:Userlogin|prisijungti arba sukurti paskyrą]].',
 622+'recreate-deleted-warn' => "'''Dėmesio: Jūs atkuriate puslapį, kuris anksčiau buvo ištrintas.'''
619623
 624+Jūs turite nuspręsti, ar tinka toliau redaguoti šį puslapį.
 625+Šio puslapio šalinimų istorija yra pateiktas čia dėl patogumo:",
 626+
620627 # "Undo" feature
621628 'undo-success' => 'Keitimas gali būti atšauktas. Prašome patikrinti palyginimą, esantį žemiau, kad patvirtintumėte, kad jūs tai ir norite padaryti, ir tada išsaugokite pakeitimus, esančius žemiau, kad užbaigtumėte keitimo atšaukimą.',
622629 'undo-failure' => 'Keitimas negali būti atšauktas dėl konfliktuojančių tarpinių keitimų.',
@@ -791,6 +798,7 @@
792799 'resultsperpage' => 'Rezultatų puslapyje:',
793800 'contextlines' => 'Eilučių rezultate:',
794801 'contextchars' => 'Konteksto simbolių eilutėje:',
 802+'stub-threshold' => 'Minimumas <a href="#" class="stub">nebaigto puslapio</a> formatavimui:',
795803 'recentchangesdays' => 'Rodomos dienos paskutinių keitimų sąraše:',
796804 'recentchangescount' => 'Keitimų skaičius rodomas naujausių keitimų sąraše:',
797805 'savedprefs' => 'Nustatymai sėkmingai išsaugoti.',
@@ -1056,12 +1064,13 @@
10571065 'nmembers' => '$1 {{PLURAL:$1|narys|nariai|narių}}',
10581066 'nrevisions' => '$1 {{PLURAL:$1|keitimas|keitimai|keitimų}}',
10591067 'nviews' => '$1 {{PLURAL:$1|parodymas|parodymai|parodymų}}',
1060 -'specialpage-empty' => 'Šis puslapis yra tuščias.',
 1068+'specialpage-empty' => 'Šiai ataskaitai nėra rezultatų.',
10611069 'lonelypages' => 'Vieniši straipsniai',
10621070 'lonelypagestext' => 'Į šiuos puslapius nėra nuorodų iš kitų šio projekto puslapių.',
10631071 'uncategorizedpages' => 'Puslapiai, nepriskirti jokiai kategorijai',
10641072 'uncategorizedcategories' => 'Kategorijos, nepriskirtos jokiai kategorijai',
10651073 'uncategorizedimages' => 'Paveikslėliai, nepriskirti jokiai kategorijai',
 1074+'uncategorizedtemplates' => 'Šablonai, nepriskirti jokiai kategorijai',
10661075 'unusedcategories' => 'Nenaudojamos kategorijos',
10671076 'unusedimages' => 'Nenaudojami failai',
10681077 'popularpages' => 'Populiarūs puslapiai',
@@ -1069,6 +1078,7 @@
10701079 'wantedpages' => 'Geidžiamiausi puslapiai',
10711080 'mostlinked' => 'Daugiausiai nurodomi straipsniai',
10721081 'mostlinkedcategories' => 'Daugiausiai nurodomos kategorijos',
 1082+'mostlinkedtemplates' => 'Daugiausiai nurodomi šablonai',
10731083 'mostcategories' => 'Straipsniai su daugiausiai kategorijų',
10741084 'mostimages' => 'Daugiausiai nurodomi paveikslėliai',
10751085 'mostrevisions' => 'Straipsniai su daugiausiai keitimų',
@@ -1296,11 +1306,12 @@
12971307 'protectlogpage' => 'Rakinimų istorija',
12981308 'protectlogtext' => 'Žemiau yra puslapių užrakinimų bei atrakinimų istorija. Dabar veikiančių puslapių apsaugų sąrašą rasite [[{{ns:special}}:Protectedpages|apsaugotų puslapių sąraše]].',
12991309 'protectedarticle' => 'užrakino „[[$1]]“',
 1310+'modifiedarticleprotection' => 'pakeistas „[[$1]]“ apsaugos lygis',
13001311 'unprotectedarticle' => 'atrakino „[[$1]]“',
13011312 'protectsub' => '(Rakinamas „$1“)',
13021313 'confirmprotect' => 'Užrakinimo patvirtinimas',
1303 -'protectcomment' => 'Rakinimo priežastis',
1304 -'protectexpiry' => 'Galiojimo laikas',
 1314+'protectcomment' => 'Komentaras:',
 1315+'protectexpiry' => 'Baigia galioti:',
13051316 'protect_expiry_invalid' => 'Galiojimo laikas neteisingas.',
13061317 'protect_expiry_old' => 'Galiojimo laikas yra praeityje.',
13071318 'unprotectsub' => '(Atrakinamas „$1“)',
@@ -1318,7 +1329,7 @@
13191330 'protect-level-sysop' => 'Tik administratoriai',
13201331 'protect-summary-cascade' => 'pakopinė apsauga',
13211332 'protect-expiring' => 'baigia galioti $1 (UTC)',
1322 -'protect-cascade' => 'Pakopinė apsauga - apsaugoti visus puslapius, įtrauktus į šį puslapį.',
 1333+'protect-cascade' => 'Apsaugoti puslapius, įtrauktus į šį puslapį (pakopinė apsauga).',
13231334 'restriction-type' => 'Leidimas:',
13241335 'restriction-level' => 'Apribojimo lygis:',
13251336 'minimum-size' => 'Min. dydis',
@@ -1400,18 +1411,19 @@
14011412 'sp-newimages-showfrom' => 'Rodyti naujus paveikslėlius pradedant nuo $1',
14021413
14031414 # What links here
1404 -'whatlinkshere' => 'Susiję puslapiai',
1405 -'notargettitle' => 'Nenurodytas objektas',
1406 -'notargettext' => 'Jūs nenurodėte norimo puslapio ar naudotojo,
 1415+'whatlinkshere' => 'Susiję puslapiai',
 1416+'notargettitle' => 'Nenurodytas objektas',
 1417+'notargettext' => 'Jūs nenurodėte norimo puslapio ar naudotojo,
14071418 kuriam įvykdyti šią funkciją.',
1408 -'linklistsub' => '(Nuorodų sąrašas)',
1409 -'linkshere' => "Šie puslapiai rodo į '''[[:$1]]''':",
1410 -'nolinkshere' => "Į '''[[:$1]]''' nuorodų nėra.",
1411 -'nolinkshere-ns' => "Nurodytoje vardų srityje nei vienas puslapis nenurodo į '''[[:$1]]'''.",
1412 -'isredirect' => 'nukreipiamasis puslapis',
1413 -'istemplate' => 'įterpimas',
1414 -'whatlinkshere-prev' => '$1 {{PLURAL:$1|ankstesnis|ankstesni}}',
1415 -'whatlinkshere-next' => '$1 {{PLURAL:$1|kitas|kiti}}',
 1419+'linklistsub' => '(Nuorodų sąrašas)',
 1420+'linkshere' => "Šie puslapiai rodo į '''[[:$1]]''':",
 1421+'nolinkshere' => "Į '''[[:$1]]''' nuorodų nėra.",
 1422+'nolinkshere-ns' => "Nurodytoje vardų srityje nei vienas puslapis nenurodo į '''[[:$1]]'''.",
 1423+'isredirect' => 'nukreipiamasis puslapis',
 1424+'istemplate' => 'įterpimas',
 1425+'whatlinkshere-prev' => '$1 {{PLURAL:$1|ankstesnis|ankstesni}}',
 1426+'whatlinkshere-next' => '$1 {{PLURAL:$1|kitas|kiti}}',
 1427+'whatlinkshere-links' => '← nuorodos',
14161428
14171429 # Block/unblock
14181430 'blockip' => 'Blokuoti naudotoją',
@@ -1433,6 +1445,7 @@
14341446 ** Nepriimtinas naudotojo vardas',
14351447 'ipbanononly' => 'Blokuoti tik anoniminius naudotojus',
14361448 'ipbcreateaccount' => 'Neleisti kurti paskyrų',
 1449+'ipbemailban' => 'Neleisti naudotojui siųsti el. pašto',
14371450 'ipbenableautoblock' => 'Automatiškai blokuoti šio naudotojo paskiausiai naudotą IP adresą, bei bet kokius vėlesnius IP adresus, iš kurių jie mėgina redaguoti',
14381451 'ipbsubmit' => 'Blokuoti šį naudotoją',
14391452 'ipbother' => 'Kitoks laikas',
@@ -1463,6 +1476,7 @@
14641477 'anononlyblock' => 'tik anonimai',
14651478 'noautoblockblock' => 'automatinis blokavimas išjungtas',
14661479 'createaccountblock' => 'paskyrų kūrimas uždraustas',
 1480+'emailblock' => 'el. paštas užblokuotas',
14671481 'ipblocklist-empty' => 'Blokavimų sąrašas tuščias.',
14681482 'ipblocklist-no-results' => 'Prašomas IP adresas ar naudotojo vardas nėra užblokuotas.',
14691483 'blocklink' => 'blokuoti',
@@ -1476,6 +1490,7 @@
14771491 'block-log-flags-anononly' => 'tik anoniminiai naudotojai',
14781492 'block-log-flags-nocreate' => 'paskyrų kūrimas išjungtas',
14791493 'block-log-flags-noautoblock' => 'automatinis blokiklis išjungtas',
 1494+'block-log-flags-noemail' => 'el. paštas užblokuotas',
14801495 'range_block_disabled' => 'Administratoriaus galimybė kurti intevalinius blokus yra išjungta.',
14811496 'ipb_expiry_invalid' => 'Galiojimo laikas neleistinas.',
14821497 'ipb_already_blocked' => '„$1“ jau užblokuotas',
@@ -1590,7 +1605,7 @@
15911606 'export-addcat' => 'Pridėti',
15921607
15931608 # Namespace 8 related
1594 -'allmessages' => 'Sistemos pranešimų sąrašas',
 1609+'allmessages' => 'Sisteminių tekstų sąrašas',
15951610 'allmessagesname' => 'Pavadinimas',
15961611 'allmessagesdefault' => 'Pradinis tekstas',
15971612 'allmessagescurrent' => 'Dabartinis tekstas',
Index: branches/liquidthreads/languages/messages/MessagesZh_tw.php
@@ -1093,6 +1093,7 @@
10941094 'specialloguserlabel' => '用戶:',
10951095 'speciallogtitlelabel' => '標題:',
10961096 'log' => '日誌',
 1097+'all-logs-page' => '所有日誌',
10971098 'log-search-legend' => '搜尋日誌',
10981099 'log-search-submit' => '去',
10991100 'alllogstext' => '綜合顯示上傳、刪除、保護、查封以及站務日誌。',
Index: branches/liquidthreads/languages/messages/MessagesId.php
@@ -1267,6 +1267,7 @@
12681268 'specialloguserlabel' => 'Pengguna:',
12691269 'speciallogtitlelabel' => 'Judul:',
12701270 'log' => 'Log',
 1271+'all-logs-page' => 'Semua log',
12711272 'log-search-legend' => 'Pencarian log',
12721273 'log-search-submit' => 'Cari',
12731274 'alllogstext' => 'Di bawah ini adalah gabungan log impor, pemblokiran, pemindahan, pemuatan, penghapusan, perlindungan, perubahan hak akses, dll. Anda dapat melakukan pembatasan tampilan dengan memilih jenis log, nama pengguna, atau judul halaman yang terpengaruh.',
Index: branches/liquidthreads/languages/messages/MessagesKk_tr.php
@@ -1445,6 +1445,7 @@
14461446 'specialloguserlabel' => 'Qatıswşı:',
14471447 'speciallogtitlelabel' => 'Ataw:',
14481448 'log' => 'Jwrnaldar',
 1449+'all-logs-page' => 'Barlıq jwrnaldar',
14491450 'log-search-legend' => 'Jwrnaldardan izdew',
14501451 'log-search-submit' => 'Ötw',
14511452 'alllogstext' => '{{SITENAME}} jobasınıñ barlıq qatınawlı jwrnaldarın biriktirip körsetwi.
Index: branches/liquidthreads/languages/messages/MessagesKk_cn.php
@@ -1452,6 +1452,7 @@
14531453 'specialloguserlabel' => 'قاتىسۋشى:',
14541454 'speciallogtitlelabel' => 'اتاۋ:',
14551455 'log' => 'جۋرنالدار',
 1456+'all-logs-page' => 'بارلىق جۋرنالدار',
14561457 'log-search-legend' => 'جۋرنالداردان ٸزدەۋ',
14571458 'log-search-submit' => 'ٶتۋ',
14581459 'alllogstext' => '{{SITENAME}} جوباسىنىڭ بارلىق قاتىناۋلى جۋرنالدارىن بٸرٸكتٸرٸپ كٶرسەتۋٸ.
Index: branches/liquidthreads/languages/messages/MessagesDe.php
@@ -1254,6 +1254,7 @@
12551255 'specialloguserlabel' => 'Benutzer:',
12561256 'speciallogtitlelabel' => 'Titel:',
12571257 'log' => 'Logbücher',
 1258+'all-logs-page' => 'Alle Logbücher',
12581259 'log-search-legend' => 'Logbücher durchsuchen',
12591260 'log-search-submit' => 'Suche',
12601261 'alllogstext' => 'Dies ist die kombinierte Anzeige aller in {{SITENAME}} geführten Logbücher. Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seitentitels eingeschränkt werden.',
Index: branches/liquidthreads/languages/messages/MessagesKk_kz.php
@@ -1444,6 +1444,7 @@
14451445 'specialloguserlabel' => 'Қатысушы:',
14461446 'speciallogtitlelabel' => 'Атау:',
14471447 'log' => 'Журналдар',
 1448+'all-logs-page' => 'Барлық журналдар',
14481449 'log-search-legend' => 'Журналдардан іздеу',
14491450 'log-search-submit' => 'Өту',
14501451 'alllogstext' => '{{SITENAME}} жобасының барлық қатынаулы журналдарын біріктіріп көрсетуі.
Index: branches/liquidthreads/languages/Names.php
@@ -134,9 +134,9 @@
135135 'kr' => 'Kanuri', # Kanuri (FIXME!)
136136 'ks' => 'कश्मीरी - (كشميري)', # Kashmiri
137137 'ksh' => 'Ripoarisch', # Ripuarian
138 - 'ksh-c-a' => 'Ripoarisch c a', # Ripuarian
139 - 'ksh-p-b' => 'Ripoarisch p b', # Ripuarian
140138 'ku' => 'Kurdî / كوردي', # Kurdish
 139+ 'ku-latn' => "\xE2\x80\xAAKurdî (latînî)\xE2\x80\xAC", # Kurdish Latin script
 140+ 'ku-arab' => "\xE2\x80\xABكوردي (عەرەبی)\xE2\x80\xAC", # Kurdish Arabic script
141141 'kv' => 'Коми', # Komi, cyrillic is common script but also written in latin script
142142 'kw' => 'Kernewek', # Cornish
143143 'ky' => 'Кыргызча', # Kirghiz
Index: branches/liquidthreads/languages/classes/LanguageKu.deps.php
@@ -0,0 +1,12 @@
 2+<?php
 3+// This file exists to ensure that base classes are preloaded before
 4+// LanguageKu.php is compiled, working around a bug in the APC opcode
 5+// cache on PHP 5, where cached code can break if the include order
 6+// changed on a subsequent page view.
 7+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
 8+
 9+
 10+require_once( dirname(__FILE__).'/../LanguageConverter.php' );
 11+require_once( dirname(__FILE__).'/LanguageKu_ku.php' );
 12+
 13+?>
Property changes on: branches/liquidthreads/languages/classes/LanguageKu.deps.php
___________________________________________________________________
Added: svn:eol-style
114 + native
Index: branches/liquidthreads/languages/classes/LanguageKu_ku.php
@@ -0,0 +1,35 @@
 2+<?php
 3+/** Kurdish
 4+ *
 5+ *
 6+ * @addtogroup Language
 7+ */
 8+
 9+
 10+class LanguageKu_ku extends Language {
 11+
 12+/** # Convert from the nominative form of a noun to some other case
 13+ # Invoked with {{GRAMMAR:case|word}}
 14+ /**
 15+ * Cases:
 16+ *
 17+ * From Kazakh interface, not needed at the moment, maybe later
 18+ */
 19+ function convertGrammar( $word, $case ) {
 20+ return $word;
 21+ }
 22+
 23+ /**
 24+ * Avoid grouping whole numbers between 0 to 9999
 25+ */
 26+ function commafy( $_ ) {
 27+
 28+ if ( !preg_match( '/^\d{1,4}$/', $_ ) ) {
 29+ return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev($_) ) );
 30+ } else {
 31+ return $_;
 32+ }
 33+ }
 34+}
 35+
 36+?>
Property changes on: branches/liquidthreads/languages/classes/LanguageKu_ku.php
___________________________________________________________________
Added: svn:eol-style
137 + native
Index: branches/liquidthreads/languages/classes/LanguageKu.php
@@ -0,0 +1,239 @@
 2+<?php
 3+/** Kurdish
 4+ * converter routines
 5+ *
 6+ * @addtogroup Language
 7+ */
 8+
 9+require_once( dirname(__FILE__).'/../LanguageConverter.php' );
 10+require_once( dirname(__FILE__).'/LanguageKu_ku.php' );
 11+
 12+class KuConverter extends LanguageConverter {
 13+ var $mArabicToLatin = array(
 14+ 'ب' => 'b', 'ج' => 'c', 'چ' => 'ç', 'د' => 'd', 'ف' => 'f', 'گ' => 'g', 'ھ' => 'h',
 15+ 'ہ' => 'h', 'ه' => 'h', 'ح' => 'h', 'ژ' => 'j', 'ك' => 'k', 'ک' => 'k', 'ل' => 'l',
 16+ 'م' => 'm', 'ن' => 'n', 'پ' => 'p', 'ق' => 'q', 'ر' => 'r', 'س' => 's', 'ش' => 'ş',
 17+ 'ت' => 't', 'ڤ' => 'v', 'خ' => 'x', 'غ' => 'x', 'ز' => 'z',
 18+
 19+ /* Doppel- und Halbvokale */
 20+ 'ڵ' => 'll', #ll
 21+ 'ڕ' => 'rr', #rr
 22+ 'ا' => 'a',
 23+ # 'ئێ' => 'ê', # Anfangs-e
 24+ 'ە' => 'e',
 25+ 'ه‌' => 'e', # mit einem non-joiner
 26+ 'ه‌‌' => 'e', # mit zwei non-joinern
 27+ 'ة' => 'e',
 28+ 'ێ' => 'ê',
 29+ 'ي' => 'î',
 30+ 'ی' => 'î',
 31+ 'ۆ' => 'o',
 32+ 'و' => 'w',
 33+ 'ئ' => '', # initiales hemze soll verschluckt werden
 34+ '،' => ',',
 35+ 'ع' => '\'', # ayn
 36+ '؟' => '?',
 37+ );
 38+
 39+ var $mLatinToArabic = array(
 40+ 'b' => 'ب', 'c' => 'ج', 'ç' => 'چ', 'd' => 'د', 'f' => 'ف', 'g' => 'گ',
 41+ 'h' => 'ه', 'j' => 'ژ', 'k' => 'ک', 'l' => 'ل',
 42+ 'm' => 'م', 'n' => 'ن', 'p' => 'پ', 'q' => 'ق', 'r' => 'ر', 's' => 'س', 'ş' => 'ش',
 43+ 't' => 'ت', 'v' => 'ڤ',
 44+ 'x' => 'خ', 'y' => 'ی', 'z' => 'ز',
 45+
 46+
 47+ 'B' => 'ب', 'C' => 'ج', 'Ç' => 'چ', 'D' => 'د', 'F' => 'ف', 'G' => 'گ', 'H' => 'ھ',
 48+ 'H' => 'ہ', 'H' => 'ه', 'H' => 'ح', 'J' => 'ژ', 'K' => 'ك', 'K' => 'ک', 'L' => 'ل',
 49+ 'M' => 'م', 'N' => 'ن', 'P' => 'پ', 'Q' => 'ق', 'R' => 'ر', 'S' => 'س', 'Ş' => 'ش',
 50+ 'T' => 'ت', 'V' => 'ڤ', 'W' => 'و', 'X' => 'خ',
 51+ 'Y' => 'ی', 'Z' => 'ز',
 52+
 53+ /* Doppelkonsonanten */
 54+ # 'll' => 'ڵ', # wenn es geht, doppel-l und l getrennt zu behandeln
 55+ # 'rr' => 'ڕ', # selbiges für doppel-r
 56+
 57+ /* Einzelne Großbuchstaben */
 58+ //' C' => 'ج',
 59+
 60+ /* Vowels */
 61+ 'a' => 'ا',
 62+ 'e' => 'ە',
 63+ 'ê' => 'ێ',
 64+ 'i' => '',
 65+ 'î' => 'ی',
 66+ 'o' => 'ۆ',
 67+ 'u' => 'و',
 68+ 'û' => 'وو',
 69+ 'w' => 'و',
 70+ ',' => '،',
 71+ '?' => '؟',
 72+
 73+ # Try to replace the leading vowel
 74+ ' a' => 'ئا ',
 75+ ' e' => 'ئە ',
 76+ ' ê' => 'ئێ ',
 77+ ' î' => 'ئی ',
 78+ ' o' => 'ئۆ ',
 79+ ' u' => 'ئو ',
 80+ ' û' => 'ئوو ',
 81+ 'A' => 'ئا',
 82+ 'E' => 'ئە',
 83+ 'Ê' => 'ئێ',
 84+ 'Î' => 'ئی',
 85+ 'O' => 'ئۆ',
 86+ 'U' => 'ئو',
 87+ 'Û' => 'ئوو',
 88+ ' A' => 'ئا ',
 89+ ' E' => 'ئە ',
 90+ ' Ê' => 'ئێ ',
 91+ ' Î' => 'ئی ',
 92+ ' O' => 'ئۆ ',
 93+ ' U' => 'ئو ',
 94+ ' Û' => 'ئوو ',
 95+ # eyn erstmal deaktivieren, einfache Anführungsstriche sind einfach zu häufig, um sie als eyn zu interpretieren
 96+ # '\'' => 'ع',
 97+
 98+ );
 99+
 100+ function loadDefaultTables() {
 101+ $this->mTables = array(
 102+ 'ku-latn' => new ReplacementArray( $this->mArabicToLatin ),
 103+ 'ku-arab' => new ReplacementArray( $this->mLatinToArabic ),
 104+ 'ku' => new ReplacementArray()
 105+ );
 106+ }
 107+
 108+
 109+ // Do not convert content on talk pages
 110+ function parserConvert( $text, &$parser ){
 111+ if(is_object($parser->getTitle() ) && $parser->getTitle()->isTalkPage())
 112+ $this->mDoContentConvert=false;
 113+ else
 114+ $this->mDoContentConvert=true;
 115+
 116+ return parent::parserConvert($text, $parser );
 117+ }
 118+
 119+ /*
 120+ * A function wrapper:
 121+ * - if there is no selected variant, leave the link
 122+ * names as they were
 123+ * - do not try to find variants for usernames
 124+ */
 125+ function findVariantLink( &$link, &$nt ) {
 126+ // check for user namespace
 127+ if(is_object($nt)){
 128+ $ns = $nt->getNamespace();
 129+ if($ns==NS_USER || $ns==NS_USER_TALK)
 130+ return;
 131+ }
 132+
 133+ $oldlink=$link;
 134+ parent::findVariantLink($link,$nt);
 135+ if($this->getPreferredVariant()==$this->mMainLanguageCode)
 136+ $link=$oldlink;
 137+ }
 138+
 139+ /*
 140+ * We want our external link captions to be converted in variants,
 141+ * so we return the original text instead -{$text}-, except for URLs
 142+ */
 143+ function markNoConversion($text, $noParse=false) {
 144+ if($noParse || preg_match("/^https?:\/\/|ftp:\/\/|irc:\/\//",$text))
 145+ return parent::markNoConversion($text);
 146+ return $text;
 147+ }
 148+
 149+ /*
 150+ * An ugly function wrapper for parsing Image titles
 151+ * (to prevent image name conversion)
 152+ */
 153+ function autoConvert($text, $toVariant=false) {
 154+ global $wgTitle;
 155+ if(is_object($wgTitle) && $wgTitle->getNameSpace()==NS_IMAGE){
 156+ $imagename = $wgTitle->getNsText();
 157+ if(preg_match("/^$imagename:/",$text)) return $text;
 158+ }
 159+ return parent::autoConvert($text,$toVariant);
 160+ }
 161+
 162+ /**
 163+ * It translates text into variant, specials:
 164+ * - ommiting roman numbers
 165+ */
 166+ function translate($text, $toVariant){
 167+ $breaks = '[^\w\x80-\xff]';
 168+
 169+ /* From Kazakh interface, maybe we need it later
 170+ *
 171+ // regexp for roman numbers
 172+ $roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})';
 173+ $roman = '';
 174+
 175+ $reg = '/^'.$roman.'$|^'.$roman.$breaks.'|'.$breaks.$roman.'$|'.$breaks.$roman.$breaks.'/';
 176+
 177+ $matches = preg_split($reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE);
 178+
 179+ $m = array_shift($matches);
 180+ if( !isset( $this->mTables[$toVariant] ) ) {
 181+ throw new MWException( "Broken variant table: " . implode( ',', array_keys( $this->mTables ) ) );
 182+ }
 183+ $ret = $this->mTables[$toVariant]->replace( $m[0] );
 184+ $mstart = $m[1]+strlen($m[0]);
 185+ foreach($matches as $m) {
 186+ $ret .= substr($text, $mstart, $m[1]-$mstart);
 187+ $ret .= parent::translate($m[0], $toVariant);
 188+ $mstart = $m[1] + strlen($m[0]);
 189+ }
 190+
 191+ return $ret;
 192+ */
 193+
 194+ if( !isset( $this->mTables[$toVariant] ) ) {
 195+ throw new MWException( "Broken variant table: " . implode( ',', array_keys( $this->mTables ) ) );
 196+ }
 197+
 198+ return parent::translate( $text, $toVariant );
 199+ }
 200+}
 201+
 202+class LanguageKu extends LanguageKu_ku {
 203+
 204+ function __construct() {
 205+ global $wgHooks;
 206+ parent::__construct();
 207+
 208+ $variants = array( 'ku', 'ku-arab', 'ku-latn' );
 209+ $variantfallbacks = array(
 210+ 'ku' => 'ku-latn',
 211+ 'ku-arab' => 'ku-latn',
 212+ 'ku-latn' => 'ku-arab',
 213+ );
 214+
 215+ $this->mConverter = new KuConverter( $this, 'ku', $variants, $variantfallbacks );
 216+ $wgHooks['ArticleSaveComplete'][] = $this->mConverter;
 217+ }
 218+
 219+/* From Kazakh interface, not needed for the moment
 220+
 221+ function convertGrammar( $word, $case ) {
 222+ $fname="LanguageKu::convertGrammar";
 223+ wfProfileIn( $fname );
 224+
 225+ //always convert to ku-latn before convertGrammar
 226+ $w1 = $word;
 227+ $word = $this->mConverter->autoConvert( $word, 'ku-latn' );
 228+ $w2 = $word;
 229+ $word = parent::convertGrammar( $word, $case );
 230+ //restore encoding
 231+ if( $w1 != $w2 ) {
 232+ $word = $this->mConverter->translate( $word, 'ku-latn' );
 233+ }
 234+ wfProfileOut( $fname );
 235+ return $word;
 236+ }
 237+*/
 238+}
 239+
 240+?>
Property changes on: branches/liquidthreads/languages/classes/LanguageKu.php
___________________________________________________________________
Added: svn:eol-style
1241 + native
Index: branches/liquidthreads/RELEASE-NOTES
@@ -86,6 +86,7 @@
8787 * (bug 10096) Added an ability to query interwiki map table
8888 * On reupload, add a null revision to the image description page
8989 * Group log output by date
 90+* Kurdish interface latin/arabic writing system with transliteration
9091
9192 == Bugfixes since 1.10 ==
9293
@@ -100,8 +101,8 @@
101102 like [[User:#123|#123]]
102103 * Use the standard HTTP fetch functions when retrieving remote wiki pages
103104 through transwiki, so we can take advantage of cURL goodies if available
104 -* Disable custom user javascript in Special:Preferences, to avoid the risk
105 - of a compromised script sniffing passwords etc.
 105+* Disable user JavaScript on Special:Userlogin, Special:Resetpass and
 106+ Special:Preferences, to avoid a compromised script sniffing passwords, etc.
106107 * (bug 9854, 3770) Clip overflow text in gallery boxes for visual cleanliness
107108 instead of letting it flow outside the box or trigger ugly scroll bars.
108109 * Tooltips for print version and permalink
@@ -173,8 +174,8 @@
174175 {{LOCAL*}} functions return local time per server config or $wgLocaltimezone.
175176 Signature dates for Japanese and other languages including weekday now show
176177 the correct day to match the rest of the time in local time.
 178+* Escape the output of magic variables that return page name or part of it
177179
178 -
179180 == API changes since 1.10 ==
180181
181182 (For ongoing development discussion, see http://www.mediawiki.org/wiki/API)
@@ -209,6 +210,7 @@
210211 * (bug 10147) Now interwiki titles are not processed but added to a separate
211212 "interwiki" section of the output.
212213 * Added categorymembers list to query for pages in a category.
 214+* (bug 10260) Show page protection status
213215
214216 == Maintenance script changes since 1.10 ==
215217
Property changes on: branches/liquidthreads
___________________________________________________________________
Modified: svnmerge-integrated
216218 - /trunk/phase3:1-23049
217219 + /trunk/phase3:1-23086

Follow-up revisions

RevisionCommit summaryAuthorDate
r23201* (bug 7859) Update Kazakh translations...raymond08:40, 22 June 2007
r23203Merged revisions 23120-23202 via svnmerge from...david09:07, 22 June 2007
r23286(bug 7859) Kazakh message updates [patch from AlefZet]robchurch09:27, 23 June 2007
r23407Merged revisions 23203-23405 via svnmerge from...david23:00, 25 June 2007
r23891* (bug 9742) Update Lithuanian translations...raymond09:08, 9 July 2007
r23912Merged revisions 23662-23909 via svnmerge from...david18:11, 9 July 2007
r24672* (bug 9742) Update Lithuanian translations...raymond14:21, 8 August 2007
r24705Merged revisions 24632-24693 via svnmerge from...david19:15, 9 August 2007
r25321* (bug 9742) Update Lithuanian translations...raymond14:25, 30 August 2007
r25338Merged revisions 25303-25337 via svnmerge from...david04:55, 31 August 2007
r26497* (bug 9742) Update Lithuanian...raymond09:30, 8 October 2007
r26512Merged revisions 26465-26511 via svnmerge from...david21:07, 8 October 2007
r27367* (bug 9742) Update Lithuanian translations...raymond18:33, 10 November 2007
r28002* (bug 9742) Update Lithuanian translations...shinjiman02:45, 1 December 2007

Past revisions this follows-up on

RevisionCommit summaryAuthorDate
r17525(bug 7859) Updates for Kazakh i18nrotem13:30, 10 November 2006
r17537(bug 7859) Updates for Kazakh i18nrotem16:57, 11 November 2006
r17723(bug 7859) Updates for Kazakh i18nrotem13:46, 16 November 2006
r17781(bug 7859) Updates for Kazakh i18nrotem13:03, 18 November 2006
r17908(bug 7859) Updates for Kazakh i18nrotem15:06, 24 November 2006
r17924(bug 7859) Updates for Kazakh i18nrotem14:12, 25 November 2006
r17925(bug 7859) Updates for Kazakh i18nrotem14:35, 25 November 2006
r19547* (bug 7859) yet another kazakh localisation patch.leon09:55, 21 January 2007
r20180* (bug 7859) Update Kazakh messages...raymond18:32, 6 March 2007
r20737* (bug 7859) Update Kazahk translations...raymond12:10, 27 March 2007
r20948* (bug 7859) Update Kazahk translations...raymond18:13, 2 April 2007
r21604* (bug 7859) Update Kazakh translations...raymond04:54, 26 April 2007
r21680* (bug 7859) Update Kazakh translations...raymond05:05, 28 April 2007
r21706* (bug 7859) Update Kazakh translations...raymond20:57, 29 April 2007
r21741* (bug 9742) Update Lithuanian translations...raymond05:46, 1 May 2007
r21746* (bug 7859) Update Kazakh translations...raymond09:40, 1 May 2007
r21747* (bug 7859) Update Kazakh translations...raymond09:45, 1 May 2007
r22009* (bug 7859) Update Kazakh translations...raymond20:57, 8 May 2007
r22013disallow user js for Special:Userlogin and Special:Resetpass too, just in casevyznev21:22, 8 May 2007
r22056* (bug 7859) Update Kazakh translations...raymond21:13, 9 May 2007
r22061* (bug 9742) Update Lithuanian translations...raymond10:23, 10 May 2007
r22062* (bug 7859) Update Kazakh translations...raymond10:32, 10 May 2007
r22081* (bug 7859) Update Kazakh translations...raymond19:53, 10 May 2007
r22082* (bug 7859) Update Kazakh translations...raymond20:01, 10 May 2007
r22201* (bug 7859) Update Kazakh translations...raymond10:53, 16 May 2007
r22269* (bug 7859) Update Kazakh translations...raymond20:28, 19 May 2007
r22509* (bug 9742) Update Lithuanian translations...raymond16:27, 28 May 2007
r22510* (bug 7859) Update Kazakh translations...raymond16:37, 28 May 2007
r22518Merged revisions 22484-22517 via svnmerge from...david22:22, 28 May 2007
r22536* Adding 1 message to optional per hint (bug 7859, comment# 71)...raymond14:43, 29 May 2007
r22549Merged revisions 22518-22547 via svnmerge from...david01:48, 30 May 2007
r22557* (bug 7859) Update Kazakh translations...raymond09:47, 30 May 2007
r22587Merged revisions 22555-22586 via svnmerge from...david03:19, 31 May 2007
r22794* (bug 7859) Update Kazakh translations...raymond10:01, 6 June 2007
r22811Merged revisions 22791-22810 via svnmerge from...david07:26, 7 June 2007
r22901* (bug 7859) Update Kazakh translations...raymond08:53, 11 June 2007
r22919Merged revisions 22878-22918 via svnmerge from...david00:00, 12 June 2007
r22973* (bug 7859) Update Kazakh translations...raymond22:27, 13 June 2007
r23039Merged revisions 22967-23037 via svnmerge from...david20:15, 16 June 2007
r23051Indonesian (id) localisation updates.ivanlanin00:43, 18 June 2007
r23052API: enh 10260: Added page protection status query in prop=info. Applied modi...yurik02:00, 18 June 2007
r23055* Allow the extension used for mime type detection to be different from the t...tstarling06:33, 18 June 2007
r23056Fixed regression in file type detection -- use the real file extension not th...tstarling06:35, 18 June 2007
r23057Bug #10228 : don't show 1, when we can show 0. Literally. Yay.midom07:37, 18 June 2007
r23058* (bug 7859) Update Kazakh translations...raymond07:49, 18 June 2007
r23060* (bug 9742) Update Lithuanian translations...raymond08:04, 18 June 2007
r23066Update per r22013robchurch12:11, 18 June 2007
r23067Kurdish interface latin/arabic writing script system with transliteration...raymond12:55, 18 June 2007
r23068* Escape the output of magic variables that return page name or part of itnikerabbit13:34, 18 June 2007
r23069some minor fixlets, checking commit notificationsbrion15:20, 18 June 2007
r23070remove extra whitespace; testing commit notificationsbrion15:25, 18 June 2007
r23071cap consistency; testing commit noticesbrion15:30, 18 June 2007
r23072whitespace consistencybrion15:34, 18 June 2007
r23073don't mix spaces and tabs in code examples, or the WHITESPACE GODS SHALL SMIT...brion15:37, 18 June 2007
r23074* (bug 10305) Update Chinese translations...raymond15:37, 18 June 2007
r23075*Add username and talk to newbie contribs (bug 10306)aaron18:03, 18 June 2007
r23076Removing accidentally inserted parts from kk-tr fileraymond19:23, 18 June 2007
r23082* Updatesnikerabbit20:25, 18 June 2007

Status & tagging log