'Project:Oversight' to 'Project:Suppress'.
* (T84937) Free external links ("autolinked" urls) will now be terminated
by and HTML entity encodings of  , <, and >.
+* DatabaseBase::resultObject() is now protected (use outside Database classes
+ not necessary since 1.11).
== Compatibility ==
"jakub-onderka/php-parallel-lint": "0.9",
"justinrainbow/json-schema": "~1.3",
"phpunit/phpunit": "3.7.37",
- "mediawiki/mediawiki-codesniffer": "0.3.0",
+ "mediawiki/mediawiki-codesniffer": "0.4.0",
"wikimedia/avro": "1.7.7",
"nmred/kafka-php": "0.1.4",
"monolog/monolog": "1.14.0"
$imagesAvailable = $wgEnableUploads || count( $wgForeignFileRepos );
$showSignature = true;
if ( $title ) {
- $showSignature = MWNamespace::wantSignatures( $title->getNamespace() );
+ $showSignature = MWNamespace::wantSignatures( $title->getNamespace() );
}
/**
} elseif ( is_int( $nsId ) ) {
$nsName = $wgContLang->convertNamespace( $nsId );
}
- $optionsOut[ $nsId ] = $nsName;
+ $optionsOut[$nsId] = $nsName;
}
return $optionsOut;
) );
}
- foreach( $certLocations as $key => $cert ) {
+ foreach ( $certLocations as $key => $cert ) {
if ( is_dir( $cert ) ) {
$certOptions['capath'] = $cert;
break;
* temporarily to a value pass. Should be adjusted further. --brion
*
* @param string $comment
- * @param Title|null $title Title object (to generate link to the section in autocomment) or null
+ * @param Title|null $title Title object (to generate link to the section in autocomment)
+ * or null
* @param bool $local Whether section links should refer to local page
- * @param string|null $wikiId Id (as used by WikiMap) of the wiki to generate links to. For use with external changes.
+ * @param string|null $wikiId Id (as used by WikiMap) of the wiki to generate links to.
+ * For use with external changes.
*
* @return mixed|string
*/
- public static function formatComment( $comment, $title = null, $local = false, $wikiId = null ) {
-
+ public static function formatComment(
+ $comment, $title = null, $local = false, $wikiId = null
+ ) {
# Sanitize text a bit:
$comment = str_replace( "\n", " ", $comment );
# Allow HTML entities (for bug 13815)
* @param string $comment Comment text
* @param Title|null $title An optional title object used to links to sections
* @param bool $local Whether section links should refer to local page
- * @param string|null $wikiId Id of the wiki to link to (if not the local wiki), as used by WikiMap.
+ * @param string|null $wikiId Id of the wiki to link to (if not the local wiki),
+ * as used by WikiMap.
*
* @return string Formatted comment (wikitext)
*/
- private static function formatAutocomments( $comment, $title = null, $local = false, $wikiId = null ) {
+ private static function formatAutocomments(
+ $comment, $title = null, $local = false, $wikiId = null
+ ) {
// @todo $append here is something of a hack to preserve the status
// quo. Someone who knows more about bidi and such should decide
// (1) what sane rendering even *is* for an LTR edit summary on an RTL
$auto = $match[2];
$post = $match[3] !== '';
$comment = null;
- Hooks::run( 'FormatAutocomments', array( &$comment, $pre, $auto, $post, $title, $local, $wikiId ) );
+
+ Hooks::run(
+ 'FormatAutocomments',
+ array( &$comment, $pre, $auto, $post, $title, $local, $wikiId )
+ );
+
if ( $comment === null ) {
$link = '';
if ( $title ) {
* @param string $comment Text to format links in
* @param Title|null $title An optional title object used to links to sections
* @param bool $local Whether section links should refer to local page
- * @param string|null $wikiId Id of the wiki to link to (if not the local wiki), as used by WikiMap.
+ * @param string|null $wikiId Id of the wiki to link to (if not the local wiki),
+ * as used by WikiMap.
*
* @return string
*/
*
* @param Title $title
* @param string $text
- * @param string|null $wikiId Id of the wiki to link to (if not the local wiki), as used by WikiMap.
+ * @param string|null $wikiId Id of the wiki to link to (if not the local wiki),
+ * as used by WikiMap.
* @param string|string[] $options See the $options parameter in Linker::link.
*
* @return string HTML link
*/
- public static function makeCommentLink( Title $title, $text, $wikiId = null, $options = array() ) {
+ public static function makeCommentLink(
+ Title $title, $text, $wikiId = null, $options = array()
+ ) {
if ( $wikiId !== null && !$title->isExternal() ) {
$link = Linker::makeExternalLink(
- WikiMap::getForeignURL( $wikiId, $title->getPrefixedText(), $title->getFragment() ),
- $text,
- /* escape = */ false // Already escaped
- );
+ WikiMap::getForeignURL(
+ $wikiId,
+ $title->getPrefixedText(),
+ $title->getFragment()
+ ),
+ $text,
+ /* escape = */ false // Already escaped
+ );
} else {
$link = Linker::link( $title, $text, array(), array(), $options );
}
* @param string $comment
* @param Title|null $title Title object (to generate link to section in autocomment) or null
* @param bool $local Whether section links should refer to local page
- * @param string|null $wikiId Id (as used by WikiMap) of the wiki to generate links to. For use with external changes.
+ * @param string|null $wikiId Id (as used by WikiMap) of the wiki to generate links to.
+ * For use with external changes.
*
* @return string
*/
- public static function commentBlock( $comment, $title = null, $local = false, $wikiId = null ) {
+ public static function commentBlock(
+ $comment, $title = null, $local = false, $wikiId = null
+ ) {
// '*' used to be the comment inserted by the software way back
// in antiquity in case none was provided, here for backwards
// compatibility, acc. to brion -ævar
$themes = ExtensionRegistry::getInstance()->getAttribute( 'SkinOOUIThemes' );
// Make keys (skin names) lowercase for case-insensitive matching.
$themes = array_change_key_case( $themes, CASE_LOWER );
- $theme = isset( $themes[ $skinName ] ) ? $themes[ $skinName ] : 'MediaWiki';
+ $theme = isset( $themes[$skinName] ) ? $themes[$skinName] : 'MediaWiki';
// For example, 'OOUI\MediaWikiTheme'.
$themeClass = "OOUI\\{$theme}Theme";
OOUI\Theme::setSingleton( new $themeClass() );
$host = preg_replace( $strip, '', $host );
// IPv6 host names are bracketed with []. Url-decode these.
- if ( substr_compare( "//%5B", $host, 0, 5 ) === 0 && preg_match( '!^//%5B([0-9A-Fa-f:.]+)%5D((:\d+)?)$!', $host, $matches ) ) {
+ if ( substr_compare( "//%5B", $host, 0, 5 ) === 0 &&
+ preg_match( '!^//%5B([0-9A-Fa-f:.]+)%5D((:\d+)?)$!', $host, $matches )
+ ) {
$host = '//[' . $matches[1] . ']' . $matches[2];
}
*/
public function clearSharedCache() {
$id = $this->getId();
- if ( $id ) {
- $key = wfMemcKey( 'user', 'id', $id );
- ObjectCache::getMainWANInstance()->delete( $key );
+ if ( !$id ) {
+ return;
}
+
+ $key = wfMemcKey( 'user', 'id', $id );
+ wfGetDB( DB_MASTER )->onTransactionPreCommitOrIdle( function() use ( $key ) {
+ ObjectCache::getMainWANInstance()->delete( $key );
+ } );
}
/**
array( 'user_id' => $this->id ),
__METHOD__ );
- $cache = ObjectCache::getMainWANInstance();
$key = wfForeignMemcKey( $this->database, false, 'user', 'id', $this->id );
- $cache->delete( $key );
+ $this->db->onTransactionPreCommitOrIdle( function() use ( $key ) {
+ ObjectCache::getMainWANInstance()->delete( $key );
+ } );
}
}
}
} else {
global $wgContLang;
- $data = isset( $wgContLang ) ? $wgContLang->normalize( $data ) : UtfNormal\Validator::cleanUp( $data );
+ $data = isset( $wgContLang ) ?
+ $wgContLang->normalize( $data ) :
+ UtfNormal\Validator::cleanUp( $data );
}
return $data;
}
* Appends or replaces value of query variables.
*
* @param array $array Array of values to replace/add to query
- * @param bool $onlyquery Whether to only return the query string and not the complete URL [deprecated]
+ * @param bool $onlyquery Whether to only return the query string
+ * and not the complete URL [deprecated]
* @return string
*/
public function appendQueryArray( $array, $onlyquery = true ) {
# Die if register_globals is enabled (PHP <=5.3)
# This must be done before any globals are set by the code
if ( ini_get( 'register_globals' ) ) {
- die( 'MediaWiki does not support installations where register_globals is enabled. '
- . 'Please see <a href="https://www.mediawiki.org/wiki/register_globals">mediawiki.org</a> '
+ die( 'MediaWiki does not support installations where register_globals is enabled. Please see '
+ . '<a href="https://www.mediawiki.org/wiki/register_globals">mediawiki.org</a> '
. 'for help on how to disable it.' );
}
if ( function_exists( 'get_magic_quotes_gpc' ) && get_magic_quotes_gpc() ) {
- die( 'MediaWiki does not function when magic quotes are enabled. '
- . 'Please see the <a href="https://php.net/manual/security.magicquotes.disabling.php">PHP Manual</a> '
+ die( 'MediaWiki does not function when magic quotes are enabled. Please see the '
+ . '<a href="https://php.net/manual/security.magicquotes.disabling.php">PHP Manual</a> '
. 'for help on how to disable magic quotes.' );
}
// Fix up the ugly "even numbered elements are description, odd
// numbered elemts are the link" format (see doc for self::getExamples)
$tmp = array();
- for ( $i = 0; $i < count( $examples ); $i += 2 ) {
+ $examplesCount = count( $examples );
+ for ( $i = 0; $i < $examplesCount; $i += 2 ) {
$tmp[$examples[$i + 1]] = $examples[$i];
}
$examples = $tmp;
}
$miser_ns = null;
if ( $params['namespace'] !== null ) {
- if ( empty( $settings['from_namespace'] ) && $this->getConfig()->get( 'MiserMode' ) ) {
- $miser_ns = $params['namespace'];
+ if ( empty( $settings['from_namespace'] ) ) {
+ if ( $this->getConfig()->get( 'MiserMode' ) ) {
+ $miser_ns = $params['namespace'];
+ } else {
+ $this->addWhereFld( 'page_namespace', $params['namespace'] );
+ }
} else {
$this->addWhereFld( "{$p}_from_namespace", $params['namespace'] );
if ( !empty( $settings['from_namespace'] ) && count( $params['namespace'] ) > 1 ) {
"apihelp-parse-param-pst": "לעשות התמרה לפני שמירה על הקלט לפני פענוחו. תקין רק בשימוש עם טקסט.",
"apihelp-parse-param-onlypst": "לעשות התמרה לפני שמירה (pre-save transform, PST) על הקלט, אבל לא לפענח אותו. מחזיר את אותו קוד הוויקי אחרי החלת PST. תקף רק בשימוש עם <var>$1text</var>.",
"apihelp-parse-param-effectivelanglinks": "כולל קישור שפה שמספקות הרחבות (לשימוש עם <kbd>$1prop=langlinks</kbd>).",
- "apihelp-parse-param-section": "×\9c×\90×\97×\96ר ×\90ת ×\94ת×\95×\9b×\9f ש×\9c ×\94פסק×\94 ×¢×\9d ×\94×\9eספר ×\94×\96×\94, ×\90×\95, ×\90×\9d ×\96×\94 <kbd>new</kbd>, ×\9c×\99צ×\95ר פסק×\94 ×\97×\93ש×\94.\n\n<kbd>new</kbd> ×\99×\9b×\95×\91×\93 רק ×\91עת צ×\99×\95×\9f <var>text</var>.",
+ "apihelp-parse-param-section": "×\9c×¤×¢× ×\97 רק ×\90ת ×\94ת×\95×\9b×\9f ש×\9c ×\94פסק×\94 ש×\96×\94 ×\9eספר×\94.\n\n×\9bשצ×\95×\99×\9f <kbd>new</kbd>, ×\9c×¤×¢× ×\97 ×\90ת <var>$1text</var> ×\95×\90ת <var>$1sectiontitle</var> ×\9b×\90×\99×\9c×\95 × ×\95ספת פסק×\94 ×\97×\93ש×\94 ×\9c×\93×£.\n\n×\9e×\95תר ×\9c×\94שת×\9eש ×\91Ö¾<kbd>new</kbd> רק ×\91עת ש×\99×\9e×\95ש ×\91Ö¾<var>text</var>.",
"apihelp-parse-param-sectiontitle": "כותרת פסקה חדשה כאשר <var>section</var> הוא <kbd>new</kbd>.\n\nבניגוד לעריכת דף, זה לא מתגבה ל־<var>summary</var> כשזה מושמט אם ריק.",
"apihelp-parse-param-disablelimitreport": "להשמיט את דו\"ח הקדם־מעבד (\"NewPP limit report\") מפלט המפענח.",
"apihelp-parse-param-disablepp": "יש להשתמש ב־<var>$1disablelimitreport</var> במקום.",
"apihelp-parse-paramvalue-prop-iwlinks": "Jitt de Engewikkilengks em jepahßde Wikkitäx uß.",
"apihelp-parse-paramvalue-prop-wikitext": "Jitt de der ojinahl Wikkitäx us, dä jepahß woode es.",
"apihelp-parse-paramvalue-prop-properties": "Jitt devärse Eijeschafte uß, di em jepahßde Wikkitäx faßjelaat woode sen.",
- "apihelp-parse-param-section": "Holl blohß dann der Ennhalld vun däm Affschnett met dä Nommer, udder wann „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd>“ enjejovve es, maach ene neu Affschnett derbei.",
+ "apihelp-parse-param-section": "Donn blohß der Ennhalld vun däm Affschnett met dä Nommer paase.\n\nWann „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd>“ enjejovve es, donn dä Täx <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1text</var> un de Övverschreff <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">$1sectiontitle</var> paase, wi wänn_enne neuje Affschnett en dä Sigg derbei köhm.\n\nDä Parramehter „<kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd>“ es blohß zohjelohße, wann och <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">text</var> aanjejovve es.",
"apihelp-parse-param-sectiontitle": "De Övverschreff för dä neuje Afschnet, wann <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">section</var> = <kbd lang=\"en\" xml:lang=\"en\" dir=\"ltr\">new</kbd> es.\n\nAnders wi beim Beärbeide vun dä Sigg weed dä Parramehter nit dorsch de <var lang=\"en\" xml:lang=\"en\" dir=\"ltr\">summary</var> ußjetuusch, wann hä fottjelohße udder läddesch es.",
"apihelp-parse-param-disablelimitreport": "Jiff keine Bereesch vum Vüürbereijde zom Paase (der „<i lang=\"en\" xml:lang=\"en\" dir=\"ltr\">NewPP limit report</i>“) mem Paaser singe Dahte zosamme uß.",
"apihelp-parse-param-disableeditsection": "Donn de Lenks för Affschnedde ze änndere en de Ußjahbe vum Paaser eruß lohße.",
"apihelp-opensearch-param-limit": "Número máximo de resultados a apresentar.",
"apihelp-options-param-reset": "Reiniciar preferências para os padrões do sítio.",
"apihelp-options-example-reset": "Reiniciar todas as preferências",
+ "apihelp-parse-param-section": "Apenas analisar o conteúdo desta secção.\n\nQuando <kbd>nova</kbd>, analise <var>$1text</var> e <var>$1sectiontitle</var> como se fosse adicionar uma nova secção da página.\n\n<kbd>novo</kbd> só é permitido quando especifica <var>text</var>.",
"apihelp-patrol-description": "Patrulhar uma página ou edição.",
"apihelp-patrol-example-rcid": "Patrulhar uma mudança recente",
"apihelp-patrol-example-revid": "Patrulhar uma edição",
"apihelp-query+allmessages-description": "返回来自该网站的消息。",
"apihelp-query+allmessages-param-messages": "要输出的消息。<kbd>*</kbd>(默认)表示所有消息。",
"apihelp-query+allmessages-param-prop": "要获取的属性。",
+ "apihelp-query+allmessages-param-nocontent": "如果设置,不要在输出中包含消息内容。",
"apihelp-query+allmessages-param-args": "要替代进消息的参数。",
"apihelp-query+allmessages-param-filter": "只返回名称包含此字符串的消息。",
"apihelp-query+allmessages-param-customised": "只返回在此定制情形下的消息。",
* @param Redis $conn
* @param LoggerInterface $logger
*/
- public function __construct( RedisConnectionPool $pool, $server, Redis $conn, LoggerInterface $logger ) {
+ public function __construct(
+ RedisConnectionPool $pool, $server, Redis $conn, LoggerInterface $logger
+ ) {
$this->pool = $pool;
$this->server = $server;
$this->conn = $conn;
if ( $this->title === null ) {
global $wgTitle; # fallback to $wg till we can improve this
$this->title = $wgTitle;
- wfDebugLog( 'GlobalTitleFail', __METHOD__ . ' called by ' . wfGetAllCallers( 5 ) . ' with no title set.' );
+ wfDebugLog(
+ 'GlobalTitleFail',
+ __METHOD__ . ' called by ' . wfGetAllCallers( 5 ) . ' with no title set.'
+ );
}
return $this->title;
return $this->__call( __FUNCTION__, func_get_args() );
}
- public function resultObject( $result ) {
- return $this->__call( __FUNCTION__, func_get_args() );
- }
-
public function ping() {
return $this->__call( __FUNCTION__, func_get_args() );
}
* Once upon a time, DatabaseBase::query() returned a bare MySQL result
* resource, and it was necessary to call this function to convert it to
* a wrapper. Nowadays, raw database objects are never exposed to external
- * callers, so this is unnecessary in external code. For compatibility with
- * old code, ResultWrapper objects are passed through unaltered.
+ * callers, so this is unnecessary in external code.
*
- * @param bool|ResultWrapper|resource $result
+ * @param bool|ResultWrapper|resource|object $result
* @return bool|ResultWrapper
*/
- public function resultObject( $result ) {
- if ( empty( $result ) ) {
+ protected function resultObject( $result ) {
+ if ( !$result ) {
return false;
} elseif ( $result instanceof ResultWrapper ) {
return $result;
* @param bool|MssqlResultWrapper|resource $result
* @return bool|MssqlResultWrapper
*/
- public function resultObject( $result ) {
- if ( empty( $result ) ) {
+ protected function resultObject( $result ) {
+ if ( !$result ) {
return false;
} elseif ( $result instanceof MssqlResultWrapper ) {
return $result;
$indexInfo = $this->query( 'PRAGMA INDEX_INFO(' . $this->addQuotes( $index->name ) . ')' );
$fields = array();
foreach ( $indexInfo as $indexInfoRow ) {
- $fields[ $indexInfoRow->seqno ] = $indexInfoRow->name;
+ $fields[$indexInfoRow->seqno] = $indexInfoRow->name;
}
$sql .= '(' . implode( ',', $fields ) . ')';
* Basic database interface for live and lazy-loaded DB handles
*
* @todo: loosen up DB classes from MWException
- * @note: DatabaseBase and DBConnRef should be updated to reflect any changes
+ * @note: IDatabase and DBConnRef should be updated to reflect any changes
* @ingroup Database
*/
interface IDatabase {
public function implicitOrderby();
/**
- * Return the last query that went through DatabaseBase::query()
+ * Return the last query that went through IDatabase::query()
* @return string
*/
public function lastQuery();
* member variables.
* If no more rows are available, false is returned.
*
- * @param ResultWrapper|stdClass $res Object as returned from DatabaseBase::query(), etc.
+ * @param ResultWrapper|stdClass $res Object as returned from IDatabase::query(), etc.
* @return stdClass|bool
* @throws DBUnexpectedError Thrown if the database returns an error
*/
* form. Fields are retrieved with $row['fieldname'].
* If no more rows are available, false is returned.
*
- * @param ResultWrapper $res Result object as returned from DatabaseBase::query(), etc.
+ * @param ResultWrapper $res Result object as returned from IDatabase::query(), etc.
* @return array|bool
* @throws DBUnexpectedError Thrown if the database returns an error
*/
*
* If no result rows are returned from the query, false is returned.
*
- * @param string|array $table Table name. See DatabaseBase::select() for details.
+ * @param string|array $table Table name. See IDatabase::select() for details.
* @param string $var The field name to select. This must be a valid SQL
* fragment: do not use unvalidated user input.
- * @param string|array $cond The condition array. See DatabaseBase::select() for details.
+ * @param string|array $cond The condition array. See IDatabase::select() for details.
* @param string $fname The function name of the caller.
- * @param string|array $options The query options. See DatabaseBase::select() for details.
+ * @param string|array $options The query options. See IDatabase::select() for details.
*
* @return bool|mixed The value from the field, or false on failure.
*/
*
* If no result rows are returned from the query, false is returned.
*
- * @param string|array $table Table name. See DatabaseBase::select() for details.
+ * @param string|array $table Table name. See IDatabase::select() for details.
* @param string $var The field name to select. This must be a valid SQL
* fragment: do not use unvalidated user input.
- * @param string|array $cond The condition array. See DatabaseBase::select() for details.
+ * @param string|array $cond The condition array. See IDatabase::select() for details.
* @param string $fname The function name of the caller.
- * @param string|array $options The query options. See DatabaseBase::select() for details.
+ * @param string|array $options The query options. See IDatabase::select() for details.
*
* @return bool|array The values from the field, or false on failure
* @since 1.25
* for use in field names (e.g. a.user_name).
*
* All of the table names given here are automatically run through
- * DatabaseBase::tableName(), which causes the table prefix (if any) to be
+ * IDatabase::tableName(), which causes the table prefix (if any) to be
* added, and various other table name mappings to be performed.
*
*
* Note that expressions are often DBMS-dependent in their syntax.
* DBMS-independent wrappers are provided for constructing several types of
* expression commonly used in condition queries. See:
- * - DatabaseBase::buildLike()
- * - DatabaseBase::conditional()
+ * - IDatabase::buildLike()
+ * - IDatabase::conditional()
*
*
* @param string|array $options
);
/**
- * The equivalent of DatabaseBase::select() except that the constructed SQL
+ * The equivalent of IDatabase::select() except that the constructed SQL
* is returned, instead of being immediately executed. This can be useful for
* doing UNION queries, where the SQL text of each query is needed. In general,
* however, callers outside of Database classes should just use select().
* @param string|array $join_conds Join conditions
*
* @return string SQL query string.
- * @see DatabaseBase::select()
+ * @see IDatabase::select()
*/
public function selectSQLText(
$table, $vars, $conds = '', $fname = __METHOD__,
);
/**
- * Single row SELECT wrapper. Equivalent to DatabaseBase::select(), except
+ * Single row SELECT wrapper. Equivalent to IDatabase::select(), except
* that a single row object is returned. If the query returns no rows,
* false is returned.
*
* For DBMSs that don't support fast result size estimation, this function
* will actually perform the SELECT COUNT(*).
*
- * Takes the same arguments as DatabaseBase::select().
+ * Takes the same arguments as IDatabase::select().
*
* @param string $table Table name
* @param string $vars Unused
*
* This is useful when trying to do COUNT(*) but with a LIMIT for performance.
*
- * Takes the same arguments as DatabaseBase::select().
+ * Takes the same arguments as IDatabase::select().
*
* @param string $table Table name
* @param string $vars Unused
*
* $options is an array of options, with boolean options encoded as values
* with numeric keys, in the same style as $options in
- * DatabaseBase::select(). Supported options are:
+ * IDatabase::select(). Supported options are:
*
* - IGNORE: Boolean: if present, duplicate key errors are ignored, and
* any rows which cause duplicate key errors are not inserted. It's
* possible to determine how many rows were successfully inserted using
- * DatabaseBase::affectedRows().
+ * IDatabase::affectedRows().
*
* @param string $table Table name. This will be passed through
- * DatabaseBase::tableName().
+ * IDatabase::tableName().
* @param array $a Array of rows to insert
* @param string $fname Calling function name (use __METHOD__) for logs/profiling
* @param array $options Array of options
* UPDATE wrapper. Takes a condition array and a SET array.
*
* @param string $table Name of the table to UPDATE. This will be passed through
- * DatabaseBase::tableName().
+ * IDatabase::tableName().
* @param array $values An array of values to SET. For each array element,
* the key gives the field name, and the value gives the data to set
- * that field to. The data will be quoted by DatabaseBase::addQuotes().
+ * that field to. The data will be quoted by IDatabase::addQuotes().
* @param array $conds An array of conditions (WHERE). See
- * DatabaseBase::select() for the details of the format of condition
+ * IDatabase::select() for the details of the format of condition
* arrays. Use '*' to update all rows.
* @param string $fname The function name of the caller (from __METHOD__),
* for logging and profiling.
* @param int $mode Constant
* - LIST_COMMA: Comma separated, no field names
* - LIST_AND: ANDed WHERE clause (without the WHERE). See the
- * documentation for $conds in DatabaseBase::select().
+ * documentation for $conds in IDatabase::select().
* - LIST_OR: ORed WHERE clause (without the WHERE)
* - LIST_SET: Comma separated with field names, like a SET clause
* - LIST_NAMES: Comma separated field names
* @param array $uniqueIndexes Is an array of indexes. Each element may be either
* a field name or an array of field names
* @param array $rows Can be either a single row to insert, or multiple rows,
- * in the same format as for DatabaseBase::insert()
+ * in the same format as for IDatabase::insert()
* @param string $fname Calling function name (use __METHOD__) for logs/profiling
*/
public function replace( $table, $uniqueIndexes, $rows, $fname = __METHOD__ );
*
* @since 1.22
*
- * @param string $table Table name. This will be passed through DatabaseBase::tableName().
+ * @param string $table Table name. This will be passed through IDatabase::tableName().
* @param array $rows A single row or list of rows to insert
* @param array $uniqueIndexes List of single field names or field name tuples
* @param array $set An array of values to SET. For each array element, the
* key gives the field name, and the value gives the data to set that
- * field to. The data will be quoted by DatabaseBase::addQuotes().
+ * field to. The data will be quoted by IDatabase::addQuotes().
* @param string $fname Calling function name (use __METHOD__) for logs/profiling
* @throws Exception
* @return bool
* DELETE query wrapper.
*
* @param array $table Table name
- * @param string|array $conds Array of conditions. See $conds in DatabaseBase::select()
+ * @param string|array $conds Array of conditions. See $conds in IDatabase::select()
* for the format. Use $conds == "*" to delete all rows
* @param string $fname Name of the calling function
* @throws DBUnexpectedError
* @param array $varMap Must be an associative array of the form
* array( 'dest1' => 'source1', ...). Source items may be literals
* rather than field names, but strings should be quoted with
- * DatabaseBase::addQuotes()
+ * IDatabase::addQuotes()
*
- * @param array $conds Condition array. See $conds in DatabaseBase::select() for
+ * @param array $conds Condition array. See $conds in IDatabase::select() for
* the details of the format of condition arrays. May be "*" to copy the
* whole table.
*
* @param string $fname The function name of the caller, from __METHOD__
*
* @param array $insertOptions Options for the INSERT part of the query, see
- * DatabaseBase::insert() for details.
+ * IDatabase::insert() for details.
* @param array $selectOptions Options for the SELECT part of the query, see
- * DatabaseBase::select() for details.
+ * IDatabase::select() for details.
*
* @return ResultWrapper
*/
* Atomic sections are more strict than transactions. With transactions,
* attempting to begin a new transaction when one is already running results
* in MediaWiki issuing a brief warning and doing an implicit commit. All
- * atomic levels *must* be explicitly closed using DatabaseBase::endAtomic(),
+ * atomic levels *must* be explicitly closed using IDatabase::endAtomic(),
* and any database transactions cannot be began or committed until all atomic
* levels are closed. There is no such thing as implicitly opening or closing
* an atomic section.
* if necessary.
*
* @since 1.23
- * @see DatabaseBase::startAtomic
+ * @see IDatabase::startAtomic
* @param string $fname
* @throws DBError
*/
*/
public function timestampOrNull( $ts = null );
- /**
- * Take the result from a query, and wrap it in a ResultWrapper if
- * necessary. Boolean values are passed through as is, to indicate success
- * of write queries or failure.
- *
- * Once upon a time, DatabaseBase::query() returned a bare MySQL result
- * resource, and it was necessary to call this function to convert it to
- * a wrapper. Nowadays, raw database objects are never exposed to external
- * callers, so this is unnecessary in external code. For compatibility with
- * old code, ResultWrapper objects are passed through unaltered.
- *
- * @param bool|ResultWrapper|resource $result
- * @return bool|ResultWrapper
- */
- public function resultObject( $result );
-
/**
* Ping the server and try to reconnect if it there is no connection
*
* Some DBMSs have a special format for inserting into blob fields, they
* don't allow simple quoted strings to be inserted. To insert into such
* a field, pass the data through this function before passing it to
- * DatabaseBase::insert().
+ * IDatabase::insert().
*
* @param string $b
* @return string
# (a) Check the local APC cache
$value = $this->srvCache->get( $key );
if ( $value && $value['timestamp'] > ( microtime( true ) - $ttl ) ) {
- wfDebugLog( 'replication', __FUNCTION__ . ": got lag times ($key) from local cache" );
+ wfDebugLog( 'replication', __FUNCTION__ . ": got lag times ($key) from local cache" );
return $value['lagTimes']; // cache hit
}
$staleValue = $value ?: false;
$value = $this->mainCache->get( $key );
if ( $value && $value['timestamp'] > ( microtime( true ) - $ttl ) ) {
$this->srvCache->set( $key, $value, $staleTTL );
- wfDebugLog( 'replication', __FUNCTION__ . ": got lag times ($key) from main cache" );
+ wfDebugLog( 'replication', __FUNCTION__ . ": got lag times ($key) from main cache" );
return $value['lagTimes']; // cache hit
}
$value = array( 'lagTimes' => $lagTimes, 'timestamp' => microtime( true ) );
$this->mainCache->set( $key, $value, $staleTTL );
$this->srvCache->set( $key, $value, $staleTTL );
- wfDebugLog( 'replication', __FUNCTION__ . ": re-calculated lag times ($key)" );
+ wfDebugLog( 'replication', __FUNCTION__ . ": re-calculated lag times ($key)" );
return $value['lagTimes'];
}
}
if ( is_scalar( $item ) ) {
- return (string) $item;
+ return (string)$item;
}
if ( is_array( $item ) ) {
if ( is_object( $item ) ) {
if ( method_exists( $item, '__toString' ) ) {
- return (string) $item;
+ return (string)$item;
}
return '[Object ' . get_class( $item ) . ']';
* {@inheritDoc}
*/
public function handle( array $record ) {
- if (!$this->initialized) {
+ if ( !$this->initialized ) {
DeferredUpdates::addCallableUpdate( array( $this, 'close' ) );
$this->initialized = true;
}
}
}
if ( $messages ) {
- $this->addMessages($channel, $messages);
+ $this->addMessages( $channel, $messages );
}
}
* Push the update into the job queue
*/
public function enqueueUpdate();
-}
\ No newline at end of file
+}
+
}
}
}
-}
\ No newline at end of file
+}
+
protected function blockHeader( $xbeg, $xlen, $ybeg, $ylen ) {
// '<!--LINE \d+ -->' get replaced by a localised line number
// in DifferenceEngine::localiseLineNumbers
- $r = '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l' . $xbeg . '" ><!--LINE ' . $xbeg . "--></td>\n" .
- '<td colspan="2" class="diff-lineno"><!--LINE ' . $ybeg . "--></td></tr>\n";
+ $r = '<tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l' .
+ $xbeg .
+ '" ><!--LINE ' .
+ $xbeg .
+ "--></td>\n" .
+ '<td colspan="2" class="diff-lineno"><!--LINE ' .
+ $ybeg .
+ "--></td></tr>\n";
return $r;
}
* @return void
*/
function invalidateImageRedirect( Title $title ) {
- $cache = ObjectCache::getMainWANInstance();
-
- $memcKey = $this->getSharedCacheKey( 'image_redirect', md5( $title->getDBkey() ) );
- if ( $memcKey ) {
- // Set a temporary value for the cache key, to ensure
- // that this value stays purged long enough so that
- // it isn't refreshed with a stale value due to a
- // lagged slave.
- $cache->delete( $memcKey, 12 );
+ $key = $this->getSharedCacheKey( 'image_redirect', md5( $title->getDBkey() ) );
+ if ( $key ) {
+ $this->getMasterDB()->onTransactionPreCommitOrIdle( function() use ( $key ) {
+ ObjectCache::getMainWANInstance()->delete( $key );
+ } );
}
}
return;
}
- ObjectCache::getMainWANInstance()->delete( $key );
+ $this->repo->getMasterDB()->onTransactionPreCommitOrIdle( function() use ( $key ) {
+ ObjectCache::getMainWANInstance()->delete( $key );
+ } );
}
/**
public function __construct( $info ) {
$info['nodata'] = true;
- if ( isset( $info['flags'] ) )
+ if ( isset( $info['flags'] ) ) {
$this->mFlags = $info['flags'];
+ }
parent::__construct( $info );
}
) {
$prefix = 'mw-ui-';
// add mw-ui-button separately, so the descriptor doesn't need to set it
- $flags .= ' ' . $prefix.'button';
+ $flags .= ' ' . $prefix . 'button';
}
foreach ( $this->mFlags as $flag ) {
$flags .= ' ' . $prefix . $flag;
flush();
if ( $ret !== false ) {
$updatesDone[] = $origParams;
+ wfWaitForSlaves();
} else {
$updatesSkipped[] = array( $func, $params, $origParams );
}
global $wgAutoloadClasses;
$wgAutoloadClasses = array();
+ // @codingStandardsIgnoreStart
// LocalSettings.php should not call functions, except wfLoadSkin/wfLoadExtensions
// Define the required globals here, to ensure, the functions can do it work correctly.
global $wgExtensionDirectory, $wgStyleDirectory;
+ // @codingStandardsIgnoreEnd
MediaWiki\suppressWarnings();
$_lsExists = file_exists( "$IP/LocalSettings.php" );
"config-profile-no-anon": "계정 만들기 필요",
"config-profile-fishbowl": "승인된 편집자만",
"config-profile-private": "비공개 위키",
- "config-profile-help": "ì\9c\84í\82¤ë\8a\94 ê°\80ë\8a¥í\95\9c ë§\8eì\9d\80 ì\82¬ë\9e\8cë\93¤ì\9d´ í\8e¸ì§\91í\95 ì\88\98 ì\9e\88ë\8f\84ë¡\9d í\95 ë\95\8c ê°\80ì\9e¥ ë\9b°ì\96´ë\82\9c ì\97í\95 ì\9d\84 í\95©ë\8b\88ë\8b¤.\n미ë\94\94ì\96´ì\9c\84í\82¤ì\97\90ì\84\9cë\8a\94 ìµ\9cê·¼ ë°\94ë\80\9cì\9d\84 ê²\80í\86 í\95\98기 ì\89½ê³ , 미ì\88\99í\95\98ê±°ë\82\98 ì\95\85ì\9d\98ì \81ì\9d¸ ì\82¬ì\9a©ì\9e\90ì\9d\98 ì\96´ë\96 한 손실을 되돌리는 것이 쉽습니다.\n\n그러나 많은 사람이 미디어위키가 다양한 역할을 수행하는 데 유용하다는 것을 알고 있지만, 때로는 모든 사람에게 위키 방식의 장점을 설득하기 쉽지 않을 지도 모릅니다.\n그래서 선택할 수 있습니다.\n\n<strong>{{int:config-profile-wiki}}/<strong> 모델은 로그인하지 않고도 누구나 편집할 수 있습니다.\n<strong>{{int:config-profile-no-anon}}</strong>인 위키에서는 편집자에게 추가적인 책임을 부여하지만, 부담 없는 기여를 저해할 수도 있습니다.\n\n<strong>{{int:config-profile-fishbowl}}</strong> 시나리오에서는 승인된 사용자만 편집할 수 있지만, 일반 사용자도 문서(문서 역사 포함)는 볼 수 있습니다.\n<strong>{{int:config-profile-private}}</strong>는 승인된 사용자만 문서를 볼 수 있으며, 승인된 사용자 그룹이 편집할 수 있습니다.\n\n더 복잡한 사용자 권한 설정은 설치한 후 사용할 수 있으며 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights 관련 설명서 항목]을 참조하세요.",
+ "config-profile-help": "ì\9c\84í\82¤ë\8a\94 ê°\80ë\8a¥í\95\9c ë§\8eì\9d\80 ì\82¬ë\9e\8cë\93¤ì\9d´ í\8e¸ì§\91í\95 ì\88\98 ì\9e\88ë\8f\84ë¡\9d í\95 ë\95\8c ê°\80ì\9e¥ ë\9b°ì\96´ë\82\9c ì\97í\95 ì\9d\84 í\95©ë\8b\88ë\8b¤.\n미ë\94\94ì\96´ì\9c\84í\82¤ì\97\90ì\84\9cë\8a\94 ìµ\9cê·¼ ë°\94ë\80\9cì\9d\84 ê²\80í\86 í\95\98기 ì\89½ê³ , 미ì\88\99í\95\98ê±°ë\82\98 ì\95\85ì\9d\98ì \81ì\9d¸ ì\82¬ì\9a©ì\9e\90ì\97\90 ì\9d\98한 손실을 되돌리는 것이 쉽습니다.\n\n그러나 많은 사람이 미디어위키가 다양한 역할을 수행하는 데 유용하다는 것을 알고 있지만, 때로는 모든 사람에게 위키 방식의 장점을 설득하기 쉽지 않을 지도 모릅니다.\n그래서 선택할 수 있습니다.\n\n<strong>{{int:config-profile-wiki}}/<strong> 모델은 로그인하지 않고도 누구나 편집할 수 있습니다.\n<strong>{{int:config-profile-no-anon}}</strong>인 위키에서는 편집자에게 추가적인 책임을 부여하지만, 부담 없는 기여를 저해할 수도 있습니다.\n\n<strong>{{int:config-profile-fishbowl}}</strong> 시나리오에서는 승인된 사용자만 편집할 수 있지만, 일반 사용자도 문서(문서 역사 포함)는 볼 수 있습니다.\n<strong>{{int:config-profile-private}}</strong>는 승인된 사용자만 문서를 볼 수 있으며, 승인된 사용자 그룹이 편집할 수 있습니다.\n\n더 복잡한 사용자 권한 설정은 설치한 후 사용할 수 있으며 [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:User_rights 관련 설명서 항목]을 참조하세요.",
"config-license": "저작권 및 라이선스:",
"config-license-none": "라이선스 바닥글 없음",
"config-license-cc-by-sa": "크리에이티브 커먼즈 저작자표시-동일조건변경허락",
return str_replace( array( '._', '_.' ), '.', $key );
}
- public function produceStatsdData( $key, $value = 1, $metric = StatsdDataInterface::STATSD_METRIC_COUNT ) {
+ public function produceStatsdData(
+ $key, $value = 1, $metric = StatsdDataInterface::STATSD_METRIC_COUNT
+ ) {
$entity = $this->produceStatsdDataEntity();
if ( $key !== null ) {
$key = self::normalizeMetricKey( "{$this->prefix}.{$key}" );
// Check for global @embed comment and remove it. Allow other comments to be present
// before @embed (they have been replaced with placeholders at this point).
$embedAll = false;
- $rule = preg_replace( '/^((?:\s+|' . CSSMin::PLACEHOLDER . '(\d+)x)*)' . CSSMin::EMBED_REGEX . '\s*/', '$1', $rule, 1, $embedAll );
+ $rule = preg_replace(
+ '/^((?:\s+|' .
+ CSSMin::PLACEHOLDER .
+ '(\d+)x)*)' .
+ CSSMin::EMBED_REGEX .
+ '\s*/',
+ '$1',
+ $rule,
+ 1,
+ $embedAll
+ );
// Build two versions of current rule: with remapped URLs
// and with embedded data: URIs (where possible).
}
if ( $version === null ) {
- $version = isset( $_SERVER['SERVER_PROTOCOL'] ) && $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.0' ? '1.0' : '1.1';
+ $version = isset( $_SERVER['SERVER_PROTOCOL'] ) &&
+ $_SERVER['SERVER_PROTOCOL'] === 'HTTP/1.0' ?
+ '1.0' :
+ '1.1';
}
header( "HTTP/$version $code $message" );
* - a) Replication lag is bounded to being less than HOLDOFF_TTL; or
* - b) If lag is higher, the DB will have gone into read-only mode already
*
+ * When using potentially long-running ACID transactions, a good pattern is
+ * to use a pre-commit hook to issue the delete. This means that immediately
+ * after commit, callers will see the tombstone in cache in the local datacenter
+ * and in the others upon relay. It also avoids the following race condition:
+ * - a) T1 begins, changes a row, and calls delete()
+ * - b) The HOLDOFF_TTL passes, expiring the delete() tombstone
+ * - c) T2 starts, reads the row and calls set() due to a cache miss
+ * - d) T1 finally commits
+ * - e) Stale value is stuck in cache
+ *
+ * Example usage:
+ * @code
+ * $dbw->begin(); // start of request
+ * ... <execute some stuff> ...
+ * // Update the row in the DB
+ * $dbw->update( ... );
+ * $key = wfMemcKey( 'homes', $homeId );
+ * // Purge the corresponding cache entry just before committing
+ * $dbw->onTransactionPreCommitOrIdle( function() use ( $cache, $key ) {
+ * $cache->delete( $key );
+ * } );
+ * ... <execute some stuff> ...
+ * $dbw->commit(); // end of request
+ * @endcode
+ *
* If called twice on the same key, then the last hold-off TTL takes
* precedence. For idempotence, the $ttl should not vary for different
* delete() calls on the same key. Also note that lowering $ttl reduces
$src_image = call_user_func( $loader, $params['srcPath'] );
- $rotation = function_exists( 'imagerotate' ) && !isset( $params['disableRotation'] ) ? $this->getRotation( $image ) : 0;
+ $rotation = function_exists( 'imagerotate' ) && !isset( $params['disableRotation'] ) ?
+ $this->getRotation( $image ) :
+ 0;
list( $width, $height ) = $this->extractPreRotationDimensions( $params, $rotation );
$dst_image = imagecreatetruecolor( $width, $height );
}
/**
- * Swaps an embedded ICC profile for another, if found. Depends on exiftool, no-op if not installed.
+ * Swaps an embedded ICC profile for another, if found.
+ * Depends on exiftool, no-op if not installed.
* @param string $filepath File to be manipulated (will be overwritten)
- * @param string $oldProfileString Exact name of color profile to look for (the one that will be replaced)
+ * @param string $oldProfileString Exact name of color profile to look for
+ * (the one that will be replaced)
* @param string $profileFilepath ICC profile file to apply to the file
* @since 1.26
* @return bool
* Gets configuration for the file warning message. Return value of
* the following structure:
* array(
- * 'module' => 'example.filewarning.messages', // Required, module with messages loaded for the client
- * 'messages' => array( // Required, array of names of messages
- * 'main' => 'example-filewarning-main', // Required, main warning message
- * 'header' => 'example-filewarning-header', // Optional, header for warning dialog
- * 'footer' => 'example-filewarning-footer', // Optional, footer for warning dialog
- * 'info' => 'example-filewarning-info', // Optional, text for more-information link (see below)
+ * // Required, module with messages loaded for the client
+ * 'module' => 'example.filewarning.messages',
+ * // Required, array of names of messages
+ * 'messages' => array(
+ * // Required, main warning message
+ * 'main' => 'example-filewarning-main',
+ * // Optional, header for warning dialog
+ * 'header' => 'example-filewarning-header',
+ * // Optional, footer for warning dialog
+ * 'footer' => 'example-filewarning-footer',
+ * // Optional, text for more-information link (see below)
+ * 'info' => 'example-filewarning-info',
* ),
- * 'link' => 'http://example.com', // Optional, link for more information
+ * // Optional, link for more information
+ * 'link' => 'http://example.com',
* )
*
* Returns null if no warning is necessary.
if ( $info['fourCC'] != 'WEBP' ) {
wfDebugLog( 'WebP', __METHOD__ . ': FourCC was not WEBP: ' .
- bin2hex( $info['fourCC'] ) . " \n" );
+ bin2hex( $info['fourCC'] ) . " \n" );
return false;
}
// Bytes 4-7 are chunk stream size
// Byte 8 is 0x2F called the signature
if ( $header{8} != "\x2F" ) {
- wfDebugLog( 'WebP', __METHOD__ . ': Invalid signature: ' .
+ wfDebugLog( 'WebP', __METHOD__ . ': Invalid signature: ' .
bin2hex( $header{8} ) . "\n" );
return array();
}
}
$len = unpack( 'Nlength/Noffset', substr( $content, 32, 8 ) );
- if ( !$len || $len['length'] < 4 || $len['offset'] < 0 || $len['offset'] > $len['length'] ) {
- $this->logger->info( __METHOD__ . 'Error reading extended XMP block, invalid length or offset.' );
+ if ( !$len ||
+ $len['length'] < 4 ||
+ $len['offset'] < 0 ||
+ $len['offset'] > $len['length']
+ ) {
+ $this->logger->info(
+ __METHOD__ . 'Error reading extended XMP block, invalid length or offset.'
+ );
return false;
}
* @throws RuntimeException
*/
private function endElementModeLi( $elm ) {
-
list( $ns, $tag ) = explode( ' ', $this->curItem[0], 2 );
$info = $this->items[$ns][$tag];
$finalName = isset( $info['map_name'] )
$this->results['xmp-' . $info['map_group']][$finalName]['_type'] = 'lang';
}
} else {
- throw new RuntimeException( __METHOD__ . " expected </rdf:seq> or </rdf:bag> but instead got $elm." );
+ throw new RuntimeException(
+ __METHOD__ . " expected </rdf:seq> or </rdf:bag> but instead got $elm."
+ );
}
}
parent::__construct( $params );
if ( empty( $params['caches'] ) || !is_array( $params['caches'] ) ) {
- throw new InvalidArgumentException( __METHOD__ . ': "caches" parameter must be an array of caches' );
+ throw new InvalidArgumentException(
+ __METHOD__ . ': "caches" parameter must be an array of caches'
+ );
}
$this->caches = array();
Hooks::run( 'ImagePageShowTOC', array( $this, &$r ) );
if ( $metadata ) {
- $r[] = '<li><a href="#metadata">' . $this->getContext()->msg( 'metadata' )->escaped() . '</a></li>';
+ $r[] = '<li><a href="#metadata">' .
+ $this->getContext()->msg( 'metadata' )->escaped() .
+ '</a></li>';
}
return '<ul id="filetoc">' . implode( "\n", $r ) . '</ul>';
}
if ( count( $otherSizes ) ) {
$msgsmall .= ' ' .
- Html::rawElement( 'span', array( 'class' => 'mw-filepage-other-resolutions' ),
- $this->getContext()->msg( 'show-big-image-other' )->rawParams( $lang->pipeList( $otherSizes ) )->
- params( count( $otherSizes ) )->parse()
+ Html::rawElement(
+ 'span',
+ array( 'class' => 'mw-filepage-other-resolutions' ),
+ $this->getContext()->msg( 'show-big-image-other' )
+ ->rawParams( $lang->pipeList( $otherSizes ) )
+ ->params( count( $otherSizes ) )
+ ->parse()
);
}
} elseif ( $width == 0 && $height == 0 ) {
$wrap = "<div class=\"sharedUploadNotice\">\n$1\n</div>\n";
$repo = $this->mPage->getFile()->getRepo()->getDisplayName();
- if ( $descUrl && $descText && $this->getContext()->msg( 'sharedupload-desc-here' )->plain() !== '-' ) {
+ if ( $descUrl &&
+ $descText &&
+ $this->getContext()->msg( 'sharedupload-desc-here' )->plain() !== '-'
+ ) {
$out->wrapWikiMsg( $wrap, array( 'sharedupload-desc-here', $repo, $descUrl ) );
- } elseif ( $descUrl && $this->getContext()->msg( 'sharedupload-desc-there' )->plain() !== '-' ) {
+ } elseif ( $descUrl &&
+ $this->getContext()->msg( 'sharedupload-desc-there' )->plain() !== '-'
+ ) {
$out->wrapWikiMsg( $wrap, array( 'sharedupload-desc-there', $repo, $descUrl ) );
} else {
$out->wrapWikiMsg( $wrap, array( 'sharedupload', $repo ), ''/*BACKCOMPAT*/ );
$liContents = $link;
} elseif ( count( $redirects[$element->page_title] ) === 0 ) {
# Redirect without usages
- $liContents = $this->getContext()->msg( 'linkstoimage-redirect' )->rawParams( $link, '' )->parse();
+ $liContents = $this->getContext()->msg( 'linkstoimage-redirect' )
+ ->rawParams( $link, '' )
+ ->parse();
} else {
# Redirect with usages
$li = '';
} else {
$link = Linker::makeExternalLink( $file->getDescriptionUrl(),
$file->getTitle()->getPrefixedText() );
- $fromSrc = $this->getContext()->msg( 'shared-repo-from', $file->getRepo()->getDisplayName() )->text();
+ $fromSrc = $this->getContext()->msg(
+ 'shared-repo-from',
+ $file->getRepo()->getDisplayName()
+ )->text();
}
$out->addHTML( "<li>{$link} {$fromSrc}</li>\n" );
}
);
$submit = Xml::submitButton( $this->getContext()->msg( 'img-lang-go' )->text() );
- $formContents = $this->getContext()->msg( 'img-lang-info' )->rawParams( $select, $submit )->parse()
- . Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() );
+ $formContents = $this->getContext()->msg( 'img-lang-info' )
+ ->rawParams( $select, $submit )
+ ->parse();
+ $formContents .= Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() );
$langSelectLine = Html::rawElement( 'div', array( 'id' => 'mw-imglangselector-line' ),
Html::rawElement( 'form', array( 'action' => $wgScript ), $formContents )
} else {
# Creating thumb links triggers thumbnail generation.
# Just generate the thumb for the current users prefs.
- $thumbSizes = array( $this->getImageLimitsFromOption( $this->getContext()->getUser(), 'thumbsize' ) );
+ $thumbSizes = array(
+ $this->getImageLimitsFromOption( $this->getContext()->getUser(), 'thumbsize' )
+ );
if ( !$this->displayImg->mustRender() ) {
// We can safely include a link to the "full-size" preview,
// without actually rendering.
*/
public $mUsedOptions;
- public $mVersion = Parser::VERSION, # Compatibility check
- $mCacheTime = '', # Time when this object was generated, or -1 for uncacheable. Used in ParserCache.
- $mCacheExpiry = null, # Seconds after which the object should expire, use 0 for uncacheable. Used in ParserCache.
- $mCacheRevisionId = null; # Revision ID that was parsed
+ # Compatibility check
+ public $mVersion = Parser::VERSION;
+
+ # Time when this object was generated, or -1 for uncacheable. Used in ParserCache.
+ public $mCacheTime = '';
+
+ # Seconds after which the object should expire, use 0 for uncacheable. Used in ParserCache.
+ public $mCacheExpiry = null;
+
+ # Revision ID that was parsed
+ public $mCacheRevisionId = null;
/**
* @return string TS_MW timestamp
$parser->setFunctionHook( $func, array( __CLASS__, $func ), Parser::SFH_NO_HASH );
}
- $parser->setFunctionHook( 'namespace', array( __CLASS__, 'mwnamespace' ), Parser::SFH_NO_HASH );
+ $parser->setFunctionHook(
+ 'namespace',
+ array( __CLASS__, 'mwnamespace' ),
+ Parser::SFH_NO_HASH
+ );
$parser->setFunctionHook( 'int', array( __CLASS__, 'intFunction' ), Parser::SFH_NO_HASH );
$parser->setFunctionHook( 'special', array( __CLASS__, 'special' ) );
$parser->setFunctionHook( 'speciale', array( __CLASS__, 'speciale' ) );
$parser->setFunctionHook( 'formatdate', array( __CLASS__, 'formatDate' ) );
if ( $wgAllowDisplayTitle ) {
- $parser->setFunctionHook( 'displaytitle', array( __CLASS__, 'displaytitle' ), Parser::SFH_NO_HASH );
+ $parser->setFunctionHook(
+ 'displaytitle',
+ array( __CLASS__, 'displaytitle' ),
+ Parser::SFH_NO_HASH
+ );
}
if ( $wgAllowSlowParserFunctions ) {
$parser->setFunctionHook(
* @param int $direction
* @return string
*/
- public static function pad( $parser, $string, $length, $padding = '0', $direction = STR_PAD_RIGHT ) {
+ public static function pad(
+ $parser, $string, $length, $padding = '0', $direction = STR_PAD_RIGHT
+ ) {
$padding = $parser->killMarkers( $padding );
$lengthOfPadding = mb_strlen( $padding );
if ( $lengthOfPadding == 0 ) {
public static function tidy( $text ) {
$driver = self::singleton();
if ( !$driver ) {
- throw new MWException( __METHOD__.
+ throw new MWException( __METHOD__ .
': tidy is disabled, caller should have checked MWTidy::isEnabled()' );
}
return $driver->tidy( $text );
public static function checkErrors( $text, &$errorStr = null ) {
$driver = self::singleton();
if ( !$driver ) {
- throw new MWException( __METHOD__.
+ throw new MWException( __METHOD__ .
': tidy is disabled, caller should have checked MWTidy::isEnabled()' );
}
if ( $driver->supportsValidate() ) {
}
$limitReport .= 'Cached time: ' . $this->mOutput->getCacheTime() . "\n";
$limitReport .= 'Cache expiry: ' . $this->mOutput->getCacheExpiry() . "\n";
- $limitReport .= 'Dynamic content: ' . ( $this->mOutput->hasDynamicContent() ? 'true' : 'false' ) . "\n";
+ $limitReport .= 'Dynamic content: ' .
+ ( $this->mOutput->hasDynamicContent() ? 'true' : 'false' ) .
+ "\n";
+
foreach ( $this->mOutput->getLimitReportData() as $key => $value ) {
if ( Hooks::run( 'ParserLimitReportFormat',
array( $key, &$value, &$limitReport, false, false )
* @private
*/
public function makeFreeExternalLink( $url, $numPostProto ) {
-
$trail = '';
# The characters '<' and '>' (which were escaped by
# URLs, per RFC 2396.
# Make terminate a URL as well (bug T84937)
$m2 = array();
- if ( preg_match( '/&(lt|gt|nbsp|#x0*(3[CcEe]|[Aa]0)|#0*(60|62|160));/', $url, $m2, PREG_OFFSET_CAPTURE ) ) {
+ if ( preg_match(
+ '/&(lt|gt|nbsp|#x0*(3[CcEe]|[Aa]0)|#0*(60|62|160));/',
+ $url,
+ $m2,
+ PREG_OFFSET_CAPTURE
+ ) ) {
$trail = substr( $url, $m2[0][1] ) . $trail;
$url = substr( $url, 0, $m2[0][1] );
}
wfIncrStats( "pcache.miss.revid" );
$revId = $article->getLatest();
$cachedRevId = $value->getCacheRevisionId();
- wfDebug( "ParserOutput key is for an old revision, latest $revId, cached $cachedRevId\n" );
+ wfDebug(
+ "ParserOutput key is for an old revision, latest $revId, cached $cachedRevId\n"
+ );
$value = false;
- } elseif ( Hooks::run( 'RejectParserCacheValue', array( $value, $wikiPage, $popts ) ) === false ) {
+ } elseif (
+ Hooks::run( 'RejectParserCacheValue', array( $value, $wikiPage, $popts ) ) === false
+ ) {
wfIncrStats( 'pcache.miss.rejected' );
- wfDebug( "ParserOutput key valid, but rejected by RejectParserCacheValue hook handler.\n" );
+ wfDebug(
+ "ParserOutput key valid, but rejected by RejectParserCacheValue hook handler.\n"
+ );
$value = false;
} else {
wfIncrStats( "pcache.hit" );
// ...and its pointer
$this->mMemc->set( $this->getOptionsKey( $page ), $optionsKey, $expire );
- Hooks::run( 'ParserCacheSaveComplete', array( $this, $parserOutput, $page->getTitle(), $popts, $revId ) );
+ Hooks::run(
+ 'ParserCacheSaveComplete',
+ array( $this, $parserOutput, $page->getTitle(), $popts, $revId )
+ );
} else {
wfDebug( "Parser output was marked as uncacheable and has not been saved.\n" );
}
}
/**
- * Sets a hook to force that a page exists, and sets a current revision callback to return a
- * revision with custom content when the current revision of the page is requested.
+ * Sets a hook to force that a page exists, and sets a current revision callback to return
+ * a revision with custom content when the current revision of the page is requested.
*
* @since 1.25
* @param Title $title
* @return ScopedCallback to unset the hook
*/
public function setupFakeRevision( $title, $content, $user ) {
- $oldCallback = $this->setCurrentRevisionCallback( function ( $titleToCheck, $parser = false ) use ( $title, $content, $user, &$oldCallback ) {
- if ( $titleToCheck->equals( $title ) ) {
- return new Revision( array(
- 'page' => $title->getArticleID(),
- 'user_text' => $user->getName(),
- 'user' => $user->getId(),
- 'parent_id' => $title->getLatestRevId(),
- 'title' => $title,
- 'content' => $content
- ) );
- } else {
- return call_user_func( $oldCallback, $titleToCheck, $parser );
+ $oldCallback = $this->setCurrentRevisionCallback(
+ function (
+ $titleToCheck, $parser = false ) use ( $title, $content, $user, &$oldCallback
+ ) {
+ if ( $titleToCheck->equals( $title ) ) {
+ return new Revision( array(
+ 'page' => $title->getArticleID(),
+ 'user_text' => $user->getName(),
+ 'user' => $user->getId(),
+ 'parent_id' => $title->getLatestRevId(),
+ 'title' => $title,
+ 'content' => $content
+ ) );
+ } else {
+ return call_user_func( $oldCallback, $titleToCheck, $parser );
+ }
}
- } );
+ );
+
global $wgHooks;
$wgHooks['TitleExists'][] =
function ( $titleToCheck, &$exists ) use ( $title ) {
) {
// Doesn't match, mark it as incompatible.
$incompatible[] = "{$info['name']} is not compatible with the current "
- . "MediaWiki core (version {$wgVersion}), it requires: ". $requires[self::MEDIAWIKI_CORE]
+ . "MediaWiki core (version {$wgVersion}), it requires: " . $requires[self::MEDIAWIKI_CORE]
. '.';
continue;
}
if ( $context->getImageObj() && $this->errors ) {
// We can't show both the error messages and the response when it's an image.
- $response = implode( "\n\n", $this->errors );
+ $response = implode( "\n\n", $this->errors );
} elseif ( $this->errors ) {
$errorText = implode( "\n\n", $this->errors );
$errorResponse = self::makeComment( $errorText );
$text = ltrim( $text ) . "\n"; // make sure the preg_match may find the last line
$text = str_replace( "\n\n", "\n", $text ); // remove empty lines
preg_match( "/^(.*\n){0,$contextlines}/", $text, $match );
- $text = htmlspecialchars( substr( trim( $match[0] ), 0, $contextlines * $contextchars ) ); // trim and limit to max number of chars
+
+ // Trim and limit to max number of chars
+ $text = htmlspecialchars( substr( trim( $match[0] ), 0, $contextlines * $contextchars ) );
return str_replace( "\n", '<br>', $text );
}
}
} else {
$options['ORDER BY'] = 'qc_value ASC';
}
- $res = $dbr->select( 'querycache', array( 'qc_type',
+ return $dbr->select( 'querycache', array( 'qc_type',
'namespace' => 'qc_namespace',
'title' => 'qc_title',
'value' => 'qc_value' ),
array( 'qc_type' => $this->getName() ),
__METHOD__, $options
);
- return $dbr->resultObject( $res );
}
public function getCachedTimestamp() {
throw new RuntimeException( "Form submission was not POSTed" );
}
- $this->title = Title::newFromText( $data['pagetitle' ] );
+ $this->title = Title::newFromText( $data['pagetitle'] );
$user = $this->getUser();
// Check permissions and make sure the user has permission to edit the specific page
$errors = $this->title->getUserPermissionsErrors( 'editcontentmodel', $user );
'name' => $submitVar,
'value' => $movepagebtn,
'label' => $movepagebtn,
- 'flags' => array( 'progressive', 'primary' ),
+ 'flags' => array( 'constructive', 'primary' ),
'type' => 'submit',
) ),
array(
<?php
namespace MediaWiki\Tidy;
+
use MWHttpRequest;
use Exception;
* @param string HTML document fragment to clean up
* @param string The corrected HTML output
*/
- public abstract function tidy( $text );
+ abstract public function tidy( $text );
}
* @param string[] $errorMessageParameters Additional parameters for the error message.
* $titleText will be appended if it's not null. (since MW 1.26)
*/
- public function __construct( $errorMessage = null, $titleText = null, $errorMessageParameters = array() ) {
+ public function __construct(
+ $errorMessage = null, $titleText = null, $errorMessageParameters = array()
+ ) {
$this->errorMessage = $errorMessage;
$this->titleText = $titleText;
if ( $titleText !== null ) {
* returned.
*/
public static function getErrors( AvroSchema $schema, $datum ) {
- switch ( $schema->type) {
+ switch ( $schema->type ) {
case AvroSchema::NULL_TYPE:
- if ( !is_null($datum) ) {
+ if ( !is_null( $datum ) ) {
return self::wrongType( 'null', $datum );
}
return array();
case AvroSchema::BOOLEAN_TYPE:
- if ( !is_bool($datum) ) {
+ if ( !is_bool( $datum ) ) {
return self::wrongType( 'boolean', $datum );
}
return array();
case AvroSchema::STRING_TYPE:
case AvroSchema::BYTES_TYPE:
- if ( !is_string($datum) ) {
+ if ( !is_string( $datum ) ) {
return self::wrongType( 'string', $datum );
}
return array();
case AvroSchema::INT_TYPE:
- if ( !is_int($datum) ) {
+ if ( !is_int( $datum ) ) {
return self::wrongType( 'integer', $datum );
}
if ( AvroSchema::INT_MIN_VALUE > $datum
}
return array();
case AvroSchema::LONG_TYPE:
- if ( !is_int($datum) ) {
+ if ( !is_int( $datum ) ) {
return self::wrongType( 'integer', $datum );
}
if ( AvroSchema::LONG_MIN_VALUE > $datum
return array();
case AvroSchema::FLOAT_TYPE:
case AvroSchema::DOUBLE_TYPE:
- if ( !is_float($datum) && !is_int($datum) ) {
+ if ( !is_float( $datum ) && !is_int( $datum ) ) {
return self::wrongType( 'float or integer', $datum );
}
return array();
case AvroSchema::ARRAY_SCHEMA:
- if (!is_array($datum)) {
+ if ( !is_array( $datum ) ) {
return self::wrongType( 'array', $datum );
}
$errors = array();
- foreach ($datum as $d) {
+ foreach ( $datum as $d ) {
$result = self::getErrors( $schema->items(), $d );
if ( $result ) {
$errors[] = $result;
}
return $errors;
case AvroSchema::MAP_SCHEMA:
- if (!is_array($datum)) {
+ if ( !is_array( $datum ) ) {
return self::wrongType( 'array', $datum );
}
$errors = array();
- foreach ($datum as $k => $v) {
- if ( !is_string($k) ) {
+ foreach ( $datum as $k => $v ) {
+ if ( !is_string( $k ) ) {
$errors[] = self::wrongType( 'string key', $k );
}
$result = self::getErrors( $schema->values(), $v );
return $errors;
case AvroSchema::UNION_SCHEMA:
$errors = array();
- foreach ($schema->schemas() as $schema) {
+ foreach ( $schema->schemas() as $schema ) {
$result = self::getErrors( $schema, $datum );
if ( !$result ) {
return array();
}
$this->db = $db;
$this->table = $table;
- $this->primaryKey = (array) $primaryKey;
+ $this->primaryKey = (array)$primaryKey;
$this->fetchColumns = $this->primaryKey;
$this->orderBy = implode( ' ASC,', $this->primaryKey ) . ' ASC';
$this->batchSize = $batchSize;
* @return boolean True when the iterator is in a valid state
*/
public function valid() {
- return (bool) $this->current;
+ return (bool)$this->current;
}
/**
* @param RowUpdateGenerator $generator Generates single row updates
* based on the rows content
*/
- public function __construct( BatchRowIterator $reader, BatchRowWriter $writer, RowUpdateGenerator $generator ) {
+ public function __construct(
+ BatchRowIterator $reader, BatchRowWriter $writer, RowUpdateGenerator $generator
+ ) {
$this->reader = $reader;
$this->writer = $writer;
$this->generator = $generator;
$instance = self::singleton();
if ( !is_array( $filePaths ) ) {
- $filePaths = (array) $filePaths;
+ $filePaths = (array)$filePaths;
}
if ( count( $filePaths ) === 1 ) {
/**
* @param array $config Configuration options
- * @param array $config['namespace'] Configuration for the NamespaceInputWidget dropdown with list
- * of namespaces
- * @param string $config['namespace']['includeAllValue'] If specified, add a "all namespaces"
- * option to the dropdown, and use this as the input value for it
- * @param array|null $config['invert'] Configuration for the "invert selection" CheckboxInputWidget. If
- * null, the checkbox will not be generated.
+ * @param array $config['namespace'] Configuration for the NamespaceInputWidget
+ * dropdown with list of namespaces
+ * @param string $config['namespace']['includeAllValue'] If specified,
+ * add an "all namespaces" option to the dropdown, and use this as the input value for it
+ * @param array|null $config['invert'] Configuration for the "invert selection"
+ * CheckboxInputWidget. If null, the checkbox will not be generated.
* @param array|null $config['associated'] Configuration for the "include associated namespace"
- * CheckboxInputWidget. If null, the checkbox will not be generated.
- * @param array $config['invertLabel'] Configuration for the FieldLayout with label wrapping the
- * "invert selection" checkbox
+ * CheckboxInputWidget. If null, the checkbox will not be generated.
+ * @param array $config['invertLabel'] Configuration for the FieldLayout with label
+ * wrapping the "invert selection" checkbox
* @param string $config['invertLabel']['label'] Label text for the label
- * @param array $config['associatedLabel'] Configuration for the FieldLayout with label wrapping
- * the "include associated namespace" checkbox
+ * @param array $config['associatedLabel'] Configuration for the FieldLayout with label
+ * wrapping the "include associated namespace" checkbox
* @param string $config['associatedLabel']['label'] Label text for the label
*/
public function __construct( array $config = array() ) {
$config,
array_intersect_key(
$this->config,
- array_fill_keys( array( 'namespace', 'invert', 'invertLabel', 'associated', 'associatedLabel' ), true )
+ array_fill_keys(
+ array(
+ 'namespace',
+ 'invert',
+ 'invertLabel',
+ 'associated',
+ 'associatedLabel'
+ ),
+ true
+ )
)
);
return parent::getConfig( $config );
* Like TitleInputWidget, but the namespace has to be input through a separate dropdown field.
*
* @param array $config Configuration options
- * @param array $config['namespace'] Configuration for the NamespaceInputWidget dropdown with list
- * of namespaces
+ * @param array $config['namespace'] Configuration for the NamespaceInputWidget dropdown
+ * with list of namespaces
* @param array $config['title'] Configuration for the TitleInputWidget text field
*/
public function __construct( array $config = array() ) {
$this->title = new TitleInputWidget( array_merge(
$config['title'],
array(
- // The inner TitleInputWidget shouldn't be infusable, only the ComplexTitleInputWidget itself can be.
+ // The inner TitleInputWidget shouldn't be infusable,
+ // only the ComplexTitleInputWidget itself can be.
'infusable' => false,
'relative' => true,
- 'namespace' => isset( $config['namespace']['value'] ) ? $config['namespace']['value'] : null,
+ 'namespace' => isset( $config['namespace']['value'] ) ?
+ $config['namespace']['value'] :
+ null,
)
) );
/**
* @param array $config Configuration options
* @param int|null $config['namespace'] Namespace to prepend to queries
- * @param bool|null $config['relative'] If a namespace is set, return a title relative to it (default: true)
+ * @param bool|null $config['relative'] If a namespace is set,
+ * return a title relative to it (default: true)
* @param bool|null $config['suggestions'] Display search suggestions (default: true)
*/
public function __construct( array $config = array() ) {
// Parent constructor
- parent::__construct( array_merge( array( 'infusable' => true, 'maxLength' => 255 ), $config ) );
+ parent::__construct(
+ array_merge( array( 'infusable' => true, 'maxLength' => 255 ), $config )
+ );
// Properties, which are ignored in PHP and just shipped back to JS
if ( isset( $config['namespace'] ) ) {
"viewtalkpage": "دانیشیغا باخ",
"otherlanguages": "آیری دیللرده",
"redirectedfrom": "($1-دن يوْللاندیریلمیش)",
- "redirectpagesub": "یوْللاندیرما صفحهسی",
+ "redirectpagesub": "یوْللاندیرما صفحهسی",
"redirectto": "مسیزپرین دَییشیب:",
"lastmodifiedat": "بۇ صفحه سوْن دفعه $1، $2 تاریخینده دَییشیلمیشدیر.",
"viewcount": "بۇ صحیفه {{PLURAL:$1|بیر|$1}} دفعه گؤرولوبدور.",
"sort-ascending": "چوْخالان سیرالاماق",
"nstab-main": "صفحه",
"nstab-user": "ایشلدن صفحهسی",
- "nstab-media": "مدیا",
+ "nstab-media": "مدیاصفحهسی",
"nstab-special": "اؤزل صفحه",
"nstab-project": "پروژه صفحهسی",
"nstab-image": "فایل",
"rc-enhanced-expand": "تفصیللری گؤستر",
"rc-enhanced-hide": "تفصیللری گیزلت",
"rc-old-title": "ایلکجه «$1» آدیله یارانمیشدیر",
- "recentchangeslinked": "مربوط دَییشیکلیکلر",
- "recentchangeslinked-feed": "مربوط دَییشیکلیکلر",
- "recentchangeslinked-toolbox": "مربوط دَییشیکلیکلر",
+ "recentchangeslinked": "ایلگیلی دَییشیکلیکلر",
+ "recentchangeslinked-feed": "ایلگیلی دَییشیکلیکلر",
+ "recentchangeslinked-toolbox": "ایلگیلی دَییشیکلیکلر",
"recentchangeslinked-title": "''$1'' ایله ایلگیلی دییشیکلر",
"recentchangeslinked-summary": "آشاغیداکی سیياهی، قئيد اوْلونان صحیفهيه (و يا قئيد اوْلونان کاتئقوْرياداکی صحیفهلره) داخیلی کئچید وئرن صحیفهلرده ائدیلمیش سوْن ديَیشیکلیکلرین سیياهیسیدیر. \n[[Special:Watchlist|ایزلهمه سیياهینیزداکی]] صحیفهلر '''قالین''' شریفتله گؤستریلمیشدیر.",
"recentchangeslinked-page": "صفحه آدی:",
"upload-copy-upload-invalid-domain": "فایل یوکلنمه سی بو بازه ده امکانی یوخدور",
"upload-dialog-button-cancel": "وازگئچ",
"upload-dialog-button-done": "اولدو",
- "upload-dialog-button-save": "ساخÙ\84ا",
+ "upload-dialog-button-save": "ذخÛ\8cرÙ\87 ائت",
"upload-dialog-button-upload": "یوکله",
"upload-process-error": "بیر یالنیشلیق اولدو",
- "upload-process-warning": "بÛ\8cر اÙ\88Û\8cارÛ\8c اÙ\88Ù\84دÙ\88",
+ "upload-process-warning": "بÛ\8cر خطا باش Ù\88ئردÛ\8c",
"upload-form-label-select-file": "فایل سئچ",
"upload-form-label-infoform-title": "جوزئیات",
"upload-form-label-infoform-name": "آد",
"nstab-template": "টেমপ্লেট",
"nstab-help": "সহায়িকা",
"nstab-category": "বিষয়শ্রেণী",
+ "mainpage-nstab": "প্রধান পাতা",
"nosuchaction": "এমন কোন কাজ নেই",
"nosuchactiontext": "এই উআরএল এ নির্ধারিত কাজটি অবৈধ।\nআপনি হয়তো একটি ভুল লিঙ্ক দিয়েছেন অথবা ইউআরএল লিখতে ভুল করেছেন।\nএটি এমনও নির্দেশ করে যে {{SITENAME}} সাইটে ব্যবহৃত সফটওয়্যারটিতে একটি ত্রুটি রয়েছে।",
"nosuchspecialpage": "এমন কোন বিশেষ পাতা নেই",
"createacct-captcha": "নিরাপত্তা পরীক্ষা",
"createacct-imgcaptcha-ph": "উপরে যে লেখা দেখতে পাচ্ছেন তা লিখুন",
"createacct-submit": "আপনার অ্যাকাউন্ট তৈরি করুন",
- "createacct-another-submit": "à¦\86রà§\87à¦\95à¦\9fি à¦\85à§\8dযাà¦\95াà¦\89নà§\8dà¦\9f তà§\88রি à¦\95রà§\81ন",
+ "createacct-another-submit": "অ্যাকাউন্ট তৈরি করুন",
"createacct-benefit-heading": "{{SITENAME}} আপনার মত লোকের দ্বারাই তৈরি।",
"createacct-benefit-body1": "{{PLURAL:$1|টি সম্পাদনা}}",
"createacct-benefit-body2": "{{PLURAL:$1|টি পাতা}}",
"changeemail-password": "আপনার {{SITENAME}} পাসওয়ার্ড:",
"changeemail-submit": "ই-মেইল পরিবর্তন",
"changeemail-throttled": "আপনি পরপর বেশ কয়েকবার প্রবেশের চেষ্টা করেছেন। পুনরায় চেষ্টা করার পূর্বে অনুগ্রহ করে $1 অপেক্ষা করুন।",
+ "changeemail-nochange": "দয়া করে একটি ভিন্ন নতুন ইমেইল ঠিকানা লিখুন।",
"resettokens": "রিসেট টোকেন",
"resettokens-text": "আপনি টোকেন রিসেট করতে পারেন, যা অ্যাকাউন্টের সাথে সম্পর্কিত আপনার ব্যক্তিগত তথ্য দেখার কাজে ব্যবহার করা হয়।",
"resettokens-no-tokens": "রিসেট করার মত কোনো টোকেন নেই।",
"columns": "কলাম:",
"searchresultshead": "অনুসন্ধান",
"stub-threshold": "<a href=\"#\" class=\"stub\">অসম্পূর্ণ নিবন্ধের সংযোগগুলির</a> বিশেষ ফরম্যাটিঙের সীমা (বাইটে):",
+ "stub-threshold-sample-link": "নমুনা",
"stub-threshold-disabled": "নিস্ক্রিয়",
"recentchangesdays": "সাম্প্রতিক পরিবর্তনে দিনসমূহ দেখানোর জন্য:",
"recentchangesdays-max": "সর্বোচ্চ $1 {{PLURAL:$1|দিন|দিন}}",
"group-bot": "বট",
"group-sysop": "প্রশাসক",
"group-bureaucrat": "ব্যুরোক্র্যাট",
- "group-suppress": "à¦\93à¦à¦¾à¦°à¦¸à¦¾à¦\87à¦\9f",
+ "group-suppress": "দমনà¦\95ারà§\80",
"group-all": "(সমস্ত)",
"group-user-member": "{{GENDER:$1|ব্যবহারকারী}}",
"group-autoconfirmed-member": "স্বয়ংনিশ্চিতকৃত ব্যবহারকারী",
"group-bot-member": "বট",
"group-sysop-member": "প্রশাসক",
"group-bureaucrat-member": "ব্যুরোক্র্যাট",
- "group-suppress-member": "ওভারসাইট",
+ "group-suppress-member": "{{GENDER:$1|দমনকারী}}",
"grouppage-user": "{{ns:project}}:ব্যবহারকারী",
"grouppage-autoconfirmed": "{{ns:project}}:স্বয়ংক্রিয়ভাবে নিশ্চিতকৃত ব্যবহারকারী",
"grouppage-bot": "{{ns:project}}:বট",
"grouppage-sysop": "{{ns:project}}:প্রশাসক",
"grouppage-bureaucrat": "{{ns:project}}:ব্যুরোক্র্যাট",
- "grouppage-suppress": "{{ns:project}}:à¦\93à¦à¦¾à¦°à¦¸à¦¾à¦\87à¦\9f",
+ "grouppage-suppress": "{{ns:project}}:দমনà¦\95ারà§\80",
"right-read": "পাতাসমূহ পড়ুন",
"right-edit": "পাতা সম্পাদনা করুন",
"right-createpage": "পাতা তৈরি করো (আলাপের পাতা নয়)",
"filerevert-legend": "ফাইল পূর্বাবস্থায় ফেরত নিন",
"filerevert-intro": "আপনি '''[[Media:$1|$1]]''' ফাইলটিকে [$3, $2 সময়ের $4 সংস্করণে] ফিরিয়ে নিচ্ছেন।",
"filerevert-comment": "কারণ:",
- "filerevert-defaultcomment": "$2, $1 সংস্করণে ফেরত যাওয়া হল",
+ "filerevert-defaultcomment": "$2, $1 সংস্করণে ফেরত যাওয়া হল ($3)",
"filerevert-submit": "ফেরত যাওয়া হোক",
"filerevert-success": "'''[[Media:$1|$1]]''' ফাইলটি [$3, $2-এর $4 সংস্করণে] ফেরত নেওয়া হয়েছে।",
"filerevert-badversion": "প্রদত্ত তারিখ ও সময়ের জন্য এই ফাইলটির কোন স্থানীয় সংস্করণ নেই।",
"nopagetext": "আপনার নির্ধারিত লক্ষ্য পাতাটি নাই।",
"pager-newer-n": "{{PLURAL:$1|নতুনতর ১টি|নতুনতর $1টি}}",
"pager-older-n": "{{PLURAL:$1|আরও পুরনো ১টি|আরও পুরনো $1টি}}",
- "suppress": "à¦\93à¦à¦¾à¦°à¦¸à¦¾à¦\87à¦\9f",
+ "suppress": "দমন",
"querypage-disabled": "কারিগরি কারণে এই বিশেষ পাতাটি আপাতত বন্ধ রয়েছে।",
"apihelp": "এপিআই সাহায্য",
"apihelp-no-such-module": "মডিউল \"$1\" পাওয়া যায়নি।",
"booksources-text": "নতুন ও পুরাতন ব্যবহৃত বই বিক্রি করে, এমন কতগুলি সাইটের সংযোগের তালিকা নিচে দেওয়া হল, যে সাইটগুলিতে আপনার অনুসন্ধানকৃত বইগুলির উপর আরও তথ্য থাকতে পারে:",
"booksources-invalid-isbn": "উল্লেখিত ISBN সঠিক নয়; অনুগ্রহ করে মূল উৎস থেকে আবার পরীক্ষা করুন।",
"specialloguserlabel": "সম্পাদক:",
- "speciallogtitlelabel": "লà¦\95à§\8dষà§\8dয (শিরà§\8bনাম à¦\85থবা বà§\8dযবহারà¦\95ারà§\80):",
+ "speciallogtitlelabel": "লà¦\95à§\8dষà§\8dয (শিরà§\8bনাম বা {{ns:user}}:বà§\8dযবহারà¦\95ারà§\80র à¦\9cনà§\8dয বà§\8dযবহারà¦\95ারà§\80 নাম):",
"log": "লগগুলি",
"all-logs-page": "সব পাবলিক লগ",
"alllogstext": "{{SITENAME}}-এর সবগুলো লগের সম্মিলিত প্রদর্শন।\nআপনি লগের ধরন, ব্যবহারকারীর নাম, বা পাতার নাম নির্বাচন করে প্রদর্শনটির আকার কমিয়ে আনতে পারেন।",
"emailccsubject": "আপনার বার্তার অনুলিপি $1-কে: $2",
"emailsent": "ই-মেইল প্রেরণ করা হয়েছে",
"emailsenttext": "আপনার ই-মেইল বার্তা প্রেরণ করা হয়েছে।",
- "emailuserfooter": "এই ইমেইলটি {{SITENAME}} সাইটের \"{{int:emailuser}}\" সুবিধা ব্যবহার করে $1-এর পক্ষ থেকে $2-এর নিকট পাঠানো হয়েছে।",
+ "emailuserfooter": "এই ইমেইলটি {{SITENAME}} সাইটের \"{{int:emailuser}}\" সুবিধা ব্যবহার করে $1-এর পক্ষ থেকে {{GENDER:$2|$2}}-এর নিকট {{GENDER:$1|পাঠানো হয়েছে}}।",
"usermessage-summary": "বাদবাকি সিস্টেম বার্তা",
"usermessage-editor": "সিস্টেম ম্যাসেঞ্জার",
"watchlist": "নজর তালিকা",
"tooltip-ca-nstab-main": "বিষয়বস্তু পাতাটি দেখুন",
"tooltip-ca-nstab-user": "ব্যহারকারী পাতাটি দেখুন",
"tooltip-ca-nstab-media": "মিডিয়া পাতাটি দেখুন",
- "tooltip-ca-nstab-special": "à¦\8fà¦\9fি à¦\8fà¦\95à¦\9fি বিশà§\87ষ পাতা, à¦\86পনি à¦\8fà¦\9fি সমà§\8dপাদনা à¦\95রতà§\87 পারবà§\87ন না",
+ "tooltip-ca-nstab-special": "à¦\8fà¦\9fি à¦\8fà¦\95à¦\9fি বিশà§\87ষ পাতা, à¦\8fবà¦\82 à¦\8fà¦\9fি সমà§\8dপাদনা à¦\95রা যাবà§\87 না",
"tooltip-ca-nstab-project": "প্রকল্প পাতাটি দেখুন",
"tooltip-ca-nstab-image": "ফাইলের পাতাটি দেখুন",
"tooltip-ca-nstab-mediawiki": "সিস্টেম বার্তাটি দেখুন",
"logentry-newusers-byemail": "$1, $3 ব্যবহারকরী অ্যাকাউন্টটি {{GENDER:$2|তৈরী করেছেন}} এবং পাসওয়ার্ড ইমেইলের মাধ্যমে পাঠানো হয়েছে",
"logentry-newusers-autocreate": "$1 অ্যাকাউন্টটি স্বয়ংক্রিয়ভাবে {{GENDER:$2|তৈরি}} হয়েছে",
"logentry-protect-move_prot": "$1 সুরক্ষা সেটিং $4 থেকে $3-এ {{GENDER:$2|সরিয়েছেন}}",
+ "logentry-protect-unprotect": "$1 $3 থেকে সুরক্ষা {{GENDER:$2|সরিয়ে নিয়েছেন}}",
+ "logentry-protect-protect": "$1 $3 {{GENDER:$2|সুরক্ষিত করেছেন}} $4",
+ "logentry-protect-protect-cascade": "$1 $3 {{GENDER:$2|সুরক্ষিত করেছেন}} $4 [প্রপাতাকার]",
+ "logentry-protect-modify": "$1 $3-এর জন্য সুরক্ষা স্তর {{GENDER:$2|পরিবর্তন করেছেন}} $4",
+ "logentry-protect-modify-cascade": "$1 $3-এর জন্য সুরক্ষা স্তর {{GENDER:$2|পরিবর্তন করেছেন}} $4 [প্রপাতাকার]",
"logentry-rights-rights": "$1 ব্যবহারকারী, $3 এর দলগত সদস্যপদ $4 থেকে $5 এ {{GENDER:$2|পরিবর্তন}} করেছেন",
"logentry-rights-rights-legacy": "$1 দলের সদস্যপদ পরিবর্তন করেছেন {{GENDER:$2|changed}} এর জন্য $3",
"logentry-rights-autopromote": "$1 সয়ংক্রিয়ভাবে $4 থেকে $5 এ {{GENDER:$2|উন্নীত}} হয়েছে",
"api-error-badaccess-groups": "আপনার এই উইকিতে ফাইল আপলোডের অনুমতি নেই।",
"api-error-badtoken": "অভ্যন্তরীণ ত্রুটি: খারাপ টোকেন।",
"api-error-copyuploaddisabled": "এই সার্ভারে ইউআরএল-এর মাধ্যমে আপলোড করার সুবিধা নিস্ক্রিয় রয়েছে।",
- "api-error-duplicate": "à¦\87তà§\8bমধà§\8dযà§\87 à¦\8fà¦\87 সাà¦\87à¦\9fà§\87 à¦\8fà¦\95à¦\87 রà¦\95মà§\87র à¦\95নà§\8dà¦\9fà§\87à¦\9f সমà§\83দà§\8dধ {{PLURAL:$1|[$2 à¦\85নà§\8dয ফাà¦\87ল]|[$2 à¦\95িà¦\9bà§\81 à¦\85নà§\8dয ফাà¦\87ল]}} রয়েছে।",
+ "api-error-duplicate": "à¦\87তà§\8bমধà§\8dযà§\87 à¦\8fà¦\87 সাà¦\87à¦\9fà§\87 à¦\8fà¦\95à¦\87 রà¦\95মà§\87র বিষয় সমà§\83দà§\8dধ {{PLURAL:$1|à¦\85নà§\8dয ফাà¦\87ল|à¦\95িà¦\9bà§\81 à¦\85নà§\8dয ফাà¦\87ল}} রয়েছে।",
"api-error-duplicate-archive": "একই নাম ও বিষয়বস্তু বিশিষ্ট {{PLURAL:$1|অপর একটি ফাইল|কয়েকটি ফাইল}} পূর্বে এই উইকিতে ছিলো, এবং {{PLURAL:$1|সেটিকে|সেগুলোকে}} অপসারণ করা হয়েছে।",
"api-error-empty-file": "আপনার জমাকৃত ফাইলটি খালি।",
"api-error-emptypage": "নতুন পাতা তৈরি হচ্ছে, খালি পাতা গ্রহণযোগ্য নয়।",
"logentry-newusers-byemail": "La cuenta de usuario $3 ha sido {{GENDER:$2|creada}} por $1 y la contraseña ha sido enviada por correo",
"logentry-newusers-autocreate": "La cuenta $1 se {{GENDER:$2|creó}} automáticamente",
"logentry-protect-move_prot": "$1 {{GENDER:$2|trasladó}} las preferencias de protección de $4 a $3",
+ "logentry-protect-unprotect": "$1 {{GENDER:$2|eliminó}} la protección de $3",
+ "logentry-protect-protect": "$1 {{GENDER:$2|protegió}} a $3 $4",
+ "logentry-protect-protect-cascade": "$1 {{GENDER:$2|protegió}} a $3 $4 [en cascada]",
+ "logentry-protect-modify": "$1 {{GENDER:$2|cambió}} el nivel de protección de $3 $4",
+ "logentry-protect-modify-cascade": "$1 {{GENDER:$2|cambió}} el nivel de protección de $3 $4 [en cascada]",
"logentry-rights-rights": "$1 modificó los grupos a los que pertenece $3: de $4 a $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|modificó}} los grupos a los que pertenece $3",
"logentry-rights-autopromote": "$1 ha sido {{GENDER:$2|promocionado|promocionada}} automáticamente de $4 a $5",
"logentry-protect-unprotect": "$1 {{GENDER:$2|a supprimé}} la protection de $3",
"logentry-protect-protect": "$1 {{GENDER:$2|a protégé}} $3 $4",
"logentry-protect-protect-cascade": "$1 {{GENDER:$2|a protégé}} $3 $4 [protection en cascade]",
- "logentry-protect-modify": "$1 {{GENDER:2|a modifié}} le niveau de protection de $3 $4",
- "logentry-protect-modify-cascade": "$1 {{GENDER:2|a modifié}} le niveau de protection de $3 $4 [protection en cascade]",
+ "logentry-protect-modify": "$1 {{GENDER:$2|a modifié}} le niveau de protection de $3 $4",
+ "logentry-protect-modify-cascade": "$1 {{GENDER:$2|a modifié}} le niveau de protection de $3 $4 [protection en cascade]",
"logentry-rights-rights": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3 de $4 à $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|a modifié}} l'appartenance au groupe pour $3",
"logentry-rights-autopromote": "$1 {{GENDER:$2|a été promu}} automatiquement de $4 à $5",
"jumpto": "លោតទៅ៖",
"jumptonavigation": "ការណែនាំ",
"jumptosearch": "ស្វែងរក",
- "view-pool-error": "សូមអភ័យទោស។ ប្រព័ន្ធបម្រើការមានការមមាញឹកខ្លាំងពេកនៅពេលនេះ។\n\nមានអ្នកប្រើប្រាស់ជាច្រើនកំពុងព្យាយាមចូលមើលទំព័រនេះ។\n\nសូមរង់ចាំមួយភ្លែតសិនរួចសាកល្បងចូលមកកាន់ទំព័រនេះឡើងវិញ។\n\n$1",
+ "view-pool-error": "សូមអភ័យទោស។ ប្រព័ន្ធបម្រើការមានការមមាញឹកខ្លាំងពេកនៅពេលនេះ។\nមានអ្នកប្រើប្រាស់ជាច្រើនកំពុងព្យាយាមចូលមើលទំព័រនេះ។\nសូមរង់ចាំមួយភ្លែតសិនរួចសាកល្បងចូលមកកាន់ទំព័រនេះឡើងវិញ។\n\n$1",
+ "generic-pool-error": "សូមអភ័យទោស។ ប្រព័ន្ធបម្រើការមានការមមាញឹកខ្លាំងពេកនៅពេលនេះ។\nមានអ្នកប្រើប្រាស់ជាច្រើនកំពុងព្យាយាមចូលមើលទំព័រនេះ។\nសូមរង់ចាំមួយភ្លែតសិនរួចសាកល្បងចូលមកកាន់ទំព័រនេះឡើងវិញ។",
"pool-errorunknown": "កំហុសមិនស្គាល់",
"aboutsite": "អំពី{{SITENAME}}",
"aboutpage": "Project:អំពី",
"nstab-template": "ទំព័រគំរូ",
"nstab-help": "ទំព័រជំនួយ",
"nstab-category": "ចំណាត់ថ្នាក់ក្រុម",
+ "mainpage-nstab": "ទំព័រដើម",
"nosuchaction": "គ្មានសកម្មភាពបែបនេះទេ",
"nosuchactiontext": "សកម្មភាពបានបង្ហាញដោយ URL មិនត្រឹមត្រូវ។\nអ្នកប្រហែលជាបានវាយ URL ខុស បើមិនដូច្នេះទេមានតែតំណភ្ជាប់មិនត្រឹមត្រូវ។\nនេះក៏អាចបញ្ជាក់ប្រាប់ពីកំហុសនៅក្នុងផ្នែកទន់ប្រើដោយ {{SITENAME}} ។",
"nosuchspecialpage": "គ្មានទំព័រពិសេសបែបនេះទេ",
"createacct-captcha": "ត្រួតពិនិត្យសុវត្ថិភាព",
"createacct-imgcaptcha-ph": "បញ្ចូលឃ្លាដែលអ្នកឃើញខាងលើ",
"createacct-submit": "បង្កើតគណនីរបស់អ្នក",
- "createacct-another-submit": "បង្កើតគណនីមួយទៀត",
+ "createacct-another-submit": "បង្កើតគណនី",
"createacct-benefit-heading": "{{SITENAME}} ត្រូវបង្កើតឡើងដោយបុគ្គលស្ម័គ្រចិត្តដូចជាអ្នកជាដើម។",
"createacct-benefit-body1": "{{PLURAL:$1|កំណែ|កំណែ}}",
"createacct-benefit-body2": "{{PLURAL:$1|ទំព័រ|ទំព័រ}}",
"createacct-benefit-body3": "{{PLURAL:$1|អ្នករួមចំណែក|អ្នករួមចំណែក}}ថ្មីៗ",
"badretype": "ពាក្យសម្ងាត់ដែលអ្នកបានវាយបញ្ចូលនោះ គឺមិនស៊ីគ្នាទេ។",
+ "usernameinprogress": "ការបង្កើតគណនីសម្រាប់អ្នកប្រើប្រាស់នេះកំពុងប្រព្រឹត្តទៅ។ សូមរង់ចាំបន្តិច។",
"userexists": "អត្តនាមដែលអ្នកបានវាយបញ្ចូលមានគេប្រើហើយ។\nសូមជ្រើសរើសអត្តនាមផ្សេងពីនេះ។",
"loginerror": "កំហុសនៃការកត់ឈ្មោះចូល",
"createacct-error": "បញ្ហាក្នុងការបង្កើតគណនី",
"changeemail-password": "ពាក្យសំងាត់{{SITENAME}}របស់អ្នក:",
"changeemail-submit": "ផ្លាស់ប្ដូរអ៊ីមែល",
"changeemail-throttled": "អ្នកបានព្យាយាមកត់ឈ្មោះចូលច្រើនដងពេកហើយ។\nសូមរង់ចាំរយៈពេល$1 មុនពេលសាកល្បងម្ដងទៀត។",
+ "changeemail-nochange": "សូមវាយបញ្ចូលអាសយដ្ឋានអ៊ីមែលផ្សេងមួយទៀត។",
"bold_sample": "អក្សរដិត",
"bold_tip": "អក្សរដិត",
"italic_sample": "អក្សរទ្រេត",
"search-category": "(ចំណាត់ថ្នាក់ក្រុម $1)",
"search-file-match": "(ខ្លឹមសារឯកសារត្រូវគ្នា)",
"search-suggest": "ប្រហែលជាអ្នកចង់រក៖ $1",
+ "search-rewritten": "បង្ហាញលទ្ធផលពីការស្វែងរក $1។ ស្វែងរក $2 ជំនួសវិញ។",
"search-interwiki-caption": "គម្រោងជាបងប្អូន",
"search-interwiki-default": "លទ្ធផលពី$1៖",
"search-interwiki-more": "(បន្ថែមទៀត)",
"prefsnologintext2": "សូមកត់ឈ្មោះចូលដើម្បីផ្លាស់ប្ដូរចំណង់ចំណូលចិត្តរបស់អ្នក។",
"prefs-skin": "សំបក",
"skin-preview": "មើលជាមុន",
- "datedefault": "គ្មានចំណូលចិត្ត",
- "prefs-labs": "á\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e\96á\9e·á\9e\9fá\9f\81á\9e\9fá\9e\90á\9f\92á\9e\98á\9e¸á\9f\97á\9e\8aá\9f\82á\9e\9bá\9e\9fá\9f\92á\9e\90á\9e·á\9e\8fá\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\80á\9e¶á\9e\9aá\9e\96á\9e·á\9e\9fá\9f\84á\9e\92á\9e\93á\9f\8dá\9e\93á\9f\85á\9e¡á\9e¾á\9e\99",
+ "datedefault": "á\9e\82á\9f\92á\9e\98á\9e¶á\9e\93á\9e\85á\9f\86á\9e\8eá\9e\84á\9f\8bá\9e\85á\9f\86á\9e\8eá\9e¼á\9e\9bá\9e\85á\9e·á\9e\8fá\9f\92á\9e\8f",
+ "prefs-labs": "á\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e\96á\9e·á\9e\9fá\9f\81á\9e\9fá\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\80á\9e¶á\9e\9aá\9e\96á\9e·á\9e\9fá\9f\84á\9e\92á\9e\93á\9f\8d",
"prefs-user-pages": "ទំព័រអ្នកប្រើប្រាស់",
"prefs-personal": "ប្រវត្តិរូប",
"prefs-rc": "បន្លាស់ប្ដូរថ្មីៗ",
"prefs-resetpass": "ប្តូរពាក្យសម្ងាត់",
"prefs-changeemail": "ផ្លាស់ប្ដូរអ៊ីមែល",
"prefs-setemail": "ដាក់អាសយដ្ឋានអ៊ីមែលមួយ",
- "prefs-email": "\nជំរើសទាក់ទិននឹងអ៊ីមែល",
+ "prefs-email": "ជម្រើសទាក់ទិននឹងអ៊ីមែល",
"prefs-rendering": "ការរចនា",
"saveprefs": "រក្សាទុក",
"restoreprefs": "ស្ដារការកំណត់ទាំងអស់ទៅលំនាំដើម (គ្រប់ផ្នែកទាំងអស់)",
"rows": "ជួរដេក៖",
"columns": "ជួរឈរ៖",
"searchresultshead": "ស្វែងរក",
- "stub-threshold": "ទំហំអប្បបរមាសំរាប់ដាក់ជាទំរង់<a href=\"#\" class=\"stub\">តំណភ្ជាប់ទៅទំព័រកំប៉ិចកំប៉ុក</a> (គិតជាបៃ)៖",
+ "stub-threshold": "ទំហំអប្បបរមាសម្រាប់ដាក់ជាទម្រង់ទំព័រកំប៉ិចកំប៉ុក($1)៖",
+ "stub-threshold-sample-link": "គំរូ",
"stub-threshold-disabled": "មិនប្រើ",
"recentchangesdays": "ចំនួនថ្ងៃបង្ហាញក្នុងទំព័របន្លាស់ប្តូរថ្មីៗ៖",
"recentchangesdays-max": "(អតិបរមា $1 {{PLURAL:$1|ថ្ងៃ|ថ្ងៃ}})",
"savedprefs": "ចំណង់ចំណូលចិត្តនានារបស់អ្នកត្រូវបានរក្សាទុកហើយ។",
"timezonelegend": "ល្វែងម៉ោង:",
"localtime": "ម៉ោងក្នុងស្រុក៖",
- "timezoneuseserverdefault": "á\9e\8fá\9e¶á\9e\98á\9e\80á\9e¶á\9e\9aá\9e\80á\9f\86á\9e\93ត់ដើមរបស់វិគី ($1)",
- "timezoneuseoffset": "á\9e\95á\9f\92á\9e\9fá\9f\81á\9e\84á\9e\91á\9f\80á\9e\8f (á\9e\94á\9e\89á\9f\92á\9e\85á\9e¼á\9e\9bá\9e\98á\9f\89á\9f\84á\9e\84á\9e\8aá\9f\84á\9e\99á\9e\81á\9f\92á\9e\9bá\9e½á\9e\93á\9e¯ង)",
- "servertime": "ម៉ោងម៉ាស៊ីនបម្រើ៖",
+ "timezoneuseserverdefault": "á\9e\8fá\9e¶á\9e\98á\9e\80á\9e¶á\9e\9aá\9e\80á\9f\86á\9e\8eត់ដើមរបស់វិគី ($1)",
+ "timezoneuseoffset": "á\9e\95á\9f\92á\9e\9fá\9f\81á\9e\84á\9e\91á\9f\80á\9e\8f (á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e\82á\9e\98á\9f\92á\9e\9bá\9e¶á\9e\8fá\9e\98á\9f\89á\9f\84ង)",
+ "servertime": "á\9e\98á\9f\89á\9f\84á\9e\84á\9e\98á\9f\89á\9e¶á\9e\9fá\9f\8aá\9e¸á\9e\93á\9e\94á\9e\98á\9f\92á\9e\9aá\9e¾â\80\8bá\9e\80á\9e¶á\9e\9aá\9f\96",
"guesstimezone": "បំពេញពីកម្មវិធីរាវរក",
"timezoneregion-africa": "អាហ្វ្រិក",
"timezoneregion-america": "អាមេរិក",
"prefs-namespaces": "លំហឈ្មោះ",
"default": "លំនាំដើម",
"prefs-files": "ឯកសារ",
- "prefs-custom-css": "កែតំរូវ CSS",
- "prefs-custom-js": "កែតំរូវ JS",
+ "prefs-custom-css": "CSS កែសម្រួល",
+ "prefs-custom-js": "JavaScript កែសម្រួល",
"prefs-common-css-js": "CSS/JavaScriptរួមសំរាប់សំបកទាំងអស់",
"prefs-reset-intro": "អ្នកអាចប្រើទំព័រនេះដើម្បីកំណត់ឡើងវិញនូវចំណូលចិត្តរបស់អ្នកដូចលំនាំដើមរបស់តំបន់វិញ។\nសកម្មភាពនេះមិនអាចធ្វើឡើងវិញបានទេ។",
"prefs-emailconfirm-label": "បញ្ជាក់ទទួលស្គាល់អ៊ីមែល៖",
"filerevert-legend": "ត្រឡប់ឯកសារ",
"filerevert-intro": "អ្នកកំពុងនឹងចាប់ផ្ដើមត្រឡប់ឯកសារ'''[[Media:$1|$1]]''' ទៅកាន់[កំណែ $4 ដែលមានកាលបរិច្ឆេទ $3, $2]។",
"filerevert-comment": "មូលហេតុ៖",
- "filerevert-defaultcomment": "á\9e\94á\9e\98á\9f\92á\9e\9bá\9f\82á\9e\84á\9e\91á\9f\85á\9e\80á\9f\86á\9e\8eá\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\8aá\9e¾á\9e\98á\9e\87á\9e¶$2, $1",
+ "filerevert-defaultcomment": "á\9e\94á\9e¶á\9e\93á\9e\94á\9f\86á\9e\9bá\9f\82á\9e\84á\9e\8fá\9f\92á\9e\9aá\9e¡á\9e\94á\9f\8bá\9e\91á\9f\85á\9e\80á\9f\86á\9e\8eá\9f\82 $2, $1 ($3)",
"filerevert-submit": "ត្រឡប់",
"filerevert-success": "បានត្រឡប់ '''[[Media:$1|$1]]''' ទៅ [$4 កំណែកាលពី $3, $2]",
"filerevert-badversion": "ឯកសារដែលមានកាលបរិច្ឆេទដូចដែលអ្នកផ្ដល់អោយ មិនមានកំណែពីមុននៅក្នុងវិគីនេះទេ។",
"lockedbyandtime": "({{GENDER:$1|$1}} 사용자가 $2 $3에 잠금)",
"move-page": "$1 옮기기",
"move-page-legend": "문서 옮기기",
- "movepagetext": "ì\95\84ë\9e\98 ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9b\8c 문ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d\84 ë°\94ê¾¸ê³ ëª¨ë\93 ì\97ì\82¬ë¥¼ ì\83\88 ì\9d´ë¦\84ì\9c¼ë¡\9c ë\90\9c 문ì\84\9cë¡\9c ì\98®ê¸¸ ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.\nì\9b\90ë\9e\98ì\9d\98 문ì\84\9cë\8a\94 ì\83\88 문ì\84\9cë¡\9c ë\84\98겨주ë\8a\94 ë§\81í\81¬ë¡\9cë§\8c ë\82¨ê²\8c ë\90\98ê³ ,\nì\9b\90ë\9e\98 ì\9d´ë¦\84ì\9d\84 ê°\80리í\82¤ë\8a\94 ë\84\98겨주기ë\8a\94 ì\9e\90ë\8f\99ì\9c¼ë¡\9c ê°±ì\8b ë\90©ë\8b\88ë\8b¤.\në§\8cì\95½ ì\9d´ ì\84¤ì \95ì\9d\84 ì\84 í\83\9dí\95\98ì§\80 ì\95\8aì\95\98ë\8b¤ë©´ [[Special:DoubleRedirects|ì\9d´ì¤\91 ë\84\98겨주기]]ì\99\80 [[Special:BrokenRedirects|ë\81\8a긴 ë\84\98겨주기]]를 í\99\95ì\9d¸í\95´ì£¼ì\84¸ì\9a\94.\në\8b¹ì\8b ì\9d\80 ë§\81í\81¬ì\99\80 ê°\80리í\82¤ë\8a\94 ë\8c\80ì\83\81ì\9d´ ì\84\9cë¡\9c ì\9d¼ì¹\98í\95\98ë\8f\84ë¡\9d í\95´ì\95¼ í\95\98ë\8a\94 ì±\85ì\9e\84ì\9d\84 ì§\91니다.\n\n만약 이미 있는 문서의 이름을 새 이름으로 입력했을 때는 그 문서가 넘겨주기 문서이고 문서 역사가 없어야만 이동이 됩니다. 그렇지 않을 경우에는 이동되지 <strong>않습니다</strong>.\n이것은 실수로 이동한 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n<strong>주의!</strong>\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
- "movepagetext-noredirectfixer": "ì\95\84ë\9e\98 ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9b\8c 문ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d\84 ë°\94ê¾¸ê³ ëª¨ë\93 ì\97ì\82¬ë¥¼ ì\83\88 ì\9d´ë¦\84ì\9c¼ë¡\9c ë\90\9c 문ì\84\9cë¡\9c ì\98®ê¸¸ ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.\nì\9b\90ë\9e\98ì\9d\98 문ì\84\9cë\8a\94 ì\83\88 문ì\84\9cë¡\9c ë\84\98겨주ë\8a\94 ë§\81í\81¬ë¡\9cë§\8c ë\82¨ê²\8c ë\90©ë\8b\88ë\8b¤.\n[[Special:DoubleRedirects|ì\9d´ì¤\91 ë\84\98겨주기]]ì\99\80 [[Special:BrokenRedirects|ë\81\8a긴 ë\84\98겨주기]]를 í\99\95ì\9d¸í\95´ì£¼ì\84¸ì\9a\94.\në\8b¹ì\8b ì\9d\80 ë§\81í\81¬ì\99\80 ê°\80리í\82¤ë\8a\94 ë\8c\80ì\83\81ì\9d´ ì\84\9cë¡\9c ì\9d¼ì¹\98í\95\98ë\8f\84ë¡\9d í\95´ì\95¼ í\95\98ë\8a\94 ì±\85ì\9e\84ì\9d\84 ì§\91니다.\n\n만약 이미 있는 문서의 이름을 새 이름으로 입력했을 때는 그 문서가 넘겨주기 문서이고 문서 역사가 없어야만 이동이 됩니다. 그렇지 않을 경우에는 이동되지 <strong>않습니다</strong>.\n이것은 실수로 옮긴 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n<strong>주의!</strong>\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
+ "movepagetext": "ì\95\84ë\9e\98 ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9b\8c 문ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d\84 ë°\94ê¾¸ê³ ëª¨ë\93 ì\97ì\82¬ë¥¼ ì\83\88 ì\9d´ë¦\84ì\9c¼ë¡\9c ë\90\9c 문ì\84\9cë¡\9c ì\98®ê¸¸ ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.\nì\9b\90ë\9e\98ì\9d\98 문ì\84\9cë\8a\94 ì\83\88 문ì\84\9cë¡\9c ë\84\98겨주ë\8a\94 ë§\81í\81¬ë¡\9cë§\8c ë\82¨ê²\8c ë\90\98ê³ ,\nì\9b\90ë\9e\98 ì\9d´ë¦\84ì\9d\84 ê°\80리í\82¤ë\8a\94 ë\84\98겨주기ë\8a\94 ì\9e\90ë\8f\99ì\9c¼ë¡\9c ê°±ì\8b ë\90©ë\8b\88ë\8b¤.\në§\8cì\95½ ì\9d´ ì\84¤ì \95ì\9d\84 ì\84 í\83\9dí\95\98ì§\80 ì\95\8aì\95\98ë\8b¤ë©´ [[Special:DoubleRedirects|ì\9d´ì¤\91 ë\84\98겨주기]]ì\99\80 [[Special:BrokenRedirects|ë\81\8a긴 ë\84\98겨주기]]를 í\99\95ì\9d¸í\95´ì£¼ì\84¸ì\9a\94.\në\8b¹ì\8b ì\9d\80 ë§\81í\81¬ì\99\80 ê°\80리í\82¤ë\8a\94 ë\8c\80ì\83\81ì\9d´ ì\84\9cë¡\9c ì\9d¼ì¹\98í\95\98ë\8f\84ë¡\9d í\95´ì\95¼ í\95 ì±\85ì\9e\84ì\9d´ ì\9e\88ì\8aµ니다.\n\n만약 이미 있는 문서의 이름을 새 이름으로 입력했을 때는 그 문서가 넘겨주기 문서이고 문서 역사가 없어야만 이동이 됩니다. 그렇지 않을 경우에는 이동되지 <strong>않습니다</strong>.\n이것은 실수로 이동한 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n<strong>주의!</strong>\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
+ "movepagetext-noredirectfixer": "ì\95\84ë\9e\98 ì\96\91ì\8b\9dì\9d\84 ì±\84ì\9b\8c 문ì\84\9cì\9d\98 ì\9d´ë¦\84ì\9d\84 ë°\94ê¾¸ê³ ëª¨ë\93 ì\97ì\82¬ë¥¼ ì\83\88 ì\9d´ë¦\84ì\9c¼ë¡\9c ë\90\9c 문ì\84\9cë¡\9c ì\98®ê¸¸ ì\88\98 ì\9e\88ì\8aµë\8b\88ë\8b¤.\nì\9b\90ë\9e\98ì\9d\98 문ì\84\9cë\8a\94 ì\83\88 문ì\84\9cë¡\9c ë\84\98겨주ë\8a\94 ë§\81í\81¬ë¡\9cë§\8c ë\82¨ê²\8c ë\90©ë\8b\88ë\8b¤.\n[[Special:DoubleRedirects|ì\9d´ì¤\91 ë\84\98겨주기]]ì\99\80 [[Special:BrokenRedirects|ë\81\8a긴 ë\84\98겨주기]]를 í\99\95ì\9d¸í\95´ì£¼ì\84¸ì\9a\94.\në\8b¹ì\8b ì\9d\80 ë§\81í\81¬ì\99\80 ê°\80리í\82¤ë\8a\94 ë\8c\80ì\83\81ì\9d´ ì\84\9cë¡\9c ì\9d¼ì¹\98í\95\98ë\8f\84ë¡\9d í\95´ì\95¼ í\95 ì±\85ì\9e\84ì\9d´ ì\9e\88ì\8aµ니다.\n\n만약 이미 있는 문서의 이름을 새 이름으로 입력했을 때는 그 문서가 넘겨주기 문서이고 문서 역사가 없어야만 이동이 됩니다. 그렇지 않을 경우에는 이동되지 <strong>않습니다</strong>.\n이것은 실수로 옮긴 문서를 되돌릴 수는 있지만, 이미 존재하는 문서 위에 덮어씌울 수는 없다는 것을 의미합니다.\n\n<strong>주의!</strong>\n자주 사용하는 문서를 이동하면 해결하기 어려운 문제를 일으킬 수도 있습니다.\n이동하기 전에 반드시 이 문서를 이동해도 문제가 없는지 확인해주세요.",
"movepagetalktext": "딸린 토론 문서도 자동으로 이동합니다. 하지만 다음의 경우는 '''이동하지 않습니다''':\n* 이동할 이름으로 된 문서가 이미 있는 경우\n* 아래의 선택을 해제하는 경우\n\n이 경우에는 문서를 직접 이동하거나 두 문서를 합쳐야 합니다.",
"movearticle": "문서 옮기기:",
"moveuserpage-warning": "<strong>경고:</strong> 사용자 문서를 옮기려 하고 있습니다. 사용자 문서만 이동되며 사용자 이름이 바뀌지 <strong>않는다</strong>는 점을 참고하세요.",
"logentry-newusers-byemail": "{{GENDER:$4|Dä|Dat|Dä Metmaacher|De|Dat}} $1 wood {{GENDER:$4|als Metmaacher|als Metmaacher||als Metmaacher|als Metmaacher}} aanjelaat un {{GENDER:$4|sing|em sing|däm sing|dä iehr|däm sing}} Paßwoot met der <i lang=\"en>e-mail</i> verscheck.",
"logentry-newusers-autocreate": "{{GENDER:$4|Dä|Dat|Dä Metmaacher|De|Dat}} $1 wood automattesch {{GENDER:$4|als Metmaacher|als Metmaacher||als Metmaacher|als Metmaacher}} {{GENDER:$2|vum|vum|vumm Metmaacher|vun dä|vum}} $1 aanjelaat.",
"logentry-protect-move_prot": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät de Enschtällong vum schoz vun dä Sigg „$4“ noh dä Sigg „$3“ övvenumme",
+ "logentry-protect-unprotect": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät dä Schoz vun dä Sigg „$3“ opjehovve",
+ "logentry-protect-protect": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät di Sigg „$3“ jeschöz: $4",
+ "logentry-protect-protect-cascade": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät di Sigg „$3“ jeschöz: $4 met wiggerjävve",
+ "logentry-protect-modify": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät dä Schoz vun dä Sigg „$3“ verändert: $4",
+ "logentry-protect-modify-cascade": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} $1 hät dä Schoz vun dä Sigg „$3“ verändert: $4 met wiggerjävve",
"logentry-rights-rights": "{{GENDER:$2|Dä|Dat|Dä Metmaacher|De|Dat}} „$1“ hät däm Metmaacher „$3“ sing Jroppe-Räächde vun „$4“ op „$5“ ömjestallt.",
"logentry-rights-rights-legacy": "{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} $1 hät däm Metmaacher $3 sing Räääschte-Jroppe verändert.",
"logentry-rights-autopromote": "{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} $1 wood automattesch vum $4 zom $5 jemaat.",
"logentry-newusers-byemail": "'O cunto utente $3 fuje {{GENDER:$2|criato|criata}} pe' $1 e 'a passuor è stata mannata pe' bbìa 'e na mmasciata e-mail",
"logentry-newusers-autocreate": "'O cunto utente $1 fuje {{GENDER:$2|criato|criata}} automatecamente",
"logentry-protect-move_prot": "$1 {{GENDER:$2|spustaje}} mpustaziune 'e pruteziona 'a $4 a $3",
+ "logentry-protect-unprotect": "$1 {{GENDER:$2|luvata}} pruteziona 'a $3",
+ "logentry-protect-protect": "$1 {{GENDER:$2|pruteggette}} $3 $4",
+ "logentry-protect-protect-cascade": "$1 {{GENDER:$2|pruteggette}} $3 $4 [cascading]",
+ "logentry-protect-modify": "$1 {{GENDER:$2|cagnaje}} 'o livello 'e prutezione pe' $3 $4",
+ "logentry-protect-modify-cascade": "$1 {{GENDER:$2|cagnaje}} 'o livello 'e prutezione pe' $3 $4 [cascading]",
"logentry-rights-rights": "$1 {{GENDER:$2|cagnaje}} 'e gruppo pe' $3 'a $4 a $5",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|cagnaje}} 'e gruppo pe' $3",
"logentry-rights-autopromote": "$1 è {{GENDER:$2|stato promosso|stata promossa}} automatecamente 'a $4 a $5",
"nstab-template": "ଛାଞ୍ଚ",
"nstab-help": "ସାହାଯ୍ୟ ପୃଷ୍ଠା",
"nstab-category": "ଶ୍ରେଣୀ",
+ "mainpage-nstab": "ପ୍ରଧାନ ପୃଷ୍ଠା",
"nosuchaction": "ସେହିଭଳି କିଛି କାମ ନାହିଁ",
"nosuchactiontext": "URL ଟିରେ ଦିଆଯାଇଥିବା କାମଟି ଅଚଳ ଅଟେ ।\nଆପଣ ବୋଧ ହୁଏ URL ଟି ଭୁଲ ତାଇପ କରିଥିବେ, ଅଥବା ଲିଙ୍କଟି ଭୁଲ ଥିବ ।\nଏହା ମଧ୍ୟ {{SITENAME}}ରେ ବ୍ୟବହାର କରାଯାଇଥିବା ସଫ୍ଟବେରରେ ଥିବା କିଛି ଭୁଲକୁ ସୂଚାଇପାରେ ।",
"nosuchspecialpage": "ସେହି ଭଳି କିଛି ବି ବିଶେଷ ପୃଷ୍ଠା ନାହିଁ",
"createacct-another-username-ph": "ଆପଣଙ୍କ ଇଉଜର ନାମ ଟାଇପ କରନ୍ତୁ",
"yourpassword": "ପାସୱାର୍ଡ଼",
"userlogin-yourpassword": "ପାସୱାର୍ଡ଼",
- "userlogin-yourpassword-ph": "à¬\86ପଣà¬\99à\8dà¬\95 ପାସà±à¬¾à¬°à\8dଡ଼ ଦିà¬\85ନ୍ତୁ",
+ "userlogin-yourpassword-ph": "à¬\86ପଣà¬\99à\8dà¬\95 ପାସà±à¬¾à¬°à\8dଡ଼ ଲà\87à¬\96ନ୍ତୁ",
"createacct-yourpassword-ph": "ପାସୱର୍ଡ଼ ଦିଅନ୍ତୁ",
"yourpasswordagain": "ପାସୱାର୍ଡ଼ ଆଉଥରେ:",
"createacct-yourpasswordagain": "ପାସୱର୍ଡ଼ ନିଶ୍ଚିତ କରିବେ",
- "createacct-yourpasswordagain-ph": "ଆଉଥରେ ପାସୱର୍ଡ଼ ଦିଅନ୍ତୁ",
+ "createacct-yourpasswordagain-ph": "à¬\86à¬\89ଥରà\87 ପାସà±à¬¾à¬°à\8dଡ଼ ଦିà¬\85ନà\8dତà\81",
"remembermypassword": "ଏହି ବ୍ରାଉଜରରେ (ସବୁଠୁ ଅଧିକ ହେଲେ $1 {{PLURAL:$1|day|ଦିନ}}) ପାଇଁ ମୋ ଲଗଇନ ମନେ ରଖିଥିବେ",
"userlogin-remembermypassword": "ମୋତେ ଲଗ-ଇନ କରି ରଖିଥାନ୍ତୁ",
"userlogin-signwithsecure": "ନିରାପଦ କନେକସନ ବ୍ୟବହାର କରନ୍ତୁ",
"gotaccount": "ଆଗରୁ ଖାତାଟିଏ ଅଛି କି? $1.",
"gotaccountlink": "ଲଗ ଇନ (Log in)",
"userlogin-resetlink": "ଲଗଇନ ତଥ୍ୟ ସବୁ ଭୁଲିଗେଲେକି?",
- "userlogin-resetpassword-link": "ପାସà±à¬¾à¬°à\8dଡ଼ à¬à\81ଲିଯାà¬\87à¬\9bନà\8dତି ?",
+ "userlogin-resetpassword-link": "ପାସà±à¬¾à¬°à\8dଡ଼ ମନà\87ପଡà\81ନାହିà¬\81?",
"userlogin-helplink2": "ଲଗ ଇନ ପାଇଁ ସହଯୋଗ କରନ୍ତୁ",
"userlogin-loggedin": "ଆପଣ {{GENDER:$1|$1}} ନାମରେ ଲଗ ଇନ କରିଛନ୍ତି । ତଳ ଫର୍ମଟି ବ୍ୟବହାର କରି ଆଉ ଜଣେ ସଭ୍ୟ ଭାବେ ଲଗ ଇନ କରନ୍ତୁ ।",
"userlogin-createanother": "ଆଉ ଏକ ଖାତା ତିଆରି କରନ୍ତୁ",
"number_of_watching_users_pageview": "[$1 {{PLURAL:$1|ସଭ୍ୟ|ସଭ୍ୟଗଣା}}ଙ୍କୁ ଦେଖୁଅଛି]",
"rc_categories": "ଶ୍ରେଣୀସମୂହ ପାଇଁ ସୀମା ( \"|\" ଦେଇ ଅଲଗା କରିବେ)",
"rc_categories_any": "ଯେ କୌଣସି",
- "rc-change-size-new": "ବଦଳପରେ $1 {{PLURAL:$1|byte|bytes}}",
+ "rc-change-size-new": "ବଦଳପରେ $1 {{PLURAL:$1|ବାଇଟ|ବାଇଟ}}",
"newsectionsummary": "/* $1 */ ନୂଆ ଭାଗ",
"rc-enhanced-expand": "ସବିଶେଷ ଦେଖାନ୍ତୁ",
"rc-enhanced-hide": "ବେଶି କଥାସବୁ ଲୁଚାଇଦିଅ",
"namespace_association": "ସମ୍ଭନ୍ଧିତ ନେମସ୍ପେସ",
"tooltip-namespace_association": "ବଛାଯାଇଥିବା ନେମ୍ସସ୍ପେସ ସହ ଯୋଡ଼ା ଆଲୋଚନା ବା ବିଷୟ ନେମସ୍ପେସ ଏହା ଅନ୍ତଭୁକ୍ତ କରିବା ନିମନ୍ତେ ଏହି ଘରକୁ ବାଛନ୍ତୁ",
"blanknamespace": "(ମୂଳ)",
- "contributions": "{{GENDER:$1|User}}ଙ୍କ ଅବଦାନ",
+ "contributions": "{{GENDER:$1|ବ୍ୟବହାରକାରୀ}}ଙ୍କ ଅବଦାନ",
"contributions-title": "$1 ପାଇଁ ବ୍ୟବହାରକାରୀଙ୍କ ଦାନ",
"mycontris": "ଅବଦାନ",
"contribsub2": "{{GENDER:$3|$1}} ପାଇଁ ($2)",
"allmessages-language": "ଭାଷା:",
"allmessages-filter-submit": "ଯିବା",
"allmessages-filter-translate": "ଅନୁବାଦ କରନ୍ତୁ",
- "thumbnail-more": "ବିସà\8dତାର",
+ "thumbnail-more": "ବଡ଼",
"filemissing": "ଫାଇଲ ମିଳୁନାହିଁ",
"thumbnail_error": "ନଖଦେଖଣା ତିଆରିବାରେ ଅସୁବିଧା: $1",
"thumbnail_error_remote": "$1ରୁ ତ୍ରୁଟି ମେସେଜ:\n$2",
"tooltip-pt-logout": "ଲଗଆଉଟ",
"tooltip-pt-createaccount": "ଆପଣଙ୍କୁ ଗୋଟେ ଖାତା ଖୋଲି ଲଗ ଇନ କରିବା ପାଇଁ ପ୍ରୋତ୍ସାହିତ କରାଯାଉଛି, ଏମିତିବି ଏହା କରିବା ନିତାନ୍ତ ଆବଶ୍ୟକ ନୁହେଁ ।",
"tooltip-ca-talk": "ଏହି ପୃଷ୍ଠାଟି ଉପରେ ଆଲୋଚନା",
- "tooltip-ca-edit": "à¬\86ପଣ à¬\8fହି ପà\83ଷà\8dଠାà¬\9fିରà\87 à¬\85ଦଳ ବଦଳ à¬\95ରିପାରିବà\87, ତà\87ବà\87 ସାà¬\87ତିବା à¬\86à¬\97ରà\81 ଦà\87à¬\96ଣା ଦà\87à¬\96ନà\8dତà\81 ।",
+ "tooltip-ca-edit": "à¬\8fହି ପà\83ଷà\8dଠାà¬\9fି ସମà\8dପାଦନ à¬\95ରନà\8dତà\81",
"tooltip-ca-addsection": "ନୂଆ ବିଭାଗଟିଏ ଆରମ୍ଭ କରିବେ",
"tooltip-ca-viewsource": "ଏହି ପୃଷ୍ଠାଟି କିଳାଯାଇଛି ।\nଆପଣ ଏହାର ମୂଳ ଦେଖିପାରିବେ",
"tooltip-ca-history": "ଏହି ପୃଷ୍ଠାର ପୁରୁଣା ସଂସ୍କରଣ",
"tooltip-ca-nstab-main": "ସୂଚୀ ପୃଷ୍ଠାଟି ଦେଖାଇବେ",
"tooltip-ca-nstab-user": "ଫାଇଲ ପୃଷ୍ଠାଗୁଡ଼ିକ ଦେଖନ୍ତୁ",
"tooltip-ca-nstab-media": "ମିଡ଼ିଆ ପୃଷ୍ଠାଟି ଦେଖିବେ",
- "tooltip-ca-nstab-special": "à¬\8fହା à¬\97à\8bà¬\9fିà¬\8f ବିଶà\87ଷ ପà\83ଷà\8dଠା, à¬\86ପଣ à¬\8fହାà¬\95à\81 ବଦଳାà¬\87ପାରିବà\87 ନାହିଁ",
+ "tooltip-ca-nstab-special": "à¬\8fହା à¬\8fà¬\95 ବିଶà\87ଷ ପà\83ଷà\8dଠା ହà\8bà¬\87ଥିବାରà\81 à¬\8fହାà¬\95à\81 ବଦଳାଯାà¬\87ପାରିବ ନାହିଁ",
"tooltip-ca-nstab-project": "ପ୍ରକଳ୍ପ ପୃଷ୍ଠାଟି ଦେଖାଇବେ",
"tooltip-ca-nstab-image": "ଫାଇଲ ପୃଷ୍ଠାଗୁଡ଼ିକ ଦେଖନ୍ତୁ",
"tooltip-ca-nstab-mediawiki": "ସିଷ୍ଟମ ମେସେଜ ଦେଖିବେ",
"spam_reverting": "$1 ସହ ଯୋଡ଼ା ନଥିବା ଶେଷ ସଂସ୍କରଣକୁ ଲେଉଟାଇ ଦେଉଅଛୁଁ",
"spam_blanking": "$1 ସହ ଯୋଡ଼ାଥିବା ସବୁଯାକ ସଂସ୍କରଣ ଖାଲି କରିଦିଆଗଲା",
"spam_deleting": "$1 ସହ ଯୋଡ଼ାଥିବା ସବୁଯାକ ସଂସ୍କରଣ ଖାଲି କରିଦିଆଗଲା",
- "simpleantispam-label": "à¬\86ଣà\8dà¬\9fି-ସà\8dପାମ ପରà¬\96 ।\nà¬\8fହାà¬\95à\81 à¬à¬°ନ୍ତୁ <strong>ନାହିଁ</strong>!",
+ "simpleantispam-label": "ସà\8dପାମରà\8bଧà\80 ପରà¬\96 ।\nà¬\8fଥିରà\87 à¬\95ିà¬\9bି ଲà\87à¬\96ନ୍ତୁ <strong>ନାହିଁ</strong>!",
"pageinfo-title": "\"$1\"ର ବିବରଣୀ",
"pageinfo-not-current": "ଦୁଖିତଃ, ପୁରୁଣା ସଂସ୍କରଣଗୁଡିକର ଏହି ତଥ୍ୟ ଦେବା ସମ୍ଭବ ନୁହେଁ ।",
"pageinfo-header-basic": "ସାଧାରଣ ଜାଣିବା କଥା",
"Ævar Arnfjörð Bjarmason",
"לערי ריינהארט",
"아라",
- "Macofe"
+ "Macofe",
+ "ਪ੍ਰਚਾਰਕ"
]
},
"tog-underline": "ਲਿੰਕ ਹੇਠ-ਲਾਈਨ:",
"createacct-captcha": "ਸੁਰੱਖਿਆ ਜਾਂਚ",
"createacct-imgcaptcha-ph": "ਉੱਤੇ ਵੇਖਾਈ ਦੇ ਰਿਹਾ ਸ਼ਬਦ ਦਿਉ",
"createacct-submit": "ਆਪਣਾ ਖਾਤਾ ਬਣਾਓ",
- "createacct-another-submit": "ਹà©\8bਰ ਖਾਤਾ ਬਣਾਓ",
+ "createacct-another-submit": "ਨਵਾà¨\82 ਖਾਤਾ ਬਣਾਓ",
"createacct-benefit-heading": "{{SITENAME}} ਨੂੰ ਤੁਹਾਡੇ ਵਰਗੇ ਲੋਕਾਂ ਵਲੋਂ ਹੀ ਬਣਾਇਆ ਗਿਆ ਹੈ।",
"createacct-benefit-body1": "{{PLURAL:$1|ਸੋਧ|ਸੋਧਾਂ}}",
"createacct-benefit-body2": "{{PLURAL:$1|ਸਫ਼ਾ|ਸਫ਼ੇ}}",
"logentry-newusers-byemail": "Konto $3 zostało utworzone przez użytkownika $1, hasło wysłano e-mailem",
"logentry-newusers-autocreate": "$1 automatycznie {{GENDER:$2|utworzył|utworzyła|utworzył}} konto użytkownika",
"logentry-protect-move_prot": "$1 {{GENDER:$2|przeniósł|przeniosła}} ustawienia zabezpieczeń z $4 do $3",
+ "logentry-protect-unprotect": "$1 {{GENDER:$2|usunął|usunęła}} zabezpieczanie z $3",
+ "logentry-protect-protect": "$1 {{GENDER:$2|zabezpieczył|zabezpieczyła|zabezpieczył(a)}} $3 $4",
+ "logentry-protect-protect-cascade": "$1 {{GENDER:$2|zabezpieczył|zabezpieczyła|zabezpieczył(a)}} $3 $4 [kaskadowo]",
+ "logentry-protect-modify": "$1 {{GENDER:$2|zmienił|zmieniła|zmienił(a)}} poziom zabezpieczenia dla $3 $4",
+ "logentry-protect-modify-cascade": "$1 {{GENDER:$2|zmienił|zmieniła|zmienił(a)}} poziom zabezpieczenia dla $3 $4 [kaskadowo]",
"logentry-rights-rights": "$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup ($4 → $5)",
"logentry-rights-rights-legacy": "$1 {{GENDER:$2|zmienił|zmieniła}} przynależność $3 do grup",
"logentry-rights-autopromote": "$1 automatycznie {{GENDER:$2|zmienił|zmieniła}} przynależność ($4 → $5)",
"createacct-captcha": "Verificação de segurança",
"createacct-imgcaptcha-ph": "Digite o texto que vê acima",
"createacct-submit": "Crie a sua conta",
- "createacct-another-submit": "Criar uma outra conta",
+ "createacct-another-submit": "Criar conta",
"createacct-benefit-heading": "{{SITENAME}} é feito por pessoas como você.",
"createacct-benefit-body1": "{{PLURAL:$1|edição|edições}}",
"createacct-benefit-body2": "{{PLURAL:$1|página|páginas}}",
"permissionserrorstext-withaction": "Não possui permissão para $2, {{PLURAL:$1|pelo seguinte motivo|pelos seguintes motivos}}:",
"recreate-moveddeleted-warn": "'''Aviso: Está a recriar uma página anteriormente eliminada.'''\n\nVerifique se é apropriado continuar a editar esta página.\nPara sua conveniência, é apresentado de seguida o registo de eliminação e de movimento da página:",
"moveddeleted-notice": "Esta página foi eliminada.\nPara referência, é apresentado de seguida o registo de eliminações e de movimento da página.",
+ "moveddeleted-notice-recent": "Desculpe, esta página foi eliminado recentemente (nas últimas 24 horas).\nA exclusão e log de movimentação para a página são fornecidos abaixo para referência.",
"log-fulllog": "Ver registo detalhado",
"edit-hook-aborted": "A edição foi abortada por um hook.\nNão foi dada nenhuma explicação.",
"edit-gone-missing": "Não foi possível atualizar a página.\nEla parece ter sido eliminada.",
"group-bot": "Robôs",
"group-sysop": "Administradores",
"group-bureaucrat": "Burocratas",
- "group-suppress": "Supervisores",
+ "group-suppress": "Supressores",
"group-all": "(todos)",
"group-user-member": "{{GENDER:$1|utilizador|utilizadora}}",
"group-autoconfirmed-member": "{{GENDER:$1|utilizador autoconfirmado|utilizadora autoconfirmada}}",
"grouppage-bot": "{{ns:project}}:Robôs",
"grouppage-sysop": "{{ns:project}}:Administradores",
"grouppage-bureaucrat": "{{ns:project}}:Burocratas",
- "grouppage-suppress": "{{ns:project}}:Supervisores",
+ "grouppage-suppress": "{{ns:project}}:Suprimir",
"right-read": "Ler páginas",
"right-edit": "Editar páginas",
"right-createpage": "Criar páginas (que não sejam páginas de discussão)",
"uploaddisabledtext": "O carregamento de ficheiros está desativado.",
"php-uploaddisabledtext": "O carregamento de ficheiros está desativado no PHP.\nVerifique a configuração file_uploads, por favor.",
"uploadscripted": "Este ficheiro contém HTML ou código que pode ser erradamente interpretado por um navegador.",
+ "upload-scripted-pi-callback": "Não se podem carregar arquivos que contenham instruções de processamento de páginas de estilo XML",
+ "uploaded-script-svg": "Encontrou um elemento scriptable no ficheiro \"$1\" SVG carregado.",
+ "uploaded-hostile-svg": "Encontrou-se um código CSS não seguro no elemento de estilo do arquivo SVG carregado.",
+ "uploaded-event-handler-on-svg": "Não está permitido configurar atributos controladores de eventos <code>$1=\"$2\"</code> nos arquivos SVG.",
+ "uploaded-href-attribute-svg": "Não se permite que os arquivos SVG contenham os atributos de <code><$1 $2=\"$3\"></code> apontando a recursos não locais (p.ex. http://, javascript:,etc)",
"uploadscriptednamespace": "Este ficheiro SVG contém um domínio que não é permitido \"$1\".",
"uploadinvalidxml": "Erro detectado na análise do XML do ficheiro carregado.",
"uploadvirus": "O ficheiro contém um vírus! \nDetalhes: $1",
"logentry-newusers-byemail": "A conta de utilizador $3 foi criada por $1 e a palavra-passe foi enviada por correio eletrónico",
"logentry-newusers-autocreate": "A conta de utilizador $1 foi criada automaticamente",
"logentry-protect-move_prot": "$1 {{GENDER:$2|moveu}} as preferências de proteção de $4 para $3",
+ "logentry-protect-unprotect": "$1 {{GENDER:$2|removido}} proteção de $3",
+ "logentry-protect-protect": "$1 {{GENDER:$2|protegidas}} $3 $4",
+ "logentry-protect-protect-cascade": "$1 {{GENDER:$2|protegido}} $3 $4 [cascading]",
+ "logentry-protect-modify": "$1 {{GENDER:$2|alterado}} nível de proteção para $3 $4",
+ "logentry-protect-modify-cascade": "$1 {{GENDER:$2|alterado}} nível de proteção para us$3 $4 [cascading]",
"logentry-rights-rights": "$1 modificou os privilégios do utilizador $3 de $4 para $5",
"logentry-rights-rights-legacy": "$1 alterou os grupos de $3",
"logentry-rights-autopromote": "$1 foi automaticamente {{GENDER:$2|promovido|promovida}} de $4 a $5",
"group-bot": "Boti",
"group-sysop": "Administratorji",
"group-bureaucrat": "Birokrati",
- "group-suppress": "Nadzorniki",
+ "group-suppress": "Zatiralci",
"group-all": "(vsi)",
"group-user-member": "{{GENDER:$1|uporabnik|uporabnica}}",
"group-autoconfirmed-member": "{{GENDER:$1|samodejno potrjen uporabnik|samodejno potrjena uporabnica}}",
"group-bot-member": "{{GENDER:$1|bot}}",
"group-sysop-member": "{{GENDER:$1|administrator|administratorka}}",
"group-bureaucrat-member": "{{GENDER:$1|birokrat|birokratinja}}",
- "group-suppress-member": "{{GENDER:$1|nadzornik|nadzornica}}",
+ "group-suppress-member": "{{GENDER:$1|zatiralec|zatiralka}}",
"grouppage-user": "{{ns:project}}:Uporabniki",
"grouppage-autoconfirmed": "{{ns:project}}:Samodejno potrjeni uporabniki",
"grouppage-bot": "{{ns:project}}:Boti",
"grouppage-sysop": "{{ns:project}}:Administratorji",
"grouppage-bureaucrat": "{{ns:project}}:Birokrati",
- "grouppage-suppress": "{{ns:project}}:Nadzorniki",
+ "grouppage-suppress": "{{ns:project}}:Zatiralci",
"right-read": "Branje strani",
"right-edit": "Urejanje strani",
"right-createpage": "Ustvarjanje strani (ki niso pogovorne)",
"nopagetext": "Ciljna stran, ki ste jo navedli, ne obstaja.",
"pager-newer-n": "{{PLURAL:$1|novejši|novejša|novejši|novejših}} $1",
"pager-older-n": "{{PLURAL:$1|starejši|starejša|starejši|starejših}} $1",
- "suppress": "Nadzor",
+ "suppress": "Zatri",
"querypage-disabled": "Ta posebna stran je onemogočena iz zmogljivostnih razlogov.",
"apihelp": "Pomoč za API",
"apihelp-no-such-module": "Modula »$1« nismo našli.",
"logentry-newusers-byemail": "$1 je {{GENDER:$2|ustvaril|ustvarila|ustvaril(-a)}} uporabniški račun $3; geslo je bilo poslano po e-pošti",
"logentry-newusers-autocreate": "Račun $1 je bil samodejno {{GENDER:$2|ustvarjen}}",
"logentry-protect-move_prot": "$1 je {{GENDER:$2|prestavil|prestavila|prestavil(-a)}} nastavitve zaščite s strani $4 na $3",
+ "logentry-protect-unprotect": "$1 je {{GENDER:$2|odstranil|odstranila|odstranil(-a)}} zaščito $3",
+ "logentry-protect-protect": "$1 je {{GENDER:$2|zaščitil|zaščitila|zaščitil(-a)}} $3 $4",
+ "logentry-protect-protect-cascade": "$1 je {{GENDER:$2|zaščitil|zaščitila|zaščitil(-a)}} $3 $4 [kaskadno]",
+ "logentry-protect-modify": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} stopnjo zaščite $3 $4",
+ "logentry-protect-modify-cascade": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} stopnjo zaščite $3 $4 [kaskadno]",
"logentry-rights-rights": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} uporabniške pravice uporabnika $3 z $4 na $5",
"logentry-rights-rights-legacy": "$1 je {{GENDER:$2|spremenil|spremenila|spremenil(-a)}} uporabniške pravice uporabnika $3",
"logentry-rights-autopromote": "$1 je {{GENDER:$2|bil samodejno povišan|bila samodejno povišana|bil(-a) samodejno povišan(-a)}} z $4 na $5",
"tog-previewontop": "Vendose kutinë e bocetit sipër kutisë së redaktimeve",
"tog-previewonfirst": "Tregoje bocetin në redaktimin e parë",
"tog-enotifwatchlistpages": "Më njofto me e-mail kur ndryshohet një faqe apo skedarë nga lista ime e faqeve nën mbikqyrje",
- "tog-enotifusertalkpages": "Më njofto me e-mail kur faqja ime e dikutimeve të përdoruesit ndryshohet",
+ "tog-enotifusertalkpages": "Kur faqja ime e diskutimeve e përdoruesit ndryshohet, më dërgo email",
"tog-enotifminoredits": "Më njofto me e-mail edhe kur ka redaktime të vogla në faqe dhe skedave",
"tog-enotifrevealaddr": "Tregoje adresën time të e-mail-it në e-mail-et njoftuese",
"tog-shownumberswatching": "Trego numrin e përdoruesve që vëzhgojnë këtë faqe",
"sort-descending": "Radhit në zbritje",
"sort-ascending": "Radhit në ngjitje",
"nstab-main": "Artikulli",
- "nstab-user": "{{GENDER:{{ROOTPAGENAME}}|Faqja e përdoruesit|Faqja e përdorueses}}",
+ "nstab-user": "Faqja e përdoruesit",
"nstab-media": "Medie",
"nstab-special": "Faqe speciale",
"nstab-project": "Projekti",
"email-address-validity-invalid": "Futni një e-mali adresë të vlefshme.",
"userrights": "Ndrysho privilegjet e përdoruesve",
"userrights-lookup-user": "Ndrysho grupet e përdoruesit",
- "userrights-user-editname": "Fusni emrin e përdoruesit:",
+ "userrights-user-editname": "Fut emrin e përdoruesit:",
"editusergroup": "Redakto grupet e përdoruesve",
"editinguser": "Duke ndryshuar privilegjet e {{GENDER:$1|përdoruesit|përdorueses}} <strong>[[User:$1|$1]]</strong> $2",
"userrights-editusergroup": "Anëtarësimi tek grupet",
"javascripttest-pagetext-frameworks": "Ju lutemi zgjidhni njërën nga kornizat vijuese punuese të testimit: $1",
"javascripttest-pagetext-skins": "Zgjidhni një mostër për t'i kryer testimet:",
"javascripttest-qunit-intro": "Shiko [$1 dokumentacionin e testimit] në mediawiki.org.",
- "tooltip-pt-userpage": "Faqja juaj e përdoruesit",
+ "tooltip-pt-userpage": "Faqja jote e përdoruesit",
"tooltip-pt-anonuserpage": "Faqja e përdoruesve anonim nga kjo adresë IP",
- "tooltip-pt-mytalk": "Faqja juaj e diskutimeve",
+ "tooltip-pt-mytalk": "Faqja jote e diskutimeve",
"tooltip-pt-anontalk": "Faqja e diskutimeve të përdoruesve anonim për këtë adresë IP",
"tooltip-pt-preferences": "Parapëlqimet tuaja",
"tooltip-pt-watchlist": "Lista e faqeve nën mbikqyrjen tuaj.",
"tooltip-t-print": "Version i shtypshëm i kësaj faqeje",
"tooltip-t-permalink": "Lidhja e përhershme tek ky version i faqes",
"tooltip-ca-nstab-main": "Shikoni përmbajtjen e atikullit.",
- "tooltip-ca-nstab-user": "Shikoni faqen e përdoruesit",
+ "tooltip-ca-nstab-user": "Shfaq faqen e përdoruesit",
"tooltip-ca-nstab-media": "Shikoni faqen e skedës",
"tooltip-ca-nstab-special": "Kjo është një faqe speciale. Ju nuk mundeni ta redaktoni këtë faqe",
"tooltip-ca-nstab-project": "Shikoni faqen e projektit",
"exif-compressedbitsperpixel": "Lloji i ngjeshjes së figurës",
"exif-pixelydimension": "Gjerësia Image",
"exif-pixelxdimension": "lartësi Image",
- "exif-usercomment": "Vërejtjet e përdoruesit",
+ "exif-usercomment": "Komentet e përdoruesit",
"exif-relatedsoundfile": "Skeda audio shoqëruese",
"exif-datetimeoriginal": "Data dhe koha e prodhimit të të dhënave",
"exif-datetimedigitized": "Data dhe ora e digjitalizimit",
"confirm-watch-top": "Shto këtë faqe në listën mbikqyrëse tuajen?",
"confirm-unwatch-button": "Në rregull",
"confirm-unwatch-top": "Largo këtë faqe nga lista juaj mbikqyrëse ?",
- "imgmultipageprev": "← faqja e kaluar",
+ "imgmultipageprev": "← faqja e mëparshme",
"imgmultipagenext": "faqja tjetër →",
"imgmultigo": "Shko!",
"imgmultigoto": "Shko tek faqja $1",
"sp-contributions-logs": "дневници",
"sp-contributions-talk": "разговор",
"sp-contributions-userrights": "управљање корисничким правима",
- "sp-contributions-blocked-notice": "Овај корисник је блокиран. Испод су наведени последњи записи у дневнику блокирања:",
- "sp-contributions-blocked-notice-anon": "Ð\9eвоÑ\98 Ð\98Ð\9f адÑ\80еÑ\81и Ñ\98е Ñ\82Ñ\80енÑ\83Ñ\82но забÑ\80аÑ\9aен пÑ\80иÑ\81Ñ\82Ñ\83п.\nÐ\98звеÑ\88Ñ\82аÑ\98 о блокиÑ\80аним коÑ\80иÑ\81ниÑ\86има Ñ\81е налази иÑ\81под:",
+ "sp-contributions-blocked-notice": "Овај корисник је тренутно блокиран. \nИспод су наведени последњи записи у дневнику блокирања:",
+ "sp-contributions-blocked-notice-anon": "Ð\9eва Ð\98Ð\9f адÑ\80еÑ\81а Ñ\98е Ñ\82Ñ\80енÑ\83Ñ\82но блокиÑ\80ана.\nÐ\98Ñ\81под Ñ\81Ñ\83 наведени поÑ\81ледÑ\9aи запиÑ\81и Ñ\83 дневникÑ\83 блокиÑ\80аÑ\9aа:",
"sp-contributions-search": "Претрага доприноса",
"sp-contributions-username": "ИП адреса или корисничко име:",
"sp-contributions-toponly": "Само најновије измене",
"ipbexpiry": "Истиче:",
"ipbreason": "Разлог:",
"ipbreason-dropdown": "*Најчешћи разлози за блокирање\n** Уношење лажних информација\n** Уклањање садржаја са страница\n** Постављање веза до спољашњих сајтова\n** Уношење бесмислица у странице\n** Непристојно понашање\n** Употреба више налога\n** Неприхватљиво корисничко име",
- "ipb-hardblock": "Ð\97абÑ\80ани пријављеним корисницима да уређују с ове ИП адресе",
+ "ipb-hardblock": "Ð\9eнемогÑ\83Ñ\9bи пријављеним корисницима да уређују с ове ИП адресе",
"ipbcreateaccount": "Онемогући отварање налога",
"ipbemailban": "Онемогући кориснику да шаље е-поруке",
"ipbenableautoblock": "Аутоматски блокирај последњу ИП адресу овог корисника и све даљње адресе с којих покуша да уређује",
"sp-contributions-logs": "dnevnici",
"sp-contributions-talk": "razgovor",
"sp-contributions-userrights": "upravljanje korisničkim pravima",
- "sp-contributions-blocked-notice": "Ovaj korisnik je blokiran. Ispod su navedeni poslednji zapisi u dnevniku blokiranja:",
- "sp-contributions-blocked-notice-anon": "Ovoj IP adresi je trenutno zabranjen pristup.\nIzveštaj o blokiranim korisnicima se nalazi ispod:",
+ "sp-contributions-blocked-notice": "Ovaj korisnik je trenutno blokiran. \nIspod su navedeni poslednji zapisi u dnevniku blokiranja:",
+ "sp-contributions-blocked-notice-anon": "Ova IP adresa je trenutno blokirana.\nIspod su navedeni poslednji zapisi u dnevniku blokiranja:",
"sp-contributions-search": "Pretraga doprinosa",
"sp-contributions-username": "IP adresa ili korisničko ime:",
"sp-contributions-toponly": "Samo najnovije izmene",
"ipbexpiry": "Ističe:",
"ipbreason": "Razlog:",
"ipbreason-dropdown": "*Najčešći razlozi za blokiranje\n** Unošenje lažnih informacija\n** Uklanjanje sadržaja sa stranica\n** Postavljanje veza do spoljašnjih sajtova\n** Unošenje besmislica u stranice\n** Nepristojno ponašanje\n** Upotreba više naloga\n** Neprihvatljivo korisničko ime",
- "ipb-hardblock": "Zabrani prijavljenim korisnicima da uređuju s ove IP adrese",
+ "ipb-hardblock": "Onemogući prijavljenim korisnicima da uređuju s ove IP adrese",
"ipbcreateaccount": "Onemogući otvaranje naloga",
"ipbemailban": "Onemogući korisniku da šalje e-poruke",
"ipbenableautoblock": "Automatski blokiraj poslednju IP adresu ovog korisnika i sve daljnje adrese s kojih pokuša da uređuje",
"nstab-template": "แม่แบบ",
"nstab-help": "หน้าวิธีใช้",
"nstab-category": "หมวดหมู่",
+ "mainpage-nstab": "หน้าหลัก",
"nosuchaction": "ไม่มีปฏิบัติการดังกล่าว",
"nosuchactiontext": "การกระทำที่กำหนดผ่านยูอาร์แอลดังกล่าวไม่สามารถใช้ได้\nคุณอาจกรอกยูอาร์แอลผิด หรือมาตามลิงก์ที่ไม่ถูกต้อง\nหรืออาจเกิดจากข้อผิดพลาดในซอฟต์แวร์ซึ่ง {{SITENAME}} ใช้อยู่",
"nosuchspecialpage": "ไม่มีหน้าพิเศษดังกล่าว",
"actionthrottled": "ปฏิบัติการถูกจำกัด",
"actionthrottledtext": "เพื่อเป็นมาตรการป้องกันสแปม คุณจึงถูกจำกัดมิให้กระทำสิ่งนี้ไม่ให้ติดต่อกันหลายครั้งเกินไปในช่วงระยะเวลาสั้น ๆ ซึ่งขณะนี้คุณเลยขีดจำกัดนี้แล้ว \nกรุณารอสักครู่แล้วลองอีกครั้ง",
"protectedpagetext": "หน้านี้ถูกล็อกเพื่อป้องกันการแก้ไขหรือปฏิบัติการอื่น",
- "viewsourcetext": "คุณสามารถดูและคัดลอกโค้ดของหน้านี้:",
+ "viewsourcetext": "คุณสามารถดูและคัดลอกโค้ดของหน้านี้",
"viewyourtext": "คุณสามารถดูและคัดลอกต้นฉบับ<strong>การแก้ไขของคุณ</strong>มาหน้านี้ได้",
"protectedinterface": "หน้านี้เป็นข้อความส่วนต่อประสานสำหรับซอฟต์แวร์บนวิกินี้ และถูกล็อกเพื่อป้องกันการกระทำผิด\nในการเพิ่มหรือเปลี่ยนแปลงการแปลสำหรับทุกวิกิ โปรดใช้ [//translatewiki.net/ translatewiki.net] โครงการแปลมีเดียวิกิเป็นภาษาถิ่น",
"editinginterface": "<strong>คำเตือน:</strong> คุณกำลังแก้ไขหน้าที่ใช้จัดหาข้อความอินเตอร์เฟซให้ซอฟต์แวร์\nการเปลี่ยนแปลงหน้านี้จะมีผลต่อสภาพปรากฏของส่วนต่อประสานผู้ใช้แก่ผู้ใช้อื่นบนวิกินี้",
"createacct-captcha": "ตรวจสอบความปลอดภัย",
"createacct-imgcaptcha-ph": "กรอกข้อความที่คุณเห็นด้านบน",
"createacct-submit": "สร้างบัญชีของคุณ",
- "createacct-another-submit": "สรà¹\89าà¸\87à¸à¸µà¸\81à¸\9aัà¸\8dà¸\8aี",
+ "createacct-another-submit": "สร้างบัญชี",
"createacct-benefit-heading": "{{SITENAME}}สร้างจากคนเช่นคุณ",
"createacct-benefit-body1": "$1 การแก้ไข",
"createacct-benefit-body2": "$1 หน้า",
"changeemail-password": "รหัสผ่าน {{SITENAME}} ของคุณ:",
"changeemail-submit": "เปลี่ยนอีเมล",
"changeemail-throttled": "คุณได้พยายามล็อกอินหลายครั้งเกินไป\nกรุณารอ $1 ก่อนลองอีกครั้ง",
+ "changeemail-nochange": "กรุณากรอกที่อยู่อีเมลอื่น",
"resettokens": "ตั้งโทเค็นใหม่",
"resettokens-text": "คุณสามารถตั้งโทเค็นใหม่ ซึ่งให้การเข้าถึงข้อมูลส่วนตัวบางอย่างที่เกี่ยวข้องกับบัญชีของคุณที่นี่\n\nคุณควรตั้งโทเค็นใหม่ หากคุณบอกผู้อื่นโดยมิได้ตั้งใจหรือบัญชีของคุณถูกเจาะ",
"resettokens-no-tokens": "ไม่มีโทเค็นให้ตั้งใหม่",
"permissionserrorstext-withaction": "คุณไม่มีสิทธิ$2 ด้วย{{PLURAL:$1|เหตุ|เหตุ}}ต่อไปนี้:",
"recreate-moveddeleted-warn": "<strong>คำเตือน: คุณกำลังสร้างหน้าซึ่งได้ถูกลบไปก่อนหน้านี้แล้วอีกครั้ง</strong>\n\nคุณควรพิจารณาว่าการแก้ไขหน้านี้ต่อไปเหมาะสมหรือไม่\nปูมการลบและเปลี่ยนชื่อหน้านี้จัดไว้ด้านล่างเพื่อความสะดวก:",
"moveddeleted-notice": "หน้านี้ถูกลบแล้ว\nปูมการลบและเปลี่ยนชื่อของหน้านี้แสดงไว้ด้านล่างเพื่ออ้างอิง",
+ "moveddeleted-notice-recent": "ขออภัย หน้านี้เพิ่งถูกลบ (ใน 24 ชั่วโมงล่าสุด)\nปูมการลบและย้ายสำหรับหน้านี้อยู่ด้านล่างเพื่อการอ้างอิง",
"log-fulllog": "ดูปูมแบบเต็ม",
"edit-hook-aborted": "การแก้ไขถูกฮุกยกเลิก\nไม่ได้ให้คำอธิบาย",
"edit-gone-missing": "ไม่สามารถปรับหน้าดังกล่าวได้\nดูเหมือนถูกลบแล้ว",
"tog-hideminor": "Баһ ясвр отхн ясвр седкүләс нуух",
"tog-hidepatrolled": "Шүүсн ясвр отхн ясвр седкүләс нуух",
"tog-newpageshidepatrolled": "Шүүсн халхс отхн ясвр седкүләс нуух",
- "tog-extendwatchlist": "Һанц отхн биш хамг ясврта өргн оврхин седкүл",
+ "tog-extendwatchlist": "Һанц отхн биш хамг ясврта өргн оврлң",
"tog-usenewrc": "Ясрулсн шидрә сольлһна сеткүл олзлх (JavaScript кергтә)",
"tog-numberheadings": "Эврәр һарцг тойглх",
"tog-showtoolbar": "Ясврин зевсг үзүлх",
"tog-editondblclick": "Давхр шавдлһар халх ясх",
"tog-editsectiononrightclick": "Һарцг барун шавдсар салвр чиклх",
- "tog-watchcreations": "Мини бүтәсн халхс болн орулсн боомгуд оврхин седкүлд немх",
- "tog-watchdefault": "Мини яссн халхс болн боомгуд оврхин седкүлд немх",
- "tog-watchmoves": "Мини зөөсн халхс болн боомгуд оврхин седкүлд немх",
- "tog-watchdeletion": "Мини әрлһсн халхс болн боомгуд оврхин седкүлд немх",
+ "tog-watchcreations": "Мини бүтәсн халхс болн орулсн боомгуд оврлңд немх",
+ "tog-watchdefault": "Мини яссн халхс болн боомгуд оврлңд немх",
+ "tog-watchmoves": "Мини зөөсн халхс болн боомгуд оврлңд немх",
+ "tog-watchdeletion": "Мини әрлһсн халхс болн боомгуд оврлңд немх",
"tog-minordefault": "Хамг ясвр баһ шиг таарсар темдглх",
"tog-previewontop": "Ясврин хәәрцг өмн хәләвр үзүлх",
"tog-previewonfirst": "Ясврт одхла, хәләвр үзүлх",
"tog-fancysig": "Онц тәвсн һарин вики эрә (эврән заалһго)",
"tog-uselivepreview": "Орчн хәләвр керглх",
"tog-forceeditsummary": "Ясврин үндсн хоосна туск медүлх",
- "tog-watchlisthideown": "Мини ясвр оврхин седкүләс нуух",
- "tog-watchlisthidebots": "Көдлгчин ясвр оврхин седкүләс нуух",
- "tog-watchlisthideminor": "Баһ ясвр оврхин седкүләс нуух",
- "tog-watchlisthideliu": "Бүрткгдсн демнәчнрин ясвр оврхин седкүләс нуух",
- "tog-watchlisthideanons": "Нерго демнәчнрин ясвр оврхин седкүләс нуух",
- "tog-watchlisthidepatrolled": "Шүүгдсн ясвр оврхин седкүләс нуух",
+ "tog-watchlisthideown": "Мини ясвр оврлңгас нуух",
+ "tog-watchlisthidebots": "Көдлгчин ясвр оврлңгас нуух",
+ "tog-watchlisthideminor": "Баһ ясвр оврлңгас нуух",
+ "tog-watchlisthideliu": "Бүрткгдсн демнәчнрин ясвр оврлңгас нуух",
+ "tog-watchlisthideanons": "Нерго демнәчнрин ясвр оврлңгас нуух",
+ "tog-watchlisthidepatrolled": "Шүүгдсн ясвр оврлңгас нуух",
"tog-ccmeonemails": "Мини бус демнәчт йовулсн бичгин дүрлвр нанд йовулх",
"tog-diffonly": "Йилһәнә дор халхин дотр эс үзүлх",
"tog-showhiddencats": "Нуусн әәшлүд үзүлх",
"mainpage": "Нүр халх",
"mainpage-description": "Нүр халх",
"policy-url": "Project:Бодлһн",
- "portal": "Ниицәнә хург",
- "portal-url": "Project:Ниицәнә хург",
+ "portal": "Ниицәнә күрә",
+ "portal-url": "Project:Ниицәнә күрә",
"privacy": "Нуултын бодлһн",
"privacypage": "Project:Нуултын бодлһн",
"badaccess": "Зөвшәлин эндү",
"searchprofile-articles": "Зүүлс",
"searchprofile-images": "Үзгдл-соңсвр",
"searchprofile-everything": "Хамг",
+ "searchprofile-advanced": "Нәрн",
"searchprofile-articles-tooltip": "$1 дотр хәәх",
"searchprofile-images-tooltip": "Боомг хәәх",
"search-result-size": "$1 ({{PLURAL:$2|$2 үг|$2 үг|$2 үг}})",
"datedefault": "Көг уга",
"prefs-personal": "Демнәчна то-диг",
"prefs-rc": "Отхн ясвр",
- "prefs-watchlist": "Оврхин седкүл",
+ "prefs-watchlist": "Оврлң",
"prefs-watchlist-days": "Шинҗллһнә седкүлд үзүлсн ик гисн өдрин то:",
"prefs-watchlist-days-max": "$1 {{PLURAL:$1|өдрәс|өдрәс}} удан биш",
"prefs-misc": "Бус",
"prefixindex": "Цуг халхс эн эклцтә",
"newpages": "Шин халхс",
"move": "Көндәх",
- "movethispage": "Эн халхд шин нер аль шин орм өгх",
+ "movethispage": "Эн халх дәкн нерәдх",
"pager-newer-n": "$1 нань шин",
"pager-older-n": "$1 нань хуучн",
"booksources": "Дегтрин делгүрс",
"linksearch": "Һазад заалһ хәәвр",
"listgrouprights-members": "(мөчүдин сеткүл)",
"emailuser": "Энд E-mail йовулх",
- "watchlist": "Оврхин седкүл",
- "mywatchlist": "Оврхин седкүл",
- "addedwatchtext": "«[[:$1]]» халх тана [[Special:Watchlist|оврхин седкүлд]] немв.\nЭн халхин болн үүнә меткән халхин ирх сольлһн энд бүрктх.",
+ "watchlist": "Оврлң",
+ "mywatchlist": "Оврлң",
+ "addedwatchtext": "«[[:$1]]» халх тана [[Special:Watchlist|оврлңд]] немв.\nЭн халхин болн меткәнь халхин ирх сольлһн энд бүрктх.",
"removedwatchtext": "«[[:$1]]» халх тана [[Special:Watchlist|шинҗллһнә сеткүләс]] һарһв.",
"watch": "Шинҗлх",
"watchthispage": "Эн халхиг шинҗлх",
"unwatch": "Шинҗлх биш",
- "watchlist-details": "Тана оврхин седкүлд меткәнә халхас бус $1 халх.",
+ "watchlist-details": "Тана оврлңд меткәнә халхас бус $1 халх.",
"wlshowlast": "Сүл $1 цагин $2 өдрин туршк үзүлх",
"watchlist-options": "Шинҗллһнә сеткүлин көгүд",
"watching": "Шинҗллһнә бүтлклд немлһн...",
"tooltip-watch": "Эн халхиг тана шинҗллһнә сеткүлд немх",
"tooltip-rollback": "Шидрә демнчна сольлһн нег дарцар уга кех",
"tooltip-undo": "Эн хүврлһиг уга келһн, хәләвртә болн учрта.",
+ "pageinfo-toolboxlink": "Халхин медәл",
"previousdiff": "← Урдк сольлһн",
"nextdiff": "Дарук сольлһн →",
"file-info": "боомгин кемҗә: $1, MIME төрл: $2",
"nstab-template": "模",
"nstab-help": "幫助頁",
"nstab-category": "分類",
+ "mainpage-nstab": "頭版",
"nosuchaction": "冇呢個動作",
"nosuchactiontext": "呢個 URL 嘅指定動作 係無效嘅。\n你可能打錯咗個 URL ,或者撳錯咗唔啱嘅連結。\n呢個可能係{{SITENAME}}所用嘅軟件入面嘅臭蟲所引致嘅。",
"nosuchspecialpage": "冇呢頁特別頁",
"createacct-captcha": "安全檢查",
"createacct-imgcaptcha-ph": "入你下面見到嘅字",
"createacct-submit": "開戶口",
- "createacct-another-submit": "開過個戶口",
+ "createacct-another-submit": "開戶口",
"createacct-benefit-heading": "{{SITENAME}}係由你同其他人貢獻。",
"createacct-benefit-body1": "{{PLURAL:$1|次編輯|次編輯}}",
"createacct-benefit-body2": "{{PLURAL:$1|版|版}}",
"createacct-benefit-body3": "最近{{PLURAL:$1|貢獻者|貢獻者}}",
"badretype": "你入嘅密碼唔一致。",
+ "usernameinprogress": "呢個名嘅戶口已經開緊。\n請等等。",
"userexists": "你入嘅用戶名已經有人用咗。\n唔該揀過個名啦。",
"loginerror": "登入錯誤",
"createacct-error": "開戶口出錯",
"changeemail-password": "你{{SITENAME}}個密碼:",
"changeemail-submit": "轉電郵",
"changeemail-throttled": "你試咗登入太多次,請喺$1後再試過。",
+ "changeemail-nochange": "請輸入個唔同嘅新電郵地址。",
"resettokens": "重設密匙",
"resettokens-text": "您可以重設有關你戶口私隱資料嘅密匙。\n\n如果你唔小心洩漏密匙,或者戶口畀人入侵,就要重設密匙。",
"resettokens-no-tokens": "呢度無密匙可以重設。",
"permissionserrorstext-withaction": "根據下面嘅{{PLURAL:$1|原因|原因}},你並無權限去做$2:",
"recreate-moveddeleted-warn": "'''警告: 你而家重開一版係先前曾經刪除過嘅。'''\n\n你應該要考慮吓繼續編輯呢一版係唔係適合嘅。\n為咗方便起見,呢一版嘅刪除同搬版記錄已經響下面提供:",
"moveddeleted-notice": "呢一版已經刪咗。\n呢版嘅刪除同搬版日誌響下面提供咗以便參考。",
+ "moveddeleted-notice-recent": "唔好意思,呢版啱啱刪走咗(最近24個鐘內)。\n呢版刪版同搬版紀錄喺下低做參考。",
"log-fulllog": "睇成個日誌",
"edit-hook-aborted": "編輯由鈎取消咗。\n佢無畀到解釋。",
"edit-gone-missing": "唔能夠更新頁。\n佢可能啱啱刪除咗。",
"node-count-exceeded-category": "有頁面超出咗指定數",
"node-count-exceeded-category-desc": "頁數超過最大限制,快啲返去改過。",
"node-count-exceeded-warning": "頁面超出指定數",
+ "expansion-depth-exceeded-category": "展開深度超出咗限制嘅版面",
+ "expansion-depth-exceeded-category-desc": "版面超出咗量大展開深度。",
+ "expansion-depth-exceeded-warning": "版面超出咗展開深度",
+ "parser-unstrip-loop-warning": "偵測到 Unstrip 迴圈",
+ "parser-unstrip-recursion-limit": "Unstrip 迴圈超出咗限制 ($1)",
+ "converter-manual-rule-error": "手動語言轉換規則入面偵測到出錯",
"undo-success": "呢個編輯可以取消。請檢查一下個差異去確認呢個係你要去做嘅,跟住儲存下面嘅更改去完成編輯。",
"undo-failure": "呢個編輯唔能夠取消,由於同途中嘅編輯有衝突。",
"undo-norev": "呢個編輯唔能夠取消,由於佢唔存在或者刪除咗。",
"search-category": "(類 $1)",
"search-file-match": "(夾啱樓案内容)",
"search-suggest": "你係唔係搵: $1",
+ "search-rewritten": "顯示緊 $1 嘅搵嘢結果,而唔係 $2 嘅。",
"search-interwiki-caption": "姊妹計劃",
"search-interwiki-default": "嚟自$1嘅結果:",
"search-interwiki-more": "(更多)",
"rows": "行數:",
"columns": "列數:",
"searchresultshead": "搵嘢",
- "stub-threshold": "<a href=\"#\" class=\"stub\">楔位連結</a>格式門檻 (bytes):",
+ "stub-threshold": "楔位連結格式門檻 ($1):",
+ "stub-threshold-sample-link": "樣辦",
"stub-threshold-disabled": "閂咗",
"recentchangesdays": "最近更改中嘅顯示日數:",
"recentchangesdays-max": "最多 $1 日",
"userrights-notallowed": "你無權限去加減用戶權限。",
"userrights-changeable-col": "你可以改嘅組",
"userrights-unchangeable-col": "你唔可以改嘅組",
+ "userrights-conflict": "用戶權限更改有衝突!請再睇過同確認你嘅改動。",
"userrights-removed-self": "移走自身權限成功,但你冇乜可能入到呢頁。",
"group": "組:",
"group-user": "用戶",
"right-writeapi": "使用編寫嘅API",
"right-delete": "刪版",
"right-bigdelete": "刪大量歷史嘅版",
+ "right-deletelogentry": "刪走同取消刪走指定紀錄項目",
"right-deleterevision": "刪同反刪版嘅指定修訂",
"right-deletedhistory": "睇刪咗嘅項目,唔包同埋嘅字",
"right-deletedtext": "睇刪咗嘅修訂度嘅已刪嘅字同更改",
"right-browsearchive": "搵刪咗嘅版",
"right-undelete": "反刪版",
"right-suppressrevision": "睇下、收埋同恢復任何用戶指定頁面版本",
+ "right-viewsuppressed": "睇所有用戶嘅隱藏修訂",
"right-suppressionlog": "去睇私人嘅日誌",
"right-block": "封鎖其他用戶唔畀編輯",
"right-blockemail": "封鎖用戶唔畀寄電郵",
"right-unblockself": "解封自己",
"right-protect": "改保護等級同埋編輯流水保護版",
"right-editprotected": "用「{{int:protect-level-sysop}}」權限去編輯保護版",
+ "right-editsemiprotected": "改保護等級係「{{int:protect-level-autoconfirmed}}」嘅版面",
+ "right-editcontentmodel": "改版面嘅內容模型",
"right-editinterface": "編輯用戶界面",
"right-editusercssjs": "編輯其他用戶嘅CSS同埋JavaScript檔",
"right-editusercss": "編輯其他用戶嘅CSS檔",
"filerevert-legend": "回復檔案",
"filerevert-intro": "你而家回復緊個檔案'''[[Media:$1|$1]]'''到[$4 響$2 $3嘅版本]。",
"filerevert-comment": "原因:",
- "filerevert-defaultcomment": "已經回復到響$1 $2嘅版本",
+ "filerevert-defaultcomment": "已經回復到響$1 $2嘅版本 ($3)",
"filerevert-submit": "回復",
"filerevert-success": "'''[[Media:$1|$1]]'''已經回復到[$4 響$2 $3嘅版本]。",
"filerevert-badversion": "呢個檔案所提供嘅時間截記並無之前嘅本地版本。",
"booksources-text": "以下嘅連結清單列出其它一啲賣新書同二手書嘅網站,可能可以提供到有關你想搵嘅書嘅更多資料:",
"booksources-invalid-isbn": "個ISBN無效;請檢查原來源複製落來嘅錯。",
"specialloguserlabel": "執行人:",
- "speciallogtitlelabel": "目標(題目或者用戶):",
+ "speciallogtitlelabel": "目標(題目或者用戶 {{ns:user}}:用戶名 ):",
"log": "日誌",
"all-logs-page": "全部嘅公共日誌",
"alllogstext": "響{{SITENAME}}度全部日誌嘅綜合顯示。你可以選擇一個日誌類型、用戶名、或者受影響嘅頁面,嚟縮窄顯示嘅範圍。",
"emailccsubject": "你畀$1: $2封信嘅副本",
"emailsent": "電郵已傳送",
"emailsenttext": "你嘅電郵信息已傳送。",
- "emailuserfooter": "呢封電郵係由$1寄畀$2經{{SITENAME}}嘅「{{int:emailuser}}」功能發出嘅。",
+ "emailuserfooter": "呢封電郵係由$1{{GENDER:$1|寄}}畀{{GENDER:$2|$2}}經{{SITENAME}}嘅「{{int:emailuser}}」功能發出嘅。",
"usermessage-summary": "留低系統訊息。",
"usermessage-editor": "系統訊息",
"watchlist": "監視名單",
"tooltip-ca-nstab-main": "睇吓內容頁",
"tooltip-ca-nstab-user": "睇吓用戶頁",
"tooltip-ca-nstab-media": "睇吓媒體頁",
- "tooltip-ca-nstab-special": "呢度係特別頁,你修改唔到。",
+ "tooltip-ca-nstab-special": "呢度係特別頁,唔改得。",
"tooltip-ca-nstab-project": "睇吓專案頁",
"tooltip-ca-nstab-image": "睇吓檔案頁",
"tooltip-ca-nstab-mediawiki": "睇吓系統信息",
"logentry-newusers-byemail": "$1创建用户$3,并且密码已通过电子邮件发送",
"logentry-newusers-autocreate": "用户账户$1被自动{{GENDER:$2|创建}}",
"logentry-protect-move_prot": "$1将保护设置从$4{{GENDER:$2|移动}}到了$3",
+ "logentry-protect-unprotect": "$1{{GENDER:$2|移除了}}来自$3的保护",
+ "logentry-protect-protect": "$1{{GENDER:$2|保护了}}$3 $4",
+ "logentry-protect-protect-cascade": "$1{{GENDER:$2|保护了}}$3 $4[级联]",
+ "logentry-protect-modify": "$1{{GENDER:$2|更改了}}$3的保护等级$4",
+ "logentry-protect-modify-cascade": "$1{{GENDER:$2|更改了}}$3的保护等级$4[级联]",
"logentry-rights-rights": "$1{{GENDER:$2|更改}}$3的用户组自$4至$5",
"logentry-rights-rights-legacy": "$1更改$3的用户组",
"logentry-rights-autopromote": "$1被自动地{{GENDER:$2|提升}}自$4至$5",
"Cbliu",
"Citizen01",
"Zhxy 519",
- "Macofe"
+ "Macofe",
+ "578985s"
]
},
"tog-underline": "底線標示連結:",
"nstab-template": "模板",
"nstab-help": "說明頁面",
"nstab-category": "分類",
+ "mainpage-nstab": "首頁",
"nosuchaction": "無此動作",
"nosuchactiontext": "URL 所指定的動作無效。\n您的 URL 可能輸入錯誤,或點選了錯誤的連結。\n這也可能是 {{SITENAME}} 使用的系統出現問題。",
"nosuchspecialpage": "無此特殊頁面",
"rcshowhideliu": "$1 已註冊的使用者",
"rcshowhideliu-show": "顯示",
"rcshowhideliu-hide": "隱藏",
- "rcshowhideanons": "$1 位匿名使用者",
+ "rcshowhideanons": "$1 匿名使用者",
"rcshowhideanons-show": "顯示",
"rcshowhideanons-hide": "隱藏",
"rcshowhidepatr": "$1 巡查過的編輯",
*
*/
-$fallback = 'ne';
\ No newline at end of file
+$fallback = 'ne';
+
if ( $dbFormat === $defaultFormat ) {
$toSave[$defaultModel][] = $row->{$key};
} else { // non-default format, just update now
- $this->output( "Updating model to match format for $table $id of $title... ");
+ $this->output( "Updating model to match format for $table $id of $title... " );
$dbw->update(
$table,
array( $model_column => $defaultModel ),
<?xml version="1.0"?>
<ruleset name="MediaWiki">
- <rule ref="vendor/mediawiki/mediawiki-codesniffer/MediaWiki"/>
+ <rule ref="vendor/mediawiki/mediawiki-codesniffer/MediaWiki">
+ <!-- Disable failing rules -->
+ <exclude name="Generic.Files.LineLength"/>
+ <exclude name="PSR2.Methods.MethodDeclaration.Underscore"/>
+ <exclude name="MediaWiki.NamingConventions.PrefixedGlobalFunctions.wfPrefix"/>
+ <exclude name="Squiz.Classes.ValidClassName.NotCamelCaps"/>
+ <exclude name="Generic.WhiteSpace.DisallowSpaceIndent.SpacesUsed"/>
+ </rule>
+ <rule ref="MediaWiki.NamingConventions.PrefixedGlobalFunctions">
+ <properties>
+ <property name="ignoreList" type="array" value="bfNormalizeTitleStrReplace,bfNormalizeTitleStrTr,cdbShowHelp,codepointToUtf8,compare_point,cssfilter,escapeSingleString,findAuxFile,findFiles,getEscapedProfileUrl,getFileCommentFromSourceWiki,getFileUserFromSourceWiki,hexSequenceToUtf8,mccGetHelp,mccShowUsage,mimeTypeMatch,moveToExternal,NothingFunction,NothingFunctionData,resolveStub,resolveStubs,showUsage,splitFilename,utf8ToCodepoint,utf8ToHexSequence" />
+ </properties>
+ </rule>
+ <rule ref="MediaWiki.NamingConventions.ValidGlobalName">
+ <properties>
+ <property name="ignoreList" type="array" value="$IP,$messageMemc,$parserMemc" />
+ </properties>
+ </rule>
<file>.</file>
<arg name="encoding" value="utf8"/>
<arg name="extensions" value="php,php5,inc,sample"/>
),
'mediawiki.action.view.filepage' => array(
'styles' => array(
- 'resources/src/mediawiki.action/mediawiki.action.view.filepage.print.css' => array( 'media' => 'print' ),
+ 'resources/src/mediawiki.action/mediawiki.action.view.filepage.print.css' =>
+ array( 'media' => 'print' ),
'resources/src/mediawiki.action/mediawiki.action.view.filepage.css',
),
'position' => 'top',
// @todo: Remove mediawiki.page.gallery when cache has cleared
'resources/src/mediawiki.page/mediawiki.page.gallery.print.css' => array( 'media' => 'print' ),
// @todo: Remove mediawiki.action.view.filepage.print.css when cache has cleared
- 'resources/src/mediawiki.action/mediawiki.action.view.filepage.print.css' => array( 'media' => 'print' ),
+ 'resources/src/mediawiki.action/mediawiki.action.view.filepage.print.css' =>
+ array( 'media' => 'print' ),
'resources/src/mediawiki.legacy/commonPrint.css' => array( 'media' => 'print' )
),
),
'TestRecentChangesHelper' => "$testDir/phpunit/includes/changes/TestRecentChangesHelper.php",
# tests/phpunit/includes/content
- 'DummyContentHandlerForTesting' => "$testDir/phpunit/mocks/content/DummyContentHandlerForTesting.php",
+ 'DummyContentHandlerForTesting' =>
+ "$testDir/phpunit/mocks/content/DummyContentHandlerForTesting.php",
'DummyContentForTesting' => "$testDir/phpunit/mocks/content/DummyContentForTesting.php",
'DummyNonTextContentHandler' => "$testDir/phpunit/mocks/content/DummyNonTextContentHandler.php",
'DummyNonTextContent' => "$testDir/phpunit/mocks/content/DummyNonTextContent.php",
'PasswordTestCase' => "$testDir/phpunit/includes/password/PasswordTestCase.php",
# tests/phpunit/includes/resourceloader
- 'ResourceLoaderImageModuleTest' => "$testDir/phpunit/includes/resourceloader/ResourceLoaderImageModuleTest.php",
- 'ResourceLoaderImageModuleTestable' => "$testDir/phpunit/includes/resourceloader/ResourceLoaderImageModuleTest.php",
+ 'ResourceLoaderImageModuleTest' =>
+ "$testDir/phpunit/includes/resourceloader/ResourceLoaderImageModuleTest.php",
+ 'ResourceLoaderImageModuleTestable' =>
+ "$testDir/phpunit/includes/resourceloader/ResourceLoaderImageModuleTest.php",
# tests/phpunit/includes/specials
'SpecialPageTestBase' => "$testDir/phpunit/includes/specials/SpecialPageTestBase.php",
)*
\} # Close bracket
)
- (?<value>
+ (?<value>
(?:
(?&qstr) # Quoted val
|
<?php
-class MediaWikiPHPUnitTestListener extends PHPUnit_TextUI_ResultPrinter implements PHPUnit_Framework_TestListener {
+class MediaWikiPHPUnitTestListener
+ extends PHPUnit_TextUI_ResultPrinter implements PHPUnit_Framework_TestListener {
/**
* @var string
protected function tearDown() {
$status = ob_get_status();
- if ( isset( $status['name'] ) && $status['name'] === 'MediaWikiTestCase::wfResetOutputBuffersBarrier' ) {
+ if ( isset( $status['name'] ) &&
+ $status['name'] === 'MediaWikiTestCase::wfResetOutputBuffersBarrier'
+ ) {
ob_end_flush();
}
* @covers Linker::formatAutocomments
* @covers Linker::formatLinksInComment
*/
- public function testFormatComment( $expected, $comment, $title = false, $local = false, $wikiId = null ) {
+ public function testFormatComment(
+ $expected, $comment, $title = false, $local = false, $wikiId = null
+ ) {
$conf = new SiteConfiguration();
$conf->settings = array(
'wgServer' => array(
array( 'Cookie', array( 'string-contains=phpsessid' ) ),
array( 'Cookie', array( 'string-contains=phpsessid' ) ),
array( 'Accept-Language', array( 'string-contains=en', 'string-contains=en' ) ),
-
-
),
'Vary: Cookie, Accept-Language',
'X-Vary-Options: Cookie;string-contains=phpsessid,Accept-Language;string-contains=en',
public function updateMessage( $key ) {
}
+
public function clear() {
}
}
$this->assertTrue( $status->ok );
$status = Status::newFatal( 'foo', 1, 2 );
$this->assertFalse( $status->ok );
- $this->assertArrayEquals( array( array( 'type' => 'error', 'message' => 'foo', 'params' => array( 1, 2 ) ) ), $status->errors );
+ $this->assertArrayEquals(
+ array(
+ array(
+ 'type' => 'error',
+ 'message' => 'foo',
+ 'params' => array( 1, 2 )
+ )
+ ),
+ $status->errors
+ );
}
/**
$setcookieInvocations = $setcookieSpy->getInvocations();
$setcookieInvocation = end( $setcookieInvocations );
- $actualExpiry = $setcookieInvocation->parameters[ 2 ];
+ $actualExpiry = $setcookieInvocation->parameters[2];
// TODO: ± 300 seconds compensates for
// slow-running tests. However, the dependency on the time
public function provideMakeForeignLink() {
return array(
'unknown' => array( false, 'xyzzy', 'Foo' ),
- 'enwiki' => array( '<a class="external" rel="nofollow" href="http://en.example.org/w/Foo">Foo</a>', 'enwiki', 'Foo', ),
+ 'enwiki' => array( '<a class="external" rel="nofollow" href="http://en.example.org/w/Foo">Foo</a>', 'enwiki', 'Foo' ),
'ruwiki' => array( '<a class="external" rel="nofollow" href="//ru.example.org/wiki/%D0%A4%D1%83">вар</a>', 'ruwiki', 'Фу', 'вар' ),
);
}
public function provideForeignUserLink() {
return array(
'unknown' => array( false, 'xyzzy', 'Foo' ),
- 'enwiki' => array( '<a class="external" rel="nofollow" href="http://en.example.org/w/User:Foo">User:Foo</a>', 'enwiki', 'Foo', ),
+ 'enwiki' => array( '<a class="external" rel="nofollow" href="http://en.example.org/w/User:Foo">User:Foo</a>', 'enwiki', 'Foo' ),
'ruwiki' => array( '<a class="external" rel="nofollow" href="//ru.example.org/wiki/User:%D0%A4%D1%83">вар</a>', 'ruwiki', 'Фу', 'вар' ),
);
}
public function provideGetForeignURL() {
return array(
'unknown' => array( false, 'xyzzy', 'Foo' ),
- 'enwiki' => array( 'http://en.example.org/w/Foo', 'enwiki', 'Foo', ),
+ 'enwiki' => array( 'http://en.example.org/w/Foo', 'enwiki', 'Foo' ),
'ruwiki with fragement' => array( '//ru.example.org/wiki/%D0%A4%D1%83#%D0%B2%D0%B0%D1%80', 'ruwiki', 'Фу', 'вар' ),
);
}
);
}
- public static function dataEquals() {
+ public static function dataEquals() {
return array(
array( new CssContent( 'hallo' ), null, false ),
array( new CssContent( 'hallo' ), new CssContent( 'hallo' ), true ),
* @covers JavaScriptContent::updateRedirect
* @dataProvider provideUpdateRedirect
*/
- public function testUpdateRedirect( $oldText, $expectedText) {
+ public function testUpdateRedirect( $oldText, $expectedText ) {
$this->setMwGlobals( array(
'wgServer' => '//example.org',
'wgScriptPath' => '/w/index.php',
$produce = $this->getMockBuilder( 'Kafka\Produce' )
->disableOriginalConstructor()
->getMock();
- $produce->expects($this->any())
- ->method('getAvailablePartitions')
- ->will($this->returnValue( array( 'A' ) ) );
- $produce->expects($this->once())
+ $produce->expects( $this->any() )
+ ->method( 'getAvailablePartitions' )
+ ->will( $this->returnValue( array( 'A' ) ) );
+ $produce->expects( $this->once() )
->method( 'setMessages' )
->with( $expect, $this->anything(), $this->anything() );
array(
'content-length' => 345,
'content-type' => 'image+bitmap/jpeg',
- 'content-disposition' => 'filename='. str_repeat( 'o', 1024 ) . ';inline',
+ 'content-disposition' => 'filename=' . str_repeat( 'o', 1024 ) . ';inline',
'content-duration' => 35.6363,
'content-custom' => 'hello',
'x-content-custom' => 'hello'
)
);
}
-}
\ No newline at end of file
+}
+
->will( $this->returnValue( '96246614d75ba1703bdfd5d7660bb57407aaf5d9' ) );
$backendMock->expects( $this->once() )
- ->method( 'getFileContentsMulti')
+ ->method( 'getFileContentsMulti' )
->will( $this->returnValue( array( $sha1Path => 'foo' ) ) );
$result = $wrapperMock->getFileContentsMulti( array( 'srcs' => array( $filenamePath ) ) );
protected function deleteFilesRecursively( $directory ) {
foreach ( glob( $directory . '/*' ) as $file ) {
- if ( is_dir( $file ) ) {
- $this->deleteFilesRecursively( $file );
- } else {
- unlink( $file );
- }
- }
-
- rmdir( $directory );
+ if ( is_dir( $file ) ) {
+ $this->deleteFilesRecursively( $file );
+ } else {
+ unlink( $file );
+ }
+ }
+
+ rmdir( $directory );
}
protected function tearDown() {
. '/'
. substr( $sha1, 2, 1 )
. '/'
- . $sha1 ;
+ . $sha1;
$this->assertEquals( file_get_contents( $expectedOriginalFilepath ), $this->text, 'New sha1 file should be exist and have the right contents' );
*/
public function testRunningStatAccuracy() {
$rstat = new RunningStat();
- foreach( $this->points as $point ) {
+ foreach ( $this->points as $point ) {
$rstat->push( $point );
}
public function testRunningStatMerge() {
$expected = new RunningStat();
- foreach( $this->points as $point ) {
+ foreach ( $this->points as $point ) {
$expected->push( $point );
}
// Accumulate the first half into one RunningStat object
$first = new RunningStat();
- foreach( $sets[0] as $point ) {
+ foreach ( $sets[0] as $point ) {
$first->push( $point );
}
// Accumulate the second half into another RunningStat object
$second = new RunningStat();
- foreach( $sets[1] as $point ) {
+ foreach ( $sets[1] as $point ) {
$second->push( $point );
}
array( "\x52\x49\x46\x46\x90\x68\x01\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x83\x68\x01\x00\x2F\x8F\x01\x4B\x10\x8D\x38\x6C\xDB\x46\x92\xE0\xE0\x82\x7B\x6C",
array( 'compression' => 'lossless', 'width' => 400, 'height' => 301 ) ),
array( "\x52\x49\x46\x46\x64\x5B\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x8F\x01\x00\x2C\x01\x00\x41\x4C\x50\x48\xE5\x0E",
- array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 400, 'height' => 301) ),
+ array( 'compression' => 'unknown', 'animated' => false, 'transparency' => true, 'width' => 400, 'height' => 301 ) ),
array( "\x52\x49\x46\x46\xA8\x72\x00\x00\x57\x45\x42\x50\x56\x50\x38\x4C\x9B\x72\x00\x00\x2F\x81\x81\x62\x10\x8D\x40\x8C\x24\x39\x6E\x73\x73\x38\x01\x96",
array( 'compression' => 'lossless', 'width' => 386, 'height' => 395 ) ),
array( "\x52\x49\x46\x46\xE0\x42\x00\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x10\x00\x00\x00\x81\x01\x00\x8A\x01\x00\x41\x4C\x50\x48\x56\x10",
array( "\x52\x49\x46\x46\x7A\x19\x03\x00\x57\x45\x42\x50\x56\x50\x38\x20\x6E\x19\x03\x00\xB2\xF8\x09\x9D\x01\x2A\x00\x05\xD0\x02\x3E\xAD\x46\x99\x4A\xA5",
array( 'compression' => 'lossy', 'width' => 1280, 'height' => 720 ) ),
array( "\x52\x49\x46\x46\x44\xB3\x02\x00\x57\x45\x42\x50\x56\x50\x38\x20\x38\xB3\x02\x00\x52\x57\x06\x9D\x01\x2A\x00\x04\x04\x03\x3E\xA5\x44\x96\x49\x26",
- array( 'compression' => 'lossy', 'width' => 1024, 'height' => 772) ),
+ array( 'compression' => 'lossy', 'width' => 1024, 'height' => 772 ) ),
array( "\x52\x49\x46\x46\x02\x43\x01\x00\x57\x45\x42\x50\x56\x50\x38\x20\xF6\x42\x01\x00\x12\xC0\x05\x9D\x01\x2A\x00\x04\xF0\x02\x3E\x79\x34\x93\x47\xA4",
- array( 'compression' => 'lossy', 'width' => 1024, 'height' => 752) ),
+ array( 'compression' => 'lossy', 'width' => 1024, 'height' => 752 ) ),
// Animated file from https://groups.google.com/a/chromium.org/d/topic/blink-dev/Y8tRC4mdQz8/discussion
array( "\x52\x49\x46\x46\xD0\x0B\x02\x00\x57\x45\x42\x50\x56\x50\x38\x58\x0A\x00\x00\x00\x12\x00\x00\x00\x3F\x01\x00\x3F\x01\x00\x41\x4E",
array(
'class' => 'ResourceLoaderImageModule',
'selectorWithoutVariant' => '.mw-ui-icon-{name}:after, .mw-ui-icon-{name}:before',
- 'selectorWithVariant' => '.mw-ui-icon-{name}-{variant}:after, .mw-ui-icon-{name}-{variant}:before',
+ 'selectorWithVariant' =>
+ '.mw-ui-icon-{name}-{variant}:after, .mw-ui-icon-{name}-{variant}:before',
'variants' => self::$commonImageVariants,
'images' => self::$commonImageData,
),
* @covers ResourceLoaderImageModule::getStyles
*/
public function testGetStyles( $module, $expected ) {
- $module = new ResourceLoaderImageModuleTestable( $module, __DIR__ . '/../../data/resourceloader' );
+ $module = new ResourceLoaderImageModuleTestable(
+ $module,
+ __DIR__ . '/../../data/resourceloader'
+ );
$styles = $module->getStyles( $this->getResourceLoaderContext() );
$this->assertEquals( $expected, $styles['all'] );
}
protected function getTestImage( $name ) {
$options = ResourceLoaderImageModuleTest::$commonImageData[$name];
$fileDescriptor = is_string( $options ) ? $options : $options['file'];
- $allowedVariants = is_array( $options ) && isset( $options['variants'] ) ? $options['variants'] : array();
+ $allowedVariants = is_array( $options ) &&
+ isset( $options['variants'] ) ? $options['variants'] : array();
$variants = array_fill_keys( $allowedVariants, array( 'color' => 'red' ) );
- return new ResourceLoaderImageTestable( $name, 'test', $fileDescriptor, $this->imagesPath, $variants );
+ return new ResourceLoaderImageTestable(
+ $name,
+ 'test',
+ $fileDescriptor,
+ $this->imagesPath,
+ $variants
+ );
}
public static function provideGetPath() {
$data = file_get_contents( $this->imagesPath . '/remove.svg' );
$dataConstructive = file_get_contents( $this->imagesPath . '/remove_variantize.svg' );
$this->assertEquals( $image->getImageData( $context, null, 'original' ), $data );
- $this->assertEquals( $image->getImageData( $context, 'destructive', 'original' ), $dataConstructive );
+ $this->assertEquals(
+ $image->getImageData( $context, 'destructive', 'original' ),
+ $dataConstructive
+ );
// Stub, since we don't know if we even have a SVG handler, much less what exactly it'll output
$this->assertEquals( $image->getImageData( $context, null, 'rasterized' ), 'RASTERIZESTUB' );
) );
$this->assertEquals(
$module->getScript( $context ),
- 'mw.log.error("JavaScript parse error: Parse error: Unexpected token; token } expected in file \'input\' on line 3");',
+ 'mw.log.error(' .
+ '"JavaScript parse error: Parse error: Unexpected token; ' .
+ 'token } expected in file \'input\' on line 3"' .
+ ');',
'Replace invalid syntax with error logging'
);
array( $params, new HashConfig( array( 'UseSiteJs' => false ) + $settings ), array(
'MediaWiki:Common.css' => array( 'type' => 'style' ),
) ),
- array( $params, new HashConfig( array( 'UseSiteJs' => false, 'UseSiteCss' => false ) ), array() ),
+ array( $params,
+ new HashConfig(
+ array( 'UseSiteJs' => false, 'UseSiteCss' => false )
+ ),
+ array()
+ ),
);
}
protected $results;
protected $suggestion;
- public function __construct( $suggestion = null, $rewrittenQuery = null, array $results = array(), $containedSyntax = false) {
+ public function __construct(
+ $suggestion = null,
+ $rewrittenQuery = null,
+ array $results = array(),
+ $containedSyntax = false
+ ) {
$this->suggestion = $suggestion;
$this->rewrittenQuery = $rewrittenQuery;
$this->results = $results;
$writer->write( $updates );
}
- static protected function mockUpdate( array $changes ) {
+ protected static function mockUpdate( array $changes ) {
static $i = 0;
return array(
'primaryKey' => array( 'event_id' => $i++ ),
$this->assertEquals( count( $response ) - 1, $pos );
}
- static public function provider_readerGetPrimaryKey() {
+ public static function provider_readerGetPrimaryKey() {
$row = array(
'id_field' => 42,
'some_col' => 'dvorak',
$this->assertEquals( $expected, $reader->extractPrimaryKeys( (object) $row ), $message );
}
- static public function provider_readerSetFetchColumns() {
+ public static function provider_readerSetFetchColumns() {
return array(
array(
$reader->rewind();
}
- static public function provider_readerSelectConditions() {
+ public static function provider_readerSelectConditions() {
return array(
array(
*/
public function testGetConfig() {
$this->assertInstanceOf( 'Config', $this->m->getConfig() );
- $this->assertSame( ConfigFactory::getDefaultInstance()->makeConfig( 'main' ), $this->m->getConfig() );
+ $this->assertSame(
+ ConfigFactory::getDefaultInstance()->makeConfig( 'main' ),
+ $this->m->getConfig()
+ );
}
/**
false, # not required
false # no arg needed
);
- $this->addOption( 'regex', 'Only run parser tests that match the given regex.', false, true );
+ $this->addOption(
+ 'regex',
+ 'Only run parser tests that match the given regex.',
+ false,
+ true
+ );
$this->addOption( 'file', 'File describing parser tests.', false, true );
$this->addOption( 'use-filebackend', 'Use filebackend', false, true );
$this->addOption( 'use-bagostuff', 'Use bagostuff', false, true );
$this->addOption( 'use-jobqueue', 'Use jobqueue', false, true );
- $this->addOption( 'keep-uploads', 'Re-use the same upload directory for each test, don\'t delete it.', false, false );
+ $this->addOption(
+ 'keep-uploads',
+ 'Re-use the same upload directory for each test, don\'t delete it.',
+ false,
+ false
+ );
$this->addOption( 'use-normal-tables', 'Use normal DB tables.', false, false );
- $this->addOption( 'reuse-db', 'Init DB only if tables are missing and keep after finish.', false, false );
+ $this->addOption(
+ 'reuse-db', 'Init DB only if tables are missing and keep after finish.',
+ false,
+ false
+ );
}
public function finalSetup() {
word: 'Wikipedia',
grammarForm: 'תחילית',
expected: '־Wikipedia',
- description: 'GAdd a hyphen (maqaf) before non-Hebrew letters'
+ description: 'Add a hyphen (maqaf) before non-Hebrew letters'
},
{
word: '1995',
try {
$thumbName = $img->thumbName( $params );
if ( !strlen( $thumbName ) ) { // invalid params?
- throw new MediaTransformInvalidParametersException( 'Empty return from File::thumbName' );
+ throw new MediaTransformInvalidParametersException(
+ 'Empty return from File::thumbName'
+ );
}
$thumbName2 = $img->thumbName( $params, File::THUMB_FULL_NAME ); // b/c; "long" style
} catch ( MediaTransformInvalidParametersException $e ) {
- wfThumbError( 400, 'The specified thumbnail parameters are not valid: ' . $e->getMessage() );
+ wfThumbError(
+ 400,
+ 'The specified thumbnail parameters are not valid: ' . $e->getMessage()
+ );
return;
} catch ( MWException $e ) {
wfThumbError( 500, $e->getHTML() );
$dispositionType = isset( $params['download'] ) ? 'attachment' : 'inline';
// Suggest a good name for users downloading this thumbnail
- $headers[] = "Content-Disposition: {$img->getThumbDisposition( $thumbName, $dispositionType )}";
+ $headers[] =
+ "Content-Disposition: {$img->getThumbDisposition( $thumbName, $dispositionType )}";
if ( count( $varyHeader ) ) {
$headers[] = 'Vary: ' . implode( ', ', $varyHeader );
$errorCode = 500;
if ( !$thumb ) {
$errorMsg = $errorMsg ?: $msg->rawParams( 'File::transform() returned false' )->escaped();
- if ( $errorMsg instanceof MessageSpecifier && $errorMsg->getKey() === 'thumbnail_image-failure-limit' ) {
+ if ( $errorMsg instanceof MessageSpecifier &&
+ $errorMsg->getKey() === 'thumbnail_image-failure-limit'
+ ) {
$errorCode = 429;
}
} elseif ( $thumb->isError() ) {
} elseif ( !$thumb->hasFile() ) {
$errorMsg = $msg->rawParams( 'No path supplied in thumbnail object' )->escaped();
} elseif ( $thumb->fileIsSource() ) {
- $errorMsg = $msg->
- rawParams( 'Image was not scaled, is the requested width bigger than the source?' )->escaped();
+ $errorMsg = $msg
+ ->rawParams( 'Image was not scaled, is the requested width bigger than the source?' )
+ ->escaped();
$errorCode = 400;
}
}
if ( $wgShowHostnames ) {
header( 'X-MW-Thumbnail-Renderer: ' . wfHostname() );
- $url = htmlspecialchars( isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : '' );
+ $url = htmlspecialchars(
+ isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] : ''
+ );
$hostname = htmlspecialchars( wfHostname() );
$debug = "<!-- $url -->\n<!-- $hostname -->\n";
} else {