From: Nikerabbit Date: Tue, 26 Jun 2012 12:02:15 +0000 (+0000) Subject: Merge "Made LogEventsList extend ContextSource and use local context instead of globa... X-Git-Tag: 1.31.0-rc.0~23229 X-Git-Url: https://git.heureux-cyclage.org/?p=lhc%2Fweb%2Fwiklou.git;a=commitdiff_plain;h=da4ef4fe22e1b28e38f4a1b0ded839ed215ec2e3;hp=9712def705ebd6aeaa166df8d5600922263db51f Merge "Made LogEventsList extend ContextSource and use local context instead of global variables there." --- diff --git a/includes/WikiPage.php b/includes/WikiPage.php index c203e4fbf4..76a9828269 100644 --- a/includes/WikiPage.php +++ b/includes/WikiPage.php @@ -1523,6 +1523,9 @@ class WikiPage extends Page { 'user_text' => $user->getName(), 'timestamp' => $now ) ); + # Bug 37225: use accessor to get the text as Revision may trim it. + # After trimming, the text may be a duplicate of the current text. + $text = $revision->getText(); // sanity; EditPage should trim already $changed = ( strcmp( $text, $oldtext ) != 0 ); @@ -1620,6 +1623,9 @@ class WikiPage extends Page { ) ); $revisionId = $revision->insertOn( $dbw ); + # Bug 37225: use accessor to get the text as Revision may trim it + $text = $revision->getText(); // sanity; EditPage should trim already + # Update the page record with revision data $this->updateRevisionOn( $dbw, $revision, 0 ); diff --git a/includes/filerepo/ForeignAPIRepo.php b/includes/filerepo/ForeignAPIRepo.php index 77b9d04dce..13de9e6b71 100644 --- a/includes/filerepo/ForeignAPIRepo.php +++ b/includes/filerepo/ForeignAPIRepo.php @@ -320,11 +320,11 @@ class ForeignAPIRepo extends FileRepo { return false; } + # @todo FIXME: Delete old thumbs that aren't being used. Maintenance script? $backend->prepare( array( 'dir' => dirname( $localFilename ) ) ); - $op = array( 'op' => 'create', 'dst' => $localFilename, 'content' => $thumb ); - if( !$backend->doOperation( $op )->isOK() ) { - wfRestoreWarnings(); + $params = array( 'dst' => $localFilename, 'content' => $thumb ); + if( !$backend->quickCreate( $params )->isOK() ) { wfDebug( __METHOD__ . " could not write to thumb path '$localFilename'\n" ); return $foreignUrl; } diff --git a/includes/filerepo/backend/lockmanager/LockManagerGroup.php b/includes/filerepo/backend/lockmanager/LockManagerGroup.php index b8308556c9..8c8c940a0a 100644 --- a/includes/filerepo/backend/lockmanager/LockManagerGroup.php +++ b/includes/filerepo/backend/lockmanager/LockManagerGroup.php @@ -23,13 +23,12 @@ /** * Class to handle file lock manager registration - * + * * @ingroup LockManager * @author Aaron Schulz * @since 1.19 */ class LockManagerGroup { - /** * @var LockManagerGroup */ @@ -61,7 +60,7 @@ class LockManagerGroup { /** * Register lock managers from the global variables - * + * * @return void */ protected function initFromGlobals() { @@ -115,4 +114,30 @@ class LockManagerGroup { } return $this->managers[$name]['instance']; } + + /** + * Get the default lock manager configured for the site. + * Returns NullLockManager if no lock manager could be found. + * + * @return LockManager + */ + public function getDefault() { + return isset( $this->managers['default'] ) + ? $this->get( 'default' ) + : new NullLockManager( array() ); + } + + /** + * Get the default lock manager configured for the site + * or at least some other effective configured lock manager. + * Throws an exception if no lock manager could be found. + * + * @return LockManager + * @throws MWException + */ + public function getAny() { + return isset( $this->managers['default'] ) + ? $this->get( 'default' ) + : $this->get( 'fsLockManager' ); + } } diff --git a/languages/messages/MessagesArc.php b/languages/messages/MessagesArc.php index 976a6631bb..650f199bd6 100644 --- a/languages/messages/MessagesArc.php +++ b/languages/messages/MessagesArc.php @@ -624,7 +624,7 @@ $1', 'searchall' => 'ܟܠ', 'showingresults' => "ܚܘܘܝܐ ܠܬܚܬ {{PLURAL:$1|'''1''' ܦܠܛܐ|'''$1''' ܦܠܛ̈ܐ}} ܫܪܐ ܡܢ ܡܢܝܢܐ '''$2'''.", 'showingresultsheader' => "{{PLURAL:$5|ܦܠܛܐ '''$1''' ܡܢ '''$3'''|ܦܠܛ̈ܐ '''$1 - $2''' ܡܢ '''$3'''}} ܠ'''$4'''", -'search-nonefound' => 'ܠܝܬ ܦܠܛ̈ܐ ܐܘܝ ܠܗܢܐ ܒܨܝܐ.', +'search-nonefound' => 'ܠܝܬ ܦܠܛ̈ܐ ܐܘܝܢ̈ܐ ܠܗܢܐ ܒܨܝܐ.', 'powersearch' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ', 'powersearch-legend' => 'ܒܨܝܐ ܡܬܩܕܡܢܐ', 'powersearch-ns' => 'ܒܨܝ ܒܚܩܠܬ̈ܐ:', diff --git a/languages/messages/MessagesAs.php b/languages/messages/MessagesAs.php index 01b2967e13..26c85a5ad1 100644 --- a/languages/messages/MessagesAs.php +++ b/languages/messages/MessagesAs.php @@ -576,7 +576,7 @@ $2', 'noemail' => '"$1" সদস্যজনৰ কোনো ই-মেইল ঠিকনা সঞ্চিত কৰা নাই।', 'noemailcreate' => 'আপুনি এটা সঠিক ই-মেইল ঠিকনা দিব লাগিব', 'passwordsent' => '"$1" ৰ ই-মেইল ঠিকনাত নতুন গুপ্তশব্দ এটা পঠোৱা হৈছে। অনুগ্ৰহ কৰি সেয়া পোৱাৰ পাছত পুনৰ প্ৰৱেশ কৰক।', -'blocked-mailpassword' => 'আপোনাৰ IP ঠিকনাৰ পৰা সম্পাদনা কৰা বাৰণ কৰা হৈছে, এনে অৱস্থাত দুৰ্ব্যৱহাৰ ৰোধ কৰিবলৈ গুপ্তশব্দ পুনঃউদ্ধাৰ কৰা সুবিধাতো বাতিল কৰা হৈছে।', +'blocked-mailpassword' => 'আপোনাৰ আইপি ঠিকনাৰ পৰা সম্পাদনা কৰা বাৰণ কৰা হৈছে, এনে অৱস্থাত দুৰ্ব্যৱহাৰ ৰোধ কৰিবলৈ গুপ্তশব্দ পুনঃউদ্ধাৰ কৰা সুবিধাতো বাতিল কৰা হৈছে।', 'eauthentsent' => 'সঞ্চিত ই-মেইল ঠিকনাত নিশ্চিতকৰণ ই-মেইল এখন পঠোৱা হৈছে। আৰু অন্যান্য ই-মেইল পঠোৱাৰ আগতে, আপোনাৰ সদস্যতাৰ নিশ্চিত কৰিবলৈ সেই ই-মেইলত দিয়া নিৰ্দেশনা আপুনি অনু্সৰণ কৰিব লাগিব।', 'throttled-mailpassword' => 'যোৱা {{PLURAL:$1|এঘণ্টাত|$1 ঘণ্টাত}} গুপ্তশব্দ পুনৰুদ্ধাৰ স্মাৰক পঠিওৱা হৈছে । @@ -596,15 +596,15 @@ $2', 'accountcreated' => "একাউণ্ট সৃষ্টি কৰা হ'ল", 'accountcreatedtext' => "$1ৰ কাৰণে সদস্য একাউণ্ট সৃষ্টি কৰা হ'ল।", 'createaccount-title' => '{{SITENAME}}ৰ কাৰণে একাউণ্ট সৃষ্টি কৰক।', -'createaccount-text' => 'আপোনাৰ ই-মেইল ঠিকনাৰ কাৰণে {{SITENAME}} ($4) ত "$2" নামৰ কোনোবাই, "$3" গুপ্তশব্দ দি সদস্যভুক্তি কৰিছে। অনুগ্ৰহ কৰি আপুনি প্ৰৱেশ কৰক আৰু গুপ্তশব্দটো সলনি কৰক। +'createaccount-text' => 'আপোনাৰ ই-মেইল ঠিকনাৰ কাৰণে {{SITENAME}} ($4)ত "$2" নামৰ কোনোবাই, "$3" গুপ্তশব্দ দি সদস্যভুক্তি কৰিছে। অনুগ্ৰহ কৰি আপুনি প্ৰৱেশ কৰক আৰু গুপ্তশব্দটো সলনি কৰক। যদি এইয়া ভুলতে হৈছে, তেনেহলে আপুনি এই বাৰ্তাটো অবজ্ঞা কৰিব পাৰে ।', -'usernamehasherror' => 'সদস্যনামত হেচ্‌ আখৰ থাকিব নোৱাৰে', +'usernamehasherror' => 'সদস্যনামত হেচ্‌ চিহ্ন থাকিব নোৱাৰে', 'login-throttled' => 'আপুনি স‍ম্প্ৰতি অজস্ৰবাৰ লগ্‌-ইনৰ প্ৰয়াস কৰিছে । অনুগ্ৰহ কৰি কিছু সময় অপেক্ষা কৰি আকৌ প্ৰয়াস কৰক ।', 'login-abort-generic' => 'আপোনাৰ প্ৰৱেশ অসফল হৈছে- বাতিল কৰা হ’ল', 'loginlanguagelabel' => 'ভাষা: $1', -'suspicious-userlogout' => 'আপোনাৰ প্ৰস্থানৰ অনুৰোধ বাতিল কৰা হৈছে কাৰণ হয়তো আপোনাৰ ব্ৰাউজাৰ অসম্পূৰ্ণ নতুবা পূবৰ্বতী তথ্য পঠাইছে ।', +'suspicious-userlogout' => 'আপোনাৰ প্ৰস্থানৰ অনুৰোধ বাতিল কৰা হৈছে কাৰণ হয়তো আপোনাৰ ব্ৰাউজাৰ অসম্পূৰ্ণ নতুবা পূৰ্বৱতী তথ্য পঠাইছে ।', # E-mail sending 'php-mail-error-unknown' => 'পি.এইছ.পি মেইল () কাৰ্যত অজ্ঞাত ত্ৰুটি ।', @@ -617,7 +617,7 @@ $2', 'resetpass_header' => 'গুপ্তশব্দ সলনি কৰক', 'oldpassword' => 'পুৰণি গুপ্তশব্দ:', 'newpassword' => 'নতুন গুপ্তশব্দ:', -'retypenew' => 'নতুন গুপ্তশব্দ আকৌ টাইপ কৰক', +'retypenew' => 'নতুন গুপ্তশব্দ আকৌ লিখক', 'resetpass_submit' => 'গুপ্তশব্দ বহাওক আৰু প্ৰৱেশ কৰক', 'resetpass_success' => 'আপোনাৰ গুপ্তশব্দ সফলতাৰে সলনি কৰা হৈছে, এতিয়া আপুনি প্ৰৱেশ কৰি আছে...', 'resetpass_forbidden' => 'গুপ্তশব্দ সলনি কৰিব নোৱাৰি', @@ -639,7 +639,7 @@ $2', 'passwordreset-capture' => 'ফলাফল ই-মেইলখন চাওক ?', 'passwordreset-capture-help' => "আপুনি এই ঘৰটো চিহ্নিত কৰিলে এই ই-মেইল (আৰু অস্থায়ী গুপ্তশব্দ) আপুনি দেখা পোৱাৰ লগতে সদস্যজনলৈও পঠোৱা হ'ব।", 'passwordreset-email' => 'ই-মেইল ঠিকনা:', -'passwordreset-emailtitle' => '{{SITENAME}} ত একাউণ্টৰ সবিশেষ তথ্য আছে ।', +'passwordreset-emailtitle' => '{{SITENAME}}ত একাউণ্টৰ সবিশেষ তথ্য আছে ।', 'passwordreset-emailtext-ip' => 'কোনোবাই (IP ঠিকনা $1 ৰ পৰা সম্ভৱত: আপুনিয়েই) {{SITENAME}} ($4) ৰ বাবে আপোনাৰ একাউণ্টৰ সবিশেষ তথ্য বিচাৰিছিল । ই-পত্ৰ ঠিকনাটোৰ লগত এই সদস্যৰ {{PLURAL:$3|একাউণ্ট|একাউণ্টবোৰ}} জড়িত হৈ আছে । $2 @@ -660,7 +660,7 @@ $2 'changeemail' => 'ই-মেইল ঠিকনা সলনি কৰক', 'changeemail-header' => 'একাউণ্টৰ ই-মেইল ঠিকনা সলনি কৰক', 'changeemail-text' => 'আপোনাৰ ই-মেইল ঠিকনা সলাবলৈ এই প্ৰপত্ৰখন পূৰাওক । এই সালসলনি নিশ্চিত কৰিবলৈ আপোনাৰ গুপ্তশব্দ দিব লাগিব ।', -'changeemail-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ্য ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।', +'changeemail-no-info' => 'এই পৃষ্ঠা প্ৰত্যক্ষ্ ভাৱে ঢুকি পাবলৈ আপুনি প্ৰৱেশ কৰিব লাগিব ।', 'changeemail-oldemail' => 'বৰ্তমানৰ ই-মেইল ঠিকনা:', 'changeemail-newemail' => 'নতুন ই-মেইল ঠিকনা:', 'changeemail-none' => '(নাই)', @@ -673,7 +673,7 @@ $2 'italic_sample' => 'হেলনীয়া পাঠ্য', 'italic_tip' => 'বেঁকা পাঠ্য', 'link_sample' => 'শিৰোনামা সংযোগ', -'link_tip' => 'ভিতৰুৱা সংযোগ', +'link_tip' => 'আভ্যন্তৰীণ সংযোগ', 'extlink_sample' => 'http://www.example.com শীৰ্ষক সংযোগ', 'extlink_tip' => 'বাহ্যিক সংযোগ (http:// উপসৰ্গ মনত ৰাখিব)', 'headline_sample' => 'শিৰোনামা পাঠ্য', @@ -719,7 +719,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে । আপুনি যেতিয়ালৈ [[Special:Preferences|সদস্য পছন্দ]] পৃষ্ঠাত আপোনাৰ ই-মেইল ঠিকনা নিদিয়ে তেতিয়ালৈ ’সদস্যক ই-মেইল পঠাওক’ সুবিধাতো ব্যৱহাৰ কৰিব নোৱাৰিব, আৰু আপোনাক এয়া কৰিবলৈ ৰোধ কৰা হোৱা নাই । আপোনাৰ এতিয়াৰ আই-পি ঠিকনা হল $3, আৰু আপোনাৰ অবৰোধ ক্ৰমিক হৈছে #$5 । এই বিষয়ে হোৱা আলোচনাত ইয়াৰ সবিশেষ সদৰী কৰে যেন।", -'autoblockedtext' => "আপোনাৰ আই-পি ঠিকনা নিজে নিজে অৱৰোধিত হৈছে, কাৰণ ইয়াক কোনোবাই ব্যৱহাৰ কৰি থাকোতে $1 ৰ দ্বাৰা অৱৰোধ কৰা হৈছে। +'autoblockedtext' => "আপোনাৰ আই-পি ঠিকনা নিজে নিজে অৱৰোধিত হৈছে, কাৰণ ইয়াক কোনোবাই ব্যৱহাৰ কৰি থাকোতে $1ৰ দ্বাৰা অৱৰোধ কৰা হৈছে। ইয়াৰ বাবে দিয়া কাৰণ হৈছে: :''$2'' @@ -728,11 +728,11 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে । * অৱৰোধ সমাপ্তি: $6 * অৱৰোধ কৰা হৈছে: $7 -আপুনি এই অবৰোধৰ বিষয়ে আলোচনা কৰিবলৈ $1 বা [[{{MediaWiki:Grouppage-sysop}}|প্ৰবন্ধক]]ৰ লগত সম্পৰ্ক স্থাপন কৰিব পাৰে । +আপুনি এই অবৰোধৰ বিষয়ে আলোচনা কৰিবলৈ $1 বা [[{{MediaWiki:Grouppage-sysop}}|প্ৰশাসক]]ৰ লগত সম্পৰ্ক স্থাপন কৰিব পাৰে । আপুনি যেতিয়ালৈ [[Special:Preferences|সদস্য পছন্দ]] পৃষ্ঠাত আপোনাৰ ই-মেইল ঠিকনা নিদিয়ে তেতিয়ালৈ ’সদস্যক ই-মেইল পঠাওক’ সুবিধাতো ব্যৱহাৰ কৰিব নোৱাৰে। আপোনাক এয়া কৰিবলৈ ৰোধ কৰা হোৱা নাই । -অপোনাৰ এতিয়াৰ IP ঠিকনা হৈছে $3, অৰু আপোনাৰ অবৰোধ ক্ৰমিক হৈছে $5 । -এই বিষয়ে হোৱা আলোচনাত ইয়াক ব্যৱহাৰ কৰিবলৈ অনুৰোধ কৰা হল।", +আপোনাৰ এতিয়াৰ আই পি ঠিকনা হৈছে $3, আৰু আপোনাৰ অৱৰোধ ক্ৰমিক হৈছে $5 । +এই বিষয়ে হোৱা আলোচনাত ইয়াক ব্যৱহাৰ কৰিবলৈ অনুৰোধ কৰা হ’ল।", 'blockednoreason' => 'কাৰণ দিয়া নাই', 'whitelistedittext' => 'সম্পাদনা কৰিবলৈ $1 কৰক ।', 'confirmedittext' => 'সম্পাদনা কৰাৰ আগতে আপুনি আপোনাৰ ই-মেইল ঠিকনাটো প্ৰমানিত কৰিব লাগিব। @@ -743,8 +743,8 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে । 'loginreqlink' => 'প্ৰৱেশ', 'loginreqpagetext' => 'অন্যান্য পৃষ্ঠা চাবলৈ আপুনি $1 কৰিব লাগিব।', 'accmailtitle' => "গুপ্তশব্দ পঠোৱা হ'ল।", -'accmailtext' => "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিক ভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2-লৈ পঠোৱা হ'ল । -এই নতুন একাউন্টত প্ৰৱেশ কৰি ''[[Special:ChangePassword|change password]]'' পৃষ্ঠাখনত গুপ্তশব্দতো সলনি কৰি ল’ব পাৰিব ।", +'accmailtext' => "[[User talk:$1|$1]]-ৰ কাৰণে যাদৃচ্ছিক ভাৱে উৎপন্ন কৰা গুপ্তশব্দ $2লৈ পঠোৱা হ'ল । +এই নতুন একাউন্টত প্ৰৱেশ কৰি ''[[Special:ChangePassword|গুপ্তশব্দ সলনি কৰক]]'' পৃষ্ঠাখনত গুপ্তশব্দতো সলনি কৰি ল’ব পাৰিব ।", 'newarticle' => '(নতুন)', 'newarticletext' => "আপুনি বিচৰা প্ৰবন্ধটো বিচাৰি পোৱা নগ'ল। @@ -796,7 +796,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে । তথাপি যদি নহয় [[Special:UserLogout|প্ৰস্থান]] কৰি আকৌ প্ৰৱেশ কৰক ।", 'session_fail_preview_html' => "'''দুঃখিত! চেচন ডাটা হেৰাই যোৱাৰ কাৰণে আপোনাৰ সম্পাদনা কৃতকাৰ্য্য নহ'ল ।''' -''যিহেতু {{SITENAME}}-ত নগ্ন এইচ-টি-এম-এল (raw HTML) সক্ৰিয় কৰা আছে, জাভাস্ক্ৰিপ্ট (Javasccript) আক্ৰমণৰ বিৰুদ্ধে সতৰ্কতাৰ খাতিৰত খচৰা আঁৰ কৰা হৈছে ।'' +''যিহেতু {{SITENAME}}ত নগ্ন এইচ-টি-এম-এল (raw HTML) সক্ৰিয় কৰা আছে, জাভাস্ক্ৰিপ্ট আক্ৰমণৰ বিৰুদ্ধে সতৰ্কতাৰ স্বাৰ্থত খচৰা আঁৰ কৰা হৈছে ।'' '''এইয়া যদি এটা বৈধ সম্পাদনা আছিল, তেনে আকৌ চেষ্টা কৰক ।''' তথাপি যদি নহয় [[Special:UserLogout|প্ৰস্থান]] কৰি আকৌ প্ৰৱেশ কৰক ।", @@ -806,8 +806,8 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে । 'edit_form_incomplete' => "'''এই সম্পাদনাৰ কিছু অংশ চাৰ্ভাৰলৈ নগ’ল; আপোনাৰ সম্পাদনা ঠিকে আছেনে পৰীক্ষা কৰি পুনৰ চেষ্টা কৰক ।'''", 'editing' => '$1 সম্পাদনা', 'creating' => '$1 পৃষ্ঠাখন আপুনি সৃষ্টি কৰি আছে', -'editingsection' => '$1 (বিভাগ) সম্পাদনা কৰি থকা হৈছে', -'editingcomment' => '$1 (নতুন বিভাগ) সম্পাদনা কৰি থকা হৈছে', +'editingsection' => '$1 (অনুচ্ছেদ) সম্পাদনা কৰি আছে', +'editingcomment' => '$1 (নতুন অনুচ্ছেদ) সম্পাদনা কৰি আছে', 'editconflict' => 'সম্পাদনা দ্বন্দ: $1', 'explainconflict' => "আপুনি সম্পাদনা আৰম্ভ কৰাৰ পাছত আন কোনোবাই এই পৃষ্ঠাখন সলনি কৰিলে। পাঠ্য-স্থানৰ উপৰ ভাগত এই পৃষ্ঠাৰ প্ৰচলিত পাঠ্য দিয়া হৈছে। @@ -851,8 +851,8 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে । 'template-semiprotected' => '(অৰ্ধ-সুৰক্ষিত)', 'hiddencategories' => 'এই পৃষ্ঠা {{PLURAL:$1|১-টা নিহিত শ্ৰেণীৰ|$1-টা নিহিত শ্ৰেণীৰ}} সদস্য:', 'nocreatetitle' => 'পৃষ্ঠা সৃষ্টি সীমিত', -'nocreatetext' => '{{SITENAME}} ত নতুন পৃষ্ঠা সৃষ্টিৰ ক্ষমতা সীমাবদ্ধ কৰা হৈছে। -আপুনি ঘূৰি গৈ বৰ্তমানে থকা পৃষ্ঠা এটা সম্পাদনা কৰিব পাৰে, বা [[Special:UserLogin| নতুন সদস্যভৰ্তি হওক/ প্ৰবেশ কৰক]] ।', +'nocreatetext' => '{{SITENAME}}ত নতুন পৃষ্ঠা সৃষ্টিৰ ক্ষমতা সীমাবদ্ধ কৰা হৈছে। +আপুনি ঘূৰি গৈ বৰ্তমানে থকা পৃষ্ঠা এটা সম্পাদনা কৰিব পাৰে, বা [[Special:UserLogin|নতুন সদস্যভৰ্তি হওক/ প্ৰবেশ কৰক]] ।', 'nocreate-loggedin' => 'নতুন পৃষ্ঠা সৃষ্টি কৰিবলৈ আপোনাৰ অনুমতি নাই ।', 'sectioneditnotsupported-title' => 'অনুচ্ছেদ সম্পাদনাৰ সমৰ্থন নাই', 'sectioneditnotsupported-text' => 'এই পৃষ্ঠাত অনুচ্ছেদ সম্পাদনাৰ সমৰ্থন নাই', @@ -864,7 +864,7 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে । এই পৃষ্ঠাটো সম্পাদনা কৰা উচিত হব নে নহয় আপুনি বিবেচনা কৰি চাওক। এই পৃষ্ঠাটো বিলোপ আৰু স্থানান্তৰ কৰাৰ অভিলেখ আপোনাৰ সুবিধাৰ্থে ইয়াত দিয়া হৈছে।", 'moveddeleted-notice' => "এই পৃষ্ঠা বাতিল কৰা হৈছে । -পৃষ্ঠাটিৰ বাতিল আৰু স্থানান্তৰ কৰা ল'গ তলত দিয়া হ'ল ।", +পৃষ্ঠাটিৰ বাতিল আৰু স্থানান্তৰ কৰা অভিলেখ তলত দিয়া হ'ল ।", 'log-fulllog' => 'সম্পূৰ্ণ অভিলেখ চাওক', 'edit-hook-aborted' => 'হুকৰ দ্বাৰা সম্পাদনা প্ৰত্যাখ্যান কৰা হৈছে । ইয়াৰ কোনো ব্যাখ্যা নাই ।', @@ -906,30 +906,30 @@ $1ৰ দ্বাৰা এই অৱৰোধ কৰা হৈছে । # Account creation failure 'cantcreateaccounttitle' => "একাউন্ট সৃষ্টি কৰা নহ'ব", -'cantcreateaccount-text' => "IP ঠিকনা ('''$1''') ৰ পৰা একাউণ্ট সৃষ্টিত [[User:$3|$3]] এ বাধা প্ৰদান কৰিছে । +'cantcreateaccount-text' => "আই পি ঠিকনা ('''$1''')ৰ পৰা একাউণ্ট সৃষ্টিত [[User:$3|$3]]’য়ে বাধা প্ৰদান কৰিছে । -$3 এ আগবঢ়োৱা ইয়াৰ কাৰণ হ’ল ''$2''", +$3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে ''$2''", # History pages 'viewpagelogs' => 'এই পৃষ্ঠাৰ অভিলেখ চাওক ।', 'nohistory' => 'এই পৃষ্ঠাৰ কোনো সম্পাদনাৰ ইতিহাস নাই।', -'currentrev' => 'শেহতীয়া ভাষ্য', +'currentrev' => 'শেহতীয়া সংস্কৰণ', 'currentrev-asof' => '$1 অনুযায়ী বৰ্তমান সংস্কৰণ', -'revisionasof' => '$1 ৰ সংস্কৰণ', -'revision-info' => '$1-লৈ $2-এ কৰা সংশোধন', +'revisionasof' => '$1ৰ সংস্কৰণ', +'revision-info' => '$1-লৈ $2ই কৰা সংশোধন', 'previousrevision' => '← আগৰ সংশোধন', 'nextrevision' => 'সদ্যসংশোধিত', 'currentrevisionlink' => 'শেহতীয়া ভাষ্য', 'cur' => 'বৰ্তমান', 'next' => 'পৰৱৰ্তী', -'last' => 'পূৰ্ববৰ্তী', +'last' => 'পূৰ্বৱৰ্তী', 'page_first' => 'প্ৰথম', 'page_last' => 'অন্তিম', 'histlegend' => "পাৰ্থক্য বাছনি: পাৰ্থক্য চাবলৈ সংকলনবোৰৰ সম্মুখত থকা ৰেডিঅ' বুটামবোৰ বাচনী কৰি এণ্টাৰ টিপক অথবা একেবাৰে তলত দিয়া বুটামতো ক্লিক কৰক
লিজেণ্ড: '''({{int:cur}})''' = বৰ্তমানৰ সংকলনৰ লগত পাৰ্থক্য, '''({{int:last}})''' = আগৰ সংকলনৰ লগত পাৰ্থক্য, '''{{int:minoreditletter}}'' = অগুৰুত্বপূৰ্ণ সম্পাদনা।", 'history-fieldset-title' => 'ইতিহাসত অনুসন্ধান কৰক', -'history-show-deleted' => 'মাথোঁ মচি পেলোৱা', +'history-show-deleted' => 'মাথোঁ বিলোপ কৰা', 'histfirst' => 'আটাইতকৈ পুৰণি', 'histlast' => 'শেহতীয়া', 'historysize' => '({{PLURAL:$1|১ বাইট|$1 বাইট}})', diff --git a/languages/messages/MessagesCs.php b/languages/messages/MessagesCs.php index f402ab1d0b..c66371fdbb 100644 --- a/languages/messages/MessagesCs.php +++ b/languages/messages/MessagesCs.php @@ -361,7 +361,7 @@ $messages = array( 'tog-hidepatrolled' => 'Skrýt patrolované editace v posledních změnách', 'tog-newpageshidepatrolled' => 'Skrýt patrolované stránky ze seznamu nových stránek', 'tog-extendwatchlist' => 'Na seznamu sledovaných stránek zobrazovat všechny změny, ne jen tu poslední', -'tog-usenewrc' => 'Používat zdokonalené poslední změny (vyžaduje JavaScript)', +'tog-usenewrc' => 'V posledních změnách a sledovaných stránkách seskupovat změny podle stránek (vyžaduje JavaScript)', 'tog-numberheadings' => 'Automaticky číslovat nadpisy', 'tog-showtoolbar' => 'Zobrazit panel nástrojů (vyžaduje JavaScript)', 'tog-editondblclick' => 'Editovat dvojklikem (JavaScript)', diff --git a/languages/messages/MessagesCy.php b/languages/messages/MessagesCy.php index 7192c7bad8..32949ab119 100644 --- a/languages/messages/MessagesCy.php +++ b/languages/messages/MessagesCy.php @@ -876,6 +876,8 @@ Cafodd yr argiau hyn eu hepgor.", 'node-count-exceeded-warning' => 'Mae nifer y nodau yn y dudalen yn ormod', 'expansion-depth-exceeded-category' => "Tudalennau â dyfnder ehangu tu hwnt i'r terfyn", 'expansion-depth-exceeded-warning' => "Mae dyfnder ehangu'r dudalen y tu hwnt i'r terfyn", +'parser-unstrip-loop-warning' => 'Wedi darganfod dolen dad-blicio (unstrip loop)', +'parser-unstrip-recursion-limit' => 'Wedi mynd dros ben y terfyn ar ddychweliad dad-blicio (unstrip recursion) ($1)', # "Undo" feature 'undo-success' => "Gellir dadwneud y golygiad. Byddwch gystal â gwirio'r gymhariaeth isod i sicrhau mai dyma sydd arnoch eisiau gwneud, ac yna rhowch y newidiadau ar gadw i gwblhau'r gwaith o ddadwneud y golygiad.", diff --git a/languages/messages/MessagesDa.php b/languages/messages/MessagesDa.php index 7e9bf1e22e..46944a242d 100644 --- a/languages/messages/MessagesDa.php +++ b/languages/messages/MessagesDa.php @@ -2856,6 +2856,7 @@ Dette skyldes sandsynligvis en henvisning til et sortlistet eksternt websted.', 'spambot_username' => 'MediaWiki spam-rensning', 'spam_reverting' => 'Sidste version uden henvisning til $1 gendannet.', 'spam_blanking' => 'Alle versioner, som indeholdt henvisninger til $1, er renset.', +'spam_deleting' => 'Alle versioner indeholder henvisninger til $1, sletter', # Info page 'pageinfo-title' => 'Information om "$1"', diff --git a/languages/messages/MessagesDiq.php b/languages/messages/MessagesDiq.php index a39c436f0d..49b875c95c 100644 --- a/languages/messages/MessagesDiq.php +++ b/languages/messages/MessagesDiq.php @@ -1662,7 +1662,7 @@ wexta şima qayîl e yew peli re dosya bierzî, formanê cêrinan ra yewi bişux 'fileuploadsummary' => 'Xulasa:', 'filereuploadsummary' => 'Vurnayîşê dosyayî:', 'filestatus' => 'Weziyetê heqê telifiye:', -'filesource' => 'Çımey:', +'filesource' => 'Çıme:', 'uploadedfiles' => 'Dosyayê ke bar biye', 'ignorewarning' => 'Îkazi kebul meke u dosya reyna bar bike', 'ignorewarnings' => 'Îkazi kebul meke', diff --git a/languages/messages/MessagesHr.php b/languages/messages/MessagesHr.php index 7c9e5e261f..20a65da62e 100644 --- a/languages/messages/MessagesHr.php +++ b/languages/messages/MessagesHr.php @@ -15,6 +15,7 @@ * @author Dnik * @author Ex13 * @author Excaliboor + * @author FriedrickMILBarbarossa * @author Herr Mlinka * @author Kaganer * @author Luka Krstulovic @@ -2266,7 +2267,7 @@ Molim potvrdite svoju namjeru, da razumijete posljedice i da ovo radite u skladu 'actionfailed' => 'Radnja nije uspjela', 'deletedtext' => '"$1" je izbrisana. Vidi $2 za evidenciju nedavnih brisanja.', -'dellogpage' => 'Evidencija_brisanja', +'dellogpage' => 'Evidencija brisanja', 'dellogpagetext' => 'Dolje je popis nedavnih brisanja. Sva vremena su prema poslužiteljevom vremenu.', 'deletionlog' => 'evidencija brisanja', diff --git a/languages/messages/MessagesIt.php b/languages/messages/MessagesIt.php index 25ab632e69..675b0cb502 100644 --- a/languages/messages/MessagesIt.php +++ b/languages/messages/MessagesIt.php @@ -269,7 +269,7 @@ $messages = array( 'tog-hidepatrolled' => 'Nascondi le modifiche verificate nelle ultime modifiche', 'tog-newpageshidepatrolled' => "Nascondi le pagine verificate dall'elenco delle pagine più recenti", 'tog-extendwatchlist' => "Mostra tutte le modifiche agli osservati speciali, non solo l'ultima", -'tog-usenewrc' => 'Utilizza le ultime modifiche avanzate (richiede JavaScript)', +'tog-usenewrc' => 'Raggruppa le modifiche per pagina nelle ultime modifiche e negli osservati speciali (richiede JavaScript)', 'tog-numberheadings' => 'Numerazione automatica dei titoli di sezione', 'tog-showtoolbar' => 'Mostra barra degli strumenti di modifica (richiede JavaScript)', 'tog-editondblclick' => 'Modifica delle pagine tramite doppio clic (richiede JavaScript)', diff --git a/languages/messages/MessagesJa.php b/languages/messages/MessagesJa.php index cb2085ae4c..8f42292ac8 100644 --- a/languages/messages/MessagesJa.php +++ b/languages/messages/MessagesJa.php @@ -1757,7 +1757,7 @@ $1 {{PLURAL:$1|文字}}以下である必要があります。', 'recentchangeslinked-title' => '「$1」と関連する変更', 'recentchangeslinked-noresult' => '指定期間中に指定ページのリンク先に変更はありませんでした。', 'recentchangeslinked-summary' => "これは、指定したページからリンクされている(または指定したカテゴリに含まれている)ページへの最近の変更の一覧です。 -[[Special:Watchlist|自分のウォッチリスト]]にあるページは'''太字'''で表示されています。", +[[Special:Watchlist|自分のウォッチリスト]]にあるページは'''太字'''になります。", 'recentchangeslinked-page' => 'ページ名:', 'recentchangeslinked-to' => '代わりに、指定したページへのリンク元での変更を表示', diff --git a/languages/messages/MessagesKsh.php b/languages/messages/MessagesKsh.php index 0f2bd3f366..ca218f9483 100644 --- a/languages/messages/MessagesKsh.php +++ b/languages/messages/MessagesKsh.php @@ -3490,6 +3490,7 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e 'exif-copyrighted-true' => 'Häd_en Urhävverrääsch', 'exif-copyrighted-false' => 'Es en de Allmende (jemeinfrei, public domain)', +'exif-photometricinterpretation-2' => 'RJB', 'exif-photometricinterpretation-6' => 'YCbCr', 'exif-unknowndate' => 'Dattum onbikannt', @@ -3513,6 +3514,7 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e 'exif-colorspace-65535' => 'De Färve sin nit kallibreert', 'exif-componentsconfiguration-0' => 'Jidd_et nit', +'exif-componentsconfiguration-5' => 'J', 'exif-exposureprogram-0' => 'Nit faßjelaat', 'exif-exposureprogram-1' => 'Vun Hand', @@ -3851,6 +3853,17 @@ Wells Do jetz met en neu Version die Sigg widder neu aanläje?', 'size-megabytes' => '$1 MB', 'size-gigabytes' => '$1 GB', +# Bitrate units +'bitrate-bits' => '$1&nbps;bps', +'bitrate-kilobits' => '$1&nbps;Kbps', +'bitrate-megabits' => '$1&nbps;Mbps', +'bitrate-gigabits' => '$1&nbps;Gbps', +'bitrate-terabits' => '$1&nbps;Tbps', +'bitrate-petabits' => '$1&nbps;Pbps', +'bitrate-exabits' => '$1&nbps;Ebps', +'bitrate-zetabits' => '$1&nbps;Zbps', +'bitrate-yottabits' => '$1&nbps;Ybps', + # Live preview 'livepreview-loading' => 'Ben am Lade …', 'livepreview-ready' => 'Fädesch jelaade.', @@ -3911,7 +3924,7 @@ De könnts Ding Oppassliss ävver och [[Special:EditWatchlist|övver e Fomulaa m # Signatures 'signature' => '[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|Klaafe]])', -'timezone-utc' => 'UTC', +'timezone-utc' => 'UTC', # Core parser functions 'unknown_extension_tag' => '„$1“ es en zosäzlejje Kennzeichnung, die kenne mer nit.', diff --git a/languages/messages/MessagesKu_latn.php b/languages/messages/MessagesKu_latn.php index 5f6624b45a..77f25c1a0e 100644 --- a/languages/messages/MessagesKu_latn.php +++ b/languages/messages/MessagesKu_latn.php @@ -2022,7 +2022,7 @@ Ji kerema xwe zanibe ku tu bi rastî dixwazî vê rûpelê dîsa çêkî.", 'recreate' => 'Dîsa çêke', # action=purge -'confirm_purge_button' => 'Temam', +'confirm_purge_button' => 'Baş e', 'confirm-purge-top' => 'Bîra vê rûpelê jêbîbe ?', # Multipage image navigation diff --git a/languages/messages/MessagesLt.php b/languages/messages/MessagesLt.php index 35d40b9b10..ec52b886c4 100644 --- a/languages/messages/MessagesLt.php +++ b/languages/messages/MessagesLt.php @@ -1210,6 +1210,7 @@ Prašome patikrinti sąrašus.', 'prefs-beta' => 'Beta funkcijos', 'prefs-datetime' => 'Data ir laikas', 'prefs-labs' => 'Bandomosios funkcijos', +'prefs-user-pages' => 'Naudotojo puslapiai', 'prefs-personal' => 'Naudotojo profilis', 'prefs-rc' => 'Naujausi keitimai', 'prefs-watchlist' => 'Stebimų sąrašas', @@ -1854,7 +1855,7 @@ Informacija iš [$2 failo aprašymo puslapio] yra pateikiama žemiau.', 'statistics-pages-desc' => 'Visi puslapiai, tarp jų aptarimo, nukreipimų, ir kiti puslapiai.', 'statistics-files' => 'Įkelti failai', 'statistics-edits' => 'Puslapių redagavimų skaičius nuo {{SITENAME}} sukūrimo', -'statistics-edits-average' => 'Vidutinis redakcijų kiekis puslapiui', +'statistics-edits-average' => 'Vidutinis puslapių keitimų kiekis', 'statistics-views-total' => 'Iš viso peržiūrų', 'statistics-views-total-desc' => 'Neegzistuojančių ir specialiųjų puslapių parodymai neįtraukti', 'statistics-views-peredit' => 'Peržiūrų skaičius puslapio versijai', @@ -2792,7 +2793,7 @@ Išsaugokite jį savo kompiuteryje ir įkelkite jį čia.', 'tooltip-search' => 'Ieškoti šiame projekte', 'tooltip-search-go' => 'Eiti į puslapį su tokiu pavadinimu, jei toks yra', 'tooltip-search-fulltext' => 'Ieškoti puslapių su šiuo tekstu', -'tooltip-p-logo' => 'Pradinis puslapis', +'tooltip-p-logo' => 'Eiti į pradinį puslapį', 'tooltip-n-mainpage' => 'Eiti į pradinį puslapį', 'tooltip-n-mainpage-description' => 'Eiti į pradinį puslapį', 'tooltip-n-portal' => 'Apie projektą, ką galima daryti, kur ką rasti', @@ -2866,6 +2867,7 @@ Leidžia pridėti atmetimo priežastį komentaruose', 'spambot_username' => 'MediaWiki reklamų šalinimas', 'spam_reverting' => 'Atkuriama į ankstesnę versiją, neturinčios nuorodų į $1', 'spam_blanking' => 'Visos versijos turėjo nuorodų į $1, išvaloma', +'spam_deleting' => 'Visos versijos turėjo nuorodų į $1, ištrinama', # Info page 'pageinfo-title' => '„$1“ informacija', @@ -3706,29 +3708,44 @@ Paveikslėliai yra rodomi pilna raiška, kiti failų tipai paleidžiami tiesiogi 'newuserlog-byemail' => 'slaptažodis nusiųstas elektroniniu paštu', # Feedback +'feedback-bugornote' => 'Jei jūs esate pasirengę aprašyti techninę problemą išsamiau, [$1 praneškite apie programinę klaidą]. +Kitu atveju, galite naudotis žemiau esančia paprastesne forma. Jūsų komentaras bus įtrauktas į puslapį „[$3 $2]“, kartu su jūsų naudotojo vardu ir jūsų naudojama naršykle.', 'feedback-subject' => 'Tema:', 'feedback-message' => 'Pranešimas:', 'feedback-cancel' => 'Atšaukti', 'feedback-submit' => 'Siųsti Atsiliepimą', 'feedback-adding' => 'Pridedamas atsiliepimas į puslapį ...', +'feedback-error1' => 'Klaida: Neatpažįstamas rezultatas iš API', 'feedback-error2' => 'Klaida: Redagavimas nepavyko', +'feedback-error3' => 'Klaida: Jokio atsakymo iš API', +'feedback-thanks' => 'Ačiū! Jūsų atsiliepimas buvo užregistruotas puslapyje „[$2 $1]“.', 'feedback-close' => 'Atlikta', +'feedback-bugcheck' => 'Puiku! Tiesiog patikrinkite, ar tai ne viena [$1 jau žinomų klaidų].', +'feedback-bugnew' => 'Patikrinau. Pranešti apie naują klaidą', # API errors 'api-error-badaccess-groups' => 'Jums neleidžiama įkelti failus į šią wiki.', 'api-error-copyuploaddisabled' => 'Siuntimas pagal URL yra išjungtas šiame serveryje.', 'api-error-duplicate-popup-title' => 'Dubliuoti {{PLURAL:$1|failą|failus}}', 'api-error-empty-file' => 'Pateikta failas buvo tuščias.', +'api-error-emptypage' => 'Kurti naujus, tuščius puslapius neleidžiama.', +'api-error-fetchfileerror' => 'Vidinė klaida: Kažkas nutiko gaunant failą.', 'api-error-file-too-large' => 'Failą, kurį pateikėte buvo per didelis.', 'api-error-filename-tooshort' => 'Failo vardas yra per trumpas.', 'api-error-filetype-banned' => 'Šis failų tipas yra uždraustas.', +'api-error-filetype-missing' => 'Failas neturi galūnės.', +'api-error-hookaborted' => 'Pakeitimą, kurį bandėte atlikti, nutraukė priedas.', 'api-error-http' => 'Vidinė klaida: nepavyko prisijungti prie serverio.', 'api-error-illegal-filename' => 'Failo vardas neleidžiamas.', 'api-error-invalid-file-key' => 'Vidinė klaida: failas nerastas saugykloje.', +'api-error-missingresult' => 'Vidinė klaida: nepavyko nustatyti, ar pavyko nukopijuoti.', 'api-error-mustbeloggedin' => 'Jūs turite būti prisijungęs kad galėtumėte įkelti failus.', 'api-error-mustbeposted' => 'Vidinė klaida: prašymas reikalauja HTTP POST.', +'api-error-noimageinfo' => 'Įkelti pavyko, bet serveris nepateikė mums jokios informacijos apie failą.', 'api-error-ok-but-empty' => 'Vidinė klaida: nėra atsakymo iš serverio.', 'api-error-overwrite' => 'Perrašymas esamą failą neleidžiamas.', +'api-error-stashfailed' => 'Vidinė klaida: serveriui nepavyko išsaugoti laikinąjį failą.', +'api-error-timeout' => 'Serveris neatsakė per numatytą laiką.', 'api-error-unclassified' => 'Įvyko nežinoma klaida', 'api-error-unknown-code' => 'Nežinoma klaida: " $1 "', 'api-error-unknown-error' => 'Vidinė klaida: kažkas nutiko bandant įkelti failą.', diff --git a/languages/messages/MessagesLus.php b/languages/messages/MessagesLus.php index 571f55a04b..8f09ec96b0 100644 --- a/languages/messages/MessagesLus.php +++ b/languages/messages/MessagesLus.php @@ -402,7 +402,7 @@ I [[Special:Preferences|{{SITENAME}}duhdàn]] siam danglam theihnghilh suh ang c 'yourname' => 'Hmangtuhming:', 'yourpassword' => 'Thurûk:', 'yourpasswordagain' => 'Thurûk ziak nawn leh rawh le:', -'remembermypassword' => 'He ka rangpuifanna hman mék (browser)-ah hian ka luhna (a rei berah ni {{PLURAL:$1||}}) min vawnsak rawh, thurûk ziah nawn ngai lo tùrin.', +'remembermypassword' => 'He ka rangpuifanna hman mék (browser)-ah hian ka luhna (a rei berah ni {{PLURAL:$1||}}$1) min vawnsak rawh, thurûk ziah nawn ngai lo tùrin.', 'securelogin-stick-https' => 'Luh hnuah HTTPS-ah hian chëng reng rawh.', 'yourdomainname' => 'I ram:', 'externaldberror' => 'Insawifiahna felfai lo a awm lo a nih loh vëk pawhin i pawnlam siangchan tihdanglam phalsak i ni lo a ni ang.', diff --git a/languages/messages/MessagesMg.php b/languages/messages/MessagesMg.php index 25f5f77314..56660e9908 100644 --- a/languages/messages/MessagesMg.php +++ b/languages/messages/MessagesMg.php @@ -1728,6 +1728,7 @@ Tsindrio eo amin'ny lohan-tsanganana raha hanova ny laharam-pisehoana.", 'listfiles_search_for' => 'Hitady anarana media :', 'imgfile' => 'rakitra', 'listfiles' => "Lisitran'ny rakitra", +'listfiles_thumb' => 'Sary nakelezina', 'listfiles_date' => 'Daty', 'listfiles_name' => 'Anarana', 'listfiles_user' => 'Mpikambana', @@ -1868,6 +1869,8 @@ Aza manadino manamarina raha tsy misy rohy makany amin'ny endrika hafa alohan'ny 'nmembers' => '{{PLURAL:$1|mpikambana|mpikambana}} $1', 'nrevisions' => '{{PLURAL:$1|fanovana|fanovana}} $1', 'nviews' => '{{PLURAL:}}Tsidika $1', +'nimagelinks' => "Ampiasain'ny pejy miisa{{PLURAL:}} $1", +'ntransclusions' => "Ampiasaina eo amin'ny pejy miisa $1 {{PLURAL:}}", 'specialpage-empty' => 'Tsy misy valiny ho aseho.', 'lonelypages' => 'Pejy manirery', 'lonelypagestext' => "Ireo pejy ireo dia tsy voarohy sy tsy ampiasain'ny pejin' ity wiki ity.", @@ -2283,6 +2286,8 @@ Vakio ny [[Special:Log/delete|laogim-pamafana]] ho an'ny lisitry ny famafana sy 'undelete-filename-mismatch' => "Tsy afaka averina ny santiônan'ilay rakitra tamin'ny $1 : tsy mifanaraka ny anaran-drakitra.", 'undelete-bad-store-key' => "Tsy mety averina ny santiônan'ilay rakitra tamin'ny $1 : mbola tsy tao ilay rakitra talohan'ny famafana.", 'undelete-cleanup-error' => 'Tsy fetezana teo am-pamafana ilay rakitra an-tahiry tsy miasa « $1 ».', +'undelete-missing-filearchive' => "Tsy afaka atao ny mamerina ilay rakitra tahiry miaraka amin'ny ID $1 satria tsy ao amin'ny banky angona izy io. +Mety efa naverina angamba izy io.", 'undelete-error-short' => 'Tsi-fetezana teo am-pamerenana ilay rakitra : $1', 'undelete-error-long' => 'Nisy tsi-fetezana nitranga teo am-pamerenana ilay rakitra : @@ -2444,6 +2449,8 @@ ny lisitry ny fisakanana sy fandrarana na tanteraka misy ankehitriny.", 'ipb-otherblocks-header' => '{{PLURAL:$1}}sakana hafa', 'ipb_cant_unblock' => 'Tsy fetezana : Marik ny fanakanana $1 tsy hita. Mety efa natao angamba ny fanalana sakana.', +'ipb_blocked_as_range' => "Hadisoana : tsy nosakanana manokana ny adiresy IP $1 ka noho izany tsy afaka alàna ny sakany. +Ao amin'ny laharana $2 izay afaka alàna sakana anefa izy io.", 'ip_range_invalid' => 'Tsy mety io IP io.', 'ip_range_toolarge' => 'Ny fanidiana laharana IP ngeza nohonny /$1 dia tsy azo atao.', 'blockme' => 'Sakano ahy', @@ -2534,6 +2541,7 @@ mifanaraka amin'ilay anarana vaovao. Azafady mba atambaro izay pejin-dresaka iza 'movepage-page-exists' => 'Efa misy ny pejy $1 ary tsy afaka soloina ho azy.', 'movepage-page-moved' => 'Voaova anarana lasa $2 ilay pejy $1.', 'movepage-page-unmoved' => 'Tsy afaka novaina anarana $2 ilay pejy $1.', +'movepage-max-pages' => 'Efa tratra ny isam-pejy farafahabetsany izay azo ovaina anarana (pejy $1){{PLURAL:}}, ka tsy ho voaova anarana ho azy intsony ny pejy hafa.', 'movelogpage' => 'Ny laogim-panisahana', 'movelogpagetext' => 'Lisitry ny pejy nafindra toerana.', 'movesubpage' => 'Zana-pejy{{PLURAL:$1||}} $1', @@ -2554,6 +2562,7 @@ Efa misy ny lahatsoratra hoe "[[:$1]]". Irinao ve ny hamafana azy mba hahafahana 'immobile-source-page' => 'Tsy azo ovaina anarana ity pejy ity.', 'immobile-target-page' => "Tsy afaka ovaina anarana makany amin'io lohateny io ilay pejy.", 'imagenocrossnamespace' => 'Tsy mety ovaina anarana makany amina anaran-tsehatra hafa afatsy rakitra ihany ny rakitra.', +'nonfile-cannot-move-to-file' => "Tsy afaka manova anaran'ny pejy tsy rakitra any amin'ny anaran-tsehatry ny rakitra.", 'imagetypemismatch' => "Tsy mifanaraka amin'ny karazany ny fanitaran'ity rakitra ity.", 'imageinvalidfilename' => 'Diso ny anaran-drakitra tanjona', 'fix-double-redirects' => "Hanao update ny fihodinana makany amin'ny lohateny fotony", @@ -2880,6 +2889,7 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray . 'exif-copyright' => 'Mpanana ilay copyright', 'exif-exifversion' => 'Santiôna EXIF', 'exif-flashpixversion' => 'Santiôna FlashPix', +'exif-colorspace' => 'Valan-doko', 'exif-pixelydimension' => 'Haavon-tsary ekena', 'exif-pixelxdimension' => 'Halalan-tsary ekena', 'exif-usercomment' => 'Diniky ny mpikambana', @@ -2887,8 +2897,10 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray . 'exif-datetimeoriginal' => 'Daty fangalana niaviana', 'exif-datetimedigitized' => 'Daty nanaovana numerisation', 'exif-subsectime' => 'Daty nanovana', +'exif-exposuretime' => 'Fitaona famakiana', 'exif-exposuretime-format' => '$1 s ($2 s)', 'exif-fnumber' => 'Isa F', +'exif-exposureprogram' => 'Fomba famakiana', 'exif-isospeedratings' => 'ISO', 'exif-aperturevalue' => 'Sanasana', 'exif-lightsource' => 'Loharanon-kazavana', diff --git a/languages/messages/MessagesNl.php b/languages/messages/MessagesNl.php index e959e47f55..14fba49f5d 100644 --- a/languages/messages/MessagesNl.php +++ b/languages/messages/MessagesNl.php @@ -2765,8 +2765,8 @@ Zie de [[Special:BlockList|blokkadelijst]] voor recente blokkades.', 'expiringblock' => 'vervalt op $1 om $2', 'anononlyblock' => 'alleen anoniemen', 'noautoblockblock' => 'autoblokkeren uitgeschakeld', -'createaccountblock' => 'registreren gebruikers geblokkeerd', -'emailblock' => 'e-mail geblokkeerd', +'createaccountblock' => 'registreren gebruikers uitgeschakeld', +'emailblock' => 'e-mail uitgeschakeld', 'blocklist-nousertalk' => 'kan eigen overlegpagina niet bewerken', 'ipblocklist-empty' => 'De blokkeerlijst is leeg.', 'ipblocklist-no-results' => 'Dit IP-adres of deze gebruikersnaam is niet geblokkeerd.', @@ -2790,7 +2790,7 @@ Zie ook de [[Special:BlockList|blokkadelijst]] voor de op dit moment actieve blo 'block-log-flags-anononly' => 'alleen anoniemen', 'block-log-flags-nocreate' => 'registreren gebruikers geblokkeerd', 'block-log-flags-noautoblock' => 'autoblokkeren is uitgeschakeld', -'block-log-flags-noemail' => 'e-mail geblokkeerd', +'block-log-flags-noemail' => 'e-mail uitgeschakeld', 'block-log-flags-nousertalk' => 'kan eigen overlegpagina niet bewerken', 'block-log-flags-angry-autoblock' => 'uitgebreide automatische blokkade ingeschakeld', 'block-log-flags-hiddenname' => 'gebruiker verborgen', @@ -3184,9 +3184,9 @@ U kunt wel de broncode bekijken.', Meestal wordt dit door een externe verwijzing op een zwarte lijst veroorzaakt.', 'spamprotectionmatch' => 'De volgende tekst veroorzaakte een alarm van de spamfilter: $1', 'spambot_username' => 'MediaWiki opschoning spam', -'spam_reverting' => 'Bezig met terugdraaien naar de laatste versie die geen verwijzing heeft naar $1', -'spam_blanking' => 'Alle wijzigingen met een verwijzing naar $1 worden verwijderd', -'spam_deleting' => 'Alle versies bevatten verwijzingen naar $1. Bezig met verwijderen...', +'spam_reverting' => 'Teruggedraaid naar de laatste versie die geen verwijzing bevat naar $1', +'spam_blanking' => 'Alle versies bevatten een verwijzing naar $1. Pagina leeggemaakt', +'spam_deleting' => 'Alle versies bevatten verwijzingen naar $1. Pagina verwijderd', # Info page 'pageinfo-title' => 'Informatie over "$1"', diff --git a/languages/messages/MessagesPam.php b/languages/messages/MessagesPam.php index db1ff10457..bc10284420 100644 --- a/languages/messages/MessagesPam.php +++ b/languages/messages/MessagesPam.php @@ -79,7 +79,7 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung', 'fri' => 'Vie', 'sat' => 'Sab', 'january' => 'Eneru', -'february' => 'Febreru', +'february' => 'Pebreru', 'march' => 'Marzu', 'april' => 'Abril', 'may_long' => 'Mayu', @@ -158,6 +158,9 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung', 'vector-action-protect' => 'Protectan/kambilan', 'vector-action-undelete' => 'Isubli/iurung ya pangabura', 'vector-action-unprotect' => 'Idayu ya panga-protecta', +'vector-view-view' => 'Basan', +'namespaces' => 'Karinanlagiu', +'variants' => 'Aliwapa', 'errorpagetitle' => 'Mali', 'returnto' => 'Magbalik king $1.', @@ -275,7 +278,7 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung', 'nstab-project' => 'Bulung ding proyektu', 'nstab-image' => 'Simpan (File)', 'nstab-mediawiki' => 'Mensahi', -'nstab-template' => 'Modelu (template)', +'nstab-template' => 'Ulma (template)', 'nstab-help' => 'Saup bulung', 'nstab-category' => 'Kategoriya', @@ -644,6 +647,7 @@ Ini ing sangkan a binie nang $3: ''$2''", Kabaldugan: (ngeni)=pamiyaliwa king salukuyan a bersion (bersion ngeni), (tauli)=pamiyaliwa ketang sadyang (tauling) bersion, M = malating edit.', 'history-fieldset-title' => 'Amlat da reng pamaglawe', +'history-show-deleted' => 'Milako yamu', 'histfirst' => 'Minunang dili', 'histlast' => 'Pekabayu', 'historysize' => '({{PLURAL:$1|1 a byte|byte}})', @@ -748,6 +752,7 @@ Gamitan me ing radio button column bang bukud mung detang miyalilan aniang o bay 'prevn' => 'minunang {{PLURAL:$1|$1}}', 'nextn' => 'tutuking {{PLURAL:$1|$1}}', 'viewprevnext' => 'Lon ($1 {{int:pipe-separator}} $2) ($3)', +'searchmenu-exists' => "'''Atin bulung a mikilagiung \"[[:\$1]]\" keng wiking ini.'''", 'searchhelp-url' => 'Help:Kalamnan', 'search-result-size' => '$1 ({{PLURAL:$2|1 a kataya|$2 kataya}})', 'search-result-score' => 'Kaugnayan (relevance): $1%', @@ -1294,6 +1299,7 @@ Also see [[Special:WantedCategories|wanted categories]].', # Special:LinkSearch 'linksearch' => 'Suglung palual', +'linksearch-line' => '$1 makasuglung ibat $2', # Special:ListUsers 'listusersfrom' => 'Ipakit la reng talagamit magumpisa king:', @@ -1583,7 +1589,7 @@ $1', 'nolinkshere-ns' => "Alang bulung a makatuglung king '''[[:$1]]''' ketang mepiling pirinan lagyu (namespace).", 'isredirect' => 'Bulung ning pamanaliling direksiun', 'istemplate' => 'misingit', -'isimage' => 'suglung king larawan', +'isimage' => 'Isuglung king larawan', 'whatlinkshere-prev' => '{{PLURAL:$1|minunang|minunang $1}}', 'whatlinkshere-next' => '{{PLURAL:$1|next|tutuking $1}}', 'whatlinkshere-links' => '← suglung', diff --git a/languages/messages/MessagesPms.php b/languages/messages/MessagesPms.php index e9d334c7dd..8e26cc30f5 100644 --- a/languages/messages/MessagesPms.php +++ b/languages/messages/MessagesPms.php @@ -48,7 +48,7 @@ $messages = array( 'tog-hidepatrolled' => "Stërma le modìfiche verificà ant j'ùltime modìfiche", 'tog-newpageshidepatrolled' => 'Stërma le pàgine verificà da la lista dle pàgine neuve', 'tog-extendwatchlist' => 'Slarga la funsion "ten sot euj" an manera che a la smon-a tute le modìfiche, nen mach l\'ùltima', -'tog-usenewrc' => "Deuvra j'ùltime modìfiche an bela forma (a-i va JavaScript)", +'tog-usenewrc' => "Deuvra j'ùltime modìfiche ameliorà (a-i và JavaScript)", 'tog-numberheadings' => 'Tìtoj ëd paràgraf
che as nùmero daspërlor', 'tog-showtoolbar' => "Mostra la bara dj'utiss (a-i va Javascript)", 'tog-editondblclick' => "Dobia sgnacà për modifiché l'artìcol
(a-i va JavaScript)", @@ -2635,7 +2635,7 @@ Che as lo salva ansima a sò ordinator e peui che a lo caria ambelessì.", 'importunknownsource' => "Sorgiss d'amportassion ëd na sòrt nen conossùa", 'importcantopen' => "L'archivi da amporté a l'é pa podusse deurbe", 'importbadinterwiki' => 'Liura antra wiki diferente cioca', -'importnotext' => 'Veujd ò con gnun test', +'importnotext' => 'Veujd o con gnun test', 'importsuccess' => 'Amportassion andaita a bon fin!', 'importhistoryconflict' => "A-i son dle stòrie dë sta pàgina-sì che as contradisso un-a con l'àutra (a peul esse che sta pàgina-sì a l'avèissa già amportala)", 'importnosources' => "A l'é pa staita definìa gnun-a sorgiss d'amportassion da na wiki diferenta, e carié mach le stòrie as peul nen.", @@ -3708,4 +3708,6 @@ Dësnò, a peule dovré ël formlari semplificà sì-sota. Sò coment a sarà gi 'duration-centuries' => '$1 {{PLURAL:$1|sécol|sécoj}}', 'duration-millennia' => '$1 {{PLURAL:$1|milenari|milenari}}', +# Unknown messages +'lockmanager-fail-svr-acquire' => 'As peul pa butesse le saradure an sël servent $1.', ); diff --git a/languages/messages/MessagesQqq.php b/languages/messages/MessagesQqq.php index aa091662a9..91f5572aa1 100644 --- a/languages/messages/MessagesQqq.php +++ b/languages/messages/MessagesQqq.php @@ -3359,7 +3359,12 @@ See also {{msg-mw|Anonuser}} and {{msg-mw|Siteusers}}.', 'nocredits' => 'This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}) but when there are no credits available. Note that the credits action is disabled by default (currently enabled on translatewiki.net).', # Spam protection -'spam_reverting' => '{{Identical|Revert}}', +'spam_reverting' => 'Edit summary for spam cleanup script. Used when a page is reverted because all later revisions contained a particular link. Parameters: +* $1 is a spammed domain name.', +'spam_blanking' => 'Edit summary for spam cleanup script. Used when a page is blanked (made to have no content, but still exist) because the script could not find an appropriate revision to set the page to. Parameters: +* $1 is a spammed domain name.', +'spam_deleting' => 'Edit summary for spam cleanup script. Used when a page is deleted because all revisions contained a particular link. Parameters: +* $1 is a spammed domain name.', # Info page 'pageinfo-title' => 'Page title for action=info. diff --git a/languages/messages/MessagesRoa_tara.php b/languages/messages/MessagesRoa_tara.php index 47048cc899..6a8fff5b08 100644 --- a/languages/messages/MessagesRoa_tara.php +++ b/languages/messages/MessagesRoa_tara.php @@ -30,7 +30,7 @@ $messages = array( 'tog-hidepatrolled' => "Scunne le cangiaminde condrollete jndr'à le cangiaminde recende", 'tog-newpageshidepatrolled' => "Scunne le pàggene tenute sotte condrolle da 'a liste de le pàggene nuève", 'tog-extendwatchlist' => "Spanne 'a liste de le pàggene condrollete pe fa vedè tutte le cangiaminde fatte, none sulamende l'urteme", -'tog-usenewrc' => "Ause le cangiaminde recende migliorate (richiede 'u JavaScript)", +'tog-usenewrc' => "Ause le cangiaminde recende migliorate (vole 'u JavaScript)", 'tog-numberheadings' => 'Testete auto-numerete', 'tog-showtoolbar' => "Fà vedè 'a barra de le cangiaminde (JavaScript)", 'tog-editondblclick' => "Cange le pàggene cu 'nu doppie clic (JavaScript)", diff --git a/languages/messages/MessagesRu.php b/languages/messages/MessagesRu.php index 579b1bb54d..00c7c55517 100644 --- a/languages/messages/MessagesRu.php +++ b/languages/messages/MessagesRu.php @@ -399,7 +399,7 @@ $messages = array( 'tog-hidepatrolled' => 'Скрывать патрулированные правки в списке свежих правок', 'tog-newpageshidepatrolled' => 'Скрывать отпатрулированные страницы в списке новых страниц', 'tog-extendwatchlist' => 'Расширенный список наблюдения, включающий все изменения, а не только последние', -'tog-usenewrc' => 'Использовать улучшенный список свежих изменений (требуется JavaScript)', +'tog-usenewrc' => 'Группировать изменения на странице свежих правок и в списке наблюдения (требуется JavaScript)', 'tog-numberheadings' => 'Автоматически нумеровать заголовки', 'tog-showtoolbar' => 'Показывать верхнюю панель инструментов при редактировании (JavaScript)', 'tog-editondblclick' => 'Править страницы по двойному щелчку (JavaScript)', diff --git a/languages/messages/MessagesTr.php b/languages/messages/MessagesTr.php index c7ba9d417e..62be8dbc03 100644 --- a/languages/messages/MessagesTr.php +++ b/languages/messages/MessagesTr.php @@ -714,8 +714,8 @@ Verilen sebep: ''$2''.", # Login and logout pages 'logouttext' => "'''Oturumu kapattınız.''' -Şimdi kimliğinizi belirtmeksizin {{SITENAME}} sitesini kullanmaya devam edebilirsiniz, ya da [[Special:UserLogin|yeniden oturum açabilirsiniz]] (ister aynı kullanıcı adıyla, ister başka bir kullanıcı adıyla). -Web tarayıcınızın önbelleğini temizleyene kadar bazı sayfalar sanki hala oturumunuz açıkmış gibi görünebilir.", +Şimdi kimliğinizi belirtmeksizin {{SITENAME}} sitesini kullanmaya devam edebilirsiniz ya da aynı kullanıcı adıyla ya da ister başka bir kullanıcı adıyla [[Special:UserLogin|yeniden oturum açabilirsiniz]]. +Tarayıcınızın önbelleğini temizleyene kadar bazı sayfalar sanki hâlâ oturumunuz açıkmış gibi görünebilir.", 'welcomecreation' => '== Hoş geldin, $1! == Hesabınız açıldı. diff --git a/languages/messages/MessagesWar.php b/languages/messages/MessagesWar.php index 8c6f606a91..ba70453937 100644 --- a/languages/messages/MessagesWar.php +++ b/languages/messages/MessagesWar.php @@ -70,7 +70,7 @@ $messages = array( 'tog-hidepatrolled' => 'Tago-a in mga gin-patrol o binantayan nga mga pagliwat ha mga dipala naiha nga mga kabag-ohan', 'tog-newpageshidepatrolled' => 'Tago-a an mga gin-patrol o binantayan nga mga pakli tikang han talaan hin bag-o nga pakli', 'tog-extendwatchlist' => 'Padako-a an angay timan-an agod makita an tanan nga kabag-ohan, diri la an gibag-ohi', -'tog-usenewrc' => 'Gamit hin mga gin-enhans o gindugngan nga gibag-ohi nga mga kabag-ohan (nakinahanglan hin JavaScript)', +'tog-usenewrc' => 'Gamita in mga gin-enhans o gindugngan nga gibag-ohi nga mga kabag-ohan (nakinahanglan hin JavaScript)', 'tog-numberheadings' => 'Auto-nga-ihap nga mga pagngaran', 'tog-showtoolbar' => 'Igpakita an edit toolbar (nakinahanglan hin JavaScript)', 'tog-editondblclick' => 'Igliwat in mga pakli ha doble nga klik (nakinahanglan hin JavaScript)', @@ -542,14 +542,18 @@ Kun pidliton mo an \"{{int:savearticle}}\" utro, an imo ginliwat in matitipig bi 'accmailtitle' => 'Ginpadara na an tigaman-pagsulod.', 'newarticle' => '(Bag-o)', 'newarticletext' => "Ginsunod mo an pakli nga waray pa kahihimo. Para ighimo an pakli, tikanga pagmakinilya ha kahon nga aada ha ubos (kitaa an [[{{MediaWiki:Helppage}}|nabulig nga pakli]] para han kadugangan nga pananabutan). Kun sayop an imo pagkanhi, igpidlit an imo kanan panngaykay (''browser'') '''balik''' (''back'') nga piridlitan.", +'noarticletext' => 'Waray yana nahasurat hini nga pakli. +Puyde hi ikaw [[Special:Search/{{PAGENAME}}|magbiling para han ngaran hini nga pakli]] ha iba nga mga pakli, +[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} binga an mga nanginginlabot nga mga log], +o [{{fullurl:{{FULLPAGENAME}}|action=edit}} igliwat ini nga pakli].', 'noarticletext-nopermission' => 'Ha yana waray surat ini nga pakli. Puydi nimo [[Special:Search/{{PAGENAME}}|pamilngon ini nga titulo han pakli]] ha iba nga mga pakli, o [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pamilngon ha mga kasumpay nga talaan].', 'userpage-userdoesnotexist-view' => "An akawnt han gumaramit ni ''$1'' in diri nakarehistro.", 'updated' => '(Ginbag-ohan)', 'note' => "'''Pahibaro:'''", -'previewnote' => "'''Hinumdumi nga pahiuna-nga-paggawas la ini.''' -An imo mga ginbag-o in waray pa katipig!", +'previewnote' => "'''Hinumdumi nga pahiuna-nga-paggawas pa la ini.''' +¡Waray pa katipig an imo mga ginbag-o!", 'editing' => 'Ginliliwat an $1', 'editingsection' => 'Ginliliwat an $1 (bahin)', 'editingcomment' => 'Ginliliwat an $1 (bag-o nga bahin)', @@ -1349,6 +1353,8 @@ An bisan ano nga masunod nga mga sumpay ha kapareho nga bagis in igtratrato nga # Metadata 'metadata' => 'Metadata', +'metadata-help' => 'Iní nga paypay mayda dugang nga pagpasabot, nga bangin gindugáng tikang han digital nga camera o iskaner nga gin-gamit paghimo o pag-digitar hini. +Kon an paypay ginliwat tikang han orihinal nga kamutangan, mayda mga detalye nga bangin diri magpakita han ginliwat nga paypay', 'metadata-fields' => 'An mga rumbay han hulagway han metadato nga nakatala dinhi nga mensahe in iglalakip ha padayag hin hulagway nga pakli kun an taramdan metadato in nakalukot. An iba in daan nakatago. * make @@ -1505,6 +1511,16 @@ An iba in daan nakatago. 'blankpage' => 'Blanko nga pakli', 'intentionallyblankpage' => 'Ini nga pakli gintuyo pagpabilin nga blanko.', +# External image whitelist +'external_image_whitelist' => '#Pabay-i ini nga linea nga sugad gud la
+#Igbutang in mga regular nga expresyon nga mga fragment (iton bahin nga ada ha butnga han //) ha ubos
+#Ini igpapadis han mga URL han mga ha gawas (gin-hotlink) nga mga hulagway
+#An mga nasakto igpapakita nga mga hulagway, kon diri, sumpay la ngadto han hulagway an igpapakita
+#Mga linea nga natikang hin  # ginta-tratar nga mga komento
+# Case-insensitive ini
+
+#Igbutang an mga regex nga fragment ha igbaw hini nga linea. Pabay-i ini nga linea nga sugad gud la
', + # Special:Tags 'tag-filter' => '[[Special:Tags|Tag]] panara:', 'tag-filter-submit' => 'Panara', diff --git a/languages/messages/MessagesYi.php b/languages/messages/MessagesYi.php index 957e17d7b2..a7319af4f3 100644 --- a/languages/messages/MessagesYi.php +++ b/languages/messages/MessagesYi.php @@ -1062,6 +1062,8 @@ $2 'revdelete-show-file-submit' => 'יא', 'revdelete-selected' => "'''{{PLURAL:$2|אויסדערוויילטע ווערסיע| אויסדערוויילטע ווערסיעס}} פון [[:$1]]:'''", 'logdelete-selected' => "'''{{PLURAL:$1| אויסדערוויילטע לאג אקציע|אויסדערוויילטע לאג אקציעס}}:'''", +'revdelete-text' => "'''אויסגעמעקטע רעוויזיעס און געשעענישן וועלן בלייבן אין דער בלאט היסטאריע און די לאגביכער, אבער טיילן פון זייער אינהאלט וועט ווערן אומגרייכלעך צום קהל. ''' +אנדערע סיסאפן אויף {{SITENAME}} וועלן נאך האבן צוטריט צום באהאלטענעם אינהאלט און קענען אים צוריקשטעלן דורך דעם זעלבן אייבערפלאך, אחוץ ווען מען שטעלט נאך באגרענעצונגען.", 'revdelete-suppress-text' => "באהאלטן זאל בלויז גענוצט ווערן '''נאר''' אין די פאלגענדע פעלער: * אויפדעקונג פון פריוואטקייט אינפארמאציע * ''היים אדרעסן, טעלעפאן נומערן, אדער סאשעל סעקיורעטי, א.א.וו.:'''", diff --git a/maintenance/copyFileBackend.php b/maintenance/copyFileBackend.php index 07f619994d..530b5cabb4 100644 --- a/maintenance/copyFileBackend.php +++ b/maintenance/copyFileBackend.php @@ -1,6 +1,6 @@ mDescription = "Copy all the files in one backend to another."; + $this->mDescription = "Copy files in one backend to another."; $this->addOption( 'src', 'Backend containing the source files', true, true ); $this->addOption( 'dst', 'Backend where files should be copied to', true, true ); $this->addOption( 'containers', 'Pipe separated list of containers', true, true ); - $this->addOption( 'fast', 'Skip SHA-1 checks on pre-existing files' ); + $this->addOption( 'subdir', 'Only do items in this child directory', false, true ); + $this->setBatchSize( 50 ); } public function execute() { $src = FileBackendGroup::singleton()->get( $this->getOption( 'src' ) ); $dst = FileBackendGroup::singleton()->get( $this->getOption( 'dst' ) ); - $containers = explode( '|', $this->getOption( 'containers' ) ); + $subDir = $this->getOption( rtrim( 'subdir', '/' ), '' ); + + $count = 0; foreach ( $containers as $container ) { - $this->output( "Doing container $container...\n" ); + if ( $subDir != '' ) { + $backendRel = "$container/$subDir"; + $this->output( "Doing container '$container', directory '$subDir'...\n" ); + } else { + $backendRel = $container; + $this->output( "Doing container '$container'...\n" ); + } - $srcPathsRel = $src->getFileList( - array( 'dir' => $src->getRootStoragePath() . "/$container" ) ); + $dir = $src->getRootStoragePath() . "/$backendRel"; + $srcPathsRel = $src->getFileList( array( 'dir' => $dir ) ); if ( $srcPathsRel === null ) { $this->error( "Could not list files in $container.", 1 ); // die } - foreach ( $srcPathsRel as $srcPathRel ) { - $srcPath = $src->getRootStoragePath() . "/$container/$srcPathRel"; - $dstPath = $dst->getRootStoragePath() . "/$container/$srcPathRel"; - if ( $dst->fileExists( array( 'src' => $dstPath, 'latest' => 1 ) ) ) { - if ( $this->hasOption( 'fast' ) ) { - $this->output( "Already have $dstPath.\n" ); - continue; // assume already copied... - } - $srcSha1 = $src->getFileSha1Base36( array( 'src' => $srcPath ) ); - $dstSha1 = $dst->getFileSha1Base36( array( 'src' => $dstPath ) ); - if ( $srcSha1 && $srcSha1 === $dstSha1 ) { - $this->output( "Already have $dstPath.\n" ); - continue; // already copied... - } + $batchPaths = array(); + foreach ( $srcPathsRel as $srcPathRel ) { + $batchPaths[$srcPathRel] = 1; // remove duplicates + if ( count( $batchPaths ) >= $this->mBatchSize ) { + $this->copyFileBatch( array_keys( $batchPaths ), $backendRel, $src, $dst ); + $batchPaths = array(); // done } + ++$count; + } + if ( count( $batchPaths ) ) { // left-overs + $this->copyFileBatch( array_keys( $batchPaths ), $backendRel, $src, $dst ); + $batchPaths = array(); // done + } - $fsFile = $src->getLocalReference( array( 'src' => $srcPath, 'latest' => 1 ) ); - if ( !$fsFile ) { - $this->error( "Could not get local copy of $srcPath.", 1 ); // die - } + if ( $subDir != '' ) { + $this->output( "Finished container '$container', directory '$subDir'.\n" ); + } else { + $this->output( "Finished container '$container'.\n" ); + } + } - $status = $dst->prepare( array( 'dir' => dirname( $dstPath ) ) ); - $status->merge( $dst->store( - array( 'src' => $fsFile->getPath(), 'dst' => $dstPath ), - array( 'nonLocking' => 1, 'nonJournaled' => 1 ) - ) ); - if ( !$status->isOK() ) { - print_r( $status->getErrorsArray() ); - $this->error( "Could not copy $srcPath to $dstPath.", 1 ); // die - } + $this->output( "Done [$count file(s)].\n" ); + } - $this->output( "Copied $srcPath to $dstPath.\n" ); + protected function copyFileBatch( + array $srcPathsRel, $backendRel, FileBackend $src, FileBackend $dst + ) { + $ops = array(); + $fsFiles = array(); + foreach ( $srcPathsRel as $srcPathRel ) { + $srcPath = $src->getRootStoragePath() . "/$backendRel/$srcPathRel"; + $dstPath = $dst->getRootStoragePath() . "/$backendRel/$srcPathRel"; + if ( $this->filesAreSame( $src, $dst, $srcPath, $dstPath ) ) { + $this->output( "Already have $srcPathRel.\n" ); + continue; // assume already copied... + } + // Note: getLocalReference() is fast for FS backends + $fsFile = $src->getLocalReference( array( 'src' => $srcPath, 'latest' => 1 ) ); + if ( !$fsFile ) { + $this->error( "Could not get local copy of $srcPath.", 1 ); // die + } + $fsFiles[] = $fsFile; // keep TempFSFile objects alive as needed + // Note: prepare() is usually fast for key/value backends + $status = $dst->prepare( array( 'dir' => dirname( $dstPath ) ) ); + if ( !$status->isOK() ) { + $this->error( print_r( $status->getErrorsArray(), true ) ); + $this->error( "Could not copy $srcPath to $dstPath.", 1 ); // die } + $ops[] = array( 'op' => 'store', + 'src' => $fsFile->getPath(), 'dst' => $dstPath, 'overwrite' => 1 ); } + + $status = $dst->doOperations( $ops, array( 'nonJournaled' => 1 ) ); + if ( !$status->isOK() ) { + $this->error( print_r( $status->getErrorsArray(), true ) ); + $this->error( "Could not copy file batch.", 1 ); // die + } else { + $this->output( "Copied these file(s):\n" . implode( "\n", $srcPathsRel ) . "\n\n" ); + } + } + + protected function filesAreSame( FileBackend $src, FileBackend $dst, $sPath, $dPath ) { + return ( + ( $src->fileExists( array( 'src' => $sPath, 'latest' => 1 ) ) + === $dst->fileExists( array( 'src' => $dPath, 'latest' => 1 ) ) // short-circuit + ) && ( $src->getFileSize( array( 'src' => $sPath, 'latest' => 1 ) ) + === $dst->getFileSize( array( 'src' => $dPath, 'latest' => 1 ) ) // short-circuit + ) && ( $src->getFileSha1Base36( array( 'src' => $sPath, 'latest' => 1 ) ) + === $dst->getFileSha1Base36( array( 'src' => $dPath, 'latest' => 1 ) ) + ) + ); } } diff --git a/tests/parser/parserTests.txt b/tests/parser/parserTests.txt index a3327b4887..236783adea 100644 --- a/tests/parser/parserTests.txt +++ b/tests/parser/parserTests.txt @@ -9504,6 +9504,328 @@ abc

!! end +!! test +DL Tests: No nesting: Multiple dd's +!! input +;x +:a +:b +!! result +
x +
a +
b +
+ +!! end + +!! test +DL Tests: Indentation: Regular +!! input +:i1 +::i2 +:::i3 +!! result +
i1 +
i2 +
i3 +
+
+
+ +!! end + +!! test +DL Tests: Indentation: Missing 1st level +!! input +::i2 +:::i3 +!! result +
i2 +
i3 +
+
+
+ +!! end + +!! test +DL Tests: Indentation: Multi-level indent +!! input +:::i3 +!! result +
i3 +
+
+
+ +!! end + +!! test +DL Tests: Nesting: Multi-level (Parsoid only) +!! options +disabled +!! input +;t1 :d1 +;;t2 ::d2 +;;;t3 :::d3 +!! result +
+
t1
+
d1
+
+
+
t2
+
:d2
+
+
+
t3
+
::d3
+ + +!! end + + +!! test +DL Tests: Nesting: Test 2 (Parsoid only) +!! options +disabled +!! input +;t1 +::d2 +!! result +
+
t1
+
+
+
d2
+ +!! end + + +!! test +DL Tests: Nesting: Test 3 +!! input +::;t3 +:::d3 +!! result +
t3 +
d3 +
+
+
+ +!! end + + +!! test +DL Tests: Nesting: Test 4 (Parsoid only) +!! options +disabled +!! input +:;t1 +::::d2 +!! result +
+
+
+
t1
+
+
+
+
+
d2
+ +!! end + + +!! test +DL Tests: Mixed Lists: Test 1 +!! input +:;* foo +::* bar +:; baz +!! result +
  • foo +
  • bar +
+
+
baz +
+
+ +!! end + + +!! test +DL Tests: Mixed Lists: Test 2 +!! input +*: d1 +*: d2 +!! result + + +!! end + + +!! test +DL Tests: Mixed Lists: Test 3 +!! input +*::: d1 +*::: d2 +!! result + + +!! end + + +!! test +DL Tests: Mixed Lists: Test 4 +!! input +*;d1 :d2 +*;d3 :d4 +!! result + + +!! end + + +!! test +DL Tests: Mixed Lists: Test 5 +!! input +*:d1 +*:: d2 +!! result + + +!! end + + +!! test +DL Tests: Mixed Lists: Test 6 +!! input +#*:d1 +#*::: d3 +!! result +
    • d1 +
      d3 +
      +
      +
      +
    +
+ +!! end + + +!! test +DL Tests: Mixed Lists: Test 7 +!! input +:* d1 +:* d2 +!! result +
  • d1 +
  • d2 +
+
+ +!! end + + +!! test +DL Tests: Mixed Lists: Test 8 +!! input +:* d1 +::* d2 +!! result +
  • d1 +
+
  • d2 +
+
+
+ +!! end + + +!! test +DL Tests: Mixed Lists: Test 9 +!! input +*;foo :bar +!! result + + +!! end + + +!! test +DL Tests: Mixed Lists: Test 10 +!! input +*#;foo :bar +!! result + + +!! end + + +!! test +DL Tests: Mixed Lists: Test 11 +!! input +*#*#;*;;foo :bar +*#*#;boo :baz +!! result + + + + +!! end + + +!! test +DL Tests: Weird Ones: Test 1 +!! input +*#;*::;; foo : bar (who uses this?) +!! result + + + + + +!! end + + TODO: more images more tables diff --git a/tests/qunit/QUnitTestResources.php b/tests/qunit/QUnitTestResources.php index 9e1e9b2303..adfd111214 100644 --- a/tests/qunit/QUnitTestResources.php +++ b/tests/qunit/QUnitTestResources.php @@ -27,6 +27,7 @@ return array( 'tests/qunit/suites/resources/mediawiki/mediawiki.util.test.js', 'tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.test.js', 'tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js', + 'tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js', ), 'dependencies' => array( 'jquery.autoEllipsis', @@ -49,6 +50,7 @@ return array( 'mediawiki.util', 'mediawiki.special.recentchanges', 'mediawiki.jqueryMsg', + 'mediawiki.language' ), 'position' => 'top', ) diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js new file mode 100644 index 0000000000..5d67a6ec37 --- /dev/null +++ b/tests/qunit/suites/resources/mediawiki/mediawiki.language.test.js @@ -0,0 +1,395 @@ +var liveLangData = mw.language.data.values; +QUnit.module( 'mediawiki.language', QUnit.newMwEnvironment({ + setup: function () { + // New independent copy for this test + mw.language.data = $.extend( {}, liveLangData, true ); + }, + teardown: function () { + // Restore original + mw.language.data = liveLangData; + } +}) ); + +QUnit.test( 'mw.language getData and setData', function ( assert ) { + QUnit.expect( 2 ); + + mw.language.setData( 'en', 'testkey', 'testvalue' ); + assert.equal( mw.language.getData( 'en', 'testkey' ), 'testvalue', 'Getter setter test for mw.language' ); + assert.equal( mw.language.getData( 'en', 'invalidkey' ), undefined, 'Getter setter test for mw.language with invalid key' ); +} ); + +function grammarTest( langCode, test ) { + // The test works only if the content language is opt.language + // because it requires [lang].js to be loaded. + QUnit.test( 'Grammar test for lang=' + langCode, function ( assert ) { + QUnit.expect( test.length ); + + for ( var i = 0 ; i < test.length; i++ ) { + assert.equal( + mw.language.convertGrammar( test[i].word, test[i].grammarForm ), + test[i].expected, + test[i].description + ); + } + }); +} + +var grammarTests = { + bs: [ + { + word: 'word', + grammarForm: 'instrumental', + expected: 's word', + description: 'Grammar test for instrumental case' + }, + { + word: 'word', + grammarForm: 'lokativ', + expected: 'o word', + description: 'Grammar test for lokativ case' + } + ], + + he: [ + { + word: "ויקיפדיה", + grammarForm: 'prefixed', + expected: "וויקיפדיה", + description: 'Duplicate the "Waw" if prefixed' + }, + { + word: "וולפגנג", + grammarForm: 'prefixed', + expected: "וולפגנג", + description: 'Duplicate the "Waw" if prefixed, but not if it is already duplicated.' + }, + { + word: "הקובץ", + grammarForm: 'prefixed', + expected: "קובץ", + description: 'Remove the "He" if prefixed' + }, + { + word: 'Wikipedia', + grammarForm: 'תחילית', + expected: '־Wikipedia', + description: 'GAdd a hyphen (maqaf) before non-Hebrew letters' + }, + { + word: '1995', + grammarForm: 'תחילית', + expected: '־1995', + description: 'Add a hyphen (maqaf) before numbers' + } + ], + + hsb: [ + { + word: 'word', + grammarForm: 'instrumental', + expected: 'z word', + description: 'Grammar test for instrumental case' + }, + { + word: 'word', + grammarForm: 'lokatiw', + expected: 'wo word', + description: 'Grammar test for lokatiw case' + } + ], + + dsb: [ + { + word: 'word', + grammarForm: 'instrumental', + expected: 'z word', + description: 'Grammar test for instrumental case' + }, + { + word: 'word', + grammarForm: 'lokatiw', + expected: 'wo word', + description: 'Grammar test for lokatiw case' + } + ], + + hy: [ + { + word: 'Մաունա', + grammarForm: 'genitive', + expected: 'Մաունայի', + description: 'Grammar test for genitive case' + }, + { + word: 'հետո', + grammarForm: 'genitive', + expected: 'հետոյի', + description: 'Grammar test for genitive case' + }, + { + word: 'գիրք', + grammarForm: 'genitive', + expected: 'գրքի', + description: 'Grammar test for genitive case' + }, + { + word: 'ժամանակի', + grammarForm: 'genitive', + expected: 'ժամանակիի', + description: 'Grammar test for genitive case' + } + ], + + fi: [ + { + word: 'talo', + grammarForm: 'genitive', + expected: 'talon', + description: 'Grammar test for genitive case' + }, + { + word: 'linux', + grammarForm: 'genitive', + expected: 'linuxin', + description: 'Grammar test for genitive case' + }, + { + word: 'talo', + grammarForm: 'elative', + expected: 'talosta', + description: 'Grammar test for elative case' + }, + { + word: 'pastöroitu', + grammarForm: 'partitive', + expected: 'pastöroitua', + description: 'Grammar test for partitive case' + }, + { + word: 'talo', + grammarForm: 'partitive', + expected: 'taloa', + description: 'Grammar test for partitive case' + }, + { + word: 'talo', + grammarForm: 'illative', + expected: 'taloon', + description: 'Grammar test for illative case' + }, + { + word: 'linux', + grammarForm: 'inessive', + expected: 'linuxissa', + description: 'Grammar test for inessive case' + } + ], + + ru: [ + { + word: 'тесть', + grammarForm: 'genitive', + expected: 'тестя', + description: 'Grammar test for genitive case' + }, + { + word: 'привилегия', + grammarForm: 'genitive', + expected: 'привилегии', + description: 'Grammar test for genitive case' + }, + { + word: 'установка', + grammarForm: 'genitive', + expected: 'установки', + description: 'Grammar test for genitive case' + }, + { + word: 'похоти', + grammarForm: 'genitive', + expected: 'похотей', + description: 'Grammar test for genitive case' + }, + { + word: 'доводы', + grammarForm: 'genitive', + expected: 'доводов', + description: 'Grammar test for genitive case' + }, + { + word: 'песчаник', + grammarForm: 'genitive', + expected: 'песчаника', + description: 'Grammar test for genitive case' + } + ], + + + hu: [ + { + word: 'Wikipédiá', + grammarForm: 'rol', + expected: 'Wikipédiáról', + description: 'Grammar test for rol case' + }, + { + word: 'Wikipédiá', + grammarForm: 'ba', + expected: 'Wikipédiába', + description: 'Grammar test for ba case' + }, + { + word: 'Wikipédiá', + grammarForm: 'k', + expected: 'Wikipédiák', + description: 'Grammar test for k case' + } + ], + + ga: [ + { + word: 'an Domhnach', + grammarForm: 'ainmlae', + expected: 'Dé Domhnaigh', + description: 'Grammar test for ainmlae case' + }, + { + word: 'an Luan', + grammarForm: 'ainmlae', + expected: 'Dé Luain', + description: 'Grammar test for ainmlae case' + }, + { + word: 'an Satharn', + grammarForm: 'ainmlae', + expected: 'Dé Sathairn', + description: 'Grammar test for ainmlae case' + } + ], + + uk: [ + { + word: 'тесть', + grammarForm: 'genitive', + expected: 'тестя', + description: 'Grammar test for genitive case' + }, + { + word: 'Вікіпедія', + grammarForm: 'genitive', + expected: 'Вікіпедії', + description: 'Grammar test for genitive case' + }, + { + word: 'установка', + grammarForm: 'genitive', + expected: 'установки', + description: 'Grammar test for genitive case' + }, + { + word: 'похоти', + grammarForm: 'genitive', + expected: 'похотей', + description: 'Grammar test for genitive case' + }, + { + word: 'доводы', + grammarForm: 'genitive', + expected: 'доводов', + description: 'Grammar test for genitive case' + }, + { + word: 'песчаник', + grammarForm: 'genitive', + expected: 'песчаника', + description: 'Grammar test for genitive case' + }, + { + word: 'Вікіпедія', + grammarForm: 'accusative', + expected: 'Вікіпедію', + description: 'Grammar test for accusative case' + } + ], + + sl: [ + { + word: 'word', + grammarForm: 'orodnik', + expected: 'z word', + description: 'Grammar test for orodnik case' + }, + { + word: 'word', + grammarForm: 'mestnik', + expected: 'o word', + description: 'Grammar test for mestnik case' + } + ], + + os: [ + { + word: 'бæстæ', + grammarForm: 'genitive', + expected: 'бæсты', + description: 'Grammar test for genitive case' + }, + { + word: 'бæстæ', + grammarForm: 'allative', + expected: 'бæстæм', + description: 'Grammar test for allative case' + }, + { + word: 'Тигр', + grammarForm: 'dative', + expected: 'Тигрæн', + description: 'Grammar test for dative case' + }, + { + word: 'цъити', + grammarForm: 'dative', + expected: 'цъитийæн', + description: 'Grammar test for dative case' + }, + { + word: 'лæппу', + grammarForm: 'genitive', + expected: 'лæппуйы', + description: 'Grammar test for genitive case' + }, + { + word: '2011', + grammarForm: 'equative', + expected: '2011-ау', + description: 'Grammar test for equative case' + } + ], + + la: [ + { + word: 'Translatio', + grammarForm: 'genitive', + expected: 'Translationis', + description: 'Grammar test for genitive case' + }, + { + word: 'Translatio', + grammarForm: 'accusative', + expected: 'Translationem', + description: 'Grammar test for accusative case' + }, + { + word: 'Translatio', + grammarForm: 'ablative', + expected: 'Translatione', + description: 'Grammar test for ablative case' + } + ] +}; + +$.each( grammarTests, function ( langCode, test ) { + if ( langCode === mw.config.get( 'wgUserLanguage' ) ) { + grammarTest( langCode, test ); + } +});