'Autopromote' => 'includes/Autopromote.php',
'Block' => 'includes/Block.php',
'Category' => 'includes/Category.php',
- 'Categoryfinder' => 'includes/Categoryfinder.php',
+ 'CategoryFinder' => 'includes/CategoryFinder.php',
'CategoryViewer' => 'includes/CategoryViewer.php',
'ChangeTags' => 'includes/ChangeTags.php',
'ChannelFeed' => 'includes/Feed.php',
--- /dev/null
+<?php
+/**
+ * Recent changes filtering by category.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * The "CategoryFinder" class takes a list of articles, creates an internal
+ * representation of all their parent categories (as well as parents of
+ * parents etc.). From this representation, it determines which of these
+ * articles are in one or all of a given subset of categories.
+ *
+ * Example use :
+ * <code>
+ * # Determines whether the article with the page_id 12345 is in both
+ * # "Category 1" and "Category 2" or their subcategories, respectively
+ *
+ * $cf = new CategoryFinder;
+ * $cf->seed(
+ * array( 12345 ),
+ * array( 'Category 1', 'Category 2' ),
+ * 'AND'
+ * );
+ * $a = $cf->run();
+ * print implode( ',' , $a );
+ * </code>
+ *
+ */
+class CategoryFinder {
+ /** @var int[] The original article IDs passed to the seed function */
+ protected $articles = array();
+
+ /** @var array Array of DBKEY category names for categories that don't have a page */
+ protected $deadend = array();
+
+ /** @var array Array of [ID => array()] */
+ protected $parents = array();
+
+ /** @var array Array of article/category IDs */
+ protected $next = array();
+
+ /** @var array Array of DBKEY category names */
+ protected $targets = array();
+
+ /** @var array */
+ protected $name2id = array();
+
+ /** @var string "AND" or "OR" */
+ protected $mode;
+
+ /** @var DatabaseBase Read-DB slave */
+ protected $dbr;
+
+ /**
+ * Initializes the instance. Do this prior to calling run().
+ * @param array $articleIds Array of article IDs
+ * @param array $categories FIXME
+ * @param string $mode FIXME, default 'AND'.
+ * @todo FIXME: $categories/$mode
+ */
+ public function seed( $articleIds, $categories, $mode = 'AND' ) {
+ $this->articles = $articleIds;
+ $this->next = $articleIds;
+ $this->mode = $mode;
+
+ # Set the list of target categories; convert them to DBKEY form first
+ $this->targets = array();
+ foreach ( $categories as $c ) {
+ $ct = Title::makeTitleSafe( NS_CATEGORY, $c );
+ if ( $ct ) {
+ $c = $ct->getDBkey();
+ $this->targets[$c] = $c;
+ }
+ }
+ }
+
+ /**
+ * Iterates through the parent tree starting with the seed values,
+ * then checks the articles if they match the conditions
+ * @return array Array of page_ids (those given to seed() that match the conditions)
+ */
+ public function run() {
+ $this->dbr = wfGetDB( DB_SLAVE );
+ while ( count( $this->next ) > 0 ) {
+ $this->scanNextLayer();
+ }
+
+ # Now check if this applies to the individual articles
+ $ret = array();
+
+ foreach ( $this->articles as $article ) {
+ $conds = $this->targets;
+ if ( $this->check( $article, $conds ) ) {
+ # Matches the conditions
+ $ret[] = $article;
+ }
+ }
+ return $ret;
+ }
+
+ /**
+ * This functions recurses through the parent representation, trying to match the conditions
+ * @param int $id The article/category to check
+ * @param array $conds The array of categories to match
+ * @param array $path Used to check for recursion loops
+ * @return bool Does this match the conditions?
+ */
+ private function check( $id, &$conds, $path = array() ) {
+ // Check for loops and stop!
+ if ( in_array( $id, $path ) ) {
+ return false;
+ }
+
+ $path[] = $id;
+
+ # Shortcut (runtime paranoia): No conditions=all matched
+ if ( count( $conds ) == 0 ) {
+ return true;
+ }
+
+ if ( !isset( $this->parents[$id] ) ) {
+ return false;
+ }
+
+ # iterate through the parents
+ foreach ( $this->parents[$id] as $p ) {
+ $pname = $p->cl_to;
+
+ # Is this a condition?
+ if ( isset( $conds[$pname] ) ) {
+ # This key is in the category list!
+ if ( $this->mode == 'OR' ) {
+ # One found, that's enough!
+ $conds = array();
+ return true;
+ } else {
+ # Assuming "AND" as default
+ unset( $conds[$pname] );
+ if ( count( $conds ) == 0 ) {
+ # All conditions met, done
+ return true;
+ }
+ }
+ }
+
+ # Not done yet, try sub-parents
+ if ( !isset( $this->name2id[$pname] ) ) {
+ # No sub-parent
+ continue;
+ }
+ $done = $this->check( $this->name2id[$pname], $conds, $path );
+ if ( $done || count( $conds ) == 0 ) {
+ # Subparents have done it!
+ return true;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Scans a "parent layer" of the articles/categories in $this->next
+ */
+ private function scanNextLayer() {
+ $profiler = new ProfileSection( __METHOD__ );
+
+ # Find all parents of the article currently in $this->next
+ $layer = array();
+ $res = $this->dbr->select(
+ /* FROM */ 'categorylinks',
+ /* SELECT */ '*',
+ /* WHERE */ array( 'cl_from' => $this->next ),
+ __METHOD__ . '-1'
+ );
+ foreach ( $res as $o ) {
+ $k = $o->cl_to;
+
+ # Update parent tree
+ if ( !isset( $this->parents[$o->cl_from] ) ) {
+ $this->parents[$o->cl_from] = array();
+ }
+ $this->parents[$o->cl_from][$k] = $o;
+
+ # Ignore those we already have
+ if ( in_array( $k, $this->deadend ) ) {
+ continue;
+ }
+
+ if ( isset( $this->name2id[$k] ) ) {
+ continue;
+ }
+
+ # Hey, new category!
+ $layer[$k] = $k;
+ }
+
+ $this->next = array();
+
+ # Find the IDs of all category pages in $layer, if they exist
+ if ( count( $layer ) > 0 ) {
+ $res = $this->dbr->select(
+ /* FROM */ 'page',
+ /* SELECT */ array( 'page_id', 'page_title' ),
+ /* WHERE */ array( 'page_namespace' => NS_CATEGORY, 'page_title' => $layer ),
+ __METHOD__ . '-2'
+ );
+ foreach ( $res as $o ) {
+ $id = $o->page_id;
+ $name = $o->page_title;
+ $this->name2id[$name] = $id;
+ $this->next[] = $id;
+ unset( $layer[$name] );
+ }
+ }
+
+ # Mark dead ends
+ foreach ( $layer as $v ) {
+ $this->deadend[$v] = $v;
+ }
+ }
+}
+++ /dev/null
-<?php
-/**
- * Recent changes filtering by category.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- */
-
-/**
- * The "Categoryfinder" class takes a list of articles, creates an internal
- * representation of all their parent categories (as well as parents of
- * parents etc.). From this representation, it determines which of these
- * articles are in one or all of a given subset of categories.
- *
- * Example use :
- * <code>
- * # Determines whether the article with the page_id 12345 is in both
- * # "Category 1" and "Category 2" or their subcategories, respectively
- *
- * $cf = new Categoryfinder;
- * $cf->seed(
- * array( 12345 ),
- * array( 'Category 1', 'Category 2' ),
- * 'AND'
- * );
- * $a = $cf->run();
- * print implode( ',' , $a );
- * </code>
- *
- */
-class Categoryfinder {
- /** @var int[] The original article IDs passed to the seed function */
- protected $articles = array();
-
- /** @var array Array of DBKEY category names for categories that don't have a page */
- protected $deadend = array();
-
- /** @var array Array of [ID => array()] */
- protected $parents = array();
-
- /** @var array Array of article/category IDs */
- protected $next = array();
-
- /** @var array Array of DBKEY category names */
- protected $targets = array();
-
- /** @var array */
- protected $name2id = array();
-
- /** @var string "AND" or "OR" */
- protected $mode;
-
- /** @var DatabaseBase Read-DB slave */
- protected $dbr;
-
- function __construct() {
- }
-
- /**
- * Initializes the instance. Do this prior to calling run().
- * @param array $article_ids Array of article IDs
- * @param array $categories FIXME
- * @param string $mode FIXME, default 'AND'.
- * @todo FIXME: $categories/$mode
- */
- function seed( $article_ids, $categories, $mode = 'AND' ) {
- $this->articles = $article_ids;
- $this->next = $article_ids;
- $this->mode = $mode;
-
- # Set the list of target categories; convert them to DBKEY form first
- $this->targets = array();
- foreach ( $categories as $c ) {
- $ct = Title::makeTitleSafe( NS_CATEGORY, $c );
- if ( $ct ) {
- $c = $ct->getDBkey();
- $this->targets[$c] = $c;
- }
- }
- }
-
- /**
- * Iterates through the parent tree starting with the seed values,
- * then checks the articles if they match the conditions
- * @return array Array of page_ids (those given to seed() that match the conditions)
- */
- function run() {
- $this->dbr = wfGetDB( DB_SLAVE );
- while ( count( $this->next ) > 0 ) {
- $this->scan_next_layer();
- }
-
- # Now check if this applies to the individual articles
- $ret = array();
-
- foreach ( $this->articles as $article ) {
- $conds = $this->targets;
- if ( $this->check( $article, $conds ) ) {
- # Matches the conditions
- $ret[] = $article;
- }
- }
- return $ret;
- }
-
- /**
- * This functions recurses through the parent representation, trying to match the conditions
- * @param int $id The article/category to check
- * @param array $conds The array of categories to match
- * @param array $path Used to check for recursion loops
- * @return bool Does this match the conditions?
- */
- function check( $id, &$conds, $path = array() ) {
- // Check for loops and stop!
- if ( in_array( $id, $path ) ) {
- return false;
- }
-
- $path[] = $id;
-
- # Shortcut (runtime paranoia): No conditions=all matched
- if ( count( $conds ) == 0 ) {
- return true;
- }
-
- if ( !isset( $this->parents[$id] ) ) {
- return false;
- }
-
- # iterate through the parents
- foreach ( $this->parents[$id] as $p ) {
- $pname = $p->cl_to;
-
- # Is this a condition?
- if ( isset( $conds[$pname] ) ) {
- # This key is in the category list!
- if ( $this->mode == 'OR' ) {
- # One found, that's enough!
- $conds = array();
- return true;
- } else {
- # Assuming "AND" as default
- unset( $conds[$pname] );
- if ( count( $conds ) == 0 ) {
- # All conditions met, done
- return true;
- }
- }
- }
-
- # Not done yet, try sub-parents
- if ( !isset( $this->name2id[$pname] ) ) {
- # No sub-parent
- continue;
- }
- $done = $this->check( $this->name2id[$pname], $conds, $path );
- if ( $done || count( $conds ) == 0 ) {
- # Subparents have done it!
- return true;
- }
- }
- return false;
- }
-
- /**
- * Scans a "parent layer" of the articles/categories in $this->next
- */
- function scan_next_layer() {
- wfProfileIn( __METHOD__ );
-
- # Find all parents of the article currently in $this->next
- $layer = array();
- $res = $this->dbr->select(
- /* FROM */ 'categorylinks',
- /* SELECT */ '*',
- /* WHERE */ array( 'cl_from' => $this->next ),
- __METHOD__ . '-1'
- );
- foreach ( $res as $o ) {
- $k = $o->cl_to;
-
- # Update parent tree
- if ( !isset( $this->parents[$o->cl_from] ) ) {
- $this->parents[$o->cl_from] = array();
- }
- $this->parents[$o->cl_from][$k] = $o;
-
- # Ignore those we already have
- if ( in_array( $k, $this->deadend ) ) {
- continue;
- }
-
- if ( isset( $this->name2id[$k] ) ) {
- continue;
- }
-
- # Hey, new category!
- $layer[$k] = $k;
- }
-
- $this->next = array();
-
- # Find the IDs of all category pages in $layer, if they exist
- if ( count( $layer ) > 0 ) {
- $res = $this->dbr->select(
- /* FROM */ 'page',
- /* SELECT */ array( 'page_id', 'page_title' ),
- /* WHERE */ array( 'page_namespace' => NS_CATEGORY, 'page_title' => $layer ),
- __METHOD__ . '-2'
- );
- foreach ( $res as $o ) {
- $id = $o->page_id;
- $name = $o->page_title;
- $this->name2id[$name] = $id;
- $this->next[] = $id;
- unset( $layer[$name] );
- }
- }
-
- # Mark dead ends
- foreach ( $layer as $v ) {
- $this->deadend[$v] = $v;
- }
-
- wfProfileOut( __METHOD__ );
- }
-}
$wgOut->addHTML( $this->editFormTextBeforeContent );
- if ( $this->contentModel === CONTENT_MODEL_WIKITEXT &&
- $showToolbar && $wgUser->getOption( 'showtoolbar' ) )
- {
+ if ( !$this->isCssJsSubpage && $showToolbar && $wgUser->getOption( 'showtoolbar' ) ) {
$wgOut->addHTML( EditPage::getEditToolbar() );
}
*/
class OldChangesList extends ChangesList {
+
/**
* Format a line using the old system (aka without any javascript).
*
public function recentChangesLine( &$rc, $watched = false, $linenumber = null ) {
wfProfileIn( __METHOD__ );
- # Should patrol-related stuff be shown?
- $unpatrolled = $this->showAsUnpatrolled( $rc );
-
- $s = '';
$classes = array();
// use mw-line-even/mw-line-odd class only if linenumber is given (feature from bug 14468)
if ( $linenumber ) {
$classes[] = $watched && $rc->mAttribs['rc_timestamp'] >= $watched
? 'mw-changeslist-line-watched' : 'mw-changeslist-line-not-watched';
+ $html = $this->formatChangeLine( $rc, $watched );
+
+ if ( $this->watchlist ) {
+ $classes[] = Sanitizer::escapeClass( 'watchlist-' .
+ $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title'] );
+ }
+
+ if ( !wfRunHooks( 'OldChangesListRecentChangesLine', array( &$this, &$html, $rc, &$classes ) ) ) {
+ wfProfileOut( __METHOD__ );
+
+ return false;
+ }
+
+ wfProfileOut( __METHOD__ );
+
+ $dateheader = ''; // $html now contains only <li>...</li>, for hooks' convenience.
+ $this->insertDateHeader( $dateheader, $rc->mAttribs['rc_timestamp'] );
+
+ return "$dateheader<li class=\"" . implode( ' ', $classes ) . "\">" . $html . "</li>\n";
+ }
+
+ /**
+ * @param RecentChange $rc
+ * @param boolean $watched
+ *
+ * @return string
+ */
+ private function formatChangeLine( RecentChange $rc, $watched ) {
+ $html = '';
+
if ( $rc->mAttribs['rc_log_type'] ) {
$logtitle = SpecialPage::getTitleFor( 'Log', $rc->mAttribs['rc_log_type'] );
- $this->insertLog( $s, $logtitle, $rc->mAttribs['rc_log_type'] );
+ $this->insertLog( $html, $logtitle, $rc->mAttribs['rc_log_type'] );
// Log entries (old format) or log targets, and special pages
} elseif ( $rc->mAttribs['rc_namespace'] == NS_SPECIAL ) {
- list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $rc->mAttribs['rc_title'] );
+ list( $name, $htmlubpage ) = SpecialPageFactory::resolveAlias( $rc->mAttribs['rc_title'] );
if ( $name == 'Log' ) {
- $this->insertLog( $s, $rc->getTitle(), $subpage );
+ $this->insertLog( $html, $rc->getTitle(), $htmlubpage );
}
// Regular entries
} else {
- $this->insertDiffHist( $s, $rc, $unpatrolled );
+ $unpatrolled = $this->showAsUnpatrolled( $rc );
+
+ $this->insertDiffHist( $html, $rc, $unpatrolled );
# M, N, b and ! (minor, new, bot and unpatrolled)
- $s .= $this->recentChangesFlags(
+ $html .= $this->recentChangesFlags(
array(
'newpage' => $rc->mAttribs['rc_type'] == RC_NEW,
'minor' => $rc->mAttribs['rc_minor'],
),
''
);
- $this->insertArticleLink( $s, $rc, $unpatrolled, $watched );
+ $this->insertArticleLink( $html, $rc, $unpatrolled, $watched );
}
# Edit/log timestamp
- $this->insertTimestamp( $s, $rc );
+ $this->insertTimestamp( $html, $rc );
# Bytes added or removed
if ( $this->getConfig()->get( 'RCShowChangedSize' ) ) {
$cd = $this->formatCharacterDifference( $rc );
if ( $cd !== '' ) {
- $s .= $cd . ' <span class="mw-changeslist-separator">. .</span> ';
+ $html .= $cd . ' <span class="mw-changeslist-separator">. .</span> ';
}
}
if ( $rc->mAttribs['rc_type'] == RC_LOG ) {
- $s .= $this->insertLogEntry( $rc );
+ $html .= $this->insertLogEntry( $rc );
} else {
# User tool links
- $this->insertUserRelatedLinks( $s, $rc );
+ $this->insertUserRelatedLinks( $html, $rc );
# LTR/RTL direction mark
- $s .= $this->getLanguage()->getDirMark();
- $s .= $this->insertComment( $rc );
+ $html .= $this->getLanguage()->getDirMark();
+ $html .= $this->insertComment( $rc );
}
# Tags
- $this->insertTags( $s, $rc, $classes );
+ $this->insertTags( $html, $rc, $classes );
# Rollback
- $this->insertRollback( $s, $rc );
+ $this->insertRollback( $html, $rc );
# For subclasses
- $this->insertExtra( $s, $rc, $classes );
+ $this->insertExtra( $html, $rc, $classes );
# How many users watch this page
if ( $rc->numberofWatchingusers > 0 ) {
- $s .= ' ' . $this->numberofWatchingusers( $rc->numberofWatchingusers );
- }
-
- if ( $this->watchlist ) {
- $classes[] = Sanitizer::escapeClass( 'watchlist-' .
- $rc->mAttribs['rc_namespace'] . '-' . $rc->mAttribs['rc_title'] );
+ $html .= ' ' . $this->numberofWatchingusers( $rc->numberofWatchingusers );
}
- if ( !wfRunHooks( 'OldChangesListRecentChangesLine', array( &$this, &$s, $rc, &$classes ) ) ) {
- wfProfileOut( __METHOD__ );
-
- return false;
- }
-
- wfProfileOut( __METHOD__ );
-
- $dateheader = ''; // $s now contains only <li>...</li>, for hooks' convenience.
- $this->insertDateHeader( $dateheader, $rc->mAttribs['rc_timestamp'] );
-
- return "$dateheader<li class=\"" . implode( ' ', $classes ) . "\">" . $s . "</li>\n";
+ return $html;
}
}
'undoafter' => $this->mOldid,
'undo' => $this->mNewid
) ),
- 'title' => Linker::titleAttrib( 'undo' )
+ 'title' => Linker::titleAttrib( 'undo' ),
),
$this->msg( 'editundo' )->text()
);
- $revisionTools[] = $undoLink;
+ $revisionTools['mw-diff-undo'] = $undoLink;
}
}
wfRunHooks( 'DiffRevisionTools', array( $this->mNewRev, &$revisionTools, $this->mOldRev ) );
$formattedRevisionTools = array();
// Put each one in parentheses (poor man's button)
- foreach ( $revisionTools as $tool ) {
- $formattedRevisionTools[] = $this->msg( 'parentheses' )->rawParams( $tool )->escaped();
+ foreach ( $revisionTools as $key => $tool ) {
+ $toolClass = is_string( $key ) ? $key : 'mw-diff-tool';
+ $element = Html::rawElement(
+ 'span',
+ array( 'class' => $toolClass ),
+ $this->msg( 'parentheses' )->rawParams( $tool )->escaped()
+ );
+ $formattedRevisionTools[] = $element;
}
$newRevisionHeader = $this->getRevisionHeader( $this->mNewRev, 'complete' ) .
' ' . implode( ' ', $formattedRevisionTools );
$key = $title->quickUserCan( 'edit', $user ) ? 'editold' : 'viewsourceold';
$msg = $this->msg( $key )->escaped();
- $header .= ' ' . $this->msg( 'parentheses' )->rawParams(
- Linker::linkKnown( $title, $msg, array(), $editQuery ) )->plain();
+ $editLink = $this->msg( 'parentheses' )->rawParams(
+ Linker::linkKnown( $title, $msg, array( ), $editQuery ) )->plain();
+ $header .= ' ' . Html::rawElement(
+ 'span',
+ array( 'class' => 'mw-diff-edit' ),
+ $editLink
+ );
if ( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
$header = Html::rawElement(
'span',
"config-session-expired": "Tus datos de sesión parecen haber expirado.\nLas sesiones están configuradas por una duración de $1.\nPuedes incrementar esto configurando <code>session.gc_maxlifetime</code> en php.ini.\nReiniciar el proceso de instalación.",
"config-no-session": "Se han perdido los datos de sesión.\nVerifica tu php.ini y comprueba que <code>session.save_path</code> está establecido en un directorio apropiado.",
"config-your-language": "Tu idioma:",
- "config-your-language-help": "Seleccionar un idioma a usar durante el proceso de instalación.",
+ "config-your-language-help": "Selecciona un idioma para usar durante el proceso de instalación.",
"config-wiki-language": "Idioma del wiki:",
- "config-wiki-language-help": "Seleccionar el idioma en el que el wiki será escrito predominantemente.",
+ "config-wiki-language-help": "Selecciona el idioma en el que se escribirá predominantemente el wiki.",
"config-back": "← Atrás",
"config-continue": "Continuar →",
"config-page-language": "Idioma",
"config-no-cache": "'''Advertencia:''' No pudo encontrarse [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache].\nEl caché de objetos no está habilitado.",
"config-mod-security": "''' Advertencia ''': Su servidor web tiene [http://modsecurity.org/ mod_security] habilitado. Si la configuración es incorrecta, puede causar problemas a MediaWiki u otro software que permita a los usuarios publicar contenido arbitrarios.\nConsulte la [http://modsecurity.org/documentation/ documentación de mod_security] o contacte con el soporte de su servidor (''host'') si encuentra errores aleatorios.",
"config-diff3-bad": "GNU diff3 no se encuentra.",
- "config-git": "Se encontró el ''software'' de control de versiones Git: <code>$1</code>.",
+ "config-git": "Se encontró el software de control de versiones Git: <code>$1</code>.",
"config-git-bad": "No se encontró el software de control de versiones Git.",
"config-imagemagick": "ImageMagick encontrado: <code>$1</code>.\nLa miniaturización de imágenes se habilitará si habilitas las cargas.",
"config-gd": "Se ha encontrado una biblioteca de gráficos GD integrada.\nLa miniaturización de imágenes se habilitará si habilitas las subidas.",
"config-no-scaling": "No se ha encontrado ninguma biblioteca GD o ImageMagik.\nSe inhabilitará la miniaturización de imágenes.",
- "config-no-uri": "'''Error:''' No se pudo determinar el URI actual.\nSe interrumpió la instalación.",
+ "config-no-uri": "<strong>Error:</strong> no se pudo determinar el URI actual.\nSe interrumpió la instalación.",
"config-no-cli-uri": "<strong>Aviso:</strong> No se especificó <code>--scriptpath</code>; se usa el valor predeterminado: <code>$1</code>.",
"config-using-server": "Utilizando el nombre de servidor \"<nowiki>$1</nowiki>\".",
- "config-using-uri": "Utilizando la dirección URL del servidor \"<nowiki>$1$2</nowiki>\".",
+ "config-using-uri": "Utilizando la URL del servidor \"<nowiki>$1$2</nowiki>\".",
"config-uploads-not-safe": "'''Atención:''' Su directorio por defecto para las cargas, <code>$1</code>, es vulnerable a la ejecución de scripts arbitrarios.\nAunque MediaWiki comprueba todos los archivos cargados por si hubiese amenazas de seguridad, es altamente recomendable [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Security#Upload_security cerrar esta vulnerabilidad de seguridad] antes de activar las cargas.",
"config-no-cli-uploads-check": "'''Atención:''' Su directorio predeterminado para cargas (<code>$1</code>) no está comprobado para la vulnerabilidad\n de ejecución arbitraria de comandos script durante la instalación de CLI.",
"config-brokenlibxml": "El sistema tiene una combinación de versiones de PHP y de libxml2 que es poco confiable y puede provocar corrupción oculta en los datos de MediaWiki y otras aplicaciones web.\nActualizar a PHP 5.2.9 o posterior y a libxml2 2.7.3 o posterior ([//bugs.php.net/bug.php?id=45996 bug reportado con PHP]).\nInstalación abortada.",
"config-suhosin-max-value-length": "Suhosin está instalado y limita el parámetro <code>length</code> GET a $1 bytes.\nEl componente ResourceLoader (gestor de recursos) de MediaWiki trabajará en este límite, pero eso perjudicará el rendimiento.\nSi es posible, deberías establecer <code>suhosin.get.max_value_length</code> en el valor 1024 o superior en <code>php.ini</code> y establecer <code>$wgResourceLoaderMaxQueryLength</code> en el mismo valor en <code>php.ini</code>.",
- "config-db-type": "Tipo de base de datos",
+ "config-db-type": "Tipo de base de datos:",
"config-db-host": "Servidor de la base de datos:",
"config-db-host-help": "Si su servidor de base de datos está en otro servidor, escriba el nombre del host o su dirección IP aquí.\nSi está utilizando alojamiento web compartido, su proveedor de alojamiento debería darle el nombre correcto del servidor de alojamiento (host) en su documentación.\nSi va a instalarlo en un servidor Windows y utiliza MySQL, el uso de \"localhost\" como nombre del servidor puede no funcionar. Si no es así, intente poner \"127.0.0.1\" como dirección IP local.\nSi utiliza PostgreSQL, deje este campo en blanco para conectarse a través de un socket de Unix.",
"config-db-host-oracle": "TNS de la base de datos:",
"config-db-host-oracle-help": "Introduzca un [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm nombre de conexión local] válido; un archivo tnsnames.ora debe ser visible para esta instalación.<br />Si está utilizando bibliotecas de cliente 10g o más recientes también puede utilizar el método de asignación de nombres [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].",
- "config-db-wiki-settings": "Identifique este wiki",
- "config-db-name": "Nombre de base de datos:",
+ "config-db-wiki-settings": "Identifica este wiki",
+ "config-db-name": "Nombre de la base de datos:",
"config-db-name-help": "Elija un nombre que identifique su wiki.\nNo debe contener espacios.\n\nSi está utilizando alojamiento web compartido, su proveedor de alojamiento le dará un nombre específico de base de datos para que lo utilice, o bien le permitirá crear bases de datos a través de un panel de control.",
- "config-db-name-oracle": "Esquema de base de datos:",
+ "config-db-name-oracle": "Esquema de la base de datos:",
"config-db-account-oracle-warn": "Hay tres escenarios compatibles para la instalación de Oracle como base de datos back-end:\n\nSi desea crear una cuenta de base de datos como parte del proceso de instalación, por favor suministre una cuenta con función SYSDBA como cuenta de base de datos para la instalación y especifique las credenciales deseadas de la cuenta de acceso al web, de lo contrario puede crear manualmente la cuenta de acceso al web y suministrar sólo esa cuenta (si tiene los permisos necesarios para crear los objetos de esquema) o suministrar dos cuentas diferentes, una con privilegios de creación y otra con acceso restringido a la web\n\nLa secuencia de comandos (script) para crear una cuenta con los privilegios necesarios puede encontrarse en el directorio \"maintenance/oracle/\" de esta instalación. Tenga en cuenta que utilizando una cuenta restringida desactivará todas las capacidades de mantenimiento con la cuenta predeterminada.",
"config-db-install-account": "Cuenta de usuario para instalación",
- "config-db-username": "Nombre de usuario de base de datos:",
- "config-db-password": "contraseña de base de datos:",
+ "config-db-username": "Nombre de usuario de la base de datos:",
+ "config-db-password": "Contraseña de la base de datos:",
"config-db-password-empty": "Introduzca una contraseña para el nuevo usuario de base de datos: $1.\nAunque es posible crear usuarios sin contraseña, esto no es seguro.",
"config-db-username-empty": "Debe introducir un valor para \"{{int:config-db-username}}\"",
"config-db-install-username": "Introduzca el nombre de usuario que se utilizará para conectarse a la base de datos durante el proceso de instalación.\nEste no es el nombre de usuario de la cuenta de MediaWiki; Este es el nombre de usuario para la base de datos.",
"config-db-install-password": "Introduzca la contraseña que se utilizará para conectarse a la base de datos durante el proceso de instalación.\nEsta no es la contraseña para la cuenta de MediaWiki; esta es la contraseña para la base de datos.",
"config-db-install-help": "Ingresar el nombre de usuario y la contraseña que será usada para conectar a la base de datos durante el proceso de instalación.",
"config-db-account-lock": "Usar el mismo nombre de usuario y contraseña durante operación normal",
- "config-db-wiki-account": "Usar cuenta para operación normal",
+ "config-db-wiki-account": "Cuenta de usuario para operación normal",
"config-db-wiki-help": "Introduce el nombre de usuario y la contraseña que serán usados para acceder a la base de datos durante la operación normal del wiki.\nSi esta cuenta no existe y la cuenta de instalación tiene suficientes privilegios, se creará esta cuenta de usuario con los privilegios mínimos necesarios para la operación normal del wiki.",
- "config-db-prefix": "Prefijo de tablas de base de datos:",
+ "config-db-prefix": "Prefijo de tablas de la base de datos:",
"config-db-prefix-help": "Si necesita compartir una base de datos entre múltiples wikis, o entre MediaWiki y otra aplicación web, puede optar por agregar un prefijo a todos los nombres de tabla para evitar conflictos.\nNo utilice espacios.\n\nNormalmente se deja este campo vacío.",
"config-db-charset": "Conjunto de caracteres de la base de datos",
"config-charset-mysql5-binary": "MySQL 4.1/5.0 binario",
"config-charset-mysql5": "MySQL 4.1/5.0 UTF-8",
"config-charset-mysql4": "MySQL 4.0 retrocompatible UTF-8",
"config-charset-help": "'''Atención:''' Si emplea '''backwards-compatible UTF-8''' en MySQL 4.1+ y posteriormente hace copia de seguridad de la base de datos con <code>mysqldump</code> , puede destruir todos los caracteres no-ASCII, ¡dañando irreversiblemente sus copias de seguridad!\n\nEn '''modo binario''', MediaWiki almacena texto UTF-8 en la base de datos en campos binarios.\nEsto es más eficiente que el modo UTF-8 de MySQL, y le permite utilizar la gama completa de caracteres Unicode.\nEn ''' modo UTF-8'' ', MySQL sabrá el juego de caracteres de sus datos y puede presentarlos y convertirlos apropiadamente,\npero no le permitirá almacenar caracteres por encima del [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plano multilingüe básico].",
- "config-mysql-old": "Se necesita MySQL $1 o una versión más reciente. Tienes la versión $2.",
+ "config-mysql-old": "Se necesita MySQL $1 o posterior. Tienes $2.",
"config-db-port": "Puerto de la base de datos:",
"config-db-schema": "Esquema para MediaWiki",
"config-db-schema-help": "Estos esquemas usualmente estarán bien.\nAltéralos sólo si tienes la seguridad de que necesitas hacerlo.",
"config-upgrade-done": "Actualización completa.\n\nUsted puede ahora [ $1 empezar a usar su wiki].\n\nSi desea regenerar su archivo <code>LocalSettings.php</code> de archivo, haga clic en el botón de abajo.\nEsto '''no se recomienda''' a menos que esté teniendo problemas con su wiki.",
"config-upgrade-done-no-regenerate": "Actualización completa.\n\nUsted puede ahora [$1 empezar a usar su wiki].",
"config-regenerate": "Regenerar LocalSettings.php →",
- "config-show-table-status": "<code>SHOW TABLE STATUS</code> ha fallado!",
+ "config-show-table-status": "¡Falló la consulta <code>SHOW TABLE STATUS</code>!",
"config-unknown-collation": "'''Advertencia:''' La base de datos está utilizando una intercalación no reconocida.",
- "config-db-web-account": "Cuenta de base de datos para acceso Web",
+ "config-db-web-account": "Cuenta de la base de datos para acceso web",
"config-db-web-help": "Elige el usuario y contraseña que el servidor Web usará para conectarse al servidor de la base de datos durante el fincionamiento normal del wiki.",
"config-db-web-account-same": "Utilizar la misma cuenta que en la instalación",
"config-db-web-create": "Crear la cuenta si no existe",
"config-mysql-binary": "Binario",
"config-mysql-utf8": "UTF-8",
"config-mysql-charset-help": "En '''modo binario''', MediaWiki almacena texto UTF-8 para la base de datos en campos binarios.\nEsto es más eficiente que el modo UTF-8 de MySQL y le permite utilizar la gama completa de caracteres Unicode.\n\nEn '''modo UTF-8''', MySQL sabrá qué conjunto de caracteres emplean sus datos y puede presentarlos y convertirlos adecuadamente, pero no le permitirá almacenar caracteres por encima del [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plano multilingüe básico].",
- "config-mssql-auth": "Tipo de autentificación:",
+ "config-mssql-auth": "Tipo de autenticación:",
"config-mssql-install-auth": "Seleccione el tipo de autenticación que se utilizará para conectarse a la base de datos durante el proceso de instalación.\nSi selecciona \"{{int:config-mssql-windowsauth}}\", las credenciales de cualquier usuario de el servidor web que se está ejecutando van a ser utilizadas.",
"config-mssql-web-auth": "Seleccione el tipo de autenticación que utilizará el servidor web para conectarse al servidor de base de datos, durante el funcionamiento normal de la wiki.\nSi selecciona \"{{int:config-mssql-windowsauth}}\", las credenciales del usuario que sea cual sea el servidor Web se ejecuta como será utilizado.",
"config-mssql-sqlauth": "Autenticación de SQL Server",
"config-site-name-blank": "Ingresar un nombre de sitio.",
"config-project-namespace": "Espacio de nombre de proyecto:",
"config-ns-generic": "Proyecto",
- "config-ns-site-name": "Igual como el nombre del wiki: $1",
+ "config-ns-site-name": "Igual al nombre del wiki: $1",
"config-ns-other": "Otro (especificar)",
"config-ns-other-default": "MiWiki",
"config-project-namespace-help": "Siguiendo el ejemplo de Wikipedia, muchos wikis mantienen sus páginas de políticas separadas de sus páginas de contenido, en un \"'''espacio de nombres del proyecto'''\".\n\nTodos los títulos de página en este espacio de nombres comienzan con un determinado prefijo, que usted puede especificar aquí.\nTradicionalmente, este prefijo se deriva del nombre del wiki, pero no puede contener caracteres de puntuación como \"#\" o \":\".",
"config-admin-box": "Cuenta de administrador",
"config-admin-name": "Tu nombre de usuario:",
"config-admin-password": "Contraseña:",
- "config-admin-password-confirm": "Repita la contraseña:",
+ "config-admin-password-confirm": "Repite la contraseña:",
"config-admin-help": "Escribe aquí el nombre de usuario que desees, como por ejemplo \"Pedro Bloggs\".\nEste es el nombre que usarás para entrar al wiki.",
"config-admin-name-blank": "Introduce un nombre de usuario de administrador.",
"config-admin-name-invalid": "El nombre de usuario especificado \"<nowiki>$1</nowiki>\" no es válido.\nEspecifique un nombre de usuario diferente.",
"config-profile-fishbowl": "Sólo editores autorizados",
"config-profile-private": "Wiki privado",
"config-profile-help": "Los wikis funcionan mejor cuando dejas que los edite tanta gente como sea posible.\nEn MediaWiki, es fácil revisar los cambios recientes y revertir los daños realizados por usuarios malintencionados o novatos.\nSin embargo, muchos han encontrado que MediaWiki es útil para una amplia variedad de funciones, y a veces no es fácil convencer a todos de los beneficios de la forma wiki.\nPor lo tanto tienes la elección.\n\nEl modelo '''{{int:config-profile-wiki}}''' permite que cualquiera pueda editar, sin siquiera iniciar sesión.\nUn wiki con '''{{int:config-profile-no-anon}}''' ofrece rendición de cuentas adicional, pero puede disuadir a colaboradores.\n\nEl modelo '''{{int:config-profile-fishbowl}}''' permite editar a los usuarios autorizados, pero el público puede ver las páginas, incluyendo el historial.\nUn '''{{int:config-profile-private}}''' sólo permite ver páginas a los usuarios autorizados, el mismo grupo al que le está permitido editar.\n\nConfiguraciones más complejas de derechos de usuario están disponibles después de la instalación, consulte [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights esta entrada en el manual].",
- "config-license": "Copyright and licencia:",
+ "config-license": "Derechos de autor y licencia:",
"config-license-none": "Pie sin licencia",
- "config-license-cc-by-sa": "Creative Commons Reconocimiento Compartir Igual",
- "config-license-cc-by": "Creative Commons Reconocimiento",
- "config-license-cc-by-nc-sa": "Creative Commons Reconocimiento Compartir Igual no comercial",
+ "config-license-cc-by-sa": "Creative Commons Atribución-CompartirIgual",
+ "config-license-cc-by": "Creative Commons Atribución",
+ "config-license-cc-by-nc-sa": "Creative Commons Atribución-NoComercial-CompartirIgual",
"config-license-cc-0": "Creative Commons Zero (dominio público)",
"config-license-gfdl": "Licencia de documentación libre de GNU 1.3 o posterior",
- "config-license-pd": "Dominio Público",
+ "config-license-pd": "Dominio público",
"config-license-cc-choose": "Selecciona una licencia personalizada de Creative Commons",
"config-license-help": "Muchos wikis públicos ponen todas las contribuciones bajo una [http://freedomdefined.org/Definition licencia libre].\nEsto ayuda a crear un sentido de propiedad comunitaria y alienta la contribución a largo plazo.\nEsto no es generalmente necesario para un wiki privado o corporativo.\n\nSi deseas poder utilizar texto de Wikipedia, y deseas que Wikipedia pueda aceptar el texto copiado de tu wiki, debes elegir <strong>{{int:config-license-cc-by-sa}}</strong>.\n\nWikipedia utilizaba anteriormente la licencia de documentación libre de GNU (GFDL).\nLa GFDL es una licencia válida, pero es difícil de entender.\nTambién es difícil reutilizar el contenido licenciado bajo la GFDL.",
"config-email-settings": "Configuración de correo electrónico",
"config-enable-email": "Activar el envío de correos electrónicos",
"config-enable-email-help": "Si quieres que el correo electrónico funcione, la [http://www.php.net/manual/en/mail.configuration.php configuración PHP de correo electrónico] debe ser la correcta.\nSi no quieres la funcionalidad de correo electrónico, puedes desactivarla aquí.",
- "config-email-user": "Habilitar correo electrónico de usuario a usuario",
+ "config-email-user": "Habilitar correo electrónico entre usuarios",
"config-email-user-help": "Permitir que todos los usuarios intercambien correos electrónicos si lo han activado en sus preferencias.",
"config-email-usertalk": "Activar notificaciones de páginas de discusión de usuarios",
"config-email-usertalk-help": "Permitir a los usuarios recibir notificaciones de cambios en la página de discusión de usuario, si lo han activado en sus preferencias.",
"config-install-user": "Creando el usuario de la base de datos",
"config-install-user-alreadyexists": "El usuario \"$1\" ya existe",
"config-install-user-create-failed": "La creación del usuario \"$1\" falló: $2",
- "config-install-user-grant-failed": "La concesión de permisos para el usuario \"$1\" ha fallado: $2",
+ "config-install-user-grant-failed": "La concesión de permisos al usuario \"$1\" falló: $2",
"config-install-user-missing": "El usuario especificado \"$1\" no existe.",
"config-install-user-missing-create": "El usuario especificado \"$1\" no existe.\nPor favor, haga clic en la casilla \"Crear cuenta\" que aparece a continuación si desea crearlo.",
"config-install-tables": "Creando tablas",
"config-install-interwiki-list": "No se pudo encontrar el archivo <code>interwiki.list</code>.",
"config-install-interwiki-exists": "'''Advertencia''': La tabla de interwikis parece ya contener entradas.\nSe omitirá la lista predeterminada.",
"config-install-stats": "Iniciando las estadísticas",
- "config-install-keys": "Generación de claves secretas",
+ "config-install-keys": "Generando claves secretas",
"config-insecure-keys": "''' Atención:'' ' {{PLURAL:$2|Una clave de seguridad generada|Las claves de seguridad generadas}} ($1) durante la instalación no {{PLURAL:$2|es totalmente segura|son totalmente seguras}}. Considere {{PLURAL:$2| cambiarla|cambiarlas}} manualmente.",
- "config-install-sysop": "Creando cuenta de usuario del administrador",
+ "config-install-sysop": "Creando la cuenta de usuario del administrador",
"config-install-subscribe-fail": "No se ha podido suscribir a mediawiki-announce: $1",
"config-install-subscribe-notpossible": "cURL no está instalado y <code>allow_url_fopen</code> no está disponible.",
"config-install-mainpage": "Creando página principal con contenido predeterminado",
"config-install-mainpage-failed": "No se pudo insertar la página principal: $1",
"config-install-done": "<strong>¡Felicidades!</strong>\nHas instalado MediaWiki correctamente.\n\nEl instalador ha generado un archivo <code>LocalSettings.php</code>.\nEste contiene toda su configuración.\n\nDeberás descargarlo y ponerlo en la base de la instalación de wiki (el mismo directorio que index.php). La descarga debería haber comenzado automáticamente.\n\nSi no comenzó la descarga, o si se ha cancelado, puedes reiniciar la descarga haciendo clic en el siguiente enlace:\n\n$3\n\n<strong>Nota</strong>: Si no haces esto ahora, este archivo de configuración generado no estará disponible más tarde si sales de la instalación sin descargarlo.\n\nCuando lo hayas hecho, podrás <strong>[$2 entrar en tu wiki]</strong>.",
"config-download-localsettings": "Descargar archivo <code>LocalSettings.php</code>",
- "config-help": "Ayuda",
- "config-help-tooltip": "Haz clic para ampliar",
+ "config-help": "ayuda",
+ "config-help-tooltip": "haz clic para ampliar",
"config-nofile": "El archivo \"$1\" no se pudo encontrar. ¿Se ha eliminado?",
"config-extension-link": "¿Sabías que tu wiki admite [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Extensions extensiones]?\n\nPuedes navegar por las [//www.mediawiki.org/wiki/Special:MyLanguage/Category:Extensions_by_category categorías] o visitar el [//www.mediawiki.org/wiki/Extension_Matrix centro de extensiones] para ver una lista completa.",
- "mainpagetext": "'''MediaWiki ha sido instalado con éxito.'''",
+ "mainpagetext": "<strong>MediaWiki se ha instalado con éxito.<strong>",
"mainpagedocfooter": "Consulta la [//meta.wikimedia.org/wiki/Help:Contents/es guía del usuario] para obtener información sobre el uso del software wiki.\n\n== Primeros pasos ==\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Lista de ajustes de configuración]\n* [//www.mediawiki.org/wiki/Manual:FAQ/es Preguntas frecuentes sobre MediaWiki]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de publicación de MediaWiki]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Localisation#Translation_resources Traducir MediaWiki en tu idioma]"
}
"config-upgrade-key-missing": "نصب موجود مدیاویکی شناسایی شدهاست.\nبرای بروزرسانی این نصب، لطفاً خط زیر را در آخر کد \nقرار دادن به نصب ارتقاء داده شده، به خط زیر لطفاً در پایین خود را <code>LocalSettings.php</code> قرار دهید:\n\n$1",
"config-localsettings-incomplete": "وجود <code>LocalSettings.php</code> به نظر ناقص میرسد.\nمتغیر $1 تنظیم نشدهاست.\nبرای اینکه این متغیر تنظیم شود لطفاً <code>LocalSettings.php</code> را تغییر دهید، و \"{{int:Config-continue}}\" را کلیک کنید.",
"config-localsettings-connection-error": "هنگام اتصال به پایگاه اطلاعاتی که ازتنظیمات مشخص شده در<code>LocalSettings.php</code> استفاده میکند، خطایی رخ داد. لطفاً این تنظیمات را نصب کنید و دوباره تلاش کنید.\n$1",
- "config-session-error": "خطا در شروع جلسه $1",
+ "config-session-error": "خطا در شروع جلسه: $1",
"config-session-expired": "به نظر میرسد اطلاعات جلسهٔ شما منقضی شدهاست.\nجلسات برای مادام العمر $1 پیکربندی شدهاند.\nشما میتوانید این پیکربندی را با تنظیم <code>session.gc_maxlifetime</code> در php.ini افزایش دهید.\nروند نصب را دوباره شروع کنید.",
"config-no-session": "اطلاعات دورهٔ شما از دست رفته است!\nphp.ini خود را بررسی کنید و مطمئن شوید <code>session.save_path</code> برای یک فهرست مناسب تنظیم شدهاست.",
"config-your-language": "زبان شما:",
"config-page-language": "زبان",
"config-page-welcome": "به مدیاویکی خوش آمدید!",
"config-page-dbconnect": "اتصال به پایگاه داده",
- "config-page-upgrade": "نصب موجود را ارتقاء دهید.",
- "config-page-dbsettings": "تÙ\86ظÛ\8cÙ\85ات پاÛ\8cگاÙ\87 اطÙ\84اعاتÛ\8c",
+ "config-page-upgrade": "ارتقای نصب موجود",
+ "config-page-dbsettings": "تÙ\86ظÛ\8cÙ\85ات پاÛ\8cگاÙ\87 دادÙ\87",
"config-page-name": "نام",
"config-page-options": "گزینهها",
"config-page-install": "نصب",
"config-page-complete": "کامل!",
- "config-page-restart": "نصب را دوباره شروع کنید",
+ "config-page-restart": "راهاندازی دوباره نصب",
"config-page-readme": "مرا بخوان",
"config-page-releasenotes": "یادداشتهای انتشار",
"config-page-copying": "تکثیر",
- "config-page-upgradedoc": "ارتقا",
+ "config-page-upgradedoc": "ارتقاء",
"config-page-existingwiki": "ویکی موجود",
"config-help-restart": "آیا میخواهید همهٔ اطلاعات ذخیره شدهای که وارد کردهاید را پاک کنید و دوباره روند نصب را شروع کنید؟",
- "config-restart": "بله ، آن دوباره راه اندازی کن",
+ "config-restart": "بله، دوباره راهاندازی کن",
"config-welcome": "===بررسیهای محیطی===\nبرای فهمیدن اینکه این محیط برای نصب مدیاویکی مناسب است، اکنون بررسیهای اساسی انجام خواهدشد.\nاگر به دنبال پشتیبانی در چگونگی تکمیل نصب هستید،به یاد داشته باشید این اطلاعات را بگنجانید.",
"config-copyright": "===حق چاپ و شرایط===\n$1\nاین برنامه،نرمافزاری آزاد است;شما میتوانید این برنامه را دوباره توزیع کنید و/یا تحت شرایط مجوز عمومی کلی جیانیو که توسط بنیاد نرمافزار آزاد منتشر شده،اصلاح کنید;یا نسخهٔ 2 مجوز، یا (به انتخاب خود) هر نسخهٔ پس از این.\nاین برنامه به امید اینکه مفید واقع شود توزیع شدهاست،اما '''بدون هیچ ضمانتی'''; حتی بدون اشارهٔ ضمانتی از '''قابلیت عرضه''' یا ''' صلاحیت برای یک هدف خاص'''.\nبرای جزئیات بیشتر مجوز عمومی کلی جیانیو را مشاهده کنید.\nشما باید <doclink href=Copying> یک چاپ ازمجوز عمومی کلی </doclink> همراه این برنامه دریافت کنید; اگر دریافت نکردید،به بنیاد نرمافزار آزاد بنویسید،Inc.،خیابان فرانکلین۵۱،طبقه پنجم،بوستون، MA۰۲۱۱۰-۱۳۰،آمریکا،یا [http://www.gnu.org/copyleft/gpl.html read it online].",
"config-sidebar": "* [//www.mediawiki.org صفحهٔ اصلی مدیاویکی]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents راهنمای کاربر]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Contents راهنمای مدیر]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ پرسشهای رایج]\n----\n* <doclink href=Readme>مرا بخوان</doclink>\n* <doclink href=ReleaseNotes>یادداشتهای انتشار</doclink>\n* <doclink href=Copying>نسخه برداری</doclink>\n* <doclink href=UpgradeDoc>ارتقا</doclink>",
"config-no-cache": "'''هشدار:''' [http://www.php.net/apc APC],[http://xcache.lighttpd.net/ XCache] یا [http://www.iis.net/download/WinCacheForPhp WinCache] را نتوانست پیدا کند.\nذخیره شی فعال نیست.",
"config-mod-security": "'''هشدار:''' وب سرور شما [http://modsecurity.org/ mod_security] فعال است.اگر اشتباه پیکربندی شده باشد،می تواند باعث ایجاد مشکلاتی برای مدیاویکی یا دیگر نرمافزاری شود که به کاربران اجازه میدهد پیام دلخواه ارسال کنند.\nبه [http://modsecurity.org/documentation/ mod_security documentation] مراجعه کنید یا اگر با خطاهای اتفاقی مواجه شدید با پشتیبانی میزبان خود در تماس باشید.",
"config-diff3-bad": "جیانیو دیف۳ پیدا نشد.",
- "config-git": "نسخهٔ کنترل نرمافزار جیت پیدا شد:<code>$1</code>.",
- "config-git-bad": "نسخه نرمافزار کنترل جیت پیدا نشد.",
+ "config-git": "کنترل نسخهٔ نرمافزار گیت پیدا شد: <code>$1</code>.",
+ "config-git-bad": "کنترل نسخهٔ نرمافزار گیت پیدا نشد.",
"config-imagemagick": "ایمیجمجیک پیدا شد: <code>$1</code>.\nاگر ارسالها را فعال کنید،تصویر کوچک فعال خواهدشد.",
"config-gd": "گرافیکهای جیدی ساخته شده در کتابخانه پیدا شد.\nاگر ارسالها را فعال کنید تصویر کوچک فعال خواهدشد.",
"config-no-scaling": "کتابخانهٔ جیدی یا ایمیجمجیک نتوانست پیدا شود.\nتصویر کوچک غیرفعال خواهدشد.",
"config-db-install-account": "حساب کاربری برای نصب",
"config-db-username": "نام کاربری پایگاه اطلاعات:",
"config-db-password": "گذرواژه پایگاه دادهها:",
- "config-db-password-empty": "Ù\84Ø·Ù\81اÙ\8b Û\8cÚ© رÙ\85ز عبÙ\88ر براÛ\8c کاربر جدÛ\8cد پایگاه اطلاعاتی وارد کنید: $1\nدر صورتی که ممکن است کاربران بدون رمز عبور به وجود آیند،امن نیست.",
+ "config-db-password-empty": "Ù\84Ø·Ù\81اÙ\8b Û\8cÚ© رÙ\85ز عبÙ\88ر براÛ\8c کاربر تازÙ\87 پایگاه اطلاعاتی وارد کنید: $1\nدر صورتی که ممکن است کاربران بدون رمز عبور به وجود آیند،امن نیست.",
"config-db-username-empty": "شما باید یک مقدار برای \"نام کاربری {{int:config-db-username}}\" وارد کنید",
"config-db-install-username": "نام کاربری را وارد کنید که برای اتصال به پایگاه اطلاعاتی در طول روند نصب استفاده خواهدشد.\nاین نام کاربری حساب مدیاویکی نیست; نام کاربری برای پایگاه اطلاعاتی شما است.",
"config-db-install-password": "رمز عبوری را وارد کنید که برای اتصال به پایگاه اطلاعاتی در طول روند نصب استفاده خواهدشد.\nاین رمز عبور برای حساب مدیاویکی نیست;رمز عبور برای پایگاه اطلاعاتی شما است.",
}
# Look up
- $c = new Categoryfinder;
- $c->seed( $articles, $cats, $opts['categories_any'] ? 'OR' : 'AND' );
- $match = $c->run();
+ $catFind = new CategoryFinder;
+ $catFind->seed( $articles, $cats, $opts['categories_any'] ? 'OR' : 'AND' );
+ $match = $catFind->run();
# Filter
$newrows = array();
"recentchanges": "በቅርብ ጊዜ የተለወጡ",
"recentchanges-legend": "የቅርብ ለውጥ አማራጮች፦",
"recentchanges-summary": "በዚሁ ገጽ ላይ በቅርብ ጊዜ የወጡ አዳዲስ ለውጦች ለመከታተል ይችላሉ።",
+ "recentchanges-noresult": "ለዚሁ ጥያቄ በተሰጠው ወቅት ውስጥ አንዳችም ለውጥ አልነበረም።",
"recentchanges-feed-description": "በዚህ ዊኪ ላይ በቅርብ ግዜ የተለወጠውን በዚሁ feed መከታተል ይችላሉ",
"recentchanges-label-newpage": "ይኸው ለውጥ አዲስ ገጽ ፈጠረ።",
"recentchanges-label-minor": "ይህ ለውጥ ጥቃቅን ነው።",
"thumbnail_invalid_params": "ትክክለኛ ያልሆነ የናሙና ግቤት",
"import": "ገጾች ከሌላ ዊኪ ለማስገባት",
"importinterwiki": "ከሌላ ዊኪ ማስገባት",
- "import-interwiki-source": "መነሻ ዊኪ/ገጽ:",
"import-interwiki-history": "ለዚህ ገጽ የታሪክ ዕትሞች ሁሉ ለመቅዳት",
"import-interwiki-submit": "ለማስገባት",
"import-interwiki-namespace": "መድረሻ ክፍለ-ዊኪ:",
"contribsub2": "ل{{GENDER:$3|$1}} ($2)",
"contributions-userdoesnotexist": "حساب المستخدم \"$1\" غير مسجل.",
"nocontribs": "لم يتم العثور على تغييرات تطابق هذه المحددات.",
- "uctop": "حالي",
+ "uctop": "(حالية)",
"month": "من شهر (وأقدم):",
"year": "من سنة (وأقدم):",
"sp-contributions-newbies": "اعرض مساهمات الحسابات الجديدة فقط",
"showpreview": "Vorschau zeigen",
"showdiff": "Änderungen zeigen",
"blankarticle": "<strong>Warnung:</strong> Die Seite, die du erstellst, ist leer.\nWenn du erneut auf „{{int:savearticle}}“ klickst, wird die Seite ohne Inhalt erstellt.",
- "anoneditwarning": "Du bearbeitest diese Seite unangemeldet. Wenn du sie abspeicherst, wird deine aktuelle IP-Adresse in der Versionsgeschichte aufgezeichnet und ist damit unwiderruflich '''öffentlich''' einsehbar.",
+ "anoneditwarning": "<strong>Warnung:</strong> Du bist nicht angemeldet. Deine IP-Adresse wird öffentlich sichtbar, falls du Bearbeitungen durchführst. Wenn du dich <strong>[$1 anmeldest]</strong> oder <strong>[$2 ein Benutzerkonto erstellst]</strong>, werden deine Bearbeitungen zusammen mit anderen Beiträgen deinem Benutzernamen zugeordnet.",
"anonpreviewwarning": "''Du bist nicht angemeldet. Beim Speichern wird deine IP-Adresse in der Versionsgeschichte aufgezeichnet.''",
"missingsummary": "'''Hinweis:''' Du hast keine Zusammenfassung angegeben. Wenn du erneut auf „{{int:savearticle}}“ klickst, wird deine Änderung ohne Zusammenfassung übernommen.",
"missingcommenttext": "Dein Abschnitt enthält keinen Text.",
"watchlistedit-raw-done": "Η λίστα παρακολούθησής σας ενημερώθηκε.",
"watchlistedit-raw-added": "{{PLURAL:$1|1 σελίδα|$1 σελίδες}} προστέθηκαν:",
"watchlistedit-raw-removed": "{{PLURAL:$1|1 σελίδα|$1 σελίδες}} αφαιρέθηκαν:",
+ "watchlistedit-clear-explain": "Όλοι οι τίτλοι θα αφαιρεθούν από τη λίστα παρακολούθησης σας",
"watchlistedit-clear-titles": "Τίτλοι:",
"watchlistedit-clear-submit": "Καθαρίστε τη λίστα παρακολούθησης (αυτό είναι μόνιμο!)",
+ "watchlistedit-clear-done": "Η λίστα παρακολούθησής σας έχει καθαριστεί.",
+ "watchlistedit-clear-removed": "{{PLURAL:$1|1 τίτλος αφαιρέθηκε|$1 τίτλοι αφαιρέθηκαν}}:",
"watchlistedit-too-many": "Υπάρχουν υπερβολικά πολλές σελίδες και δεν μπορούν να εμφανιστούν εδώ.",
"watchlisttools-view": "Προβολή σχετικών αλλαγών",
"watchlisttools-edit": "Προβολή και επεξεργασία λίστας παρακολούθησης",
"tog-usenewrc": "گروهبندی تغییرات بر پایهٔ صفحات تغییرات اخیر و فهرست پیگیریها",
"tog-numberheadings": "شمارهگذاری خودکار عنوانها",
"tog-showtoolbar": "نوار ابزار ویرایش نمایش یابد",
- "tog-editondblclick": "ویرایش صفحهها با دو کلیک",
+ "tog-editondblclick": "ویرایش صفحات با دو کلیک",
"tog-editsectiononrightclick": "فعالکردن ویرایش بخشها با کلیک راست روی عنوان بخشها",
"tog-watchcreations": "صفحههایی که میسازم و پروندههایی که بارگذاری میکنم به فهرست پیگیریهایم افزوده شود",
"tog-watchdefault": "صفحهها و پروندههایی که ویرایش میکنم به فهرست پیگیریهایم افزوده شود",
"tog-watchmoves": "صفحهها و پروندههایی که منتقل میکنم به فهرست پیگیریهایم افزوده شود",
- "tog-watchdeletion": "صفحهها و پروندههایی که حذف میکنم به فهرست پیگیریهایم افزوده شود",
+ "tog-watchdeletion": "صفحات و پروندههایی که حذف میکنم به فهرست پیگیریهایم افزوده شود",
"tog-watchrollback": "افزودن صفحاتی که واگردانی کردم برای فهرست پیگیریهایم",
"tog-minordefault": "همهٔ ویرایشها به طور پیشفرض به عنوان «جزئی» علامت بخورد",
"tog-previewontop": "پیشنمایش قبل از جعبهٔ ویرایش نمایش یابد",
"category-file-count": "{{PLURAL:$2|این رده تنها حاوی پروندهٔ زیر است.|{{PLURAL:$1|این پرونده|این $1 پرونده}} در این رده قرار {{PLURAL:$1|دارد|دارند}}؛ این رده در کل حاوی $2 پرونده است.}}",
"category-file-count-limited": "{{PLURAL:$1|پروندهٔ|$1 پروندهٔ}} زیر در ردهٔ فعلی قرار دارند.",
"listingcontinuesabbrev": "(ادامه)",
- "index-category": "صفحههای نمایهشده",
- "noindex-category": "صفحههای نمایهنشده",
- "broken-file-category": "صفحههای دارای پیوند خراب به پرونده",
+ "index-category": "صفحات فهرستشده",
+ "noindex-category": "صفحات فهرستنشده",
+ "broken-file-category": "صفحات دارای پیوند خراب به پرونده",
"about": "درباره",
"article": "صفحهٔ محتوایی",
- "newwindow": "(در Ù¾Ù\86جرÙ\87Ù\94 جدÛ\8cد باز میشود)",
+ "newwindow": "(در Ù¾Ù\86جرÙ\87Ù\94 تازÙ\87 باز میشود)",
"cancel": "لغو",
"moredotdotdot": "بیشتر...",
"morenotlisted": "این فهرست کامل نیست.",
"mypage": "صفحه",
"mytalk": "بحث",
- "anontalk": "بØØ« براÛ\8c اÛ\8cÙ\86 آیپی",
- "navigation": "گشتن",
+ "anontalk": "بØØ« دربارÙ\87 اÛ\8cÙ\86 Ù\86شاÙ\86Û\8c آیپی",
+ "navigation": "ناوبری",
"and": " و",
"qbfind": "یافتن",
"qbbrowse": "مرور",
"qbedit": "ویرایش",
"qbpageoptions": "این صفحه",
- "qbmyoptions": "صفحههای من",
+ "qbmyoptions": "صفحات من",
"faq": "پرسشهای متداول",
"faqpage": "Project:پرسشهای متداول",
"actions": "عملکردها",
"create-this-page": "ایجاد این صفحه",
"delete": "حذف",
"deletethispage": "حذف این صفحه",
- "undeletethispage": "اØÛ\8cای این صفحه",
+ "undeletethispage": "بازگرداÙ\86ی این صفحه",
"undelete_short": "احیای {{PLURAL:$1|یک ویرایش|$1 ویرایش}}",
"viewdeleted_short": "نمایش {{PLURAL:$1|یک ویرایش حذفشده|$1 ویرایش حذفشده}}",
"protect": "محافظت",
"protect_change": "تغییر",
"protectthispage": "محافظت از این صفحه",
- "unprotect": "تغییر سطح محافظت",
- "unprotectthispage": "تغییر سطح محافظت این صفحه",
+ "unprotect": "تغییر محافظت",
+ "unprotectthispage": "تغییر محافظت این صفحه",
"newpage": "صفحهٔ تازه",
"talkpage": "بحث دربارهٔ این صفحه",
"talkpagelinktext": "بحث",
"laggedslavemode": "'''هشدار:''' صفحه ممکن است بهروزرسانیهای اخیر را شامل نشود.",
"readonly": "پایگاه داده قفل شد",
"enterlockreason": "دلیلی برای قفل کردن ذکر کنید، که حاوی تقریبی از زمانی باشد که قفل برداشته خواهد شد",
- "readonlytext": "پایگاه داده در حال حاضر در برابر تغییرات و ایجاد صفحهها قفل شدهاست؛ این وضعیت احتمالاً به خاطر بهینهسازی و رسیدگیهای معمول است که پس از آن وضع به حالت عادی بازخواهد گشت.\n\nمدیری که آن را قفل کرده این توضیح را ارائه کردهاست: $1",
+ "readonlytext": "پایگاه داده در حال حاضر در برابر تغییرات و ایجاد صفحات قفل شدهاست؛ این وضعیت احتمالاً به خاطر بهینهسازی و رسیدگیهای معمول است که پس از آن وضع به حالت عادی بازخواهد گشت.\n\nمدیری که آن را قفل کرده این توضیح را ارائه کردهاست: $1",
"missing-article": "پایگاه داده متن صفحهٔ با نام «$1» $2 را که باید پیدا میکرد نیافت.\n\nاین مشکل معمولاً به علت دنبالکردن یک پیوند تفاوت تاریخگذشته یا تاریخچهٔ صفحهای که حذف شدهاست، رخ میدهد.\n\nدر غیر این صورت ممکن است اشکالی در نرمافزار پیدا کرده باشد.\nلطفاً این مشکل را با ذکر نشانی اینترنتی به یکی از [[Special:ListUsers/sysop|مدیران]] گزارش دهید.",
"missingarticle-rev": "(شمارهٔ نسخه: $1)",
"missingarticle-diff": "(تفاوت: $1، $2)",
"userlogin-noaccount": "حساب کاربری ندارید؟",
"userlogin-joinproject": "در {{SITENAME}} نامنویسی کنید!",
"nologin": "حساب کاربری ندارید؟ $1.",
- "nologinlink": "Û\8cÚ© Øساب کاربرÛ\8c جدÛ\8cد بسازید",
+ "nologinlink": "Û\8cÚ© Øساب کاربرÛ\8c تازÙ\87 بسازید",
"createaccount": "ایجاد حساب کاربری",
"gotaccount": "حساب کاربری دارید؟ $1.",
"gotaccountlink": "به سامانه وارد شوید",
"noname": "شما نام کاربری معتبری مشخص نکردهاید.",
"loginsuccesstitle": "ورود موفقیتآمیز به سامانه",
"loginsuccess": "'''شما اکنون با نام «$1» به {{SITENAME}} وارد شدهاید.'''",
- "nosuchuser": "کاربرÛ\8c با Ù\86اÙ\85 «$1» Ù\88جÙ\88د Ù\86دارد.\nÙ\86اÙ\85 کاربرÛ\8c بÙ\87 بزرگÛ\8c Ù\88 Ú©Ù\88Ú\86Ú©Û\8c ØرÙ\88Ù\81 Øساس است.\nاÙ\85Ù\84اÛ\8c Ù\86اÙ\85 را بررسÛ\8c Ú©Ù\86Û\8cدØ\8c Û\8cا [[Special:UserLogin/signup|Û\8cÚ© Øساب کاربرÛ\8c جدÛ\8cد بسازید]].",
+ "nosuchuser": "کاربرÛ\8c با Ù\86اÙ\85 «$1» Ù\88جÙ\88د Ù\86دارد.\nÙ\86اÙ\85 کاربرÛ\8c بÙ\87 بزرگÛ\8c Ù\88 Ú©Ù\88Ú\86Ú©Û\8c ØرÙ\88Ù\81 Øساس است.\nاÙ\85Ù\84اÛ\8c Ù\86اÙ\85 را بررسÛ\8c Ú©Ù\86Û\8cدØ\8c Û\8cا [[Special:UserLogin/signup|Û\8cÚ© Øساب کاربرÛ\8c تازÙ\87 بسازید]].",
"nosuchusershort": "هیچ کاربری با نام ''$1'' وجود ندارد.\nاملایتان را وارسی کنید.",
"nouserspecified": "باید یک نام کاربری مشخص کنید.",
"login-userblocked": "این کاربر بسته شدهاست. ورود به سامانه مجاز نیست.",
"resetpass_header": "تغییر گذرواژهٔ حساب کاربری",
"oldpassword": "گذرواژهٔ پیشین:",
"newpassword": "گذرواژهٔ تازه:",
- "retypenew": "گذرÙ\88اÚ\98Ù\87Ù\94 جدÛ\8cد را دوباره وارد کنید",
+ "retypenew": "گذرÙ\88اÚ\98Ù\87Ù\94 تازÙ\87 را دوباره وارد کنید",
"resetpass_submit": "تنظیم گذرواژه و ورود به سامانه",
"changepassword-success": "گذرواژهٔ شما با موفقیت تغییر داده شد!",
"changepassword-throttled": "شما به تازگی چندینبار برای ثبت ورود تلاش کردهاید.\nلطفاً پیش از آنکه دوباره تلاش کنید $1 صبر کنید.",
"resetpass-no-info": "برای دسترسی مستقیم به این صفحه شما باید به سامانه وارد شده باشید.",
"resetpass-submit-loggedin": "تغییر گذرواژه",
"resetpass-submit-cancel": "لغو",
- "resetpass-wrong-oldpass": "گذرÙ\88اÚ\98Ù\87Ù\94 Ù\85Ù\88Ù\82ت Û\8cا اخÛ\8cر Ù\86اÙ\85عتبر.\nÙ\85Ù\85Ú©Ù\86 است Ú©Ù\87 Ø´Ù\85ا Ù\87Ù\85Û\8cÙ\86Ú© گذرÙ\88اÚ\98Ù\87â\80\8cتاÙ\86 را با Ù\85Ù\88Ù\81Ù\82Û\8cت تغÛ\8cÛ\8cر دادÙ\87 باشÛ\8cد Û\8cا درخÙ\88است Û\8cÚ© گذرÙ\88اÚ\98Ù\87Ù\94 Ù\85Ù\88Ù\82ت جدÛ\8cد کرده باشید.",
+ "resetpass-wrong-oldpass": "گذرÙ\88اÚ\98Ù\87Ù\94 Ù\85Ù\88Ù\82ت Û\8cا اخÛ\8cر Ù\86اÙ\85عتبر.\nÙ\85Ù\85Ú©Ù\86 است Ú©Ù\87 Ø´Ù\85ا Ù\87Ù\85Û\8cÙ\86Ú© گذرÙ\88اÚ\98Ù\87â\80\8cتاÙ\86 را با Ù\85Ù\88Ù\81Ù\82Û\8cت تغÛ\8cÛ\8cر دادÙ\87 باشÛ\8cد Û\8cا درخÙ\88است Û\8cÚ© گذرÙ\88اÚ\98Ù\87Ù\94 Ù\85Ù\88Ù\82ت تازÙ\87 کرده باشید.",
"resetpass-recycled": "لطفاً رمز عبور خود را به چیز دیگری غیر از رمز عبور فعلی تنظیم کنید.",
"resetpass-temp-emailed": "شما با یک کد رایانامه شدهٔ موقت وارد شدهاید.\nبرای پایان ورود، شما باید رمز عبور جدیدی اینجا وارد کنید:",
"resetpass-temp-password": "گذرواژهٔ موقت:",
"resetpass-abort-generic": "تغییر گذرواژه به دست یکی از افزونهها لغو شده است.",
"resetpass-expired": "رمز عبور شما منقضی شدهاست. لطفاً برای ورود رمز عبور جدیدی را تنظیم کنید.",
"resetpass-expired-soft": "رمز عبور شما منقضی شدهاست، و نیاز به تنظیم مجدد دارد. لطفاً اکنون رمز عبور جدیدی را انتخاب کنید، یا برای تنظیم مجدد آن بعدآً، دکمه \"{{int:resetpass-submit-cancel}}\" را کلیک کنید.",
- "resetpass-validity-soft": "گذرÙ\88اÙ\87Ù\94 Ø´Ù\85ا صØÛ\8cØ Ù\86Û\8cست: $1\n\nÙ\84Ø·Ù\81اÙ\8b Û\8cÚ© گذرÙ\88اÚ\98Ù\87Ù\94 جدÛ\8cد الآن انتخاب کنید یا بر «{{int:resetpass-submit-cancel}}» کلیک کنید که دوباره آن را بعداً انتخاب کنید.",
+ "resetpass-validity-soft": "گذرÙ\88اÙ\87Ù\94 Ø´Ù\85ا صØÛ\8cØ Ù\86Û\8cست: $1\n\nÙ\84Ø·Ù\81اÙ\8b Û\8cÚ© گذرÙ\88اÚ\98Ù\87Ù\94 تازÙ\87 الآن انتخاب کنید یا بر «{{int:resetpass-submit-cancel}}» کلیک کنید که دوباره آن را بعداً انتخاب کنید.",
"passwordreset": "بازنشانی گذرواژه",
"passwordreset-text-one": "برای بازنشانی گذرواژهتان این فرم را کامل کنید.",
"passwordreset-text-many": "{{PLURAL:$1|برای دریافت یک گذرواژهٔ موقت از راه رایانامه، یکی از زمینهها را پر کنید.}}",
"autoblockedtext": "دسترسی نشانی آیپی شما قطع شدهاست، زیرا این نشانی آیپی توسط کاربر دیگری استفاده شده که دسترسی او توسط $1 قطع شدهاست.\nدلیل ارائهشده چنین است:\n\n:''$2''\n\n* شروع قطع دسترسی: $8\n* پایان قطع دسترسی: $6\n* کاربری هدف قطع دسترسی: $7\n\nشما میتوانید با $1 یا [[{{MediaWiki:Grouppage-sysop}}|مدیری]] دیگر تماس بگیرید و در این باره صحبت کنید.\nتوجه کنید که شما نمیتوانید از ویژگی «فرستادن رایانامه به این کاربر» استفاده کنید مگر آنکه نشانی رایانامه معتبری در [[Special:Preferences|ترجیحات کاربری]] خودتان ثبت کرده باشید و نیز باید امکان استفاده از این ویژگی برای شما قطع نشده باشد.\nنشانی آیپی فعلی شما $3 و شمارهٔ قطع دسترسی شما $5 است.\nلطفاً تمامی جزئیات فوق را در کلیهٔ درخواستهایی که در این باره مطرح میکنید ذکر کنید.",
"blockednoreason": "دلیلی مشخص نشدهاست",
"whitelistedittext": "برای ویرایش مقالهها باید $1.",
- "confirmedittext": "شما باید، پیش از ویرایش صفحهها، نشانی رایانامهٔ خود را مشخص و تأیید کنید. لطفاً از طریق [[Special:Preferences|ترجیحات کاربر]] این کار را صورت دهید.",
+ "confirmedittext": "شما باید، پیش از ویرایش صفحات، نشانی رایانامهٔ خود را مشخص و تأیید کنید. لطفاً از طریق [[Special:Preferences|ترجیحات کاربر]] این کار را صورت دهید.",
"nosuchsectiontitle": "چنین بخشی پیدا نشد",
"nosuchsectiontext": "شما تلاش کردهاید یک بخش در صفحه را ویرایش کنید که وجود ندارد.\nممکن است در مدتی که شما صفحه را مشاهده میکردید این بخش جا به جا یا حذف شده باشد.",
"loginreqtitle": "ورود به سامانه لازم است",
"newarticletext": "شما پیوندی را دنبال کردهاید و به صفحهای رسیدهاید که هنوز وجود ندارد.\nبرای ایجاد صفحه، در مستطیل زیر شروع به نوشتن کنید (برای اطلاعات بیشتر به [$1 صفحهٔ راهنما] مراجعه کنید).\nاگر به اشتباه اینجا آمدهاید، دکمهٔ «بازگشت» مرورگرتان را بزنید.",
"anontalkpagetext": "----''این صفحهٔ بحث برای کاربر گمنامی است که هنوز حسابی درست نکرده است یا از آن استفاده نمیکند.\nبنا بر این برای شناساییاش مجبوریم از نشانی آیپی عددی استفاده کنیم.\nچنین نشانیهای آیپی ممکن است توسط چندین کاربر به شکل مشترک استفاده شود.\nاگر شما کاربر گمنامی هستید و تصور میکنید اظهار نظرات نامربوط به شما صورت گرفته است، لطفاً برای پیشگیری از اشتباه گرفته شدن با کاربران گمنام دیگر در آینده [[Special:UserLogin/signup|حسابی ایجاد کنید]] یا [[Special:UserLogin|به سامانه وارد شوید]].''",
"noarticletext": "این صفحه هماکنون دارای هیچ متنی نیست.\nشما میتوانید در صفحههای دیگر [[Special:Search/{{PAGENAME}}|عنوان این صفحه را جستجو کنید]]،\n<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} سیاهههای مرتبط را جستجو کنید]،\nیا [{{fullurl:{{FULLPAGENAME}}|action=edit}} این صفحه را ویرایش کنید]</span>.",
- "noarticletext-nopermission": "این صفحه هماکنون متنی ندارد.\nشما میتوانید در دیگر صفحهها [[Special:Search/{{PAGENAME}}|این عنوان را جستجو کنید]]،\nیا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} سیاهههای مرتبط را بگردید]</span> ولی شما اجازه ایجاد این صفحه را ندارید.",
+ "noarticletext-nopermission": "این صفحه هماکنون متنی ندارد.\nشما میتوانید در دیگر صفحات [[Special:Search/{{PAGENAME}}|این عنوان را جستجو کنید]]،\nیا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} سیاهههای مرتبط را بگردید]</span> ولی شما اجازه ایجاد این صفحه را ندارید.",
"missing-revision": "ویرایش #$1 از صفحهٔ «{{FULLPAGENAME}}» موجود نیست.\n\nمعمولاً در اثر پیوند به تاریخچهٔ بهروز نشدهٔ صفحهٔ حذف شده است.\nمیتوانید جزئیات بیشتر را در [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} سیاههٔ حذف] بیابید.",
"userpage-userdoesnotexist": "حساب کاربر «<nowiki>$1</nowiki>» ثبت نشدهاست.\nلطفاً مطمئن شوید که میخواهید این صفحه را ایجاد یا ویرایش کنید.",
"userpage-userdoesnotexist-view": "حساب کاربری «$1» ثبت نشدهاست.",
"editing": "در حال ویرایش $1",
"creating": "ایجاد $1",
"editingsection": "در حال ویرایش $1 (بخش)",
- "editingcomment": "در ØاÙ\84 Ù\88Û\8cراÛ\8cØ´ $1 (بخش جدÛ\8cد)",
+ "editingcomment": "در ØاÙ\84 Ù\88Û\8cراÛ\8cØ´ $1 (بخش تازÙ\87)",
"editconflict": "تعارض ویرایشی: $1",
"explainconflict": "از وقتی ویرایش این صفحه را آغاز کردهاید شخص دیگری آن را تغییر دادهاست.\nناحیهٔ متنی بالایی شامل متن صفحه به شکل کنونی آن است.\nتغییرات شما در ناحیهٔ متنی پایینی نشان داده شدهاست.\nشما باید تغییراتتان را با متن کنونی ترکیب کنید.\nبا فشردن دکمهٔ «{{int:savearticle}}» '''فقط''' متن ناحیهٔ متنی بالایی ذخیره خواهد شد.",
"yourtext": "متن شما",
"storedversion": "نسخهٔ ذخیره شده",
- "nonunicodebrowser": "'''هشدار: مرورگر شما با استانداردهای یونیکد سازگار نیست.'''\nراه حلی به کار گرفته شده تا شما بتوانید صفحهها را با امنیت ویرایش کنید: کاراکترهای غیر ASCII به صورت کدهایی در مبنای شانزده به شما نشان داده میشوند.",
+ "nonunicodebrowser": "'''هشدار: مرورگر شما با استانداردهای یونیکد سازگار نیست.'''\nراه حلی به کار گرفته شده تا شما بتوانید صفحات را با امنیت ویرایش کنید: کاراکترهای غیر ASCII به صورت کدهایی در مبنای شانزده به شما نشان داده میشوند.",
"editingold": "'''هشدار: شما در حال ویرایش نسخهای قدیمی از این صفحه هستید.'''\nاگر ذخیرهاش کنید، هر تغییری که پس از این نسخه انجام شدهاست از بین خواهد رفت.",
"yourdiff": "تفاوتها",
"copyrightwarning": "لطفاً توجه داشته باشید که فرض میشود کلیهٔ مشارکتهای شما با {{SITENAME}} تحت «$2» منتشر میشوند (برای جزئیات بیشتر به $1 مراجعه کنید).\nاگر نمیخواهید نوشتههایتان بیرحمانه ویرایش شده و به دلخواه توزیع شود، اینجا نفرستیدشان.<br />\nهمچنین شما دارید به ما قول میدهید که خودتان این را نوشتهاید، یا آن را از یک منبع آزاد با مالکیت عمومی یا مشابه آن برداشتهاید.\n'''کارهای دارای حق تکثیر (copyright) را بیاجازه نفرستید!'''",
"template-semiprotected": "(نیمهحفاظتشده)",
"hiddencategories": "این صفحه در {{PLURAL:$1|یک ردهٔ پنهان|$1 ردهٔ پنهان}} قرار دارد:",
"edittools": "<!-- متن این قسمت زیر صفحههای ویرایش و بارگذاری نشان داده میشود -->",
- "nocreatetext": "{{SITENAME}} Ù\82ابÙ\84Û\8cت اÛ\8cجاد صÙ\81ØÙ\87â\80\8cÙ\87اÛ\8c جدÛ\8cد را محدود کردهاست.\nمیتوانید بازگردید و صفحهای موجود را ویرایش کنید یا اینکه [[Special:UserLogin|به سامانه وارد شوید یا حساب کاربری ایجاد کنید]].",
- "nocreate-loggedin": "Ø´Ù\85ا اجازÙ\87Ù\94 اÛ\8cجاد صÙ\81ØÙ\87â\80\8cÙ\87اÛ\8c جدÛ\8cد را ندارید.",
+ "nocreatetext": "{{SITENAME}} Ù\82ابÙ\84Û\8cت اÛ\8cجاد صÙ\81ØÙ\87â\80\8cÙ\87اÛ\8c تازÙ\87 را محدود کردهاست.\nمیتوانید بازگردید و صفحهای موجود را ویرایش کنید یا اینکه [[Special:UserLogin|به سامانه وارد شوید یا حساب کاربری ایجاد کنید]].",
+ "nocreate-loggedin": "Ø´Ù\85ا اجازÙ\87Ù\94 اÛ\8cجاد صÙ\81ØÙ\87â\80\8cÙ\87اÛ\8c تازÙ\87 را ندارید.",
"sectioneditnotsupported-title": "ویرایش بخشها پشتیبانی نمیشود",
"sectioneditnotsupported-text": "این صفحه از ویرایش بخشها پشتیبانی نمیکند.",
"permissionserrors": "خطای سطح دسترسی",
"postedit-confirmation-created": "صفحه ایجاد شده است.",
"postedit-confirmation-restored": "صفحه بازیابی شده است.",
"postedit-confirmation-saved": "ویرایش شما ذخیره شد.",
- "edit-already-exists": "اÙ\85کاÙ\86 ساختÙ\86 صÙ\81ØÙ\87Ù\94 جدÛ\8cد وجود ندارد.\nاین صفحه از قبل وجود داشتهاست.",
+ "edit-already-exists": "اÙ\85کاÙ\86 ساختÙ\86 صÙ\81ØÙ\87Ù\94 تازÙ\87 وجود ندارد.\nاین صفحه از قبل وجود داشتهاست.",
"defaultmessagetext": "متن پیشفرض پیغام",
"content-failed-to-parse": "عدم موفقیت در تجزیه محتوای $2 برای مدل $1: $3",
"invalid-content-data": "داده محتوای نامعتبر",
"history-feed-title": "تاریخچهٔ ویرایشها",
"history-feed-description": "تاریخچهٔ ویرایشهای این صفحه در ویکی",
"history-feed-item-nocomment": "$1 در $2",
- "history-feed-empty": "صفحهٔ درخواست شده وجود ندارد.\nممکن است که از ویکی حذف یا اینکه نامش تغییر داده شده باشد.\nصفحههای جدید را برای موارد مرتبط در این ویکی [[Special:Search|جستجو کنید]].",
+ "history-feed-empty": "صفحهٔ درخواست شده وجود ندارد.\nممکن است که از ویکی حذف یا اینکه نامش تغییر داده شده باشد.\nصفحات تازه را برای موارد مرتبط در این ویکی [[Special:Search|جستجو کنید]].",
"rev-deleted-comment": "(خلاصه ویرایش حذف شد)",
"rev-deleted-user": "(نام کاربری حذف شد)",
"rev-deleted-event": "(مورد از سیاهه پاک شده)",
"revdelete-offender": "نویسنده نسخه:",
"suppressionlog": "سیاههٔ فرونشانی",
"suppressionlogtext": "در زیر فهرستی از آخرین حذفها و قطع دسترسیهایی که حاوی محتوایی هستند که از مدیران پنهان شدهاند را میبینید.\nبرای مشاهدهٔ فهرستی از قطع دسترسیهای فعال [[Special:BlockList|فهرست بستهشدهها]] را ببینید.",
- "mergehistory": "ادغام تاریخچه صفحهها",
+ "mergehistory": "ادغام تاریخچه صفحات",
"mergehistory-header": "این صفحه به شما این امکان را میدهد که نسخههای تاریخچهٔ یک مقاله را با یک مقاله دیگر ادغام کنید.\nاطمینان حاصل کنید که این تغییر به توالی زمانی ویرایشها لطمه نخواهد زد.",
"mergehistory-box": "ادغام نسخههای دو صفحه:",
"mergehistory-from": "صفحهٔ مبدأ:",
"mergelogpagetext": "در زیر سیاههٔ آخرین موارد ادغام تاریخچهٔ یک صفحه در صفحهای دیگر را میبینید.",
"history-title": "$1: تاریخچهٔ ویرایشها",
"difference-title": "$1: تفاوت بین نسخهها",
- "difference-title-multipage": "$1 و $2: تفاوت بین صفحهها",
- "difference-multipage": "(تفاوت بین صفحهها)",
+ "difference-title-multipage": "$1 و $2: تفاوت بین صفحات",
+ "difference-multipage": "(تفاوت بین صفحات)",
"lineno": "سطر $1:",
"compareselectedversions": "مقایسهٔ نسخههای انتخابشده",
"showhideselectedversions": "تغییر پدیداری بازبینیهای انتخابشده",
"right-createaccount": "ایجاد حسابهای کاربری",
"right-minoredit": "علامتزدن ویرایشها بهعنوان جزئی",
"right-move": "انتقال صفحه",
- "right-move-subpages": "انتقال صفحÙ\87â\80\8cÙ\87ا بÙ\87 Ù\87Ù\85راÙ\87 زÛ\8cرâ\80\8cصÙ\81ØÙ\87â\80\8cÙ\87اÛ\8cشاÙ\86",
+ "right-move-subpages": "انتقال صفحات بÙ\87 Ù\87Ù\85راÙ\87 زÛ\8cرâ\80\8cصÙ\81Øاتâ\80\8cشاÙ\86",
"right-move-rootuserpages": "انتقال صفحههای کاربری سرشاخه",
"right-move-categorypages": "انتقال صفحهٔ رده",
"right-movefile": "انتقال پروندهها",
"right-purge": "پاککردن میانگیر صفحه بدون مشاهدهٔ صفحهٔ تأیید",
"right-autoconfirmed": "از محدودیتهای سرعت آیپی-محور تاثیر نمیگیرد",
"right-bot": "تلقیشده به عنوان یک فرآیند خودکار",
- "right-nominornewtalk": "Ù\88Û\8cراÛ\8cØ´ جزئÛ\8c صÙ\81ØÙ\87â\80\8cÙ\87اÛ\8c بØØ« بÙ\87 Ø´Ú©Ù\84Û\8c Ú©Ù\87 باعث اعÙ\84اÙ\86 Ù¾Û\8cغاÙ\85 جدÛ\8cد نشود",
+ "right-nominornewtalk": "Ù\88Û\8cراÛ\8cØ´ جزئÛ\8c صÙ\81ØÙ\87â\80\8cÙ\87اÛ\8c بØØ« بÙ\87 Ø´Ú©Ù\84Û\8c Ú©Ù\87 باعث اعÙ\84اÙ\86 Ù¾Û\8cغاÙ\85 تازÙ\87 نشود",
"right-apihighlimits": "سقف بالاتر استفاده از API",
"right-writeapi": "استفاده از API مربوط به نوشتن",
- "right-delete": "حذف صفحهها",
+ "right-delete": "حذف صفحات",
"right-bigdelete": "حذف صفحههای دارای تاریخچهٔ بزرگ",
"right-deletelogentry": "حذف و احیای مدخلهای خاصی از سیاهه",
"right-deleterevision": "حذف و احیای نسخههای خاصی از صفحه",
"right-deletedhistory": "مشاهدهٔ موارد حذفشده از تاریخچه، بدون دیدن متن آنها",
"right-deletedtext": "مشاهدهٔ متن حذفشده و تغییرات بین نسخههای حذفشده",
"right-browsearchive": "جستجوی صفحههای حذفشده",
- "right-undelete": "احیای صفحهها",
+ "right-undelete": "احیای صفحات",
"right-suppressrevision": "مشاهده و احیای ویرایشهایی که از کاربران پنهان شدهاند",
"right-viewsuppressed": "مشاهده نسخههایی که از کاربران مخفی شدهاند",
"right-suppressionlog": "مشاهدهٔ سیاهههای خصوصی",
"right-ipblock-exempt": "تاثیر نپذیرفتن از قطع دسترسیهای آیپی، خودکار یا فاصلهای",
"right-proxyunbannable": "تاثیر نپذیرفتن از قطع دسترسی خودکار پروکسیها",
"right-unblockself": "بازکردن دسترسی خود",
- "right-protect": "تغییر میزان محافظت صفحهها و ویرایش صفحههای محافظتشده آبشاری",
+ "right-protect": "تغییر میزان محافظت صفحات و ویرایش صفحات محافظتشده آبشاری",
"right-editprotected": "ویرایش صفحههای محافظتشده بهعنوان «{{int:protect-level-sysop}}»",
"right-editsemiprotected": "ویرایش صفحه حفاظتشده به عنوان \"{{int:protect-level-autoconfirmed}}\"",
"right-editinterface": "ویرایش واسط کاربری",
"right-editmyusercss": "پروندههای سیاساس کاربری خود را ویرایش کنید",
"right-editmyuserjs": "پروندههای جاوااسکریپت کاربری خود را ویرایش کنید",
"right-viewmywatchlist": "فهرست پیگیریهای خود را ببینید",
- "right-editmywatchlist": "فهرست پیگیریهای خود را ویرایش کنید. توجه داشته باشید برخی از اقدامات حتی بدون این دسترسی هم صفحهها را اضافه میکنند.",
+ "right-editmywatchlist": "فهرست پیگیریهای خود را ویرایش کنید. توجه داشته باشید برخی از اقدامات حتی بدون این دسترسی هم صفحات را اضافه میکنند.",
"right-viewmyprivateinfo": "دادههای خصوصی خود را ببینید (مانند رایانشانی و نام واقعی)",
"right-editmyprivateinfo": "دادههای خصوصی خود را ویرایش کنید (مانند رایانشانی و نام واقعی)",
"right-editmyoptions": "ترجیحات خود را ویرایش",
"right-autopatrol": "گشت زدن خودکار ویرایشهای خودش",
"right-patrolmarks": "مشاهدهٔ برچسب گشت تغییرات اخیر",
"right-unwatchedpages": "مشاهدهٔ فهرست صفحههایی که پیگیری نمیشوند",
- "right-mergehistory": "ادغام تاریخچهٔ صفحهها",
+ "right-mergehistory": "ادغام تاریخچهٔ صفحات",
"right-userrights": "ویرایش تمام اختیارات کاربرها",
"right-userrights-interwiki": "ویرایش اختیارات کاربرهای ویکیهای دیگر",
"right-siteadmin": "قفلکردن و بازکردن پایگاه دادهها",
"recentchanges-summary": "آخرین تغییرات ویکی را در این صفحه پیگیری کنید.",
"recentchanges-noresult": "هیچ تغییری در طول دورهٔ تعیینشده با این معیارها همخوانی نداشت.",
"recentchanges-feed-description": "آخرین تغییرات ویکی را در این خوراک پیگیری کنید.",
- "recentchanges-label-newpage": "اÛ\8cÙ\86 Ù\88Û\8cراÛ\8cØ´ صÙ\81ØÙ\87â\80\8cاÛ\8c جدÛ\8cد ایجاد کرد",
+ "recentchanges-label-newpage": "اÛ\8cÙ\86 Ù\88Û\8cراÛ\8cØ´ صÙ\81ØÙ\87â\80\8cاÛ\8c تازÙ\87 ایجاد کرد",
"recentchanges-label-minor": "این یک ویرایش جزئیاست",
"recentchanges-label-bot": "این ویرایش را یک ربات انجام دادهاست",
"recentchanges-label-unpatrolled": "این ویرایش هنوز گشتزنی نشدهاست",
"recentchanges-label-plusminus": "حجم صفحه به اندازه این بایتها تغییر یافتهاست",
"recentchanges-legend-heading": "'''اختصارها:'''",
- "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (Ù\87Ù\85Ú\86Ù\86Û\8cÙ\86 بÙ\87 [[Special:NewPages|Ù\81Ù\87رست صÙ\81Øات جدÛ\8cد]] نگاه کنید)",
+ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (Ù\87Ù\85Ú\86Ù\86Û\8cÙ\86 بÙ\87 [[Special:NewPages|Ù\81Ù\87رست صÙ\81Øات تازÙ\87]] نگاه کنید)",
"recentchanges-legend-plusminus": "(<em>±۱۲۳</em>)",
"rcnotefrom": "در زیر تغییرات از <strong>$3, $4</strong> (تا <strong>$1</strong> {{PLURAL:$5|نشان داده شدهاست|نشان داده شدهاند}}).",
- "rclistfrom": "Ù\86Ù\85اÛ\8cØ´ تغÛ\8cÛ\8cرات جدÛ\8cد با شروع از $3 $2",
+ "rclistfrom": "Ù\86Ù\85اÛ\8cØ´ تغÛ\8cÛ\8cرات تازÙ\87 با شروع از $3 $2",
"rcshowhideminor": "$1 ویرایشهای جزئی",
"rcshowhideminor-show": "نمایش",
"rcshowhideminor-hide": "پنهانکردن",
"upload_directory_read_only": "شاخهٔ بارگذاری ($1) از طرف سرور وب قابل نوشتن نیست.",
"uploaderror": "خطای بارگذاری",
"upload-recreate-warning": "'''هشدار: پروندهای با این نام حذف یا منتقل شده است.'''\n\nبرای راحتی، سیاههٔ حذف و انتقال برای این صفحه در زیر آمده است:",
- "uploadtext": "از فرم زیر برای بارگذاری کردن پروندههای جدید استفاده کنید.\nبرای دیدن پروندههایی که قبلاً بارگذاری شدهاند به [[Special:FileList|فهرست پروندهها]] بروید. بارگذاری نیز مجدد در [[Special:Log/upload|سیاههٔ بارگذاریها]] و حذف پروندهها در [[Special:Log/delete|deletion log]] ثبت میشود.\n\nبعد از این که پروندهای را بارگذاری کردید، به این سه شکل میتوانید آن را در صفحهها استفاده کنید:\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' برای استفاده از نسخه کامل پرونده\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' برای استفاده از یک نسخه ۲۰۰ پیکسلی از پرونده درون یک جعبه در سمت چپ متن که عبارت alt text در آن به عنوان توضیح استفاده شده\n*'''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' برای ایجاد یک پیونده مستقیم به پرونده بدون نمایش پرونده",
+ "uploadtext": "از فرم زیر برای بارگذاری کردن پروندههای جدید استفاده کنید.\nبرای دیدن پروندههایی که قبلاً بارگذاری شدهاند به [[Special:FileList|فهرست پروندهها]] بروید. بارگذاری نیز مجدد در [[Special:Log/upload|سیاههٔ بارگذاریها]] و حذف پروندهها در [[Special:Log/delete|deletion log]] ثبت میشود.\n\nبعد از این که پروندهای را بارگذاری کردید، به این سه شکل میتوانید آن را در صفحات استفاده کنید:\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' برای استفاده از نسخه کامل پرونده\n*'''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|alt text]]</nowiki></code>''' برای استفاده از یک نسخه ۲۰۰ پیکسلی از پرونده درون یک جعبه در سمت چپ متن که عبارت alt text در آن به عنوان توضیح استفاده شده\n*'''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' برای ایجاد یک پیونده مستقیم به پرونده بدون نمایش پرونده",
"upload-permitted": "انواع مجاز پروندهها: $1.",
"upload-preferred": "انواع ترجیحداده شده پروندهها: $1.",
"upload-prohibited": "انواع نامجاز پروندهها: $1.",
"ignorewarning": "چشمپوشی از هشدار و ذخیرهٔ پرونده.",
"ignorewarnings": "چشمپوشی از همهٔ هشدارها",
"minlength1": "نام پرونده دست کم باید یک حرف باشد.",
- "illegalfilename": "نام پرونده «$1» نویسههایی را شامل میشود که در نام صفحهها مجاز نیستند.\nلطفاً نام پرونده را تغییر دهید و آن را دوباره بارگذاری کنید.",
+ "illegalfilename": "نام پرونده «$1» نویسههایی را شامل میشود که در نام صفحات مجاز نیستند.\nلطفاً نام پرونده را تغییر دهید و آن را دوباره بارگذاری کنید.",
"filename-toolong": "نام پرونده نباید از ۲۴۰ بایت طولانیتر باشد.",
"badfilename": "نام پرونده به «$1» تغییر کرد.",
"filetype-mime-mismatch": "پسوند پرونده «$1.» با نوع MIME آن ($2) مطابقت ندارد.",
"listduplicatedfiles-summary": "این فهرست پروندههایی با نسخههای اخیر این پرونده تکراری است که نسخههای اخبر سایر پروندهها است. فقط پروندههای محلی در نظر گرفته شدهاند.",
"listduplicatedfiles-entry": "[[:File:$1|$1]][[$3|{{PLURAL:$2|یک تکرار|$2 تکرار}}]] دارد.",
"unusedtemplates": "الگوهای استفادهنشده",
- "unusedtemplatestext": "این صفحه همهٔ صفحههایی در فضای نام {{ns:template}} را که در هیچ صفحهای به کار نرفتهاند، فهرست میکند.\nبه یاد داشته باشید که پیش از پاککردن این صفحهها پیوندهای دیگر به آنها را هم وارسی کنید.",
+ "unusedtemplatestext": "این صفحه همهٔ صفحاتی در فضای نام {{ns:template}} را که در هیچ صفحهای به کار نرفتهاند، فهرست میکند.\nبه یاد داشته باشید که پیش از پاککردن این صفحات پیوندهای دیگر به آنها را هم وارسی کنید.",
"unusedtemplateswlh": "پیوندهای دیگر",
"randompage": "مقالهٔ تصادفی",
"randompage-nopages": "هیچ صفحهای در این {{PLURAL:$2|فضای نام|فضاهای نام}} موجود نیست: $1.",
"randomredirect": "تغییرمسیر تصادفی",
"randomredirect-nopages": "هیج صفحهٔ تغییرمسیری در فضای نام «$1» موجود نیست.",
"statistics": "آمار",
- "statistics-header-pages": "آمار صفحهها",
+ "statistics-header-pages": "آمار صفحه",
"statistics-header-edits": "آمار ویرایشها",
"statistics-header-views": "آمار بازدیدها",
"statistics-header-users": "آمار کاربران",
"statistics-header-hooks": "آمارهای دیگر",
"statistics-articles": "صفحههای محتوایی",
- "statistics-pages": "صفحهها",
+ "statistics-pages": "صفحات",
"statistics-pages-desc": "تمام صفحههای این ویکی، از جمله صفحههای بحث، تغییرمسیر و غیره",
"statistics-files": "پروندههای بارگذاریشده",
"statistics-edits": "ویرایش صفحهها از هنگامی که {{SITENAME}} راهاندازی شده",
"brokenredirects-edit": "ویرایش",
"brokenredirects-delete": "حذف",
"withoutinterwiki": "صفحههای بدون پیوند میانویکی",
- "withoutinterwiki-summary": "این صفحهها پیوندی به صفحهای به زبان دیگر نمیدارند:",
+ "withoutinterwiki-summary": "این صفحات پیوندی به صفحهای به زبان دیگر نمیدارند:",
"withoutinterwiki-legend": "پیشوند",
"withoutinterwiki-submit": "نمایش",
"fewestrevisions": "مقالههای دارای کمترین شمار ویرایش",
"mostimages": "پروندههایی که بیشتر از همه به آنها پیوند داده شدهاست",
"mostinterwikis": "صفحههای دارای بیشترین میانویکی",
"mostrevisions": "صفحههای دارای بیشترین نسخه",
- "prefixindex": "تمام صفحهها با پیشوند",
+ "prefixindex": "تمام صفحات با پیشوند",
"prefixindex-namespace": "همهٔ صفحههای دارای پیشوند (فضاینام $1)",
"prefixindex-strip": "حذف پیشوند در فهرست",
"shortpages": "صفحههای کوتاه",
"usercreated": "{{GENDER:$3|ایجادشده}} در تاریخ $1 در ساعت $2",
"newpages": "صفحههای تازه",
"newpages-username": "نام کاربری:",
- "ancientpages": "قدیمیترین صفحهها",
+ "ancientpages": "قدیمیترین صفحات",
"move": "انتقال",
"movethispage": "انتقال این صفحه",
"unusedimagestext": "پروندههای زیر موجودند اما در هیچ صفحهای به کار نرفتهاند.\nلطفاً توجه داشته باشید که دیگر وبگاهها ممکن است با یک نشانی اینترنتی مستقیم به یک پرونده پیوند دهند، و با وجود این که در استفادهٔ فعال هستند در این جا فهرست شوند.",
"logempty": "مورد منطبق با منظور شما در سیاهه یافت نشد.",
"log-title-wildcard": "صفحههایی را جستجو کن که عنوانشان با این عبارت آغاز میشود",
"showhideselectedlogentries": "تغییر پدیداری موارد انتخابشده سیاهه",
- "allpages": "همهٔ صفحهها",
+ "allpages": "همهٔ صفحات",
"nextpage": "صفحهٔ بعد ($1)",
"prevpage": "صفحهٔ قبلی ($1)",
- "allpagesfrom": "نمایش صفحهها با شروع از:",
- "allpagesto": "نمایش صفحهها با پایان در:",
- "allarticles": "همهٔ صفحهها",
- "allinnamespace": "همهٔ صفحهها (فضای نام $1)",
+ "allpagesfrom": "نمایش صفحات با شروع از:",
+ "allpagesto": "نمایش صفحات با پایان در:",
+ "allarticles": "همهٔ صفحات",
+ "allinnamespace": "همهٔ صفحات (فضای نام $1)",
"allpagessubmit": "برو",
"allpagesprefix": "نمایش صفحههای دارای پیشوند:",
- "allpagesbadtitle": "عنوان صفحهٔ دادهشده نامعتبر است یا اینکه دارای پیشوندی بینزبانی یا بینویکیای است. ممکن است نویسههایی بدارد که نمیتوان از آنها در عنوان صفحهها استفاده کرد.",
+ "allpagesbadtitle": "عنوان صفحهٔ دادهشده نامعتبر است یا اینکه دارای پیشوندی بینزبانی یا بینویکیای است. ممکن است نویسههایی بدارد که نمیتوان از آنها در عنوان صفحات استفاده کرد.",
"allpages-bad-ns": "{{SITENAME}} دارای فضای نام «$1» نیست.",
"allpages-hide-redirects": "پنهانکردن تغییرمسیرها",
"cachedspecial-viewing-cached-ttl": "شما در حال مشاهدهٔ نسخهای از این صفحه که در میانگیر قرار دارد هستید که ممکن است برای $1 قبل باشد.",
"cachedspecial-viewing-cached-ts": "شما در حال مشاهدهٔ نسخهای از این صفحه که در میانگیر قرار دارد هستید، و این نسخه ممکن است کاملاً واقعی نباشد.",
"cachedspecial-refresh-now": "مشاهده آخرین.",
"categories": "ردهها",
- "categoriespagetext": "{{PLURAL:$1|ردهٔ|ردههای}} زیر دارای صفحهها یا پروندههایی {{PLURAL:$1|است|هستند}}.\n[[Special:UnusedCategories|ردههای استفادهنشده]] در اینجا نمایش داده نشدهاند.\nهمچنین [[Special:WantedCategories|ردههای مورد نیاز]] را ببینید.",
+ "categoriespagetext": "{{PLURAL:$1|ردهٔ|ردههای}} زیر دارای صفحات یا پروندههایی {{PLURAL:$1|است|هستند}}.\n[[Special:UnusedCategories|ردههای استفادهنشده]] در اینجا نمایش داده نشدهاند.\nهمچنین [[Special:WantedCategories|ردههای مورد نیاز]] را ببینید.",
"categoriesfrom": "نمایش ردهها با شروع از:",
"special-categories-sort-count": "مرتب کردن بر اساس تعداد",
"special-categories-sort-abc": "مرتب کردن الفبایی",
"watching": "پیگیری...",
"unwatching": "توقف پیگیری...",
"watcherrortext": "ایرادی در هنگام عوض کردن تنظیمات فهرست پیگیرتان برای «$1» رخ داد.",
- "enotif_reset": "نشانگذاری همهٔ صفحهها بهعنوان بازدیدشده",
+ "enotif_reset": "نشانگذاری همهٔ صفحات بهعنوان بازدیدشده",
"enotif_impersonal_salutation": "کاربر {{SITENAME}}",
"enotif_subject_deleted": "{{SITENAME}} صفحهٔ $1 توسط {{gender:$2|$2}} حذف شد.",
"enotif_subject_created": "{{SITENAME}} صفحهٔ $1 توسط {{gender:$2|$2}} ایجاد شده.",
"deletereasonotherlist": "دلیل دیگر",
"deletereason-dropdown": "*دلایل متداول حذف\n** هرزنگار\n** خرابکاری\n** نقض حق تکثیر\n** درخواست کاربر\n** تغییرمسیر شکسته",
"delete-edit-reasonlist": "ویرایش دلایل حذف",
- "delete-toobig": "این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.\nبه منظور جلوگیری از اختلال ناخواسته در {{SITENAME}} حذف این گونه صفحهها محدود شدهاست.",
+ "delete-toobig": "این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.\nبه منظور جلوگیری از اختلال ناخواسته در {{SITENAME}} حذف این گونه صفحات محدود شدهاست.",
"delete-warning-toobig": "این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.\nحذف آن ممکن است که عملکرد پایگاه دادهٔ {{SITENAME}} را مختل کند;\nبا احتیاط ادامه دهید.",
"deleteprotected": "شما نمیتوانید این صفحه را پاک کنید چون که از آن محافظت شدهاست.",
"deleting-backlinks-warning": "''' هشدار:''' [[Special:WhatLinksHere/{{FULLPAGENAME}}|صفحههای دیگری]] هستند که به صفحهای که شما در حال حذف آن هستید پیوند دارند یا آن را تراگنجانیدهاند.",
"protect_expiry_old": "زمان سرآمدن در گذشتهاست.",
"protect-unchain-permissions": "باز کردن سایر گزینههای محافظت",
"protect-text": "شما میتوانید سطح محافظت صفحهٔ '''$1''' را ببینید و از اینجا آن را تغییر دهید.",
- "protect-locked-blocked": "شما در مدتی که دسترسیتان قطع است نمیتوانید سطح محافظت صفحهها را تغییر دهید.\nتنظیمات فعلی صفحهٔ '''$1''' از این قرار است:",
+ "protect-locked-blocked": "شما در مدتی که دسترسیتان قطع است نمیتوانید سطح محافظت صفحات را تغییر دهید.\nتنظیمات فعلی صفحهٔ '''$1''' از این قرار است:",
"protect-locked-dblock": "به دلیل قفل شدن پایگاه داده، امکان تغییر سطح محافظت صفحه وجود ندارد.\nتنظیمات فعلی صفحهٔ '''$1''' به این قرار است:",
"protect-locked-access": "حساب کاربری شما اجازهٔ تغییر سطح محافظت صفحه را ندارد.\nتنظیمات فعلی صفحهٔ '''$1''' به این قرار است:",
"protect-cascadeon": "این صفحه در حال حاضر محافظت شدهاست زیرا در {{PLURAL:$1|صفحهٔ|صفحههای}} زیر که گزینهٔ محافظت آبشاری {{PLURAL:$1|آن|آنها}} فعال است، گنجانده شده است.\nتغییراتی به سطح محافظت این صفحه به محافظت ابشاری تأثیر نخواهد گذاشت.",
"undelete-header": "برای دیدن صفحههای حذفشدهٔ اخیر [[Special:Log/delete|سیاههٔ حذف]] را ببینید.",
"undelete-search-title": "جستجوی صفحههای حذفشده",
"undelete-search-box": "جستجوی صفحههای حذفشده.",
- "undelete-search-prefix": "نمایش صفحهها با شروع از:",
+ "undelete-search-prefix": "نمایش صفحات با شروع از:",
"undelete-search-submit": "برو",
"undelete-no-results": "هیچ صفحهٔ منطبقی در بایگانی حذفشدهها یافت نشد.",
"undelete-filename-mismatch": "امکان احیای نسخهٔ $1 وجود ندارد: نام پرونده مطابقت نمیکند.",
"ipaddressorusername": "نشانی آیپی یا نام کاربری:",
"ipbexpiry": "زمان سرآمدن:",
"ipbreason": "دلیل:",
- "ipbreason-dropdown": "*دلایل متداول قطع دسترسی\n**واردکردن اطلاعات نادرست\n**پاککردن اطلاعات مفید از صفحهها\n**هرزنگاری از طریق درج مکرر پیوند به وبگاهها\n**درج چرندیات یا نوشتههای بیمعنا در صفحهها\n**تهدید یا ارعاب دیگر کاربران\n**سوء استفاده از چند حساب کاربری\n**نام کاربری نامناسب",
+ "ipbreason-dropdown": "*دلایل متداول قطع دسترسی\n**واردکردن اطلاعات نادرست\n**پاککردن اطلاعات مفید از صفحات\n**هرزنگاری از طریق درج مکرر پیوند به وبگاهها\n**درج چرندیات یا نوشتههای بیمعنا در صفحات\n**تهدید یا ارعاب دیگر کاربران\n**سوء استفاده از چند حساب کاربری\n**نام کاربری نامناسب",
"ipb-hardblock": "جلوگیری از ویرایش کردن کاربران ثبت نام کرده از طریق این نشانی آیپی",
"ipbcreateaccount": "جلوگیری از ایجاد حساب",
"ipbemailban": "جلوگیری از ارسال رایانامه",
"ipbnounblockself": "شما مجاز به باز کردن دسترسی خود نیستید.",
"lockdb": "قفل کردن پایگاه داده",
"unlockdb": "از قفل در آوردن پایگاه داده",
- "lockdbtext": "قفل کردن پایگاه داده امکان ویرایش صفحهها، تغییر تنظیمات، ویرایش پیگیریها، و سایر تغییراتی را که نیازمند تغییری در پایگاه داده است، از همهٔ کاربران سلب میکند.\nلطفاً تأیید کنید که همین کار را میخواهید انجام دهید، و در اولین فرصت پایگاه داده را از حالت قفل شده خارج خواهید کرد.",
- "unlockdbtext": "از قفل در آوردن پایگاه داده به تمامی کاربران اجازه میدهد که توانایی ویرایش صفحهها، تغییر تنظیمات، تغییر پیگیریها و هر تغییر دیگری که نیازمند تغییر در پایگاه داده باشد را دوباره به دست بیاورند.\nلطفاً تأیید کنید که همین کار را میخواهید انجام دهید.",
+ "lockdbtext": "قفل کردن پایگاه داده امکان ویرایش صفحات، تغییر تنظیمات، ویرایش پیگیریها، و سایر تغییراتی را که نیازمند تغییری در پایگاه داده است، از همهٔ کاربران سلب میکند.\nلطفاً تأیید کنید که همین کار را میخواهید انجام دهید، و در اولین فرصت پایگاه داده را از حالت قفل شده خارج خواهید کرد.",
+ "unlockdbtext": "از قفل در آوردن پایگاه داده به تمامی کاربران اجازه میدهد که توانایی ویرایش صفحات، تغییر تنظیمات، تغییر پیگیریها و هر تغییر دیگری که نیازمند تغییر در پایگاه داده باشد را دوباره به دست بیاورند.\nلطفاً تأیید کنید که همین کار را میخواهید انجام دهید.",
"lockconfirm": "بله، من جداً میخواهم پایگاه داده را قفل کنم.",
"unlockconfirm": "بله، من جداً میخواهم پایگاه داده را از قفل در آورم.",
"lockbtn": "قفل کردن پایگاه داده",
"lockedbyandtime": "(به وسیلهٔ $1 در $2 ساعت $3)",
"move-page": "انتقال $1",
"move-page-legend": "انتقال صفحه",
- "movepagetext": "با استفاده از فرم زیر نام صفحه تغییر خواهد کرد، و تمام تاریخچهاش به نام جدید منتقل خواهد شد.\nعنوان قدیمی تبدیل به یک صفحهٔ تغییرمسیر به عنوان جدید خواهد شد.\nشما میتوانید تغییرمسیرهایی که به عنوان اصلی اشاره دارند را به صورت خودکار بهروزرسانی کنید.\nپیوندهای که به عنوان صفحهٔ قدیمی وجود دارند، تغییر نخواهند کرد؛ حتماً تغییرمسیرهای [[Special:DoubleRedirects|دوتایی]] یا [[Special:BrokenRedirects|خراب]] را بررسی کنید.\n'''شما''' مسئول اطمینان از این هستید که پیوندها هنوز به همانجایی که قرار است بروند.\n\nتوجه کنید که اگر از قبل صفحهای در عنوان جدید وجود داشته باشد صفحه منتقل '''نخواهد شد'''،\nمگر این آخرین ویرایش تغییرمسیر باشد و در تاریخچهٔ ویرایشی نداشته باشد.\nاین یعنی اگر اشتباه کردید میتوانید صفحه را به همان جایی که از آن منتقل شده بود برگردانید، و این که نمیتوانید روی صفحهها موجود بنویسید.\n\n'''هشدار!'''\nانتقال صفحهها به نام جدید ممکن است تغییر اساسی و غیرمنتظرهای برای صفحههای محبوب باشد؛\nلطفاً مطمئن شوید که قبل از انتقال دادن صفحه، عواقب این کار را درک میکنید.",
+ "movepagetext": "با استفاده از فرم زیر نام صفحه تغییر خواهد کرد، و تمام تاریخچهاش به نام جدید منتقل خواهد شد.\nعنوان قدیمی تبدیل به یک صفحهٔ تغییرمسیر به عنوان جدید خواهد شد.\nشما میتوانید تغییرمسیرهایی که به عنوان اصلی اشاره دارند را به صورت خودکار بهروزرسانی کنید.\nپیوندهای که به عنوان صفحهٔ قدیمی وجود دارند، تغییر نخواهند کرد؛ حتماً تغییرمسیرهای [[Special:DoubleRedirects|دوتایی]] یا [[Special:BrokenRedirects|خراب]] را بررسی کنید.\n'''شما''' مسئول اطمینان از این هستید که پیوندها هنوز به همانجایی که قرار است بروند.\n\nتوجه کنید که اگر از قبل صفحهای در عنوان جدید وجود داشته باشد صفحه منتقل '''نخواهد شد'''،\nمگر این آخرین ویرایش تغییرمسیر باشد و در تاریخچهٔ ویرایشی نداشته باشد.\nاین یعنی اگر اشتباه کردید میتوانید صفحه را به همان جایی که از آن منتقل شده بود برگردانید، و این که نمیتوانید روی صفحات موجود بنویسید.\n\n'''هشدار!'''\nانتقال صفحات به نام جدید ممکن است تغییر اساسی و غیرمنتظرهای برای صفحات محبوب باشد؛\nلطفاً مطمئن شوید که قبل از انتقال دادن صفحه، عواقب این کار را درک میکنید.",
"movepagetext-noredirectfixer": "استفاده از فرم زیر سبب تغییر نام یک صفحه و انتقال تمام تاریخچهٔ آن به نام جدید میشود.\nعنوان پیشین تغییرمسیری به عنوان جدید خواهد شد.\nبه خاطر داشته باشید که [[Special:DoubleRedirects|تغییرمسیرهای دوتایی]] یا [[Special:BrokenRedirects|تغییرمسیرهای خراب]] را بررسی کنید.\nشما مسئولید که مطمئن شوید پیوندها به جایی اشاره میکنند که قرار است بروند.\n\nتوجه کنید که اگر صفحهای تحت عنوان جدید از قبل موجود باشد، انتقال انجام '''نخواهد شد'''، مگر اینکه صفحه خالی و یا تغییرمسیر باشد و تاریخچهٔ ویرایشی دیگری نداشته باشد.\nاین یعنی اگر صفحه را به نامی اشتباه منتقل کردید میتوانید این تغییر را واگردانی کنید، اما نمیتوانید به صفحهای که از قبل موجود است انتقال دهید.\n\n'''هشدار!'''\nانتقال صفحههای پربیننده ممکن است عملی غیرمنتظره باشد؛\nلطفاً پیش از انتقال مطمئن شوید از نتیجهٔ کار آگاهید.",
"movepagetalktext": "صفحهٔ بحث مربوط، اگر وجود داشته باشد، بطور خودکار همراه با مقالهٔ اصلی منتقل خواهد شد '''مگر اینکه''' :\n* در حال انتقال صفحه از این فضای نام به فضای نام دیگری باشید،\n* یک صفحهٔ بحث غیرخالی تحت این نام جدید وجود داشته باشد، یا\n* جعبهٔ زیر را تیک نزده باشید.\n\nدر این حالات، باید صفحه را بطور دستی انتقال داده و یا محتویات دو صفحه را با ویرایش ادغام کنید.",
"movearticle": "انتقال صفحه:",
"moveuserpage-warning": "'''هشدار:''' شما در حال انتقال دادن یک صفحهٔ کاربر هستید. توجه داشته باشید که تنها صفحه منتقل میشود و نام کاربر تغییر '''نمییابد'''.",
"movecategorypage-warning": "<strong>هشدار:</strong> شما در حال انتقال صفحه رده هستید. لطفاً توجه داشته باشید که فقط صفحه منتقل خواهد شد و صفحات در رده قدیمی میمانند و به رده جدید <em>نمیروند</em>.",
- "movenologintext": "برای انتقال صفحهها باید کاربر ثبتشده بوده و [[Special:UserLogin|به سامانه وارد شوید]].",
- "movenotallowed": "شما اجازهٔ انتقال دادن صفحهها را ندارید.",
+ "movenologintext": "برای انتقال صفحات باید کاربر ثبتشده بوده و [[Special:UserLogin|به سامانه وارد شوید]].",
+ "movenotallowed": "شما اجازهٔ انتقال دادن صفحات را ندارید.",
"movenotallowedfile": "شما اجازهٔ انتقال پروندهها را ندارید.",
"cant-move-user-page": "شما اجازه ندارید صفحههای کاربری سرشاخه را انتقال دهید.",
"cant-move-to-user-page": "شما اجازه ندارید که یک صفحه را به یک صفحهٔ کاربر انتقال دهید (به استثنای زیر صفحههای کاربری).",
"cant-move-category-page": "شما اجازهٔ انتقال دادن صفحهٔ ردهها را ندارید.",
"cant-move-to-category-page": "شما مجوز برای انتقال صفحه به صفحه رده ندارید.",
- "newtitle": "بهعنوان جدید",
+ "newtitle": "به عنوان تازه:",
"move-watch": "پیگیری صفحههای مبدأ و مقصد",
"movepagebtn": "صفحه منتقل شود",
"pagemovedsub": "انتقال با موفقیت انجام شد",
"movepage-page-unmoved": "صفحهٔ $1 را نمیتوان به $2 انتقال داد.",
"movepage-max-pages": "حداکثر تعداد صفحههای ممکن ($1 {{PLURAL:$1|صفحه|صفحه}}) که میتوان انتقال داد منتقل شدند و صفحههای دیگر را نمیتوان به طور خودکار منتقل کرد.",
"movelogpage": "سیاههٔ انتقال",
- "movelogpagetext": "در زیر فهرستی از انتقال صفحهها آمده است.",
+ "movelogpagetext": "در زیر فهرستی از انتقال صفحات آمدهاست.",
"movesubpage": "{{PLURAL:$1|زیرصفحه|زیرصفحهها}}",
"movesubpagetext": "این صفحه $1 زیرصفحه دارد که در زیر نمایش {{PLURAL:$1|یافتهاست|یافتهاند}}.",
"movenosubpage": "این صفحه هیچ زیرصفحهای ندارد.",
"bad-target-model": "مقصد مورد نظر از مدل محتوایی متفاوتی استفاده میکند. تبدیل $1 به $2 ممکن نیست.",
"imagenocrossnamespace": "امکان انتقال تصویر به فضای نام غیر پرونده وجود ندارد",
"nonfile-cannot-move-to-file": "امکان انتقال محتوای غیر پرونده به فضای نام پرونده وجود ندارد",
- "imagetypemismatch": "پسÙ\88Ù\86د پرÙ\88Ù\86دÙ\87 جدÛ\8cد با نوع آن سازگار نیست",
+ "imagetypemismatch": "پسÙ\88Ù\86د پرÙ\88Ù\86دÙ\87 تازÙ\87 با نوع آن سازگار نیست",
"imageinvalidfilename": "نام پروندهٔ هدف نامجاز است",
"fix-double-redirects": "به روز کردن تمامی تغییرمسیرهایی که به مقالهٔ اصلی اشاره میکنند",
"move-leave-redirect": "بر جا گذاشتن یک تغییرمسیر",
"semiprotectedpagemovewarning": "'''تذکر:''' این صفحه قفل شدهاست به طوری که تنها کاربران ثبت نام کرده میتوانند آن را انتقال دهند.\nآخرین موارد سیاهه در زیر آمده است:",
"move-over-sharedrepo": "== پرونده موجود است ==\n[[:$1]] در یک مخزن مشترک وجود دارد. انتقال یک پرونده به این نام باعث باطل شدن پرونده مشترک خواهد شد.",
"file-exists-sharedrepo": "نام پرونده انتخاب شده از قبل در یک مخزن مشترک استفاده شدهاست.\nلطفاً یک نام دیگر برگزینید.",
- "export": "برونبری صفحهها",
- "exporttext": "شما میتوانید متن و تاریخچهٔ ویرایش یک صفحهٔ مشخص یا مجموعهای از صفحهها را به شکل پوشیده در اکسامال برونبری کنید.\nاین اطلاعات را میتوان در ویکی دیگری که نرمافزار «مدیاویکی» را اجرا میکند از طریق [[Special:Import|صفحهٔ درونریزی]] وارد کرد.\n\nبرای برونبری صفحهها، عنوان آنها را در جعبهٔ زیر وارد کنید (در هر سطر فقط یک عنوان) و مشخص کنید که آیا نسخهٔ اخیر صفحه را به همراه نسخههای قدیمیتر و تاریخچهٔ صفحه میخواهید، یا تنها نسخهٔ اخیر صفحه و اطلاعات آخرین ویرایش را میخواهید.\n\nدر حالت دوم، شما میتوانید از یک پیوند استفاده کنید، مثلاً [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] برای صفحهٔ «[[{{MediaWiki:Mainpage}}]]».",
- "exportall": "برونبری همهٔ صفحهها",
+ "export": "برونبری صفحات",
+ "exporttext": "شما میتوانید متن و تاریخچهٔ ویرایش یک صفحهٔ مشخص یا مجموعهای از صفحات را به شکل پوشیده در اکسامال برونبری کنید.\nاین اطلاعات را میتوان در ویکی دیگری که نرمافزار «مدیاویکی» را اجرا میکند از طریق [[Special:Import|صفحهٔ درونریزی]] وارد کرد.\n\nبرای برونبری صفحات، عنوان آنها را در جعبهٔ زیر وارد کنید (در هر سطر فقط یک عنوان) و مشخص کنید که آیا نسخهٔ اخیر صفحه را به همراه نسخههای قدیمیتر و تاریخچهٔ صفحه میخواهید، یا تنها نسخهٔ اخیر صفحه و اطلاعات آخرین ویرایش را میخواهید.\n\nدر حالت دوم، شما میتوانید از یک پیوند استفاده کنید، مثلاً [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] برای صفحهٔ «[[{{MediaWiki:Mainpage}}]]».",
+ "exportall": "برونبری همهٔ صفحات",
"exportcuronly": "فقط نسخهٔ فعلی شامل شود، نه کل تاریخچه",
- "exportnohistory": "----\n'''توجه:''' امکان برونبری تاریخچهٔ کامل صفحهها از طریق این صفحه به دلایل اجرایی از کار انداخته شدهاست.",
+ "exportnohistory": "----\n'''توجه:''' امکان برونبری تاریخچهٔ کامل صفحات از طریق این صفحه به دلایل اجرایی از کار انداخته شدهاست.",
"exportlistauthors": "شامل فهرست کامل مشارکتکنندگان هر صفحه",
"export-submit": "برونبری",
- "export-addcattext": "افزودن صفحهها از رده:",
+ "export-addcattext": "افزودن صفحات از رده:",
"export-addcat": "افزودن",
- "export-addnstext": "افزودن صفحهها از فضای نام:",
+ "export-addnstext": "افزودن صفحات از فضای نام:",
"export-addns": "افزودن",
"export-download": "ذخیره به صورت پرونده",
"export-templates": "شامل شدن الگوها",
"thumbnail_gd-library": "تنظیمات ناقص کتابخانهٔ GD: عملکرد $1 وجود ندارد",
"thumbnail_image-missing": "پرونده به نظر گم شدهاست: $1",
"thumbnail_image-failure-limit": "تلاشهای ناموفق اخیر بسیاری ($1 یا بیشتر) برای ارائهٔ این تصویر کوچک وجود داشته است. لطفأ بعداً دوباره تلاش کنید.",
- "import": "درونریزی صفحهها",
+ "import": "درونریزی صفحات",
"importinterwiki": "درونریزی تراویکی",
- "import-interwiki-text": "یک ویکی و یک نام صفحه را انتخاب کنید تا اطلاعات از آن درونریزی شود.\nتاریخ نسخهها و نام ویرایشکنندگان ثابت خواهد ماند.\nاطلاعات مربوط به درونریزی صفحهها در [[Special:Log/import|سیاههٔ درونریزیها]] درج خواهد شد.",
+ "import-interwiki-text": "یک ویکی و یک نام صفحه را انتخاب کنید تا اطلاعات از آن درونریزی شود.\nتاریخ نسخهها و نام ویرایشکنندگان ثابت خواهد ماند.\nاطلاعات مربوط به درونریزی صفحات در [[Special:Log/import|سیاههٔ درونریزیها]] درج خواهد شد.",
"import-interwiki-sourcewiki": "ویکی منبع:",
"import-interwiki-sourcepage": "صفحهٔ مبدأ:",
"import-interwiki-history": "تمام نسخههای تاریخچهٔ این صفحه انتقال داده شود",
"import-upload-filename": "نام پرونده:",
"import-comment": "توضیح:",
"importtext": "لطفاً پرونده را از ویکی منبع با کمک [[Special:Export|ابزار برونبری]] دریافت کنید.\nسپس آن را روی دستگاهتان ذخیره کنید و اینجا بارگذاری نمایید.",
- "importstart": "در حال درونریزی صفحهها...",
+ "importstart": "در حال درونریزی صفحات...",
"import-revision-count": "$1 {{PLURAL:$1|ویرایش|ویرایش}}",
"importnopages": "صفحهای برای درونریزی نیست.",
"imported-log-entries": "$1 {{PLURAL:$1|مورد سیاهه|مورد سیاهه}} درون ریزی شد.",
- "importfailed": "درونریزی صفحهها شکست خورد: <nowiki>$1</nowiki>",
+ "importfailed": "درونریزی صفحات شکست خورد: <nowiki>$1</nowiki>",
"importunknownsource": "نوع مأخذ درونریزی معلوم نیست",
- "importcantopen": "پروندهٔ درونریزی صفحهها باز نشد",
+ "importcantopen": "پروندهٔ درونریزی صفحات باز نشد",
"importbadinterwiki": "پیوند میانویکی نادرست",
"importsuccess": "درونریزی با موفقیت انجام شد!",
"importnosources": "هیچ منبعی برای درونریزی اطلاعات از ویکی دیگر تعریف نشدهاست.",
"import-rootpage-invalid": "با توجه به ریشه صفحه عنوان نامعتبر است.",
"import-rootpage-nosubpage": "فضای نام \"$1\" صفحهٔ مبنا اجازهٔ زیرصفحه نمیدهد.",
"importlogpage": "سیاههٔ درونریزیها",
- "importlogpagetext": "درونریزی صفحهها به همراه تاریخچهٔ ویرایش آنها از ویکیهای دیگر.",
+ "importlogpagetext": "درونریزی صفحات به همراه تاریخچهٔ ویرایش آنها از ویکیهای دیگر.",
"import-logentry-upload": "[[$1]] را از طریق بارگذاری پرونده درونریزی کرد",
"import-logentry-upload-detail": "$1 {{PLURAL:$1|نسخه|نسخه}} واردشده",
"import-logentry-interwiki": "$1 را تراویکی کرد",
"tooltip-ca-unwatch": "حذف این صفحه از فهرست پیگیریهایتان",
"tooltip-search": "جستجو در {{SITENAME}}",
"tooltip-search-go": "در صورت امکان به صفحهای با همین نام برو",
- "tooltip-search-fulltext": "جستجوی این عبارت در صفحهها",
+ "tooltip-search-fulltext": "جستجوی این عبارت در صفحات",
"tooltip-p-logo": "مشاهدهٔ صفحهٔ اصلی",
"tooltip-n-mainpage": "مشاهدهٔ صفحهٔ اصلی",
"tooltip-n-mainpage-description": "مشاهدهٔ صفحهٔ اصلی",
"creditspage": "اعتبارات این صفحه",
"nocredits": "اطلاعات سازندگان این صفحه موجود نیست.",
"spamprotectiontitle": "پالایهٔ هرزنگاریها",
- "spamprotectiontext": "از ذخÛ\8cرÙ\87 کردÙ\86 صÙ\81ØÙ\87 تÙ\88سط پاÙ\84اÛ\8cÙ\87Ù\94 Ù\87رزÙ\86گارÛ\8câ\80\8cÙ\87ا جÙ\84Ù\88Ú¯Û\8cرÛ\8c شد.\nÙ\85عÙ\85Ù\88Ù\84اÙ\8b اÛ\8cÙ\86 اتÙ\81اÙ\82 زÙ\85اÙ\86Û\8c Ù\85Û\8câ\80\8cاÙ\81تد Ú©Ù\87 Ù\85تÙ\86 جدÛ\8cد صفحه، حاوی پیوندی به یک نشانی وب باشد که در فهرست سیاه قرار دارد.",
+ "spamprotectiontext": "از ذخÛ\8cرÙ\87 کردÙ\86 صÙ\81ØÙ\87 تÙ\88سط پاÙ\84اÛ\8cÙ\87Ù\94 Ù\87رزÙ\86گارÛ\8câ\80\8cÙ\87ا جÙ\84Ù\88Ú¯Û\8cرÛ\8c شد.\nÙ\85عÙ\85Ù\88Ù\84اÙ\8b اÛ\8cÙ\86 اتÙ\81اÙ\82 زÙ\85اÙ\86Û\8c Ù\85Û\8câ\80\8cاÙ\81تد Ú©Ù\87 Ù\85تÙ\86 تازÙ\87 صفحه، حاوی پیوندی به یک نشانی وب باشد که در فهرست سیاه قرار دارد.",
"spamprotectionmatch": "متن زیر چیزیاست که پالایهٔ هرزهنگاری ما را به کارانداخت: $1",
"spambot_username": "هرزهتمیزکارِ مدیاویکی",
"spam_reverting": "واگردانی به آخرین نسخهای که پیوندی به $1 ندارد.",
"pageinfo-protect-cascading-yes": "بله",
"pageinfo-protect-cascading-from": "محافظت آبشاری از",
"pageinfo-category-info": "اطلاعات رده",
- "pageinfo-category-pages": "تعداد صفحهها",
+ "pageinfo-category-pages": "تعداد صفحات",
"pageinfo-category-subcats": "تعداد زیرردهها",
"pageinfo-category-files": "تعداد پروندهها",
"markaspatrolleddiff": "برچسب گشت بزن",
"autosumm-blank": "صفحه را خالی کرد",
"autosumm-replace": "جایگزینی صفحه با '$1'",
"autoredircomment": "تغییرمسیر به [[$1]]",
- "autosumm-new": "صÙ\81ØÙ\87â\80\8cاÛ\8c جدÛ\8cد حاوی «$1» ایجاد کرد",
+ "autosumm-new": "صÙ\81ØÙ\87â\80\8cاÛ\8c تازÙ\87 حاوی «$1» ایجاد کرد",
"autosumm-newblank": "ایجاد صفحه خالی",
"size-bytes": "$1 بایت",
"size-kilobytes": "$1 کیلوبایت",
"specialpages-group-media": "گزارش بارگذاری رسانهها",
"specialpages-group-users": "کاربرها و دسترسیها",
"specialpages-group-highuse": "صفحههای پربازدید",
- "specialpages-group-pages": "فهرستهای صفحهها",
- "specialpages-group-pagetools": "ابزارهای صفحهها",
+ "specialpages-group-pages": "فهرستهای صفحات",
+ "specialpages-group-pagetools": "ابزارهای صفحات",
"specialpages-group-wiki": "داده و ابزارها",
"specialpages-group-redirects": "صفحههای ویژهٔ تغییرمسیر دهنده",
"specialpages-group-spam": "ابزارهای هرزنگاری",
"tags-active-no": "خیر",
"tags-edit": "ویرایش",
"tags-hitcount": "$1 {{PLURAL:$1|تغییر|تغییر}}",
- "comparepages": "مقایسهٔ صفحهها",
+ "comparepages": "مقایسهٔ صفحات",
"compare-page1": "صفحهٔ ۱",
"compare-page2": "صفحهٔ ۲",
"compare-rev1": "نسخهٔ ۱",
"logentry-rights-rights-legacy": "$1 گروه عضویت $3 را {{GENDER:$2|تغییر داد}}",
"logentry-rights-autopromote": "$1 به طور خودکار از $4 به $5 {{GENDER:$2|ارتقاء داد}}",
"logentry-upload-upload": "$1 {{GENDER:$2|بارگذاری کرد}} $3",
- "logentry-upload-overwrite": "$1 Û\8cÚ© Ù\86سخÙ\87Ù\94 جدÛ\8cد {{GENDER:$2|بارگذاریکرد}} $3",
+ "logentry-upload-overwrite": "$1 Û\8cÚ© Ù\86سخÙ\87Ù\94 تازÙ\87 {{GENDER:$2|بارگذاریکرد}} $3",
"logentry-upload-revert": "$1 {{GENDER:$2|بارگذاری کرد}} $3",
"rightsnone": "(هیچ)",
"feedback-bugornote": "اگر آمادهاید تا مشکلی فنی را با جزئیاتش شرح دهید لطفاً [$1 یک ایراد گزارش دهید]. در غیر این صورت میتوانید از فرم سادهٔ زیر استفاده کنید. نظر شما به همراه نام کاربری و مرورگرتان به صفحهٔ «[$3 $2]» افزوده خواهد شد.",
"feedback-thanks": "سپاس! بازخورد شما در صفحهٔ «[$1 $2]» ثبت شد.",
"feedback-close": "انجام شد",
"feedback-bugcheck": "عالیاست! فقط بررسی کنید که از [$1 ایرادهای شناختهشده] نباشد.",
- "feedback-bugnew": "بررسÛ\8c کردÙ\85. اÛ\8cرادÛ\8c جدÛ\8cد را گزارش بده",
+ "feedback-bugnew": "بررسÛ\8c کردÙ\85. اÛ\8cرادÛ\8c تازÙ\87 را گزارش بده",
"searchsuggest-search": "جستجو",
"searchsuggest-containing": "صفحههای دربردارنده...",
"api-error-badaccess-groups": "شما اجازهٔ بارگذاری پروندهها را در این ویکی ندارید.",
"showpreview": "Prévisualiser",
"showdiff": "Voir les modifications",
"blankarticle": "<strong>Attention :</strong> La page que vous créez est vide.\nSi vous cliquez de nouveau sur « {{int:savearticle}} », la page sera créée sans aucun contenu.",
- "anoneditwarning": "<strong>Attention :</strong> Vous n’êtes pas identifié(e). Votre adresse IP sera enregistrée dans l’historique de cette page.",
+ "anoneditwarning": "<strong>Attention :</strong> Vous n’êtes pas connecté. Votre adresse IP sera visible de tout le monde si vous faites des modifications. Si vous <strong>[$1 vous connectez]</strong> ou <strong>[$2 créez un compte]</strong>, vos modifications seront attribuées à votre nom d’utilisateur, entre autres avantages.",
"anonpreviewwarning": "''Vous n’êtes pas identifié(e). Sauvegarder enregistrera votre adresse IP dans l’historique des modifications de la page.''",
"missingsummary": "'''Rappel :''' vous n'avez pas encore fourni le résumé de votre modification.\nSi vous cliquez de nouveau sur le bouton « {{int:savearticle}} », la publication sera faite sans nouvel avertissement.",
"missingcommenttext": "Veuillez entrer un commentaire ci-dessous.",
"userlogin-resetlink": "Elfelejtetted a bejelentkezési adataidat?",
"userlogin-resetpassword-link": "Elfelejtetted a jelszavad?",
"userlogin-helplink2": "Segítség a bejelentkezéshez",
- "userlogin-loggedin": "Már be vagy jelentkezve mint {{GENDER:$1|$1}}. Ha más néven akarsz belépni, alább megteheted.",
- "userlogin-createanother": "Felhasználói fiók létrehozása",
"createacct-emailrequired": "E-mail cím",
"createacct-emailoptional": "E-mail cím (opcionális)",
"createacct-email-ph": "Add meg e-mail címed",
"preferences": "Beállítások",
"mypreferences": "Beállítások",
"prefs-edits": "Szerkesztéseid száma:",
- "prefsnologintext2": "Kérjük jelentkezzen be a beállítások módosításához.",
+ "prefsnologintext2": "Kérjük, jelentkezz be a beállítások módosításához.",
"prefs-skin": "Felület",
"skin-preview": "előnézet",
"datedefault": "Nincs beállítás",
"userlogin-resetlink": "ავტორიზაციის მონაცემები დაგავიწყდათ?",
"userlogin-resetpassword-link": "დაგავიწყდათ პაროლი?",
"userlogin-helplink2": "დახმარება:შესვლა",
- "userlogin-createanother": "სხვა ანგარიშის შექმნა",
"createacct-emailrequired": "ელ. ფოსტის მისამართი",
"createacct-emailoptional": "ელ. ფოსტის მისამართი (არასავალდებულო)",
"createacct-email-ph": "შეიყვანეთ თქვენი ელ. ფოსტის მისამართი",
"Parthava (on mzn.wikipedia.org)",
"Spacebirdy",
"محک",
- "아라"
+ "아라",
+ "Alirezaaa"
]
},
"tog-underline": "پیوندون زیر خط دکشی بواشه",
"revertmove": "واچـیـهن",
"delete_and_move_confirm": "أره، پاک هاکهن وه ره",
"export": "دأیابأبهردهن ولـگئون",
- "exporttext": "شما بتونّی متن و تاریخچهٔ دچییه بیّن اتا صفحهٔ مشخص یا یتـّا مجموعه از صفحهها ره به شکل دپوشنییه اکسامال دله بریم دربَورین.\n\nاین اطلاعات ره بنشنه اتا ویکی دیگه دله که نرمافزار «مدیاویکی» ره اجرا کانده از طریق [[Special:Import|صفحهٔ دلهدشنیین]] وارد هاکردن.\n\nبریمدربَوردن صفحهها وسّه، وشون عنوان ره این جعبه دله دشنین (هر سطر فقط اتا عنوان) و معلوم هاکنین که تازه دگاردستهئون صفحه ره همراه نسخهئون قدیمیتر و تاریخچهٔ صفحه خوندنّی، یا تازه دگاردستهئون صفحه و اطلاعات آخرین دچییه ره، تیناری اشنّی.\n\nدومین حالت سَره، شما بتونّی اتا لینک جه استفاده هاکنین، مثلاً [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] صفحهٔ «[[{{MediaWiki:Mainpage}}]]» وسّه.",
+ "exporttext": "شما بتونّی متن و تاریخچهٔ دچییه بیّن اتا صفحهٔ مشخص یا یتـّا مجموعه از صفحات ره به شکل دپوشنییه اکسامال دله بریم دربَورین.\n\nاین اطلاعات ره بنشنه اتا ویکی دیگه دله که نرمافزار «مدیاویکی» ره اجرا کانده از طریق [[Special:Import|صفحهٔ دلهدشنیین]] وارد هاکردن.\n\nبریمدربَوردن صفحات وسّه، وشون عنوان ره این جعبه دله دشنین (هر سطر فقط اتا عنوان) و معلوم هاکنین که تازه دگاردستهئون صفحه ره همراه نسخهئون قدیمیتر و تاریخچهٔ صفحه خوندنّی، یا تازه دگاردستهئون صفحه و اطلاعات آخرین دچییه ره، تیناری اشنّی.\n\nدومین حالت سَره، شما بتونّی اتا لینک جه استفاده هاکنین، مثلاً [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] صفحهٔ «[[{{MediaWiki:Mainpage}}]]» وسّه.",
"allmessages-filter-all": "همه",
"thumbnail-more": "گت بوو",
"import-interwiki-submit": "بیاردن",
"logdelete-selected": "{{PLURAL:$1|Fatto scigliuto d' 'o riggistro|Fatte scigliute d' 'o riggistro}}:",
"revdelete-text-text": "'E verziune scancellate cumpareno ancora dint' 'a cronologgia d' 'a paggena, ma na parte d' 'o cuntenuto lloro nun sarrà disponibbele a 'o pubbreco.",
"revdelete-text-file": "'E verziune 'e file scancellate cumpareno ancora dint' 'a cronologgia d' 'o file, ma parte d' 'o cuntenuto lloro nun sarrà disponibbele a 'o pubbreco.",
+ "logdelete-text": "'E fatte 'e riggistro scancellate cumpareno ancora dint' 'a cronologgia 'e riggistro, ma na parte d' 'o cuntenuto lloro nun sarrà disponibbele a 'o pubbreco.",
+ "revdelete-text-others": "Ll'at'ammenistrature puterranno ancora trasì e arrepiglià 'e cuntenute annascunnute, si nun so' state mpustate cchiù restrizziune.",
+ "revdelete-confirm": "Pe' piacere cunferma ca overo bbuò ffà chesto, ca cunosce 'e cunseguenze, e ca staje facenno chesto rispettanno 'e [[{{MediaWiki:Policy-url}}|linee guida]].",
+ "revdelete-suppress-text": "Sti luvamiente hana essere fatte '''unicamente''' dint' 'e situaziune ccà abbascio:\n* nfurmaziune potenzialmente diffamatorie\n* date perzunale inopportune\n*: ''indirizze, nummeri 'e telefono, codece fiscale, ecc.''",
+ "revdelete-legend": "Miette 'e limmete 'e visibilità",
+ "revdelete-hide-text": "Testo d' 'a verziona",
+ "revdelete-hide-image": "Annascunne 'e cuntenute d' 'o file",
+ "revdelete-hide-name": "Annascunne aziona e l'oggetto 'e cchesta",
+ "revdelete-hide-comment": "Modifeca oggetto",
+ "revdelete-hide-user": "Nomme o indirizzo IP 'e ll'autore",
+ "revdelete-hide-restricted": "Annascunne 'e nfurmaziune 'nnecate pure a l'ammenistrature",
+ "revdelete-radio-same": "(nun cagnà)",
"revdelete-radio-set": "Nasconde",
"revdelete-radio-unset": "Faje vedé",
+ "revdelete-suppress": "Annascunne 'e nfurmaziune pure a l'ammenistrature",
+ "revdelete-unsuppress": "Scancella 'e limmete ncopp' 'e verziune arripigliate",
+ "revdelete-log": "Mutivo:",
+ "revdelete-submit": "Applica {{PLURAL:$1|â virziona scigliuta|a 'e virziune scigliute}}",
+ "revdelete-success": "'''Visibbelità d' 'a verziona agghiurnata e apposto.'''",
+ "revdelete-failure": "'''Int'a sta virziona 'a visibbelità nun se può agghiurnà:'''\n$1",
+ "logdelete-success": "'''Int'a stu riggistro 'a visibbelità è stata scigliuta currettamente.'''",
+ "logdelete-failure": "'''Int'a stu riggistro 'a visibbelità nun se può scegliere:'''\n$1",
"revdel-restore": "càgna visiblità",
+ "pagehist": "Verziune 'e primma",
+ "deletedhist": "Cronologgia scancellata",
+ "revdelete-hide-current": "Nun se ponno annasconnere ll'item cu data 2, $1: pecché song'a la verziona 'e mmò.",
+ "revdelete-show-no-access": "Errore a mmustà ll'oggetto cu data $2, $1: St'oggetto è stato nzegnàto comme \"riservato\".\nNun tiene acciesso a chesto.",
+ "revdelete-modify-no-access": "Nun se può cagnà l'oggetto cu data $2, $1: pecché st'oggetto è stato nzegnàto comme \"riservato\".\nVuje nun avete acciesso.",
+ "revdelete-modify-missing": "Nun se può cagnà l'oggetto cu l'ID $1 pecché nun è prisente int' 'o database.",
+ "revdelete-no-change": "'''Attenziò:''' l'oggetto cu data $2, $1 teneva già 'e mpustaziune 'e visibbilità addimannate.",
"lineno": "Riga $1:",
"editundo": "annulla",
"searchresults": "Risultato d''a recerca",
"unwatchthispage": "Fjerner overvåkning",
"notanarticle": "Ikke en artikkel",
"notvisiblerev": "Revisjonen er slettet",
- "watchlist-details": "{{PLURAL:$1|Én side|$1 sider}} på din overvåkningsliste, teller ikke diskusjonssider.",
+ "watchlist-details": "Du har {{PLURAL:$1|én side|$1 sider}} på overvåkningslisten din (pluss tilhørende diskusjonssider).",
"wlheader-enotif": "E-postvarsling er slått på.",
- "wlheader-showupdated": "Sider som har blitt forandret siden du sist besøkte dem vises i '''fet tekst'''",
+ "wlheader-showupdated": "Sider som har blitt endret siden du besøkte dem sist vises i '''fet tekst'''.",
"wlnote": "Nedenfor er {{PLURAL:$1|den siste endringen|de siste <strong>$1</strong> endringene}} {{PLURAL:$2|den siste timen|de siste <strong>$2</strong> timene}}, per $3 kl. $4",
"wlshowlast": "Vis siste $1 timer $2 dager $3",
"watchlist-options": "Alternativ for overvåkningslisten",
"resetpass-abort-generic": "La modificacion del senhal es estada anulada per una extension.",
"resetpass-expired": "Vòstre senhal a expirat. Provesissètz-ne un novèl per vos connectar.",
"resetpass-expired-soft": "Vòstre senhal a expirat, e deu èsser reïnicializat. Causissètz-ne un novèl ara, o clicatz sus « {{int:resetpass-submit-cancel}} » per o far mai tard.",
+ "resetpass-validity-soft": "Vòstre senhal es pas valid : $1\n\nCausissètz un senhal novèl ara, o clicatz sus « {{int:resetpass-submit-cancel}} » per lo reïnicializar mai tard.",
"passwordreset": "Remesa a zèro del senhal",
"passwordreset-text-one": "Emplenatz aqueste formulari per reïnicializar vòstre senhal.",
"passwordreset-text-many": "{{PLURAL:$1|Completatz un d'aqueles camps per recebre un senhal temporari per corrièr electronic.}}",
"preview": "Previsualizar",
"showpreview": "Previsualizacion",
"showdiff": "Veire los cambiaments",
+ "blankarticle": "<strong>Atencion :</strong> La pagina que creatz es voida.\nSe clicatz tornarmai sus « {{int:savearticle}} », la pagina serà creada sens cap de contengut.",
"anoneditwarning": "'''Atencion :''' sètz pas identificat(ada).\nVòstra adreça IP serà enregistrada dins l’istoric d'aquesta pagina.",
"anonpreviewwarning": "''Sètz pas identificat. Salvar enregistrarà vòstra adreça IP dins l’istoric de las modificacions de la pagina.''",
"missingsummary": "'''Atencion :''' avètz pas modificat lo resumit de vòstra modificacion. Se clicatz tornarmai sul boton « Salvar », lo salvament serà fach sens avertiment mai.",
"revdelete-selected-text": "{{PLURAL:$1|Revision seleccionada|Revisions seleccionadas}} de [[:$2]] :",
"revdelete-selected-file": "{{PLURAL:$1|Version de fichièr seleccionada|Versions de fichièr seleccionadas}} de [[:$2]] :",
"logdelete-selected": "{{PLURAL:$1|Eveniment d'istoric seleccionat|Eveniments d'istoric seleccionats}} :",
+ "revdelete-text-text": "Las revisions suprimidas contunharàn d'aparéisser dins l’istoric de la pagina, mas una partida de lor contengut serà inaccessibla al public.",
+ "revdelete-text-file": "Las versions de fichièr suprimidas contunharàn d'aparéisser dins l’istoric dels fichièrs, mas una partida de lor contengut serà indisponibla al public.",
+ "logdelete-text": "Los eveniments del jornal suprimits contunharàn d'aparéisser dins los jornals, mas una partida de lor contengut serà indisponibla al public.",
+ "revdelete-text-others": "Los autres administrators seràn totjorn en mesura d'accedir al contengut amagat e de lo restablir, levat se de restriccions suplementàrias son fixadas.",
"revdelete-confirm": "Confirmatz que volètz efectuar aquesta accion, que ne comprenètz las consequéncias, e qu'o fasètz en acòrd amb [[{{MediaWiki:Policy-url}}|las règlas]].",
"revdelete-suppress-text": "La supression deu èsser utilizada '''sonque''' dins los cases seguents :\n* Informacions potencialament difamatòrias\n* Informacions personalas inapropriadas\n*: ''adreça, numèro de telefòn, numèro de seguretat sociala, ...''",
"revdelete-legend": "Metre en plaça de restriccions de version :",
"mergehistory-empty": "Cap de revision pòt pas èsser fusionada.",
"mergehistory-success": "$3 {{PLURAL:$3|revision|revisions}} de [[:$1]] {{PLURAL:$3|fusionada|fusionadas}} amb succès amb [[:$2]].",
"mergehistory-fail": "Impossible de procedir a la fusion dels istorics. Seleccionatz tornamai la pagina e mai los paramètres de data.",
+ "mergehistory-fail-toobig": "Impossible d’efectuar la fusion de l’istoric perque un nombre de {{PLURAL:$1|revisions}} superior al limit de $1 deuriá èsser desplaçat.",
"mergehistory-no-source": "La pagina d'origina $1 existís pas.",
"mergehistory-no-destination": "La pagina de destinacion $1 existís pas.",
"mergehistory-invalid-source": "La pagina d’origina deu aver un títol valid.",
"editundo": "desfar",
"diff-empty": "(Pas cap de diferéncia)",
"diff-multi-sameuser": "({{PLURAL:$1|Una revision intermediària pel meteis utilizaire pas afichada|$1 revisions intermediàrias pel meteis utilizaire pas afichadas}})",
+ "diff-multi-otherusers": "({{PLURAL:$1|Una revision intermediària|$1 revisions intermediàrias}} per {{PLURAL:$2|un autre utilizaire|$2 utilizaires}} pas {{PLURAL:$1|afichada|afichadas}})",
"diff-multi-manyusers": "({{PLURAL:$1|Una revision intermediària amagada|$1 revisions intermediàrias amagadas}}) per ({{PLURAL:$2|un utilizaire pas afichada|$2 utilizaires pas afichadas}})",
"difference-missing-revision": "{{PLURAL:$2|Una revision|$2 revisions}} d'aquesta diferéncia ($1) {{PLURAL:$2|es pas estada trobada|son pas estadas trobadas}}.\n\nAquò se produtz en general en seguent un ligam de diferéncia obsolèta cap a una pagina qu'es estada suprimada.\nPodètz trobar de detalhs dins lo [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} jornal de las supressions].",
"searchresults": "Resultats de la recèrca",
"prefs-tokenwatchlist": "Geton",
"prefs-diffs": "Diferéncias",
"prefs-help-prefershttps": "Aquesta preferéncia serà efectiva al moment de vòstra connexion que ven.",
+ "prefs-tabs-navigation-hint": "Astúcia : Podètz utilizar las flèchas d'esquèrra e de drecha per navigar entre los onglets.",
"email-address-validity-valid": "L'adreça electronica sembla bona",
"email-address-validity-invalid": "entrar una adreça electronica valida",
"userrights": "Gestion dels dreches d'utilizaire",
"fileexists-shared-forbidden": "Un fichièr amb lo meteis nom existís ja dins la banca de donadas comuna.\nS'o volètz importar tornamai, tornatz en rèire e importatz-lo jos un autre nom. [[File:$1|thumb|center|$1]]",
"file-exists-duplicate": "Aqueste fichièr es un doble {{PLURAL:$1|del fichièr seguent|dels fichièrs seguents}} :",
"file-deleted-duplicate": "Un fichièr identic a aqueste ([[:$1]]) ja es estat suprimit. Vos caldriá verificar lo jornal de las supressions d'aqueste fichièr abans de la tornar telecargar.",
+ "file-deleted-duplicate-notitle": "Un fichièr identic a aqueste fichièr es ja estat suprimit amai lo títol. \nVos caldriá demandar a qualqu'un la possibilitat de verificar lo jornal d'aqueste fichièr suprimit per tal d'examinar la situacion abans de l'importar tornarmai.",
"uploadwarning": "Atencion !",
"uploadwarning-text": "Modificatz la descripcion del fichièr e ensajatz tornarmai.",
"savefile": "Salvar lo fichièr",
"addedwatchtext-short": "La pagina « $1 » es estada aponduda a vòstra lista de seguiment.",
"removewatch": "Suprimir de la lista de seguiment",
"removedwatchtext": "La pagina « [[:$1]] » es estada levada de vòstra [[Special:Watchlist|lista de seguiment]].",
+ "removedwatchtext-short": "La pagina « $1 » es estada suprimida de vòstra lista de seguiment.",
"watch": "Seguir",
"watchthispage": "Seguir aquesta pagina",
"unwatch": "Arrestar de seguir",
"delete-edit-reasonlist": "Modifica los motius de la supression",
"delete-toobig": "Aquesta pagina dispausa d'un istoric important, depassant {{PLURAL:$1|revision|revisions}}.\nLa supression de talas paginas es estada limitada per evitar de perturbacions accidentalas de {{SITENAME}}.",
"delete-warning-toobig": "Aquesta pagina dispausa d'un istoric important, depassant {{PLURAL:$1|revision|revisions}}.\nLa suprimir pòt perturbar lo foncionament de la banca de donada de {{SITENAME}}.\nD'efectuar amb prudéncia.",
+ "deleteprotected": "Podètz pas suprimir aquesta pagina perque es estada protegida.",
"rollback": "Anullar las modificacions",
"rollback_short": "Anullar",
"rollbacklink": "anullar",
"movenotallowedfile": "Avètz pas la permission de desplaçar los fichièrs.",
"cant-move-user-page": "Avètz pas la permission de tornar nomenar de paginas d'utilizaires raices sus aqueste wiki.",
"cant-move-to-user-page": "Avètz pas la permission de tornar nomenar una pagina cap a una pagina d'utilizaire (a l'excepcion d'una sospagina).",
+ "cant-move-category-page": "Avètz pas la permission de renomenar las paginas de categorias.",
"newtitle": "Títol novèl",
"move-watch": "Seguir aquesta pagina",
"movepagebtn": "Tornar nomenar l'article",
"userlogin-resetlink": "A l'ha dësmentià ij sò detaj për intré ant ël sistema?",
"userlogin-resetpassword-link": "Ciav dësmentià?",
"userlogin-helplink2": "Agiut a la conession",
- "userlogin-loggedin": "A l'é già rintrà an ël sistema tanme {{GENDER:$1|$1}}.\nCh'a deuvra ël formolari sì-sota për rintré coma n'àutr n'utent.",
- "userlogin-createanother": "Creé n'àutr cont",
"createacct-emailrequired": "Adrëssa ëd pòsta eletrònica",
"createacct-emailoptional": "Adrëssa ëd pòsta eletrònica (opsional)",
"createacct-email-ph": "Ch'a buta soa adrëssa ëd pòsta eletrònica",
"showpreview": "Mostré na preuva",
"showdiff": "Smon-me le modìfiche",
"blankarticle": "<strong>Atension:</strong> La pàgina ch'a l'ha creà a l'é veuida. S'a sgnaca torna «{{int:savearticle}}», la pàgina a sarà creà sensa contnù.",
- "anoneditwarning": "'''Atension:''' A l'é nen rintrà ant ël sistema. Soa adrëssa IP a sarà registrà ant la stòria dle modìfiche ëd sa pàgina.",
+ "anoneditwarning": "<strong>Atension:<strong> A l'é nen rintrà ant ël sistema. Soa adrëssa IP a së sc-iairërà s'a fà dle modìfiche. Si chiel a <strong>[$1 rintra ant ël sistema]</strong> o <strong>[$2 a crea an cont]</strong>, soe modìfiche a saran atribuìe a sò stranòm, ansema a d'àutri vantagg.",
"anonpreviewwarning": "''A l'é nen rintrà ant ël sistema. An salvand a sarà memorisà soa adrëssa IP ant la stòria dle modìfiche ëd sa pàgina.''",
"missingsummary": "'''Nòta:''' a l'ha butà gnun resumé dla modìfica. Se a sgnaca «{{int:savearticle}}» n'àutra vira, soa modìfica a resterà salvà sensa resumé.",
"missingcommenttext": "Për piasì, che a buta un coment sì-sota.",
"filedelete-maintenance": "Lë scancelament e la restaurassion d'archivi a l'é al moment disabilità durant la manutension.",
"filedelete-maintenance-title": "As peul pa scancelesse l'archivi",
"mimesearch": "Arserca për sòrt MIME",
- "mimesearch-summary": "Sta pàgina-sì a lassa filtré j'archivi për sòrt MIME. Buté: sòrt/sotasòrt, pr'es. <code>image/jpeg</code>.",
+ "mimesearch-summary": "Sta pàgina-sì a lassa filtré j'archivi për sòrt MIME. Buté: sòrt/sotasòrt o sòrt/*, pr'es. <code>image/jpeg</code>.",
"mimetype": "Sòrt MIME:",
"download": "dëscarié",
"unwatchedpages": "Pàgine che gnun a ten sot-euj",
"randomincategory": "Pàgina a l'ancàpit ant la categorìa",
"randomincategory-invalidcategory": "«$1» a l'é pa un nòm ëd categorìa bon.",
"randomincategory-nopages": "A-i é gnun-e pàgine ant la categorìa [[:Category:$1|$1]].",
+ "randomincategory-category": "Categorìa:",
"randomredirect": "Na ridiression qualsëssìa",
"randomredirect-nopages": "A-i é pa gnun-a ridiression ant lë spassi nominal \"$1\".",
"statistics": "Statìstiche",
"showpreview": "Previzualizare",
"showdiff": "Afișare diferențe",
"blankarticle": "<strong>Atenție:</strong> Pagina pe care o creați este goală.\nDacă faceți din nou clic pe „{{int:savearticle}}”, pagina va fi creată fără niciun conținut.",
- "anoneditwarning": "'''Atenție:''' Nu v-ați autentificat. Adresa IP vă va fi înregistrată în istoricul acestei pagini.",
+ "anoneditwarning": "<strong>Atenție:</strong> Nu v-ați autentificat. Adresa dumneavoastră IP va fi vizibilă în mod public dacă efectuați modificări. Dacă vă <strong>[$1 autentificați]</strong> sau vă <strong>[$2 creați un cont]</strong>, modificările dumneavoastră vor fi asociate numelui de utilizator, pe lângă alte beneficii.",
"anonpreviewwarning": "''Nu v-ați autentificat. Dacă salvați pagina adresa dumneavoastră IP va fi înregistrată în istoric.''",
"missingsummary": "'''Atenție:''' Nu ați completat caseta „descriere modificări”. Dacă apăsați din nou butonul „salvează pagina” modificările vor fi salvate fără descriere.",
"missingcommenttext": "Vă rugăm să introduceți un comentariu.",
"pageinfo-hidden-categories": "{{PLURAL:$1|1=Скрытая категория|Скрытых категорий}} ($1)",
"pageinfo-templates": "{{PLURAL:$1|1=Шаблон|Шаблонов}} ($1)",
"pageinfo-transclusions": "{{PLURAL:$1|1=Включаемая страница|Включаемых страниц}} ($1)",
- "pageinfo-toolboxlink": "Сведения о странице",
+ "pageinfo-toolboxlink": "Сведения о странице",
"pageinfo-redirectsto": "Перенаправление",
"pageinfo-redirectsto-info": "сведения",
"pageinfo-contentpage": "Учитывается счётчиком как содержательная страница",
"userlogin-resetlink": "Har du glömt dina inloggningsuppgifter?",
"userlogin-resetpassword-link": "Glömt ditt lösenord?",
"userlogin-helplink2": "Hjälp med inloggning",
- "userlogin-loggedin": "Du är redan inloggad som {{GENDER:$1|$1}}.\nAnvänd formuläret nedan för att logga in som en annan användare.",
- "userlogin-createanother": "Skapa ett annat konto",
"createacct-emailrequired": "E-postadress",
"createacct-emailoptional": "E-postadress (valfritt)",
"createacct-email-ph": "Bekräfta din e-postadress",
"shown-title": "Показувати $1 {{PLURAL:$1|запис|записи|записів}} на сторінці",
"viewprevnext": "Переглянути ($1 {{int:pipe-separator}} $2) ($3).",
"searchmenu-exists": "'''У цій вікі є сторінка з назвою «[[:$1]]»'''",
- "searchmenu-new": "<strong>Створити сторінку «[[:$1]]» у цьому вікі-проекті!</strong>\n{{PLURAL:$2|0=|Див. також сторінку, знайдену по результатами вашого пошуку.|Див. також знайдені результати пошуку.}}",
+ "searchmenu-new": "<strong>Створити сторінку «[[:$1]]» у цьому вікіпроекті!</strong>\n{{PLURAL:$2|0=|Див. також сторінку, знайдену за результатами вашого пошуку.|Див. також знайдені результати пошуку.}}",
"searchprofile-articles": "Статті",
"searchprofile-images": "Мультимедіа",
"searchprofile-everything": "Усюди",
"showpreview": "顯示預覽",
"showdiff": "顯示變更",
"blankarticle": "<strong>警告:</strong>您正在建立的頁面是空白的。\n如果您再按一下\"{{int:savearticle}}\",將建立沒有任何內容的頁面。",
- "anoneditwarning": "<strong>警告:</strong>您尚未登入。\n您的 IP 位址將記錄在此頁的編輯歷史中。",
+ "anoneditwarning": "<strong>警告:</strong>您尚未登入。 若您進行任何的編輯您的 IP 位置將會被公開。 若您 <strong>[$1 登入]</strong> 或 <strong>[$2 建立帳號]</strong>,您的編輯將會以您的使用者名稱標示,擁有其他優點。",
"anonpreviewwarning": "<em>您尚未登入。儲存頁面會將您的 IP 位址記錄在此頁面的編輯歷史中。</em>",
"missingsummary": "<strong>提醒:</strong>您未填寫編輯摘要。\n若您再點選 \"{{int:savearticle}}\" 一次,將略過摘要直接儲存您的編輯。",
"missingcommenttext": "請在下方輸入評論。",
/*!
- * OOjs v1.0.12 optimised for jQuery
+ * OOjs v1.1.0 optimised for jQuery
* https://www.mediawiki.org/wiki/OOjs
*
* Copyright 2011-2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-08-20T22:33:41Z
+ * Date: 2014-08-31T21:15:46Z
*/
( function ( global ) {
};
/**
- * Utility for common usage of Object#create for inheriting from one
- * prototype to another.
+ * Inherit from prototype to another using Object#create.
*
* Beware: This redefines the prototype, call before setting your prototypes.
+ *
* Beware: This redefines the prototype, can only be called once on a function.
- * If called multiple times on the same function, the previous prototype is lost.
- * This is how prototypal inheritance works, it can only be one straight chain
- * (just like classical inheritance in PHP for example). If you need to work with
- * multiple constructors consider storing an instance of the other constructor in a
- * property instead, or perhaps use a mixin (see OO.mixinClass).
+ * If called multiple times on the same function, the previous prototype is lost.
+ * This is how prototypal inheritance works, it can only be one straight chain
+ * (just like classical inheritance in PHP for example). If you need to work with
+ * multiple constructors consider storing an instance of the other constructor in a
+ * property instead, or perhaps use a mixin (see OO.mixinClass).
*
* function Thing() {}
* Thing.prototype.exists = function () {};
};
/**
- * Utility to copy over *own* prototype properties of a mixin.
+ * Copy over *own* prototype properties of a mixin.
+ *
* The 'constructor' (whether implicit or explicit) is not copied over.
*
* This does not create inheritance to the origin. If inheritance is needed
* use oo.inheritClass instead.
*
* Beware: This can redefine a prototype property, call before setting your prototypes.
+ *
* Beware: Don't call before oo.inheritClass.
*
* function Foo() {}
};
/**
- * Recursively compares properties between two objects.
+ * Recursively compare properties between two objects.
*
* A false result may be caused by property inequality or by properties in one object missing from
* the other. An asymmetrical test may also be performed, which checks only that properties in the
*
* If either a or b is null or undefined it will be treated as an empty object.
*
- * @param {Object|undefined} a First object to compare
- * @param {Object|undefined} b Second object to compare
+ * @param {Object|undefined|null} a First object to compare
+ * @param {Object|undefined|null} b Second object to compare
* @param {boolean} [asymmetrical] Whether to check only that b contains values from a
* @return {boolean} If the objects contain the same values as each other
*/
};
/**
- * Helper function for OO.getHash which sorts objects by key.
+ * Sort objects by key (helper function for OO.getHash).
*
* This is a callback passed into JSON.stringify.
*
/*global hasOwn */
-/**
- * @class OO.EventEmitter
- *
- * @constructor
- */
-oo.EventEmitter = function OoEventEmitter() {
- // Properties
+( function () {
/**
- * Storage of bound event handlers by event name.
+ * @class OO.EventEmitter
*
- * @property
+ * @constructor
*/
- this.bindings = {};
-};
+ oo.EventEmitter = function OoEventEmitter() {
+ // Properties
-oo.initClass( oo.EventEmitter );
-
-/* Methods */
+ /**
+ * Storage of bound event handlers by event name.
+ *
+ * @property
+ */
+ this.bindings = {};
+ };
-/**
- * Add a listener to events of a specific event.
- *
- * The listener can be a function or the string name of a method; if the latter, then the
- * name lookup happens at the time the listener is called.
- *
- * @param {string} event Type of event to listen to
- * @param {Function|string} method Function or method name to call when event occurs
- * @param {Array} [args] Arguments to pass to listener, will be prepended to emitted arguments
- * @param {Object} [context=null] Context object for function or method call
- * @throws {Error} Listener argument is not a function or a valid method name
- * @chainable
- */
-oo.EventEmitter.prototype.on = function ( event, method, args, context ) {
- var bindings;
+ oo.initClass( oo.EventEmitter );
- this.constructor.static.validateMethod( method, context );
+ /* Private helper functions */
- if ( hasOwn.call( this.bindings, event ) ) {
- bindings = this.bindings[event];
- } else {
- // Auto-initialize bindings list
- bindings = this.bindings[event] = [];
+ /**
+ * Validate a function or method call in a context
+ *
+ * For a method name, check that it names a function in the context object
+ *
+ * @private
+ * @param {Function|string} method Function or method name
+ * @param {Mixed} context The context of the call
+ * @throws {Error} A method name is given but there is no context
+ * @throws {Error} In the context object, no property exists with the given name
+ * @throws {Error} In the context object, the named property is not a function
+ */
+ function validateMethod( method, context ) {
+ // Validate method and context
+ if ( typeof method === 'string' ) {
+ // Validate method
+ if ( context === undefined || context === null ) {
+ throw new Error( 'Method name "' + method + '" has no context.' );
+ }
+ if ( !( method in context ) ) {
+ // Technically the method does not need to exist yet: it could be
+ // added before call time. But this probably signals a typo.
+ throw new Error( 'Method not found: "' + method + '"' );
+ }
+ if ( typeof context[method] !== 'function' ) {
+ // Technically the property could be replaced by a function before
+ // call time. But this probably signals a typo.
+ throw new Error( 'Property "' + method + '" is not a function' );
+ }
+ } else if ( typeof method !== 'function' ) {
+ throw new Error( 'Invalid callback. Function or method name expected.' );
+ }
}
- // Add binding
- bindings.push( {
- method: method,
- args: args,
- context: ( arguments.length < 4 ) ? null : context
- } );
- return this;
-};
-/**
- * Adds a one-time listener to a specific event.
- *
- * @param {string} event Type of event to listen to
- * @param {Function} listener Listener to call when event occurs
- * @chainable
- */
-oo.EventEmitter.prototype.once = function ( event, listener ) {
- var eventEmitter = this,
- listenerWrapper = function () {
- eventEmitter.off( event, listenerWrapper );
- listener.apply( eventEmitter, Array.prototype.slice.call( arguments, 0 ) );
- };
- return this.on( event, listenerWrapper );
-};
+ /* Methods */
-/**
- * Remove a specific listener from a specific event.
- *
- * @param {string} event Type of event to remove listener from
- * @param {Function|string} [method] Listener to remove. Must be in the same form as was passed
- * to "on". Omit to remove all listeners.
- * @param {Object} [context=null] Context object function or method call
- * @chainable
- * @throws {Error} Listener argument is not a function or a valid method name
- */
-oo.EventEmitter.prototype.off = function ( event, method, context ) {
- var i, bindings;
+ /**
+ * Add a listener to events of a specific event.
+ *
+ * The listener can be a function or the string name of a method; if the latter, then the
+ * name lookup happens at the time the listener is called.
+ *
+ * @param {string} event Type of event to listen to
+ * @param {Function|string} method Function or method name to call when event occurs
+ * @param {Array} [args] Arguments to pass to listener, will be prepended to emitted arguments
+ * @param {Object} [context=null] Context object for function or method call
+ * @throws {Error} Listener argument is not a function or a valid method name
+ * @chainable
+ */
+ oo.EventEmitter.prototype.on = function ( event, method, args, context ) {
+ var bindings;
- if ( arguments.length === 1 ) {
- // Remove all bindings for event
- delete this.bindings[event];
+ validateMethod( method, context );
+
+ if ( hasOwn.call( this.bindings, event ) ) {
+ bindings = this.bindings[event];
+ } else {
+ // Auto-initialize bindings list
+ bindings = this.bindings[event] = [];
+ }
+ // Add binding
+ bindings.push( {
+ method: method,
+ args: args,
+ context: ( arguments.length < 4 ) ? null : context
+ } );
return this;
- }
+ };
- this.constructor.static.validateMethod( method, context );
+ /**
+ * Add a one-time listener to a specific event.
+ *
+ * @param {string} event Type of event to listen to
+ * @param {Function} listener Listener to call when event occurs
+ * @chainable
+ */
+ oo.EventEmitter.prototype.once = function ( event, listener ) {
+ var eventEmitter = this,
+ listenerWrapper = function () {
+ eventEmitter.off( event, listenerWrapper );
+ listener.apply( eventEmitter, Array.prototype.slice.call( arguments, 0 ) );
+ };
+ return this.on( event, listenerWrapper );
+ };
- if ( !( event in this.bindings ) || !this.bindings[event].length ) {
- // No matching bindings
- return this;
- }
+ /**
+ * Remove a specific listener from a specific event.
+ *
+ * @param {string} event Type of event to remove listener from
+ * @param {Function|string} [method] Listener to remove. Must be in the same form as was passed
+ * to "on". Omit to remove all listeners.
+ * @param {Object} [context=null] Context object function or method call
+ * @chainable
+ * @throws {Error} Listener argument is not a function or a valid method name
+ */
+ oo.EventEmitter.prototype.off = function ( event, method, context ) {
+ var i, bindings;
- // Default to null context
- if ( arguments.length < 3 ) {
- context = null;
- }
+ if ( arguments.length === 1 ) {
+ // Remove all bindings for event
+ delete this.bindings[event];
+ return this;
+ }
- // Remove matching handlers
- bindings = this.bindings[event];
- i = bindings.length;
- while ( i-- ) {
- if ( bindings[i].method === method && bindings[i].context === context ) {
- bindings.splice( i, 1 );
+ validateMethod( method, context );
+
+ if ( !( event in this.bindings ) || !this.bindings[event].length ) {
+ // No matching bindings
+ return this;
}
- }
- // Cleanup if now empty
- if ( bindings.length === 0 ) {
- delete this.bindings[event];
- }
- return this;
-};
+ // Default to null context
+ if ( arguments.length < 3 ) {
+ context = null;
+ }
-/**
- * Emit an event.
- *
- * TODO: Should this be chainable? What is the usefulness of the boolean
- * return value here?
- *
- * @param {string} event Type of event
- * @param {Mixed} args First in a list of variadic arguments passed to event handler (optional)
- * @return {boolean} If event was handled by at least one listener
- */
-oo.EventEmitter.prototype.emit = function ( event ) {
- var i, len, binding, bindings, args, method;
-
- if ( event in this.bindings ) {
- // Slicing ensures that we don't get tripped up by event handlers that add/remove bindings
- bindings = this.bindings[event].slice();
- args = Array.prototype.slice.call( arguments, 1 );
- for ( i = 0, len = bindings.length; i < len; i++ ) {
- binding = bindings[i];
- if ( typeof binding.method === 'string' ) {
- // Lookup method by name (late binding)
- method = binding.context[ binding.method ];
- } else {
- method = binding.method;
+ // Remove matching handlers
+ bindings = this.bindings[event];
+ i = bindings.length;
+ while ( i-- ) {
+ if ( bindings[i].method === method && bindings[i].context === context ) {
+ bindings.splice( i, 1 );
}
- method.apply(
- binding.context,
- binding.args ? binding.args.concat( args ) : args
- );
}
- return true;
- }
- return false;
-};
-/**
- * Connect event handlers to an object.
- *
- * @param {Object} context Object to call methods on when events occur
- * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} methods List of
- * event bindings keyed by event name containing either method names, functions or arrays containing
- * method name or function followed by a list of arguments to be passed to callback before emitted
- * arguments
- * @chainable
- */
-oo.EventEmitter.prototype.connect = function ( context, methods ) {
- var method, args, event;
-
- for ( event in methods ) {
- method = methods[event];
- // Allow providing additional args
- if ( Array.isArray( method ) ) {
- args = method.slice( 1 );
- method = method[0];
- } else {
- args = [];
+ // Cleanup if now empty
+ if ( bindings.length === 0 ) {
+ delete this.bindings[event];
}
- // Add binding
- this.on( event, method, args, context );
- }
- return this;
-};
+ return this;
+ };
-/**
- * Disconnect event handlers from an object.
- *
- * @param {Object} context Object to disconnect methods from
- * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} [methods] List of
- * event bindings keyed by event name. Values can be either method names or functions, but must be
- * consistent with those used in the corresponding call to "connect".
- * @chainable
- */
-oo.EventEmitter.prototype.disconnect = function ( context, methods ) {
- var i, event, bindings;
+ /**
+ * Emit an event.
+ *
+ * TODO: Should this be chainable? What is the usefulness of the boolean
+ * return value here?
+ *
+ * @param {string} event Type of event
+ * @param {Mixed} args First in a list of variadic arguments passed to event handler (optional)
+ * @return {boolean} If event was handled by at least one listener
+ */
+ oo.EventEmitter.prototype.emit = function ( event ) {
+ var i, len, binding, bindings, args, method;
+
+ if ( event in this.bindings ) {
+ // Slicing ensures that we don't get tripped up by event handlers that add/remove bindings
+ bindings = this.bindings[event].slice();
+ args = Array.prototype.slice.call( arguments, 1 );
+ for ( i = 0, len = bindings.length; i < len; i++ ) {
+ binding = bindings[i];
+ if ( typeof binding.method === 'string' ) {
+ // Lookup method by name (late binding)
+ method = binding.context[ binding.method ];
+ } else {
+ method = binding.method;
+ }
+ method.apply(
+ binding.context,
+ binding.args ? binding.args.concat( args ) : args
+ );
+ }
+ return true;
+ }
+ return false;
+ };
+
+ /**
+ * Connect event handlers to an object.
+ *
+ * @param {Object} context Object to call methods on when events occur
+ * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} methods List of
+ * event bindings keyed by event name containing either method names, functions or arrays containing
+ * method name or function followed by a list of arguments to be passed to callback before emitted
+ * arguments
+ * @chainable
+ */
+ oo.EventEmitter.prototype.connect = function ( context, methods ) {
+ var method, args, event;
- if ( methods ) {
- // Remove specific connections to the context
for ( event in methods ) {
- this.off( event, methods[event], context );
+ method = methods[event];
+ // Allow providing additional args
+ if ( Array.isArray( method ) ) {
+ args = method.slice( 1 );
+ method = method[0];
+ } else {
+ args = [];
+ }
+ // Add binding
+ this.on( event, method, args, context );
}
- } else {
- // Remove all connections to the context
- for ( event in this.bindings ) {
- bindings = this.bindings[event];
- i = bindings.length;
- while ( i-- ) {
- // bindings[i] may have been removed by the previous step's
- // this.off so check it still exists
- if ( bindings[i] && bindings[i].context === context ) {
- this.off( event, bindings[i].method, context );
+ return this;
+ };
+
+ /**
+ * Disconnect event handlers from an object.
+ *
+ * @param {Object} context Object to disconnect methods from
+ * @param {Object.<string,string>|Object.<string,Function>|Object.<string,Array>} [methods] List of
+ * event bindings keyed by event name. Values can be either method names or functions, but must be
+ * consistent with those used in the corresponding call to "connect".
+ * @chainable
+ */
+ oo.EventEmitter.prototype.disconnect = function ( context, methods ) {
+ var i, event, bindings;
+
+ if ( methods ) {
+ // Remove specific connections to the context
+ for ( event in methods ) {
+ this.off( event, methods[event], context );
+ }
+ } else {
+ // Remove all connections to the context
+ for ( event in this.bindings ) {
+ bindings = this.bindings[event];
+ i = bindings.length;
+ while ( i-- ) {
+ // bindings[i] may have been removed by the previous step's
+ // this.off so check it still exists
+ if ( bindings[i] && bindings[i].context === context ) {
+ this.off( event, bindings[i].method, context );
+ }
}
}
}
- }
- return this;
-};
+ return this;
+ };
-/**
- * Validate a function or method call in a context
- *
- * For a method name, check that it names a function in the context object
- *
- * @static
- * @param {Function|string} method Function or method name
- * @param {Mixed} context The context of the call
- * @throws {Error} A method name is given but there is no context
- * @throws {Error} In the context object, no property exists with the given name
- * @throws {Error} In the context object, the named property is not a function
- */
-oo.EventEmitter.static.validateMethod = function ( method, context ) {
- // Validate method and context
- if ( typeof method === 'string' ) {
- // Validate method
- if ( context === undefined || context === null ) {
- throw new Error( 'Method name "' + method + '" has no context.' );
- }
- if ( !( method in context ) ) {
- // Technically the method does not need to exist yet: it could be
- // added before call time. But this probably signals a typo.
- throw new Error( 'Method not found: "' + method + '"' );
- }
- if ( typeof context[method] !== 'function' ) {
- // Technically the property could be replaced by a function before
- // call time. But this probably signals a typo.
- throw new Error( 'Property "' + method + '" is not a function' );
- }
- } else if ( typeof method !== 'function' ) {
- throw new Error( 'Invalid callback. Function or method name expected.' );
- }
-};
+}() );
/*global hasOwn */
}
&:focus {
- box-shadow: inset .45em 0 0 #5088f7;
+ box-shadow: inset .45em 0 0 @colorProgressive;
border-color: @colorGrayDark;
// Remove focus glow on input[type="search"]
outline: 0;