* (bug 36537) Rename wfArrayToCGI to wfArrayToCgi for consistency with wfCgiToArray.
* (bug 25946) The message on the top of Special:RecentChanges is now displayed
in user language instead of content language
+* (bug 35264) Wrong type used for <ns> in export.xsd
=== API changes in 1.20 ===
* (bug 34316) Add ability to retrieve maximum upload size from MediaWiki API.
Version 0.7 adds a unique identity constraint for both page and
revision identifiers. See also bug 4220.
+ Fix type for <ns> from "positiveInteger" to "nonNegativeInteger" to allow 0
The canonical URL to the schema document is:
http://www.mediawiki.org/xml/export-0.7.xsd
<element name="title" type="string"/>
<!-- Namespace in canonical form -->
- <element name="ns" type="positiveInteger"/>
+ <element name="ns" type="nonNegativeInteger"/>
<!-- optional page ID number -->
<element name="id" type="positiveInteger" minOccurs="0"/>
'DBConnectionError' => 'includes/db/DatabaseError.php',
'DBError' => 'includes/db/DatabaseError.php',
'DBObject' => 'includes/db/DatabaseUtility.php',
+ 'IORMRow' => 'includes/db/IORMRow.php',
+ 'IORMTable' => 'includes/db/IORMTable.php',
'DBMasterPos' => 'includes/db/DatabaseUtility.php',
'DBQueryError' => 'includes/db/DatabaseError.php',
'DBUnexpectedError' => 'includes/db/DatabaseError.php',
'page_namespace',
'page_title',
'page_id',
- 'page_latest'
+ 'page_latest',
+ 'page_is_redirect',
+ 'page_len',
);
}
/**
* Get revision ID
*
- * @return Integer
+ * @return Integer|null
*/
public function getId() {
return $this->mId;
/**
* Get text row ID
*
- * @return Integer
+ * @return Integer|null
*/
public function getTextId() {
return $this->mTextId;
/**
* Returns the length of the text in this revision, or null if unknown.
*
- * @return Integer
+ * @return Integer|null
*/
public function getSize() {
return $this->mSize;
/**
* Returns the base36 sha1 of the text in this revision, or null if unknown.
*
- * @return String
+ * @return String|null
*/
public function getSha1() {
return $this->mSha1;
}
/**
- * Returns the title of the page associated with this entry.
+ * Returns the title of the page associated with this entry or null.
*
- * @return Title
+ * Will do a query, when title is not set and id is given.
+ *
+ * @return Title|null
*/
public function getTitle() {
if( isset( $this->mTitle ) ) {
return $this->mTitle;
}
- $dbr = wfGetDB( DB_SLAVE );
- $row = $dbr->selectRow(
- array( 'page', 'revision' ),
- self::selectPageFields(),
- array( 'page_id=rev_page',
- 'rev_id' => $this->mId ),
- __METHOD__ );
- if ( $row ) {
- $this->mTitle = Title::newFromRow( $row );
+ if( !is_null( $this->mId ) ) { //rev_id is defined as NOT NULL
+ $dbr = wfGetDB( DB_SLAVE );
+ $row = $dbr->selectRow(
+ array( 'page', 'revision' ),
+ self::selectPageFields(),
+ array( 'page_id=rev_page',
+ 'rev_id' => $this->mId ),
+ __METHOD__ );
+ if ( $row ) {
+ $this->mTitle = Title::newFromRow( $row );
+ }
}
return $this->mTitle;
}
/**
* Get the page ID
*
- * @return Integer
+ * @return Integer|null
*/
public function getPage() {
return $this->mPage;
}
public function getHTML() {
- $difflink = $this->getDiffLink();
+ $difflink = wfMessage( 'parentheses' )->rawParams( $this->getDiffLink() );
$revlink = $this->getRevisionLink();
$userlink = Linker::revUserLink( $this->revision );
$comment = Linker::revComment( $this->revision );
if ( $this->isDeleted() ) {
$revlink = "<span class=\"history-deleted\">$revlink</span>";
}
- return "<li>($difflink) $revlink $userlink $comment</li>";
+ return "<li>$difflink $revlink $userlink $comment</li>";
}
}
if ( !MWInit::classExists( $className ) ) {
if ( !defined( 'MW_COMPILED' ) ) {
- // Preload base classes to work around APC/PHP5 bug
- $deps = "{$wgStyleDirectory}/{$skinName}.deps.php";
- if ( file_exists( $deps ) ) {
- include_once( $deps );
- }
require_once( "{$wgStyleDirectory}/{$skinName}.php" );
}
--- /dev/null
+<?php
+/**
+ * Interface for representing objects that are stored in some DB table.
+ * This is basically an ORM-like wrapper around rows in database tables that
+ * aims to be both simple and very flexible. It is centered around an associative
+ * array of fields and various methods to do common interaction with the database.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @since 1.20
+ *
+ * @file
+ * @ingroup ORM
+ *
+ * @licence GNU GPL v2 or later
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+
+interface IORMRow {
+
+
+ /**
+ * Constructor.
+ *
+ * @since 1.20
+ *
+ * @param IORMTable $table
+ * @param array|null $fields
+ * @param boolean $loadDefaults
+ */
+ public function __construct( IORMTable $table, $fields = null, $loadDefaults = false );
+
+ /**
+ * Load the specified fields from the database.
+ *
+ * @since 1.20
+ *
+ * @param array|null $fields
+ * @param boolean $override
+ * @param boolean $skipLoaded
+ *
+ * @return bool Success indicator
+ */
+ public function loadFields( $fields = null, $override = true, $skipLoaded = false );
+
+ /**
+ * Gets the value of a field.
+ *
+ * @since 1.20
+ *
+ * @param string $name
+ * @param mixed $default
+ *
+ * @throws MWException
+ * @return mixed
+ */
+ public function getField( $name, $default = null );
+
+ /**
+ * Gets the value of a field but first loads it if not done so already.
+ *
+ * @since 1.20
+ *
+ * @param string$name
+ *
+ * @return mixed
+ */
+ public function loadAndGetField( $name );
+
+ /**
+ * Remove a field.
+ *
+ * @since 1.20
+ *
+ * @param string $name
+ */
+ public function removeField( $name );
+
+ /**
+ * Returns the objects database id.
+ *
+ * @since 1.20
+ *
+ * @return integer|null
+ */
+ public function getId();
+
+ /**
+ * Sets the objects database id.
+ *
+ * @since 1.20
+ *
+ * @param integer|null $id
+ */
+ public function setId( $id );
+
+ /**
+ * Gets if a certain field is set.
+ *
+ * @since 1.20
+ *
+ * @param string $name
+ *
+ * @return boolean
+ */
+ public function hasField( $name );
+
+ /**
+ * Gets if the id field is set.
+ *
+ * @since 1.20
+ *
+ * @return boolean
+ */
+ public function hasIdField();
+
+ /**
+ * Sets multiple fields.
+ *
+ * @since 1.20
+ *
+ * @param array $fields The fields to set
+ * @param boolean $override Override already set fields with the provided values?
+ */
+ public function setFields( array $fields, $override = true );
+
+ /**
+ * Serializes the object to an associative array which
+ * can then easily be converted into JSON or similar.
+ *
+ * @since 1.20
+ *
+ * @param null|array $fields
+ * @param boolean $incNullId
+ *
+ * @return array
+ */
+ public function toArray( $fields = null, $incNullId = false );
+
+ /**
+ * Load the default values, via getDefaults.
+ *
+ * @since 1.20
+ *
+ * @param boolean $override
+ */
+ public function loadDefaults( $override = true );
+
+ /**
+ * Writes the answer to the database, either updating it
+ * when it already exists, or inserting it when it doesn't.
+ *
+ * @since 1.20
+ *
+ * @param string|null $functionName
+ *
+ * @return boolean Success indicator
+ */
+ public function save( $functionName = null );
+
+ /**
+ * Removes the object from the database.
+ *
+ * @since 1.20
+ *
+ * @return boolean Success indicator
+ */
+ public function remove();
+
+ /**
+ * Return the names and values of the fields.
+ *
+ * @since 1.20
+ *
+ * @return array
+ */
+ public function getFields();
+
+ /**
+ * Return the names of the fields.
+ *
+ * @since 1.20
+ *
+ * @return array
+ */
+ public function getSetFieldNames();
+
+ /**
+ * Sets the value of a field.
+ * Strings can be provided for other types,
+ * so this method can be called from unserialization handlers.
+ *
+ * @since 1.20
+ *
+ * @param string $name
+ * @param mixed $value
+ *
+ * @throws MWException
+ */
+ public function setField( $name, $value );
+
+ /**
+ * Add an amount (can be negative) to the specified field (needs to be numeric).
+ * TODO: most off this stuff makes more sense in the table class
+ *
+ * @since 1.20
+ *
+ * @param string $field
+ * @param integer $amount
+ *
+ * @return boolean Success indicator
+ */
+ public function addToField( $field, $amount );
+
+ /**
+ * Return the names of the fields.
+ *
+ * @since 1.20
+ *
+ * @return array
+ */
+ public function getFieldNames();
+
+ /**
+ * Computes and updates the values of the summary fields.
+ *
+ * @since 1.20
+ *
+ * @param array|string|null $summaryFields
+ */
+ public function loadSummaryFields( $summaryFields = null );
+
+ /**
+ * Sets the value for the @see $updateSummaries field.
+ *
+ * @since 1.20
+ *
+ * @param boolean $update
+ */
+ public function setUpdateSummaries( $update );
+
+ /**
+ * Sets the value for the @see $inSummaryMode field.
+ *
+ * @since 1.20
+ *
+ * @param boolean $summaryMode
+ */
+ public function setSummaryMode( $summaryMode );
+
+ /**
+ * Returns the table this IORMRow is a row in.
+ *
+ * @since 1.20
+ *
+ * @return IORMTable
+ */
+ public function getTable();
+
+}
\ No newline at end of file
--- /dev/null
+<?php
+/**
+ * Interface for objects representing a single database table.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @since 1.20
+ *
+ * @file
+ * @ingroup ORM
+ *
+ * @licence GNU GPL v2 or later
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+
+interface IORMTable {
+
+ /**
+ * Returns the name of the database table objects of this type are stored in.
+ *
+ * @since 1.20
+ *
+ * @return string
+ */
+ public function getName();
+
+ /**
+ * Returns the name of a IORMRow implementing class that
+ * represents single rows in this table.
+ *
+ * @since 1.20
+ *
+ * @return string
+ */
+ public function getRowClass();
+
+ /**
+ * Returns an array with the fields and their types this object contains.
+ * This corresponds directly to the fields in the database, without prefix.
+ *
+ * field name => type
+ *
+ * Allowed types:
+ * * id
+ * * str
+ * * int
+ * * float
+ * * bool
+ * * array
+ * * blob
+ *
+ * @since 1.20
+ *
+ * @return array
+ */
+ public function getFields();
+
+ /**
+ * Returns a list of default field values.
+ * field name => field value
+ *
+ * @since 1.20
+ *
+ * @return array
+ */
+ public function getDefaults();
+
+ /**
+ * Returns a list of the summary fields.
+ * These are fields that cache computed values, such as the amount of linked objects of $type.
+ * This is relevant as one might not want to do actions such as log changes when these get updated.
+ *
+ * @since 1.20
+ *
+ * @return array
+ */
+ public function getSummaryFields();
+
+ /**
+ * Selects the the specified fields of the records matching the provided
+ * conditions and returns them as DBDataObject. Field names get prefixed.
+ *
+ * @since 1.20
+ *
+ * @param array|string|null $fields
+ * @param array $conditions
+ * @param array $options
+ * @param string|null $functionName
+ *
+ * @return ORMResult
+ */
+ public function select( $fields = null, array $conditions = array(),
+ array $options = array(), $functionName = null );
+
+ /**
+ * Selects the the specified fields of the records matching the provided
+ * conditions and returns them as DBDataObject. Field names get prefixed.
+ *
+ * @since 1.20
+ *
+ * @param array|string|null $fields
+ * @param array $conditions
+ * @param array $options
+ * @param string|null $functionName
+ *
+ * @return array of self
+ */
+ public function selectObjects( $fields = null, array $conditions = array(),
+ array $options = array(), $functionName = null );
+
+ /**
+ * Do the actual select.
+ *
+ * @since 1.20
+ *
+ * @param null|string|array $fields
+ * @param array $conditions
+ * @param array $options
+ * @param null|string $functionName
+ *
+ * @return ResultWrapper
+ */
+ public function rawSelect( $fields = null, array $conditions = array(),
+ array $options = array(), $functionName = null );
+
+ /**
+ * Selects the the specified fields of the records matching the provided
+ * conditions and returns them as associative arrays.
+ * Provided field names get prefixed.
+ * Returned field names will not have a prefix.
+ *
+ * When $collapse is true:
+ * If one field is selected, each item in the result array will be this field.
+ * If two fields are selected, each item in the result array will have as key
+ * the first field and as value the second field.
+ * If more then two fields are selected, each item will be an associative array.
+ *
+ * @since 1.20
+ *
+ * @param array|string|null $fields
+ * @param array $conditions
+ * @param array $options
+ * @param boolean $collapse Set to false to always return each result row as associative array.
+ * @param string|null $functionName
+ *
+ * @return array of array
+ */
+ public function selectFields( $fields = null, array $conditions = array(),
+ array $options = array(), $collapse = true, $functionName = null );
+
+ /**
+ * Selects the the specified fields of the first matching record.
+ * Field names get prefixed.
+ *
+ * @since 1.20
+ *
+ * @param array|string|null $fields
+ * @param array $conditions
+ * @param array $options
+ * @param string|null $functionName
+ *
+ * @return IORMRow|bool False on failure
+ */
+ public function selectRow( $fields = null, array $conditions = array(),
+ array $options = array(), $functionName = null );
+
+ /**
+ * Selects the the specified fields of the records matching the provided
+ * conditions. Field names do NOT get prefixed.
+ *
+ * @since 1.20
+ *
+ * @param array $fields
+ * @param array $conditions
+ * @param array $options
+ * @param string|null $functionName
+ *
+ * @return ResultWrapper
+ */
+ public function rawSelectRow( array $fields, array $conditions = array(),
+ array $options = array(), $functionName = null );
+
+ /**
+ * Selects the the specified fields of the first record matching the provided
+ * conditions and returns it as an associative array, or false when nothing matches.
+ * This method makes use of selectFields and expects the same parameters and
+ * returns the same results (if there are any, if there are none, this method returns false).
+ * @see IORMTable::selectFields
+ *
+ * @since 1.20
+ *
+ * @param array|string|null $fields
+ * @param array $conditions
+ * @param array $options
+ * @param boolean $collapse Set to false to always return each result row as associative array.
+ * @param string|null $functionName
+ *
+ * @return mixed|array|bool False on failure
+ */
+ public function selectFieldsRow( $fields = null, array $conditions = array(),
+ array $options = array(), $collapse = true, $functionName = null );
+
+ /**
+ * Returns if there is at least one record matching the provided conditions.
+ * Condition field names get prefixed.
+ *
+ * @since 1.20
+ *
+ * @param array $conditions
+ *
+ * @return boolean
+ */
+ public function has( array $conditions = array() );
+
+ /**
+ * Returns the amount of matching records.
+ * Condition field names get prefixed.
+ *
+ * Note that this can be expensive on large tables.
+ * In such cases you might want to use DatabaseBase::estimateRowCount instead.
+ *
+ * @since 1.20
+ *
+ * @param array $conditions
+ * @param array $options
+ *
+ * @return integer
+ */
+ public function count( array $conditions = array(), array $options = array() );
+
+ /**
+ * Removes the object from the database.
+ *
+ * @since 1.20
+ *
+ * @param array $conditions
+ * @param string|null $functionName
+ *
+ * @return boolean Success indicator
+ */
+ public function delete( array $conditions, $functionName = null );
+
+ /**
+ * Get API parameters for the fields supported by this object.
+ *
+ * @since 1.20
+ *
+ * @param boolean $requireParams
+ * @param boolean $setDefaults
+ *
+ * @return array
+ */
+ public function getAPIParams( $requireParams = false, $setDefaults = false );
+
+ /**
+ * Returns an array with the fields and their descriptions.
+ *
+ * field name => field description
+ *
+ * @since 1.20
+ *
+ * @return array
+ */
+ public function getFieldDescriptions();
+
+ /**
+ * Get the database type used for read operations.
+ *
+ * @since 1.20
+ *
+ * @return integer DB_ enum
+ */
+ public function getReadDb();
+
+ /**
+ * Set the database type to use for read operations.
+ *
+ * @param integer $db
+ *
+ * @since 1.20
+ */
+ public function setReadDb( $db );
+
+ /**
+ * Update the records matching the provided conditions by
+ * setting the fields that are keys in the $values param to
+ * their corresponding values.
+ *
+ * @since 1.20
+ *
+ * @param array $values
+ * @param array $conditions
+ *
+ * @return boolean Success indicator
+ */
+ public function update( array $values, array $conditions = array() );
+
+ /**
+ * Computes the values of the summary fields of the objects matching the provided conditions.
+ *
+ * @since 1.20
+ *
+ * @param array|string|null $summaryFields
+ * @param array $conditions
+ */
+ public function updateSummaryFields( $summaryFields = null, array $conditions = array() );
+
+ /**
+ * Takes in an associative array with field names as keys and
+ * their values as value. The field names are prefixed with the
+ * db field prefix.
+ *
+ * @since 1.20
+ *
+ * @param array $values
+ *
+ * @return array
+ */
+ public function getPrefixedValues( array $values );
+
+ /**
+ * Takes in a field or array of fields and returns an
+ * array with their prefixed versions, ready for db usage.
+ *
+ * @since 1.20
+ *
+ * @param array|string $fields
+ *
+ * @return array
+ */
+ public function getPrefixedFields( array $fields );
+
+ /**
+ * Takes in a field and returns an it's prefixed version, ready for db usage.
+ *
+ * @since 1.20
+ *
+ * @param string|array $field
+ *
+ * @return string
+ */
+ public function getPrefixedField( $field );
+
+ /**
+ * Takes an array of field names with prefix and returns the unprefixed equivalent.
+ *
+ * @since 1.20
+ *
+ * @param array $fieldNames
+ *
+ * @return array
+ */
+ public function unprefixFieldNames( array $fieldNames );
+
+ /**
+ * Takes a field name with prefix and returns the unprefixed equivalent.
+ *
+ * @since 1.20
+ *
+ * @param string $fieldName
+ *
+ * @return string
+ */
+ public function unprefixFieldName( $fieldName );
+
+ /**
+ * Get an instance of this class.
+ *
+ * @since 1.20
+ *
+ * @return IORMTable
+ */
+ public static function singleton();
+
+ /**
+ * Get an array with fields from a database result,
+ * that can be fed directly to the constructor or
+ * to setFields.
+ *
+ * @since 1.20
+ *
+ * @param stdClass $result
+ *
+ * @return array
+ */
+ public function getFieldsFromDBResult( stdClass $result );
+
+ /**
+ * Get a new instance of the class from a database result.
+ *
+ * @since 1.20
+ *
+ * @param stdClass $result
+ *
+ * @return IORMRow
+ */
+ public function newFromDBResult( stdClass $result );
+
+ /**
+ * Get a new instance of the class from an array.
+ *
+ * @since 1.20
+ *
+ * @param array $data
+ * @param boolean $loadDefaults
+ *
+ * @return IORMRow
+ */
+ public function newFromArray( array $data, $loadDefaults = false );
+
+ /**
+ * Return the names of the fields.
+ *
+ * @since 1.20
+ *
+ * @return array
+ */
+ public function getFieldNames();
+
+ /**
+ * Gets if the object can take a certain field.
+ *
+ * @since 1.20
+ *
+ * @param string $name
+ *
+ * @return boolean
+ */
+ public function canHaveField( $name );
+
+}
\ No newline at end of file
<?php
/**
- * Result of a ORMTable::select, which returns ORMRow objects.
+ * Result of a ORMTable::select, which returns IORMRow objects.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* @since 1.20
*
* @file ORMResult.php
+ * @ingroup ORM
*
* @licence GNU GPL v2 or later
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
protected $key;
/**
- * @var ORMRow
+ * @var IORMRow
*/
protected $current;
/**
- * @var ORMTable
+ * @var IORMTable
*/
protected $table;
/**
- * @param ORMTable $table
+ * @param IORMTable $table
* @param ResultWrapper $res
*/
- public function __construct( ORMTable $table, ResultWrapper $res ) {
+ public function __construct( IORMTable $table, ResultWrapper $res ) {
$this->table = $table;
$this->res = $res;
$this->key = 0;
}
/**
- * @return ORMRow
+ * @return IORMRow
*/
public function current() {
return $this->current;
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * These methods are likely candidates for overriding:
- * * getDefaults
- * * remove
- * * insert
- * * saveExisting
- * * loadSummaryFields
- * * getSummaryFields
- *
- * Main instance methods:
- * * getField(s)
- * * setField(s)
- * * save
- * * remove
- *
- * Main static methods:
- * * select
- * * update
- * * delete
- * * count
- * * has
- * * selectRow
- * * selectFields
- * * selectFieldsRow
- *
* @since 1.20
*
* @file ORMRow.php
+ * @ingroup ORM
*
* @licence GNU GPL v2 or later
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
*/
-abstract class ORMRow {
+abstract class ORMRow implements IORMRow {
/**
* The fields of the object.
*
* @since 1.20
*
- * @param ORMTable $table
+ * @param IORMTable $table
* @param array|null $fields
* @param boolean $loadDefaults
*/
- public function __construct( ORMTable $table, $fields = null, $loadDefaults = false ) {
+ public function __construct( IORMTable $table, $fields = null, $loadDefaults = false ) {
$this->table = $table;
if ( !is_array( $fields ) ) {
/**
* Load the default values, via getDefaults.
*
- * @since 1.20
+ * @since 1.20
*
* @param boolean $override
*/
is_null( $functionName ) ? __METHOD__ : $functionName
);
- return $success;
+ // DatabaseBase::update does not always return true for success as documented...
+ return $success !== false;
}
/**
protected function insert( $functionName = null, array $options = null ) {
$dbw = wfGetDB( DB_MASTER );
- $result = $dbw->insert(
+ $success = $dbw->insert(
$this->table->getName(),
$this->getWriteValues(),
is_null( $functionName ) ? __METHOD__ : $functionName,
is_null( $options ) ? array( 'IGNORE' ) : $options
);
- if ( $result ) {
+ // DatabaseBase::insert does not always return true for success as documented...
+ $success = $success !== false;
+
+ if ( $success ) {
$this->setField( 'id', $dbw->insertId() );
}
- return $result;
+ return $success;
}
/**
$success = $this->table->delete( array( 'id' => $this->getId() ) );
+ // DatabaseBase::delete does not always return true for success as documented...
+ $success = $success !== false;
+
if ( $success ) {
$this->onRemoved();
}
/**
* Add an amount (can be negative) to the specified field (needs to be numeric).
+ * TODO: most off this stuff makes more sense in the table class
*
* @since 1.20
*
*
* @since 1.20
*
- * @param ORMRow $object
+ * @param IORMRow $object
* @param boolean|array $excludeSummaryFields
* When set to true, summary field changes are ignored.
* Can also be an array of fields to ignore.
*
* @return boolean
*/
- protected function fieldsChanged( ORMRow $object, $excludeSummaryFields = false ) {
+ protected function fieldsChanged( IORMRow $object, $excludeSummaryFields = false ) {
$exclusionFields = array();
if ( $excludeSummaryFields !== false ) {
}
/**
- * Returns the table this ORMRow is a row in.
+ * Returns the table this IORMRow is a row in.
*
* @since 1.20
*
- * @return ORMTable
+ * @return IORMTable
*/
public function getTable() {
return $this->table;
* @since 1.20
*
* @file ORMTable.php
+ * @ingroup ORM
*
* @licence GNU GPL v2 or later
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
*/
-abstract class ORMTable {
-
- /**
- * Returns the name of the database table objects of this type are stored in.
- *
- * @since 1.20
- *
- * @return string
- */
- public abstract function getName();
-
- /**
- * Returns the name of a ORMRow deriving class that
- * represents single rows in this table.
- *
- * @since 1.20
- *
- * @return string
- */
- public abstract function getRowClass();
+abstract class ORMTable implements IORMTable {
/**
* Gets the db field prefix.
*/
protected abstract function getFieldPrefix();
- /**
- * Returns an array with the fields and their types this object contains.
- * This corresponds directly to the fields in the database, without prefix.
- *
- * field name => type
- *
- * Allowed types:
- * * id
- * * str
- * * int
- * * float
- * * bool
- * * array
- *
- * @since 1.20
- *
- * @return array
- */
- public abstract function getFields();
-
/**
* Cache for instances, used by the singleton method.
*
* @param array $options
* @param string|null $functionName
*
- * @return DBObject|bool False on failure
+ * @return IORMRow|bool False on failure
*/
public function selectRow( $fields = null, array $conditions = array(),
array $options = array(), $functionName = null ) {
$this->getName(),
$this->getPrefixedValues( $conditions ),
$functionName
- );
+ ) !== false; // DatabaseBase::delete does not always return true for success as documented...
}
/**
$this->getPrefixedValues( $values ),
$this->getPrefixedValues( $conditions ),
__METHOD__
- );
+ ) !== false; // DatabaseBase::update does not always return true for success as documented...
}
/**
public function updateSummaryFields( $summaryFields = null, array $conditions = array() ) {
$this->setReadDb( DB_MASTER );
- foreach ( $this->select( null, $conditions ) as /* ORMRow */ $item ) {
+ foreach ( $this->select( null, $conditions ) as /* IORMRow */ $item ) {
$item->loadSummaryFields( $summaryFields );
$item->setSummaryMode( true );
$item->save();
* their values as value. The field names are prefixed with the
* db field prefix.
*
- * Field names can also be provided as an array with as first element a table name, such as
- * $conditions = array(
- * array( array( 'tablename', 'fieldname' ), $value ),
- * );
- *
* @since 1.20
*
* @param array $values
*
* @since 1.20
*
- * @return ORMTable
+ * @return IORMTable
*/
public static function singleton() {
$class = function_exists( 'get_called_class' ) ? get_called_class() : self::get_called_class();
*
* @param stdClass $result
*
- * @return ORMRow
+ * @return IORMRow
*/
public function newFromDBResult( stdClass $result ) {
return $this->newFromArray( $this->getFieldsFromDBResult( $result ) );
* @param array $data
* @param boolean $loadDefaults
*
- * @return ORMRow
+ * @return IORMRow
*/
public function newFromArray( array $data, $loadDefaults = false ) {
$class = $this->getRowClass();
global $wgJobTypesExcludedFromDefaultQueue;
$conditions = array();
if ( count( $wgJobTypesExcludedFromDefaultQueue ) > 0 ) {
+ $dbr = wfGetDB( DB_SLAVE );
foreach ( $wgJobTypesExcludedFromDefaultQueue as $cmdType ) {
$conditions[] = "job_cmd != " . $dbr->addQuotes( $cmdType );
}
class LogEventsList {
const NO_ACTION_LINK = 1;
const NO_EXTRA_USER_LINKS = 2;
+ const USE_REVDEL_CHECKBOXES = 3;
/**
* @var Skin
*/
private function getShowHideLinks( $row ) {
global $wgUser;
- if( ( $this->flags & self::NO_ACTION_LINK ) // we don't want to see the links
+ if( ( $this->flags == self::NO_ACTION_LINK ) // we don't want to see the links
|| $row->log_type == 'suppress' ) { // no one can hide items from the suppress log
return '';
}
$del = '';
- // Don't show useless link to people who cannot hide revisions
+ // Don't show useless checkbox to people who cannot hide revisions
if( $wgUser->isAllowed( 'deletedhistory' ) ) {
if( $row->log_deleted || $wgUser->isAllowed( 'deleterevision' ) ) {
$canHide = $wgUser->isAllowed( 'deleterevision' );
- // If event was hidden from sysops
- if( !self::userCan( $row, LogPage::DELETED_RESTRICTED ) ) {
- $del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
+ if ( $this->flags & self::USE_REVDEL_CHECKBOXES ) { // Show checkboxes instead of links.
+ if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED ) ) { // If event was hidden from sysops
+ $del = Xml::check( 'deleterevisions', false, array( 'disabled' => 'disabled' ) );
+ } else {
+ $del = Xml::check( 'showhiderevisions', false, array( 'name' => 'ids[' . $row->log_id . ']' ) );
+ }
} else {
- $del = Xml::check( 'showhiderevisions', false, array( 'name' => 'ids[' . $row->log_id . ']' ) );
+ if ( !self::userCan( $row, LogPage::DELETED_RESTRICTED ) ) { // If event was hidden from sysops
+ $del = Linker::revDeleteLinkDisabled( $canHide );
+ } else {
+ $query = array(
+ 'target' => SpecialPage::getTitleFor( 'Log', $row->log_type )->getPrefixedDBkey(),
+ 'type' => 'logging',
+ 'ids' => $row->log_id,
+ );
+ $del = Linker::revDeleteLink( $query, self::isDeleted( $row, LogPage::DELETED_RESTRICTED ), $canHide );
+ }
}
}
}
}
public function getHTML() {
- $difflink = $this->getDiffLink();
+ $difflink = wfMessage( 'parentheses' )->rawParams( $this->getDiffLink() );
$revlink = $this->getRevisionLink();
$userlink = Linker::revUserLink( $this->revision );
$comment = Linker::revComment( $this->revision );
if ( $this->isDeleted() ) {
$revlink = "<span class=\"history-deleted\">$revlink</span>";
}
- return "<li>($difflink) $revlink $userlink $comment</li>";
+ return "<li>$difflink $revlink $userlink $comment</li>";
}
}
array(),
array( 'page' => $title->getPrefixedText() )
);
+ $loglink = wfMessage( 'parentheses' )->rawParams( $loglink );
// User links and action text
$action = $formatter->getActionText();
// Comment
$comment = '<span class="history-deleted">' . $comment . '</span>';
}
- return "<li>($loglink) $date $action $comment</li>";
+ return "<li>$loglink $date $action $comment</li>";
}
}
$dbr = wfGetDB( DB_MASTER );
$res = $dbr->select(
'watchlist',
- '*',
array(
+ 'wl_namespace', 'wl_title'
+ ), array(
'wl_user' => $this->getUser()->getId(),
),
__METHOD__
* Attempts to clean up broken items
*/
private function cleanupWatchlist() {
+ if( !count( $this->badItems ) ) {
+ return; //nothing to do
+ }
$dbw = wfGetDB( DB_MASTER );
+ $user = $this->getUser();
foreach ( $this->badItems as $row ) {
list( $title, $namespace, $dbKey ) = $row;
- wfDebug( "User {$this->getUser()} has broken watchlist item ns($namespace):$dbKey, "
+ wfDebug( "User {$user->getName()} has broken watchlist item ns($namespace):$dbKey, "
. ( $title ? 'cleaning up' : 'deleting' ) . ".\n"
);
$dbw->delete( 'watchlist',
array(
- 'wl_user' => $this->getUser()->getId(),
+ 'wl_user' => $user->getId(),
'wl_namespace' => $namespace,
'wl_title' => $dbKey,
),
// Can't just do an UPDATE instead of DELETE/INSERT due to unique index
if ( $title ) {
- $this->getUser()->addWatch( $title );
+ $user->addWatch( $title );
}
}
}
private function show( FormOptions $opts, array $extraConds ) {
# Create a LogPager item to get the results and a LogEventsList item to format them...
- $loglist = new LogEventsList( $this->getSkin(), $this->getOutput(), 0 );
+ $loglist = new LogEventsList( $this->getSkin(), $this->getOutput(), LogEventsList::USE_REVDEL_CHECKBOXES );
$pager = new LogPager( $loglist, $opts->getValue( 'type' ), $opts->getValue( 'user' ),
$opts->getValue( 'page' ), $opts->getValue( 'pattern' ), $extraConds, $opts->getValue( 'year' ),
$opts->getValue( 'month' ), $opts->getValue( 'tagfilter' ) );
}
$comment = Linker::revComment( $rev );
- return "<li>$checkBox ($last) $pageLink . . $userLink $stxt $comment</li>";
+ $revisionRow = $this->msg( 'mergehistory-revisionrow' )->rawParams( $checkBox, $last, $pageLink, $userLink, $stxt, $comment)->escaped();
+ $revisionRow .= "<li>" . $line . "</li>";
+
+ return $revisionRow;
}
function merge() {
}
if ( !defined( 'MW_COMPILED' ) ) {
- // Preload base classes to work around APC/PHP5 bug
- if ( file_exists( "$IP/languages/classes/$class.deps.php" ) ) {
- include_once( "$IP/languages/classes/$class.deps.php" );
- }
if ( file_exists( "$IP/languages/classes/$class.php" ) ) {
include_once( "$IP/languages/classes/$class.php" );
}
$mwNames = $wgExtraLanguageNames + $coreLanguageNames;
foreach ( $mwNames as $mwCode => $mwName ) {
# - Prefer own MediaWiki native name when not using the hook
- # TODO: prefer it always to make it consistent, but casing is different in CLDR
# - For other names just add if not added through the hook
- if ( ( $mwCode === $inLanguage && !$inLanguage ) || !isset( $names[$mwCode] ) ) {
+ if ( $mwCode === $inLanguage || !isset( $names[$mwCode] ) ) {
$names[$mwCode] = $mwName;
}
}
return $s;
}
- $isutf8 = preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
- '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
+ if ( function_exists( 'mb_check_encoding' ) ) {
+ $isutf8 = mb_check_encoding( $s, 'UTF-8' );
+ } else {
+ $isutf8 = preg_match( '/^(?>[\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
+ }
if ( $isutf8 ) {
return $s;
}
'aln' => 'Gegë', # Gheg Albanian
'als' => 'Alemannisch', # Alemannic -- not a valid code, for compatibility. See gsw.
'am' => 'አማርኛ', # Amharic
- 'an' => 'Aragonés', # Aragonese
+ 'an' => 'aragonés', # Aragonese
'ang' => 'Ænglisc', # Old English (Bug 23283)
'anp' => 'अङ्गिका', # Angika
'ar' => 'العربية', # Arabic
'arc' => 'ܐܪܡܝܐ', # Aramaic
- 'arn' => 'Mapudungun', # Mapuche, Mapudungu, Araucanian (Araucano)
+ 'arn' => 'mapudungun', # Mapuche, Mapudungu, Araucanian (Araucano)
'ary' => 'Maġribi', # Moroccan Spoken Arabic
'arz' => 'مصرى', # Egyptian Spoken Arabic
'as' => 'অসমীয়া', # Assamese
- 'ast' => 'Asturianu', # Asturian
+ 'ast' => 'asturianu', # Asturian
'av' => 'Авар', # Avar
'avk' => 'Kotava', # Kotava
'ay' => 'Aymar aru', # Aymara
- 'az' => 'Azərbaycanca', # Azerbaijani
+ 'az' => 'azərbaycanca', # Azerbaijani
'ba' => 'Башҡортса', # Bashkir
'bar' => 'Boarisch', # Bavarian (Austro-Bavarian and South Tyrolean)
'bat-smg' => 'Žemaitėška', # Samogitian (deprecated code, 'sgs' in ISO 693-3 since 2010-06-30 )
'bcc' => 'بلوچی مکرانی', # Southern Balochi
'bcl' => 'Bikol Central', # Bikol: Central Bicolano language
- 'be' => 'Ð\91еларуская', # Belarusian normative
+ 'be' => 'беларуская', # Belarusian normative
'be-tarask' => "\xE2\x80\xAAБеларуская (тарашкевіца)\xE2\x80\xAC", # Belarusian in Taraskievica orthography
'be-x-old' => "\xE2\x80\xAAБеларуская (тарашкевіца)\xE2\x80\xAC", # Belarusian in Taraskievica orthography; compat link
- 'bg' => 'Ð\91ългарски', # Bulgarian
+ 'bg' => 'български', # Bulgarian
'bh' => 'भोजपुरी', # Bihari macro language. Falls back to Bhojpuri (bho). The name actually says "Bhojpuri".
'bho' => 'भोजपुरी', # Bhojpuri
'bi' => 'Bislama', # Bislama
'bjn' => 'Bahasa Banjar', # Banjarese
- 'bm' => 'Bamanankan', # Bambara
+ 'bm' => 'bamanankan', # Bambara
'bn' => 'বাংলা', # Bengali
'bo' => 'བོད་ཡིག', # Tibetan
'bpy' => 'বিষ্ণুপ্রিয়া মণিপুরী', # Bishnupriya Manipuri
'bqi' => 'بختياري', # Bakthiari
- 'br' => 'Brezhoneg', # Breton
+ 'br' => 'brezhoneg', # Breton
'brh' => 'Bráhuí', # Brahui
- 'bs' => 'Bosanski', # Bosnian
+ 'bs' => 'bosanski', # Bosnian
'bug' => 'ᨅᨔ ᨕᨘᨁᨗ', # Buginese
'bxr' => 'Буряад', # Buryat (Russia)
- 'ca' => 'Català', # Catalan
+ 'ca' => 'català', # Catalan
'cbk-zam' => 'Chavacano de Zamboanga', # Zamboanga Chavacano
'cdo' => 'Mìng-dĕ̤ng-ngṳ̄', # Min Dong
'ce' => 'Нохчийн', # Chechen
'chr' => 'ᏣᎳᎩ', # Cherokee
'chy' => 'Tsetsêhestâhese', # Cheyenne
'ckb' => 'کوردی', # Sorani. The name actually says "Kurdi" (Kurdish).
- 'co' => 'Corsu', # Corsican
+ 'co' => 'corsu', # Corsican
'cps' => 'Capiceño', # Capiznon
'cr' => 'Nēhiyawēwin / ᓀᐦᐃᔭᐍᐏᐣ', # Cree
'crh' => 'Qırımtatarca', # Crimean Tatar (multiple scripts - defaults to Latin)
'crh-latn' => "\xE2\x80\xAAQırımtatarca (Latin)\xE2\x80\xAC", # Crimean Tatar (Latin)
'crh-cyrl' => "\xE2\x80\xAAКъырымтатарджа (Кирилл)\xE2\x80\xAC", # Crimean Tatar (Cyrillic)
- 'cs' => 'Ä\8cesky', # Czech
+ 'cs' => 'Ä\8desky', # Czech
'csb' => 'Kaszëbsczi', # Cassubian
'cu' => 'Словѣ́ньскъ / ⰔⰎⰑⰂⰡⰐⰠⰔⰍⰟ', # Old Church Slavonic (ancient language)
'cv' => 'Чӑвашла', # Chuvash
'cy' => 'Cymraeg', # Welsh
- 'da' => 'Dansk', # Danish
+ 'da' => 'dansk', # Danish
'de' => 'Deutsch', # German ("Du")
'de-at' => 'Österreichisches Deutsch', # Austrian German
'de-ch' => 'Schweizer Hochdeutsch', # Swiss Standard German
'dtp' => 'Dusun Bundu-liwan', # Central Dusun
'dv' => 'ދިވެހިބަސް', # Dhivehi
'dz' => 'ཇོང་ཁ', # Dzongkha (Bhutan)
- 'ee' => 'Eʋegbe', # Éwé
+ 'ee' => 'eʋegbe', # Éwé
'el' => 'Ελληνικά', # Greek
- 'eml' => 'Emiliàn e rumagnòl', # Emiliano-Romagnolo / Sammarinese
+ 'eml' => 'emiliàn e rumagnòl', # Emiliano-Romagnolo / Sammarinese
'en' => 'English', # English
'en-ca' => 'Canadian English', # Canadian English
'en-gb' => 'British English', # British English
'eo' => 'Esperanto', # Esperanto
- 'es' => 'Español', # Spanish
- 'et' => 'Eesti', # Estonian
- 'eu' => 'Euskara', # Basque
- 'ext' => 'Estremeñu', # Extremaduran
+ 'es' => 'español', # Spanish
+ 'et' => 'eesti', # Estonian
+ 'eu' => 'euskara', # Basque
+ 'ext' => 'estremeñu', # Extremaduran
'fa' => 'فارسی', # Persian
'ff' => 'Fulfulde', # Fulfulde, Maasina
- 'fi' => 'Suomi', # Finnish
- 'fit' => 'Meänkieli', # Tornedalen Finnish
+ 'fi' => 'suomi', # Finnish
+ 'fit' => 'meänkieli', # Tornedalen Finnish
'fiu-vro' => 'Võro', # Võro (deprecated code, 'vro' in ISO 639-3 since 2009-01-16)
'fj' => 'Na Vosa Vakaviti', # Fijian
- 'fo' => 'Føroyskt', # Faroese
- 'fr' => 'Français', # French
- 'frc' => 'Français cadien', # Cajun French
- 'frp' => 'Arpetan', # Franco-Provençal/Arpitan
+ 'fo' => 'føroyskt', # Faroese
+ 'fr' => 'français', # French
+ 'frc' => 'français cadien', # Cajun French
+ 'frp' => 'arpetan', # Franco-Provençal/Arpitan
'frr' => 'Nordfriisk', # North Frisian
- 'fur' => 'Furlan', # Friulian
+ 'fur' => 'furlan', # Friulian
'fy' => 'Frysk', # Frisian
'ga' => 'Gaeilge', # Irish
'gag' => 'Gagauz', # Gagauz
'gan-hans' => "\xE2\x80\xAA赣语(简体)\xE2\x80\xAC", # Gan (Simplified Han)
'gan-hant' => "\xE2\x80\xAA贛語(繁體)\xE2\x80\xAC", # Gan (Traditional Han)
'gd' => 'Gàidhlig', # Scots Gaelic
- 'gl' => 'Galego', # Galician
+ 'gl' => 'galego', # Galician
'glk' => 'گیلکی', # Gilaki
'gn' => 'Avañe\'ẽ', # Guaraní, Paraguayan
'got' => '𐌲𐌿𐍄𐌹𐍃𐌺', # Gothic
'hif-latn' => 'Fiji Hindi', # Fiji Hindi (latin)
'hil' => 'Ilonggo', # Hiligaynon
'ho' => 'Hiri Motu', # Hiri Motu
- 'hr' => 'Hrvatski', # Croatian
+ 'hr' => 'hrvatski', # Croatian
'hsb' => 'Hornjoserbsce', # Upper Sorbian
'ht' => 'Kreyòl ayisyen', # Haitian Creole French
- 'hu' => 'Magyar', # Hungarian
+ 'hu' => 'magyar', # Hungarian
'hy' => 'Հայերեն', # Armenian
'hz' => 'Otsiherero', # Herero
- 'ia' => 'Interlingua', # Interlingua (IALA)
+ 'ia' => 'interlingua', # Interlingua (IALA)
'id' => 'Bahasa Indonesia', # Indonesian
'ie' => 'Interlingue', # Interlingue (Occidental)
'ig' => 'Igbo', # Igbo
'ii' => 'ꆇꉙ', # Sichuan Yi
'ik' => 'Iñupiak', # Inupiak (Inupiatun, Northwest Alaska / Inupiatun, North Alaskan)
'ike-cans' => 'ᐃᓄᒃᑎᑐᑦ', # Inuktitut, Eastern Canadian/Eastern Canadian "Eskimo"/"Eastern Arctic Eskimo"/Inuit (Unified Canadian Aboriginal Syllabics)
- 'ike-latn' => 'Inuktitut', # Inuktitut, Eastern Canadian (Latin script)
+ 'ike-latn' => 'inuktitut', # Inuktitut, Eastern Canadian (Latin script)
'ilo' => 'Ilokano', # Ilokano
'inh' => 'ГӀалгӀай', # Ingush
'io' => 'Ido', # Ido
- 'is' => 'Ã\8dslenska', # Icelandic
- 'it' => 'Italiano', # Italian
+ 'is' => 'Ãslenska', # Icelandic
+ 'it' => 'italiano', # Italian
'iu' => 'ᐃᓄᒃᑎᑐᑦ/inuktitut', # Inuktitut (macro language - do no localise, see ike/ikt - falls back to ike-cans)
'ja' => '日本語', # Japanese
'jam' => 'Patois', # Jamaican Creole English
'jbo' => 'Lojban', # Lojban
- 'jut' => 'Jysk', # Jutish / Jutlandic
+ 'jut' => 'jysk', # Jutish / Jutlandic
'jv' => 'Basa Jawa', # Javanese
'ka' => 'ქართული', # Georgian
'kaa' => 'Qaraqalpaqsha', # Karakalpak
'kk-cn' => "\xE2\x80\xABقازاقشا (جۇنگو)\xE2\x80\xAC", # Kazakh (China)
'kk-kz' => "\xE2\x80\xAAҚазақша (Қазақстан)\xE2\x80\xAC", # Kazakh (Kazakhstan)
'kk-tr' => "\xE2\x80\xAAQazaqşa (Türkïya)\xE2\x80\xAC", # Kazakh (Turkey)
- 'kl' => 'Kalaallisut', # Inuktitut, Greenlandic/Greenlandic/Kalaallisut (kal)
+ 'kl' => 'kalaallisut', # Inuktitut, Greenlandic/Greenlandic/Kalaallisut (kal)
'km' => 'ភាសាខ្មែរ', # Khmer, Central
'kn' => 'ಕನ್ನಡ', # Kannada
'ko' => '한국어', # Korean
'ku-latn' => "\xE2\x80\xAAKurdî (latînî)\xE2\x80\xAC", # Northern Kurdish (Latin script)
'ku-arab' => "\xE2\x80\xABكوردي (عەرەبی)\xE2\x80\xAC", # Northern Kurdish (Arabic script) (falls back to ckb)
'kv' => 'Коми', # Komi-Zyrian (Cyrillic is common script but also written in Latin script)
- 'kw' => 'Kernowek', # Cornish
+ 'kw' => 'kernowek', # Cornish
'ky' => 'Кыргызча', # Kirghiz
'la' => 'Latina', # Latin
'lad' => 'Ladino', # Ladino
'li' => 'Limburgs', # Limburgian
'lij' => 'Ligure', # Ligurian
'liv' => 'Līvõ kēļ', # Livonian
- 'lmo' => 'Lumbaart', # Lombard
- 'ln' => 'Lingála', # Lingala
+ 'lmo' => 'lumbaart', # Lombard
+ 'ln' => 'lingála', # Lingala
'lo' => 'ລາວ',# Laotian
'loz' => 'Silozi', # Lozi
- 'lt' => 'Lietuvių', # Lithuanian
- 'ltg' => 'Latgaļu', # Latgalian
+ 'lt' => 'lietuvių', # Lithuanian
+ 'ltg' => 'latgaļu', # Latgalian
'lus' => 'Mizo ţawng', # Mizo/Lushai
- 'lv' => 'Latviešu', # Latvian
+ 'lv' => 'latviešu', # Latvian
'lzh' => '文言', # Literary Chinese -- (bug 8217) lzh instead of zh-classical, http://www.sil.org/iso639-3/codes.asp?order=639_3&letter=l
'lzz' => 'Lazuri', # Laz
'mai' => 'मैथिली', # Maithili
'mhr' => 'Олык Марий', # Eastern Mari
'mi' => 'Māori', # Maori
'min' => 'Baso Minangkabau', # Minangkabau
- 'mk' => 'Ð\9cакедонски', # Macedonian
+ 'mk' => 'македонски', # Macedonian
'ml' => 'മലയാളം', # Malayalam
- 'mn' => 'Ð\9cонгол', # Halh Mongolian (Cyrillic) (ISO 639-3: khk)
- 'mo' => 'Ð\9cолдовеняскэ', # Moldovan, deprecated
+ 'mn' => 'монгол', # Halh Mongolian (Cyrillic) (ISO 639-3: khk)
+ 'mo' => 'молдовеняскэ', # Moldovan, deprecated
'mr' => 'मराठी', # Marathi
'mrj' => 'Кырык мары', # Hill Mari
'ms' => 'Bahasa Melayu', # Malay
'nah' => 'Nāhuatl', # Nahuatl, en:Wikipedia writes Nahuatlahtolli, while another form is Náhuatl
'nan' => 'Bân-lâm-gú', # Min-nan -- (bug 8217) nan instead of zh-min-nan, http://www.sil.org/iso639-3/codes.asp?order=639_3&letter=n
'nap' => 'Nnapulitano', # Neapolitan
- 'nb' => "\xE2\x80\xAANorsk (bokmål)\xE2\x80\xAC", # Norwegian (Bokmal)
+ 'nb' => "\xE2\x80\xAAnorsk (bokmål)\xE2\x80\xAC", # Norwegian (Bokmal)
'nds' => 'Plattdüütsch', # Low German ''or'' Low Saxon
'nds-nl' => 'Nedersaksisch', # Dutch Low Saxon
'ne' => 'नेपाली', # Nepali
'niu' => 'Niuē', # Niuean
'nl' => 'Nederlands', # Dutch
'nl-informal' => "\xE2\x80\xAANederlands (informeel)\xE2\x80\xAC", # Dutch (informal address ("je"))
- 'nn' => "\xE2\x80\xAANorsk (nynorsk)\xE2\x80\xAC", # Norwegian (Nynorsk)
- 'no' => "\xE2\x80\xAANorsk (bokmål)\xE2\x80\xAC", # Norwegian (falls back to nb).
+ 'nn' => "\xE2\x80\xAAnorsk (nynorsk)\xE2\x80\xAC", # Norwegian (Nynorsk)
+ 'no' => "\xE2\x80\xAAnorsk (bokmål)\xE2\x80\xAC", # Norwegian (falls back to nb).
'nov' => 'Novial', # Novial
'nrm' => 'Nouormand', # Norman
'nso' => 'Sesotho sa Leboa', # Northern Sotho
'nv' => 'Diné bizaad', # Navajo
'ny' => 'Chi-Chewa', # Chichewa
- 'oc' => 'Occitan', # Occitan
+ 'oc' => 'occitan', # Occitan
'om' => 'Oromoo', # Oromo
'or' => 'ଓଡ଼ିଆ', # Oriya
'os' => 'Ирон', # Ossetic -- fixed per bug 29091
'pfl' => 'Pälzisch', # Palatinate German
'pi' => 'पाळि', # Pali
'pih' => 'Norfuk / Pitkern', # Norfuk/Pitcairn/Norfolk
- 'pl' => 'Polski', # Polish
+ 'pl' => 'polski', # Polish
'pms' => 'Piemontèis', # Piedmontese
'pnb' => 'پنجابی', # Western Punjabi
'pnt' => 'Ποντιακά', # Pontic/Pontic Greek
'prg' => 'Prūsiskan', # Prussian
'ps' => 'پښتو', # Pashto, Northern/Paktu/Pakhtu/Pakhtoo/Afghan/Pakhto/Pashtu/Pushto/Yusufzai Pashto
- 'pt' => 'Português', # Portuguese
- 'pt-br' => 'Português do Brasil', # Brazilian Portuguese
+ 'pt' => 'português', # Portuguese
+ 'pt-br' => 'português do Brasil', # Brazilian Portuguese
'qu' => 'Runa Simi', # Southern Quechua
'qug' => 'Runa shimi', # Kichwa/Northern Quechua (one of the codes it covers; temporarily used until Kichwa has its own)
'rgn' => 'Rumagnôl', # Romagnol
'rif' => 'Tarifit', # Tarifit
- 'rm' => 'Rumantsch', # Raeto-Romance
+ 'rm' => 'rumantsch', # Raeto-Romance
'rmy' => 'Romani', # Vlax Romany
'rn' => 'Kirundi', # Rundi/Kirundi/Urundi
- 'ro' => 'Română', # Romanian
+ 'ro' => 'română', # Romanian
'roa-rup' => 'Armãneashce', # Aromanian (deprecated code, 'rup' exists in ISO 693-3)
- 'roa-tara' => 'Tarandíne', # Tarantino
- 'ru' => 'Русский', # Russian
+ 'roa-tara' => 'tarandíne', # Tarantino
+ 'ru' => 'русский', # Russian
'rue' => 'Русиньскый', # Rusyn
'rup' => 'Armãneashce', # Aromanian
'ruq' => 'Vlăheşte', # Megleno-Romanian (multiple scripts - defaults to Latin)
'ruq-latn' => 'Vlăheşte', # Megleno-Romanian (Latin script)
'rw' => 'Kinyarwanda', # Kinyarwanda, should possibly be Kinyarwandi
'sa' => 'संस्कृतम्', # Sanskrit
- 'sah' => 'Саха тыла', # Sakha
+ 'sah' => 'саха тыла', # Sakha
'sat' => 'Santali', # Santali
- 'sc' => 'Sardu', # Sardinian
- 'scn' => 'Sicilianu', # Sicilian
+ 'sc' => 'sardu', # Sardinian
+ 'scn' => 'sicilianu', # Sicilian
'sco' => 'Scots', # Scots
'sd' => 'سنڌي', # Sindhi
'sdc' => 'Sassaresu', # Sassarese
- 'se' => 'Sámegiella', # Northern Sami
+ 'se' => 'sámegiella', # Northern Sami
'sei' => 'Cmique Itom', # Seri
'sg' => 'Sängö', # Sango/Sangho
'sgs' => 'Žemaitėška', # Samogitian
- 'sh' => 'Srpskohrvatski / Српскохрватски', # Serbocroatian
+ 'sh' => 'srpskohrvatski / српскохрватски', # Serbocroatian
'shi' => 'Tašlḥiyt/ⵜⴰⵛⵍⵃⵉⵜ', # Tachelhit (multiple scripts - defaults to Latin)
'shi-tfng' => 'ⵜⴰⵛⵍⵃⵉⵜ', # Tachelhit (Tifinagh script)
'shi-latn' => 'Tašlḥiyt', # Tachelhit (Latin script)
'si' => 'සිංහල', # Sinhalese
'simple' => 'Simple English', # Simple English
- 'sk' => 'Slovenčina', # Slovak
- 'sl' => 'Slovenščina', # Slovenian
+ 'sk' => 'slovenčina', # Slovak
+ 'sl' => 'slovenščina', # Slovenian
'sli' => 'Schläsch', # Lower Selisian
'sm' => 'Gagana Samoa', # Samoan
'sma' => 'Åarjelsaemien', # Southern Sami
'sn' => 'chiShona', # Shona
'so' => 'Soomaaliga', # Somali
- 'sq' => 'Shqip', # Albanian
- 'sr' => 'Српски / Srpski', # Serbian (multiple scripts - defaults to Cyrillic)
- 'sr-ec' => "\xE2\x80\xAAСрпски (ћирилица)\xE2\x80\xAC", # Serbian Cyrillic ekavian
- 'sr-el' => "\xE2\x80\xAASrpski (latinica)\xE2\x80\xAC", # Serbian Latin ekavian
+ 'sq' => 'shqip', # Albanian
+ 'sr' => 'српски / srpski', # Serbian (multiple scripts - defaults to Cyrillic)
+ 'sr-ec' => "\xE2\x80\xAAсрпски (ћирилица)\xE2\x80\xAC", # Serbian Cyrillic ekavian
+ 'sr-el' => "\xE2\x80\xAAsrpski (latinica)\xE2\x80\xAC", # Serbian Latin ekavian
'srn' => 'Sranantongo', # Sranan Tongo
'ss' => 'SiSwati', # Swati
'st' => 'Sesotho', # Southern Sotho
'stq' => 'Seeltersk', # Saterland Frisian
'su' => 'Basa Sunda', # Sundanese
- 'sv' => 'Svenska', # Swedish
+ 'sv' => 'svenska', # Swedish
'sw' => 'Kiswahili', # Swahili
'szl' => 'Ślůnski', # Silesian
'ta' => 'தமிழ்', # Tamil
'tcy' => 'ತುಳು', # Tulu
'te' => 'తెలుగు', # Telugu
- 'tet' => 'Tetun', # Tetun
- 'tg' => 'Тоҷикӣ', # Tajiki (falls back to tg-cyrl)
- 'tg-cyrl' => 'Тоҷикӣ', # Tajiki (Cyrllic script) (default)
- 'tg-latn' => 'Tojikī', # Tajiki (Latin script)
+ 'tet' => 'tetun', # Tetun
+ 'tg' => 'тоҷикӣ', # Tajiki (falls back to tg-cyrl)
+ 'tg-cyrl' => 'тоҷикӣ', # Tajiki (Cyrllic script) (default)
+ 'tg-latn' => 'tojikī', # Tajiki (Latin script)
'th' => 'ไทย', # Thai
'ti' => 'ትግርኛ', # Tigrinya
'tk' => 'Türkmençe', # Turkmen
'tl' => 'Tagalog', # Tagalog
- 'tly' => 'Толышә зывон', # Talysh
+ 'tly' => 'толышә зывон', # Talysh
'tn' => 'Setswana', # Setswana
'to' => 'lea faka-Tonga', # Tonga (Tonga Islands)
'tokipona' => 'Toki Pona', # Toki Pona
'tpi' => 'Tok Pisin', # Tok Pisin
'tr' => 'Türkçe', # Turkish
'ts' => 'Xitsonga', # Tsonga
- 'tt' => 'Татарча/Tatarça', # Tatar (multiple scripts - defaults to Cyrillic)
- 'tt-cyrl' => 'Татарча', # Tatar (Cyrillic script) (default)
- 'tt-latn' => 'Tatarça', # Tatar (Latin script)
+ 'tt' => 'татарча/tatarça', # Tatar (multiple scripts - defaults to Cyrillic)
+ 'tt-cyrl' => 'татарча', # Tatar (Cyrillic script) (default)
+ 'tt-latn' => 'tatarça', # Tatar (Latin script)
'tum' => 'chiTumbuka', # Tumbuka
'tw' => 'Twi', # Twi, (FIXME!)
'ty' => 'Reo Mā`ohi', # Tahitian
'ug' => 'ئۇيغۇرچە / Uyghurche', # Uyghur (multiple scripts - defaults to Arabic)
'ug-arab' => 'ئۇيغۇرچە', # Uyghur (Arabic script) (default)
'ug-latn' => 'Uyghurche', # Uyghur (Latin script)
- 'uk' => 'Українська', # Ukrainian
+ 'uk' => 'українська', # Ukrainian
'ur' => 'اردو', # Urdu
'uz' => 'Oʻzbek', # Uzbek
've' => 'Tshivenda', # Venda
- 'vec' => 'Vèneto', # Venetian
+ 'vec' => 'vèneto', # Venetian
'vep' => 'Vepsän kel’', # Veps
'vi' => 'Tiếng Việt', # Vietnamese
'vls' => 'West-Vlams', # West Flemish
'vo' => 'Volapük', # Volapük
'vot' => 'Vaďďa', # Vod/Votian
'vro' => 'Võro', # Võro
- 'wa' => 'Walon', # Walloon
+ 'wa' => 'walon', # Walloon
'war' => 'Winaray', # Waray-Waray
'wo' => 'Wolof', # Wolof
'wuu' => '吴语', # Wu Chinese
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageIu.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
-
-require_once( dirname(__FILE__).'/../LanguageConverter.php' );
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageKk.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
-require_once( dirname( __FILE__ ) . '/LanguageKk_cyrl.php' );
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageKu.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
-require_once( dirname( __FILE__ ) . '/LanguageKu_ku.php' );
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageIu.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
-
-require_once( dirname(__FILE__).'/../LanguageConverter.php' );
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageSr.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-require_once( dirname( __FILE__ ) . '/LanguageSr_ec.php' );
-require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// LanguageZh.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-require_once( dirname( __FILE__ ) . '/LanguageZh_hans.php' );
-require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
'hidden-categories' => '{{PLURAL:$1|Kawan teusom|Kawan teusom}}',
'category-subcat-count' => '{{PLURAL:$2|Kawan nyoë cit na saboh yupkawan nyoë.|Kawan nyoë na {{PLURAL:$1|yupkawan|$1 yupkawan}} nyoë, dari ban dum $2.}}',
'category-article-count' => '{{PLURAL:$2|Kawan nyoë cit na saboh ôn nyoë.|Kawan nyoë na {{PLURAL:$1|ôn|$1 ôn }}, dari ban dum $2.}}',
+'category-file-count' => '{{PLURAL:$2|Kawan nyoe cit na beureukaih nyoe sagay.|{{PLURAL:$1|beureukaih|$1 beureukaih}} nyoe na lam kawan nyoe, nibak ban dum $2.}}',
'listingcontinuesabbrev' => 'samb.',
'noindex-category' => 'On nyang hana geuindex',
'createaccount' => 'Peudapeuta nan barô',
'gotaccount' => "Ka lheuëh neudapeuta? '''$1'''.",
'gotaccountlink' => 'Tamong',
+'userlogin-resetlink' => 'Tuwoe-neuh ngon teuneurang tamong Droeneuh?',
'loginsuccesstitle' => 'Meuhasé tamong',
'loginsuccess' => "'''Droëneuh jinoë ka neutamong di {{SITENAME}} sibagoë \"\$1\".'''",
'nosuchuser' => 'Hana ureuëng nguy ngön nan "$1".
'searchprofile-everything-tooltip' => 'Mita ban dum ôn asoë (rôh ôn marit)',
'searchprofile-advanced-tooltip' => 'Mita bak ruweueng nan meupat-pat',
'search-result-size' => '$1 ({{PLURAL:$2|1 kata|$2 kata}})',
+'search-result-category-size' => '{{PLURAL:$1|1 anggeeta|$1 anggeeta}} ({{PLURAL:$2|1 aneuk kawan|$2 aneuk kawan}}, {{PLURAL:$3|1 beureukaih|$3 beureukaih}})',
'search-redirect' => '(peuninah $1)',
'search-section' => '(bagian $1)',
'search-suggest' => 'Kadang meukeusud Droëneuh nakeuh: $1',
'yourrealname' => 'Nan aseuli:',
'prefs-help-realname' => '* Nan aseuli hana meucéh neupasoë.
Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë nyang tuléh.',
+'prefs-help-email' => 'Alamat surat-e hana meuceh na, tapi geupeureulee keu peugot ulang lageuem, meunyo droeneuh tuwoe lageuem.',
+'prefs-help-email-others' => "Droeneuh jeuet cit neupileh neupubiyeue ureueng la'en geupeu'et surat keu droeneuh rot surat-e rot seunambat bak on ureueng nguy atawa on marit.
+Surat-e droeneuh h'an geupeugah keu ureueng nyan.",
# Groups
'group-sysop' => 'Ureuëng urôh',
'deadendpages' => 'Ôn buntu',
'protectedpages' => 'Ôn nyang geulindông',
'listusers' => 'Dapeuta ureuëng nguy',
+'usercreated' => '{{GENDER:$3|Geupeugot}} bak $1 poh $2',
'newpages' => 'Ôn barô',
'ancientpages' => 'Teunuléh away',
'move' => 'Peupinah',
'sp-contributions-talk' => 'marit',
'sp-contributions-search' => 'Mita soë nyang tuléh',
'sp-contributions-username' => 'Alamat IP atawa nan ureuëng nguy:',
+'sp-contributions-toponly' => 'Peuleumah geunantoe nyang baro mantong',
'sp-contributions-submit' => 'Mita',
# What links here
'watchlisttools-edit' => 'Peuleumah ngön andam dapeuta kaeunalön',
'watchlisttools-raw' => 'Andam dapeuta keunalön meuntah',
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'Ingat:\'\'\' Gunci meuurot pukok "$2" jipeuhiro gunci meuurot pukok "$1" sigohlomjih.',
+
# Special:Version
'version' => 'Curak',
'mergelogpagetext' => "Hieronder is 'n lys van die mees onlangse versmeltings van een bladsy se geskiedenis na 'n ander.",
# Diffs
-'history-title' => 'Weergawegeskiedenis van "$1"',
+'history-title' => '$1: weergawegeskiedenis',
'difference-title' => '$1: verskil tussen weergawes',
'difference-title-multipage' => '$1 en $2: verskil tussen bladsye',
'difference-multipage' => '(Verskil tussen bladsye)',
'node-count-exceeded-warning' => 'تجاوزت هذه الصفحة تعداد العقد',
'expansion-depth-exceeded-category' => 'الصفحات التي حدث فيها تجاوز عمق التوسيع',
'expansion-depth-exceeded-warning' => 'الصفحة تجاوزت عمق التوسيع',
+'parser-unstrip-loop-warning' => 'حلقة معراة تم الكشف عنها',
# "Undo" feature
'undo-success' => 'يمكن استرجاع التعديل.
'mergelogpagetext' => "Abaxo amuésase una llista de les fusiones más recientes d'un historial de páxina con otru.",
# Diffs
-'history-title' => 'Historial de revisiones de "$1"',
-'difference-title' => 'Diferencia ente revisiones de «$1»',
-'difference-title-multipage' => 'Diferencia ente les páxines «$1» y «$2»',
+'history-title' => 'Historial de revisiones de «$1»',
+'difference-title' => 'Diferencies ente revisiones de «$1»',
+'difference-title-multipage' => 'Diferencies ente les páxines «$1» y «$2»',
'difference-multipage' => '(Diferencia ente páxines)',
'lineno' => 'Llinia $1:',
'compareselectedversions' => 'Comparar les revisiones seleicionaes',
'prefs-beta' => 'Carauterístiques beta',
'prefs-datetime' => 'Fecha y hora',
'prefs-labs' => 'Carauterístiques esperimentales',
+'prefs-user-pages' => "Páxines d'usuariu",
'prefs-personal' => 'Perfil del usuariu',
'prefs-rc' => 'Cambios recientes',
'prefs-watchlist' => 'Llista de vixilancia',
'filereadonlyerror' => 'Dibosupl kemmañ ar restr "$1" abalamour m\'emañ ar c\'havlec\'h restroù "$2" e mod lenn nemetken.
"\'\'$3\'\'" eo an abeg roet gant ar merour en deus prennet anezhi.',
+'invalidtitle-knownnamespace' => 'Titl direizh gant an esaouenn anv "$2" hag an destenn "$3"',
+'invalidtitle-unknownnamespace' => 'Titl direizh gant an niverenn esaouenn anv $1 hag an destenn "$2" dianav',
# Virus scanner
'virus-badscanner' => "Kefluniadur fall : skanner viruzoù dianav : ''$1''",
'node-count-exceeded-warning' => "Pajenn a ya en tu all d'an niver a skoulmoù",
'expansion-depth-exceeded-category' => "Pajennoù m'eur aet dreist d'an donder astenn",
'expansion-depth-exceeded-warning' => "Pajenn a ya dreist d'an donder astenn",
+'parser-unstrip-loop-warning' => "Detektet ez eus bet ul lagadenn n'haller ket divontañ",
+'parser-unstrip-recursion-limit' => "Aet dreist d'ar vevenn rekurziñ n'haller ket divontañ : $1",
# "Undo" feature
'undo-success' => "Gallout a reer disteurel ar c'hemmoù-mañ. Gwiriit, mar plij, gant ar geñveriadenn a-is evit bezañ sur eo an dra-se a fell deoc'h ober; goude-se enrollit ar c'hemmoù a-is a-benn echuiñ disteurel ar c'hemmoù.",
# Diffs
'history-title' => 'Istor stummoù disheñvel "$1"',
+'difference-title' => 'Diforc\'hioù etre adstummoù "$1"',
+'difference-title-multipage' => 'Diforc\'hioù etre ar pajennoù "$1" ha "$2"',
'difference-multipage' => "(diforc'h etre ar pajennoù)",
'lineno' => 'Linenn $1:',
'compareselectedversions' => 'Keñveriañ ar stummoù diuzet',
'backend-fail-internal' => 'C\'hoarvezet ez eus ur fazi dianav e termenell stokañ ar restr "$1".',
'backend-fail-contenttype' => 'Dibosupl termeniñ ar seurt danvez da enrollañ e "$1".',
'backend-fail-batchsize' => 'Pourvezet he deus an dermenell stokañ ur pakad a $1 {{PLURAL:$1|oberiadenn|oberiadenn}}; sevel a ra ar vevenn da $2 {{PLURAL:$2|oberiadenn|oberiadenn}}.',
+'backend-fail-usable' => "Dibosupl skrivañ ar restr $1 rak re skort eo an aotreoù pe mankout a ra kavlec'hioù/endalc'herioù.",
# File journal errors
'filejournal-fail-dbconnect' => 'N\'eus ket bet gallet kevreañ ouzh diaz roadennoù ar marilh evit an dermenell stokañ "$1".',
'undelete-revision' => 'Stumm diverket eus $1, (gwiriadenn eus $4 da $5) gant $3 :',
'undeleterevision-missing' => "Stumm fall pe diank. Pe hoc'h eus heuliet ul liamm fall, pe eo bet diziverket ar stumm pe c'hoazh eo bet lamet diouzh an dielloù.",
'undelete-nodiff' => "N'eus bet kavet stumm kent ebet.",
-'undeletebtn' => 'Diziverkañ!',
+'undeletebtn' => 'Assevel',
'undeletelink' => 'gwelet/assevel',
'undeleteviewlink' => 'gwelet',
'undeletereset' => 'Adderaouekaat',
دەستکاریەکەت بۆ بەرگری لە تێکەڵبوونی دەقی لاپەڕەکە وەر نەگیرا.<br />
ئەمە بڕێجار کاتێ ڕوو ئەدات کە لە خزمەتی پرۆکسی سەر وێب کەڵک وەر بگریت.",
'editing' => 'دەستکاریکردنی $1',
+'creating' => 'دروستکردنی $1',
'editingsection' => 'دەستکاریکردنی: $1 (بەش)',
'editingcomment' => 'دەستکاریکردنی $1 (بەشی نوێ)',
'editconflict' => 'دەستکاری کێشە : $1',
# Diffs
'history-title' => 'مێژووی پیاچوونەوەکانی «$1»',
+'difference-title' => 'جیاوازی نێوان پیاچوونەوەکانی «$1»',
+'difference-title-multipage' => 'جیاوازیی نێوان پەڕەی «$1» و «$2»',
'difference-multipage' => '(جیاوازی نێوان پەڕەکان)',
'lineno' => 'ھێڵی $1:',
'compareselectedversions' => 'پیاچوونەوە ھەڵبژێردراوەکان ھەڵسەنگێنە',
'prefs-beta' => 'کەرەسەکانی بیتا',
'prefs-datetime' => 'کات و ڕێکەوت',
'prefs-labs' => 'کەرەسەکانی تاقیگەکان',
+'prefs-user-pages' => 'پەڕە بەکارھێنەرییەکان',
'prefs-personal' => 'پرۆفایلی بەکارھێنەر',
'prefs-rc' => 'دوایین گۆڕانکارییەکان',
'prefs-watchlist' => 'لیستی چاودێری',
'protect' => 'ꙁабранѥниѥ',
'protect_change' => 'иꙁмѣнѥниѥ',
'protectthispage' => 'си страницѧ ꙁабранєниѥ',
-'unprotect' => 'поущєниѥ',
+'unprotect' => 'ꙁабранѥниꙗ обраꙁа иꙁмѣнѥниѥ',
'newpage' => 'нова страница',
'talkpage' => 'си страницѧ бєсѣда',
'talkpagelinktext' => 'бєсѣда',
'nchanges' => '$1 {{PLURAL:$1|мѣна|мѣнꙑ|мѣнъ}}',
'recentchanges' => 'послѣдьнѩ мѣнꙑ',
'recentchanges-legend' => 'послѣдьн҄ь мѣнъ строи',
-'recentchangestext' => 'с҄ьдє послѣдьнѩ мѣнꙑ сѥѩ викиопꙑтьствованиꙗ видѣти можєши',
+'recentchanges-summary' => 'с҄ьдє послѣдьнѩ мѣнꙑ сѥѩ викиопꙑтьствованиꙗ видѣти можєши',
'recentchanges-label-newpage' => 'по сѥи мѣнꙑ нова страница сътворѥна ѥстъ',
'recentchanges-label-minor' => 'малаꙗ мѣна',
'recentchanges-label-bot' => 'сѭ мѣноу аѵтоматъ сътворихъ',
'largefileserver' => 'Die Datei ist größer als die vom Server eingestellte Maximalgröße.',
'emptyfile' => 'Die hochgeladene Datei ist leer. Der Grund kann ein Tippfehler im Dateinamen sein. Bitte kontrolliere, ob du die Datei wirklich hochladen willst.',
'windows-nonascii-filename' => 'Dieses Wiki unterstützt keine Dateinamen die Sonderzeichen enthalten.',
-'fileexists' => "Eine Datei mit diesem Namen existiert bereits.
-Bitte prüfe '''<tt>[[:$1]]</tt>''', wenn du dir nicht sicher bist, ob du sie ändern willst.
+'fileexists' => "Eine Datei dieses Namens ist bereits vorhanden. Bitte prüfe '''<tt>[[:$1]]</tt>''', sofern du dir nicht sicher bist, ob du sie ändern möchtest.
[[$1|thumb]]",
'filepageexists' => "Eine Beschreibungsseite wurde bereits als '''<tt>[[:$1]]</tt>''' erstellt, es ist aber keine Datei mit diesem Namen vorhanden.
Die eingegebene Beschreibung wird nicht auf die Beschreibungsseite übernommen.
'protect-existing-expiry' => 'Aktuelles Seitenschutzende: $2, $3 Uhr',
'protect-otherreason' => 'Anderer/ergänzender Grund:',
'protect-otherreason-op' => 'Anderer Grund',
-'protect-dropdown' => '*Allgemeine Schutzgründe
-** Weblink-Spam
-** Editwar
+'protect-dropdown' => '* Allgemeine Schutzgründe
+** Edit-War
+** Wiederkehrender Vandalismus
+** Wiederholtes Einstellen von Werbung
** Häufig eingebundene Vorlage
** Seite mit hoher Besucherzahl',
'protect-edit-reasonlist' => 'Schutzgründe bearbeiten',
# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
'seconds' => '{{PLURAL:$1|$1 Sekunde|$1 Sekunden}}',
'minutes' => '{{PLURAL:$1|$1 Minute|$1 Minuten}}',
-'hours' => '{{PLURAL:$1|$1 Stunde|$1 Stunden}}',
+'hours' => '{{PLURAL:$1|einer Stunde|$1 Stunden}}',
'days' => '{{PLURAL:$1|$1 Tag|$1 Tage}}',
'ago' => 'vor $1',
Şıma çerezi qapan kerdi.
Ravêri inan akerê u reyna bıcerrebnê.',
'noname' => 'Yew nameyo maqbul bınuse.',
-'loginsuccesstitle' => 'Hesab bıyo a.',
-'loginsuccess' => '{{SITENAME}} Na keyepel de pê no "$1" name şıma hesab kerdo a.',
+'loginsuccesstitle' => 'Hesab abıya',
+'loginsuccess' => "'''{{SITENAME}} dı name dê \"\$1\" şıma hesab akerdo.'''",
'nosuchuser' => 'Ebe namey "$1"i yew karber çıniyo.
Nuştışê namanê karberan de herfa pil u qıce rê diqet kerên.
Nuştışê xo qonrol kerên, ya zi [[Special:UserLogin/signup|yew hesabo newe akerên]].',
'cascadeprotectedwarning' => "'''Diqet:''' Na pele kılit biya, tenya karberê idarekeri şenê ke naye bıvurnê, çıke na zerrey {{PLURAL:$1|na pela şipa-kılitkerdiye|nê pelanê şipanê-kılitkerdiyan}} dera:",
'titleprotectedwarning' => "'''Diqet: Na pele kılit biya, [[Special:ListGroupRights|heqê xususiy]] lazımê ke naye vırazê.'''
Loge peniye cor de este:",
-'templatesused' => '{{PLURAL:$1|Template|Templateyan}} ke ena pele dı ca genê:',
+'templatesused' => '{{PLURAL:$1|Şablon|Şabloni}} ke na pela de xebtênê:',
'templatesusedpreview' => '{{PLURAL:$1|Sablon|Sabloni}} ke na verqayt de xebetnayê:',
'templatesusedsection' => '{{PLURAL:$1|Template|Templateyan}} ke na qısım de xebetniyenê:',
'template-protected' => '(kılit biyo)',
'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) bıvênên',
'searchmenu-legend' => 'bıgeyre tercihan (sae bıke)',
'searchmenu-exists' => "''Ena 'Wikipediya de ser \"[[:\$1]]\" yew pel esto'''",
-'searchmenu-new' => "''Na Wikipediya de pela \"[[:\$1]]\" vıraze!'''",
+'searchmenu-new' => "''Na Wiki de pelay \"[[:\$1]]\" vıraze!'''",
'searchhelp-url' => 'Help:Tedeestey',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|pê eno prefix ser pelan de bigêre]]',
'searchprofile-articles' => 'Pelê tedeestey',
'action-sendemail' => 'e-posta bırşe',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|vurnayış|vurnayışan}}',
+'nchanges' => '$1 {{PLURAL:$1|fın vurna|fıni vurna}}',
'recentchanges' => 'Vurnayışê peyêni',
'recentchanges-legend' => 'Tercihê vurnayışanê peniyan',
'recentchanges-summary' => 'Ena pele de wiki sero vurnayışê peyêni teqib ke',
'recentchanges-feed-description' => 'Ena feed dı vurnayişanê tewr peniyan teqip bık.',
-'recentchanges-label-newpage' => 'Ena edît yew pela newî viraşt',
+'recentchanges-label-newpage' => 'Enê vurnayışi pelaya newi vıraşt',
'recentchanges-label-minor' => 'Eno yew edîto qickek o',
'recentchanges-label-bot' => 'Eno vurnayış terefê yew boti ra vıraziyo',
'recentchanges-label-unpatrolled' => 'Eno edît patrol nibiyo',
'rcshowhidemine' => 'nuştışanê mı $1',
'rclinks' => 'Peyni rocan de vurnayışa $1 $2 roci dı<br />$3',
'diff' => 'ferq',
-'hist' => 'ver',
+'hist' => 'verên',
'hide' => 'Bınımne',
'show' => 'Bımocne',
'minoreditletter' => 'werdı',
'listredirects' => 'Listeyê redireksiyonî',
# Unused templates
-'unusedtemplates' => 'Templateyanê nihebitiyeno',
+'unusedtemplates' => 'Şablonê ke nê xebtênê',
'unusedtemplatestext' => 'no pel, {{ns:template}} pelê ke pelê binan de nêaseni, ninan keno.',
'unusedtemplateswlh' => 'linkanê binî',
'statistics-users-active-desc' => '{{PLURAL:$1|roco peyin de|$1 roco peyin de}} karber ê ke kar kerdê.',
'statistics-mostpopular' => 'Pelayanê ke tewr zafî vînî biye',
-'disambiguations' => 'Pelayê ke maneyo bini rê grê danê',
+'disambiguations' => 'Pelayê ke maneyo bini rê gırey cı esto',
'disambiguationspage' => 'Template:disambig',
'disambiguations-text' => 'satıro ewwil de ke peli ca genî; gıreyê pelê ciya-manayi mocneni. İkinci sırada <br />tiya de [[MediaWiki:Disambiguationspage]] gani heme gıreyê şablonê ciya-manayan re gıre bıdiyo',
-'doubleredirects' => 'redireksiyonê herdi',
+'doubleredirects' => 'Hetenayışê dıletıni',
'doubleredirectstext' => 'no pel pelê ray motışani liste keno.
gıreyê her satıri de gıreyi; raş motışê yewın u dıyıni esto.
<del>serê ey nuşteyi</del> safi biye.',
'double-redirect-fixed-maintenance' => 'raçarnayışo dıletê [[$1]] ra pela da [[$2]] timarêno',
'double-redirect-fixer' => 'Fixerî redirek bike',
-'brokenredirects' => 'Redireksiyonî ke hin nixebitiyeno',
+'brokenredirects' => 'Hetenayışê vengi',
'brokenredirectstext' => 'Redireksiyonê ey ki pelanê hama çiniyeno ra link dano:',
'brokenredirects-edit' => 'bıvurne',
'brokenredirects-delete' => 'bıestere',
-'withoutinterwiki' => 'Pelî ke bê linkanê ziwanî',
+'withoutinterwiki' => 'Peleyê ke zıwanan de bina re gırey cı çınyo',
'withoutinterwiki-summary' => 'Enê pelî ke versiyonê ziwanî binî ra link nidano.',
'withoutinterwiki-legend' => 'Verole',
'withoutinterwiki-submit' => 'Bımocne',
-'fewestrevisions' => 'Pelî de ke revizyonê tayî estê',
+'fewestrevisions' => 'Peleyê ke cı sero tewr tayn timaryayış vıraziyayo',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|bayt|bayti}}',
'nimagelinks' => '$1 {{PLURAL:$1|pelayan de|pelayan de}} gurweyêno',
'ntransclusions' => '$1 {{PLURAL:$1|pelayan de|pelayan de}} gurweyêno',
'specialpage-empty' => 'Ser ena report netice çini yo.',
-'lonelypages' => 'Pelî ke yetim mend',
+'lonelypages' => 'Peleyê ke cı rê gıre nêdeyayo',
'lonelypagestext' => 'Ena pelî link nibiyê ya zi pelanê binî {{SITENAME}} de transclude biy.',
'uncategorizedpages' => 'Pelayanê ke kategorî nibiye',
-'uncategorizedcategories' => 'Kategoriyanê ke kategorî nibiye',
-'uncategorizedimages' => 'Dosyayê ke kategorî nibiye',
-'uncategorizedtemplates' => 'Templateyê ke kategorî nibiye',
-'unusedcategories' => 'Kategoriyanê ke nihebitiyeno',
-'unusedimages' => 'Dosyayê ke nihebitiyeno',
+'uncategorizedcategories' => 'Kategoriyê ke bê kategorîyê',
+'uncategorizedimages' => 'Dosyayê ke bê kategorîyê',
+'uncategorizedtemplates' => 'Şablonê ke bê kategoriyê',
+'unusedcategories' => 'Kategoriyê ke nê xebtênê',
+'unusedimages' => 'Dosyeyê ke nê xebtênê',
'popularpages' => 'Pelî ke populer o.',
-'wantedcategories' => 'Kategoriyî ke ganî estî bî.',
-'wantedpages' => 'Pelî ke ganî estî bî.',
+'wantedcategories' => 'Kategoriye ke waştênê',
+'wantedpages' => 'Peleye ke waştênê',
'wantedpages-badtitle' => 'sernuşte meqbul niyo: $1',
-'wantedfiles' => 'Dosyayî ke ganî estî bî.',
-'wantedtemplates' => 'Templateyî ke ganî estî bî.',
+'wantedfiles' => 'Dosyeye ke waştênê',
+'wantedtemplates' => 'Şablonê ke waştênê',
'mostlinked' => 'Pelî ke tewr zafî lînk bîy.',
'mostlinkedcategories' => 'Kategorî ke tewr zafî lînk bîy.',
'mostlinkedtemplates' => 'Şablonê ke tewr zafî pela re gıre bîye.',
'mostcategories' => 'Pelan ke tewr zaf kategorî estê.',
'mostimages' => 'Dosyayan ke tewr zaf link estê.',
'mostrevisions' => 'Pelan ke tewr zaf revizyonî biyê.',
-'prefixindex' => 'Pelayanê hemi pe verbend',
-'shortpages' => 'Pelê kılmi',
-'longpages' => 'Pelê dergi',
+'prefixindex' => 'Veroleya peley pêro',
+'shortpages' => 'Peleyê kılmeki',
+'longpages' => 'Peleyê dergeki',
'deadendpages' => 'pelê ke pelê binan re gırey nêeşto',
'deadendpagestext' => 'Ena pelan ke {{SITENAME}} de zerrî ey de link çini yo.',
-'protectedpages' => 'Pelan ke kilit biya.',
+'protectedpages' => 'Pelayê ke biyê star',
'protectedpages-indef' => 'têna pawıteyê bêmuddeti',
'protectedpages-cascade' => 'Kilit biyaye ke teyna cascadiye',
'protectedpagestext' => 'pelê cêrınî pawiyenê',
'protectedpagesempty' => 'pê ney parametreyan pelê pawiteyi çinî',
-'protectedtitles' => 'sernuşteyê pawıteyi',
+'protectedtitles' => 'Sernameyê ke starênê',
'protectedtitlestext' => 'sernameyê cêrıni pawıte yî',
'protectedtitlesempty' => 'pê ney parametreyan sernuşteyê pawite çinê',
'listusers' => 'Lista karberan',
'usercreated' => '$2 de $1 {{GENDER:$3|viraziya}}',
'newpages' => 'Pelê newey',
'newpages-username' => 'Namey Karberi:',
-'ancientpages' => 'Pelê kıhanêri',
+'ancientpages' => 'Wesiqeyê ke vurnayışê ciyê peyeni tewr kehani',
'move' => 'bere',
'movethispage' => 'Ena pele bere',
'unusedimagestext' => 'Enê dosyey estê, feqet zerrey yew pele de wedardey niyê.
'log-title-wildcard' => 'sername yê ke pê ney nuşteyi destkenêpê bıgêr.',
# Special:AllPages
-'allpages' => 'Pelan hemi',
+'allpages' => 'Peli pêro',
'alphaindexline' => '$1 ra $2ine',
'nextpage' => 'Pela badê cû ($1)',
'prevpage' => 'Pela verêne ($1)',
'allpagesfrom' => 'Pelanê ke be ena herfe dest pêkenê bımocne',
'allpagesto' => 'Pelanê ke be ena herfe qediyenê bımocne:',
'allarticles' => 'Peli pêro',
-'allinnamespace' => 'Pelanê hemî ($1 cayênameyî)',
+'allinnamespace' => 'Peli pênro ( $1 cayênameyî)',
'allnotinnamespace' => 'Pelanê hemî ($1 cayênameyî de niyo)',
'allpagesprev' => 'Verêni',
'allpagesnext' => 'ver şo',
# Special:Categories
'categories' => 'Kategoriy',
'categoriespagetext' => '{{PLURAL:$1|kategoriyê|kategoriyê}} cêrıni de pel u media esto.
-[[Special:UnusedCategories|kategori yê ke nêşuxulyeni]] tiya de nêmociyeni.
+[[Special:UnusedCategories|kategoriyê ke nê xebtênê]] tiya de nêmociyeni.
hem zi bıewnê [[Special:WantedCategories|kategori yê ke waziyeni]].',
'categoriesfrom' => 'kategori yê ke pê ninan destpêkeno ramocın:',
'special-categories-sort-count' => 'goreyê çendi rêz ker.',
# Watchlist
'watchlist' => 'lista mına seyr-kerdışi',
'mywatchlist' => 'Listey seyri',
-'watchlistfor2' => 'Semedê $1 ($2)',
+'watchlistfor2' => 'Qandê $1 ($2)',
'nowatchlist' => 'listeya temaşa kerdıişê şıma de yew madde zi çina.',
'watchlistanontext' => 'qey vurnayişê maddeya listeya temaşakerdişi $1.',
'watchnologin' => 'hesab akerde niyo',
'actionfailed' => 'kar nêbı',
'deletedtext' => '"$1" biya wedariya.
Qe qeydê wedarnayışi, $2 bevinin.',
-'dellogpage' => 'Logê bıesterışi',
+'dellogpage' => 'Qeydê besternayışi',
'dellogpagetext' => 'listeya cêrıni heme qaydê hewn a kerdeyan o.',
'deletionlog' => 'qaydê hewnakerdışani',
'reverted' => 'revizyono verin tepiya anciyayo',
'contributions' => 'İştirakê karberi',
'contributions-title' => '$1 de iştırakê karberi',
'mycontris' => 'İştıraxê mı',
-'contribsub2' => 'Semedê $1 ($2)',
+'contribsub2' => 'Qandê $1 ($2)',
'nocontribs' => 'Ena kriteriya de vurnayîş çini yo.',
'uctop' => '(ser)',
'month' => 'Aşm ra (u verniyer):',
'sp-contributions-newbies' => 'Tenya iştıraqanê karberanê neweyan bımocne',
'sp-contributions-newbies-sub' => 'Qe hesebê newe',
'sp-contributions-newbies-title' => 'Îştîrakê karberî ser hesabê neweyî',
-'sp-contributions-blocklog' => 'Cıkewtışê kılit-kerdışi',
+'sp-contributions-blocklog' => 'Qeydê kılit-kerdışi',
'sp-contributions-deleted' => 'vurnayîşê karberî wedariyayê',
'sp-contributions-uploads' => 'barkerdey',
-'sp-contributions-logs' => 'logî',
+'sp-contributions-logs' => 'qeydi',
'sp-contributions-talk' => 'mesac',
'sp-contributions-userrights' => 'Îdarayê heqqanê karberan',
'sp-contributions-blocked-notice' => 'verniyê no/na karber/e geriyayo/a
'javascripttest' => 'Cerbnayışê JavaScripti',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Pela ya Qarberi',
+'tooltip-pt-userpage' => 'Pelaya karberi',
'tooltip-pt-anonuserpage' => 'pelê karberê IPyi',
'tooltip-pt-mytalk' => 'Pela ya Qıse vatışi',
'tooltip-pt-anontalk' => 'vurnayiş ê ke no Ipadresi ra biyo muneqeşa bıker',
'autosumm-blank' => 'Pele de her çi wederna',
'autosumm-replace' => "Maqale pê '$1' vuriya",
'autoredircomment' => 'Pele [[$1]] rê redirek biyo',
-'autosumm-new' => "Pê '$1' pele viraziyo.",
+'autosumm-new' => "Pela vıraziyê, '$1' bıvinê",
# Live preview
'livepreview-loading' => 'Ho bar keni...',
'version-entrypoints-header-url' => 'GRE',
# Special:FilePath
-'filepath' => 'Raherê dosyayi',
+'filepath' => 'Heruna dosyayer',
'filepath-page' => 'Dosya:',
'filepath-submit' => 'Şo',
'filepath-summary' => 'Na pela xısusiye raya temame jû dosya rê ana.
'mergehistory-comment' => 'Merged [[:$1]] into [[:$2]]: $3',
'mergehistory-same-destination' => 'Source and destination pages cannot be the same',
'mergehistory-reason' => 'Reason:',
+'mergehistory-revisionrow' => '$1 ($2) $3 . . $4 $5 $6',
# Merge log
'mergelog' => 'Merge log',
'watcherrortext' => 'Eraro okazis ŝanĝinte vian agordojn de atentaro por "$1".',
'enotif_mailer' => 'Averta retmesaĝo de {{SITENAME}}',
-'enotif_reset' => 'Marki ĉiujn vizititajn paĝojn',
+'enotif_reset' => 'Marki ĉiujn paĝojn vizititaj',
'enotif_newpagetext' => 'Tiu ĉi estas nova paĝo',
'enotif_impersonal_salutation' => 'Uzanto de {{SITENAME}}',
'changed' => 'ŝanĝita',
'watcherrortext' => 'Ocurrió un error al cambiar la configuración de tu lista de seguimiento para «$1».',
'enotif_mailer' => 'Notificación por correo de {{SITENAME}}',
-'enotif_reset' => 'Marcar todas las páginas visitadas',
+'enotif_reset' => 'Marcar todas las páginas como visitadas',
'enotif_newpagetext' => 'Se trata de una nueva página.',
'enotif_impersonal_salutation' => 'usuario de {{SITENAME}}',
'changed' => 'modificada',
'prefs-beta' => 'Beetafunktsioonid',
'prefs-datetime' => 'Kuupäev ja kellaaeg',
'prefs-labs' => 'Katsefunktsioonid',
+'prefs-user-pages' => 'Kasutajaleheküljed',
'prefs-personal' => 'Kasutaja andmed',
'prefs-rc' => 'Viimased muudatused',
'prefs-watchlist' => 'Jälgimisloend',
'prefs-beta' => 'ابزارهای کارآمد',
'prefs-datetime' => 'تاریخ و زمان',
'prefs-labs' => 'قسمتهای آزمایشی',
+'prefs-user-pages' => 'صفحههای کاربری',
'prefs-personal' => 'دادههای کاربر',
'prefs-rc' => 'تغییرات اخیر',
'prefs-watchlist' => 'فهرست پیگیریها',
'backend-fail-internal' => 'خطایی نامعلوم در پشتیبان ذخیره «$1» رخ داد.',
'backend-fail-contenttype' => 'تعیین نوع محتوای پرونده برای ذخیره در «$1» ناموفق بود.',
'backend-fail-batchsize' => 'دستهای مشتمل بر $1 {{PLURAL:$1|عملکرد|عملکرد}} پرونده به پشتیبان ذخیره داده شد؛ حداکثر مجاز $2 {{PLURAL:$2|عملکرد|عملکرد}} است.',
+'backend-fail-usable' => 'امکان نوشتن در پروندهٔ $1 وجود نداشت چرا که سطح دسترسی کافی نیست یا شاخه مورد نظر وجود ندارد.',
+
+# File journal errors
+'filejournal-fail-dbconnect' => 'امکان وصل شدن به پایگاه داده دفترخانه برای پشتیبان ذخیرهسازی «$1» وجود نداشت.',
+'filejournal-fail-dbquery' => 'امکان به روز کردن پایگاه داده دفترخانه برای پشتیبان ذخیرهسازی «$1» وجود نداشت.',
# Lock manager
'lockmanager-notlocked' => 'نمیتوان قفل «$1» را گشود؛ چون قفل نشدهاست.',
'allpages-hide-redirects' => 'پنهانکردن تغییرمسیرها',
# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'شما در حال مشاهدهٔ نسخهای از این صفحه که در میانگیر قرار دارد هستید که ممکن است برای $1 قبل باشد.',
+'cachedspecial-viewing-cached-ts' => 'شما در حال مشاهدهٔ نسخهای از این صفحه که در میانگیر قرار دارد هستید، و این نسخه ممکن است کاملاً واقعی نباشد.',
'cachedspecial-refresh-now' => 'مشاهده آخرین.',
# Special:Categories
'revdelete-show-file-submit' => 'Kyllä',
'revdelete-selected' => "'''{{PLURAL:$2|Valittu versio|Valitut versiot}} sivusta '''$1:''''''",
'logdelete-selected' => "'''{{PLURAL:$1|Valittu lokimerkintä|Valitut lokimerkinnät}}:'''",
-'revdelete-text' => "'''Poistetut versiot näkyvät sivun historiassa, mutta niiden sisältö ei ole julkisesti saatavilla.'''
-Muut ylläpitäjät {{GRAMMAR:inessive|{{SITENAME}}}} voivat silti lukea piilotetun sisällön ja he voivat palauttaa sen tämän käyttöliittymän kautta, ellei sitä ole rajoitettu.",
+'revdelete-text' => "'''Poistetut versiot ja lokitapahtumat näkyvät edelleen sivun historiassa ja lokeissa, mutta osa niiden sisällöstä ei ole julkisesti saatavilla.'''
+Muut ylläpitäjät {{GRAMMAR:inessive|{{SITENAME}}}} voivat silti tarkastella piilotettua sisältöä, ja he voivat palauttaa sen näkyviin tämän käyttöliittymän kautta, ellei tätä ole erikseen rajoitettu.",
'revdelete-confirm' => 'Varmista, että haluat tehdä tämän – ymmärrät seuraukset ja teet tämän [[{{MediaWiki:Policy-url}}|käytäntöjen]] mukaisesti.',
'revdelete-suppress-text' => "Häivytystä pitäisi käyttää '''vain''' seuraavissa tapauksissa:
* Sopimattomat henkilötiedot
'edithelp' => 'Beårbingsheelp',
'edithelppage' => 'Help:Beårbe',
'helppage' => 'Help:Inhåltsfertiiknis',
-'mainpage' => 'Hoodsid',
+'mainpage' => 'Wikipedia:Hoodsid',
'mainpage-description' => 'Hoodsid',
'policy-url' => 'Project:Ruchtliinje',
'portal' => 'Gemiinschaps-portåål',
'thursday' => 'חמישי',
'friday' => 'שישי',
'saturday' => 'שבת',
-'sun' => "ר×\90ש'",
-'mon' => 'שני',
-'tue' => "ש×\9c×\99'",
-'wed' => "ר×\91×\99'",
-'thu' => "×\97×\9e×\99'",
-'fri' => "ש×\99ש'",
-'sat' => 'שבת',
+'sun' => "×\90'",
+'mon' => "ב'",
+'tue' => "×\92'",
+'wed' => "×\93'",
+'thu' => "×\94'",
+'fri' => "×\95'",
+'sat' => "ש'",
'january' => 'ינואר',
'february' => 'פברואר',
'march' => 'מרץ',
# Bad image list
'bad_image_list' => 'דרך הכתיבה בהודעה היא כמתואר להלן:
-רק פריטי רשימה (שורות המתחילות עם *) נחשבים. הקישור הראשון בשורה חייב להיות קישור לקובץ שאין להציג.
+רק פריטי רשימה (שורות המתחילות עם *) נחשבים.
+הקישור הראשון בשורה חייב להיות קישור לקובץ בעייתי.
כל הקישורים הבאים באותה השורה נחשבים לחריגים, כלומר לדפים שבהם ניתן להציג את הקובץ.',
# Metadata
'version-poweredby-others' => 'אחרים',
'version-license-info' => "מדיה־ויקי היא תוכנה חופשית; באפשרותכם להפיץ אותה מחדש ו/או לשנות אותה לפי תנאי הרישיון הציבורי הכללי של גנו המפורסם על ידי המוסד לתוכנה חופשית: גרסה 2 של רישיון זה, או (לפי בחירתכם) כל גרסה מאוחרת יותר.
-×\9e×\93×\99×\94Ö¾×\95×\99ק×\99 ×\9e×\95פצת ×\91תק×\95×\95×\94 ש×\94×\99×\90 ת×\94×\99×\94 ש×\99×\9e×\95ש×\99ת, ×\90×\9a '''×\9c×\9c×\90 ×\9b×\9c ×\94×\91×\98×\97×\94 ×\9c×\90×\97ר×\99×\95ת'''; ×\90פ×\99×\9c×\95 ×\9c×\90 ×\90×\97ר×\99×\95ת ×\9eשת×\9eעת ש×\9c '''×\99×\9b×\95×\9cת ×\9c×\94×\99ס×\97ר''' ×\90×\95 '''×\94ת×\90×\9e×\94 ×\9cר×\99ש×\99×\95×\9f ×\9eס×\95×\99×\9d'''. ראו את הרישיון הציבורי הכללי של גנו לפרטים נוספים.
+×\9e×\93×\99×\94Ö¾×\95×\99ק×\99 ×\9e×\95פצת ×\91תק×\95×\95×\94 ש×\94×\99×\90 ת×\94×\99×\94 ש×\99×\9e×\95ש×\99ת, ×\90×\9a '''×\9c×\9c×\90 ×\9b×\9c ×\94×\91×\98×\97×\94 ×\9c×\90×\97ר×\99×\95ת'''; ×\90פ×\99×\9c×\95 ×\9c×\90 ×\90×\97ר×\99×\95ת ×\9eשת×\9eעת ש×\9c '''×\99×\9b×\95×\9cת ×\9c×\94×\99ס×\97ר''' ×\90×\95 '''×\94ת×\90×\9e×\94 ×\9c×\9e×\98ר×\94 ×\9eס×\95×\99×\9eת'''. ראו את הרישיון הציבורי הכללי של גנו לפרטים נוספים.
-×\94×\99×\99ת×\9d צר×\99×\9b×\99×\9d ×\9cק×\91×\9c [{{SERVER}}{{SCRIPTPATH}}/COPYING ×\94עתק ש×\9c ×\94ר×\99ש×\99×\95×\9f ×\94צ×\99×\91×\95ר×\99 ×\94×\9b×\9c×\9c×\99 ש×\9c ×\92× ×\95] ×\99×\97×\93 ×¢×\9d ת×\95×\9b× ×\94 ×\96×\95; ×\90×\9d ×\9c×\90, ×\9bת×\91×\95 ×\9c×\9e×\95ס×\93 ×\9cת×\95×\9b× ×\94 ×\97×\95פש×\99ת: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ×\90×\95 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html קראו אותו ברשת].",
+×\94×\99×\99ת×\9d ×\90×\9e×\95ר×\99×\9d ×\9cק×\91×\9c [{{SERVER}}{{SCRIPTPATH}}/COPYING ×\94עתק ש×\9c ×\94ר×\99ש×\99×\95×\9f ×\94צ×\99×\91×\95ר×\99 ×\94×\9b×\9c×\9c×\99 ש×\9c ×\92× ×\95] ×\99×\97×\93 ×¢×\9d ת×\95×\9b× ×\94 ×\96×\95; ×\90×\9d ×\9c×\90, ×\9bִת×\91×\95 ×\9c×\9e×\95ס×\93 ×\9cת×\95×\9b× ×\94 ×\97×\95פש×\99ת: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ×\90×\95 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html קִראו אותו ברשת].",
'version-software' => 'תוכנות מותקנות',
'version-software-product' => 'תוכנה',
'version-software-version' => 'גרסה',
# Diffs
'history-title' => 'A(z) „$1” laptörténete',
'difference-title' => '„$1” változatai közötti eltérés',
+'difference-title-multipage' => 'Oldalak közötti különbség " $1 "és" $2 "',
'difference-multipage' => '(Lapok közti eltérés)',
'lineno' => '$1. sor:',
'compareselectedversions' => 'Kiválasztott változatok összehasonlítása',
'link_sample' => 'リンクの名前',
'link_tip' => '内部リンク',
'extlink_sample' => 'http://www.example.com リンクの名前',
-'extlink_tip' => '外部リンク (http:// を忘れずにつけてください)',
+'extlink_tip' => '外部リンク(http:// を忘れずに付けてください)',
'headline_sample' => '見出し文',
'headline_tip' => '2段目の見出し',
'nowiki_sample' => 'ここにマークアップを無効にするテキストを入力します',
'import-interwiki-templates' => 'すべてのテンプレートを含める',
'import-interwiki-submit' => '取り込み',
'import-interwiki-namespace' => '目的の名前空間:',
-'import-upload-filename' => 'ファイルã\81®å\90\8då\89\8dï¼\9a',
+'import-upload-filename' => 'ファイルå\90\8dï¼\9a',
'import-comment' => 'コメント:',
'importtext' => '元のウィキで[[Special:Export|書き出し機能]]を使用してファイルに書き出してください。
それをコンピューターに保存した後、こちらへアップロードしてください。',
'recreate' => '再作成する',
# action=purge
-'confirm_purge_button' => 'はい',
+'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'ページのキャッシュを破棄します。よろしいですか?',
'confirm-purge-bottom' => 'ページをパージすると、キャッシュが破棄され、強制的に最新の版が表示されます。',
'userloginnocreate' => '로그인',
'logout' => '로그아웃',
'userlogout' => '로그아웃',
-'notloggedin' => '로그인하고 있지 않음',
+'notloggedin' => '로그인하지 않음',
'nologin' => '계정이 없나요? $1.',
'nologinlink' => '계정을 만들 수 있습니다',
'createaccount' => '계정 만들기',
'exif-compression-3' => 'CCITT 그룹-3 팩스 인코딩',
'exif-compression-4' => 'CCITT 그룹-4 팩스 인코딩',
'exif-compression-6' => 'JPEG (오래됨)',
-'exif-compression-8' => 'ì\88\98ì¶\95 (Deflate) (Adobe)',
+'exif-compression-8' => 'ì\95\95ì¶\95 (Adobe)',
'exif-compression-32773' => 'PackBits (매킨토시 RLE)',
-'exif-compression-32946' => 'ì\88\98ì¶\95 (Deflate) (PKZIP)',
+'exif-compression-32946' => 'ì\95\95ì¶\95 (PKZIP)',
'exif-copyrighted-true' => '저작권의 보호를 받음',
'exif-copyrighted-false' => '퍼블릭 도메인',
'cancel' => 'Ызына алыу',
'moredotdotdot' => 'Баргъаны…',
'mypage' => 'Энчи бетим',
-'mytalk' => 'Ð\9cени Ñ\81юзюу бетим',
+'mytalk' => 'Сюзюу бетим',
'anontalk' => 'Бу IP-адресге сюзюу бет',
'navigation' => 'Навигация',
'and' => ' эм',
'securelogin-stick-https' => 'Чыкъгъандан сора да HTTPS бла байламлы къой',
'yourdomainname' => 'Сизни доменигиз:',
'externaldberror' => 'Тыш информация базаны болушлугъу бла аутентификация, халатлы болду, неда тыш аккаунтугъузну тюрлендирирге хакъларагъыз джетмейди.',
-'login' => 'Кир',
+'login' => 'Кириу',
'nav-login-createaccount' => 'Кириу / регистрация этиу',
'loginprompt' => '{{SITENAME}} сайтха кирир ючюн «cookies» эркин этерге керексиз.',
'userlogin' => 'Кир / регистрация эт',
'nologinlink' => 'Тергеу джазыу (аккаунт) къурагъыз',
'createaccount' => 'Джангы къошулуучуну регистрация эт',
'gotaccount' => 'Тергеу джазыуугъуз (аккаунтугъуз) энди бармыды? $1.',
-'gotaccountlink' => 'Кир',
+'gotaccountlink' => 'Кириу',
'userlogin-resetlink' => 'Кирир ючюн билгилеригизни унутхан этгенмисиз?',
'createaccountmail' => 'e-mail бла',
'createaccountreason' => 'Чурум:',
'wrongpasswordempty' => 'Пароль джазылмай къалгъанды. Джангыдан кёрюгюз.',
'passwordtooshort' => '$1 {{PLURAL:$1|символдан}} аз болмазгъа керекди пароль.',
'password-name-match' => 'Пароль къошулуучу атдан башха тюрлю болургъа керекди.',
-'mailmypassword' => 'Ð\94жангÑ\8b паÑ\80олÑ\8c джибеÑ\80 E-mail бла',
+'mailmypassword' => 'Ð\9cеннге e-mail бла джангÑ\8b паÑ\80олÑ\8c джибеÑ\80',
'passwordremindertitle' => '{{SITENAME}} къошулуучугъа джангы болджаллы пароль',
'passwordremindertext' => 'Ким эседа (сиз болургъа боллукъсуз, IP-адрес: $1) {{SITENAME}} ($4) къошулуучугъа джангы пароль къураргъа соргъанды. $2 къошулуучугъа джангы пароль: $3. Сорууну джиберген сиз болгъан эсегиз, системагъа кирирге эм паролну алышдырыргъа тыйычлыды. Джангы паролну $5 {{PLURAL:$5|кюнню}} ичинде амалы боллукъду.
# Special:PasswordReset
'passwordreset' => 'Паролну атыу',
'passwordreset-text' => 'Электрон джазма бла тергеу джазыуугъузну (аккаунтугъузну) параметрлерини юсюнден билдириу алыр ючюн бу форманы толтуругъуз.',
-'passwordreset-legend' => 'Ð\9fаÑ\80олнÑ\83 ий',
+'passwordreset-legend' => 'Ð\9fаÑ\80олнÑ\83 аÑ\82Ñ\8bÑ\83',
'passwordreset-disabled' => 'Бу викиде паролла атыу амал джукъланыбды.',
'passwordreset-pretext' => '{{PLURAL:$1||Тюбюрекде берилген билгиледен бирин джазыгъыз}}',
'passwordreset-username' => 'Къошулуучуну аты:',
'nosuchsectiontext' => 'Сиз болмагъан бетни тюрлендирирге кюрешесиз.
Бу бетге къарагъан заманыгъызда, кетерилирге неда башха джерге кёчюрюлюрге боллукъду.',
'loginreqtitle' => 'Кирирге керекди',
-'loginreqlink' => 'Кир',
+'loginreqlink' => 'Кириу',
'loginreqpagetext' => 'Сиз башха бетлеге къарар ючюн $1 керексиз.',
'accmailtitle' => 'Пароль джиберилди',
'accmailtext' => "[[User talk:$1|$1]] къошулуучугъа къуралгъан пароль $2 адресине джиберилгенди.
** Орунсуз энчи билгиле',
'revdelete-otherreason' => 'Башха/къошакъ чурум:',
'revdelete-reasonotherlist' => 'Башха чурум',
-'revdelete-edit-reasonlist' => 'ЧÑ\83Ñ\80Ñ\83мланÑ\8b Ñ\81пиÑ\81огÑ\83н тюрлендир',
+'revdelete-edit-reasonlist' => 'ЧÑ\83Ñ\80Ñ\83мланÑ\8b Ñ\82измеÑ\81ин тюрлендир',
'revdelete-offender' => 'Бетни версиясыны автору:',
# Suppression log
'mergelogpagetext' => 'Тюбюрек бетлени тарихлерини ахыр бирлешдириулери берилгенди.',
# Diffs
-'history-title' => '«$1» бетни тюрлениу тарихи',
+'history-title' => '$1 — тюрлениу тарихи',
'difference-multipage' => '(Бетле арасында башхалыкъ)',
'lineno' => 'Тизгин $1:',
'compareselectedversions' => 'Сайланнган версияланы тенглешдириу',
'prefs-help-realname' => 'Керти ат (излеуге байламлы).
Аны кёргюзюрге излесегиз, сиз тюрлендирген бетлеригизни,сиз тюрлендиргенигизи белгили боллукъду.',
'prefs-help-email' => 'Электрон почтагъызны адресин джазаргъа амалсыз керек тюлдю, алай а, паролюгъузну унутсагъыз, ажымсыз керек боллукъду.',
+'prefs-help-email-others' => 'Ол сизни энчи бетигизде болгъан джибериуню юсю бла сизни бла байлам этерге амал береди; электрон почтагъызны адресин да ачыкъ этерге керек болмайсыз.',
'prefs-help-email-required' => 'Электрон почтагъызны кёргюзюгюз.',
'prefs-info' => 'Баш билгиле',
'prefs-i18n' => 'Интернационализация',
'upload-unknown-size' => 'Билинмеген ёлчем',
'upload-http-error' => 'HTTP хата болду: $1',
+# File backend
+'backend-fail-delete' => '«$1» файл кетерилмеди.',
+'backend-fail-store' => '$1 файл $2 ичинде сакъланылынмады.',
+
# Special:UploadStash
'uploadstash' => 'Джашыртын джюклеу',
'uploadstash-nofiles' => 'Сизни джашырылгъан файлларыгъыз джокъду',
** дубликат файл',
'filedelete-edit-reasonlist' => 'Кетериуню чурумларын тюрлендир',
'filedelete-maintenance' => 'Техника ишлени кёзюуюнде файлланы кетериу эм ызына къайтарыу функцияла ишлеймедиле.',
+'filedelete-maintenance-title' => 'Файл кетерилмеди',
# MIME search
'mimesearch' => 'MIME бла излеу',
'unwatchedpages' => 'Киши кёзде тутмагъан бетле',
# List redirects
-'listredirects' => 'Ð\94жибеÑ\80иÑ\83лени Ñ\81пиÑ\81огÑ\83',
+'listredirects' => 'Ð\94жибеÑ\80иÑ\83лени Ñ\82измеÑ\81и',
# Unused templates
'unusedtemplates' => 'Хайырландырылмагъан шаблонла',
'protectedtitles' => 'Джакъланнган башлыкъла',
'protectedtitlestext' => 'Бу атланы хайырланыргъа эркинлик джокъду',
'protectedtitlesempty' => 'Бусагъатда, бу параметрле бла джакъланнган башлыкъ джокъду.',
-'listusers' => 'Ð\9aÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\81пиÑ\81огÑ\83',
+'listusers' => 'Ð\9aÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\82измеÑ\81и',
'listusers-editsonly' => 'Къуру тюрлендириу этген къошлуучуланы кёргюз',
'listusers-creationsort' => 'Къуралгъан заманына кёре сафла',
'usereditcount' => '$1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
'speciallogtitlelabel' => 'Ышан (башлыкъ неда къошулуучу):',
'log' => 'Журналла',
'all-logs-page' => 'Бютеу ачыкъ журналла',
-'alllogstext' => '{{SITENAME}} Ñ\8eÑ\87Ñ\8eн бÑ\8eÑ\82еÑ\83 баÑ\80 болгÑ\8aан жÑ\83Ñ\80налланÑ\8b биÑ\80леÑ\88ген Ñ\81пиÑ\81огÑ\83.
-Журнал типини, къошулуучу атны (уллу-гитче харифге кёре) неда тийилген бетни (олда уллу-гитче харифге кёре) элерге боллукъсуз.',
+'alllogstext' => '{{SITENAME}} Ñ\8eÑ\87Ñ\8eн бÑ\8eÑ\82еÑ\83 баÑ\80 болгÑ\8aан жÑ\83Ñ\80налланÑ\8b биÑ\80леÑ\88ген Ñ\82измеÑ\81и.
+Журнал типини, къошулуучу атны (уллу-гитче харифге кёре) неда тийилген бетни (ол да уллу-гитче харифге кёре) элерге боллукъсуз.',
'logempty' => 'Журналлагъа келишген билги джокъду.',
'log-title-wildcard' => 'Бу символладан башланнган башлыкъланы изле',
'listusers-blocked' => '(блокга салыныбды)',
# Special:ActiveUsers
-'activeusers' => 'Ð\90кÑ\82ив кÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\81пиÑ\81огÑ\83',
+'activeusers' => 'Ð\90кÑ\82ив кÑ\8aоÑ\88Ñ\83лÑ\83Ñ\83Ñ\87Ñ\83ланÑ\8b Ñ\82измеÑ\81и',
'activeusers-intro' => 'Бу, ахыр $1 {{PLURAL:$1|кюнде|кюнде}} къаллайда болсун ишлетме кёргюзген къошлуучуланы списогуду.',
'activeusers-count' => 'Ахыр {{PLURAL:$3|кюнде|$3 кюнде}} $1 {{PLURAL:$1|тюрлендириу|тюрлендириу}}',
'activeusers-from' => 'Бу бла башланнган къошлуучуланы кёргюз:',
'listgrouprights-group' => 'Къауум',
'listgrouprights-rights' => 'Хакъла',
'listgrouprights-helppage' => 'Help:Къауумланы хакълары',
-'listgrouprights-members' => '(гÑ\80Ñ\83ппанÑ\8b Ñ\81пиÑ\81огÑ\83)',
+'listgrouprights-members' => '(кÑ\8aаÑ\83Ñ\83мнÑ\83 Ñ\82измеÑ\81и)',
'listgrouprights-right-display' => '<span class="listgrouprights-granted">$1 <tt>($2)</tt></span>',
'listgrouprights-right-revoked' => '<span class="listgrouprights-revoked">$1 <tt>($2)</tt></span>',
'listgrouprights-addgroup' => '{{PLURAL:$2|Къауум|Къауум}} къошаргъа боллукъду: $1',
# Watchlist
'watchlist' => 'Кёзюмде тургъан тизмем',
-'mywatchlist' => 'Кёзюмде тургъан тизмем',
+'mywatchlist' => 'Кёзюмдеги тизмем',
'watchlistfor2' => '$1 ючюн $2',
'nowatchlist' => 'Кёзюгюзде тургъан тизмегиз бошду.',
'watchlistanontext' => 'Кёзюгюзде тургъан тизмегизни статьяланы кёрюр неда тюрлендирир ючюн $1.',
# Contributions
'contributions' => 'Къошулуучуну къошханы',
'contributions-title' => '$1 къошулуучуну къошагъы',
-'mycontris' => 'Ð\9cени къошханым',
+'mycontris' => 'Ð\9aъошханым',
'contribsub2' => '$1 ($2) къошакъ',
'nocontribs' => 'Бу критерийлеге келишген тюрлениуле табылмадыла',
'uctop' => '(ахыргъы)',
'sp-contributions-newbies-title' => 'Джангы тергеу джазыуладан этилген къошакъ',
'sp-contributions-blocklog' => 'Блок этиуню журналы',
'sp-contributions-deleted' => 'къошулуучуну кетерилген тюрлендириулери',
+'sp-contributions-uploads' => 'джюкленнгенле',
'sp-contributions-logs' => 'журналла',
'sp-contributions-talk' => 'сюзюу',
'sp-contributions-userrights' => 'къошулуучуну хакъларына оноу этиу',
'nolinkshere-ns' => "Сайланнган атла аламда '''[[:$1]]''' бетге джиберген бет джокъду.",
'isredirect' => 'джибериу бет',
'istemplate' => 'къошуу',
-'isimage' => 'Ñ\81Ñ\83Ñ\80аÑ\82Ñ\85а джибериу',
+'isimage' => 'Ñ\84айлгÑ\8aа джибериу',
'whatlinkshere-prev' => '{{PLURAL:$1|алдагъы|алдагъы $1}}',
'whatlinkshere-next' => '{{PLURAL:$1|эндиги|эндиги $1}}',
'whatlinkshere-links' => '← джибериуле',
'ipusubmit' => 'Бу тыйгъычны кетер',
'unblocked' => '[[User:$1|$1]]- тыйылыу тохтатылгъанды',
'unblocked-id' => '$1 тыйылыу къоратылгъанды',
-'ipblocklist' => 'Блок этилиннген IP-адресле эм къошулуучуланы атлары',
+'ipblocklist' => 'Блок этилиннген къошулуучула',
'ipblocklist-legend' => 'Тыйылгъан къошулуучуну аты',
'blocklist-expiry' => 'Бошалыу датасы',
'blocklist-reason' => 'Чурум',
'tooltip-pt-anonuserpage' => 'Сизни IP-адресигиз ючюн къошулуучу бет',
'tooltip-pt-mytalk' => 'Сизни сюзюу бетигиз',
'tooltip-pt-anontalk' => 'Бу IP-адресден этилген тюрлендириулени сюзюу бет',
-'tooltip-pt-preferences' => 'Ð\94жарашдырыуларыгъыз',
+'tooltip-pt-preferences' => 'Сизни джарашдырыуларыгъыз',
'tooltip-pt-watchlist' => 'Сиз кёзюгюзде тутхан бетлени тизмеси',
'tooltip-pt-mycontris' => 'Сизни тюрлендириулеригизни тизмеси',
'tooltip-pt-login' => 'Былайда системада регистрация этерге боллукъду, алай а ол ажымсыз керекли тюйюлдю',
'tooltip-n-mainpage' => 'Баш бетге кёчюу',
'tooltip-n-mainpage-description' => 'Баш бетге кёчюу',
'tooltip-n-portal' => 'Проектни юсюнден, сизни не этерге боллугъугъузню юсюнден, хар не къайда болгъаныны юсюнден',
-'tooltip-n-currentevents' => 'Ð\91Ñ\83Ñ\81агÑ\8aаÑ\82да болгÑ\8aан иÑ\88лени Ñ\81пиÑ\81огÑ\83',
-'tooltip-n-recentchanges' => 'Ð\90Ñ\85Ñ\8bÑ\80 Ñ\82Ñ\8eÑ\80лениÑ\83лени Ñ\81пиÑ\81огÑ\83',
+'tooltip-n-currentevents' => 'Ð\91Ñ\83Ñ\81агÑ\8aаÑ\82да болгÑ\8aан иÑ\88лени Ñ\82измеÑ\81и',
+'tooltip-n-recentchanges' => 'Ð\90Ñ\85Ñ\8bÑ\80 Ñ\82Ñ\8eÑ\80лениÑ\83лени Ñ\82измеÑ\81и',
'tooltip-n-randompage' => 'Эсде болмагъан бир бетге къара',
'tooltip-n-help' => '«{{SITENAME}}» проектге джардам этиу',
-'tooltip-t-whatlinkshere' => 'Бу бетге джибериу берген бютеу бетлени списогу',
+'tooltip-t-whatlinkshere' => 'Бу бетге джибериу берген бютёу бетлени тизмеси',
'tooltip-t-recentchangeslinked' => 'Бу бет джибериуле берген бетледе ахыр тюрлениуле',
'tooltip-feed-rss' => 'Бу битге RSS-трансляция',
'tooltip-feed-atom' => 'Бу бетге Atom-трансляция',
'tooltip-t-contributions' => 'Къошулуучуну тюрлендирген бетлерине къара',
'tooltip-t-emailuser' => 'Бу къошулуучугъа письмо джибер',
'tooltip-t-upload' => 'Файлланы джюклеу',
-'tooltip-t-specialpages' => 'Бютеу къуллукъчу бетлени списогу',
+'tooltip-t-specialpages' => 'Бютёу къуллукъчу бетлени тизмеси',
'tooltip-t-print' => 'Бу бетни басмагъа версиясы',
'tooltip-t-permalink' => 'Бетни бу версиясына дайым джибериу',
'tooltip-ca-nstab-main' => 'Статьяны ичиндеги',
'version-software' => 'Салыннган программа баджарыу',
'version-software-product' => 'Продукт',
'version-software-version' => 'Версия',
+'version-entrypoints' => 'Кириу нохталаны адреслери',
+'version-entrypoints-header-entrypoint' => 'Кириу нохта',
'version-entrypoints-header-url' => 'URL',
# Special:FilePath
'sqlite-no-fts' => '$1 толу текст излеуню хайырландыра билмеген',
# New logging system
+'logentry-delete-delete' => '$1, $3 бетни кетерди',
'revdelete-content-hid' => 'ичиндегиси джашырылыбды',
'revdelete-summary-hid' => 'тюрлендириуню ачыкълауу джашырылыбды',
'revdelete-uname-hid' => 'къошулуучуну аты джашырылыбды',
'api-error-invalid-file-key' => 'Ич халат: болджаллы асыраучу джерде файл табылмады.',
'api-error-mustbeposted' => 'Ич халат: соруу, HTTP POST инструкцияны излейди.',
'api-error-ok-but-empty' => 'Ич халат: сервер джууаб бермейди.',
+'api-error-timeout' => 'Сакълагъан заманны ичинде сервер джуууб бермейди.',
'api-error-unclassified' => 'Белгили болмагъан халат чыкъды',
'api-error-unknown-code' => 'Билинмеген халат: «$1».',
'api-error-unknown-error' => 'Ич халат: файлны джюклерге излеген сагъатда не эсе да терс болду.',
'prefs-setemail' => 'Donn en Adräß för de <i lang="en">e-mail</i> faßlääje',
'prefs-email' => '<i lang="en">e-mail</i>',
'prefs-rendering' => 'Et Sigge-Aanzeije',
-'saveprefs' => 'Fasshalde',
+'saveprefs' => 'Faßhalde',
'resetprefs' => 'Zeröck setze',
'restoreprefs' => 'Alles op der Shtandatt retuur stelle',
'prefs-editing' => 'Beim Bearbeide',
'tog-watchdefault' => 'За дуьзар хъувунвай ччинар зи гуьзетунин сиягьдиз алава авун',
'tog-watchmoves' => 'За тIвар эхцигай ччинар зи гуьзетунин сиягьдиз алава авун',
'tog-watchdeletion' => 'За алуднавай ччинар зи гуьзетунин сиягьдиз алава авун',
+'tog-minordefault' => 'Авайвилелди, вири дуьзар хъувунар гъвечIи дуьзар хъувунар хьиз лишан авун',
'tog-previewontop' => 'Сифтедин килигун дуьзар хъувундин дакIардин вилик эцига',
'tog-previewonfirst' => 'Дуьзар хъувундиз эгечIайла сифтедин килигун къалурун',
'tog-enotifwatchlistpages' => 'Зи гуьзетунин ччин масакIа хьайила заз эмейл ракъура.',
# Font style option in Special:Preferences
'editfont-style' => 'Дуьзар хъувунин чкадин шрифтдин жуьре',
+'editfont-default' => 'Браузердин низамарунрикай шрифт',
'editfont-monospace' => 'Моногьяркьуьвилер авай шрифт',
'editfont-sansserif' => 'КЬацI авачир шрифт',
'editfont-serif' => 'КьацI авай кхьин',
'september' => 'мара (сентябрь)',
'october' => 'баскӀум (октябрь)',
'november' => 'цӀехуьл (ноябрь)',
-'december' => 'фандукl (декабрь)',
+'december' => 'фундукӀ (декабрь)',
'january-gen' => 'гьер (январдиз)',
'february-gen' => 'эхен (февралдиз)',
'march-gen' => 'ибне (мартдиз)',
'recentchanges' => 'Mукьвара хьайи масакӀавилер',
'recentchanges-legend' => 'Цlийи масакIавилерин низамарунар',
'recentchanges-summary' => 'Викида хьанвай эхиримжи масакIавилер и ччина гуьзетун',
-'recentchanges-feed-description' => 'Ð\98 Ñ\85вала викида Ñ\85Ñ\8cанвай Ñ\8dÑ\85иÑ\80имжи маÑ\81акIавилеÑ\80 гÑ\83Ñ\8cзеÑ\82Ñ\83н',
+'recentchanges-feed-description' => 'Ð\98 Ñ\85вала викида Ñ\85Ñ\8cанвай Ñ\8dÑ\85иÑ\80имжи маÑ\81акIавилеÑ\80 вилив Ñ\85Ñ\83Ñ\8cн',
'recentchanges-label-newpage' => 'И дуьзар хъувун цlийи ччин туькlуьрна',
'recentchanges-label-minor' => 'Им гъвечlи дуьзар хъувун я',
'recentchanges-label-bot' => 'И дуьзар хъувун ботди авунвайд я',
'recentchangeslinked-toolbox' => 'Галкlанвай масакIавилер',
'recentchangeslinked-title' => '"$1" галаз галкlанавай масакIавилер',
'recentchangeslinked-noresult' => 'Ганвай чlава галкlанавай ччинра са масакIавални хьанвайд туш',
-'recentchangeslinked-summary' => 'Ð\98м кÑ\8aалÑ\83Ñ\80ай Ñ\87Ñ\87иниз (ва Ñ\8f кÑ\8aалÑ\83Ñ\80ай каÑ\82егоÑ\80иÑ\8fдиз гÑ\8cаÑ\82завай Ñ\87Ñ\87инÑ\80из) Ñ\8dлÑ\8fÑ\87Iзавай Ñ\87Ñ\87инÑ\80а мÑ\83кÑ\8cваÑ\80а Ñ\85Ñ\8cайи маÑ\81акIавилеÑ\80ин Ñ\81иÑ\8fгÑ\8c Ñ\8f. Ð\9aÑ\83Ñ\8c [[Special:Watchlist| гÑ\83Ñ\8cзеÑ\82Ñ\83нин Ñ\81иÑ\8fгÑ\8c ]]диз гьатзавай ччинар яцlу шрифтдал къалурнава.',
+'recentchangeslinked-summary' => 'Ð\98м кÑ\8aалÑ\83Ñ\80ай Ñ\87Ñ\87иниз (ва Ñ\8f кÑ\8aалÑ\83Ñ\80ай каÑ\82егоÑ\80иÑ\8fдиз гÑ\8cаÑ\82завай Ñ\87Ñ\87инÑ\80из) Ñ\8dлÑ\8fÑ\87Iзавай Ñ\87Ñ\87инÑ\80а мÑ\83кÑ\8cваÑ\80а Ñ\85Ñ\8cайи маÑ\81акIавилеÑ\80ин Ñ\81иÑ\8fгÑ\8c Ñ\8f. Ð\9aÑ\83Ñ\8c [[Special:Watchlist| вилив Ñ\85Ñ\83Ñ\8cнин Ñ\81иÑ\8fгÑ\8c ]]диз гьатзавай ччинар яцlу шрифтдал къалурнава.',
'recentchangeslinked-page' => 'Ччинин тlвар:',
'recentchangeslinked-to' => 'Аксина, къалурай ччиниз элячlзавай ччинра масакIавилер къалура',
'emailsend' => 'Ракъурун',
# Watchlist
-'watchlist' => 'Ð\97и гÑ\83Ñ\8cзеÑ\82Ñ\83нин сиягь',
-'mywatchlist' => 'Ð\97и гÑ\83Ñ\8cзеÑ\82Ñ\83нин сиягь',
+'watchlist' => 'Ð\97и вилив Ñ\85Ñ\83Ñ\8cнин сиягь',
+'mywatchlist' => 'Ð\97и вилив Ñ\85Ñ\83Ñ\8cнин сиягь',
'watchlistfor2' => '$1 $2 патал',
'addedwatchtext' => "Чар \"[[:\$1]]\" тун хъувунай куьн [[Special:Watchlist|watchlist]]. Къвезмай дегишунар и чарчел ва галкlанавай чарчихъ ихтилатар жеда инна, ахъатдава \"сакlус яцlу''''' инна [[Special:RecentChanges|list of recent changes]] гьам кьизил авун.",
'removedwatchtext' => 'Чар "[[:$1]]" Идай чlурнай [[Special:Watchlist|ахтармишунин цlарар]].',
-'watch' => 'Ð\93Ñ\83Ñ\8cзеÑ\82Ñ\83н',
+'watch' => 'Ð\92илив Ñ\85Ñ\83Ñ\8cн',
'watchthispage' => 'Гелкъуьн и хъувун',
-'unwatch' => 'Ð\93Ñ\83Ñ\8cзеÑ\82 ийимир',
-'watchlist-details' => 'Ð\9aÑ\83Ñ\8c гÑ\83Ñ\8cзеÑ\82Ñ\83нин Ñ\81иÑ\8fгÑ\8cда {{PLURAL:$1|$1 Ñ\87Ñ\87ин|$1 Ñ\87Ñ\87инаÑ\80}}, веревирдрин ччинар квачиз.',
+'unwatch' => 'Ð\92илив Ñ\85Ñ\83Ñ\8cмир',
+'watchlist-details' => 'Ð\9aÑ\83Ñ\8c вилив Ñ\85Ñ\83Ñ\8cнин Ñ\81иÑ\8fгÑ\8cда {{PLURAL:$1|$1 Ñ\87Ñ\87ин|$1 Ñ\87Ñ\87ин}} авайди Ñ\8f, веревирдрин ччинар квачиз.',
'wlshowlast' => 'Эхиримжи $1 сят $2 югъ $3 къалура',
-'watchlist-options' => 'Ð\93Ñ\83Ñ\8cзеÑ\82Ñ\83нин сиягьдин низамарунар',
+'watchlist-options' => 'Ð\92илив Ñ\85Ñ\83Ñ\8cнин сиягьдин низамарунар',
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'Килигун...',
# Contributions
'contributions' => 'Уртахди кутур крар',
'contributions-title' => '$1 уртахдин кутур крар',
-'mycontris' => 'За кутур крар',
+'mycontris' => 'За кутур кар',
'contribsub2' => '($1)-ин кутур пай ($2)',
'uctop' => '(вини кьил)',
'month' => ' Вацралай (ва адалай вилик)',
'tooltip-pt-userpage' => 'Куьн (уртахдин) ччин',
'tooltip-pt-mytalk' => 'Куь веревирдрин ччин',
'tooltip-pt-preferences' => 'Куь низамарунар',
-'tooltip-pt-watchlist' => 'Ð\9aÑ\83Ñ\8cне гÑ\83Ñ\8cзеÑ\82завай ччинрин сиягь',
+'tooltip-pt-watchlist' => 'Ð\9aÑ\83Ñ\8cне вилив Ñ\85Ñ\83Ñ\8cзвай ччинрин сиягь',
'tooltip-pt-mycontris' => 'Куьне авунвай дуьзар хъувунрин сиягь',
'tooltip-pt-login' => 'Квез гьахьиз теклифзава, анжах им мажбури туш',
'tooltip-pt-logout' => 'ЭкъечIун',
'tooltip-ca-protect' => 'И ччин хуьн',
'tooltip-ca-delete' => 'И ччин алудун',
'tooltip-ca-move' => 'Ччиндин тIвар масакIа авун',
-'tooltip-ca-watch' => 'Ð\98 Ñ\87Ñ\87ин кÑ\83Ñ\8c гÑ\83Ñ\8cзеÑ\82Ñ\83нин сиягьдиз алава авун',
-'tooltip-ca-unwatch' => 'Ð\98 Ñ\87Ñ\87ин кÑ\83Ñ\8c гÑ\83Ñ\8cзеÑ\82Ñ\83нин Ñ\81иÑ\8fгÑ\8cдал къахчун',
+'tooltip-ca-watch' => 'Ð\98 Ñ\87Ñ\87ин кÑ\83Ñ\8c вилив Ñ\85Ñ\83Ñ\8cнин сиягьдиз алава авун',
+'tooltip-ca-unwatch' => 'Ð\98 Ñ\87Ñ\87ин кÑ\83Ñ\8c вилив Ñ\85Ñ\83Ñ\8cнин Ñ\81иÑ\8fгÑ\8cдай къахчун',
'tooltip-search' => '{{SITENAME}} къекъуьн',
'tooltip-search-go' => 'АватIа, гьа и тIвар авай ччиниз элячIун',
'tooltip-search-fulltext' => 'Къалурай текст авай ччинар жугъурун',
'tooltip-preview' => 'Ччин хуьдалди вилик, сифте килигун кардик кутун тавакъу ийизва',
'tooltip-diff' => 'Сифте кьилин текстдиз талукь тир куьне авунвай масакIавилер къалурун',
'tooltip-compareselectedversions' => 'И ччинин кьве хкягъай жуьрейрин арада авай тафаватдиз килигун',
-'tooltip-watch' => 'Ð\98 Ñ\87Ñ\87ин кÑ\83Ñ\8c гÑ\83Ñ\8cзеÑ\82Ñ\83нин сиягьдиз алава авун',
+'tooltip-watch' => 'Ð\98 Ñ\87Ñ\87ин кÑ\83Ñ\8c вилив Ñ\85Ñ\83Ñ\8cнин сиягьдиз алава авун',
'tooltip-rollback' => '« КЬулухъди чIугун » и ччиндиз эхиримжи кар кутазвайди патай авунвай дуьзар хъувунар са т!ампуналди paxкурзава',
'tooltip-undo' => '«Гьич авун» авунвай дуьзар хъувун paxкурзава ва сифтедин килигунин режимда дуьзар хъувундин форма ахъа йийзва. Им нетижадиз себеб алава йийз мумкинвал гузва',
'tooltip-summary' => 'Куьруь нетижа гьадрун',
'nchanges' => '$1 {{PLURAL:$1|bewerking|bewerkinge}}',
'recentchanges' => 'Lètste verangeringe',
'recentchanges-legend' => 'Opties veur recènte verangeringe',
-'recentchanges-summary' => 'op dees pagina kins doe de recènte verangeringe in deze wiki bekieke.',
+'recentchanges-summary' => 'Volg de recènste bewirkinge op deze wiki op dees pagina.',
'recentchanges-feed-description' => 'Volg de meis recente bewerkinge in deze wiki via deze feed.',
'recentchanges-label-newpage' => "Mit dees verangering is 'n nuuj pagina aangemaak",
'recentchanges-label-minor' => "Dit is 'n klein bewirking",
'wlshowlast' => 'Darkar $1 kalta-a tihdanglam tilang rawh , ni $2 kalta-a tihdanglam tilang rawh, $3 tilang rawh',
'watchlist-options' => 'Ralvèn duhdàn',
+'enotif_reset' => 'Phêk zawng zawng tlawh tawh vek angin chhinchhiah rawh.',
+'enotif_newpagetext' => 'Hei hi phêk thar a ni.',
'enotif_impersonal_salutation' => '{{SITENAME}} hmangtu',
'changed' => 'tihdanglam a ni ta',
'created' => 'siam a ni ta',
# Namespace form on various pages
'namespace' => 'Hminghmun:',
'invert' => 'Thlan lêtna',
+'namespace_association' => 'Hminghmun kaihhnawih',
'blanknamespace' => '(Phekpui)',
# Contributions
'contributions-title' => '$1 kutthawhnate',
'mycontris' => 'Ka kutthawhnate',
'contribsub2' => '$1 tan ($2) .',
+'nocontribs' => 'I zawn mil tihdanglamna a awm miah lo a nih hmel.',
'uctop' => '(chung)',
'month' => 'Thla (leh a hmalam):',
'year' => 'Kum (leh a hmalam):',
'sp-contributions-newbies' => 'Siangchan tharte kut-thawhna chauh tilang rawh',
+'sp-contributions-newbies-sub' => 'Siangchan thar tán',
+'sp-contributions-newbies-title' => 'Siangchan thar tána hmangtu kutthawhnate',
'sp-contributions-blocklog' => 'danbeh chhinchhiahna',
'sp-contributions-uploads' => 'hlankaite',
'sp-contributions-logs' => 'chanchin-ziak',
'file-info-png-frames' => '{{PLURAL:$1|ഒരു ഫ്രെയിം|$1 ഫ്രെയിം}}',
# Special:NewFiles
-'newimages' => 'à´ªàµ\81തിയ à´ªàµ\8dരമാണà´\99àµ\8dà´\99à´³àµ\81à´\9fàµ\86 à´\97ാലറി',
+'newimages' => 'à´ªàµ\81തിയ à´ªàµ\8dരമാണà´\99àµ\8dà´\99à´³àµ\81à´\9fàµ\86 à´\9aà´¿à´¤àµ\8dരശാല',
'imagelisttext' => '$2 നൽകിയിട്ടുള്ള {{PLURAL:$1|പ്രമാണത്തിന്റെ|$1 പ്രമാണങ്ങളുടെ}} പട്ടിക താഴെ കാണാം.',
'newimages-summary' => 'ചുരുക്കം',
'newimages-legend' => 'അരിപ്പ',
'note' => "'''Nota:'''",
'previewnote' => "'''Ftakar li din hija biss dehra proviżorja.'''
It-tibdiliet tiegħek għadhom ma ġewx salvati!",
+'continue-editing' => 'Kompli l-modifika',
'previewconflict' => "Din il-previżjoni turi l-kliem li jinsab fiż-żona ta' modifika superjuri u turi kif tidher kieku l-paġna kella tiġi modifikata.",
'session_fail_preview' => "'''Jiddispjaċina imma l-modifika tiegħek ma setgħetx tiġi pproċessata minħabba li ntilfet l-informazzjoni tas-sessjoni.
Jekk jogħġbok, erġa' pprova. Jekk xorta tibqa' ma taħdimx, ipprova [[Special:UserLogout|oħroġ]] u erġa' idħol.'''",
'faqpage' => 'Project:FAQ',
# Vector skin
-'vector-action-addsection' => 'اÛ\8cضاÙ\81Ù\87 Ù\87کردÙ\86 عÙ\88Ù\86Ù\88ان',
+'vector-action-addsection' => 'ترÙ\86Ù\87 Ú¯Ù¾ بزÙ\88ئن',
'vector-action-delete' => 'پاک هاکردن',
'vector-action-move' => 'دکش هاکردن',
'vector-action-protect' => 'زلفن بزوئن',
'undelete_short' => '{{PLURAL:$1|ä Ännerung|$1 Ännerunge}} widderherschdelle',
'protect' => 'schitze',
'protect_change' => 'ännere',
-'unprotect' => 'Widder freigewwe',
+'unprotect' => 'Saideschudz änare',
'newpage' => 'Naie Said',
'talkpage' => 'Iwwer die Said dischbediere',
'talkpagelinktext' => 'Dischbediere',
'immobile-target-namespace' => 'A peul pa tramudé dle pàgine vers lë spassi nominal «$1»',
'immobile-target-namespace-iw' => "Na liura interwiki a l'é pa na destinassion vàlida për tramudé na pàgina.",
'immobile-source-page' => 'Sta pàgina-sì as peul pa tramudesse.',
-'immobile-target-page' => 'As peul pa tramudess al tìtol dë sta destinassion-sì.',
-'imagenocrossnamespace' => 'As peul pa tramudé un file fòra dal sò namespace',
+'immobile-target-page' => 'As peul pa tramudesse vers cost tìtol ëd destinassion.',
+'imagenocrossnamespace' => "As peul pa tramudesse n'archivi a në spassi nominal diferent",
'nonfile-cannot-move-to-file' => "As peul nen tramudesse lòn ch'a l'é pa n'archivi a lë spassi nominal dj'archivi",
-'imagetypemismatch' => 'La neuva estension dël file a corispond pa a sò tipo',
-'imageinvalidfilename' => "Ël nòm dël file pontà a l'é pa vàlid",
-'fix-double-redirects' => 'Modìfica minca rediression che a ponta al tìtol original',
-'move-leave-redirect' => 'Lassa na rediression',
+'imagetypemismatch' => "La neuva estension ëd l'archivi a corispond pa a sò tipo",
+'imageinvalidfilename' => "Ël nòm ëd l'archivi bërsaj a l'é nen bon",
+'fix-double-redirects' => 'Agiorné tute le ridiression che a ponto vers ël tìtol original',
+'move-leave-redirect' => 'Lassé na ridiression',
'protectedpagemovewarning' => "'''Avis:''' Sta pàgina-sì a l'é stàita blocà parèj che mach utent con drit d'aministrator a peulo tramudela.
L'ùltima vos dël registr a l'é smonùa sì-sota për arferiment:",
'semiprotectedpagemovewarning' => "'''Nòta:''' Sta pàgina-sì a l'é stàita blocà parèj che mach j'utent argistrà a peulo tramudela.
'backend-fail-writetemp' => 'Não foi possível gravar no arquivo temporário.',
'backend-fail-closetemp' => 'Não foi possível fechar o arquivo temporário.',
'backend-fail-read' => 'Não foi possível ler o arquivo $1.',
-'backend-fail-create' => 'Não foi possível criar o arquivo $1.',
-'backend-fail-maxsize' => 'Não foi possível criar o arquivo $1 por ele ser maior que {{PLURAL:$2|1 byte|$2 bytes}}.',
+'backend-fail-create' => 'Não foi possível criar ou alterar o arquivo $1.',
+'backend-fail-maxsize' => 'Não foi possível criar ou alterar o arquivo $1 por ele ser maior que {{PLURAL:$2|1 byte|$2 bytes}}.',
'backend-fail-readonly' => 'O servidor de armazenamento "$1" está atualmente no modo "somente leitura". A razão dada foi: "$2"',
'backend-fail-synced' => 'O arquivo "$1" está em um estado inconsistente dentro do sistema de armazenamento interno',
'backend-fail-connect' => 'Não foi possível se conectar com o servidor de armazenamento "$1".',
*Parameter $3 is a log comment for the merge',
'mergehistory-same-destination' => 'Error message shown on [[Special:MergeHistory]] when the user entered the same page title to both source and destination',
'mergehistory-reason' => '{{Identical|Reason}}',
+'mergehistory-revisionrow' => 'A revision row in the merge history page. Parameters:
+* $1 is a radio button to indicate a merge point,
+* $2 is a link to the last revision of a page ({{msg-mw|last}}),
+* $3 is a page link,
+* $4 is a user link,
+* $5 is a revision size,
+* $6 is a revision comment',
# Merge log
'mergelog' => 'This is the name of a log of merge actions done on [[Special:MergeHistory]]. This special page and this log is not enabled by default.',
*{{msg-mw|Days}}',
# Bad image list
-'bad_image_list' => 'This is only message appears to guide administrators to add links with right format. This will not appear anywhere else in Mediawiki.',
+'bad_image_list' => 'This message only appears to guide administrators to add links with the right format. This will not appear anywhere else in MediaWiki.',
/*
Short names for language variants used for language conversion links.
'prefs-beta' => 'Funziune de Beta',
'prefs-datetime' => 'Date e ore',
'prefs-labs' => 'Funziune de Labs',
+'prefs-user-pages' => "Pàgene de l'utende",
'prefs-personal' => "Profile de l'utende",
'prefs-rc' => 'Cangiaminde recende',
'prefs-watchlist' => 'Pàggene condrollete',
'badaccess-groups' => 'Am do oka kạmim menjoṅkan ona do khạli {{PLURAL:$2 rạsiạkore noa rạsiạreaḱ mit́ṭenre}} mitṭen beoharić sompadon daṛeyaḱa: $1.',
'versionrequired' => 'Meḍiawiki reaḱ $1 nãwã aroe jạruṛa',
-'versionrequiredtext' => 'Noa sakam beohar lạgit́te meḍiawikire $1 nambar nãwã araoe jạruṛa. [[Special:Version nãwã aro sakam]] ńelmẽ.',
+'versionrequiredtext' => 'Noa sakam beohar lạgit́te meḍiaWikire $1 nambar nãwã araoe jạruṛa.
+[[Special:Version nãwã aroe sakam]] ńelmẽ.',
'ok' => 'Ṭhik gea',
'retrievedfrom' => '"$1" khon ñam ạgui',
'virus-unknownscanner' => 'Baṅ urum anṭvayras:',
# Login and logout pages
-'welcomecreation' => 'Johar, $1!
+'welcomecreation' => '== Johar $1! ==
Amaḱ ekaunṭ do tearena.
-Menkhan amaḱ [[Special:Preferance {{SITENAME}} pạsindko]] thir dohoe lạgit́te alom hiṛińa.',
+Amaḱ [[Special:Preferance {{SITENAME}} pạsindko]] thir dohoe lạgit́te alom hiṛińa.',
'yourname' => 'Beoboharicaḱ ńutum',
'yourpassword' => 'Uku namber',
'yourpasswordagain' => 'Arhõ oku namber olme',
'noname' => 'Am do asol beoharićaḱ ńutum ṭhikte bam emakada.',
'loginsuccesstitle' => 'Bhitri boloḱ do moctege puraoena',
'loginsuccess' => '\'\'\'Am do nitge "$1" ńutumte {{SITENAME}} rem bolo akana.',
-'nosuchuser' => '"$1" ńutumte jahan beoharko bạnuḱkoa.
+'nosuchuser' => '"$1" ńutuman jahan beoharić bạnuea.
Beoharićaḱ ńutum do bukṛogea.
Amaḱ bananko ńelmẽ, se [[Special:Userlogin/signup nãwã mit́ṭen ekaunṭ tearmẽ]].',
'nosuchusershort' => '"$1" ńutuman jahãe beoharko do banuḱkoa. Ńutum reaḱ banan biḍaomẽ.',
Daya kate arhõ mitdhom kurumuṭuyme.',
'wrongpasswordempty' => 'Em hoyen oku nambar do cetge banuḱa.
Daya katet́ arhõ kurumuṭuyme.',
-'passwordtooshort' => 'Oku nambar do kom katet́ hoyoḱ jạruṛa 6 olko mudre',
+'passwordtooshort' => 'Uku nambar do {{PLURAL:$1 1 horop reaḱ $1 horop reaḱ}} mudre hoyoḱ jạruṛa.',
'password-name-match' => 'Amaḱ oku nambar do amaḱ ńutum khon eṭaḱ hoyoḱ jạruṛtama.',
'password-login-forbidden' => 'Noa laṛcaṛicaḱ ńutum ar oku nambar do ạnlekate baṅkana.',
'mailmypassword' => 'E-mail reaḱ nãwã uko katha',
'login-abort-generic' => 'Amaḱ bhitri boloḱ do baṅ hoylena - batena.',
'loginlanguagelabel' => 'katha: $1',
+# E-mail sending
+'user-mail-no-addy' => 'Jahan e-mail ṭhikana bạgi kate e-mail kul kurumuṭu hoena.',
+
# Change password dialog
'resetpass' => 'Oku nambar bodol',
'resetpass_header' => 'Ekaunṭ oku namber bodol',
'anoneditwarning' => "'''Sabdhan:''' amdo begor logkatem bolowakana.
Amaḱ IP ṭhikana do noa sakam sompadon jạṛre rekorḍoḱa.",
'anonpreviewwarning' => '"Am do bhitri bam bolo akana. Noa sakamre amaḱ kạmiko jạre IP ṭhiikạ̣nare rukhiyạ ḱa."',
+'missingcommenttext' => 'Daya kate amaḱ menaḱ katha latare olmẽ.',
'summary-preview' => 'Guṭ katha unuduḱ:',
'subject-preview' => 'Babot/Guṭkatha unuduḱ:',
'blockedtitle' => 'Beoharić doe eset ocoakana.',
+'blockednoreason' => 'jahan babot baṅ em akana',
+'whitelistedittext' => 'Sakamre sompadon lạgit́te $1 em hoyoḱa.',
+'nosuchsectiontitle' => 'Pahaṭa bȧn ńamlena',
+'loginreqtitle' => 'Boloḱ jạruṛa',
'loginreqlink' => 'Bhitri boloḱ',
'loginreqpagetext' => 'Eṭagaḱ sakamko ńel lạgit́te do am $1 hoyoḱ jạruṛtama.',
'accmailtitle' => 'Uku nambar do kulena.',
'template-protected' => 'Rukhiạ',
'template-semiprotected' => '(Kạṭic-rukhiyạ)',
'hiddencategories' => 'Noa sakam do {{PLURAL:$1 1 ukuakan bhag $1 uku akan bhagkorenaḱ}} gaõtarenge:',
+'nocreatetitle' => 'Sakam tear do akoṭgea',
'nocreate-loggedin' => 'Nãwã sakam tear lạgit́te am do ạidạri em baṅ hoeakana.',
'sectioneditnotsupported-title' => 'Pahaṭa sompadona do bae hataoeda',
'sectioneditnotsupported-text' => 'Noa sompadona sakamre pahaṭa sompadona do bae hataoeda',
'rev-delundel' => 'ńeloḱ/danaṅ',
'rev-showdeleted' => 'Uduḱme',
'revisiondelete' => 'Get giḍi/nãwã aro baṅ getgiḍi',
+'revdelete-nologtype-title' => 'Jahan cạbi ṭayep baṅ em emakana',
+'revdelete-nologtype-text' => 'Am do paseć noa kạmie lạgit́te jahan cạbi bam bachao akada.',
'revdelete-show-file-submit' => 'Hẽ',
'revdelete-hide-text' => 'Nãwã aroe olko ukuemẽ',
'revdelete-hide-image' => 'Rẽt reaḱ babotko ukue mẽ',
'revdelete-hide-name' => 'Kạmi ar bejha ukue mẽ',
+'revdelete-hide-comment' => 'Sompadon gut katha ukue mẽ',
+'revdelete-hide-user' => 'Sompadonićaḱ beohar ńutum/IP ṭhikạna ukuemẽ',
'revdelete-radio-same' => '(alom bodola)',
'revdelete-radio-set' => 'Hẽ',
'revdelete-radio-unset' => 'Baṅ',
+'revdelete-log' => 'Babot:',
'revdel-restore' => 'Judạ lekate ńel',
'revdel-restore-deleted' => 'giḍikaḱ ńel ruạṛ',
'revdel-restore-visible' => 'Ńeloḱ leka paṛhao ruạṛ',
'deletedhist' => 'Get giḍi jạṛ',
'revdelete-reasonotherlist' => 'Eṭaḱak karon',
+# History merging
+'mergehistory-reason' => 'Babot:',
+
# Merge log
'revertmerge' => 'bań mit́',
'viewprevnext' => 'Ńelme ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''Noa wiki re do \"[[:\$1]] ńutum sakam menaḱa",
'searchmenu-new' => 'wiki re [[:$1]]nãwã sakam tear',
+'searchhelp-url' => 'Help: Goṛawaḱ',
'searchprofile-articles' => 'Menaḱaḱ sakamko',
'searchprofile-project' => 'Go̠ṛo ar Project sakam',
'searchprofile-images' => 'Multimedia',
'search-redirect' => '($1 te sujhi doṛha )',
'search-section' => '(Pahaṭa $1)',
'search-suggest' => 'Am do cet́ $1 em menocoyet tãhẽkana',
+'search-interwiki-caption' => 'Hopon porjekṭko',
+'search-interwiki-default' => '$1 folko:',
+'search-interwiki-more' => '(Arhõ)',
'searchrelated' => 'songenko',
'searchall' => 'Sanam',
'showingresultsheader' => "'''$4''' lạgit́ {{PLURAL:$5|Pho̠l ńamoḱ́akan - '''$1''' of '''$3'''|Pho̠l ńamoḱ́akan '''$1 - $2''' of '''$3'''}}",
'timezoneregion-africa' => 'Aphrika',
'timezoneregion-america' => 'Amirika',
'timezoneregion-asia' => 'Esiya',
+'timezoneregion-australia' => 'Ausṭralia',
'prefs-files' => 'Rẽtko',
'youremail' => 'E-mail:',
'username' => 'Beoharićaḱ ńutum:',
'uid' => 'Beoharićaḱ cinhạo nombor',
'yourrealname' => 'Sạri ńutum',
+'yourlanguage' => 'Pạrsi:',
'gender-male' => 'Baba hoṛ',
'gender-female' => 'Gogo hoṛ, Kuṛi, Kuṛi gidrạ',
'email' => 'E-mail',
'saveusergroups' => 'Beoharićaḱ gãotako rukhiyaymẽ',
# Rights
+'right-read' => 'Sakamko paṛhaomẽ',
'right-edit' => 'Sakamko toṅge',
'right-createpage' => 'Sakamko benoamẽ (Okako do galmarao sakamko baṅkan)',
'right-createtalk' => 'Galmarao sakamko benaomẽ',
'userpage-userdoesnotexist-view' => 'Benutserkonto „$1“ bestoant nit.',
'blocked-notice-logextract' => 'Dissen Benutser is apstuuns speerd.
Foar Information foulget n aktuellen Iendraach uut dät Benutser-Logbouk:',
-'clearyourcache' => "'''Bemäärkenge: Ätter dät Fäästlääsen kon dät nöödich weese, dän Browser-Cache loostoumoakjen, uum do Annerengen sjo tou konnen.'''
-'''Mozilla / Firefox / Safari:''' hoold ''Shift'' deel un klik ''Reload,'' of tai ''Ctrl-F5'' of ''Ctrl-R'' (''Command-R'' ap n Mac); '''Konqueror: '''klik ''Reload'' of tai ''F5;'' '''Opera:''' moak dän cache loos in ''Tools → Preferences;'' '''Internet Explorer:''' hoold ''Ctrl'' deel un klik ''Refresh,'' of tai ''Ctrl-F5.''",
+'clearyourcache' => "'''Bemäärkenge: Ätter dät Fäästlääsen dän Browser-Cache loosmoakje, uum do Annerengen sjo tou konnen.'''
+*'''Firefox / Safari:''' hoold ''Uumskalttaste'' deel un klik deerbie ''Aktualisierje'' of tai ''Strg+F5'' of ''Strg+R'' (''⌘+R'' ap n Mac)
+* '''Google Chrome:''' ''Uumskalttaste+Strg+R'' (''⌘+Uumskalttaste+R'' ap n Mac) taie
+* '''Internet Explorer:''' ''Strg+F5'' taie of ''Strg'' taie un tou glieke Tied ''Aktualisieren'' anklikke
+* '''Opera:''' ''Extras → Internetspuuren läskje … → Individuelle Uutwoal → Dän komplette Cache läskje''
+*'''Konqueror: '''klik ''Aktualisieren'' of tai ''F5;''",
'usercssyoucanpreview' => "'''Tipp:''' Benutse dän „{{int:showpreview}}“-Knoop, uum dien näi CSS foar dät Spiekerjen tou tästjen.",
'userjsyoucanpreview' => "'''Tipp:''' Benutse dän „{{int:showpreview}}“-Knoop, uum dien näi JavaScript foar dät Spiekerjen tou tästjen.",
'usercsspreview' => "== Foarbekiek fon dien Benutser-CSS ==
Naiere Angoawen toun Läskfoargong as uk ne Begründenge fiende sik in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
'rev-deleted-text-unhide' => "Disse Version wuud '''läsked'''.
Details stounde in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].
-As Administrator koast du noch [$1 ju Version bekiekje], wan du fääregunge moatest.",
+Du koast [$1 ju Version bekiekje], wan du fääregunge moatest.",
'rev-suppressed-text-unhide' => "Disse Version wuud '''unnerdrukt'''.
Details stounde in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].
-Du as Administrator koast [$1 disse Version bekiekje], wan du et wonskest.",
+Du koast [$1 disse Version bekiekje], wan du moatest.",
'rev-deleted-text-view' => "Disse Version wuude '''läsked'''.
-As Administrator koast du ju wieders ienkiekje.
-Naiere Angoawen toun Läskfoargong as uk ne Begründenge fiende sik in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
+Du koast ju ienkiekje, wan du moatest.
+Naiere Angoawen fiende sik in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
'rev-suppressed-text-view' => "Disse Version wuud '''unnerdrukt'''.
-Administratore konnen ju ienkiekje; Details stounde in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].",
+Du koast ju ienkiekje, wan du moatest.
+Details stounde in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].",
'rev-deleted-no-diff' => "Du koast dissen Unnerskeed nit betrachtje, deer een fon do Versione '''läsked''' wuude.
Details stounde in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
'rev-suppressed-no-diff' => "Du koast dissen Versionsunnerskeed nit betrachtje, deer een fon do Versione '''läsked''' wuud.",
'rev-deleted-unhide-diff' => "Een fon do Versione fon dissen Unnerskeed wuud '''läsked'''.
Details stounde in dät [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].
-As Adminstrator koast du noch [$1 dissen Versionsunnerskeed bekiekje] wan du fääregunge wolt.",
+Du koast [$1 dissen Versionsunnerskeed bekiekje] wan du moatest.",
'rev-suppressed-unhide-diff' => "Een fon do Versione fon dissen Unnerskeed wuud '''unnerdrukt'''.
Details stounde in dät [{{fullurl:{{#special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].
-As Adminstrator koast du noch [$1 dissen Versionsunnerskeed bekiekje] wan du fääregunge wolt.",
-'rev-deleted-diff-view' => "Ne Version fon dissen Versionsunnerskeed wuud '''läsked'''.
-As Administrator koast du dissen Versionsunnerskeed sjo. Details fiende sik in dät [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
+Du koast [$1 dissen Versionsunnerskeed bekiekje] wan du wolt.",
+'rev-deleted-diff-view' => "Een fon do Versione fon dissen Versionsunnerskeed wuud '''läsked'''.
+Du koast dissen Versionsunnerskeed bekiekje, wan du wolt.
+Naiere Angoawen fiende sik in dät [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Läsk-Logbouk].",
'rev-suppressed-diff-view' => "Een fon do Versione fon dissen Versionsunnerskeed wuud '''unnerdrukt'''.
-As Administrator koast du dissen Versionsunnerskeed sjo. Details fiende sik in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].",
+Du koast dissen Versionsunnerskeed bekiekje, wan du wolt. Details fiende sik in dät [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Unnerdrukkengs-Logbouk].",
'rev-delundel' => 'wiese/ferbierge',
'rev-showdeleted' => 'wies',
'revisiondelete' => 'Versione läskje/wier häärstaale',
# Suppression log
'suppressionlog' => 'Uursicht-Logbouk',
-'suppressionlogtext' => 'Dit is dät Logbouk fon do Uursicht-Aktione (Annerengen fon ju Sichtboarhaid fon Versione, Beorbaidengskommentare, Benutsernoomen un Benutserspeeren).',
+'suppressionlogtext' => 'Dit is dät Logbouk fon do Uursicht-Aktione (Annerengen fon ju Sichtboarhaid fon Versione, Beorbaidengskommentare, Benutsernoomen un Benutserspeeren).
+Sjuch ju [[Special:BlockList|Lieste fon speerde IP-Adressen un Benutsernoomen]] foar aktuelle Speeren.',
# History merging
'mergehistory' => 'Versionsgeskichten fereenigje',
'qbsettings-fixedright' => 'Gjuchts, fääst',
'qbsettings-floatingleft' => 'Links, swieuwjend',
'qbsettings-floatingright' => 'Gjuchts, swieuwjend',
+'qbsettings-directionality' => 'Fääst, ouhongich fon de Skrieuwgjuchte fon ju wäälde Sproake',
# Preferences page
'preferences' => 'Ienstaalengen',
'prefs-skin' => 'Skin',
'skin-preview' => 'Foarskau',
'datedefault' => 'Neen Preferenz',
+'prefs-beta' => 'Beta-Funktione',
'prefs-datetime' => 'Doatum un Tied',
+'prefs-labs' => 'Alpha-Funktione',
'prefs-personal' => 'Benutserdoaten',
'prefs-rc' => 'Bekoandreekenge fon "Lääste Annerengen"',
'prefs-watchlist' => 'Beooboachtengslieste',
'rightslog' => 'Gjuchte-Logbouk',
'rightslogtext' => 'Dit is dät Logbouk fon do Annerengen fon do Benutsergjuchte.',
'rightslogentry' => 'annerde ju Gruppentouheeregaid foar „$1“ fon „$2“ ap „$3“.',
+'rightslogentry-autopromote' => 'wuud automatisk fon „$2“ ätter „$3“ touoardend',
'rightsnone' => '(-)',
# Associated actions - in the sentence "You do not have permission to X"
'large-file' => 'Jädden neen Bielde uur $1 hoochleede; disse Doatäi is $2 groot.',
'largefileserver' => 'Disse Doatäi is tou groot, deer die Server so konfigurierd is, dät Doatäien bloot bit tou ne bestimde Grööte apzeptierd wäide.',
'emptyfile' => 'Ju hoochleedene Doatäi is loos. Die Gruund kon n Typfailer in dän Doatäinoome weese. Kontrollierje jädden, of du ju Doatäi wuddelk hoochleede wolt.',
+'windows-nonascii-filename' => 'Dit Wiki unnerstöänt neen Doatäinoomen do der Sunnerteekene änthoolde.',
'fileexists' => "Ne Doatäi mäd dissen Noome bestoant al.
Wan du ap 'Doatäi spiekerje' klikst, wäd ju Doatäi uurskrieuwen.
Unner '''<tt>[[:$1]]</tt>''' koast du die bewisje, of du dät wuddelk wolt.
# img_auth script messages
'img-auth-accessdenied' => 'Tougriep ferwäigerd',
'img-auth-nopathinfo' => 'PATH_INFO failt.
-Dien Server is nit deerfoar iengjucht, disse Information fääretoureeken.
-Dät kuud CGI-basierd weese un unnerstutset img_auth nit.
+Die Server is nit deerfoar iengjucht, disse Information fääretoureeken.
+Ju kuud CGI-basierd weese un unnerstutset img_auth nit.
Sjuch https://www.mediawiki.org/wiki/Manual:Image_Authorization.',
'img-auth-notindir' => 'Dät wonskede Paad is nit in dät konfigurierde Uploadferteeknis.',
'img-auth-badtitle' => 'Uut „$1“ kon naan gultigen Tittel moaked wäide.',
Dit Wiki wuud as n eepentelk Wiki konfigurierd.
Uut Sicherhaidsgruunde is img_auth.php deaktivierd.',
'img-auth-noread' => 'Benutser häd neen Begjuchtigenge, „$1“ tou leesen.',
+'img-auth-bad-query-string' => 'Ju URL wiest ne uungultige Oufroageteekenfoulge ap.',
# HTTP errors
'http-invalid-url' => 'Uungultige URL:$1',
'upload_source_file' => ' (ne Doatäi ap Jou Computer)',
# Special:ListFiles
-'listfiles-summary' => 'Disse Spezialsiede liestet aal hoochleedene Doatäie ap. Standoardmäitich wäide do toulääst hoochleedene Doatäie toueerst anwiesd. Truch n Klik ap do Spaltenuurskrifte kon ju Sortierenge uumetroald wäide of der kon ätter ne uur Spalte sortierd wäide.',
+'listfiles-summary' => 'Disse Spezialsiede liestet aal hoochleedene Doatäie ap.
+Sofier ätter n bestimden Benutser sieuwed wäd, wäide bloot do Doatäie wiesd, bie doo hie ju laäste Version hoochleeden häd.',
'listfiles_search_for' => 'Säik ätter Doatäi:',
'imgfile' => 'Doatäi',
'listfiles' => 'Bieldelieste',
Ne [[Special:WhatLinksHere/$2|fulständige Lieste]] is ferföigboar.',
'nolinkstoimage' => 'Naan Artikkel benutset disse Bielde.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Wiedere Ferbiendengen]] foar disse Doatäi.',
+'linkstoimage-redirect' => '$1 (Doatäifääreleedenge) $2',
'duplicatesoffile' => '{{PLURAL:$1|Ju foulgjende Doatäi is n Duplikoat|Do foulgjende $1 Doatäie sunt Duplikoate}} fon disse Doatäi ([[Special:FileDuplicateSearch/$2|wiedere Details]]):',
'sharedupload' => 'Disse Doatäi stamt uut $1 un duur fon uur Projekte ferwoand wäide.',
'sharedupload-desc-there' => 'Disse Doatäi stamt uut $1 un duur fon uur Projekte ferwoand wäide. Sjuch ap ju [$2 Doatäibeskrieuwengssiede] ätter wiedere Informatione.',
'statistics-users-active-desc' => 'Benutsere mäd Beoarbaidengen {{PLURAL:$1|in do lääste 24 Uuren|in do fergeene $1 Deege}}',
'statistics-mostpopular' => 'Maast besoachte Sieden',
-'disambiguations' => 'Begriepskläärengssieden',
+'disambiguations' => 'Sieden do der ap Begriepskläärengssieden ferlinkje',
'disambiguationspage' => 'Template:Begriepskläärenge',
'disambiguations-text' => "Do foulgjende Sieden ferlinkje ap ne Siede tou ju '''Begriepskläärenge'''.
Jie skuulen insteede deerfon ap ju eegentelk meende Siede ferlinkje.<br />
'booksources-invalid-isbn' => 'Fermoudelk is ju ISBN uungultich. Säik ätter Failere in ju Kopie.',
# Special:Log
-'specialloguserlabel' => 'Benutser:',
-'speciallogtitlelabel' => 'Tittel:',
+'specialloguserlabel' => 'Uutfierenden Benutser:',
+'speciallogtitlelabel' => 'Siel (Tittel of Benutser):',
'log' => 'Logbouke',
'all-logs-page' => 'Aal eepentelke Logbouke',
'alllogstext' => 'Dit is ne kombinierde Anwiesenge fon aal Logbouke fon {{SITENAME}}.
'linksearch-pat' => 'Säikmuster:',
'linksearch-ns' => 'Noomensruum:',
'linksearch-ok' => 'Säike (012)',
-'linksearch-text' => 'Disse Spezialsiede moaket ju Säike muugelke ätter Sieden, in do bestimde Webferbiendengen äntheelden sunt. Deerbie konne Wildcards as biespilswiese <tt>*.example.com</tt> benutsed wäide.<br />Unnerstutsede Protokolle: <tt>$1</tt>',
+'linksearch-text' => 'Disse Spezioalsiede moaket ju Säike muugelke ätter Sieden, in do bestimde Webferbiendengen äntheelden sunt. Deerbie konnen Ploatshooldere as biespilswiese <tt>*.biespiell.de</tt> benutsed wäide. Der mout ap minste een Top-Level-Domai, t.B. „*.org“. anroat wäide. <br />Unnerstutsede Protokolle: <tt>$1</tt> (Disse jädden nit bie ju Säikanfroage anreeke.)',
'linksearch-line' => '$1 is ferlinked fon $2',
'linksearch-error' => 'Wildcards konnen bloot an dän Ounfang fon ju URL ferwoand wäide.',
'noemailtext' => 'Dissen Benutser häd neen gultige Email-Adrässe anroat.',
'nowikiemailtitle' => 'E-Mail-Ferseendenge nit muugelk',
'nowikiemailtext' => 'Dissen Benutser moate neen E-Mails fon uur Benutsere kriege.',
+'emailnotarget' => 'Nit foarhoundenen of uungultigen Benutsernoome foar dän Ämpfangst fon ne E-Mail.',
+'emailtarget' => 'Benutsernoome fon dän Ämpfanger ienreeke',
+'emailusername' => 'Benutsernoome:',
+'emailusernamesubmit' => 'Fääre',
'email-legend' => 'E-Mail an n uur {{SITENAME}}-Benutser seende',
'emailfrom' => 'Fon:',
'emailto' => 'An:',
'watchlistanontext' => 'Du moast die $1, uum dien Beooboachtengslieste tou sjoon of Iendraage ap hier tou beoarbaidjen.',
'watchnologin' => 'Du bäst nit anmälded',
'watchnologintext' => 'Du moast [[Special:UserLogin|anmälded]] weese, uum dien Beooboachtengslieste tou beoarbaidjen.',
+'addwatch' => 'Tou Beooboachtengslieste bietouföigje',
'addedwatchtext' => "Die Artikkel \"[[:\$1]]\" wuude an dien [[Special:Watchlist|Foulgelieste]] touföiged.
Leetere Annerengen an dissen Artikkel un ju touheerende Diskussionssiede wäide deer liested
un die Artikkel wäd in ju [[Special:RecentChanges|fon do lääste Annerengen]] in '''Fatskrift''' anroat.
Wan du die Artikkel wier fon ju Foulgelieste ou hoalje moatest, klik ap ju Siede ap \"Ferjeet disse Siede\".",
+'removewatch' => 'Fon ju Beooboachtengslieste wächhoalje',
'removedwatchtext' => 'Ju Siede „[[:$1]]“ wuude fon dien [[Special:Watchlist|Beooboachtengslieste]] wächhoald.',
'watch' => 'Beooboachtje',
'watchthispage' => 'Siede beooboachtje',
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'Beooboachtje …',
'unwatching' => 'Nit beooboachtje …',
+'watcherrortext' => 'Bie dät Annerjen fon do Beoboachtengsliestenienstaalengen foar "$1" is n Failer aptreeden.',
'enotif_mailer' => '{{SITENAME}} tält Beskeed uur Email',
'enotif_reset' => 'Markier aal besoachte Sieden',
--
+Uum do Ienstaaleungen fon dät E-Mail-Becheedtälsystem antoupaasjen, besäik
+{{canonicalurl:{{#special:Preferences}}}}
+
Uum do Ienstaalengen fon dien Beooboachtengslieste antoupaasjen, besäik
{{canonicalurl:{{#special:EditWatchlist}}}}
# Protect
'protectlogpage' => 'Siedenskuts-Logbouk',
-'protectlogtext' => 'Dit is ne Lieste fon do blokkierde Sieden.
-Sjuch [[Special:ProtectedPages|Skutsede Siede]] foar moor Informatione.',
+'protectlogtext' => 'Dit is dät Siedenskuts-Logbouk.
+Sjuch ju [[Special:ProtectedPages|Lieste fon skutsede Sieden]] foar aal apstuuns skutsede Sieden.',
'protectedarticle' => 'skutsede „[[$1]]“',
'modifiedarticleprotection' => 'annerde dän Skuts fon „[[$1]]“',
'unprotectedarticle' => 'hieuwede dän Skuts fon "[[$1]]" ap',
'viewdeletedpage' => 'Läskede Versione anwiese',
'undeletepagetext' => '{{PLURAL:$1|Ju foulgjende Siede wuud läsked un kon|Do foulgjende $1 Sieden wuuden läsked un konnen}} fon Administratore wier häärstoald wäide:',
'undelete-fieldset-title' => 'Beoarbaidengen wier häärstaale',
-'undeleteextrahelp' => "Uum ju Siede gans mäd aal Versione wiertoumoakjen, wääl neen Versione uut, reek ne Begruundenge an un klik ap '''''Wier moakje'''''.
-* Moatest du bloot bestimde Versione wier moakje, so wääl do jädden eenpeld anhound fon do Markierengen uut, reek ne Begruundenge an un klik dan ap '''''Wier moakje'''''.
-* '''''Oubreeke''''' moaket dät Kommentoarfäild loos un hoalt aal Markierengen wäch bie do Versione.",
+'undeleteextrahelp' => '*Uum ju Siede gans mäd aal Versione wiertoumoakjen, wääl neen Versione uut, reek ne Begruundenge an un klik dan ap „{{int:undeletebtn}}“.
+* Moatest du bloot bestimde Versione wier moakje, so wääl do jädden eenpeld anhound fon do Markierengen uut, reek ne Begruundenge an un klik dan ap „{{int:undeletebtn}}“.',
'undeleterevisions' => '{{PLURAL:$1|1 Version|$1 Versione}} archivierd',
'undeletehistory' => 'Wan du disse Siede wier häärstoalst, wäide uk aal oolde Versione wier häärstoald. Wan siet ju Läskenge aan näien Artikkel mäd dän sälge Noome moaked wuude, wäide do wier häärstoalde Versione as oolde Versione fon dissen Artikkel ferskiene.',
'undeleterevdel' => 'Dät wier Häärstaalen wäd nit truchfierd, wan deertruch ju aktuelste Version toun Deel läsked wäd.
# Namespace form on various pages
'namespace' => 'Noomensruum:',
'invert' => 'Uutwoal uumekiere',
+'tooltip-invert' => 'Dit Uutwoalfäild anklikje, uum Annerengen in dän wäälde Noomensruum un, sofier uutwääld, dän äntspreekende touheerige Noomensruum uustoubländjen',
'namespace_association' => 'Touoardende Noomensruum',
+'tooltip-namespace_association' => 'Dit Uutwoalfäild anklikje, uum dän din Uutwoal touheerigen Diskussionsnoomenruum, of in dän uumekierde Fal, dän touheerige Noomensruum, mee ientoubeluuken',
'blanknamespace' => '(Sieden)',
# Contributions
'ipb-confirm' => 'Speerenge bestäätigje',
'badipaddress' => 'Dissen Benutser bestoant nit, d.h. die Noome is falsk',
'blockipsuccesssub' => 'Blokkoade geloangen',
-'blockipsuccesstext' => 'Ju IP-Adrässe [[Special:Contributions/$1|$1]] wuude blokkierd.
-<br />[[Special:BlockList|Lieste fon Blokkoaden]].',
+'blockipsuccesstext' => 'Die Benutser/ ju IP-Adrässe [[Special:Contributions/$1|$1]] wuud speerd.<br />
+Toun Aphieuwjen fon ju Speere sjuch [[Special:BlockList|Lieste fon aktive Speeren]].',
'ipb-blockingself' => 'Du bäst tougong, die sälwen tou speeren! Moatest dät wuudelk dwo?',
'ipb-confirmhideuser' => 'Du bäst tougong n Benutser in dän Modus "Benutser fersteete" tou speeren. Dät fiert deertou, dät die Benutsernoome in aal Liesten un Logbouke unnerdrukt wäd. Moatest dät wuudelk dwo?',
'ipb-edit-dropdown' => 'Speergruunde beoarbaidje',
Hier foulget die Iendraach uut dät Unnerdrukkengs-Logbouk:',
'blocklogentry' => '[[$1]] blokkierd foar n Tiedruum fon: $2 $3',
'reblock-logentry' => 'annerde ju Speere foar „[[$1]]“ foar dän Tiedruum: $2 $3',
-'blocklogtext' => 'Dit is n Logbouk fon Speerengen un Äntspeerengen fon Benutsere un IP-Adrässe.
+'blocklogtext' => 'Dit is n Logbouk fon Speerengen un Äntspeerengen fon Benutsere un IP-Adrässen.
Automatisk speerde IP-Adrässe sunt nit apnuumen.
-Sjuch ju [[Special:BlockList|Lieste fon de speerde IP-Adrässe un Benutsernoomen]] foar aal aktive Speeren.',
+Sjuch ju [[Special:BlockList|Lieste fon de speerde IP-Adrässen un Benutsernoomen]] foar aal aktive Speeren.',
'unblocklogentry' => 'Blokkade fon $1 aphieuwed',
'block-log-flags-anononly' => 'bloot Anonyme',
'block-log-flags-nocreate' => 'Dät Moakjen fon Benutserkonten speerd',
'unlockdbsuccesstext' => 'Ju {{SITENAME}}-Doatenboank wuude fräiroat.',
'lockfilenotwritable' => 'Ju Doatenboank-Speerdoatäi is nit beskrieuwboar. Toun Speeren of Fräireeken fon ju Doatenboank mout ju foar dän Webserver beskrieuwboar weese.',
'databasenotlocked' => 'Ju Doatenboank is nit speerd.',
+'lockedbyandtime' => '(fon $1 an dän $2 uum $3 Uure)',
# Move page
'move-page' => 'Ferskuuwe „$1“',
'tooltip-ca-viewsource' => 'Disse Siede is skutsed. Die Wältext kon ankieked wäide.',
'tooltip-ca-history' => 'Fröiere Versione fon disse Siede',
'tooltip-ca-protect' => 'Disse Siede skutsje',
-'tooltip-ca-unprotect' => 'Disse Siede fräireeke',
+'tooltip-ca-unprotect' => 'Siedenskuts annerje',
'tooltip-ca-delete' => 'Disse Siede läskje',
'tooltip-ca-undelete' => 'Iendraage wier moakje, eer disse Siede läsked wuude',
'tooltip-ca-move' => 'Disse Siede ferskuuwe',
'spam_reverting' => 'Lääste Version sunner Links tou $1 wier häärstoald.',
'spam_blanking' => 'Aal Versione äntheelden Links tou $1, skeenmoaked.',
+# Info page
+'pageinfo-title' => 'Informatione tou „$1“',
+'pageinfo-header-edits' => 'Beoarbaidengen',
+'pageinfo-header-watchlist' => 'Beooboachtengslieste',
+'pageinfo-header-views' => 'Siedenaproupe',
+'pageinfo-subjectpage' => 'Siede',
+'pageinfo-talkpage' => 'Diskussionssiede',
+'pageinfo-watchers' => 'Antaal fon do Besäikere',
+'pageinfo-edits' => 'Antaal fon do Beoarbaidengen',
+'pageinfo-authors' => 'Antaal fon unnerskeedelke Autoren',
+'pageinfo-views' => 'Antaal fon Siedenaproupe',
+'pageinfo-viewsperedit' => 'Siedenaproupe pro Beoarbaidenge',
+
# Patrolling
'markaspatrolleddiff' => 'As pröiwed markierje',
'markaspatrolledtext' => 'Dissen Artikkel as pröiwed markierje',
'widthheightpage' => '$1 × $2, {{PLURAL:$3|1 Siede|$3 Sieden}}',
'file-info' => 'Doatäigrööte: $1, MIME-Typ: $2',
'file-info-size' => '$1 × $2 Pixel, Doatäigrööte: $3, MIME-Typ: $4',
+'file-info-size-pages' => '$1 × $2 Pixel, Doatäigrööte: $3, MIME-Typ: $4, $5 {{PLURAL:$5|Siede| Sieden}}',
'file-nohires' => 'Neen haagere Aplöösenge foarhounden.',
'svg-long-desc' => 'SVG-Doatäi, Basisgrööte: $1 × $2 Pixel, Doatäigrööte: $3',
'show-big-image' => 'Bielde in hooge Aplöösenge',
'exif-colorspace' => 'Faawenruum',
'exif-componentsconfiguration' => 'Betjuudenge fon älke Komponente',
'exif-compressedbitsperpixel' => 'Komprimierde Bits pro Pixel',
-'exif-pixelydimension' => 'Gultige Bieldebratte',
-'exif-pixelxdimension' => 'Gultige Bieldehöchte',
+'exif-pixelydimension' => 'Bieldebratte',
+'exif-pixelxdimension' => 'Bieldehöchte',
'exif-usercomment' => 'Benutserkommentoare',
'exif-relatedsoundfile' => 'Touheerige Toondoatäi',
'exif-datetimeoriginal' => 'Ärfoatengstiedpunkt',
'exif-exposureprogram' => 'Beljuchtengsprogram',
'exif-spectralsensitivity' => 'Beljoachtengstiedwäid',
'exif-isospeedratings' => 'Film- of Sensorämpfiendelkaid (ISO)',
-'exif-shutterspeedvalue' => 'Beluchtengstiedwäid',
-'exif-aperturevalue' => 'Bländenwäid',
-'exif-brightnessvalue' => 'Ljoachtegaidswäid',
+'exif-shutterspeedvalue' => 'APEX-Beluchtengstiedwäid',
+'exif-aperturevalue' => 'APEX-Bländenwäid',
+'exif-brightnessvalue' => 'APEX-Ljoachtegaidswäid',
'exif-exposurebiasvalue' => 'Beljuchtengsfoargoawe',
'exif-maxaperturevalue' => 'Grootste Blände',
'exif-subjectdistance' => 'Fierte',
'exif-gpsareainformation' => 'Noome fon dät GPS-Gestrich',
'exif-gpsdatestamp' => 'GPS-Doatum',
'exif-gpsdifferential' => 'GPS-Differentioalkorrektur',
+'exif-jpegfilecomment' => 'JPEG-Doatäikommentoar',
+'exif-keywords' => 'Koaiwoude',
+'exif-worldregioncreated' => 'Waareldregion in ju dät Foto apnuumen wuud',
+'exif-countrycreated' => 'Stoat in dän dät Foto apnuumen wuud',
+'exif-countrycodecreated' => 'Code foar dän Stoat in dän dät Foto apnuumen wuud',
+'exif-provinceorstatecreated' => 'Provinz of Glidstoat in dän dät Foto apnuumen wuud',
+'exif-citycreated' => 'Stääd in ju dät Foto aonuumen wuud',
+'exif-sublocationcreated' => 'Beräk fon de Stääd in dän dät Foto apnuumen wuud',
+'exif-worldregiondest' => 'Wiesde Waareldregione',
+'exif-countrydest' => 'Wiesden Stoat',
+'exif-countrycodedest' => 'Code foar dän wiesden Stoat',
+'exif-provinceorstatedest' => 'Wiesde Provinz of Glidstoat',
+'exif-citydest' => 'Wiesde Stääd',
+'exif-sublocationdest' => 'Beräk fon de wiesde Stääd',
'exif-objectname' => 'Kuuten Tittel',
+'exif-specialinstructions' => 'Besunnere Anwiesengen',
+'exif-headline' => 'Tittel',
+'exif-credit' => 'Noomensnaamengte/Fereepentelker',
+'exif-source' => 'Wälle',
+'exif-editstatus' => 'Redaktionelle Stoatus fon dät Foto',
+'exif-urgency' => 'Tringelkhaid',
+'exif-fixtureidentifier' => 'Kolumne',
+'exif-locationdest' => 'Deerstoalden Standoart',
+'exif-locationdestcode' => 'Code foar dän deerstoalde Standoart',
+'exif-objectcycle' => 'Tied fon dän Dai, foar ju dit Medium bestimd is',
+'exif-contact' => 'Kontaktinformatione',
+'exif-writer' => 'Ferfoater',
+'exif-languagecode' => 'Sproake',
+'exif-iimversion' => 'IM-Version',
+'exif-iimcategory' => 'Kategorie',
+'exif-iimsupplementalcategory' => 'Kategorien uurhoop',
+'exif-datetimeexpires' => 'Nit ferweende ätter',
+'exif-originaltransmissionref' => 'Code fon dän Standoart fon dän dät Foto tousoand wuud',
+'exif-identifier' => 'Kannenge',
+'exif-lens' => 'Ferwoand Objektiv',
+'exif-serialnumber' => 'Seriennummer fon ju Kamera',
+'exif-cameraownername' => 'Kamerabesitter',
+'exif-label' => 'Beteekenge',
+'exif-datetimemetadata' => 'Doatum tou dän do Metadoaten toulääst annerd wuuden',
+'exif-nickname' => 'Gebruukelke Noome fon dät Foto',
+'exif-rating' => 'Beweertenge (uut 5)',
+'exif-rightscertificate' => 'Gjuchteferwaltengszertifikoat',
+'exif-copyrighted' => 'Uurhieuwergjuchtstoatus',
+'exif-copyrightowner' => 'Uurhieuwergjuchtsienhääber',
# EXIF attributes
'exif-compression-1' => 'Uunkomprimierd',
'exif-orientation-3' => 'Uum 180° uumewoand',
'exif-orientation-4' => 'Vertikoal uumewoand',
'exif-orientation-5' => 'Juun dän Klokkenwiesersin uum 90° troald un vertikoal uumewoand',
-'exif-orientation-6' => 'Uum 90° in Klokkenwiesersin troald',
+'exif-orientation-6' => 'Uum 90° juun dän Klokkenwiesersin troald',
'exif-orientation-7' => 'Uum 90° in Klokkenwiesersin troald un vertikoal uumewoand',
-'exif-orientation-8' => 'Uum 90° juun dän Klokkenwiesersin troald',
+'exif-orientation-8' => 'Uum 90° in dän Klokkenwiesersin troald',
'exif-planarconfiguration-1' => 'Groafformoat',
'exif-planarconfiguration-2' => 'Planoarformoat',
'exif-sensingmethod-7' => 'Trilinearen Sensor',
'exif-sensingmethod-8' => 'Color sequential linear sensor',
+'exif-filesource-3' => 'Digitoale Standbieldekamera',
+
'exif-scenetype-1' => 'Normoal',
'exif-customrendered-0' => 'Standoard',
* @author Marcos
* @author Muddyb Blast Producer
* @author Robert Ullmann
+ * @author Stephenwanjau
* @author לערי ריינהארט
*/
# Suppression log
'suppressionlog' => 'Kumbukumbu za kuficha',
'suppressionlogtext' => 'Hapo chini panaonyeshwa orodha ya matukio ya ufutaji na ya uzuio ambayo maelezo yao yamefichwa kutoka kwa wakabidhi.
-Tazama [[Special:BlockList|orodha ya uzuio wa IP]] kuona orodha ya zuio zilizopo sasa hivi.',
+Tazama [[Special:BlockList|IP block orodha ya uzuio wa IP]] kuona orodha ya zuio zilizopo sasa hivi.',
# History merging
'mergehistory' => 'Unganisha historia za kurasa',
'userrights-no-interwiki' => 'Huna ruhusa ya kuhariri haki za mtumiaji kwenye wiki zingine.',
'userrights-nodatabase' => 'Hakuna hifadhidata inayoitwa $1 au haimo katiko jumuia hii ya wiki.',
'userrights-nologin' => 'Lazima [[Special:UserLogin|uingie ndani]] ya akaunti ya mkabidhi ili kupanga haki za mtumiaji.',
-'userrights-notallowed' => 'Akaunti yako haina ruhusa ya kupanga haki za mtumiaji.',
+'userrights-notallowed' => 'Akaunti yako haina ruhusa ya kuongeza au kutoa haki za mtumiaji.',
'userrights-changeable-col' => 'Makundi unayoweza kuyabadilisha',
'userrights-unchangeable-col' => 'Makundi usiyoweza kuyabadilisha',
'right-hideuser' => 'Kuzuia jina la mtumiaji, lisionekane mbele ya kadamnasi',
'right-protect' => 'Badilisha viwango vya ulinzi na hariri kurasa zilizolindwa',
'right-editinterface' => 'Kuhariri kusano ya mtumiaji',
-'right-editusercssjs' => 'Kuhariri mafaili ya CSS na JavaScript ya watumiaji wengine',
+'right-editusercssjs' => 'Hariri mafaili ya CSS na Hatijava ya watumiaji wengine',
'right-editusercss' => 'Hariri mafaili ya CSS ya watumiaji wengine',
'right-edituserjs' => 'Hariri mafaili ya JavaScript ya watumiaji wengine',
'right-import' => 'Kuleta kurasa kutoka kwa wiki zingine',
'popularpages' => 'Kurasa zinazopendelewa',
'wantedcategories' => 'Jamii zinazotakiwa',
'wantedpages' => 'Kurasa zinazotakiwa',
-'wantedpages-badtitle' => 'Lipo jina batili katika matokeo: $1',
+'wantedpages-badtitle' => 'Kichwa batili katika seti ya matokeo: $1',
'wantedfiles' => 'Mafaili yanayokosekana',
'wantedtemplates' => 'Vigezo vinavyotakiwa',
'mostlinked' => 'Kurasa zinazoungwa kuliko zote',
'deadendpages' => 'Kurasa ambazo haziungi na ukurasa mwingine wowote',
'deadendpagestext' => 'Kurasa zifuatazo haziungana na kurasa zingine katika {{SITENAME}}.',
'protectedpages' => 'Kurasa zinazolindwa',
-'protectedpages-indef' => 'Zinazolindwa kwa muda wote tu',
+'protectedpages-indef' => 'Ulinzi kwa muda usiojulikana tu',
'protectedpages-cascade' => 'zinazokuwa na ulindaji kwa kurasa chini zake tu',
-'protectedpagestext' => 'Kurasa zifuatazo zinalindwa zisisogezwe wala zisihaririwe',
+'protectedpagestext' => 'Kurasa zifuatazo zinalindwa zisisogezwe wala kuhaririwa',
+'protectedpagesempty' => 'Hakuna kurasa zinazolindwa kwa sasa kwa vigezo hivi.',
'protectedtitles' => 'Majina yanayozuluiwa',
'protectedtitlestext' => 'Yafuatayo ni majina ya kurasa yanayozuluiwa kuyatumia',
+'protectedtitlesempty' => 'Hakuna vichwa vinavyolindwa kwa vigezo hivi kwa sasa.',
'listusers' => 'Orodha ya Watumiaji',
'listusers-editsonly' => 'Onyesha watumiaji wenye kuhariri tu',
'listusers-creationsort' => 'Panga kwa tarehe ya kuanzishwa',
'ancientpages' => 'Kurasa za kale',
'move' => 'Hamisha',
'movethispage' => 'Hamisha ukurasa huu',
-'unusedcategoriestext' => 'Kurasa za jamii zifuatazo zinapatikana, ingawaje hakuna ukurasa wala jamii nyingine iliyowekwa ndani ya jamii hizi.',
+'unusedcategoriestext' => 'Kurasa za jamii zifuatazo zinapatikana, ingawaje hakuna ukurasa wala jamii nyingine inayotumia kurasa hizi.',
+'notargettitle' => 'Hakuna lengo',
'pager-newer-n' => '{{PLURAL:$1|1 ya karibu zaidi|$1 ya karibu zaidi}}',
'pager-older-n' => '{{PLURAL:$1|$1 ya zamani zaidi}}',
'viewsource-title' => '$1 యొక్క సోర్సు చూడండి',
'actionthrottled' => 'కార్యాన్ని ఆపేసారు',
'actionthrottledtext' => 'స్పామును తగ్గించటానికి తీసుకున్న నిర్ణయాల వల్ల, మీరు ఈ కార్యాన్ని అతి తక్కువ సమయంలో బోలెడన్ని సార్లు చేయకుండా అడ్డుకుంటున్నాము. కొన్ని నిమిషాలు ఆగి మరలా ప్రయత్నించండి.',
-'protectedpagetext' => 'à°\88 à°ªà±\87à°\9cà±\80à°ªà±\88 దిదà±\8dà°¦à±\81బాà°\9fà±\8dà°²à±\81 à°\9aà±\86à°¯à±\8dయనివà±\8dà°µà°\95à±\81à°\82à°¡à°¾ లాà°\95à±\81 à°\9aà±\87సాà°\82.',
+'protectedpagetext' => 'à°\88 à°ªà±\87à°\9cà±\80ని మారà±\8dà°\9aà°\95à±\81à°\82à°¡à°¾ à°\89à°\82à°¡à±\87à°\82à°¦à±\81à°\95à±\81 à°¸à°\82à°°à°\95à±\8dà°·à°¿à°\82à°\9aారà±\81.',
'viewsourcetext' => 'మీరీ పేజీ సోర్సును చూడవచ్చు, కాపీ చేసుకోవచ్చు:',
'protectedinterface' => 'సాఫ్టువేరు ఇంటరుఫేసుకు చెందిన టెక్స్టును ఈ పేజీ అందిస్తుంది. దుశ్చర్యల నివారణ కోసమై దీన్ని లాకు చేసాం.',
'editinginterface' => "'''హెచ్చరిక''': సాఫ్టువేరుకు ఇంటరుఫేసు టెక్స్టును అందించే పేజీని మీరు సరిదిద్దుతున్నారు.
# Groups
'group' => 'గుంపు:',
'group-user' => 'వాడుకరులు',
-'group-autoconfirmed' => 'à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ నిరà±\8dà°¥ారించబడిన వాడుకరులు',
+'group-autoconfirmed' => 'à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ నిరà±\8dà°§ారించబడిన వాడుకరులు',
'group-bot' => 'బాట్లు',
'group-sysop' => 'నిర్వాహకులు',
'group-bureaucrat' => 'అధికారులు',
'group-all' => '(అందరూ)',
'group-user-member' => '{{GENDER:$1|వాడుకరి}}',
-'group-autoconfirmed-member' => '{{GENDER:$1|à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ నిరà±\8dà°¥ారించబడిన వాడుకరి}}',
+'group-autoconfirmed-member' => '{{GENDER:$1|à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ నిరà±\8dà°§ారించబడిన వాడుకరి}}',
'group-bot-member' => '{{GENDER:$1|బాట్}}',
'group-sysop-member' => '{{GENDER:$1|నిర్వాహకుడు|నిర్వాహకురాలు}}',
'group-bureaucrat-member' => '{{GENDER:$1|అధికారి|అధికారిణి}}',
'group-suppress-member' => 'పరాకు',
'grouppage-user' => '{{ns:project}}:వాడుకరులు',
-'grouppage-autoconfirmed' => '{{ns:project}}:à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ నిరà±\8dà°¥ారించబడిన వాడుకరులు',
+'grouppage-autoconfirmed' => '{{ns:project}}:à°\86à°\9fà±\8bమాà°\9fà°¿à°\97à±\8dà°\97à°¾ నిరà±\8dà°§ారించబడిన వాడుకరులు',
'grouppage-bot' => '{{ns:project}}:బాట్లు',
'grouppage-sysop' => '{{ns:project}}:నిర్వాహకులు',
'grouppage-bureaucrat' => '{{ns:project}}:అధికార్లు',
'prefs-beta' => 'בעטאַ אייגנשאַפֿטן',
'prefs-datetime' => 'דאטום און צייט',
'prefs-labs' => 'לאַבאראַטאריע מעגלעכקייטן',
+'prefs-user-pages' => 'באניצער בלעטער',
'prefs-personal' => 'באַנוצער פראָפֿיל',
'prefs-rc' => 'לעצטע ענדערונגען',
'prefs-watchlist' => 'אויפפאסונג ליסטע',
'backend-fail-writetemp' => 'קען נישט שרײַבן צו צייַטווייַליקער טעקע.',
'backend-fail-closetemp' => 'קען נישט שליסן צייַטווייַליקע טעקע.',
'backend-fail-read' => 'קען נישט ליינען טעקע "$1".',
-'backend-fail-create' => 'קע×\9f × ×\99ש×\98 ש×\90פֿן טעקע "$1".',
+'backend-fail-create' => 'קע×\9f × ×\99ש×\98 שר×\99×\99×\91ן טעקע "$1".',
# Lock manager
'lockmanager-notlocked' => 'מ\'קען נישט אויפֿשליסן "$1"; ער איז נישט פֿארשלאסן.',
'vector-view-create' => "Ṣ'èdá",
'vector-view-edit' => 'Àtúnṣe',
'vector-view-history' => 'Wo ìtàn',
-'vector-view-view' => 'Kíkà',
+'vector-view-view' => 'Àwòkà',
'vector-view-viewsource' => 'Wo àmìọ̀rọ̀',
'actions' => 'Àwọn ìgbéṣe',
'namespaces' => 'Àwọn orúkọàyè',
'loginprompt' => 'Ẹ gbọ́dọ̀ jọ̀wọ́ cookies láti wọlé sí {{SITENAME}}.',
'userlogin' => 'Ìwọlé / ìforúkọ sílẹ̀',
'userloginnocreate' => 'Ìwọlé',
-'logout' => 'Ìbọ́sóde',
-'userlogout' => 'Ìbọ́sóde',
+'logout' => 'Ìjáde',
+'userlogout' => 'Ìjáde',
'notloggedin' => "Ẹ kò tí w'ọlé",
'nologin' => "Ṣé ẹ fẹ́ wọlé? '''$1'''.",
'nologinlink' => 'Ìforúkọsílẹ̀',
'tooltip-pt-mycontris' => 'Àkójọ àwọn àfikún yín',
'tooltip-pt-login' => 'A gbà yín níyànjú kí ẹwọlé, bótilẹ̀jẹ́pẹ́ kò pọndandan.',
'tooltip-pt-anonlogin' => 'A gbàyín níyànjú láti wọlé, bótilẹ̀jẹ́pé kò ṣe dandan.',
-'tooltip-pt-logout' => 'Ìbọ́sódé',
+'tooltip-pt-logout' => 'Ìjáde',
'tooltip-ca-talk' => 'Ìfọ̀rọ̀wérọ̀ nípa ohun inú ojúewé yìí',
'tooltip-ca-edit' => 'Ẹ le ṣe àtúnṣe sí ojúewé yìí.
Ẹ jọ̀wọ́ ẹ lo bọtini àyẹ̀wò kí ẹ tó fipamọ́.',
'logout' => '退出',
'userlogout' => '退出',
'notloggedin' => '未登录',
-'nologin' => '你还没有账户吗?$1。',
+'nologin' => '没有账户?$1。',
'nologinlink' => '创建账户',
'createaccount' => '创建账户',
'gotaccount' => '已经拥有账户?请$1。',
'loginsuccesstitle' => '登录成功',
'loginsuccess' => "'''“$1”,欢迎登录{{SITENAME}}。'''",
'nosuchuser' => '找不到用户“$1”。用户名是大小写敏感且区分繁简体的。请检查您的拼写,或者[[Special:UserLogin/signup|建立一个新账户]]。',
-'nosuchusershort' => '没有一个名为“$1”的用户。请检查您输入的文字是否有错误。',
+'nosuchusershort' => '没有名为“$1”的用户。请检查您输入的文字是否有错误。',
'nouserspecified' => '你需要指定一个用户名。',
'login-userblocked' => '该用户已被封禁,禁止登录。',
'wrongpassword' => '您输入的密码错误,请再试一次。',
'accmailtext' => "'$1'的密码已经被发送到$2。",
'newarticle' => '(新页面)',
'newarticletext' => '您进入了一个尚未创建的页面。
-要创建该页面,请在下面的编辑框中输入内容(详情参见[[{{MediaWiki:Helppage}}|帮助]])。
-如果您是不小心来到此页面,直接点击您浏览器中的“返回”按钮返回。',
+要创建该页面,请在下面的编辑框中输入内容(详情参见[[{{MediaWiki:Helppage}}|帮助页]])。
+如果您误入此页,请点击浏览器中的“返回”按钮。',
'anontalkpagetext' => "---- ''这是一个还未建立账户的匿名用户的讨论页, 因此我们只能用IP地址来与他或她联络。该IP地址可能由几名用户共享。如果您是一名匿名用户并认为此页上的评语与您无关,请[[Special:UserLogin/signup|创建新账户]]或[[Special:UserLogin|登录]]以避免在未来与其他匿名用户混淆。''",
'noarticletext' => '本页面目前没有内容。你可以在其他页面中[[Special:Search/{{PAGENAME}}|搜索该页标题]]、<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索相关日志]或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 编辑本页面]。</span>',
'noarticletext-nopermission' => '此页目前没有内容,您可以在其它页[[Special:Search/{{PAGENAME}}|搜索此页标题]],
或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 搜索有关日志]</span>。',
-'userpage-userdoesnotexist' => '用户账户“<nowiki>$1</nowiki>”未曾创建。请在创建/编辑这个页面前先检查一下。',
+'userpage-userdoesnotexist' => '用户账户"$1"未注册。
+请在创建/编辑该页之前进行核对。',
'userpage-userdoesnotexist-view' => '用户账户“$1”未曾创建。',
'blocked-notice-logextract' => '这位用户目前已被封禁。以下提供最近的封禁日志以供参考:',
'clearyourcache' => "'''注意:在保存以后,您必须绕过浏览器缓存才能看到所作出的改变。'''
''由于{{SITENAME}}允许使用原始的 HTML,为了防范 JavaScript 攻击,预览已被隐藏。''
'''如果这是一次合法的编辑,请重新进行尝试。'''如果还不行,请[[Special:UserLogout|退出]]并重新登录。",
-'token_suffix_mismatch' => "'''由于您用户端中的编辑令牌毁损了一些标点符号字元,为防止编辑的文字损坏,您的编辑已经被拒绝。'''
-这种情况通常出现于使用含有很多臭虫、以网络为主的匿名代理服务的时候。",
+'token_suffix_mismatch' => "'''由于您用户端中的编辑令牌毁损了一些标点符号字元,您的编辑已经被拒绝。'''
+此次编辑被拒绝以防止页面文本损坏。
+这种情况通常在您使用含有故障的网页式匿名代理服务的时候出现。",
'edit_form_incomplete' => "'''编辑表单的某些部分没有到达服务器 ;请检查您的编辑内容是否完整并再试一次。'''",
'editing' => '编辑“$1”',
'creating' => '创建 $1',
你应该考虑继续编辑本页是否合适。这里提供本页的删除和移动记录以供参考:",
'moveddeleted-notice' => '本页面已被删除。下面提供本页的删除和移动日志以供参考。',
'log-fulllog' => '查看完整日志',
-'edit-hook-aborted' => '编辑被钩取消。
+'edit-hook-aborted' => '编辑被hook指令取消。
无解释。',
'edit-gone-missing' => '不能更新页面。
它可能刚刚被删除。',
--- /dev/null
+<?php
+/**\r
+ * @file\r
+ * @ingroup Benchmark\r
+ */\r
+\r
+require_once( dirname( __FILE__ ) . '/Benchmarker.php' );\r
+
+/**
+ * This little benchmark executes the regexp used in Language->checkTitleEncoding() and compares its execution time
+ * against that of mb_check_encoding, if available.
+ */\r
+class bench_utf8_title_check extends Benchmarker {
+
+ private $canRun;
+
+ private $data;
+
+ public function __construct() {\r
+ parent::__construct();
+
+ $this->data = array (
+ "",
+ "United States of America", // 7bit ASCII
+ "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e",
+ "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn",
+ // This comes from bug 36839
+ "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn%7C"
+ . "Catherine%20Willows%7CDavid%20Hodges%7CDavid%20Phillips%7CGil%20Grissom%7CGreg%20Sanders%7CHodges%7C"
+ . "Internet%20Movie%20Database%7CJim%20Brass%7CLady%20Heather%7C"
+ . "Les%20Experts%20(s%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e)%7CLes%20Experts%20:%20Manhattan%7C"
+ . "Les%20Experts%20:%20Miami%7CListe%20des%20personnages%20des%20Experts%7C"
+ . "Liste%20des%20%C3%A9pisodes%20des%20Experts%7CMod%C3%A8le%20discussion:Palette%20Les%20Experts%7C"
+ . "Nick%20Stokes%7CPersonnage%20de%20fiction%7CPersonnage%20fictif%7CPersonnage%20de%20fiction%7C"
+ . "Personnages%20r%C3%A9currents%20dans%20Les%20Experts%7CRaymond%20Langston%7CRiley%20Adams%7C"
+ . "Saison%201%20des%20Experts%7CSaison%2010%20des%20Experts%7CSaison%2011%20des%20Experts%7C"
+ . "Saison%2012%20des%20Experts%7CSaison%202%20des%20Experts%7CSaison%203%20des%20Experts%7C"
+ . "Saison%204%20des%20Experts%7CSaison%205%20des%20Experts%7CSaison%206%20des%20Experts%7C"
+ . "Saison%207%20des%20Experts%7CSaison%208%20des%20Experts%7CSaison%209%20des%20Experts%7C"
+ . "Sara%20Sidle%7CSofia%20Curtis%7CS%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e%7CWallace%20Langham%7C"
+ . "Warrick%20Brown%7CWendy%20Simms%7C%C3%89tats-Unis"
+ );
+
+ $this->canRun = function_exists ( 'mb_check_encoding' );
+
+ if ( $this->canRun ) {\r
+ $this->mDescription = "Benchmark for using a regexp vs. mb_check_encoding to check for UTF-8 encoding.";
+ mb_internal_encoding( 'UTF-8' );
+ } else {
+ $this->mDescription = "CANNOT RUN benchmark using mb_check_encoding: function not available.";
+ }\r
+ }\r
+\r
+ public function execute() {
+ if ( !$this->canRun ) {
+ return;
+ }
+ $benchmarks = array();
+ foreach ($this->data as $val) {
+ $benchmarks[] = array(
+ 'function' => array( $this, 'use_regexp' ),
+ 'args' => array( rawurldecode ( $val ) )
+ );
+ $benchmarks[] = array(
+ 'function' => array( $this, 'use_regexp_non_capturing' ),
+ 'args' => array( rawurldecode ( $val ) )
+ );
+ $benchmarks[] = array(
+ 'function' => array( $this, 'use_regexp_once_only' ),
+ 'args' => array( rawurldecode ( $val ) )
+ );
+ $benchmarks[] = array(\r
+ 'function' => array( $this, 'use_mb_check_encoding' ),\r
+ 'args' => array( rawurldecode ( $val ) )\r
+ );
+ }\r
+ $this->bench( $benchmarks );
+ print $this->getFormattedResults();\r
+ }\r
+
+ private $isutf8;
+\r
+ function use_regexp( $s ) {
+ $this->isutf8 = preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );\r
+ }\r
+\r
+ function use_regexp_non_capturing( $s ) {
+ // Same as above with a non-capturing subgroup.
+ $this->isutf8 = preg_match( '/^(?:[\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
+ }
+
+ function use_regexp_once_only( $s ) {
+ // Same as above with a once-only subgroup.
+ $this->isutf8 = preg_match( '/^(?>[\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
+ }
+
+ function use_mb_check_encoding( $s ) {\r
+ $this->isutf8 = mb_check_encoding( $s, 'UTF-8' );\r
+ }\r
+\r
+}\r
+\r
+$maintClass = 'bench_utf8_title_check';\r
+require_once( RUN_MAINTENANCE_IF_MAIN );\r
'nocookiesforlogin',
'version-entrypoints-articlepath',
'version-entrypoints-scriptpath',
+ 'mergehistory-revisionrow',
);
/** EXIF messages, which may be set as optional in several checks, but are generally mandatory */
'mergehistory-autocomment',
'mergehistory-comment',
'mergehistory-same-destination',
- 'mergehistory-reason'
+ 'mergehistory-reason',
+ 'mergehistory-revisionrow'
),
'mergelog' => array(
'mergelog',
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// Chick.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
- die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
-require_once( dirname(__FILE__) . '/MonoBook.php' );
-
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// Modern.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
- die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php' );
-
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// MonoBook.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
- die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
-
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// MySkin.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
- die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
-require_once( dirname(__FILE__) . '/MonoBook.php' );
-
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// Simple.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
- die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
-require_once( dirname(__FILE__) . '/MonoBook.php' );
-
+++ /dev/null
-<?php
-// This file exists to ensure that base classes are preloaded before
-// MonoBook.php is compiled, working around a bug in the APC opcode
-// cache on PHP 5, where cached code can break if the include order
-// changed on a subsequent page view.
-// see http://lists.wikimedia.org/pipermail/wikitech-l/2006-January/021311.html
-
-if ( ! defined( 'MEDIAWIKI' ) )
- die( 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/SkinTemplate.php');
//maintenance
'DumpTestCase' => "$testFolder/phpunit/maintenance/DumpTestCase.php",
+ 'BackupDumper' => "$testFolder/../maintenance/backup.inc",
//Generic providers
'MediaWikiProvide' => "$testFolder/phpunit/includes/Providers.php",
$db = wfGetDB( DB_SLAVE );
- $res = $db->select( $table, $fields, $condition, array( 'ORDER BY' => $fields ) );
+ $res = $db->select( $table, $fields, $condition, wfGetCaller(), array( 'ORDER BY' => $fields ) );
$this->assertNotEmpty( $res, "query failed: " . $db->lastError() );
$i = 0;
--- /dev/null
+<?php
+
+/**
+ * Abstract class to construct tests for ORMRow deriving classes.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @since 1.20
+ *
+ * @ingroup Test
+ *
+ * @group ORM
+ *
+ * The database group has as a side effect that temporal database tables are created. This makes
+ * it possible to test without poisoning a production database.
+ * @group Database
+ *
+ * Some of the tests takes more time, and needs therefor longer time before they can be aborted
+ * as non-functional. The reason why tests are aborted is assumed to be set up of temporal databases
+ * that hold the first tests in a pending state awaiting access to the database.
+ * @group medium
+ *
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+abstract class ORMRowTest extends \MediaWikiTestCase {
+
+ /**
+ * @since 1.20
+ * @return string
+ */
+ protected abstract function getRowClass();
+
+ /**
+ * @since 1.20
+ * @return IORMTable
+ */
+ protected abstract function getTableInstance();
+
+ /**
+ * @since 1.20
+ * @return array
+ */
+ public abstract function constructorTestProvider();
+
+ /**
+ * @since 1.20
+ * @param IORMRow $row
+ * @param array $data
+ */
+ protected function verifyFields( IORMRow $row, array $data ) {
+ foreach ( array_keys( $data ) as $fieldName ) {
+ $this->assertEquals( $data[$fieldName], $row->getField( $fieldName ) );
+ }
+ }
+
+ /**
+ * @since 1.20
+ * @param array $data
+ * @param boolean $loadDefaults
+ * @return IORMRow
+ */
+ protected function getRowInstance( array $data, $loadDefaults ) {
+ $class = $this->getRowClass();
+ return new $class( $this->getTableInstance(), $data, $loadDefaults );
+ }
+
+ /**
+ * @dataProvider constructorTestProvider
+ */
+ public function testConstructor( array $data, $loadDefaults ) {
+ $this->verifyFields( $this->getRowInstance( $data, $loadDefaults ), $data );
+ }
+
+ /**
+ * @dataProvider constructorTestProvider
+ */
+ public function testSave( array $data, $loadDefaults ) {
+ $item = $this->getRowInstance( $data, $loadDefaults );
+
+ $this->assertTrue( $item->save() );
+
+ $this->assertTrue( $item->hasIdField() );
+ $this->assertTrue( is_integer( $item->getId() ) );
+
+ $id = $item->getId();
+
+ $this->assertTrue( $item->save() );
+
+ $this->assertEquals( $id, $item->getId() );
+
+ $this->verifyFields( $item, $data );
+ }
+
+ /**
+ * @dataProvider constructorTestProvider
+ */
+ public function testRemove( array $data, $loadDefaults ) {
+ $item = $this->getRowInstance( $data, $loadDefaults );
+
+ $this->assertTrue( $item->save() );
+
+ $this->assertTrue( $item->remove() );
+
+ $this->assertFalse( $item->hasIdField() );
+
+ $this->assertTrue( $item->save() );
+
+ $this->verifyFields( $item, $data );
+
+ $this->assertTrue( $item->remove() );
+
+ $this->assertFalse( $item->hasIdField() );
+
+ $this->verifyFields( $item, $data );
+ }
+
+ // TODO: test all of the methods!
+
+}
\ No newline at end of file
--- /dev/null
+<?php
+
+/**
+ * Tests for the TestORMRow class.
+ * TestORMRow is a dummy class to be able to test the abstract ORMRow class.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @since 1.20
+ *
+ * @ingroup Test
+ *
+ * @group ORM
+ *
+ * The database group has as a side effect that temporal database tables are created. This makes
+ * it possible to test without poisoning a production database.
+ * @group Database
+ *
+ * Some of the tests takes more time, and needs therefor longer time before they can be aborted
+ * as non-functional. The reason why tests are aborted is assumed to be set up of temporal databases
+ * that hold the first tests in a pending state awaiting access to the database.
+ * @group medium
+ *
+ * @licence GNU GPL v2+
+ * @author Jeroen De Dauw < jeroendedauw@gmail.com >
+ */
+class TestORMRowTest extends ORMRowTest {
+
+ /**
+ * @since 1.20
+ * @return string
+ */
+ protected function getRowClass() {
+ return 'TestORMRow';
+ }
+
+ /**
+ * @since 1.20
+ * @return IORMTable
+ */
+ protected function getTableInstance() {
+ return TestORMtable::singleton();
+ }
+
+ public function setUp() {
+ parent::setUp();
+
+ $dbw = wfGetDB( DB_MASTER );
+
+ $isSqlite = $GLOBALS['wgDBtype'] === 'sqlite';
+
+ $idField = $isSqlite ? 'INTEGER' : 'INT unsigned';
+ $primaryKey = $isSqlite ? 'PRIMARY KEY AUTOINCREMENT' : 'auto_increment PRIMARY KEY';
+
+ $dbw->safeQuery(
+ 'CREATE TABLE IF NOT EXISTS ' . $dbw->tableName( 'orm_test' ) . '(
+ test_id ' . $idField . ' NOT NULL ' . $primaryKey . ',
+ test_name VARCHAR(255) NOT NULL,
+ test_age TINYINT unsigned NOT NULL,
+ test_height FLOAT NOT NULL,
+ test_awesome TINYINT unsigned NOT NULL,
+ test_stuff BLOB NOT NULL,
+ test_moarstuff BLOB NOT NULL,
+ test_time varbinary(14) NOT NULL
+ );'
+ );
+ }
+
+ public function constructorTestProvider() {
+ return array(
+ array(
+ array(
+ 'name' => 'Foobar',
+ 'age' => 42,
+ 'height' => 9000.1,
+ 'awesome' => true,
+ 'stuff' => array( 13, 11, 7, 5, 3, 2 ),
+ 'moarstuff' => (object)array( 'foo' => 'bar', 'bar' => array( 4, 2 ), 'baz' => true )
+ ),
+ true
+ ),
+ );
+ }
+
+}
+
+class TestORMRow extends ORMRow {}
+
+class TestORMTable extends ORMTable {
+
+ /**
+ * Returns the name of the database table objects of this type are stored in.
+ *
+ * @since 1.20
+ *
+ * @return string
+ */
+ public function getName() {
+ return 'orm_test';
+ }
+
+ /**
+ * Returns the name of a IORMRow implementing class that
+ * represents single rows in this table.
+ *
+ * @since 1.20
+ *
+ * @return string
+ */
+ public function getRowClass() {
+ return 'TestORMRow';
+ }
+
+ /**
+ * Returns an array with the fields and their types this object contains.
+ * This corresponds directly to the fields in the database, without prefix.
+ *
+ * field name => type
+ *
+ * Allowed types:
+ * * id
+ * * str
+ * * int
+ * * float
+ * * bool
+ * * array
+ * * blob
+ *
+ * @since 1.20
+ *
+ * @return array
+ */
+ public function getFields() {
+ return array(
+ 'id' => 'id',
+ 'name' => 'str',
+ 'age' => 'int',
+ 'height' => 'float',
+ 'awesome' => 'bool',
+ 'stuff' => 'array',
+ 'moarstuff' => 'blob',
+ 'time' => 'int', // TS_MW
+ );
+ }
+
+ /**
+ * Gets the db field prefix.
+ *
+ * @since 1.20
+ *
+ * @return string
+ */
+ protected function getFieldPrefix() {
+ return 'test_';
+ }
+
+
+}
),
);
}
+
+ /**\r
+ * @dataProvider provideCheckTitleEncodingData\r
+ */\r
+ function testCheckTitleEncoding( $s ) {\r
+ $this->assertEquals(\r
+ $s,\r
+ $this->lang->checkTitleEncoding($s),\r
+ "checkTitleEncoding('$s')"\r
+ );\r
+ }\r
+
+ function provideCheckTitleEncodingData() {
+ return array (
+ array( "" ),
+ array( "United States of America" ), // 7bit ASCII
+ array( rawurldecode( "S%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e" ) ),
+ array(
+ rawurldecode(
+ "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn"
+ )
+ ),
+ // The following two data sets come from bug 36839. They fail if checkTitleEncoding uses a regexp to test for
+ // valid UTF-8 encoding and the pcre.recursion_limit is low (like, say, 1024). They succeed if checkTitleEncoding
+ // uses mb_check_encoding for its test.
+ array(
+ rawurldecode(
+ "Acteur%7CAlbert%20Robbins%7CAnglais%7CAnn%20Donahue%7CAnthony%20E.%20Zuiker%7CCarol%20Mendelsohn%7C"
+ . "Catherine%20Willows%7CDavid%20Hodges%7CDavid%20Phillips%7CGil%20Grissom%7CGreg%20Sanders%7CHodges%7C"
+ . "Internet%20Movie%20Database%7CJim%20Brass%7CLady%20Heather%7C"
+ . "Les%20Experts%20(s%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e)%7CLes%20Experts%20:%20Manhattan%7C"
+ . "Les%20Experts%20:%20Miami%7CListe%20des%20personnages%20des%20Experts%7C"
+ . "Liste%20des%20%C3%A9pisodes%20des%20Experts%7CMod%C3%A8le%20discussion:Palette%20Les%20Experts%7C"
+ . "Nick%20Stokes%7CPersonnage%20de%20fiction%7CPersonnage%20fictif%7CPersonnage%20de%20fiction%7C"
+ . "Personnages%20r%C3%A9currents%20dans%20Les%20Experts%7CRaymond%20Langston%7CRiley%20Adams%7C"
+ . "Saison%201%20des%20Experts%7CSaison%2010%20des%20Experts%7CSaison%2011%20des%20Experts%7C"
+ . "Saison%2012%20des%20Experts%7CSaison%202%20des%20Experts%7CSaison%203%20des%20Experts%7C"
+ . "Saison%204%20des%20Experts%7CSaison%205%20des%20Experts%7CSaison%206%20des%20Experts%7C"
+ . "Saison%207%20des%20Experts%7CSaison%208%20des%20Experts%7CSaison%209%20des%20Experts%7C"
+ . "Sara%20Sidle%7CSofia%20Curtis%7CS%C3%A9rie%20t%C3%A9l%C3%A9vis%C3%A9e%7CWallace%20Langham%7C"
+ . "Warrick%20Brown%7CWendy%20Simms%7C%C3%89tats-Unis"
+ ),
+ ),
+ array(
+ rawurldecode(
+ "Mod%C3%A8le%3AArrondissements%20homonymes%7CMod%C3%A8le%3ABandeau%20standard%20pour%20page%20d'homonymie%7C"
+ . "Mod%C3%A8le%3ABatailles%20homonymes%7CMod%C3%A8le%3ACantons%20homonymes%7C"
+ . "Mod%C3%A8le%3ACommunes%20fran%C3%A7aises%20homonymes%7CMod%C3%A8le%3AFilms%20homonymes%7C"
+ . "Mod%C3%A8le%3AGouvernements%20homonymes%7CMod%C3%A8le%3AGuerres%20homonymes%7CMod%C3%A8le%3AHomonymie%7C"
+ . "Mod%C3%A8le%3AHomonymie%20bateau%7CMod%C3%A8le%3AHomonymie%20d'%C3%A9tablissements%20scolaires%20ou"
+ . "%20universitaires%7CMod%C3%A8le%3AHomonymie%20d'%C3%AEles%7CMod%C3%A8le%3AHomonymie%20de%20clubs%20sportifs%7C"
+ . "Mod%C3%A8le%3AHomonymie%20de%20comt%C3%A9s%7CMod%C3%A8le%3AHomonymie%20de%20monument%7C"
+ . "Mod%C3%A8le%3AHomonymie%20de%20nom%20romain%7CMod%C3%A8le%3AHomonymie%20de%20parti%20politique%7C"
+ . "Mod%C3%A8le%3AHomonymie%20de%20route%7CMod%C3%A8le%3AHomonymie%20dynastique%7C"
+ . "Mod%C3%A8le%3AHomonymie%20vid%C3%A9oludique%7CMod%C3%A8le%3AHomonymie%20%C3%A9difice%20religieux%7C"
+ . "Mod%C3%A8le%3AInternationalisation%7CMod%C3%A8le%3AIsom%C3%A9rie%7CMod%C3%A8le%3AParonymie%7C"
+ . "Mod%C3%A8le%3APatronyme%7CMod%C3%A8le%3APatronyme%20basque%7CMod%C3%A8le%3APatronyme%20italien%7C"
+ . "Mod%C3%A8le%3APatronymie%7CMod%C3%A8le%3APersonnes%20homonymes%7CMod%C3%A8le%3ASaints%20homonymes%7C"
+ . "Mod%C3%A8le%3ATitres%20homonymes%7CMod%C3%A8le%3AToponymie%7CMod%C3%A8le%3AUnit%C3%A9s%20homonymes%7C"
+ . "Mod%C3%A8le%3AVilles%20homonymes%7CMod%C3%A8le%3A%C3%89difices%20religieux%20homonymes"
+ )
+ )
+ );
+ }
}
<?php
-global $IP;
-require_once( "$IP/maintenance/backup.inc" );
/**
* Base TestCase for dumps