Index: branches/apiedit/phase3/includes/Title.php |
— | — | @@ -269,32 +269,27 @@ |
270 | 270 | } |
271 | 271 | |
272 | 272 | /** |
273 | | - * Create a new Title for a redirect |
274 | | - * @param string $text the redirect title text |
275 | | - * @return Title the new object, or NULL if the text is not a |
276 | | - * valid redirect |
| 273 | + * Extract a redirect destination from a string and return the |
| 274 | + * Title, or null if the text doesn't contain a valid redirect |
| 275 | + * |
| 276 | + * @param string $text Text with possible redirect |
| 277 | + * @return Title |
277 | 278 | */ |
278 | 279 | public static function newFromRedirect( $text ) { |
279 | | - $mwRedir = MagicWord::get( 'redirect' ); |
280 | | - $rt = NULL; |
281 | | - if ( $mwRedir->matchStart( $text ) ) { |
282 | | - $m = array(); |
283 | | - if ( preg_match( '/\[{2}(.*?)(?:\||\]{2})/', $text, $m ) ) { |
284 | | - # categories are escaped using : for example one can enter: |
285 | | - # #REDIRECT [[:Category:Music]]. Need to remove it. |
286 | | - if ( substr($m[1],0,1) == ':') { |
287 | | - # We don't want to keep the ':' |
288 | | - $m[1] = substr( $m[1], 1 ); |
289 | | - } |
290 | | - |
291 | | - $rt = Title::newFromText( $m[1] ); |
292 | | - # Disallow redirects to Special:Userlogout |
293 | | - if ( !is_null($rt) && $rt->isSpecial( 'Userlogout' ) ) { |
294 | | - $rt = NULL; |
295 | | - } |
| 280 | + $redir = MagicWord::get( 'redirect' ); |
| 281 | + if( $redir->matchStart( $text ) ) { |
| 282 | + // Extract the first link and see if it's usable |
| 283 | + if( preg_match( '!\[{2}(.*?)(?:\||\]{2})!', $text, $m ) ) { |
| 284 | + // Strip preceding colon used to "escape" categories, etc. |
| 285 | + // and URL-decode links |
| 286 | + $m[1] = urldecode( ltrim( $m[1], ':' ) ); |
| 287 | + $title = Title::newFromText( $m[1] ); |
| 288 | + // Redirects to Special:Userlogout are not permitted |
| 289 | + if( $title instanceof Title && !$title->isSpecial( 'Userlogout' ) ) |
| 290 | + return $title; |
296 | 291 | } |
297 | 292 | } |
298 | | - return $rt; |
| 293 | + return null; |
299 | 294 | } |
300 | 295 | |
301 | 296 | #---------------------------------------------------------------------------- |
— | — | @@ -1019,42 +1014,110 @@ |
1020 | 1015 | * @return boolean |
1021 | 1016 | */ |
1022 | 1017 | public function userCan( $action, $doExpensiveQueries = true ) { |
| 1018 | + global $wgUser; |
| 1019 | + return ( $this->getUserPermissionsErrorsInternal( $action, $wgUser, $doExpensiveQueries ) === array()); |
| 1020 | + } |
| 1021 | + |
| 1022 | + /** |
| 1023 | + * Can $user perform $action on this page? |
| 1024 | + * @param string $action action that permission needs to be checked for |
| 1025 | + * @param bool $doExpensiveQueries Set this to false to avoid doing unnecessary queries. |
| 1026 | + * @return array Array of arrays of the arguments to wfMsg to explain permissions problems. |
| 1027 | + */ |
| 1028 | + public function getUserPermissionsErrors( $action, $user, $doExpensiveQueries = true ) { |
| 1029 | + $errors = $this->getUserPermissionsErrorsInternal( $action, $user, $doExpensiveQueries ); |
| 1030 | + |
| 1031 | + global $wgContLang; |
| 1032 | + global $wgLang; |
| 1033 | + |
| 1034 | + if ( wfReadOnly() && $action != 'read' ) { |
| 1035 | + $errors[] = array( 'readonlytext' ); |
| 1036 | + } |
| 1037 | + |
| 1038 | + if ( $user->isBlockedFrom( $this ) ) { |
| 1039 | + $block = $user->mBlock; |
| 1040 | + |
| 1041 | + // This is from OutputPage::blockedPage |
| 1042 | + // Copied at r23888 by werdna |
| 1043 | + |
| 1044 | + $id = $user->blockedBy(); |
| 1045 | + $reason = $user->blockedFor(); |
| 1046 | + $ip = wfGetIP(); |
| 1047 | + |
| 1048 | + if ( is_numeric( $id ) ) { |
| 1049 | + $name = User::whoIs( $id ); |
| 1050 | + } else { |
| 1051 | + $name = $id; |
| 1052 | + } |
| 1053 | + |
| 1054 | + $link = '[[' . $wgContLang->getNsText( NS_USER ) . ":{$name}|{$name}]]"; |
| 1055 | + $blockid = $block->mId; |
| 1056 | + $blockExpiry = $user->mBlock->mExpiry; |
| 1057 | + |
| 1058 | + if ( $blockExpiry == 'infinity' ) { |
| 1059 | + // Entry in database (table ipblocks) is 'infinity' but 'ipboptions' uses 'infinite' or 'indefinite' |
| 1060 | + $scBlockExpiryOptions = wfMsg( 'ipboptions' ); |
| 1061 | + |
| 1062 | + foreach ( explode( ',', $scBlockExpiryOptions ) as $option ) { |
| 1063 | + if ( strpos( $option, ':' ) == false ) |
| 1064 | + continue; |
| 1065 | + |
| 1066 | + list ($show, $value) = explode( ":", $option ); |
| 1067 | + |
| 1068 | + if ( $value == 'infinite' || $value == 'indefinite' ) { |
| 1069 | + $blockExpiry = $show; |
| 1070 | + break; |
| 1071 | + } |
| 1072 | + } |
| 1073 | + } else { |
| 1074 | + $blockExpiry = $wgLang->timeanddate( wfTimestamp( TS_MW, $blockExpiry ), true ); |
| 1075 | + } |
| 1076 | + |
| 1077 | + $intended = $user->mBlock->mAddress; |
| 1078 | + |
| 1079 | + $errors[] = array ( ($block->mAuto ? 'autoblockedtext-concise' : 'blockedtext-concise'), $link, $reason, $ip, name, $blockid, $blockExpiry, $intended ); |
| 1080 | + } |
| 1081 | + |
| 1082 | + return $errors; |
| 1083 | + } |
| 1084 | + |
| 1085 | + /** |
| 1086 | + * Can $user perform $action on this page? |
| 1087 | + * This is an internal function, which checks ONLY that previously checked by userCan (i.e. it leaves out checks on wfReadOnly() and blocks) |
| 1088 | + * @param string $action action that permission needs to be checked for |
| 1089 | + * @param bool $doExpensiveQueries Set this to false to avoid doing unnecessary queries. |
| 1090 | + * @return array Array of arrays of the arguments to wfMsg to explain permissions problems. |
| 1091 | + */ |
| 1092 | + private function getUserPermissionsErrorsInternal( $action, $user, $doExpensiveQueries = true ) { |
1023 | 1093 | $fname = 'Title::userCan'; |
1024 | 1094 | wfProfileIn( $fname ); |
1025 | 1095 | |
1026 | | - global $wgUser; |
| 1096 | + $errors = array(); |
1027 | 1097 | |
1028 | | - $result = null; |
1029 | | - wfRunHooks( 'userCan', array( &$this, &$wgUser, $action, &$result ) ); |
1030 | | - if ( $result !== null ) { |
1031 | | - wfProfileOut( $fname ); |
1032 | | - return $result; |
| 1098 | + if ( !wfRunHooks( 'userCan', array( &$this, &$user, $action, &$result ) ) ) { |
| 1099 | + return $result ? array() : array( array( 'badaccess-group0' ) ); |
1033 | 1100 | } |
1034 | 1101 | |
1035 | 1102 | if( NS_SPECIAL == $this->mNamespace ) { |
1036 | | - wfProfileOut( $fname ); |
1037 | | - return false; |
| 1103 | + $errors[] = array('ns-specialprotected'); |
1038 | 1104 | } |
1039 | 1105 | |
1040 | 1106 | if ( $this->isNamespaceProtected() ) { |
1041 | | - wfProfileOut( $fname ); |
1042 | | - return false; |
| 1107 | + $errors[] = (NS_MEDIAWIKI == $this->mNamespace ? array('protectedinterface') : array( 'namespaceprotected', $wgContLang->getNSText( $this->mNamespace ) ) ); |
1043 | 1108 | } |
1044 | 1109 | |
1045 | 1110 | if( $this->mDbkeyform == '_' ) { |
1046 | 1111 | # FIXME: Is this necessary? Shouldn't be allowed anyway... |
1047 | | - wfProfileOut( $fname ); |
1048 | | - return false; |
| 1112 | + $errors[] = array('badaccess-group0'); |
1049 | 1113 | } |
1050 | 1114 | |
1051 | 1115 | # protect css/js subpages of user pages |
1052 | 1116 | # XXX: this might be better using restrictions |
1053 | 1117 | # XXX: Find a way to work around the php bug that prevents using $this->userCanEditCssJsSubpage() from working |
1054 | 1118 | if( $this->isCssJsSubpage() |
1055 | | - && !$wgUser->isAllowed('editinterface') |
1056 | | - && !preg_match('/^'.preg_quote($wgUser->getName(), '/').'\//', $this->mTextform) ) { |
1057 | | - wfProfileOut( $fname ); |
1058 | | - return false; |
| 1119 | + && !$user->isAllowed('editinterface') |
| 1120 | + && !preg_match('/^'.preg_quote($user->getName(), '/').'\//', $this->mTextform) ) { |
| 1121 | + $errors[] = array('customcssjsprotected'); |
1059 | 1122 | } |
1060 | 1123 | |
1061 | 1124 | if ( $doExpensiveQueries && !$this->isCssJsSubpage() ) { |
— | — | @@ -1070,9 +1133,11 @@ |
1071 | 1134 | if( $cascadingSources > 0 && isset($restrictions[$action]) ) { |
1072 | 1135 | foreach( $restrictions[$action] as $right ) { |
1073 | 1136 | $right = ( $right == 'sysop' ) ? 'protect' : $right; |
1074 | | - if( '' != $right && !$wgUser->isAllowed( $right ) ) { |
1075 | | - wfProfileOut( $fname ); |
1076 | | - return false; |
| 1137 | + if( '' != $right && !$user->isAllowed( $right ) ) { |
| 1138 | + $pages = ''; |
| 1139 | + foreach( $cascadeSources as $id => $page ) |
| 1140 | + $pages .= '* [[:' . $page->getPrefixedText() . "]]\n"; |
| 1141 | + $errors[] = array( 'cascadeprotected', array_len( $cascadingSources ), $pages ); |
1077 | 1142 | } |
1078 | 1143 | } |
1079 | 1144 | } |
— | — | @@ -1083,33 +1148,53 @@ |
1084 | 1149 | if ( $right == 'sysop' ) { |
1085 | 1150 | $right = 'protect'; |
1086 | 1151 | } |
1087 | | - if( '' != $right && !$wgUser->isAllowed( $right ) ) { |
1088 | | - wfProfileOut( $fname ); |
1089 | | - return false; |
| 1152 | + if( '' != $right && !$user->isAllowed( $right ) ) { |
| 1153 | + $errors[] = array( 'protectedpagetext' ); |
1090 | 1154 | } |
1091 | 1155 | } |
1092 | 1156 | |
1093 | | - if( $action == 'move' && |
1094 | | - !( $this->isMovable() && $wgUser->isAllowed( 'move' ) ) ) { |
1095 | | - wfProfileOut( $fname ); |
1096 | | - return false; |
1097 | | - } |
1098 | | - |
1099 | 1157 | if( $action == 'create' ) { |
1100 | | - if( ( $this->isTalkPage() && !$wgUser->isAllowed( 'createtalk' ) ) || |
1101 | | - ( !$this->isTalkPage() && !$wgUser->isAllowed( 'createpage' ) ) ) { |
1102 | | - wfProfileOut( $fname ); |
1103 | | - return false; |
| 1158 | + if( ( $this->isTalkPage() && !$user->isAllowed( 'createtalk' ) ) || |
| 1159 | + ( !$this->isTalkPage() && !$user->isAllowed( 'createpage' ) ) ) { |
| 1160 | + $errors[] = $user->isAnon() ? array ('nocreatetext') : array ('nocreate-loggedin'); |
1104 | 1161 | } |
1105 | 1162 | } |
1106 | 1163 | |
1107 | | - if( $action == 'edit' && !$wgUser->isAllowed( 'edit' ) ) { |
1108 | | - wfProfileOut( $fname ); |
1109 | | - return false; |
| 1164 | + if( $action == 'move' && |
| 1165 | + !( $this->isMovable() && $user->isAllowed( 'move' ) ) ) { |
| 1166 | + $errors[] = $user->isAnon() ? array ( 'movenologintext' ) : array ('movenotallowed'); |
| 1167 | + } else if ( !$user->isAllowed( $action ) ) { |
| 1168 | + $return = null; |
| 1169 | + $groups = array(); |
| 1170 | + global $wgGroupPermissions; |
| 1171 | + foreach( $wgGroupPermissions as $key => $value ) { |
| 1172 | + if( isset( $value[$permission] ) && $value[$permission] == true ) { |
| 1173 | + $groupName = User::getGroupName( $key ); |
| 1174 | + $groupPage = User::getGroupPage( $key ); |
| 1175 | + if( $groupPage ) { |
| 1176 | + $skin = $user->getSkin(); |
| 1177 | + $groups[] = $skin->makeLinkObj( $groupPage, $groupName ); |
| 1178 | + } else { |
| 1179 | + $groups[] = $groupName; |
| 1180 | + } |
| 1181 | + } |
| 1182 | + } |
| 1183 | + $n = count( $groups ); |
| 1184 | + $groups = implode( ', ', $groups ); |
| 1185 | + switch( $n ) { |
| 1186 | + case 0: |
| 1187 | + case 1: |
| 1188 | + case 2: |
| 1189 | + $return = array( "badaccess-group$n", $groups ); |
| 1190 | + break; |
| 1191 | + default: |
| 1192 | + $return = array( 'badaccess-groups', $groups ); |
| 1193 | + } |
| 1194 | + $errors[] = $return; |
1110 | 1195 | } |
1111 | 1196 | |
1112 | 1197 | wfProfileOut( $fname ); |
1113 | | - return true; |
| 1198 | + return $errors; |
1114 | 1199 | } |
1115 | 1200 | |
1116 | 1201 | /** |
Index: branches/apiedit/phase3/includes/OutputPage.php |
— | — | @@ -821,6 +821,33 @@ |
822 | 822 | $this->returnToMain( false ); |
823 | 823 | } |
824 | 824 | |
| 825 | + public function showPermissionsErrorPage( $title, $errors ) |
| 826 | + { |
| 827 | + global $wgTitle; |
| 828 | + |
| 829 | + $this->mDebugtext .= 'Original title: ' . |
| 830 | + $wgTitle->getPrefixedText() . "\n"; |
| 831 | + $this->setPageTitle( wfMsg( 'permissionserrors' ) ); |
| 832 | + $this->setHTMLTitle( wfMsg( 'permissionserrors' ) ); |
| 833 | + $this->setRobotpolicy( 'noindex,nofollow' ); |
| 834 | + $this->setArticleRelated( false ); |
| 835 | + $this->enableClientCache( false ); |
| 836 | + $this->mRedirect = ''; |
| 837 | + $this->mBodytext = ''; |
| 838 | + |
| 839 | + $this->addWikiText( wfMsg('permissionserrorstext') ); |
| 840 | + $this->addHtml( '<ul class="permissions-errors">' . "\n" ); |
| 841 | + |
| 842 | + foreach( $errors as $error ) |
| 843 | + { |
| 844 | + $this->addHtml( '<li>' ); |
| 845 | + $this->addWikiText( call_user_func_array( 'wfMsg', $error ) ); |
| 846 | + $this->addHtml( '</li>'); |
| 847 | + } |
| 848 | + $this->addHtml( '</ul>' ); |
| 849 | + |
| 850 | + } |
| 851 | + |
825 | 852 | /** @deprecated */ |
826 | 853 | public function errorpage( $title, $msg ) { |
827 | 854 | throw new ErrorPageError( $title, $msg ); |
Index: branches/apiedit/phase3/languages/messages/MessagesTh.php |
— | — | @@ -138,8 +138,8 @@ |
139 | 139 | 'subcategories' => 'หมวดหมู่ย่อย', |
140 | 140 | 'category-media-header' => 'สื่อในหมวดหมู่ "$1"', |
141 | 141 | |
142 | | -'mainpagetext' => "<big>'''ซอฟต์แวร์มีเดียได้ถูกติดตั้งเรียบร้อย'''</big>", |
143 | | -'mainpagedocfooter' => 'ปรึกษา[http://meta.wikimedia.org/wiki/Help:Contents คู่มือการใช้งาน] สำหรับข้อมูลการใช้งานซอฟต์แวร์วิกิ. |
| 142 | +'mainpagetext' => "<big>'''ซอฟต์แวร์มีเดียวิกิได้ถูกติดตั้งเรียบร้อย'''</big>", |
| 143 | +'mainpagedocfooter' => 'ศึกษา[http://meta.wikimedia.org/wiki/Help:Contents คู่มือการใช้งาน] สำหรับเริ่มต้นใช้งานซอฟต์แวร์วิกิ |
144 | 144 | |
145 | 145 | == เริ่มต้น == |
146 | 146 | |
— | — | @@ -371,7 +371,7 @@ |
372 | 372 | 'userlogout' => 'ล็อกเอาต์', |
373 | 373 | 'notloggedin' => 'ไม่ได้ล็อกอิน', |
374 | 374 | 'nologin' => 'ล็อกอินด้านล่างหรือ $1', |
375 | | -'nologinlink' => 'สร้างบัญชีผู้ใ้ช้', |
| 375 | +'nologinlink' => 'สร้างบัญชีผู้ใช้', |
376 | 376 | 'createaccount' => 'สร้างบัญชีผู้ใช้', |
377 | 377 | 'gotaccount' => 'มีบัญชีผู้ใช้แล้วหรือไม่ $1', |
378 | 378 | 'gotaccountlink' => 'ล็อกอิน', |
— | — | @@ -481,7 +481,7 @@ |
482 | 482 | การบล็อกหมดอายุเมื่อ: $6<br /> |
483 | 483 | ผู้ถูกบล็อก: $7 |
484 | 484 | |
485 | | -สามารถติดต่อ $1 หรือ [[{{MediaWiki:grouppage-sysop}}|ผู้ดูแลระบบ]]คนอื่นเพื่อหารือเกี่ยวกับการบล็อกนี้ หรือสามารถที่่จะอีเมลผ่านระบบวิกิด้วยคำสั่ง 'อีเมลหาผู้ใช้นี้' |
| 485 | +สามารถติดต่อ $1 หรือ [[{{MediaWiki:grouppage-sysop}}|ผู้ดูแลระบบ]]คนอื่นเพื่อหารือเกี่ยวกับการบล็อกนี้ หรือสามารถที่จะอีเมลผ่านระบบวิกิด้วยคำสั่ง 'อีเมลหาผู้ใช้นี้' |
486 | 486 | (ถ้าคุณได้ตั้งค่ารองรับการใช้คำสั่งพิเศษผ่านทางอีเมลในส่วน [[Special:Preferences|การตั้งค่าผู้ใช้]]) |
487 | 487 | หมายเลขไอพีปัจจุบันของคุณคือ $3 และรหัสการบล็อกคือ #$5 กรุณาระบุหมายเลขเหล่านี้ในการติดต่อผู้ดูแล", |
488 | 488 | 'autoblockedtext' => 'หมายเลขไอพีของคุณถูกบล็อกอัตโนมัติเนื่องจากถูกใช้งานโดยผู้อื่น ซึ่งถูกบล็อกก่อนหน้าโดย $1 โดยสาเหตุที่ว่า: |
— | — | @@ -492,7 +492,7 @@ |
493 | 493 | |
494 | 494 | คุณอาจติดต่อ $1 หรือ [[{{MediaWiki:grouppage-sysop}}|ผู้ดูแลระบบ]]คนอื่นเพื่อหารือเกี่ยวกับการบล็อกนี้ |
495 | 495 | |
496 | | -หรือสามารถที่่จะอีเมลผ่านระบบวิกิด้วยคำสั่ง "อีเมลหาผู้ใช้นี้" |
| 496 | +หรือสามารถที่จะอีเมลผ่านระบบวิกิด้วยคำสั่ง "อีเมลหาผู้ใช้นี้" |
497 | 497 | (ถ้าคุณได้ตั้งค่ารองรับการใช้คำสั่งพิเศษผ่านทางอีเมลในส่วน [[Special:Preferences|การตั้งค่าผู้ใช้]]) |
498 | 498 | |
499 | 499 | หมายเลขไอพีปัจจุบันของคุณคือ $3 และรหัสการบล็อกคือ #$5 กรุณาระบุหมายเลขเหล่านี้ในการติดต่อผู้ดูแล', |
— | — | @@ -532,13 +532,13 @@ |
533 | 533 | 'note' => '<strong>คำแนะนำ:</strong>', |
534 | 534 | 'previewnote' => '<strong>นี้เป็นส่วนแสดงผลเท่านั้น การเปลี่ยนแปลงยังไม่ได้ถูกบันทึก!</strong>', |
535 | 535 | 'previewconflict' => 'การแสดงผลส่วนนี้เป็นตัวอย่างของการแก้ไขด้านบน ถ้ากดบันทึกการแสดงผลจะแสดงในลักษณะนี้ทันที', |
536 | | -'session_fail_preview' => '<strong>เสียใจด้วย! ไม่สามารถดำเนินการแก้ไขต่อได้เนื่องจากการสูญหายของการเชื่อมต่อในช่วงการแก้ไข |
537 | | -ให้ทดลองแกไ้ขอีกครั้งหนึ่ง ถ้ายังไม่สามารถทำได้ให้ลองล็อกเอาต์และล็อกอินกลับมาอีกครั้ง</strong>', |
| 536 | +'session_fail_preview' => '<strong>เสียใจด้วย! ไม่สามารถดำเนินการแก้ไขต่อได้เนื่องจากการเชื่อมต่อกับอินเทอร์เน็ตหรือทางระบบขาดหายในระหว่างการแก้ไข |
| 537 | +ให้ทดลองแก้ไขอีกครั้งหนึ่ง ถ้ายังไม่สามารถทำได้ให้ลองล็อกเอาต์และล็อกอินกลับมาอีกครั้ง</strong>', |
538 | 538 | 'session_fail_preview_html' => "<strong>เสียใจด้วย! ไม่สามารถดำเนินการแก้ไขต่อได้เนื่องจากการสูญหายของการเชื่อมต่อในช่วงการแก้ไข</strong> |
539 | 539 | |
540 | 540 | ''เนื่องจากวิกินี้ใช้รูปแบบเอชทีเอ็มแอลเปล่า จะไม่มีการแสดงผลเพื่อป้องกันการขัดข้องระหว่างจาวาสคริปต์'' |
541 | 541 | |
542 | | -<strong>ถ้าการแก้ไขครั้งนี้ถูกต้อง ให้ทดลองแกไ้ขอีกครั้งหนึ่ง ถ้ายังไม่สามารถทำได้ให้ลองล็อกเอาต์และล็อกอินกลับมาอีกครั้ง</strong>", |
| 542 | +<strong>ถ้าการแก้ไขครั้งนี้ถูกต้อง ให้ทดลองแก้ไขอีกครั้งหนึ่ง ถ้ายังไม่สามารถทำได้ให้ลองล็อกเอาต์และล็อกอินกลับมาอีกครั้ง</strong>", |
543 | 543 | 'token_suffix_mismatch' => '<strong>การแก้ไขของคุณได้ถูกปฏิเสธเนื่องจากไคลเอนต์ที่คุณใช้อยู่ได้ขัดขวางรูปแบบของเครื่องหมายวรรคตอนในการแก้ไข |
544 | 544 | ระบบไม่รับการแก้ไขของคุณเพื่อป้องกันความขัดข้องของข้อมูล ปัญหานี้มักจะเกิดขึ้นถ้าใช้งานบริการพรอกซีซ่อนสำหรับผู้ไม่ประสงค์ออกนาม</strong>', |
545 | 545 | 'importing' => 'กำลังนำเข้า $1', |
— | — | @@ -700,7 +700,7 @@ |
701 | 701 | 'viewprevnext' => 'ดู ($1) ($2) ($3)', |
702 | 702 | 'showingresults' => "แสดง $1 รายการ เริ่มต้นจากรายการที่ '''$2'''", |
703 | 703 | 'showingresultsnum' => "แสดง $3 รายการ เริ่มต้นจากรายการที่ '''$2'''", |
704 | | -'nonefound' => "'''คำแนะนำ''': ค้นหาไม่พบเนื่องจากค้นหาจากคำศัพท์ทั่วไป เช่น \"คุณ\" and \"จาก\" ซึ่งไม่ได้ถูกเก็บไว้ในดันชีคำค้นหา", |
| 704 | +'nonefound' => "'''คำแนะนำ''': ค้นหาไม่พบอาจเนื่องจาก การค้นหาจากคำศัพท์ทั่วไป เช่นคำว่า \"ที่\" and \"ของ\" ไม่ได้ถูกเก็บไว้ในดัชนีคำค้นหา", |
705 | 705 | 'powersearch' => 'ค้นหา', |
706 | 706 | 'powersearchtext' => 'ค้นหาในเนมสเปซ:<br />$1<br />$2 แสดงหน้าเปลี่ยนทาง<br />ค้นหาคำ $3 $9', |
707 | 707 | 'searchdisabled' => 'งดระบบการค้นหาใน {{SITENAME}} อาจจะลองค้นหาในกูเกิลหรือเซิร์ชเอนจินอื่น', |
— | — | @@ -916,7 +916,7 @@ |
917 | 917 | 'imagelisttext' => "รายชื่อไฟล์ '''$1''' รายการ เรียงตาม$2", |
918 | 918 | 'imagelistforuser' => 'แสดงเฉพาะภาพที่อัปโหลดโดย $1', |
919 | 919 | 'getimagelist' => 'รับค่ารายชื่อไฟล์', |
920 | | -'ilsubmit' => 'ค้่นหา', |
| 920 | +'ilsubmit' => 'ค้นหา', |
921 | 921 | 'showlast' => 'แสดงไฟล์ $1 รายการเรียงตาม$2', |
922 | 922 | 'byname' => 'ชื่อ', |
923 | 923 | 'bydate' => 'วันที่', |
— | — | @@ -924,13 +924,6 @@ |
925 | 925 | 'imgdelete' => 'ลบ', |
926 | 926 | 'imgdesc' => 'อธิบาย', |
927 | 927 | 'imgfile' => 'ไฟล์', |
928 | | -'imglegend' => 'คำอธิบาย: (อธิบาย) = แสดง/ซ่อน คำอธิบายไฟล์', |
929 | | -'imghistory' => 'ประวัติไฟล์', |
930 | | -'revertimg' => 'ย้อน', |
931 | | -'deleteimg' => 'ลบ', |
932 | | -'deleteimgcompletely' => 'ลบทุกรุ่นของไฟล์นี้', |
933 | | -'imghistlegend' => 'คำอธิบาย: (ป) = ไฟล์ปัจจุบัน (ลบ) = ลบรุ่นเก่าของไฟล์นี้ (ย้อน) = ย้อนกลับไปเป็นรุ่นเก่า |
934 | | -<br /><i>กดวันที่เพื่อดูไฟล์ในรุ่น ณ วันนั้น</i>', |
935 | 928 | 'imagelinks' => 'หน้าที่ใช้ภาพนี้', |
936 | 929 | 'linkstoimage' => 'หน้าที่ใช้ภาพนี้:', |
937 | 930 | 'nolinkstoimage' => 'ไม่มีหน้าที่ใช้ภาพนี้', |
— | — | @@ -1212,7 +1205,6 @@ |
1213 | 1206 | 'deletionlog' => 'บันทึกการลบ', |
1214 | 1207 | 'reverted' => 'ย้อนไปรุ่นก่อนหน้า', |
1215 | 1208 | 'deletecomment' => 'สาเหตุในการลบ', |
1216 | | -'imagereverted' => 'ย้อนกลับไปรุ่นก่อนหน้าสำเร็จ', |
1217 | 1209 | 'rollback' => 'ย้อนการแก้ไข', |
1218 | 1210 | 'rollback_short' => 'ย้อน', |
1219 | 1211 | 'rollbacklink' => 'ย้อน', |
— | — | @@ -1391,6 +1383,7 @@ |
1392 | 1384 | 'blocklink' => 'บล็อก', |
1393 | 1385 | 'unblocklink' => 'เลิกบล็อก', |
1394 | 1386 | 'contribslink' => 'แก้ไข', |
| 1387 | +'autoblocker' => 'ถูกบล็อกอัตโนมัติเนื่องจากหมายเลขไอพีของคุณตรงกับ "[[User:$1|$1]]" ถูกบล็อกกล่อนหน้านี้เนื่องจากสาเหตุ: "$2"', |
1395 | 1388 | 'blocklogpage' => 'บันทึกการบล็อก', |
1396 | 1389 | 'blocklogentry' => 'บล็อก "[[$1]]" หมดอายุ $2 $3', |
1397 | 1390 | 'blocklogtext' => 'ด้านล่างเป็นบันทึกการบล็อกและการเลิกบล็อก ส่วนการบล็อกอัตโนมัติจะไม่ถูกรวมอยู่ในรายการนี้ ดู [[Special:Ipblocklist|รายการบล็อกไอพี]] สำหรับการบล็อกทั้งหมด', |
— | — | @@ -1438,7 +1431,7 @@ |
1439 | 1432 | |
1440 | 1433 | <b>คำเตือน!</b> |
1441 | 1434 | การเปลี่ยนชื่อจะมีผลอย่างมากกับสถิติของหน้านิยมที่มีคนเข้าดูมาก ให้แน่ใจว่าต้องการเปลี่ยนชื่อในครั้งนี้", |
1442 | | -'movepagetalktext' => "หน้าพูดคุยของหน้านี้จะถูกเปลี่ยนชื่อตามไปด้วย '''เว้ันเสียแต่:''' |
| 1435 | +'movepagetalktext' => "หน้าพูดคุยของหน้านี้จะถูกเปลี่ยนชื่อตามไปด้วย '''เว้นเสียแต่:''' |
1443 | 1436 | *หน้าพูดคุยไม่ว่างมีแล้วที่ชื่อใหม่ หรือ |
1444 | 1437 | *ได้เลือกไม่ต้องการเปลี่ยนชื่อด้านล่าง |
1445 | 1438 | |
— | — | @@ -1854,7 +1847,7 @@ |
1855 | 1848 | |
1856 | 1849 | 'exif-subjectdistance-value' => '$1 เมตร', |
1857 | 1850 | |
1858 | | -'exif-meteringmode-0' => 'ไ่ม่ทราบ', |
| 1851 | +'exif-meteringmode-0' => 'ไม่ทราบ', |
1859 | 1852 | 'exif-meteringmode-1' => 'เฉลี่ย', |
1860 | 1853 | 'exif-meteringmode-2' => 'เซนเตอร์', |
1861 | 1854 | 'exif-meteringmode-3' => 'สปอต', |
Index: branches/apiedit/phase3/languages/messages/MessagesKu_arab.php |
— | — | @@ -8,4 +8,27 @@ |
9 | 9 | |
10 | 10 | $fallback = 'ku-latn'; |
11 | 11 | |
| 12 | +$skinNames = array( |
| 13 | +'standard' => 'كلاسیك', |
| 14 | +'nostalgia' => 'قاوهیی', |
| 15 | +'cologneblue' => 'شین', |
| 16 | +'monobook' => 'مۆنۆ', |
| 17 | +'myskin' => 'پێستی خۆم', |
| 18 | +'chick' => 'جوجه', |
| 19 | +'simple' => 'ساده' |
| 20 | +); |
12 | 21 | |
| 22 | +$messages = array( |
| 23 | +# User preference toggles |
| 24 | +'tog-underline' => 'هێڵ بهژێر بهسهرهكاندا:', |
| 25 | +'tog-highlightbroken' => 'لابردنی بهستهری پهڕه بهتاڵهكان', |
| 26 | +'tog-justify' => 'دهق وهكو كۆپله', |
| 27 | +'tog-hideminor' => 'گۆڕانكارییه بچووكهكان بشارهوه', |
| 28 | +'tog-extendwatchlist' => 'لیستهی چاودێری كردن - پهرهپێدراو', |
| 29 | +'tog-usenewrc' => 'نیشاندان پهرهپێدراو (پێویستی به JavaScript)', |
| 30 | +'tog-numberheadings' => 'هێڵ بهژێر سهردێرهكان', |
| 31 | +'tog-showtoolbar' => 'ئامرازهكانی كاركردن نیشانبده', |
| 32 | +'tog-editondblclick' => 'پهڕهكان به دوو كرته بكهوه بۆ كارتیاكردن (JavaScript)', |
| 33 | +'tog-editsection' => 'بهستهر بۆ كۆپلهكان بۆ دهستكاریی كردن نیشانبده', |
| 34 | + |
| 35 | +); |
Index: branches/apiedit/phase3/languages/messages/MessagesDe.php |
— | — | @@ -133,11 +133,26 @@ |
134 | 134 | 'Withoutinterwiki' => array( 'Fehlende_Interwikis' ), |
135 | 135 | ); |
136 | 136 | |
| 137 | +$datePreferences = array( |
| 138 | + 'default', |
| 139 | + 'dmyt', |
| 140 | + 'dmyts', |
| 141 | + 'dmy', |
| 142 | + 'ymd', |
| 143 | + 'ISO 8601' |
| 144 | +); |
| 145 | + |
| 146 | +$defaultDateFormat = 'dmy'; |
| 147 | + |
137 | 148 | $dateFormats = array( |
138 | | - 'mdy time' => 'H:i', |
139 | | - 'mdy date' => 'M j. Y', |
140 | | - 'mdy both' => 'H:i, M j. Y', |
| 149 | + 'dmyt time' => 'H:i', |
| 150 | + 'dmyt date' => 'j. F Y', |
| 151 | + 'dmyt both' => 'j. M Y, H:i', |
141 | 152 | |
| 153 | + 'dmyts time' => 'H:i:s', |
| 154 | + 'dmyts date' => 'j. F Y', |
| 155 | + 'dmyts both' => 'j. M Y, H:i:s', |
| 156 | + |
142 | 157 | 'dmy time' => 'H:i', |
143 | 158 | 'dmy date' => 'j. F Y', |
144 | 159 | 'dmy both' => 'H:i, j. M Y', |
— | — | @@ -145,6 +160,10 @@ |
146 | 161 | 'ymd time' => 'H:i', |
147 | 162 | 'ymd date' => 'Y M j', |
148 | 163 | 'ymd both' => 'H:i, Y M j', |
| 164 | + |
| 165 | + 'ISO 8601 time' => 'xnH:xni:xns', |
| 166 | + 'ISO 8601 date' => 'xnY-xnm-xnd', |
| 167 | + 'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns' |
149 | 168 | ); |
150 | 169 | |
151 | 170 | $messages = array( |
— | — | @@ -517,6 +536,7 @@ |
518 | 537 | 'nouserspecified' => 'Bitte geben Sie einen Benutzernamen an.', |
519 | 538 | 'wrongpassword' => 'Das Passwort ist falsch (oder fehlt). Bitte versuchen Sie es erneut.', |
520 | 539 | 'wrongpasswordempty' => 'Das eingegebene Passwort war leer. Bitte versuchen Sie es erneut.', |
| 540 | +'passwordtooshort' => 'Fehler bei der Passwort-Wahl: Es muss mindestens $1 Zeichen lang sein und darf nicht mit dem Benutzernamen identisch sein.', |
521 | 541 | 'mailmypassword' => 'Neues Passwort zusenden', |
522 | 542 | 'passwordremindertitle' => 'Neues Passwort für ein {{SITENAME}}-Benutzerkonto', |
523 | 543 | 'passwordremindertext' => 'Jemand mit der IP-Adresse $1, wahrscheinlich Sie selbst, hat ein neues Passwort für die Anmeldung bei {{SITENAME}} ($4) angefordert. |
— | — | @@ -610,6 +630,7 @@ |
611 | 631 | \'\'\'Bitte geben Sie folgende Daten in jeder Anfrage an:\'\'\' |
612 | 632 | *Sperrender Administrator: $1 |
613 | 633 | *Sperrgrund: $2 |
| 634 | +*Beginn der Sperre: $8 |
614 | 635 | *Sperr-Ende: $6 |
615 | 636 | *IP-Adresse: $3 |
616 | 637 | *Sperre betrifft: $7 |
— | — | @@ -632,7 +653,8 @@ |
633 | 654 | \'\'\'Bitte geben Sie folgende Daten in jeder Anfrage an:\'\'\' |
634 | 655 | *Sperrender Administrator: $1 |
635 | 656 | *Sperrgrund: $2 |
636 | | -*Sperrende: $6 |
| 657 | +*Beginn der Sperre: $8 |
| 658 | +*Sperr-Ende: $6 |
637 | 659 | *IP-Adresse: $3 |
638 | 660 | *Sperr-ID: #$5 |
639 | 661 | </div>', |
— | — | @@ -878,14 +900,14 @@ |
879 | 901 | 'math_lexing_error' => "'Lexing'-Fehler", |
880 | 902 | 'math_syntax_error' => 'Syntaxfehler', |
881 | 903 | 'math_image_error' => 'die PNG-Konvertierung schlug fehl', |
882 | | -'math_bad_tmpdir' => 'Kann das Temporärverzeichnis für mathematische Formeln nicht anlegen oder beschreiben.', |
883 | | -'math_bad_output' => 'Kann das Zielverzeichnis für mathematische Formeln nicht anlegen oder beschreiben.', |
884 | | -'math_notexvc' => 'Das texvc-Programm kann nicht gefunden werden. Bitte math/README beachten.', |
| 904 | +'math_bad_tmpdir' => 'Das temporäre Verzeichnis für mathematische Formeln kann nicht angelegt oder beschrieben werden.', |
| 905 | +'math_bad_output' => 'Das Zielverzeichnis für mathematische Formeln kann nicht angelegt oder beschrieben werden.', |
| 906 | +'math_notexvc' => 'Das texvc-Programm wurde nicht gefunden. Bitte math/README beachten.', |
885 | 907 | 'prefs-personal' => 'Benutzerdaten', |
886 | 908 | 'prefs-rc' => 'Anzeige von „Letzte Änderungen“', |
887 | 909 | 'prefs-watchlist' => 'Beobachtungsliste', |
888 | | -'prefs-watchlist-days' => 'Anzahl der Tage, die die Beobachtungsliste standardmäßig umfassen soll:', |
889 | | -'prefs-watchlist-edits' => 'Anzahl der Einträge in der erweiterten Beobachtungsliste:', |
| 910 | +'prefs-watchlist-days' => 'Maximale Anzahl der Tage, die die Beobachtungsliste standardmäßig umfassen soll:', |
| 911 | +'prefs-watchlist-edits' => 'Maximale Anzahl der Einträge in der erweiterten Beobachtungsliste:', |
890 | 912 | 'prefs-misc' => 'Verschiedenes', |
891 | 913 | 'saveprefs' => 'Einstellungen speichern', |
892 | 914 | 'resetprefs' => 'Eingaben verwerfen', |
— | — | @@ -1937,8 +1959,12 @@ |
1938 | 1960 | 'showhidebots' => '(Bots $1)', |
1939 | 1961 | 'noimages' => 'Keine Dateien gefunden.', |
1940 | 1962 | |
1941 | | -'passwordtooshort' => 'Fehler bei der Passwort-Wahl: Es muss mindestens $1 Zeichen lang sein und darf nicht mit dem Benutzernamen identisch sein.', |
| 1963 | +# Bad image list |
| 1964 | +'bad_image_list' => 'Format: |
1942 | 1965 | |
| 1966 | +Nur Zeilen, die mit einem * anfangen, werden ausgewertet. Als erstes nach dem * muss ein Link auf ein unerwünschtes Bild stehen. |
| 1967 | +Darauf folgende Artikellinks in derselben Zeile definieren Ausnahmen, in deren Kontext das Bild trotzdem erscheinen darf.', |
| 1968 | + |
1943 | 1969 | # Metadata |
1944 | 1970 | 'metadata' => 'Metadaten', |
1945 | 1971 | 'metadata-help' => 'Diese Datei enthält weitere Informationen, die in der Regel von der Digitalkamera oder dem verwendeten Scanner stammen. Durch nachträgliche Bearbeitung der Originaldatei können einige Details verändert worden sein.', |
— | — | @@ -1968,6 +1994,7 @@ |
1969 | 1995 | 'exif-resolutionunit' => 'Maßeinheit der Auflösung', |
1970 | 1996 | 'exif-stripoffsets' => 'Bilddaten-Versatz', |
1971 | 1997 | 'exif-rowsperstrip' => 'Anzahl Zeilen pro Streifen', |
| 1998 | +'exif-stripbytecounts' => 'Bytes pro komprimiertem Streifen', |
1972 | 1999 | 'exif-jpeginterchangeformat' => 'Offset zu JPEG SOI', |
1973 | 2000 | 'exif-jpeginterchangeformatlength' => 'Größe der JPEG-Daten in Bytes', |
1974 | 2001 | 'exif-transferfunction' => 'Übertragungsfunktion', |
Index: branches/apiedit/phase3/languages/messages/MessagesEn.php |
— | — | @@ -788,8 +788,11 @@ |
789 | 789 | 'protectedinterface' => 'This page provides interface text for the software, and is locked to prevent abuse.', |
790 | 790 | 'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software. Changes to this page will affect the appearance of the user interface for other users.", |
791 | 791 | 'sqlhidden' => '(SQL query hidden)', |
792 | | -'cascadeprotected' => 'This page has been protected from editing, because it is included in the following {{PLURAL:$1|page|pages}}, which are protected with the "cascading" option turned on:', |
793 | | -'namespaceprotected' => "You do not have permission to edit pages in the '''$1''' namespace.", |
| 792 | +'cascadeprotected' => "This page has been protected from editing, because it is included in the following {{PLURAL:$1|page|pages}}, which are protected with the \"cascading\" option turned on: |
| 793 | +$2", |
| 794 | +'namespaceprotected' => "You do not have permission to edit pages in the '''$1''' namespace.", |
| 795 | +'customcssjsprotected' => "You do not have permission to edit this page, because it contains another user's personal settings.", |
| 796 | +'ns-specialprotected' => "Pages in the special namespace cannot be edited.", |
794 | 797 | |
795 | 798 | # Login and logout pages |
796 | 799 | 'logouttitle' => 'User logout', |
— | — | @@ -847,6 +850,7 @@ |
848 | 851 | 'nouserspecified' => 'You have to specify a username.', |
849 | 852 | 'wrongpassword' => 'Incorrect password entered. Please try again.', |
850 | 853 | 'wrongpasswordempty' => 'Password entered was blank. Please try again.', |
| 854 | +'passwordtooshort' => 'Your password is invalid or too short. It must have at least $1 characters and be different from your username.', |
851 | 855 | 'mailmypassword' => 'E-mail password', |
852 | 856 | 'passwordremindertitle' => 'Password reminder from {{SITENAME}}', |
853 | 857 | 'passwordremindertext' => 'Someone (probably you, from IP address $1) |
— | — | @@ -943,7 +947,7 @@ |
944 | 948 | |
945 | 949 | You can contact $1 or another [[{{MediaWiki:grouppage-sysop}}|administrator]] to discuss the block. |
946 | 950 | You cannot use the 'email this user' feature unless a valid email address is specified in your |
947 | | -[[Special:Preferences|account preferences]] and you have not been blocked from using it. |
| 951 | +[[Special:Preferences|account preferences]] and you have not been blocked from using it. |
948 | 952 | Your current IP address is $3, and the block ID is #$5. Please include either or both of these in any queries.", |
949 | 953 | 'autoblockedtext' => 'Your IP address has been automatically blocked because it was used by another user, who was blocked by $1. |
950 | 954 | The reason given is this: |
— | — | @@ -956,11 +960,18 @@ |
957 | 961 | You may contact $1 or one of the other |
958 | 962 | [[{{MediaWiki:grouppage-sysop}}|administrators]] to discuss the block. |
959 | 963 | |
960 | | -Note that you may not use the "e-mail this user" feature unless you have a valid e-mail address |
| 964 | +Note that you may not use the "e-mail this user" feature unless you have a valid e-mail address |
961 | 965 | registered in your [[Special:Preferences|user preferences]] and you have not been blocked from using it. |
962 | 966 | |
963 | 967 | Your block ID is $5. Please include this ID in any queries you make.', |
964 | | -'blockedoriginalsource' => "The source of '''$1''' is shown below:", |
| 968 | +'blockedtext-concise' => "$7, which matches your username or IP address, has been blocked by $1. The reason given was $2. The expiry time of this block is $6. To discuss the block, you can |
| 969 | +contact $1, or another administrator. You cannot use the 'email this user' feature unless a valid email address is specified in your account preferences and you have not been blocked from using it. |
| 970 | +Your current IP address is $3, and the block ID is #$5. Please include either or both of these in any queries.", |
| 971 | +'autoblockedtext-concise' => "Your IP address has recently been used by a user who was blocked. The block was made by $1. The reason given was $2. The expiry time of this block is $6. To |
| 972 | +discuss the block, you can contact $1, or another administrator. You cannot use the 'email this user' feature unless a valid email address is specified in your account preferences and you have not |
| 973 | +been blocked from using it. Your current IP address is $3, and the block ID is #$5. Please include either or both of these in any queries.", |
| 974 | +'blockedoriginalsource' => "The source of '''$1''' is |
| 975 | +shown below:", |
965 | 976 | 'blockededitsource' => "The text of '''your edits''' to '''$1''' is shown below:", |
966 | 977 | 'whitelistedittitle' => 'Login required to edit', |
967 | 978 | 'whitelistedittext' => 'You have to $1 to edit pages.', |
— | — | @@ -1052,7 +1063,10 @@ |
1053 | 1064 | 'nocreatetitle' => 'Page creation limited', |
1054 | 1065 | 'nocreatetext' => 'This site has restricted the ability to create new pages. |
1055 | 1066 | You can go back and edit an existing page, or [[Special:Userlogin|log in or create an account]].', |
1056 | | -'recreate-deleted-warn' => "'''Warning: You are recreating a page that was previously deleted.''' |
| 1067 | +'nocreate-loggedin' => 'You do not have permission to create new pages on this wiki.', |
| 1068 | +'permissionserrors' => "Permissions Errors", |
| 1069 | +'permissionserrorstext' => "You do not have permission to do that, for the following {{PLURAL:$1|reason|reasons}}:", |
| 1070 | +'recreate-deleted-warn' => "'''Warning: You are recreating a page that was previously deleted.''', |
1057 | 1071 | |
1058 | 1072 | You should consider whether it is appropriate to continue editing this page. |
1059 | 1073 | The deletion log for this page is provided here for convenience:", |
— | — | @@ -2096,6 +2110,7 @@ |
2097 | 2111 | 'movenologin' => 'Not logged in', |
2098 | 2112 | 'movenologintext' => 'You must be a registered user and [[Special:Userlogin|logged in]] |
2099 | 2113 | to move a page.', |
| 2114 | +'movenotallowed' => 'You do not have permission to move pages on this wiki.', |
2100 | 2115 | 'newtitle' => 'To new title:', |
2101 | 2116 | 'move-watch' => 'Watch this page', |
2102 | 2117 | 'movepagebtn' => 'Move page', |
— | — | @@ -2414,6 +2429,12 @@ |
2415 | 2430 | 'showhidebots' => '($1 bots)', |
2416 | 2431 | 'noimages' => 'Nothing to see.', |
2417 | 2432 | |
| 2433 | +# Bad image list |
| 2434 | +'bad_image_list' => 'The format is as follows: |
| 2435 | + |
| 2436 | +Only list items (lines starting with *) are considered. The first link on a line must be a link to a bad image. |
| 2437 | +Any subsequent links on the same line are considered to be exceptions, i.e. articles where the image may occur inline.', |
| 2438 | + |
2418 | 2439 | /* |
2419 | 2440 | Short names for language variants used for language conversion links. |
2420 | 2441 | To disable showing a particular link, set it to 'disable', e.g. |
— | — | @@ -2444,8 +2465,6 @@ |
2445 | 2466 | 'variantname-ku-latn' => 'ku-latn', # only translate this message to other languages if you have to change it |
2446 | 2467 | 'variantname-ku' => 'ku', # only translate this message to other languages if you have to change it |
2447 | 2468 | |
2448 | | -'passwordtooshort' => 'Your password is invalid or too short. It must have at least $1 characters and be different from your username.', |
2449 | | - |
2450 | 2469 | # Metadata |
2451 | 2470 | 'metadata' => 'Metadata', |
2452 | 2471 | 'metadata-help' => 'This file contains additional information, probably added from the digital camera or scanner used to create or digitize it. If the file has been modified from its original state, some details may not fully reflect the modified image.', |
Index: branches/apiedit/phase3/languages/messages/MessagesMl.php |
— | — | @@ -32,4 +32,46 @@ |
33 | 33 | NS_HELP_TALK => 'സഹായത്തിന്റെ_സംവാദം', |
34 | 34 | ); |
35 | 35 | |
| 36 | +$messages = array( |
| 37 | +# Days of the week |
| 38 | +'sunday' => 'ഞായര്', |
| 39 | +'monday' => 'തിങ്കള്', |
| 40 | +'tuesday' => 'ചൊവ്വ', |
| 41 | +'wednesday' => 'ബുധന്', |
| 42 | +'thursday' => 'വ്യാഴം', |
| 43 | +'friday' => 'വെള്ളി', |
| 44 | +'saturday' => 'ശനി', |
| 45 | +'sun' => 'ഞാ.', |
| 46 | +'mon' => 'തി.', |
| 47 | +'tue' => 'ചൊ.', |
| 48 | +'wed' => 'ബു.', |
| 49 | +'thu' => 'വ്യാ.', |
| 50 | +'fri' => 'വെ.', |
| 51 | +'sat' => 'ശ.', |
36 | 52 | |
| 53 | +# Month names |
| 54 | +'january' => 'ജനുവരി', |
| 55 | +'february' => 'ഫെബ്രുവരി', |
| 56 | +'march' => 'മാര്ച്ച്', |
| 57 | +'april' => 'ഏപ്രില്', |
| 58 | +'may_long' => 'മേയ്', |
| 59 | +'june' => 'ജൂണ്', |
| 60 | +'july' => 'ജൂലൈ', |
| 61 | +'august' => 'ഓഗസ്റ്റ്', |
| 62 | +'september' => 'സെപ്റ്റംബര്', |
| 63 | +'october' => 'ഒക്ടോബര്', |
| 64 | +'november' => 'നവംബര്', |
| 65 | +'december' => 'ഡിസംബര്', |
| 66 | +'jan' => 'ജനു.', |
| 67 | +'feb' => 'ഫെബ്രു.', |
| 68 | +'mar' => 'മാര്.', |
| 69 | +'apr' => 'ഏപ്രി.', |
| 70 | +'may' => 'മേയ്', |
| 71 | +'jun' => 'ജൂണ്', |
| 72 | +'jul' => 'ജൂലൈ', |
| 73 | +'aug' => 'ഓഗ.', |
| 74 | +'sep' => 'സെപ്റ്റം.', |
| 75 | +'oct' => 'ഒക്ടോ.', |
| 76 | +'nov' => 'നവം.', |
| 77 | +'dec' => 'ഡിസം.', |
| 78 | +); |
Index: branches/apiedit/phase3/languages/messages/MessagesHe.php |
— | — | @@ -655,8 +655,9 @@ |
656 | 656 | |
657 | 657 | החסימה בוצעה על־ידי \$1. הסיבה שניתנה לכך היא '''\$2'''. |
658 | 658 | |
659 | | -פקיעת החסימה: \$6<br /> |
660 | | -החסימה שבוצעה: \$7 |
| 659 | +* תחילת החסימה: \$8 |
| 660 | +* פקיעת החסימה: \$6 |
| 661 | +* החסימה שבוצעה: \$7 |
661 | 662 | |
662 | 663 | באפשרותכם ליצור קשר עם \$1 או עם כל אחד מ[[{{ns:project}}:מפעיל מערכת|מפעילי המערכת]] האחרים כדי לדון על החסימה. |
663 | 664 | אינכם יכולים להשתמש בתכונת \"שלחו דואר אלקטרוני למשתמש זה\" אם לא ציינתם כתובת דוא\"ל תקפה ב[[{{ns:special}}:Preferences|העדפות המשתמש שלכם]]. |
— | — | @@ -666,7 +667,8 @@ |
667 | 668 | |
668 | 669 | :\'\'\'$2\'\'\' |
669 | 670 | |
670 | | -פקיעת החסימה: $6 |
| 671 | +* תחילת החסימה: $8 |
| 672 | +* פקיעת החסימה: $6 |
671 | 673 | |
672 | 674 | באפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{ns:project}}:מפעיל מערכת|מפעילי המערכת]] האחרים כדי לדון על החסימה. |
673 | 675 | אינכם יכולים להשתמש בתכונת "שלחו דואר אלקטרוני למשתמש זה" אם לא ציינתם כתובת דוא"ל תקפה ב[[{{ns:special}}:Preferences|העדפות המשתמש שלכם]]. |
— | — | @@ -913,8 +915,8 @@ |
914 | 916 | 'prefs-personal' => 'פרטי המשתמש', |
915 | 917 | 'prefs-rc' => 'שינויים אחרונים', |
916 | 918 | 'prefs-watchlist' => 'רשימת המעקב', |
917 | | -'prefs-watchlist-days' => 'מספר הימים לתצוגה ברשימת המעקב:', |
918 | | -'prefs-watchlist-edits' => 'מספר העריכות לתצוגה ברשימת המעקב המורחבת:', |
| 919 | +'prefs-watchlist-days' => 'מספר הימים המירבי שיוצגו ברשימת המעקב:', |
| 920 | +'prefs-watchlist-edits' => 'מספר העריכות המירבי שיוצגו ברשימת המעקב המורחבת:', |
919 | 921 | 'prefs-misc' => 'שונות', |
920 | 922 | 'saveprefs' => 'שמור העדפות', |
921 | 923 | 'resetprefs' => 'שחזר ברירת מחדל', |
Index: branches/apiedit/phase3/maintenance/language/messages.inc |
— | — | @@ -376,6 +376,7 @@ |
377 | 377 | 'nouserspecified', |
378 | 378 | 'wrongpassword', |
379 | 379 | 'wrongpasswordempty', |
| 380 | + 'passwordtooshort', |
380 | 381 | 'mailmypassword', |
381 | 382 | 'passwordremindertitle', |
382 | 383 | 'passwordremindertext', |
— | — | @@ -1692,6 +1693,9 @@ |
1693 | 1694 | 'showhidebots', |
1694 | 1695 | 'noimages', |
1695 | 1696 | ), |
| 1697 | + 'badimagelist' => array( |
| 1698 | + 'bad_image_list', |
| 1699 | + ), |
1696 | 1700 | 'variantname-zh' => array( |
1697 | 1701 | 'variantname-zh-cn', |
1698 | 1702 | 'variantname-zh-tw', |
— | — | @@ -1717,9 +1721,6 @@ |
1718 | 1722 | 'variantname-ku-latn', |
1719 | 1723 | 'variantname-ku', |
1720 | 1724 | ), |
1721 | | - 'passwordtooshort' => array( |
1722 | | - 'passwordtooshort', |
1723 | | - ), |
1724 | 1725 | 'metadata' => array( |
1725 | 1726 | 'metadata', |
1726 | 1727 | 'metadata-help', |
— | — | @@ -2286,6 +2287,7 @@ |
2287 | 2288 | 'imagedeletion' => 'Image deletion', |
2288 | 2289 | 'browsediffs' => 'Browsing diffs', |
2289 | 2290 | 'newimages' => '', |
| 2291 | + 'badimagelist' => 'Bad image list', |
2290 | 2292 | 'variantname-zh' => "Short names for language variants used for language conversion links. |
2291 | 2293 | To disable showing a particular link, set it to 'disable', e.g. |
2292 | 2294 | 'variantname-zh-sg' => 'disable', |
— | — | @@ -2293,7 +2295,6 @@ |
2294 | 2296 | 'variantname-sr' => 'Variants for Serbian language', |
2295 | 2297 | 'variantname-kk' => 'Variants for Kazakh language', |
2296 | 2298 | 'variantname-ku' => 'Variants for Kurdish language', |
2297 | | - 'passwordtooshort' => '', |
2298 | 2299 | 'media-info' => 'Media information', |
2299 | 2300 | 'metadata' => 'Metadata', |
2300 | 2301 | 'exif' => 'EXIF tags', |
Property changes on: branches/apiedit/phase3 |
___________________________________________________________________ |
Modified: svnmerge-integrated |
2301 | 2302 | - /trunk/phase3:1-24498 |
2302 | 2303 | + /trunk/phase3:1-24515 |