there is a maintenance script wrapOldPassword.php that can wrap all passwords in
PBKDF2 (or the hashing algorithm of your choice) if you don't want to wait for your
users to log in.
+* $wgImportSources can now either be a regular array, or an associative map
+ specifying subprojects on the interwiki map of the target wiki, or a mix of
+ the two. Existing configurations will still work.
=== New features in 1.24 ===
* Added a new hook, "WhatLinksHereProps", to allow extensions to annotate
*/
$wgGitRepositoryViewers = array(
'https://(?:[a-z0-9_]+@)?gerrit.wikimedia.org/r/(?:p/)?(.*)' =>
- 'https://git.wikimedia.org/commit/%r/%H',
+ 'https://git.wikimedia.org/tree/%r/%H',
'ssh://(?:[a-z0-9_]+@)?gerrit.wikimedia.org:29418/(.*)' =>
- 'https://git.wikimedia.org/commit/%r/%H',
+ 'https://git.wikimedia.org/tree/%r/%H',
);
/** @} */ # End of maintenance }
* Special:Import (for sysops). Since complete page history can be imported,
* these should be 'trusted'.
*
+ * This can either be a regular array, or an associative map specifying
+ * subprojects on the interwiki map of the target wiki, or a mix of the two,
+ * e.g.
+ * @code
+ * $wgImportSources = array(
+ * 'wikipedia' => array( 'cs', 'en', 'fr', 'zh' ),
+ * 'wikispecies',
+ * 'wikia' => array( 'animanga', 'brickipedia', 'desserts' ),
+ * );
+ * @endcode
+ *
* If a user has the 'import' permission but not the 'importupload' permission,
* they will only be able to run imports through this transwiki interface.
*/
* self::DELETED_COMMENT = File::DELETED_COMMENT,
* self::DELETED_USER = File::DELETED_USER
* @param User|null $user User object to check, or null to use $wgUser
+ * @param Title|null $title A Title object to check for per-page restrictions on,
+ * instead of just plain userrights
* @return bool
*/
- public static function userCanBitfield( $bitfield, $field, User $user = null ) {
+ public static function userCanBitfield( $bitfield, $field, User $user = null ,
+ Title $title = null
+ ) {
if ( $bitfield & $field ) { // aspect is deleted
if ( $user === null ) {
global $wgUser;
$permissions = array( 'deletedhistory' );
}
$permissionlist = implode( ', ', $permissions );
- wfDebug( "Checking for $permissionlist due to $field match on $bitfield\n" );
- return call_user_func_array( array( $user, 'isAllowedAny' ), $permissions );
+ if ( $title === null ) {
+ wfDebug( "Checking for $permissionlist due to $field match on $bitfield\n" );
+ return call_user_func_array( array( $user, 'isAllowedAny' ), $permissions );
+ } else {
+ $text = $title->getPrefixedText();
+ wfDebug( "Checking for $permissionlist on $text due to $field match on $bitfield\n" );
+ foreach( $permissions as $perm ) {
+ if ( $title->userCan( $perm, $user ) ) {
+ return true;
+ }
+ }
+ return false;
+ }
} else {
return true;
}
/** @var TitleValue A corresponding TitleValue object */
private $mTitleValue = null;
+
+ /** @var bool Would deleting this page be a big deletion? */
+ private $mIsBigDeletion = null;
// @}
/**
$errors[] = array( 'immobile-target-page' );
}
} elseif ( $action == 'delete' ) {
- if ( count( $this->getUserPermissionsErrorsInternal( 'edit',
- $user, $doExpensiveQueries, true ) )
- ) {
- // If they can't edit, they shouldn't delete.
- $errors[] = array( 'delete-cantedit' );
+ $tempErrors = $this->checkPageRestrictions( 'edit',
+ $user, array(), $doExpensiveQueries, true );
+ if( !$tempErrors ) {
+ $tempErrors = $this->checkCascadingSourcesRestrictions( 'edit',
+ $user, $tempErrors, $doExpensiveQueries, true );
+ }
+ if ( $tempErrors ) {
+ // If protection keeps them from editing, they shouldn't be able to delete.
+ $errors[] = array( 'deleteprotected' );
}
if ( $doExpensiveQueries && $wgDeleteRevisionsLimit
&& !$this->userCan( 'bigdelete', $user ) && $this->isBigDeletion()
$this->mEstimateRevisions = null;
$this->mPageLanguage = false;
$this->mDbPageLanguage = null;
+ $this->mIsBigDeletion = null;
}
/**
return false;
}
- $revCount = $this->estimateRevisionCount();
- return $revCount > $wgDeleteRevisionsLimit;
+ if ( $this->mIsBigDeletion === null ) {
+ $dbr = wfGetDB( DB_SLAVE );
+
+ $innerQuery = $dbr->selectSQLText(
+ 'revision',
+ '1',
+ array( 'rev_page' => $this->getArticleID() ),
+ __METHOD__,
+ array( 'LIMIT' => $wgDeleteRevisionsLimit + 1 )
+ );
+
+ $revCount = $dbr->query(
+ 'SELECT COUNT(*) FROM (' . $innerQuery . ') AS innerQuery',
+ __METHOD__
+ );
+ $revCount = $revCount->fetchRow();
+ $revCount = $revCount['COUNT(*)'];
+
+ $this->mIsBigDeletion = $revCount > $wgDeleteRevisionsLimit;
+ }
+
+ return $this->mIsBigDeletion;
}
/**
- * Get the approximate revision count of this page.
+ * Get the approximate revision count of this page.
*
* @return int
*/
}
public function show() {
- global $wgUseMediaWikiUIEverywhere;
- if ( $wgUseMediaWikiUIEverywhere ) {
+ if ( $this->getContext()->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
$out = $this->getOutput();
$out->addModuleStyles( array(
'mediawiki.ui.input',
}
public function show() {
- global $wgUseMediaWikiUIEverywhere;
- if ( $wgUseMediaWikiUIEverywhere ) {
+ if ( $this->getContext()->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
$out = $this->getOutput();
$out->addModuleStyles( array(
'mediawiki.ui.input',
}
public function show() {
- global $wgUseMediaWikiUIEverywhere;
- if ( $wgUseMediaWikiUIEverywhere ) {
+ if ( $this->getContext()->getConfig()->get( 'UseMediaWikiUIEverywhere' ) ) {
$out = $this->getOutput();
$out->addModuleStyles( array(
'mediawiki.ui.input',
'code' => 'cantedit',
'info' => "You can't protect this page because you can't edit it"
),
- 'delete-cantedit' => array(
+ 'deleteprotected' => array(
'code' => 'cantedit',
- 'info' => "You can't delete this page because you can't edit it"
+ 'info' => "You can't delete this page because it has been protected"
),
'badaccess-group0' => array(
'code' => 'permissiondenied',
* Get HTML for an info box with an icon.
*
* @param string $text Wikitext, get this with wfMessage()->plain()
- * @param string|bool $icon Icon name, file in skins/common/images. Default: false
+ * @param string|bool $icon Icon name, file in mw-config/images. Default: false
* @param string|bool $class Additional class name to add to the wrapper div. Default: false.
*
* @return string
public function getInfoBox( $text, $icon = false, $class = false ) {
$text = $this->parse( $text, true );
$icon = ( $icon == false ) ?
- '../skins/common/images/info-32.png' :
- '../skins/common/images/' . $icon;
+ 'images/info-32.png' :
+ 'images/' . $icon;
$alt = wfMessage( 'config-information' )->text();
return Html::infoBox( $text, $icon, $alt, $class, false );
<title><?php $this->outputTitle(); ?></title>
<?php echo $this->getCssUrl() . "\n"; ?>
<?php echo $this->getJQuery() . "\n"; ?>
- <?php echo Html::linkedScript( '../skins/common/config.js' ) . "\n"; ?>
+ <?php echo Html::linkedScript( 'config.js' ) . "\n"; ?>
</head>
<?php echo Html::openElement( 'body', array( 'class' => $this->getDir() ) ) . "\n"; ?>
<div id="mw-panel">
<div class="portal" id="p-logo">
- <a style="background-image: url(../skins/common/images/mediawiki.png);"
+ <a style="background-image: url(images/installer-logo.png);"
href="https://www.mediawiki.org/"
title="Main Page"></a>
</div>
<title><?php $this->outputTitle(); ?></title>
<?php echo $this->getCssUrl() . "\n"; ?>
<?php echo $this->getJQuery(); ?>
- <?php echo Html::linkedScript( '../skins/common/config.js' ); ?>
+ <?php echo Html::linkedScript( 'config.js' ); ?>
</head>
<body style="background-image: none">
protected function startLiveBox() {
$this->addHTML(
'<div id="config-spinner" style="display:none;">' .
- '<img src="../skins/common/images/ajax-loader.gif" /></div>' .
+ '<img src="images/ajax-loader.gif" /></div>' .
'<script>jQuery( "#config-spinner" ).show();</script>' .
'<div id="config-live-log">' .
'<textarea name="LiveLog" rows="10" cols="30" readonly="readonly">'
'config_wgRightsIcon' => '[license_button]',
) );
$styleUrl = $server . dirname( dirname( $this->parent->getUrl() ) ) .
- '/skins/common/config-cc.css';
+ '/mw-config/config-cc.css';
$iframeUrl = 'http://creativecommons.org/license/?' .
wfArrayToCgi( array(
'partner' => 'MediaWiki',
* This method outputs status information only if a debug handler was set.
* Any exceptions are caught and logged, but are not reported as output.
*
- * @param array $options
+ * @param array $options Map of parameters:
+ * - type : the job type (or false for the default types)
+ * - maxJobs : maximum number of jobs to run
+ * - maxTime : maximum time in seconds before stopping
+ * - throttle : whether to respect job backoff configuration
* @return array Summary response that can easily be JSON serialized
*/
public function run( array $options ) {
}
}
- // @codingStandardsIgnoreStart Long line that cannot be broken
/**
* Process attributes.
* Simple values can be stored as either a tag or attribute
* Often the initial "<rdf:Description>" tag just has all the simple
* properties as attributes.
*
+ * @codingStandardsIgnoreStart Long line that cannot be broken
* @par Example:
* @code
* <rdf:Description rdf:about="" xmlns:exif="http://ns.adobe.com/exif/1.0/" exif:DigitalZoomRatio="0/10">
* @endcode
+ * @codingStandardsIgnoreEnd
*
* @param array $attribs Array attribute=>value
* @throws MWException
*/
- // @codingStandardsIgnoreEnd
private function doAttribs( $attribs ) {
// first check for rdf:parseType attribute, as that can change
// how the attributes are interperted.
// If the page has a history, insert a warning
if ( $hasHistory ) {
- $revisions = $this->mTitle->estimateRevisionCount();
+ $title = $this->getTitle();
+
+ // The following can use the real revision count as this is only being shown for users that can delete
+ // this page.
+ // This, as a side-effect, also makes sure that the following query isn't being run for pages with a
+ // larger history, unless the user has the 'bigdelete' right (and is about to delete this page).
+ $dbr = wfGetDB( DB_SLAVE );
+ $revisions = $edits = (int)$dbr->selectField(
+ 'revision',
+ 'COUNT(rev_page)',
+ array( 'rev_page' => $title->getArticleID() ),
+ __METHOD__
+ );
+
// @todo FIXME: i18n issue/patchwork message
$this->getContext()->getOutput()->addHTML( '<strong class="mw-delete-warning-revisions">' .
wfMessage( 'historywarning' )->numParams( $revisions )->parse() .
'</strong>'
);
- if ( $this->mTitle->isBigDeletion() ) {
+ if ( $title->isBigDeletion() ) {
global $wgDeleteRevisionsLimit;
$this->getContext()->getOutput()->wrapWikiMsg( "<div class='error'>\n$1\n</div>\n",
array(
return $extract;
}
+
+ /**
+ * Returns the first few lines of the text
+ *
+ * @param string $text
+ * @param int $contextlines max number of returned lines
+ * @param int $contextchars average number of characters per line
+ * @return string
+ */
+ public function highlightNone( $text, $contextlines, $contextchars) {
+ $match = array();
+ $text = ltrim( $text ) . "\n"; // make sure the preg_match may find the last line
+ $text = str_replace( "\n\n", "\n", $text); // remove empty lines
+ preg_match( "/^(.*\n){0,$contextlines}/", $text , $match);
+ $text = htmlspecialchars( substr( trim( $match[0] ), 0, $contextlines * $contextchars ) ); // trim and limit to max number of chars
+ return str_replace( "\n", '<br>', $text );
+ }
}
// TODO: make highliter take a content object. Make ContentHandler a factory for SearchHighliter.
list( $contextlines, $contextchars ) = SearchEngine::userHighlightPrefs();
+
$h = new SearchHighlighter();
- if ( $wgAdvancedSearchHighlighting ) {
- return $h->highlightText( $this->mText, $terms, $contextlines, $contextchars );
+ if ( count( $terms ) > 0 ) {
+ if ( $wgAdvancedSearchHighlighting ) {
+ return $h->highlightText( $this->mText, $terms, $contextlines, $contextchars );
+ } else {
+ return $h->highlightSimple( $this->mText, $terms, $contextlines, $contextchars );
+ }
} else {
- return $h->highlightSimple( $this->mText, $terms, $contextlines, $contextchars );
+ return $h->highlightNone( $this->mText, $contextlines, $contextchars );
}
}
*/
class SpecialImport extends SpecialPage {
private $interwiki = false;
+ private $subproject;
+ private $fullInterwikiPrefix;
private $namespace;
private $rootpage = '';
private $frompage = '';
$this->setHeaders();
$this->outputHeader();
+ $this->getOutput()->addModules( 'mediawiki.special.import' );
+
$user = $this->getUser();
if ( !$user->isAllowedAny( 'import', 'importupload' ) ) {
throw new PermissionsError( 'import' );
if ( !$user->isAllowed( 'import' ) ) {
throw new PermissionsError( 'import' );
}
- $this->interwiki = $request->getVal( 'interwiki' );
- if ( !in_array( $this->interwiki, $this->getConfig()->get( 'ImportSources' ) ) ) {
+ $this->interwiki = $this->fullInterwikiPrefix = $request->getVal( 'interwiki' );
+ // does this interwiki have subprojects?
+ $importSources = $this->getConfig()->get( 'ImportSources' );
+ $hasSubprojects = array_key_exists( $this->interwiki, $importSources );
+ if ( !$hasSubprojects && !in_array( $this->interwiki, $importSources ) ) {
$source = Status::newFatal( "import-invalid-interwiki" );
} else {
- $this->history = $request->getCheck( 'interwikiHistory' );
- $this->frompage = $request->getText( "frompage" );
- $this->includeTemplates = $request->getCheck( 'interwikiTemplates' );
- $source = ImportStreamSource::newFromInterwiki(
- $this->interwiki,
- $this->frompage,
- $this->history,
- $this->includeTemplates,
- $this->pageLinkDepth );
+ if ( $hasSubprojects ) {
+ $this->subproject = $request->getVal( 'subproject' );
+ $this->fullInterwikiPrefix .= ':' . $request->getVal( 'subproject' );
+ }
+ if ( $hasSubprojects && !in_array( $this->subproject, $importSources[$this->interwiki] ) ) {
+ $source = Status::newFatal( "import-invalid-interwiki" );
+ } else {
+ $this->history = $request->getCheck( 'interwikiHistory' );
+ $this->frompage = $request->getText( "frompage" );
+ $this->includeTemplates = $request->getCheck( 'interwikiTemplates' );
+ $source = ImportStreamSource::newFromInterwiki(
+ $this->fullInterwikiPrefix,
+ $this->frompage,
+ $this->history,
+ $this->includeTemplates,
+ $this->pageLinkDepth );
+ }
}
} else {
$source = Status::newFatal( "importunknownsource" );
$reporter = new ImportReporter(
$importer,
$isUpload,
- $this->interwiki,
+ $this->fullInterwikiPrefix,
$this->logcomment
);
$reporter->setContext( $this->getContext() );
Xml::openElement( 'table', array( 'id' => 'mw-import-table-interwiki' ) ) .
"<tr>
<td class='mw-label'>" .
- Xml::label( $this->msg( 'import-interwiki-source' )->text(), 'interwiki' ) .
+ Xml::label( $this->msg( 'import-interwiki-sourcewiki' )->text(), 'interwiki' ) .
"</td>
<td class='mw-input'>" .
Xml::openElement(
)
);
- foreach ( $importSources as $prefix ) {
- $selected = ( $this->interwiki === $prefix ) ? ' selected="selected"' : '';
- $out->addHTML( Xml::option( $prefix, $prefix, $selected ) );
+ $needSubprojectField = false;
+ foreach ( $importSources as $key => $value ) {
+ if ( is_int( $key ) ) {
+ $key = $value;
+ } else if ( $value !== $key ) {
+ $needSubprojectField = true;
+ }
+
+ $attribs = array(
+ 'value' => $key,
+ );
+ if ( is_array( $value ) ) {
+ $attribs['data-subprojects'] = implode( ' ', $value );
+ }
+ if ( $this->interwiki === $key ) {
+ $attribs['selected'] = 'selected';
+ }
+ $out->addHTML( Html::element( 'option', $attribs, $key ) );
+ }
+
+ $out->addHTML(
+ Xml::closeElement( 'select' )
+ );
+
+ if ( $needSubprojectField ) {
+ $out->addHTML(
+ Xml::openElement(
+ 'select',
+ array( 'name' => 'subproject', 'id' => 'subproject' )
+ )
+ );
+
+ $subprojectsToAdd = array();
+ foreach ( $importSources as $key => $value ) {
+ if ( is_array( $value ) ) {
+ $subprojectsToAdd = array_merge( $subprojectsToAdd, $value );
+ }
+ }
+ $subprojectsToAdd = array_unique( $subprojectsToAdd );
+ sort( $subprojectsToAdd );
+ foreach ( $subprojectsToAdd as $subproject ) {
+ $out->addHTML( Xml::option( $subproject, $subproject, $this->subproject === $subproject ) );
+ }
+
+ $out->addHTML(
+ Xml::closeElement( 'select' )
+ );
}
$out->addHTML(
- Xml::closeElement( 'select' ) .
+ "</td>
+ </tr>
+ <tr>
+ <td class='mw-label'>" .
+ Xml::label( $this->msg( 'import-interwiki-sourcepage' )->text(), 'frompage' ) .
+ "</td>
+ <td class='mw-input'>" .
Xml::input( 'frompage', 50, $this->frompage, array( 'id' => 'frompage' ) ) .
"</td>
</tr>
}
function getForm() {
- $inputForm = array();
- $inputForm['table_pager_limit_label'] = $this->getLimitSelect( array( 'tabindex' => 1 ) );
+ $fields = array();
+ $fields['limit'] = array(
+ 'type' => 'select',
+ 'name' => 'limit',
+ 'label-message' => 'table_pager_limit_label',
+ 'options' => $this->getLimitSelectList(),
+ 'default' => $this->mLimit,
+ );
+
if ( !$this->getConfig()->get( 'MiserMode' ) ) {
- $inputForm['listfiles_search_for'] = Html::input(
- 'ilsearch',
- $this->mSearch,
- 'text',
- array(
- 'size' => '40',
- 'maxlength' => '255',
- 'id' => 'mw-ilsearch',
- 'tabindex' => 2,
- )
+ $fields['ilsearch'] = array(
+ 'type' => 'text',
+ 'name' => 'ilsearch',
+ 'id' => 'mw-ilsearch',
+ 'label-message' => 'listfiles_search_for',
+ 'default' => $this->mSearch,
+ 'size' => '40',
+ 'maxlength' => '255',
);
}
- $inputForm['username'] = Html::input( 'user', $this->mUserName, 'text', array(
+
+ $fields['user'] = array(
+ 'type' => 'text',
+ 'name' => 'user',
+ 'id' => 'mw-listfiles-user',
+ 'label-message' => 'username',
+ 'default' => $this->mUserName,
'size' => '40',
'maxlength' => '255',
- 'id' => 'mw-listfiles-user',
- 'tabindex' => 3,
- ) );
-
- $inputForm['listfiles-show-all'] = Html::input( 'ilshowall', 1, 'checkbox', array(
- 'checked' => $this->mShowAll,
- 'tabindex' => 4,
- ) );
-
- return Html::openElement( 'form',
- array( 'method' => 'get', 'action' => wfScript(), 'id' => 'mw-listfiles-form' )
- ) .
- Xml::fieldset( $this->msg( 'listfiles' )->text() ) .
- Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
- Xml::buildForm( $inputForm, 'table_pager_limit_submit', array( 'tabindex' => 5 ) ) .
- $this->getHiddenFields( array( 'limit', 'ilsearch', 'user', 'title', 'ilshowall' ) ) .
- Html::closeElement( 'fieldset' ) .
- Html::closeElement( 'form' ) . "\n";
+ );
+
+ $fields['ilshowall'] = array(
+ 'type' => 'check',
+ 'name' => 'ilshowall',
+ 'id' => 'mw-listfiles-show-all',
+ 'label-message' => 'listfiles-show-all',
+ 'default' => $this->mShowAll,
+ );
+
+ $query = $this->getRequest()->getQueryValues();
+ unset( $query['title'] );
+ unset( $query['limit'] );
+ unset( $query['ilsearch'] );
+ unset( $query['user'] );
+
+ $form = new HTMLForm( $fields, $this->getContext() );
+
+ $form->setMethod( 'get' );
+ $form->setId( 'mw-listfiles-form' );
+ $form->setWrapperLegendMsg( 'listfiles' );
+ $form->setSubmitTextMsg( 'table_pager_limit_submit' );
+ $form->addHiddenFields( $query );
+
+ $form->prepareForm();
+ $form->displayForm( '' );
}
function getTableClass() {
$search = str_replace( "\n", " ", $request->getText( 'search', $titleParam ) );
$this->load();
+ if ( !is_null( $request->getVal( 'nsRemember' ) ) ) {
+ $this->saveNamespaces();
+ // Remove the token from the URL to prevent the user from inadvertently
+ // exposing it (e.g. by pasting it into a public wiki page) or undoing
+ // later settings changes (e.g. by reloading the page).
+ $query = $request->getValues();
+ unset( $query['title'], $query['nsRemember'] );
+ $out->redirect( $this->getPageTitle()->getFullURL( $query ) );
+ return;
+ }
$this->searchEngineType = $request->getVal( 'srbackend' );
$search = $this->getSearchEngine();
$search->setLimitOffset( $this->limit, $this->offset );
$search->setNamespaces( $this->namespaces );
- $this->saveNamespaces();
$search->prefix = $this->mPrefix;
$term = $search->transformSearchTerm( $term );
$request = $this->getRequest();
if ( $user->isLoggedIn() &&
- !is_null( $request->getVal( 'nsRemember' ) ) &&
$user->matchEditToken(
- $request->getVal( 'nsToken' ),
+ $request->getVal( 'nsRemember' ),
'searchnamespace',
$request
)
foreach ( MWNamespace::getValidNamespaces() as $n ) {
$user->setOption( 'searchNs' . $n, false );
}
- // The request parameters include all the namespaces we just searched.
+ // The request parameters include all the namespaces to be searched.
// Even if they're the same as an existing profile, they're not eaten.
foreach ( $this->namespaces as $n ) {
$user->setOption( 'searchNs' . $n, true );
$remember = '';
$user = $this->getUser();
if ( $user->isLoggedIn() ) {
- $remember .= Html::hidden(
- 'nsToken',
- $user->getEditToken(
- 'searchnamespace',
- $this->getRequest()
- )
- ) .
- Xml::checkLabel(
+ $remember .= Xml::checkLabel(
wfMessage( 'powersearch-remember' )->text(),
'nsRemember',
'mw-search-powersearch-remember',
- false
+ false,
+ // The token goes here rather than in a hidden field so it
+ // is only sent when necessary (not every form submission).
+ array( 'value' => $user->getEditToken(
+ 'searchnamespace',
+ $this->getRequest()
+ ) )
);
}
* @param Title $title Title object to link
* @param int $offset
* @param int $limit
- * @param array|string $query Optional URL query parameter string
+ * @param array $query Optional URL query parameter string
* @param bool $atend Optional param for specified if this is the last page
* @return string
*/
"preview": "عرض مسبق",
"showpreview": "أظهر معاينة",
"showdiff": "عرض التغييرات",
+ "blankarticle": "<strong>تنبيه:</strong> الصفحة التي تريد إنشاءها فارغة. إذا نقرت \"{{int:savearticle}}\" ثانية فستنشأ الصفحة بدون محتوى.",
"anoneditwarning": "'''تحذير:''' لم تقم بالدخول.\nسيسجل عنوان الآيبي خاصتك في تاريخ هذه الصفحة.",
"anonpreviewwarning": "''أنت غير مسجل الدخول. الحفظ سيسجل عنوان الأيبي الخاص بك في تاريخ هذه الصفحة.''",
"missingsummary": "'''تنبيه:''' لم تقم بكتابة ملخص للتعديل.\nإذا قمت بضغط حفظ الصفحة مرة أخرى، فيتم حفظ تعديلك بدون ملخص.",
"exbeforeblank": "content before blanking was: \"$1\"",
"delete-confirm": "Delete \"$1\"",
"delete-legend": "Delete",
- "historywarning": "<strong>Warning:</strong> The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
+ "historywarning": "<strong>Warning:</strong> The page you are about to delete has a history with $1 {{PLURAL:$1|revision|revisions}}:",
"confirmdeletetext": "You are about to delete a page along with all of its history.\nPlease confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].",
"actioncomplete": "Action complete",
"actionfailed": "Action failed",
"delete-edit-reasonlist": "Edit deletion reasons",
"delete-toobig": "This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.\nDeletion of such pages has been restricted to prevent accidental disruption of {{SITENAME}}.",
"delete-warning-toobig": "This page has a large edit history, over $1 {{PLURAL:$1|revision|revisions}}.\nDeleting it may disrupt database operations of {{SITENAME}};\nproceed with caution.",
- "delete-cantedit": "You cannot delete this page because you do not have permission to edit it.",
+ "deleteprotected": "You cannot delete this page because it has been protected.",
"deleting-backlinks-warning": "'''Warning:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|Other pages]] link to or transclude the page you are about to delete.",
"rollback": "Roll back edits",
"rollback_short": "Rollback",
"import-summary": "",
"importinterwiki": "Transwiki import",
"import-interwiki-text": "Select a wiki and page title to import.\nRevision dates and editors' names will be preserved.\nAll transwiki import actions are logged at the [[Special:Log/import|import log]].",
- "import-interwiki-source": "Source wiki/page:",
+ "import-interwiki-sourcewiki": "Source wiki:",
+ "import-interwiki-sourcepage": "Source page:",
"import-interwiki-history": "Copy all history revisions for this page",
"import-interwiki-templates": "Include all templates",
"import-interwiki-submit": "Import",
"아라",
"Mostafadaneshvar",
"Pouyana",
- "Oldstoneage"
+ "Oldstoneage",
+ "Omid.koli"
]
},
"tog-underline": "خط کشیدن زیر پیوندها:",
"language-converter-depth-warning": "محدودیت عمق مبدل زبانی رد شد ($1)",
"node-count-exceeded-category": "صفحههایی که از حداکثر تعداد گره تجاوز کردهاند",
"node-count-exceeded-category-desc": "رده برای صفحاتی که در آنها شمارنده فراتر رفته است.",
- "node-count-exceeded-warning": "صفحه از حداکثر تعداد گره تجاوز کرد",
+ "node-count-exceeded-warning": "صفحه از حداکثر تعداد گره، فراتر است",
"expansion-depth-exceeded-category": "صفحههایی که از حداکثر عمق بسط دادن تجاوز کردهاند",
"expansion-depth-exceeded-category-desc": "رده برای صفحاتی که در آنها عمق گسترش فراتر رفته است.",
"expansion-depth-exceeded-warning": "صفحه حداکثر عمق بسط دادن تجاوز کرد",
"noindex-category-desc": "این صفحه توسط رباتها فهرستنشدهاست به این دلیل که واژه جادویی <code><nowiki>__NOINDEX__</nowiki></code> در آن یا در فضای که پرچم مجاز است دارد.",
"index-category-desc": "این صفحه <code><nowiki>__INDEX__</nowiki></code> درونش دارد (و در فضای نامی است که پرچم مجاز است)، و به این دلیل توسط ربات مجاز است که بهصورت عادی نباید میشد.",
"post-expand-template-inclusion-category-desc": "پس از گسترش همهٔ الگوها، حجم صفحه بزرگتر از <code>$wgMaxArticleSize</code> است بنابراین بعضی از الگو گسترش نیافتهاند.",
- "post-expand-template-argument-category-desc": "پس از گسترش یک آرگومان الگو (چیزی بین آکولادهای سهتایی، مانند <code>{{{Foo}}}</code>) صفحه بزرگتر از <code>$wgMaxArticleSize</code> میشود.",
- "expensive-parserfunction-category-desc": "تÙ\88ابع Ù\87زÛ\8cÙ\86Ù\87â\80\8cبر گراÙ\86 (Ù\85اÙ\86Ù\86د <code>#ifexist</code>) زÛ\8cادÛ\8c در صÙ\81جÙ\87 شاÙ\85Ù\84 شدÙ\87â\80\8cاست. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] را ببینید.",
+ "post-expand-template-argument-category-desc": "پس از گسترش یک آرگومان الگو (چیزی بین آکولادهای سهتایی، مانند <code>{{{Foo}}}</code>) صفحه بزرگتر از <code>$wgMaxArticleSize</code> میشود.",
+ "expensive-parserfunction-category-desc": "تÙ\88ابع Ù\87زÛ\8cÙ\86Ù\87â\80\8cبر گراÙ\86 (Ù\85اÙ\86Ù\86د <code>#ifexist</code>) زÛ\8cادÛ\8c در صÙ\81جÙ\87 استÙ\81ادÙ\87 شدÙ\87â\80\8c است. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] را ببینید.",
"broken-file-category-desc": "رده افزود میشود اگر صفحه شامل یک پیوند شکسته باشد (یا یک پبوند به پروندهٔ توکاری است که وجود ندارد)",
"hidden-category-category-desc": "این یک ردهٔ <code><nowiki>__HIDDENCAT__</nowiki></code> درونش است که از نمایشش در جعبهٔ پیوندهای رده بهصورت پیشفرض جلوگیری میکند.",
"trackingcategories-nodesc": "توضیحی وجود ندارد.",
"delete-edit-reasonlist": "ویرایش دلایل حذف",
"delete-toobig": "این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.\nبه منظور جلوگیری از اختلال ناخواسته در {{SITENAME}} حذف این گونه صفحهها محدود شدهاست.",
"delete-warning-toobig": "این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.\nحذف آن ممکن است که عملکرد پایگاه دادهٔ {{SITENAME}} را مختل کند;\nبا احتیاط ادامه دهید.",
+ "delete-cantedit": "چون شما مجوز ویرایش این صفحه ندارید، نمیتوانید حذفش کنید.",
"deleting-backlinks-warning": "''' هشدار:''' پیوند [[Special:WhatLinksHere/{{FULLPAGENAME}}|صفحات دیگر]] یا تراگنجایش صفحهٔ شما برای حذف.",
"rollback": "واگردانی ویرایشها",
"rollback_short": "واگردانی",
"preferences": "個人設定",
"mypreferences": "個人設定",
"prefs-edits": "編集回数:",
- "prefsnologintext2": "個人設定を変更するには$1してください。",
+ "prefsnologintext2": "個人設定を変更するにはログインしてください。",
"prefs-skin": "外装",
"skin-preview": "プレビュー",
"datedefault": "選択なし",
"delete-edit-reasonlist": "削除理由を編集",
"delete-toobig": "このページには、$1版を超える編集履歴があります。\nこのようなページの削除は、{{SITENAME}}の偶発的な問題を避けるため、制限されています。",
"delete-warning-toobig": "このページには、 $1版を超える編集履歴があります。\n削除すると、{{SITENAME}}のデータベース処理に大きな負荷がかかります。\n十分に注意してください。",
+ "delete-cantedit": "あなたにはこのページを編集する権限がないため、削除できません。",
"deleting-backlinks-warning": "'''警告:''' 削除しようとしているページは、[[Special:WhatLinksHere/{{FULLPAGENAME}}|他のページ]]からリンクまたは参照読み込みされています。",
"rollback": "編集を巻き戻し",
"rollback_short": "巻き戻し",
"protectedpagewarning": "<strong>زئنار:ای بلگه سی یه پر و پیم بیه که کاریاریایی که دسرسی دیوونداری دارن فقط بتونن دش ویرایشت بکن.</strong>\nآخرین سیائه سی سرچشمه یا د هار اماییه کاری بیه:",
"semiprotectedpagewarning": "<strong>د ویر داشتویت:</strong> ای بلگه سی یه که فقط کاریاریا ثوت نام کرده تونستون دش ویرایشت بکه ن پر و پیم بیه.\nآخرین پهرستنومه دئه بیه سی سرچشمه هار نها اماییه بیه:",
"cascadeprotectedwarning": "<strong>زئنار:</strong> ای بلگه",
+ "titleprotectedwarning": "<strong>زئنار:ای بلگه پر و پیم بیه سی یه که[[ویجه:نوم گه حقوق گرو|حقوق ویجه]] باید ونه دروس بکن .</strong>\nآخرین پهرستنومه دئه بیه سی سرچشمه دئن نهااماییه بیه:",
"templatesused": "{{جمی:$1|چوئه|چوئه یا}}د ای بلگه استفاده بیه:",
"templatesusedpreview": "{{جمی:$1|چوئه|چوئه یا}}استفاده بیه د ای پیش سیل:",
"templatesusedsection": "{{جمی:$1|چوئه|چوئه یا}} استفاده بیه د ای بخش:",
"rev-suppressed-text-unhide": "وانئری بلگه <strong>پاکساگری</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].\nشما هنی تونیت [$1ای وانئری نه بونیت] ار بهاییت.",
"rev-deleted-text-view": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].",
"rev-suppressed-text-view": "وانئری بلگه <strong>پاکساگری</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].",
+ "rev-deleted-no-diff": "شما نمی تونیت ای فرخ نه بونیت سی یه که یه گل د وانئریا <strong>پاکسا بیه</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].",
+ "rev-suppressed-no-diff": "شما نمی تونیت ای فرخ نه بونیت سی یه که یه گل د وانئریا <strong>پاکسا بیه</strong>.",
"rev-deleted-unhide-diff": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].\nشما هنی تونیت [$1ای وانئری نه بونیت] ار بهاییت.",
"rev-suppressed-unhide-diff": "وانئری ای بلگه <strong>پاکساگری بیه</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].\nشما هنی تونیت [$1ای وانئری نه بونیت] ار بهاییت.",
+ "rev-deleted-diff-view": "وانئری ای بلگه <strong>پاکسا بیه</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکسا کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساکردن].",
+ "rev-suppressed-diff-view": "وانئری بلگه <strong>پاکساگری</strong>.\nجزئیات هان د [{{fullurl:{{#Special:Log}}/پاکساگری کردن|بلگه={{نوم کامل بلگه}}}} پهرستنومه پاکساگری کردن].",
"rev-delundel": "آلشت وضئيت ديئن",
"rev-showdeleted": "نشو دائن",
"revisiondelete": "پاکسا کردن/زنه کردن وانئریا",
"revdelete-nooldid-title": "وانیری تمارزی بیه نامعتوره",
+ "revdelete-nooldid-text": "شما وانئریا حاسنی نه سی انجوم دئن ای کار ره ون تیاری نکردیته، یا وانئریا تیارگر بیه وجود نارن، یا یه که شما میهایت وانئری ایسنی نه قام بکیت.",
"revdelete-no-file": "فایل مشقص بیه وجود ناره.",
+ "revdelete-show-file-confirm": "شما د دل میهایت که وانئری پاکسا بیه ای جانیا نه بونیت \"<nowiki>$1</nowiki>\" د $2 تا $3؟",
"revdelete-show-file-submit": "هری",
"revdelete-selected-text": "{{جمی:$1|وانیری گل گر بیه|وانیری گل گر بیه}} د [[:$2]]:",
"revdelete-selected-file": "{{جمی:$1|وانیری گل گر بیه|وانیری گل گر بیه}} د [[:$2]]:",
+ "logdelete-selected": "{{جمی:$1|پهرستنومه رخ ونیا انتخاو بیه|پهرستنومه رخ ونیا انتخاو بیه}}:",
+ "revdelete-text-text": "وانئریا پاکسا بیه هنی د بلگه ویرگار دیاری می کن،اما به شیا مینونه یاشو د مین خلک دیار نیئن.",
+ "revdelete-text-file": "وانئریا پاکسا بیه هنی د بلگه ویرگار دیاری می کن،اما به شیا مینونه یاشو د مین خلک دیار نیئن.",
+ "logdelete-text": "وانئریا پاکسا بیه هنی د بلگه ویرگار دیاری می کن،اما به شیا مینونه یاشو د مین خلک دیار نیئن.",
+ "revdelete-text-others": "دیوونداریا هنی می تونن د مینونه یا قام بیه دسرسی داشتوئن و ونه د نو زنه بکن، مه ر محدودیتیا اضافی میزوکاری بان.",
"revdelete-legend": "میزونکاری محدودیتیا دیار بیین.",
"revdelete-hide-text": "متن دوواره دیئن",
"revdelete-hide-image": "چی یا مئن فایل قام کو",
"revdelete-hide-name": "آرمون و انجوم گر نه قام بکید",
"revdelete-hide-comment": "چکسه نه ویرایشت بکید",
"revdelete-hide-user": "نوم کاروری ویرایشتگر/نشونی آی پی",
+ "revdelete-hide-restricted": "پاکساگری کردن رسینه یا سی دیوونداریا و کسونا تر",
"revdelete-radio-same": "آلشت نکید",
"revdelete-radio-set": "قام بیه",
"revdelete-radio-unset": "دیینی",
+ "revdelete-suppress": "پاکساگری کردن رسینه یا سی دیوونداریا و کسونا تر",
"revdelete-unsuppress": "محدودیتیانه د وانیریا امباربیه جا وه جا بکید",
"revdelete-log": "دلیل:",
"revdelete-submit": "سی {{جمی:$1|وانیری|وانیریا}} انتخاو بیه وه کار بوریتو",
"revdelete-success": "'''دیئن وانیری وه خوئی وه هنگوم بی.'''",
"revdelete-failure": "'''دیئن وانیری وه خوئی وه هنگوم نبی:'''$1",
+ "logdelete-success": "<strong>پهرستنومه دیار بیین د خوئی میزونکاری بی.</strong>",
+ "logdelete-failure": "<strong>پهرستنومه دیار بیین نبوئه میزونکاری با.</strong> $1",
"revdel-restore": "آلشت وضئيت ديئن",
"pagehist": "ويرگار بلگه",
"deletedhist": "ویرگار پاکسا بیه",
"invalidtitle-knownnamespace": "നാമമേഖല \"$2\", എഴുത്ത് \"$3\" എന്നിവ ഉപയോഗിച്ചുള്ള അസാധുവായ തലക്കെട്ട്",
"invalidtitle-unknownnamespace": "അപരിചിതമായ നാമമേഖലാ സംഖ്യ $1, എഴുത്ത് \"$2\" എന്നിവ ഉപയോഗിച്ചുള്ള അസാധുവായ തലക്കെട്ട്",
"exception-nologin": "ലോഗിൻ ചെയ്തിട്ടില്ല",
- "exception-nologin-text": "ഈ വിക്കിയിൽ ഈ താൾ അല്ലെങ്കിൽ പ്രവൃത്തി ലഭ്യമാകാൻ ദയവായി [[Special:Userlogin|പ്രവേശിക്കുക]].",
+ "exception-nologin-text": "ഈ വിക്കിയിൽ ഈ താൾ അല്ലെങ്കിൽ പ്രവൃത്തി ലഭ്യമാകാൻ ദയവായി പ്രവേശിക്കുക.",
"exception-nologin-text-manual": "ഈ താൾ അല്ലെങ്കിൽ പ്രവൃത്തി ഉപയോഗിക്കാൻ ദയവായി $1.",
"virus-badscanner": "തെറ്റായ ക്രമീകരണങ്ങൾ: അപരിചിതമായ വൈറസ് തിരച്ചിൽ ഉപാധി : ''$1''",
"virus-scanfailed": "വൈറസ് സ്കാനിങ് പരാജയപ്പെട്ടു (code $1)",
"parser-template-recursion-depth-warning": "ഫലകത്തിന്റെ പുനരാവർത്തന ആഴത്തിന്റെ പരിധി കഴിഞ്ഞിരിക്കുന്നു ($1)",
"language-converter-depth-warning": "ഭാഷ മാറ്റൽ ഉപകരണത്തിന്റെ ആഴത്തിന്റെ പരിധി കവിഞ്ഞിരിക്കുന്നു ($1)",
"node-count-exceeded-category": "നോഡ്-എണ്ണം അധികരിച്ച താളുകൾ",
- "node-count-exceeded-category-desc": "à´¨àµ\8bà´¡àµ\8d-à´\8eà´£àµ\8dà´£à´\82 à´\85ധിà´\95à´°à´¿à´\9aàµ\8dà´\9a താളàµ\81à´\95ൾà´\95àµ\8dà´\95àµ\81à´³àµ\8dà´³ വർà´\97àµ\8dà´\97à´\82.",
- "node-count-exceeded-warning": "താൾ നോഡ്-എണ്ണം അധികരിച്ചിരിക്കുന്നു",
+ "node-count-exceeded-category-desc": "താളിൽ à´¨àµ\8bà´¡àµ\8d-à´\8eà´£àµ\8dà´£à´\82 à´\85ധിà´\95à´°à´¿à´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81.",
+ "node-count-exceeded-warning": "താളിൽ നോഡ്-എണ്ണം അധികരിച്ചിരിക്കുന്നു",
"expansion-depth-exceeded-category": "വികസന ആഴം അധികരിച്ച താളുകൾ",
- "expansion-depth-exceeded-category-desc": "വിà´\95സന à´\86à´´à´\82 à´\85ധിà´\95à´°à´¿à´\9aàµ\8dà´\9a താളàµ\81à´\95ൾà´\95àµ\8dà´\95àµ\81à´³àµ\8dà´³ വർà´\97àµ\8dà´\97à´\82.",
+ "expansion-depth-exceeded-category-desc": "താളിലàµ\86 വിà´\95സന à´\86à´´à´\82 à´\85ധിà´\95à´°à´¿à´\9aàµ\8dà´\9aà´¿à´°à´¿à´\95àµ\8dà´\95àµ\81à´¨àµ\8dà´¨àµ\81.",
"expansion-depth-exceeded-warning": "താളിന്റെ വികസന ആഴം അധികരിച്ചിരിക്കുന്നു",
"parser-unstrip-loop-warning": "അൺസ്ട്രിപ്പ് (Unstrip) പാഴ്സർ ഫങ്ഷനിൽ കുരുക്ക് കണ്ടെത്തി",
"parser-unstrip-recursion-limit": "അൺസ്ട്രിപ്പ് (Unstrip) പാഴ്സർ ഫങ്ഷന്റെ പുനരാവർത്തന പരിധി അധികരിച്ചിരിക്കുന്നു ($1)",
"preferences": "ക്രമീകരണങ്ങൾ",
"mypreferences": "ക്രമീകരണങ്ങൾ",
"prefs-edits": "ആകെ തിരുത്തുകൾ:",
- "prefsnologintext2": "താങ്കളുടെ ഉപയോക്തൃക്രമീകരണങ്ങൾ സജ്ജീകരിക്കാൻ ദയവായി $1.",
+ "prefsnologintext2": "താങ്കളുടെ ഉപയോക്തൃക്രമീകരണങ്ങൾ സജ്ജീകരിക്കാൻ ദയവായി പ്രവേശിക്കുക.",
"prefs-skin": "ദൃശ്യരൂപം",
"skin-preview": "എങ്ങനെയുണ്ടെന്നു കാണുക",
"datedefault": "ക്രമീകരണങ്ങൾ വേണ്ട",
"post-expand-template-inclusion-category-desc": "എല്ലാ ഫലകങ്ങളും വികസിപ്പിച്ചു കഴിയുമ്പോൾ, താളിന്റെ വലിപ്പം <code>$wgMaxArticleSize</code> എന്നതിലും കൂടുതലാവുമെന്നതിനാൽ, ചില ഫലകങ്ങൾ വികസിപ്പിച്ചിരുന്നില്ല.",
"post-expand-template-argument-category-desc": "ഫലകത്തിലേയ്ക്കുള്ള ചരം വികസിപ്പിച്ച ശേഷം (<code>{{{പന}}}</code> പോലെയുള്ള മൂന്ന് കോഷ്ഠകങ്ങളിലെ എഴുത്ത്), താളിന്റെ വലിപ്പം <code>$wgMaxArticleSize</code> എന്നതിലും കൂടുതലായി.",
"expensive-parserfunction-category-desc": "നിരവധി വ്യയമേറിയ പാഴ്സർ ഫങ്ഷനുകൾ ( #എങ്കിൽ പോലെയുള്ളവ) താളിൽ ഉൾപ്പെടുത്തിയിരിക്കുന്നു. [https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgExpensiveParserFunctionLimit Manual:$wgExpensiveParserFunctionLimit] കാണുക.",
- "broken-file-category-desc": "താളിൽ നിലവിലിലàµ\8dലാതàµ\8dà´¤ à´ªàµ\8dരമാണതàµ\8dതിലàµ\8bà´\9fàµ\8dà´\9fàµ\8d à´\95à´£àµ\8dണി à´\9aàµ\87ർതàµ\8dതിà´\9fàµ\8dà´\9fàµ\81à´£àµ\8dà´\9fàµ\86à´\99àµ\8dà´\95ിൽ വർà´\97àµ\8dà´\97à´\82 à´\9aàµ\87ർà´\95àµ\8dà´\95à´ªàµ\8dà´ªàµ\86à´\9fàµ\81à´\82.",
+ "broken-file-category-desc": "താളിൽ നിലവിലിലàµ\8dലാതàµ\8dà´¤ à´ªàµ\8dരമാണതàµ\8dതിലàµ\8bà´\9fàµ\8dà´\9fàµ\8d à´\95à´£àµ\8dണി à´\9aàµ\87ർതàµ\8dതിà´\9fàµ\8dà´\9fàµ\81à´£àµ\8dà´\9fàµ\8d (നിലവിലിലàµ\8dലാതàµ\8dà´¤ à´ªàµ\8dരമാണà´\82 à´\89ൾപàµ\8dà´ªàµ\86à´\9fàµ\81à´¤àµ\8dതാനàµ\81à´³àµ\8dà´³ à´\95à´£àµ\8dണി).",
"hidden-category-category-desc": "ഈ വർഗ്ഗത്തിൽ <code><nowiki>__HIDDENCAT__</nowiki></code> ഉള്ളതിനാൽ, താളുകളിലെ വർഗ്ഗങ്ങളുടെ കണ്ണികൾ കാണിക്കുന്ന പെട്ടിയിൽ സ്വതേ പ്രത്യക്ഷപ്പെടുന്നതല്ല.",
"trackingcategories-nodesc": "വിവരണം ലഭ്യമല്ല.",
"trackingcategories-disabled": "വർഗ്ഗം നിർജ്ജീവമാക്കിയിരിക്കുന്നു",
"mywatchlist": "ശ്രദ്ധിക്കുന്നവ",
"watchlistfor2": "ഉപയോക്താവ്:$1 $2",
"nowatchlist": "താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിൽ ഇനങ്ങളൊന്നുമില്ല.",
- "watchlistanontext": "താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക കാണുവാനോ തിരുത്തുവാനോ $1.",
+ "watchlistanontext": "താങ്കൾ ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടിക കാണുവാനോ തിരുത്തുവാനോ പ്രവേശിക്കുക.",
"watchnologin": "ലോഗിൻ ചെയ്തിട്ടില്ല",
"addwatch": "ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിലേക്കു ചേർക്കുക",
"addedwatchtext": "താങ്കൾ [[Special:Watchlist|ശ്രദ്ധിക്കുന്ന താളുകളുടെ പട്ടികയിലേക്ക്]] \"[[:$1]]\" എന്ന ഈ താൾ ചേർത്തിരിക്കുന്നു. ഇനി മുതൽ ഈ താളിലും ബന്ധപ്പെട്ട സംവാദം താളിലും ഉണ്ടാകുന്ന മാറ്റങ്ങൾ ആ പട്ടികയിൽ ദൃശ്യമാവും.",
"delete-edit-reasonlist": "മായ്ക്കലിന്റെ കാരണം തിരുത്തുക",
"delete-toobig": "ഈ താളിനു വളരെ വിപുലമായ തിരുത്തൽ ചരിത്രമുണ്ട്. $1 മേൽ {{PLURAL:$1|പതിപ്പുണ്ട്|പതിപ്പുകളുണ്ട്}}. ഇത്തരം താളുകൾ മായ്ക്കുന്നതു {{SITENAME}} സംരംഭത്തിന്റെ നിലനില്പ്പിനെ തന്നെ ബാധിക്കുമെന്നതിനാൽ ഈ താൾ മായ്ക്കുന്നതിനുള്ള അവകാശം പരിമിതപ്പെടുത്തിയിരിക്കുന്നു.",
"delete-warning-toobig": "ഈ താളിനു വളരെ വിപുലമായ തിരുത്തൽ ചരിത്രമുണ്ട്. അതായത്, ഇതിനു് $1 മേൽ {{PLURAL:$1|പതിപ്പുണ്ട്|പതിപ്പുകളുണ്ട്}}. ഇത്തരം താളുകൾ മായ്ക്കുന്നതു {{SITENAME}} സംരംഭത്തിന്റെ ഡാറ്റാബേസ് ഓപ്പറേഷനെ ബാധിച്ചേക്കാം. അതിനാൽ വളരെ ശ്രദ്ധാപൂർവ്വം തുടർനടപടികളിലേക്കു നീങ്ങുക.",
+ "delete-cantedit": "ഈ താൾ തിരുത്തുവാൻ അനുമതി ഇല്ലാത്തതിനാൽ താങ്കൾക്ക് ഈ താൾ മായ്ക്കാനാവില്ല.",
"deleting-backlinks-warning": "'''മുന്നറിയിപ്പ്:''' മറ്റു താളുകളിൽ നിന്നും [[Special:WhatLinksHere/{{FULLPAGENAME}}|താളിലേയ്ക്കുള്ള കണ്ണികൾ]] അല്ലെങ്കിൽ ഉൾപ്പെടുത്തിയിട്ടുള്ള താളുകൾ താങ്കൾ മായ്ക്കാൻ പോവുകയാണ്.",
"rollback": "തിരുത്തലുകൾ റോൾബാക്ക് ചെയ്യുക",
"rollback_short": "റോൾബാക്ക്",
"autoblockid": "സ്വയം തടയൽ #$1",
"block": "ഉപയോക്താവിനെ തടയുക",
"unblock": "ഉപയോക്താവിനുള്ള തടയൽ നീക്കുക",
- "blockip": "ഉപയോക്താവിനെ തടയുക",
+ "blockip": "{{GENDER:$1|ഉപയോക്താവിനെ}} തടയുക",
"blockip-legend": "ഉപയോക്താവിനെ തടയുക",
"blockiptext": "ഏതെങ്കിലും ഐ.പി. വിലാസത്തേയോ ഉപയോക്താവിനേയോ തടയുവാൻ താഴെയുള്ള ഫോം ഉപയോഗിക്കുക.\n[[{{MediaWiki:Policy-url}}|വിക്കിയുടെ നയം]] അനുസരിച്ച് നശീകരണപ്രവർത്തനം തടയാൻ മാത്രമേ ഇതു ചെയ്യാവൂ.\nതടയാനുള്ള വ്യക്തമായ കാരണം (ഏതു താളിലാണു നശീകരണപ്രവർത്തനം നടന്നത് എന്നതടക്കം) താഴെ രേഖപ്പെടുത്തിയിരിക്കണം.",
"ipaddressorusername": "ഐ.പി. വിലാസം അല്ലെങ്കിൽ ഉപയോക്തൃനാമം:",
"ipb-unblock-addr": "$1 അംഗത്വത്തിനുള്ള തടയൽ നീക്കുക",
"ipb-unblock": "ഒരു ഐ.പി. വിലാസത്തിനോ ഉപയോക്താവിനോ ഉള്ള തടയൽ നീക്കംചെയ്യുക",
"ipb-blocklist": "നിലവിലുള്ള തടയലുകൾ",
- "ipb-blocklist-contribs": "$1 നൽകിയ സംഭാവനകൾ",
+ "ipb-blocklist-contribs": "{{GENDER:$1|$1}} നൽകിയ സംഭാവനകൾ",
"unblockip": "ഉപയോക്താവിനുള്ള തടയൽ നീക്കുക",
"unblockiptext": "മുൻപ് തടയപ്പെട്ട ഐ.പി.യുടേയും ഉപയോക്താവിന്റേയും തിരുത്തൽ അവകാശം പുനഃസ്ഥാപിക്കാൻ താഴെയുള്ള ഫോം ഉപയോഗിക്കുക.",
"ipusubmit": "ഈ വിലക്ക് ഒഴിവാക്കുക",
"log-name-pagelang": "ഭാഷ മാറ്റലിന്റെ രേഖ",
"log-description-pagelang": "താളുകളുടെ ഭാഷകൾ മാറ്റിയതിന്റെ രേഖകൾ ഇവിടെക്കാണാം.",
"logentry-pagelang-pagelang": "$3 എന്ന താളിന്റെ ഭാഷയായിരുന്ന $4, $1 $5 ആയി {{GENDER:$2|മാറ്റി}}.",
+ "default-skin-not-found": "അയ്യോ! താങ്കളുടെ വിക്കിയുടെ സ്വതേയുള്ള ദൃശ്യരൂപമായ (<code>$wgDefaultSkin</code>), <code>$1</code>, ലഭ്യമല്ല.\n\nതാങ്കളുടെ ഇൻസ്റ്റലേഷനിൽ താഴെക്കൊടുക്കുന്ന ദൃശ്യരൂപങ്ങൾ ഉണ്ടാകേണ്ടതാണ്. അവ എങ്ങനെ ക്രമീകരിക്കാം എന്നും സ്വതേ വേണ്ടത് എങ്ങനെ സജ്ജമാക്കാം എന്നും [https://www.mediawiki.org/wiki/Manual:Skin_configuration ദൃശ്യരൂപം സജ്ജമാക്കൽ സഹായിയിൽ] കാണുക.\n\n$2\n\n; താങ്കൾ മീഡിയവിക്കി ഇൻസ്റ്റോൾ ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: ഗിറ്റിൽ നിന്ന് അല്ലെങ്കിൽ മറ്റെങ്കിലും മാർഗ്ഗം ഉപയോഗിച്ച് സോഴ്സ് കോഡ് നേരിട്ട് ഉപയോഗിക്കുകയായിരിന്നെങ്കിൽ ഇത് സംഭവിച്ചേക്കാം. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's ദൃശ്യരൂപ ഡയറക്ടറിയിൽ നിന്ന്], ഇനിക്കൊടുക്കുന്ന മാർഗ്ഗങ്ങൾ ഉപയോഗിച്ച് ഏതാനം ദൃശ്യരൂപങ്ങൾ ഇൻസ്റ്റോൾ ചെയ്യാൻ നോക്കുക:\n:* [https://www.mediawiki.org/wiki/Download ടാർബോൾ ഇൻസ്റ്റോളർ] ഡൗൺലോഡ് ചെയ്യുക, അതിൽ നിരവധി ദൃശ്യരൂപങ്ങളും അനുബന്ധങ്ങളും ഉൾപ്പെടുത്തിയിരിക്കുന്നു. അതിൽ നിന്നും താങ്കൾക്ക് <code>skins/</code> ഡയറക്ടറി പകർത്താവുന്നതാണ്.\n:* താങ്കളുടെ മീഡിയവിക്കി ഇൻസ്റ്റലേഷന്റെ <code>skins/</code> ഡയറക്ടറിയിലേക്ക് ഗിറ്റ് ഉപയോഗിച്ച് <code>mediawiki/skins/*</code> റെപ്പോസിറ്ററികളിലൊന്ന് ക്ലോൺ ചെയ്യുക.\n: താങ്കളൊരു മീഡിയവിക്കി ഡവലപ്പറാണെങ്കിൽ ഇത് താങ്കളുടെ ഗിറ്റ് ഡെപ്പോസിറ്ററിയെ ബാധിക്കുന്നതല്ല.\n\n; മീഡിയവിക്കി താങ്കൾ അപ്ഗ്രേഡ് ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: മീഡിയവിക്കി 1.24 ഒപ്പം അതിനു ശേഷമുള്ളവയും ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള ദൃശ്യരൂപങ്ങൾ സ്വതേ സജ്ജമാക്കുന്നില്ല ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery ദൃശ്യരൂപം ഓട്ടോഡിസ്കവറി സഹായം] കാണുക). ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള ദൃശ്യരൂപങ്ങൾ സജ്ജമാക്കുന്നതിനായി ഇനിക്കൊടുക്കുന്ന വരികൾ <code>LocalSettings.php</code> എന്നതിലോട്ട് പകർത്തുക:\n\n<pre>$3</pre>\n\n; <code>LocalSettings.php</code> താളിൽ മാറ്റം വരുത്തിയതേയുള്ളുവെങ്കിൽ:\n: ദൃശ്യരൂപങ്ങളുടെ പേരിൽ അക്ഷരപിശകുകളുണ്ടോയെന്ന് ആവർത്തിച്ച് പരിശോധിക്കുക.",
+ "default-skin-not-found-no-skins": "അയ്യോ! താങ്കളുടെ വിക്കിയുടെ സ്വതേയുള്ള ദൃശ്യരൂപമായ (<code>$wgDefaultSkin</code>), <code>$1</code>, ലഭ്യമല്ല.\n\nതാങ്കൾ ദൃശ്യരൂപങ്ങളൊന്നും ഇൻസ്റ്റോൾ ചെയ്തിട്ടില്ല.\n\n; താങ്കൾ മീഡിയവിക്കി ഇൻസ്റ്റോൾ ചെയ്തതേ അല്ലെങ്കിൽ അപ്ഗ്രേഡ് ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: ഗിറ്റിൽ നിന്ന് അല്ലെങ്കിൽ മറ്റെങ്കിലും മാർഗ്ഗം ഉപയോഗിച്ച് സോഴ്സ് കോഡ് നേരിട്ട് ഉപയോഗിക്കുകയായിരിന്നെങ്കിൽ ഇത് സംഭവിച്ചേക്കാം. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's ദൃശ്യരൂപ ഡയറക്ടറിയിൽ നിന്ന്], ഇനിക്കൊടുക്കുന്ന മാർഗ്ഗങ്ങൾ ഉപയോഗിച്ച് ഏതാനം ദൃശ്യരൂപങ്ങൾ ഇൻസ്റ്റോൾ ചെയ്യാൻ നോക്കുക:\n:* [https://www.mediawiki.org/wiki/Download ടാർബോൾ ഇൻസ്റ്റോളർ] ഡൗൺലോഡ് ചെയ്യുക, അതിൽ നിരവധി ദൃശ്യരൂപങ്ങളും അനുബന്ധങ്ങളും ഉൾപ്പെടുത്തിയിരിക്കുന്നു. അതിൽ നിന്നും താങ്കൾക്ക് <code>skins/</code> ഡയറക്ടറി പകർത്താവുന്നതാണ്.\n:* താങ്കളുടെ മീഡിയവിക്കി ഇൻസ്റ്റലേഷന്റെ <code>skins/</code> ഡയറക്ടറിയിലേക്ക് ഗിറ്റ് ഉപയോഗിച്ച് <code>mediawiki/skins/*</code> റെപ്പോസിറ്ററികളിലൊന്ന് ക്ലോൺ ചെയ്യുക.\n: താങ്കളൊരു മീഡിയവിക്കി ഡവലപ്പറാണെങ്കിൽ ഇത് താങ്കളുടെ ഗിറ്റ് ഡെപ്പോസിറ്ററിയെ ബാധിക്കുന്നതല്ല. ദൃശ്യരൂപങ്ങൾ എങ്ങനെ ക്രമീകരിക്കാം എന്നും സ്വതേ വേണ്ടത് എങ്ങനെ സജ്ജമാക്കാം എന്നും [https://www.mediawiki.org/wiki/Manual:Skin_configuration ദൃശ്യരൂപം സജ്ജമാക്കൽ സഹായിയിൽ] കാണുക.",
"default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (സജ്ജം)",
"default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''സജ്ജമല്ല''')"
}
"tog-diffonly": "Nun me fà vedé cuntenute aropp'o cunfronto nfra verziune",
"tog-showhiddencats": "Fa' vedé 'e categurie annascunnute",
"tog-norollbackdiff": "Nun fà vedé 'o cunfronto nfra verziune quanno se fà nu rollback",
+ "tog-useeditwarning": "Famme sapé quanno lasso na paggena 'e mudifeca senza sarvà 'e cagnamiente",
+ "tog-prefershttps": "Usa sempe na connessione sicura quanno s'accummincia sessione",
"underline-always": "Sèmpe",
"underline-never": "Màje",
+ "underline-default": "Tiene sempe le mpostazzione d' 'o navigatóre",
+ "editfont-style": "Stile 'e carattere dint' 'a casella 'e testo",
+ "editfont-default": "Predefinito d' 'o navigatóre",
+ "editfont-monospace": "Carattere a larghezza fissa",
+ "editfont-sansserif": "Carattere sans-serif",
+ "editfont-serif": "Carattere Serif",
"sunday": "dumméneca",
"monday": "lunnerì",
"tuesday": "marterì",
"category_header": "Paggene rìnt'a categurìa \"$1\"",
"subcategories": "Categurìe secunnarie",
"category-media-header": "File 'int'â categuría \"$1\"",
+ "category-empty": "<em>Chista categurìa p' 'o mumento nun tene pàggene o media.</em>",
"hidden-categories": "{{PLURAL:$1|Categurìa annascusa|Categuríe annascuse}}",
+ "hidden-category-category": "Categurìe annascuse",
"category-subcat-count": "{{PLURAL:$2|Chesta categurìa cuntene n'unneca sottocategurìa, nzignata 'e seguito.|Chesta categurìa cuntene {{PLURAL:$1|'a sottocategurìa nzignata|'e $1 sottocategurìe nzignate}} 'e seguito, 'a nu totale 'e $2.}}",
+ "category-subcat-count-limited": "Chista categurìa tene sti {{PLURAL:$1|sottocategurìa|$1 sottocategurìe}}.",
"category-article-count": "{{PLURAL:$2|Chesta categurìa cuntiene un'unneca paggena, nzignata ccà sotto.|Chesta categurìa cuntiene {{PLURAL:$1|'a paggena nzignata|'e $1 paggene nzignate}} ccà sotto, faccenno nu totale 'e $2.}}",
+ "category-article-count-limited": "Chista categurìa téne {{PLURAL:$1|sta pàggena|sti $1 pàggene}} dinto.",
+ "category-file-count": "{{PLURAL:$2|Chista categurìa cunténe nu file solo, nzignato ccà sotto.|Chista categurìa cunténe {{PLURAL:$1|nu file, nzignato|$1 file nzignate}} ccà sotto, faccenno nu totale 'e $2.}}",
+ "category-file-count-limited": "Chista categurìa téne {{PLURAL:$1|sta pàggena|sti $1 pàggene}} dinto.",
"listingcontinuesabbrev": "cont.",
"index-category": "Paggene ennecezzate",
"noindex-category": "Paggene nun ennecezzate",
"exbeforeblank": "Automated deletion reason when deleting a page for admins providing that the page was blanked before deletion.\n\nParameters:\n* $1 - content before blanking",
"delete-confirm": "Used as page title. Parameters:\n* $1 - the page title\n{{Identical|Delete}}",
"delete-legend": "{{Identical|Delete}}",
- "historywarning": "Warning when about to delete a page that has history.\n\nFollowed by a link which points to the history page.\n\nParameters:\n* $1 - the <b>approximate</b> number of revisions that the page has, the message should not claim to give an exact count",
+ "historywarning": "Warning when about to delete a page that has history.\n\nFollowed by a link which points to the history page.\n\nParameters:\n* $1 - the number of revisions that the page has",
"confirmdeletetext": "Introduction shown when deleting a page.\n\nRefers to {{msg-mw|Policy-url}}.",
"actioncomplete": "Used in several situations, for example when a page has been deleted.\n\nSee also:\n* {{msg-mw|Actionfailed|page title}}",
"actionfailed": "Used as page title when the submit operation failed, in [[Special:RevisionDelete]].\n\nSee also:\n* {{msg-mw|Actioncomplete|page title}}",
"delete-edit-reasonlist": "Shown beneath the page deletion form on the right side. It is a link to {{msg-mw|Deletereason-dropdown|notext=1}}.\n\nSee also:\n* {{msg-mw|Ipb-edit-dropdown}}\n* {{msg-mw|Protect-edit-reasonlist}}.\n{{Identical|Edit delete reasons}}",
"delete-toobig": "Parameters:\n* $1 - the upper limit of number of revisions\nSee also:\n* {{msg-mw|Delete-warning-toobig}}",
"delete-warning-toobig": "Parameters:\n* $1 - the upper limit of number of revisions\nSee also:\n* {{msg-mw|Delete-toobig}}",
- "delete-cantedit": "Used as error message when deleting the page.",
+ "deleteprotected": "Used as error message when deleting the page.",
"deleting-backlinks-warning": "A warning shown when a page that is being deleted has at least one link to it or is transcluded in at least one page.",
"rollback": "{{Identical|Rollback}}",
"rollback_short": "{{Identical|Rollback}}",
"import-summary": "{{doc-specialpagesummary|import}}",
"importinterwiki": "Used as legend for the Import form in [[Special:Import]].",
"import-interwiki-text": "Used as summary for the Import form in [[Special:Import]].",
- "import-interwiki-source": "Used as label for input box in [[Special:Import]].",
+ "import-interwiki-sourcewiki": "Used as label for dropdown box in [[Special:Import]].",
+ "import-interwiki-sourcepage": "Used as label for input box in [[Special:Import]].",
"import-interwiki-history": "This is an option on [[Special:Import]]. Usually, when unchecked, only the first version of a page is imported. When you check the option, all versions are imported. This is important often to check for licensing reasons.\n\nSee also:\n* {{msg-mw|Import-interwiki-templates}}\n* {{msg-mw|Import-interwiki-namespace}}\n* {{msg-mw|Import-comment}}\n* {{msg-mw|Import-interwiki-rootpage}}\n* {{msg-mw|Import-interwiki-submit}}",
"import-interwiki-templates": "Used as label for the checkbox in [[Special:Import]].\n\nSee also:\n* {{msg-mw|Import-interwiki-history}}\n* {{msg-mw|Import-interwiki-namespace}}\n* {{msg-mw|Import-comment}}\n* {{msg-mw|Import-interwiki-rootpage}}\n* {{msg-mw|Import-interwiki-submit}}",
"import-interwiki-submit": "Used as Submit button text in [[Special:Import]].\n\nSee also:\n* {{msg-mw|Import-interwiki-history}}\n* {{msg-mw|Import-interwiki-templates}}\n* {{msg-mw|Import-interwiki-namespace}}\n* {{msg-mw|Import-comment}}\n* {{msg-mw|Import-interwiki-rootpage}}\n{{Identical|Import}}",
"Stephenwanjau",
"לערי ריינהארט",
"아라",
- "Baba Tabita"
+ "Baba Tabita",
+ "Rich Farmbrough"
]
},
"tog-underline": "Wekea mstari viungo:",
"hidetoc": "ficha",
"collapsible-collapse": "Kunja",
"collapsible-expand": "Tanua",
+ "confirmable-yes": "Ndio",
+ "confirmable-no": "Habana",
"thisisdeleted": "Tazama au rudisha $1?",
"viewdeleted": "Tazama $1?",
"restorelink": "{{PLURAL:$1|sahihisho lililofutwa moja|masahihisho yaliyofutwa $1}}",
"protectedpages-cascade": "Mpangilio wa ulindaji tu",
"protectedpagesempty": "Hakuna kurasa zinazolindwa kwa sasa kwa vigezo hivi.",
"protectedpages-page": "Ukurasa",
+ "protectedpages-reason": "Sababu",
"protectedpages-unknown-timestamp": "Haijulikani",
"protectedpages-unknown-performer": "Mtumiaji asiyejulikana",
"protectedtitles": "Majina yanayozuluiwa",
"allmessages-prefix": "Zichujwe kwa kiambishi awali:",
"allmessages-language": "Lugha:",
"allmessages-filter-submit": "Uende",
+ "allmessages-filter-translate": "Kufasiri",
"thumbnail-more": "Kuza",
"filemissing": "Faili halipo",
"thumbnail_error": "Hitilafu kutengeneza picha ndogo: $1",
"pageinfo-display-title": "Onyesha mada",
"pageinfo-article-id": "ID ya ukurasa",
"pageinfo-language": "Lugha ya maudhui ya ukurasa",
+ "pageinfo-robot-index": "Halali",
+ "pageinfo-robot-noindex": "Marufuku",
"pageinfo-watchers": "Idadi ya wanaofuatilia",
"pageinfo-edits": "Idadi ya maharirio",
"pageinfo-toolboxlink": "Maelezo ya ukurasa",
+ "pageinfo-redirectsto-info": "habari",
"pageinfo-contentpage-yes": "Ndiyo",
"pageinfo-protect-cascading-yes": "Ndiyo",
"pageinfo-category-info": "Maelezo ya jamii",
"බිඟුවා",
"Thamiziniyan",
"아라",
- "Kalyanasundar"
+ "Kalyanasundar",
+ "தமிழ்த்தம்பி"
]
},
"tog-underline": "இணைப்புகளுக்கு அடிக்கோடிடு",
"invalidtitle-knownnamespace": "பெயரிடைவெளி ' $2 '' மற்றும் உரை '' $3 '' கொன்ட தலைப்பு செல்லாது",
"invalidtitle-unknownnamespace": "அறியப்படாத பெயரிடைவெளி $1 மற்றும் உரை $2 கொண்ட தலைப்பு செல்லாது",
"exception-nologin": "புகுபதிகை செய்யப்படவில்லை.",
- "exception-nologin-text": "à®\87நà¯\8dத பà®\95à¯\8dà®\95à®®à¯\8d / à®\9aà¯\86யà¯\8dà®\95à¯\88 à®\87நà¯\8dத விà®\95à¯\8dà®\95ியிலà¯\8d à®\89à®\99à¯\8dà®\95ளதà¯\81 பà¯\81à®\95à¯\81பதிà®\95à¯\88யà¯\88 à®\8eதிரà¯\8dபாரà¯\8dà®\95à¯\8dà®\95ிறதà¯\81.",
+ "exception-nologin-text": "à®\87நà¯\8dத பà®\95à¯\8dà®\95à®®à¯\8d / à®\9aà¯\86யà¯\8dà®\95à¯\88 à®\9aà¯\86யà¯\8dய à®\85à®°à¯\81ளà¯\8dà®\95à¯\82à®°à¯\8dநà¯\8dதà¯\81 பà¯\81à®\95à¯\81பதிà®\95à¯\88 à®\9aà¯\86யà¯\8dயவà¯\81à®®à¯\8d.",
"virus-badscanner": "சரியற்ற உள்ளமைவு: அறியப்படாத வைரஸ் வருடி: '' $1 ''",
"virus-scanfailed": "வருடல் நடைபெறவில்லை (குறியீடு $1)",
"virus-unknownscanner": "அறியப்படாத வைரசெதிர்ப்பு:",
"license-header": "அனுமதி",
"nolicense": "தெரிவுச் செய்யப்படவில்லை",
"license-nopreview": "(முன்தோற்றம் கையிலிருப்பில் இல்லை)",
- "upload_source_url": " (à®\9aà¯\86லà¯\8dலà¯\81பà®\9fியான, à®\87ணà¯\88ய à®®à¯\81à®\95வரி)",
+ "upload_source_url": " (நà¯\80à®\99à¯\8dà®\95ளà¯\8d தà¯\86ரிவà¯\81 à®\9aà¯\86யà¯\8dத, பà¯\8aதà¯\81விலà¯\8d à®\85ணà¯\81à®\95à¯\8dà®\95à¯\82à®\9fிய à®\9aà¯\86லà¯\8dலதà¯\8dதà®\95à¯\8dà®\95 à®\87ணà¯\88ய à®®à¯\81à®\95வரியிலà¯\8d à®\89ளà¯\8dள à®\95à¯\8bபà¯\8dபà¯\81)",
"upload_source_file": "(தங்களி்ன் கணினியிலிருந்து தங்களால் தேர்ந்தெடுக்கப்பட்ட கோப்பு)",
"listfiles-summary": "இச்சிறப்புப் பக்கம் பதிவேற்றப்பட்ட கோப்புகளைப் பட்டியலிடுகிறது.",
"listfiles_search_for": "பின்வரும் பெயருள்ள ஊடகக் கோப்பைத் தேடு:",
--- /dev/null
+/**
+ * Copy of CC standard stylesheet, plus tweaks for iframe usage
+ */
+
+body {
+ margin: 0;
+ background: #eee;
+ font-family: Verdana;
+ color: #333;
+}
+
+#main {
+ border: 1px solid #D0D0D0;
+ background: #fff;
+ margin: 0.5em;
+}
+
+/**
+ * Looks like you have to specify the width of #menu
+ * or IE5 Mac stretches it all the way across the div, and
+ * Opera streches it half way.
+ */
+
+#main #menu {
+ border-left: 1px dotted #ccc;
+ float: right;
+ width: 230px;
+ background: white;
+ margin: 0 0 10px 10px;
+}
+
+td, h3, p, h1, pre {
+ margin: 0 20px 20px 20px;
+ font-size: 11px;
+ line-height: 140%;
+}
+
+.header {
+ padding-left: 10px;
+ padding-top: 10px;
+}
+
+.nav {
+ padding-left: 10px;
+ padding-bottom: 10px;
+ font-size: 11px;
+ margin-bottom: 16px;
+}
+
+#menu p {
+ font-size: 11px;
+}
+
+.dent {
+ margin-left: 64px;
+}
--- /dev/null
+.env-check {
+ font-size: 90%;
+ margin: 1em 0 1em 2.5em;
+}
+
+.config-section {
+ margin-top: 2em;
+}
+
+.config-block {
+ margin-top: 2em;
+ display: block;
+
+}
+
+.config-block-label {
+ display: block;
+ margin-bottom: .2em;
+}
+
+.config-block-label label, .config-label {
+ font-weight: bold;
+ padding-right: .5em;
+ padding-top: .2em;
+}
+
+.config-block-elements {
+ margin-left: 2em;
+}
+
+.config-block-elements li {
+ list-style: none;
+}
+
+.config-input {
+ clear: left;
+ zoom: 100%; /* IE hack */
+}
+
+.config-page-wrapper {
+ padding: 0.5em;
+}
+
+.config-page-list {
+ float: right;
+ width: 12em;
+ border: 1px solid #aaa;
+ background: #fff;
+ padding: 0.5em;
+ /* 3em left margin to leave space between the list and the page-content */
+ margin: 0.5em 0.5em 0.5em 3.5em;
+}
+
+.config-page {
+ padding: 0.5em 0.5em 0.5em 2em;
+ margin: 0.5em 0.5em 0.5em 0.5em;
+ background: #eee;
+}
+
+.config-submit {
+ clear: left;
+ text-align: center;
+ padding: 1em;
+}
+
+.config-submit input {
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+}
+
+.config-page-disabled {
+ color: #aaa;
+}
+
+.config-error-box {
+ border: 2px solid #f00;
+}
+
+.config-page-current {
+ font-weight: bold;
+}
+
+.config-message {
+ display: list-item;
+ line-height: 1.5em;
+ /* @embed */
+ list-style-image: url(images/bullet.gif);
+ list-style-type: square;
+}
+
+.config-input-text {
+ width: 20em;
+ margin-right: 1em;
+}
+
+.config-input-check {
+ margin-left: 10em;
+}
+
+.config-skins-item {
+ /* Clearfix */
+ clear: left;
+ overflow: hidden;
+}
+
+.config-skins-item .config-input-check {
+ margin-left: 10em;
+ width: 20em;
+ float: left;
+}
+
+.config-skins-item .config-skins-use-as-default {
+ float: left;
+}
+
+.error {
+ color: red;
+ background-color: #fff;
+ font-weight: bold;
+ left: 1em;
+ font-size: 100%;
+}
+
+.config-settings-block {
+ list-style-type: none;
+ list-style-image: none;
+ margin: 0;
+ padding: 0;
+}
+
+.btn-install {
+ font-weight: bold;
+ font-size: 110%;
+ padding: .2em .3em;
+}
+
+.success-message {
+ font-weight: bold;
+ font-size: 110%;
+ color: green;
+}
+
+.success-box {
+ font-size: 130%;
+}
+
+.config-cc-wrapper {
+ clear: left;
+ /* If you change this height, also change it in WebInstallerOptions::submitCC() */
+ height: 54em;
+}
+
+.config-plainlink a {
+ background: none !important;
+ padding: 0 !important;
+}
+
+.config-download-link {
+ font-size: 1.8em;
+ margin-left: 2em;
+}
+
+.config-download-link a {
+ background: url(images/download-32.png) no-repeat center left;
+ padding-left: 40px; /* 32 px for the image (above), plus some breathing room */
+ height: 32px; /* provide enough vertical room for the image */
+ display: inline-block; /* allow the height property (above) to work */
+ line-height: 32px; /* center the text vertically */
+}
+
+#config-live-log {
+ overflow: hidden;
+ min-width: 20em;
+}
--- /dev/null
+( function ( $ ) {
+ $( function () {
+ var $label, labelText;
+
+ function syncText() {
+ var value = $(this).val()
+ .replace( /[\[\]\{\}|#<>%+? ]/g, '_' )
+ .replace( /&/, '&' )
+ .replace( /__+/g, '_' )
+ .replace( /^_+/, '' )
+ .replace( /_+$/, '' );
+ value = value.substr( 0, 1 ).toUpperCase() + value.substr( 1 );
+ $label.text( labelText.replace( '$1', value ) );
+ }
+
+ // Set up the help system
+ $( '.mw-help-field-data' )
+ .hide()
+ .closest( '.mw-help-field-container' )
+ .find( '.mw-help-field-hint' )
+ .show()
+ .click( function () {
+ $(this)
+ .closest( '.mw-help-field-container' )
+ .find( '.mw-help-field-data' )
+ .slideToggle( 'fast' );
+ } );
+
+ // Show/hide code for DB-specific options
+ // FIXME: Do we want slow, fast, or even non-animated (instantaneous) showing/hiding here?
+ $( '.dbRadio' ).each( function () {
+ $( document.getElementById( $(this).attr( 'rel' ) ) ).hide();
+ } );
+ $( document.getElementById( $( '.dbRadio:checked' ).attr( 'rel' ) ) ).show();
+ $( '.dbRadio' ).click( function () {
+ var $checked = $( '.dbRadio:checked' ),
+ $wrapper = $( document.getElementById( $checked.attr( 'rel' ) ) );
+ if ( $wrapper.is( ':hidden' ) ) {
+ $( '.dbWrapper' ).hide( 'slow' );
+ $wrapper.show( 'slow' );
+ }
+ } );
+
+ // Scroll to the bottom of upgrade log
+ $( '#config-live-log' ).children( 'textarea' ).each( function () {
+ this.scrollTop = this.scrollHeight;
+ } );
+
+ // Show/hide Creative Commons thingy
+ $( '.licenseRadio' ).click( function () {
+ var $wrapper = $( '#config-cc-wrapper' );
+ if ( $( '#config__LicenseCode_cc-choose' ).is( ':checked' ) ) {
+ $wrapper.show( 'slow' );
+ } else {
+ $wrapper.hide( 'slow' );
+ }
+ } );
+
+ // Show/hide random stuff (email, upload)
+ $( '.showHideRadio' ).click( function () {
+ var $wrapper = $( '#' + $(this).attr( 'rel' ) );
+ if ( $(this).is( ':checked' ) ) {
+ $wrapper.show( 'slow' );
+ } else {
+ $wrapper.hide( 'slow' );
+ }
+ } );
+ $( '.hideShowRadio' ).click( function () {
+ var $wrapper = $( '#' + $(this).attr( 'rel' ) );
+ if ( $(this).is( ':checked' ) ) {
+ $wrapper.hide( 'slow' );
+ } else {
+ $wrapper.show( 'slow' );
+ }
+ } );
+
+ // Hide "other" textboxes by default
+ // Should not be done in CSS for javascript disabled compatibility
+ $( '.enabledByOther' ).closest( '.config-block' ).hide();
+
+ // Enable/disable "other" textboxes
+ $( '.enableForOther' ).click( function () {
+ var $textbox = $( document.getElementById( $(this).attr( 'rel' ) ) );
+ // FIXME: Ugh, this is ugly
+ if ( $(this).val() === 'other' ) {
+ $textbox.removeProp( 'readonly' ).closest( '.config-block' ).slideDown( 'fast' );
+ } else {
+ $textbox.prop( 'readonly', true ).closest( '.config-block' ).slideUp( 'fast' );
+ }
+ } );
+
+ // Synchronize radio button label for sitename with textbox
+ $label = $( 'label[for=config__NamespaceType_site-name]' );
+ labelText = $label.text();
+ $label.text( labelText.replace( '$1', '' ) );
+ $( '#config_wgSitename' ).on( 'keyup change', syncText ).each( syncText );
+
+ // Show/Hide memcached servers when needed
+ $( 'input[name$="config_wgMainCacheType"]' ).change( function () {
+ var $memc = $( '#config-memcachewrapper' );
+ if ( $( 'input[name$="config_wgMainCacheType"]:checked' ).val() === 'memcached' ) {
+ $memc.show( 'slow' );
+ } else {
+ $memc.hide( 'slow' );
+ }
+ } );
+ } );
+}( jQuery ) );
'mediawiki.special.changeslist.enhanced' => array(
'styles' => 'resources/src/mediawiki.special/mediawiki.special.changeslist.enhanced.css',
),
+ 'mediawiki.special.import' => array(
+ 'scripts' => 'resources/src/mediawiki.special/mediawiki.special.import.js',
+ ),
'mediawiki.special.movePage' => array(
'scripts' => 'resources/src/mediawiki.special/mediawiki.special.movePage.js',
'dependencies' => 'jquery.byteLimit',
'styles' => 'resources/src/mediawiki.special/mediawiki.special.version.css',
),
+ /* MediaWiki Installer */
+
+ 'mediawiki.legacy.config' => array(
+ // Used in the web installer. Test it after modifying this definition!
+ // These files are not actually loaded via ResourceLoader, so dependencies etc. won't work.
+ 'scripts' => 'mw-config/config.js',
+ 'styles' => 'mw-config/config.css',
+ ),
+
/* MediaWiki Legacy */
'mediawiki.legacy.ajax' => array(
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
- 'mediawiki.legacy.config' => array(
- // Used in the web installer. Test it after modifying this definition!
- 'scripts' => 'common/config.js',
- 'styles' => array( 'common/config.css' ),
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'dependencies' => 'mediawiki.legacy.wikibits',
- ),
'mediawiki.legacy.protect' => array(
'scripts' => 'common/protect.js',
'remoteBasePath' => $GLOBALS['wgStylePath'],
--- /dev/null
+/*!
+ * JavaScript for Special:Import
+ */
+( function ( $ ) {
+ function updateImportSubprojectList() {
+ var $projectField = $( '#mw-import-table-interwiki #interwiki' ),
+ $subprojectField = $projectField.parent().find( '#subproject' ),
+ $selected = $projectField.find( ':selected' ),
+ oldValue = $subprojectField.val(),
+ option, options;
+
+ if ( $selected.attr( 'data-subprojects' ) ) {
+ options = $.map( $selected.attr( 'data-subprojects' ).split( ' ' ), function ( el ) {
+ option = document.createElement( 'option' );
+ option.appendChild( document.createTextNode( el ) );
+ option.setAttribute( 'value', el );
+ if ( oldValue === el ) {
+ option.setAttribute( 'selected', 'selected' );
+ }
+ return option;
+ } );
+ $subprojectField.show().empty().append( options );
+ } else {
+ $subprojectField.hide();
+ }
+ }
+
+ $( function () {
+ var $projectField = $( '#mw-import-table-interwiki #interwiki' );
+ if ( $projectField.length ) {
+ $projectField.change( updateImportSubprojectList );
+ updateImportSubprojectList();
+ }
+ } );
+}( jQuery ) );
} );
} ).trigger( 'change' );
+ // When saving settings, use the proper request method (POST instead of GET).
+ $( '#mw-search-powersearch-remember' ).change( function () {
+ this.form.method = this.checked ? 'post' : 'get';
+ } ).trigger( 'change' );
+
} );
}( mediaWiki, jQuery ) );
// Remove focus glow on input[type="search"]
outline: 0;
}
+
+ // Remove red outline from inputs which have required field and invalid content.
+ // This is a Firefox only issue
+ // See https://developer.mozilla.org/en-US/docs/Web/CSS/:invalid
+ &:invalid {
+ box-shadow: none;
+ }
}
textarea.mw-ui-input {
+++ /dev/null
-/**
- * Copy of CC standard stylesheet, plus tweaks for iframe usage
- */
-
-body {
- margin: 0;
- background: #eee;
- font-family: Verdana;
- color: #333;
-}
-
-#main {
- border: 1px solid #D0D0D0;
- background: #fff;
- margin: 0.5em;
-}
-
-/**
- * Looks like you have to specify the width of #menu
- * or IE5 Mac stretches it all the way across the div, and
- * Opera streches it half way.
- */
-
-#main #menu {
- border-left: 1px dotted #ccc;
- float: right;
- width: 230px;
- background: white;
- margin: 0 0 10px 10px;
-}
-
-td, h3, p, h1, pre {
- margin: 0 20px 20px 20px;
- font-size: 11px;
- line-height: 140%;
-}
-
-.header {
- padding-left: 10px;
- padding-top: 10px;
-}
-
-.nav {
- padding-left: 10px;
- padding-bottom: 10px;
- font-size: 11px;
- margin-bottom: 16px;
-}
-
-#menu p {
- font-size: 11px;
-}
-
-.dent {
- margin-left: 64px;
-}
+++ /dev/null
-.env-check {
- font-size: 90%;
- margin: 1em 0 1em 2.5em;
-}
-
-.config-section {
- margin-top: 2em;
-}
-
-.config-block {
- margin-top: 2em;
- display: block;
-
-}
-
-.config-block-label {
- display: block;
- margin-bottom: .2em;
-}
-
-.config-block-label label, .config-label {
- font-weight: bold;
- padding-right: .5em;
- padding-top: .2em;
-}
-
-.config-block-elements {
- margin-left: 2em;
-}
-
-.config-block-elements li {
- list-style: none;
-}
-
-.config-input {
- clear: left;
- zoom: 100%; /* IE hack */
-}
-
-.config-page-wrapper {
- padding: 0.5em;
-}
-
-.config-page-list {
- float: right;
- width: 12em;
- border: 1px solid #aaa;
- background: #fff;
- padding: 0.5em;
- /* 3em left margin to leave space between the list and the page-content */
- margin: 0.5em 0.5em 0.5em 3.5em;
-}
-
-.config-page {
- padding: 0.5em 0.5em 0.5em 2em;
- margin: 0.5em 0.5em 0.5em 0.5em;
- background: #eee;
-}
-
-.config-submit {
- clear: left;
- text-align: center;
- padding: 1em;
-}
-
-.config-submit input {
- margin-left: 0.5em;
- margin-right: 0.5em;
-}
-
-.config-page-disabled {
- color: #aaa;
-}
-
-.config-error-box {
- border: 2px solid #f00;
-}
-
-.config-page-current {
- font-weight: bold;
-}
-
-.config-message {
- display: list-item;
- line-height: 1.5em;
- /* @embed */
- list-style-image: url(images/bullet.gif);
- list-style-type: square;
-}
-
-.config-input-text {
- width: 20em;
- margin-right: 1em;
-}
-
-.config-input-check {
- margin-left: 10em;
-}
-
-.config-skins-item {
- /* Clearfix */
- clear: left;
- overflow: hidden;
-}
-
-.config-skins-item .config-input-check {
- margin-left: 10em;
- width: 20em;
- float: left;
-}
-
-.config-skins-item .config-skins-use-as-default {
- float: left;
-}
-
-.error {
- color: red;
- background-color: #fff;
- font-weight: bold;
- left: 1em;
- font-size: 100%;
-}
-
-.config-settings-block {
- list-style-type: none;
- list-style-image: none;
- margin: 0;
- padding: 0;
-}
-
-.btn-install {
- font-weight: bold;
- font-size: 110%;
- padding: .2em .3em;
-}
-
-.success-message {
- font-weight: bold;
- font-size: 110%;
- color: green;
-}
-
-.success-box {
- font-size: 130%;
-}
-
-.config-cc-wrapper {
- clear: left;
- /* If you change this height, also change it in WebInstallerOptions::submitCC() */
- height: 54em;
-}
-
-.config-plainlink a {
- background: none !important;
- padding: 0 !important;
-}
-
-.config-download-link {
- font-size: 1.8em;
- margin-left: 2em;
-}
-
-.config-download-link a {
- background: url(images/download-32.png) no-repeat center left;
- padding-left: 40px; /* 32 px for the image (above), plus some breathing room */
- height: 32px; /* provide enough vertical room for the image */
- display: inline-block; /* allow the height property (above) to work */
- line-height: 32px; /* center the text vertically */
-}
-
-#config-live-log {
- overflow: hidden;
- min-width: 20em;
-}
+++ /dev/null
-( function ( $ ) {
- $( function () {
- var $label, labelText;
-
- function syncText() {
- var value = $(this).val()
- .replace( /[\[\]\{\}|#<>%+? ]/g, '_' )
- .replace( /&/, '&' )
- .replace( /__+/g, '_' )
- .replace( /^_+/, '' )
- .replace( /_+$/, '' );
- value = value.substr( 0, 1 ).toUpperCase() + value.substr( 1 );
- $label.text( labelText.replace( '$1', value ) );
- }
-
- // Set up the help system
- $( '.mw-help-field-data' )
- .hide()
- .closest( '.mw-help-field-container' )
- .find( '.mw-help-field-hint' )
- .show()
- .click( function () {
- $(this)
- .closest( '.mw-help-field-container' )
- .find( '.mw-help-field-data' )
- .slideToggle( 'fast' );
- } );
-
- // Show/hide code for DB-specific options
- // FIXME: Do we want slow, fast, or even non-animated (instantaneous) showing/hiding here?
- $( '.dbRadio' ).each( function () {
- $( document.getElementById( $(this).attr( 'rel' ) ) ).hide();
- } );
- $( document.getElementById( $( '.dbRadio:checked' ).attr( 'rel' ) ) ).show();
- $( '.dbRadio' ).click( function () {
- var $checked = $( '.dbRadio:checked' ),
- $wrapper = $( document.getElementById( $checked.attr( 'rel' ) ) );
- if ( $wrapper.is( ':hidden' ) ) {
- $( '.dbWrapper' ).hide( 'slow' );
- $wrapper.show( 'slow' );
- }
- } );
-
- // Scroll to the bottom of upgrade log
- $( '#config-live-log' ).children( 'textarea' ).each( function () {
- this.scrollTop = this.scrollHeight;
- } );
-
- // Show/hide Creative Commons thingy
- $( '.licenseRadio' ).click( function () {
- var $wrapper = $( '#config-cc-wrapper' );
- if ( $( '#config__LicenseCode_cc-choose' ).is( ':checked' ) ) {
- $wrapper.show( 'slow' );
- } else {
- $wrapper.hide( 'slow' );
- }
- } );
-
- // Show/hide random stuff (email, upload)
- $( '.showHideRadio' ).click( function () {
- var $wrapper = $( '#' + $(this).attr( 'rel' ) );
- if ( $(this).is( ':checked' ) ) {
- $wrapper.show( 'slow' );
- } else {
- $wrapper.hide( 'slow' );
- }
- } );
- $( '.hideShowRadio' ).click( function () {
- var $wrapper = $( '#' + $(this).attr( 'rel' ) );
- if ( $(this).is( ':checked' ) ) {
- $wrapper.hide( 'slow' );
- } else {
- $wrapper.show( 'slow' );
- }
- } );
-
- // Hide "other" textboxes by default
- // Should not be done in CSS for javascript disabled compatibility
- $( '.enabledByOther' ).closest( '.config-block' ).hide();
-
- // Enable/disable "other" textboxes
- $( '.enableForOther' ).click( function () {
- var $textbox = $( document.getElementById( $(this).attr( 'rel' ) ) );
- // FIXME: Ugh, this is ugly
- if ( $(this).val() === 'other' ) {
- $textbox.removeProp( 'readonly' ).closest( '.config-block' ).slideDown( 'fast' );
- } else {
- $textbox.prop( 'readonly', true ).closest( '.config-block' ).slideUp( 'fast' );
- }
- } );
-
- // Synchronize radio button label for sitename with textbox
- $label = $( 'label[for=config__NamespaceType_site-name]' );
- labelText = $label.text();
- $label.text( labelText.replace( '$1', '' ) );
- $( '#config_wgSitename' ).on( 'keyup change', syncText ).each( syncText );
-
- // Show/Hide memcached servers when needed
- $( 'input[name$="config_wgMainCacheType"]' ).change( function () {
- var $memc = $( '#config-memcachewrapper' );
- if ( $( 'input[name$="config_wgMainCacheType"]:checked' ).val() === 'memcached' ) {
- $memc.show( 'slow' );
- } else {
- $memc.hide( 'slow' );
- }
- } );
- } );
-}( jQuery ) );
);
}
- // @codingStandardsIgnoreStart Ignore long line warning
/**
* @dataProvider provideTitles
+ * @codingStandardsIgnoreStart Ignore long line warning
* See http://phpunit.de/manual/3.7/en/appendixes.annotations.html#appendixes.annotations.dataProvider
+ * @codingStandardsIgnoreEnd
*/
- // @codingStandardsIgnoreEnd
public function testCreateBasicListOfTitles( $titleName, $ns, $text ) {
$title = Title::newFromText( $titleName, $ns );
$this->assertEquals( $text, "$title", "see if '$titleName' matches '$text'" );