* (bug 26253) $wgPostCommitUpdateList has been removed
* The PHPUnit test suite has been removed from this release due to serious issues
which should be resolved by the 1.18 release.
-* Oracle DB now uses the __destruct fuction to commit/close connection as it
+* Oracle DB now uses the __destruct function to commit/close connection as it
doesn't commit on close if transation is triggered in OCI.
== MediaWiki 1.16 ==
now enabled by default.
* $wgLBFactoryConf: Class names have had underscores removed. The configuration
should be updated if LBFactory_Simple or LBFactory_Multi is configured.
+* $wgPasswordSenderName has been deprecated. To set a custom mailer name,
+ the system message 'emailsender' should be modified (default: "{{SITENAME}}").
=== New features in 1.23 ===
* ResourceLoader can utilize the Web Storage API to cache modules client-side.
* Added ApiBeforeMain hook, roughly equivalent to the BeforeInitialize hook:
it's called after everything is set up but before any major processing
happens.
+* The jquery.client module now performs a component-wise version comparison in
+ its #test method when strings are used in the browser map: version '1.10' is
+ now correctly considered larger than '1.2'. Using numbers in the version map
+ is not affected.
=== Bug fixes in 1.23 ===
* (bug 41759) The "updated since last visit" markers (on history pages, recent
* (bug 37812) ResourceLoader will notice when a module's definition changes and
recompile it accordingly.
* (bug 57201) SpecialRecentChangesFilters hook is now executed for feeds.
-
-=== API changes in 1.23 ===
+* (bug 58640) Fixed a compatibility issue with PCRE 8.34 that caused pages
+ to appear blank or with missing text.
+* (bug 56931) Updated the plural rules to CLDR 24. They are in new format
+ which is detailed in UTS 35 Rev 33. The PHP parser and evaluator as well as
+ the JavaScript evaluator were updated to support the new format. Plural rules
+ for some languages have changed, most notably Russian. Affected software
+ messages have been updated and marked for review at translatewiki.net.
+
+=== Web API changes in 1.23 ===
* (bug 54884) action=parse&prop=categories now indicates hidden and missing
categories.
* action=query&meta=filerepoinfo now returns additional information for each
repo.
-* EditPage::spamPage() was deprecated since 1.17 and has been removed.
* action=parse&prop=languageshtml was deprecated in 1.18 and will be removed in
MediaWiki 1.24.
* action=parse now has disabletoc flag to disable table of contents in output.
-* SpecialRecentChanges::feedSetup() was removed.
* (bug 25702) list=allcategories, list=allimages, list=alllinks, list=allpages,
list=deletedrevs and list=filearchive did not handle case-sensitivity
properly for all parameters.
* ApiQueryBase::titlePartToKey allows an extra parameter that indicates the
namespace in order to properly capitalize the title part.
-* Renamed classes:
- - LBFactory_Fake to LBFactoryFake
- - LBFactory_Multi to LBFactoryMulti
- - LBFactory_Simple to LBFactorySimple
- - LBFactory_Single to LBFactorySingle
- - LoadBalancer_Single to LoadBalancerSingle
- - LoadMonitor_MySQL to LoadMonitorMySQL
- - LoadMonitor_Null to LoadMonitorNull
+* (bug 57874) action=feedcontributions no longer has one item more than limit.
=== Languages updated in 1.23 ===
regularly. Below only new and removed languages are listed, as well as
changes to languages because of Bugzilla reports.
-* Support was added for Northern Luri (lrc)
+* Support was added for Northern Luri (lrc).
=== Other changes in 1.23 ===
* The rc_type field in the recentchanges table has been superseded by a new
* The global variable $wgArticle has been removed after a lengthy deprecation.
* The global functions addButton and insertTags (for mw.toolbar.addButton and
mw.toolbar.insertTags) now emits mw.log.warn when accessed.
-* User::getPageRenderingHash() was deprecated since 1.17 and has been removed.
* The ExpandTemplates extension has been moved into MediaWiki core.
* (bug 52812) Removed "Disable search suggestions" from Preference.
* (bug 52809) Removed "Disable browser page caching" from Preference.
* SpecialPage::getTitle has been deprecated in favor of
SpecialPage::getPageTitle.
+==== Removed classes ====
+* TitleDependency
+* TitleListDependency
+
+==== Renamed classes ====
+* CdbReader_DBA to CdbReaderDBA
+* CdbReader_PHP to CdbReaderPHP
+* CdbWriter_DBA to CdbWriterDBA
+* CdbWriter_PHP to CdbWriterPHP
+* DiffOp_Add to DiffOpAdd
+* DiffOp_Change to DiffOpChange
+* DiffOp_Copy to DiffOpCopy
+* DiffOp_Delete to DiffOpDelete
+* HWLDF_WordAccumulator to HWLDFWordAccumulator
+* LBFactory_Fake to LBFactoryFake
+* LBFactory_Multi to LBFactoryMulti
+* LBFactory_Simple to LBFactorySimple
+* LBFactory_Single to LBFactorySingle
+* LCStore_Accel to LCStoreAccel
+* LCStore_CDB to LCStoreCDB
+* LCStore_DB to LCStoreDB
+* LCStore_Null to LCStoreNull
+* LoadBalancer_Single to LoadBalancerSingle
+* LoadMonitor_MySQL to LoadMonitorMySQL
+* LoadMonitor_Null to LoadMonitorNull
+* LocalisationCache_BulkLoad to LocalisationCacheBulkLoad
+* csvStatsOutput to CsvStatsOutput
+* extensionLanguages to ExtensionLanguages
+* languages to Languages
+* statsOutput to StatsOutput
+* textStatsOutput to TextStatsOutput
+* wikiStatsOutput to WikiStatsOutput
+
+==== Removed methods ====
+* EditPage::spamPage() (deprecated since 1.17)
+* Exif::getFormattedData() (deprecated in 1.18)
+* Exif::makeFormattedData() (deprecated in 1.18)
+* Language::convertLinkToAllVariants() (deprecated in 1.17)
+* LanguageConverter::convertLinkToAllVariants() (deprecated in 1.17)
+* Linker::makeBrokenLink() (deprecated in 1.16)
+* Linker::makeBrokenLinkObj() (deprecated in 1.16)
+* Linker::makeColouredLinkObj() (deprecated in 1.16)
+* Linker::makeSizeLinkObj() (deprecated in 1.17)
+* ProfilerSimple::getCpuTime (deprecated in 1.20)
+* Revision::revText() (deprecated in 1.17)
+* SkinTemplate::jstext() (deprecated in 1.21)
+* SpecialRecentChanges::feedSetup()
+* SpecialRevisionDelete::extractBitField() (deprecated in 1.22)
+* User::getPageRenderingHash() (deprecated in 1.17)
+* WikiPage::quickEdit() (deprecated in 1.18)
+* WikiPage::useParserCache() (deprecated in 1.18)
+* WikiPage::viewUpdates() (deprecated in 1.18)
+
== Compatibility ==
MediaWiki 1.23 requires PHP 5.3.2 or later.
// Process data & print results
$processor->execute();
+if ( function_exists( 'fastcgi_finish_request' ) ) {
+ fastcgi_finish_request();
+}
+
// Execute any deferred updates
DeferredUpdates::doUpdates();
// Log what the user did, for book-keeping purposes.
$endtime = microtime( true );
wfProfileOut( 'api.php' );
+
wfLogProfilingData();
// Log the request
$cache: The LocalisationCache object
$code: language code
&$alldata: The localisation data from core and extensions
+&purgeBlobs: whether to purge/update the message blobs via MessageBlobStore::clear()
'LocalisationChecksBlacklist': When fetching the blacklist of
localisation checks.
if ( $appendSubtitle ) {
$out = $this->getContext()->getOutput();
- $out->addSubtitle( wfMessage( 'redirectpagesub' )->escaped() );
+ $out->addSubtitle( wfMessage( 'redirectpagesub' )->parse() );
}
// the loop prepends the arrow image before the link, so the first case needs to be outside
$outputPage->setPageTitle( wfMessage( 'delete-confirm', $this->getTitle()->getPrefixedText() ) );
$outputPage->addBacklinkSubtitle( $this->getTitle() );
$outputPage->setRobotPolicy( 'noindex,nofollow' );
+ if ( $this->getTitle()->getBacklinkCache()->hasLinks( 'pagelinks' ) ) {
+ $outputPage->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
+ 'deleting-backlinks-warning' );
+ }
$outputPage->addWikiMsg( 'confirmdeletetext' );
wfRunHooks( 'ArticleConfirmDelete', array( $this, $outputPage, &$reason ) );
'JSParser' => 'includes/libs/jsminplus.php',
'JSToken' => 'includes/libs/jsminplus.php',
'JSTokenizer' => 'includes/libs/jsminplus.php',
+ 'MWMessagePack' => 'includes/libs/MWMessagePack.php',
+ 'RunningStat' => 'includes/libs/RunningStat.php',
+ 'ScopedCallback' => 'includes/libs/ScopedCallback.php',
'ScopedPHPTimeout' => 'includes/libs/ScopedPHPTimeout.php',
'XmlTypeCheck' => 'includes/libs/XmlTypeCheck.php',
'RegexlikeReplacer' => 'includes/utils/StringUtils.php',
'ReplacementArray' => 'includes/utils/StringUtils.php',
'Replacer' => 'includes/utils/StringUtils.php',
- 'ScopedCallback' => 'includes/utils/ScopedCallback.php',
'StringUtils' => 'includes/utils/StringUtils.php',
'UIDGenerator' => 'includes/utils/UIDGenerator.php',
'ZipDirectoryReader' => 'includes/utils/ZipDirectoryReader.php',
/**
* Password reminder name
+ *
+ * @deprecated since 1.23; use the system message 'emailsender' instead.
*/
$wgPasswordSenderName = 'MediaWiki Mail';
function getBaseRevision() {
if ( !$this->mBaseRevision ) {
$db = wfGetDB( DB_MASTER );
- $baseRevision = Revision::loadFromTimestamp(
+ $this->mBaseRevision = Revision::loadFromTimestamp(
$db, $this->mTitle, $this->edittime );
- return $this->mBaseRevision = $baseRevision;
- } else {
- return $this->mBaseRevision;
}
+ return $this->mBaseRevision;
}
/**
* @since 1.18
*/
public static function canonicalTitle( Title $title ) {
- if ( $title->getInterwiki() ) {
+ if ( $title->isExternal() ) {
return $title->getPrefixedText();
}
* @deprecated since 1.18
*
* @param string $key key of the message
- * @param array $options processing rules. Can take the following options:
- * <i>parse</i>: parses wikitext to HTML
- * <i>parseinline</i>: parses wikitext to HTML and removes the surrounding
+ * @param array $options processing rules.
+ * Can take the following options:
+ * parse: parses wikitext to HTML
+ * parseinline: parses wikitext to HTML and removes the surrounding
* p's added by parser or tidy
- * <i>escape</i>: filters message through htmlspecialchars
- * <i>escapenoentities</i>: same, but allows entity references like   through
- * <i>replaceafter</i>: parameters are substituted after parsing or escaping
- * <i>parsemag</i>: transform the message using magic phrases
- * <i>content</i>: fetch message for content language instead of interface
- * Also can accept a single associative argument, of the form 'language' => 'xx':
- * <i>language</i>: Language object or language code to fetch message for
- * (overridden by <i>content</i>).
+ * escape: filters message through htmlspecialchars
+ * escapenoentities: same, but allows entity references like   through
+ * replaceafter: parameters are substituted after parsing or escaping
+ * parsemag: transform the message using magic phrases
+ * content: fetch message for content language instead of interface
+ * Also can accept a single associative argument, of the form 'language' => 'xx':
+ * language: Language object or language code to fetch message for
+ * (overridden by content).
* Behavior for conflicting options (e.g., parse+parseinline) is undefined.
*
* @return String
* with releases
*
* Note: Due to the behavior of PHP's version_compare() which is used in this
- * fuction, if you want to allow the 'wmf' development versions add a 'c' (or
+ * function, if you want to allow the 'wmf' development versions add a 'c' (or
* any single letter other than 'a', 'b' or 'p') as a post-fix to your
* targeted version number. For example if you wanted to allow any variation
* of 1.22 use `wfUseMW( '1.22c' )`. Using an 'a' or 'b' instead of 'c' will
return Status::newFatal( 'import-noarticle' );
}
$link = Title::newFromText( "$interwiki:Special:Export/$page" );
- if ( is_null( $link ) || $link->getInterwiki() == '' ) {
+ if ( is_null( $link ) || !$link->isExternal() ) {
return Status::newFatal( 'importbadinterwiki' );
} else {
$params = array();
return htmlspecialchars( $target->getPrefixedText() );
}
- /**
- * Generate either a normal exists-style link or a stub link, depending
- * on the given page size.
- *
- * @param $size Integer
- * @param $nt Title object.
- * @param $text String
- * @param $query String
- * @param $trail String
- * @param $prefix String
- * @return string HTML of link
- * @deprecated since 1.17
- */
- static function makeSizeLinkObj( $size, $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
- global $wgUser;
- wfDeprecated( __METHOD__, '1.17' );
-
- $threshold = $wgUser->getStubThreshold();
- $colour = ( $size < $threshold ) ? 'stub' : '';
- // @todo FIXME: Replace deprecated makeColouredLinkObj by link()
- return self::makeColouredLinkObj( $nt, $colour, $text, $query, $trail, $prefix );
- }
-
/**
* Make appropriate markup for a link to the current article. This is currently rendered
* as the bold link text. The calling sequence is the same as the other make*LinkObj static functions,
$target = Title::newFromText( $linkTarget );
if ( $target ) {
- if ( $target->getText() == '' && $target->getInterwiki() === ''
+ if ( $target->getText() == '' && !$target->isExternal()
&& !self::$commentLocal && self::$commentContextTitle
) {
$newTarget = clone ( self::$commentContextTitle );
}
wfProfileOut( __METHOD__ );
- return self::$accesskeycache[$name] = $accesskey;
+ self::$accesskeycache[$name] = $accesskey;
+ return self::$accesskeycache[$name];
}
/**
/* Deprecated methods */
- /**
- * @deprecated since 1.16 Use link()
- *
- * This function is a shortcut to makeBrokenLinkObj(Title::newFromText($title),...). Do not call
- * it if you already have a title object handy. See makeBrokenLinkObj for further documentation.
- *
- * @param string $title The text of the title
- * @param string $text Link text
- * @param string $query Optional query part
- * @param string $trail Optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- * @return string
- */
- static function makeBrokenLink( $title, $text = '', $query = '', $trail = '' ) {
- wfDeprecated( __METHOD__, '1.16' );
-
- $nt = Title::newFromText( $title );
- if ( $nt instanceof Title ) {
- return self::makeBrokenLinkObj( $nt, $text, $query, $trail );
- } else {
- wfDebug( 'Invalid title passed to self::makeBrokenLink(): "' . $title . "\"\n" );
- return $text == '' ? $title : $text;
- }
- }
-
/**
* @deprecated since 1.16 Use link(); warnings since 1.21
*
return $ret;
}
- /**
- * @deprecated since 1.16 Use link()
- *
- * Make a red link to the edit page of a given title.
- *
- * @param $title Title object of the target page
- * @param $text String: Link text
- * @param string $query Optional query part
- * @param string $trail Optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- * @param string $prefix Optional prefix
- * @return string
- */
- static function makeBrokenLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '' ) {
- wfDeprecated( __METHOD__, '1.16' );
-
- wfProfileIn( __METHOD__ );
-
- list( $inside, $trail ) = self::splitTrail( $trail );
- if ( $text === '' ) {
- $text = self::linkText( $title );
- }
-
- $ret = self::link( $title, "$prefix$text$inside", array(),
- wfCgiToArray( $query ), 'broken' ) . $trail;
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @deprecated since 1.16 Use link()
- *
- * Make a coloured link.
- *
- * @param $nt Title object of the target page
- * @param $colour Integer: colour of the link
- * @param $text String: link text
- * @param $query String: optional query part
- * @param $trail String: optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- * @param string $prefix Optional prefix
- * @return string
- */
- static function makeColouredLinkObj( $nt, $colour, $text = '', $query = '', $trail = '', $prefix = '' ) {
- wfDeprecated( __METHOD__, '1.16' );
-
- if ( $colour != '' ) {
- $style = self::getInternalLinkAttributesObj( $nt, $text, $colour );
- } else {
- $style = '';
- }
- return self::makeKnownLinkObj( $nt, $text, $query, $trail, $prefix, '', $style );
- }
-
/**
* Returns the attributes for the tooltip and access key.
* @return array
$magic = MagicWord::get( $name );
$case = intval( $magic->isCaseSensitive() );
foreach ( $magic->getSynonyms() as $i => $syn ) {
- $group = "(?P<{$i}_{$name}>" . preg_quote( $syn, '/' ) . ')';
+ // Group name must start with a non-digit in PCRE 8.34+
+ $it = strtr( $i, '0123456789', 'abcdefghij' );
+ $group = "(?P<{$it}_{$name}>" . preg_quote( $syn, '/' ) . ')';
if ( $this->baseRegex[$case] === '' ) {
$this->baseRegex[$case] = $group;
} else {
* representing the result row $row. Rows will be concatenated and
* returned by getBody()
*
- * @param array $row Database row
+ * @param array|stdClass $row Database row
* @return string
*/
abstract function formatRow( $row );
// Find a Title which is not an interwiki and is in NS_MAIN
$title = Title::newFromText( $search );
- if ( $title && $title->getInterwiki() == '' ) {
+ if ( $title && !$title->isExternal() ) {
$ns = array( $title->getNamespace() );
if ( $ns[0] == NS_MAIN ) {
$ns = $namespaces; // no explicit prefix, use default namespaces
$title = Title::newFromText( $search . 'Dummy' );
if ( $title && $title->getText() == 'Dummy'
&& $title->getNamespace() != NS_MAIN
- && $title->getInterwiki() == '' ) {
+ && !$title->isExternal() ) {
return self::searchBackend(
array( $title->getNamespace() ), '', $limit );
}
/**
* This is the actual workhorse. It does everything needed to make a
* real, honest-to-gosh query page.
- * @para $par
+ * @param string $par
* @return int
*/
function execute( $par ) {
}
}
- /**
- * Alias for getText(Revision::FOR_THIS_USER)
- *
- * @deprecated since 1.17
- * @return String
- */
- public function revText() {
- wfDeprecated( __METHOD__, '1.17' );
- return $this->getText( self::FOR_THIS_USER );
- }
-
/**
* Fetch revision text without regard for view restrictions
*
/**
* Get revision text associated with an old or archive row
* $row is usually an object from wfFetchRow(), both the flags and the text
- * field must be included
+ * field must be included.
*
- * @param $row Object: the text data
- * @param string $prefix table prefix (default 'old_')
- * @param string|false $wiki the name of the wiki to load the revision text from
- * (same as the the wiki $row was loaded from) or false to indicate the local
- * wiki (this is the default). Otherwise, it must be a symbolic wiki database
- * identifier as understood by the LoadBalancer class.
- * @return String: text the text requested or false on failure
+ * @param stdClass $row The text data
+ * @param string $prefix Table prefix (default 'old_')
+ * @param string|bool $wiki The name of the wiki to load the revision text from
+ * (same as the the wiki $row was loaded from) or false to indicate the local
+ * wiki (this is the default). Otherwise, it must be a symbolic wiki database
+ * identifier as understood by the LoadBalancer class.
+ * @return string Text the text requested or false on failure
*/
public static function getRevisionText( $row, $prefix = 'old_', $wiki = false ) {
wfProfileIn( __METHOD__ );
echo htmlspecialchars( $this->data[$str] );
}
- /**
- * @private
- * @deprecated since 1.21; use Xml::encodeJsVar() or Xml::encodeJsCall() instead
- */
- function jstext( $str ) {
- wfDeprecated( __METHOD__, '1.21' );
- echo Xml::escapeJsString( $this->data[$str] );
- }
-
/**
* @private
*/
* @since 1.17
*/
class SpecialPageFactory {
-
/**
* List of special page names to the subclass of SpecialPage which handles them.
*/
* where the first element is the special page name and the second is the
* subpage.
*
- * @param $alias String
- * @return Array( String, String|null ), or array( null, null ) if the page is invalid
+ * @param string $alias
+ * @return array Array( String, String|null ), or array( null, null ) if the page is invalid
*/
public static function resolveAlias( $alias ) {
global $wgContLang;
/**
* Add a page to a certain display group for Special:SpecialPages
*
- * @param $page Mixed: SpecialPage or string
- * @param $group String
+ * @param SpecialPage|string $page
+ * @param string $group
* @deprecated since 1.21 Override SpecialPage::getGroupName
*/
public static function setGroup( $page, $group ) {
/**
* Get the group that the special page belongs in on Special:SpecialPage
*
- * @param $page SpecialPage
- * @return String
+ * @param SpecialPage $page
+ * @return string
* @deprecated since 1.21 Use SpecialPage::getFinalGroupName
*/
public static function getGroup( &$page ) {
/**
* Check if a given name exist as a special page or as a special page alias
*
- * @param string $name name of a special page
- * @return Boolean: true if a special page exists with this name
+ * @param string $name Name of a special page
+ * @return bool True if a special page exists with this name
*/
public static function exists( $name ) {
list( $title, /*...*/ ) = self::resolveAlias( $name );
* Return categorised listable special pages which are available
* for the current user, and everyone.
*
- * @param $user User object to check permissions, $wgUser will be used
- * if not provided
- * @return Array( String => Specialpage )
+ * @param $user User object to check permissions, $wgUser will be used if
+ * if not provided
+ * @return array ( string => Specialpage )
*/
public static function getUsablePages( User $user = null ) {
$pages = array();
/**
* Return categorised listable special pages for all users
*
- * @return Array( String => Specialpage )
+ * @return array ( string => Specialpage )
*/
public static function getRegularPages() {
$pages = array();
* Return categorised listable special pages which are available
* for the current user, but not for everyone
*
- * @return Array( String => Specialpage )
+ * @return array ( string => Specialpage )
*/
public static function getRestrictedPages() {
global $wgUser;
* Returns a title object if the page is redirected, false if there was no such special
* page, and true if it was successful.
*
- * @param $title Title object
- * @param $context IContextSource
- * @param $including Bool output is being captured for use in {{special:whatever}}
+ * @param Title $title
+ * @param IContextSource $context
+ * @param bool $including Bool output is being captured for use in {{special:whatever}}
*
* @return bool
*/
* variables so that the special page will get the context it'd expect on a
* normal request, and then restores them to their previous values after.
*
- * @param $title Title
- * @param $context IContextSource
- *
- * @return String: HTML fragment
+ * @param Title $title
+ * @param IContextSource $context
+ * @return string HTML fragment
*/
static function capturePath( Title $title, IContextSource $context ) {
global $wgOut, $wgTitle, $wgRequest, $wgUser, $wgLang;
/**
* Get the local name for a specified canonical name
*
- * @param $name String
- * @param $subpage String|Bool
- *
- * @return String
+ * @param string $name
+ * @param string|bool $subpage
+ * @return string
*/
static function getLocalNameFor( $name, $subpage = false ) {
global $wgContLang;
/**
* Get a title for a given alias
*
- * @param $alias String
- *
- * @return Title or null if there is no such alias
+ * @param string $alias
+ * @return Title|null Title or null if there is no such alias
*/
static function getTitleForAlias( $alias ) {
$name = self::resolveAlias( $alias );
var $mDbkeyform = ''; // /< Main part with underscores
var $mUserCaseDBKey; // /< DB key with the initial letter in the case specified by the user
var $mNamespace = NS_MAIN; // /< Namespace index, i.e. one of the NS_xxxx constants
- var $mInterwiki = ''; // /< Interwiki prefix (or null string)
+ var $mInterwiki = ''; // /< Interwiki prefix
var $mFragment; // /< Title fragment (i.e. the bit after the #)
var $mArticleID = -1; // /< Article ID, fetched from the link cache on demand
var $mLatestID = false; // /< ID of most recent revision
var $mHasCascadingRestrictions; ///< Are cascading restrictions in effect on this page?
var $mCascadeSources; ///< Where are the cascading restrictions coming from on this page?
var $mRestrictionsLoaded = false; ///< Boolean for initialisation on demand
- var $mPrefixedText; ///< Text form including namespace/interwiki, initialised on demand
+ var $mPrefixedText = null; ///< Text form including namespace/interwiki, initialised on demand
var $mTitleProtection; ///< Cached value for getTitleProtection (create protection)
# Don't change the following default, NS_MAIN is hardcoded in several
# places. See bug 696.
* @return Bool TRUE if this is an in-project interwiki link or a wikilink, FALSE otherwise
*/
public function isLocal() {
- if ( $this->mInterwiki != '' ) {
+ if ( $this->isExternal() ) {
$iw = Interwiki::fetch( $this->mInterwiki );
if ( $iw ) {
return $iw->isLocal();
* @return Bool
*/
public function isExternal() {
- return ( $this->mInterwiki != '' );
+ return $this->mInterwiki !== '';
}
/**
- * Get the interwiki prefix (or null string)
+ * Get the interwiki prefix
*
* @return String Interwiki prefix
*/
* @return Bool TRUE if this is transcludable
*/
public function isTrans() {
- if ( $this->mInterwiki == '' ) {
+ if ( !$this->isExternal() ) {
return false;
}
* @return String the DB name
*/
public function getTransWikiID() {
- if ( $this->mInterwiki == '' ) {
+ if ( !$this->isExternal() ) {
return false;
}
public function getNsText() {
global $wgContLang;
- if ( $this->mInterwiki != '' ) {
+ if ( $this->isExternal() ) {
// This probably shouldn't even happen. ohh man, oh yuck.
// But for interwiki transclusion it sometimes does.
// Shit. Shit shit shit.
* @return Bool TRUE or FALSE
*/
public function isMovable() {
- if ( !MWNamespace::isMovable( $this->getNamespace() ) || $this->getInterwiki() != '' ) {
+ if ( !MWNamespace::isMovable( $this->getNamespace() ) || $this->isExternal() ) {
// Interwiki title or immovable namespace. Hooks don't get to override here
return false;
}
*/
private function prefix( $name ) {
$p = '';
- if ( $this->mInterwiki != '' ) {
+ if ( $this->isExternal() ) {
$p = $this->mInterwiki . ':';
}
* @return String the prefixed title, with spaces
*/
public function getPrefixedText() {
- // @todo FIXME: Bad usage of empty() ?
- if ( empty( $this->mPrefixedText ) ) {
+ if ( $this->mPrefixedText === null ) {
$s = $this->prefix( $this->mTextform );
$s = str_replace( '_', ' ', $s );
$this->mPrefixedText = $s;
* interwiki link
*/
public function getEditURL() {
- if ( $this->mInterwiki != '' ) {
+ if ( $this->isExternal() ) {
return '';
}
$s = $this->getLocalURL( 'action=edit' );
# alone to cache the result. There's no point in having it hanging
# around uninitialized in every Title object; therefore we only add it
# if needed and don't declare it statically.
- if ( isset( $this->mHasSubpages ) ) {
- return $this->mHasSubpages;
+ if ( !isset( $this->mHasSubpages ) ) {
+ $this->mHasSubpages = false;
+ $subpages = $this->getSubpages( 1 );
+ if ( $subpages instanceof TitleArray ) {
+ $this->mHasSubpages = (bool)$subpages->count();
+ }
}
- $subpages = $this->getSubpages( 1 );
- if ( $subpages instanceof TitleArray ) {
- return $this->mHasSubpages = (bool)$subpages->count();
- }
- return $this->mHasSubpages = false;
+ return $this->mHasSubpages;
}
/**
if ( $limit > -1 ) {
$options['LIMIT'] = $limit;
}
- return $this->mSubpages = TitleArray::newFromResult(
+ $this->mSubpages = TitleArray::newFromResult(
$dbr->select( 'page',
array( 'page_id', 'page_namespace', 'page_title', 'page_is_redirect' ),
$conds,
$options
)
);
+ return $this->mSubpages;
}
/**
*/
public function getArticleID( $flags = 0 ) {
if ( $this->getNamespace() < 0 ) {
- return $this->mArticleID = 0;
+ $this->mArticleID = 0;
+ return $this->mArticleID;
}
$linkCache = LinkCache::singleton();
if ( $flags & self::GAID_FOR_UPDATE ) {
}
# Calling getArticleID() loads the field from cache as needed
if ( !$this->getArticleID( $flags ) ) {
- return $this->mRedirect = false;
+ $this->mRedirect = false;
+ return $this->mRedirect;
}
$linkCache = LinkCache::singleton();
# LinkCache as appropriate, or use $flags = Title::GAID_FOR_UPDATE. If that flag is
# set, then LinkCache will definitely be up to date here, since getArticleID() forces
# LinkCache to refresh its data from the master.
- return $this->mRedirect = false;
+ $this->mRedirect = false;
+ return $this->mRedirect;
}
$this->mRedirect = (bool)$cached;
}
# Calling getArticleID() loads the field from cache as needed
if ( !$this->getArticleID( $flags ) ) {
- return $this->mLength = 0;
+ $this->mLength = 0;
+ return $this->mLength;
}
$linkCache = LinkCache::singleton();
$cached = $linkCache->getGoodLinkFieldObj( $this, 'length' );
if ( $cached === null ) {
# Trust LinkCache's state over our own, as for isRedirect()
- return $this->mLength = 0;
+ $this->mLength = 0;
+ return $this->mLength;
}
$this->mLength = intval( $cached );
}
# Calling getArticleID() loads the field from cache as needed
if ( !$this->getArticleID( $flags ) ) {
- return $this->mLatestID = 0;
+ $this->mLatestID = 0;
+ return $this->mLatestID;
}
$linkCache = LinkCache::singleton();
$linkCache->addLinkObj( $this );
$cached = $linkCache->getGoodLinkFieldObj( $this, 'revision' );
if ( $cached === null ) {
# Trust LinkCache's state over our own, as for isRedirect()
- return $this->mLatestID = 0;
+ $this->mLatestID = 0;
+ return $this->mLatestID;
}
$this->mLatestID = intval( $cached );
} while ( true );
# We already know that some pages won't be in the database!
- if ( $this->mInterwiki != '' || NS_SPECIAL == $this->mNamespace ) {
+ if ( $this->isExternal() || NS_SPECIAL == $this->mNamespace ) {
$this->mArticleID = 0;
}
$fragment = strstr( $dbkey, '#' );
# and [[Foo]] point to the same place. Don't force it for interwikis, since the
# other site might be case-sensitive.
$this->mUserCaseDBKey = $dbkey;
- if ( $this->mInterwiki == '' ) {
+ if ( !$this->isExternal() ) {
$dbkey = self::capitalize( $dbkey, $this->mNamespace );
}
# Can't make a link to a namespace alone... "empty" local links can only be
# self-links with a fragment identifier.
- # TODO: Why do we exclude NS_MAIN (bug 54044)
- if ( $dbkey == '' && $this->mInterwiki == '' && $this->mNamespace != NS_MAIN ) {
+ if ( $dbkey == '' && !$this->isExternal() && $this->mNamespace != NS_MAIN ) {
return false;
}
if ( !$this->isMovable() ) {
$errors[] = array( 'immobile-source-namespace', $this->getNsText() );
}
- if ( $nt->getInterwiki() != '' ) {
+ if ( $nt->isExternal() ) {
$errors[] = array( 'immobile-target-namespace-iw' );
}
if ( !$nt->isMovable() ) {
return $isKnown;
}
- if ( $this->mInterwiki != '' ) {
+ if ( $this->isExternal() ) {
return true; // any interwiki link might be viewable, for all we know
}
return $this->mNotificationTimestamp[$uid];
}
if ( !$uid || !$wgShowUpdatedMarker || !$user->isAllowed( 'viewmywatchlist' ) ) {
- return $this->mNotificationTimestamp[$uid] = false;
+ $this->mNotificationTimestamp[$uid] = false;
+ return $this->mNotificationTimestamp[$uid];
}
// Don't cache too much!
if ( count( $this->mNotificationTimestamp ) >= self::CACHE_MAX ) {
* user_name and user_real_name are not provided because the whole row
* will be loaded once more from the database when accessing them.
*
- * @param array $row A row from the user table
+ * @param stdClass $row A row from the user table
* @param array $data Further data to load into the object (see User::loadFromRow for valid keys)
* @return User
*/
*/
public function sendMail( $subject, $body, $from = null, $replyto = null ) {
if ( is_null( $from ) ) {
- global $wgPasswordSender, $wgPasswordSenderName;
- $sender = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+ global $wgPasswordSender;
+ $sender = new MailAddress( $wgPasswordSender,
+ wfMessage( 'emailsender' )->inContentLanguage()->text() );
} else {
$sender = new MailAddress( $from );
}
static function arrayToHeaderString( $headers, $endl = "\n" ) {
$strings = array();
foreach ( $headers as $name => $value ) {
+ // Prevent header injection by stripping newlines from value
+ $value = self::sanitizeHeaderValue( $value );
$strings[] = "$name: $value";
}
return implode( $endl, $strings );
self::$mErrorString = preg_replace( '/^mail\(\)(\s*\[.*?\])?: /', '', $string );
}
+ /**
+ * Strips bad characters from a header value to prevent PHP mail header injection attacks
+ * @param string $val String to be santizied
+ * @return string
+ */
+ public static function sanitizeHeaderValue( $val ) {
+ return strtr( $val, array( "\r" => '', "\n" => '' ) );
+ }
+
/**
* Converts a string into a valid RFC 822 "phrase", such as is used for the sender name
* @param $phrase string
* @return string
*/
public static function rfc822Phrase( $phrase ) {
- $phrase = strtr( $phrase, array( "\r" => '', "\n" => '', '"' => '' ) );
+ // Remove line breaks
+ $phrase = self::sanitizeHeaderValue( $phrase );
+ // Remove quotes
+ $phrase = str_replace( '"', '', $phrase );
return '"' . $phrase . '"';
}
* Generate the generic "this page has been changed" e-mail text.
*/
private function composeCommonMailtext() {
- global $wgPasswordSender, $wgPasswordSenderName, $wgNoReplyAddress;
+ global $wgPasswordSender, $wgNoReplyAddress;
global $wgEnotifFromEditor, $wgEnotifRevealEditorAddress;
global $wgEnotifImpersonal, $wgEnotifUseRealName;
# Reveal the page editor's address as REPLY-TO address only if
# the user has not opted-out and the option is enabled at the
# global configuration level.
- $adminAddress = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+ $adminAddress = new MailAddress( $wgPasswordSender,
+ wfMessage( 'emailsender' )->inContentLanguage()->text() );
if ( $wgEnotifRevealEditorAddress
&& ( $this->editor->getEmail() != '' )
&& $this->editor->getOption( 'enotifrevealaddr' )
} else {
return 'http';
}
- return $arr;
}
/**
$ret = Title::newMainPage();
}
- if ( $ret === null || ( $ret->getDBkey() == '' && $ret->getInterwiki() == '' ) ) {
+ if ( $ret === null || ( $ret->getDBkey() == '' && !$ret->isExternal() ) ) {
$ret = SpecialPage::getTitleFor( 'Badtitle' );
}
wfRunHooks( 'BeforeInitialize', array( &$title, &$unused, &$output, &$user, $request, $this ) );
// Invalid titles. Bug 21776: The interwikis must redirect even if the page name is empty.
- if ( is_null( $title ) || ( $title->getDBkey() == '' && $title->getInterwiki() == '' )
+ if ( is_null( $title ) || ( $title->getDBkey() == '' && !$title->isExternal() )
|| $title->isSpecial( 'Badtitle' )
) {
$this->context->setTitle( SpecialPage::getTitleFor( 'Badtitle' ) );
$pageView = false; // was an article or special page viewed?
// Interwiki redirects
- if ( $title->getInterwiki() != '' ) {
+ if ( $title->isExternal() ) {
$rdfrom = $request->getVal( 'rdfrom' );
if ( $rdfrom ) {
$url = $title->getFullURL( array( 'rdfrom' => $rdfrom ) );
try {
$this->checkMaxLag();
$this->main();
+ if ( function_exists( 'fastcgi_finish_request' ) ) {
+ fastcgi_finish_request();
+ }
$this->restInPeace();
} catch ( Exception $e ) {
MWExceptionHandler::handle( $e );
if ( $from == $to ) {
return null;
}
- return $this->mRedirectTarget = Title::makeTitle( NS_FILE, $to );
+ $this->mRedirectTarget = Title::makeTitle( NS_FILE, $to );
+ return $this->mRedirectTarget;
}
/**
}
$hash = $this->mFile->getSha1();
if ( !( $hash ) ) {
- return $this->mDupes = array();
+ $this->mDupes = array();
+ return $this->mDupes;
}
$dupes = RepoGroup::singleton()->findBySha1( $hash );
// Remove duplicates with self and non matching file sizes
// rd_fragment and rd_interwiki were added later, populate them if empty
if ( $row && !is_null( $row->rd_fragment ) && !is_null( $row->rd_interwiki ) ) {
- return $this->mRedirectTarget = Title::makeTitle(
+ $this->mRedirectTarget = Title::makeTitle(
$row->rd_namespace, $row->rd_title,
$row->rd_fragment, $row->rd_interwiki );
+ return $this->mRedirectTarget;
}
// This page doesn't have an entry in the redirect table
- return $this->mRedirectTarget = $this->insertRedirect();
+ $this->mRedirectTarget = $this->insertRedirect();
+ return $this->mRedirectTarget;
}
/**
return $this->doUpdateRestrictions( $limit, $expiry, $cascade, $reason, $user )->isOK();
}
- /**
- * @deprecated since 1.18
- */
- public function quickEdit( $text, $comment = '', $minor = 0 ) {
- wfDeprecated( __METHOD__, '1.18' );
- global $wgUser;
- $this->doQuickEdit( $text, $wgUser, $comment, $minor );
- }
-
- /**
- * @deprecated since 1.18
- */
- public function viewUpdates() {
- wfDeprecated( __METHOD__, '1.18' );
- global $wgUser;
- $this->doViewUpdates( $wgUser );
- }
-
- /**
- * @deprecated since 1.18
- * @param $oldid int
- * @return bool
- */
- public function useParserCache( $oldid ) {
- wfDeprecated( __METHOD__, '1.18' );
- global $wgUser;
- return $this->isParserCacheUsed( ParserOptions::newFromUser( $wgUser ), $oldid );
- }
-
/**
* Returns a list of updates to be performed when this page is deleted. The updates should remove any information
* about this page from secondary data stores such as links tables.
}
$request = $this->getRequest();
+ /** @var RSSFeed|AtomFeed $feed */
$feed = new $wgFeedClasses[$type](
$this->getTitle()->getPrefixedText() . ' - ' .
$this->msg( 'history-feed-title' )->inContentLanguage()->text(),
$this->getOutput()->addWikiMsgArray( $errMsg, $errArray );
if ( isset( $details['current'] ) ) {
+ /** @var Revision $current */
$current = $details['current'];
if ( $current->getComment() != '' ) {
throw new ErrorPageError( 'rollbackfailed', $error[0], array_slice( $error, 1 ) );
}
+ /** @var Revision $current */
$current = $details['current'];
$target = $details['target'];
$newId = $details['newid'];
$feedItems = array();
if ( $pager->getNumRows() > 0 ) {
+ $count = 0;
+ $limit = $pager->getLimit();
foreach ( $pager->mResult as $row ) {
+ // ContribsPager selects one more row for navigation, skip that row
+ if ( ++$count > $limit ) {
+ break;
+ }
$feedItems[] = $this->feedItem( $row );
}
}
* @ingroup API
*/
class ApiFileRevert extends ApiBase {
-
- /**
- * @var File
- */
+ /** @var LocalFile */
protected $file;
+
+ /** @var string */
protected $archiveName;
+ /** @var array */
protected $params;
public function execute() {
/**
* All Title objects provided.
- * @return array of Title objects
+ * @return Title[]
*/
public function getTitles() {
return $this->mTitles;
/**
* Title objects that were found in the database.
- * @return array page_id (int) => Title (obj)
+ * @return Title[] Array page_id (int) => Title (obj)
*/
public function getGoodTitles() {
return $this->mGoodTitles;
/**
* Title objects that were NOT found in the database.
* The array's index will be negative for each item
- * @return array of Title objects
+ * @return Title[]
*/
public function getMissingTitles() {
return $this->mMissingTitles;
/**
* Titles that were deemed invalid by Title::newFromText()
* The array's index will be unique and negative for each item
- * @return array of strings (not Title objects)
+ * @return string[] Array of strings (not Title objects)
*/
public function getInvalidTitles() {
return $this->mInvalidTitles;
if ( !$t ) {
$this->dieUsageMsg( array( 'invalidtitle', $titlePart ) );
}
- if ( $defaultNamespace != $t->getNamespace() || $t->getInterwiki() !== '' ) {
+ if ( $defaultNamespace != $t->getNamespace() || $t->isExternal() ) {
// This can happen in two cases. First, if you call titlePartToKey with a title part
// that looks like a namespace, but with $defaultNamespace = NS_MAIN. It would be very
// difficult to handle such a case. Such cases cannot exist and are therefore treated
global $wgMiserMode;
$p = $this->getModulePrefix();
$desc = array(
- 'title' => "Which category to enumerate (required). Must include ' .
- 'Category: prefix. Cannot be used together with {$p}pageid",
+ 'title' => "Which category to enumerate (required). Must include " .
+ "'Category:' prefix. Cannot be used together with {$p}pageid",
'pageid' => "Page ID of the category to enumerate. Cannot be used together with {$p}title",
'prop' => array(
'What pieces of information to include',
'dir' => 'In which direction to sort',
'start' => "Timestamp to start listing from. Can only be used with {$p}sort=timestamp",
'end' => "Timestamp to end listing at. Can only be used with {$p}sort=timestamp",
- 'startsortkey' => "Sortkey to start listing from. Must be given in ' .
- 'binary format. Can only be used with {$p}sort=sortkey",
- 'endsortkey' => "Sortkey to end listing at. Must be given in binary ' .
- 'format. Can only be used with {$p}sort=sortkey",
- 'startsortkeyprefix' => "Sortkey prefix to start listing from. Can ' .
- 'only be used with {$p}sort=sortkey. Overrides {$p}startsortkey",
- 'endsortkeyprefix' => "Sortkey prefix to end listing BEFORE (not at, ' .
- 'if this value occurs it will not be included!). Can only be used with ' .
- '{$p}sort=sortkey. Overrides {$p}endsortkey",
+ 'startsortkey' => "Sortkey to start listing from. Must be given in " .
+ "binary format. Can only be used with {$p}sort=sortkey",
+ 'endsortkey' => "Sortkey to end listing at. Must be given in binary " .
+ "format. Can only be used with {$p}sort=sortkey",
+ 'startsortkeyprefix' => "Sortkey prefix to start listing from. Can " .
+ "only be used with {$p}sort=sortkey. Overrides {$p}startsortkey",
+ 'endsortkeyprefix' => "Sortkey prefix to end listing BEFORE (not at, " .
+ "if this value occurs it will not be included!). Can only be used with " .
+ "{$p}sort=sortkey. Overrides {$p}endsortkey",
'continue' => 'For large categories, give the value returned from previous query',
'limit' => 'The maximum number of pages to return.',
);
if ( $wgContLang->hasVariants() ) {
$variants = array();
foreach ( $wgContLang->getVariants() as $code ) {
- $variants[] = array( 'code' => $code );
+ $variants[] = array(
+ 'code' => $code,
+ 'name' => $wgContLang->getVariantname( $code ),
+ );
}
$data['variants'] = $variants;
$this->getResult()->setIndexedTagName( $data['variants'], 'lang' );
return $vals;
}
- /* Copied from ApiQueryRecentChanges. */
+ /** Copied from ApiQueryRecentChanges.
+ *
+ * @param string $type
+ * @return string
+ */
private function parseRCType( $type ) {
if ( is_array( $type ) ) {
$retval = array();
$p = $this->getModulePrefix();
return array(
- 'id' => "ID of the block you want to unblock (obtained through list=blocks). ' .
- 'Cannot be used together with {$p}user",
- 'user' => "Username, IP address or IP range you want to unblock. ' .
- 'Cannot be used together with {$p}id",
+ 'id' => "ID of the block you want to unblock (obtained through list=blocks). " .
+ "Cannot be used together with {$p}user",
+ 'user' => "Username, IP address or IP range you want to unblock. " .
+ "Cannot be used together with {$p}id",
'token' => "An unblock token previously obtained through prop=info",
'reason' => 'Reason for unblock',
);
* @ingroup API
*/
class ApiUpload extends ApiBase {
-
- /**
- * @var UploadBase
- */
+ /** @var UploadBase */
protected $mUpload = null;
protected $mParams;
$params = $this->extractRequestParams();
$title = Title::newFromText( $params['title'] );
- if ( !$title || $title->isExternal() || !$title->canExist() ) {
+ if ( !$title || !$title->isWatchable() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
}
*/
class DependencyWrapper {
private $value;
+ /** @var CacheDependency[] */
private $deps;
/**
* Create an instance.
* @param $value Mixed: the user-supplied value
- * @param $deps Mixed: a dependency or dependency array. All dependencies
- * must be objects implementing CacheDependency.
+ * @param CacheDependency|CacheDependency[] $deps A dependency or dependency
+ * array. All dependencies must be objects implementing CacheDependency.
*/
function __construct( $value = false, $deps = array() ) {
$this->value = $value;
$allData['list'][$key] = array_keys( $allData[$key] );
}
# Run hooks
- wfRunHooks( 'LocalisationCacheRecache', array( $this, $code, &$allData ) );
+ $purgeBlobs = true;
+ wfRunHooks( 'LocalisationCacheRecache', array( $this, $code, &$allData, &$purgeBlobs ) );
if ( is_null( $allData['namespaceNames'] ) ) {
wfProfileOut( __METHOD__ );
# Clear out the MessageBlobStore
# HACK: If using a null (i.e. disabled) storage backend, we
# can't write to the MessageBlobStore either
- if ( !$this->store instanceof LCStoreNull ) {
+ if ( $purgeBlobs && !$this->store instanceof LCStoreNull ) {
MessageBlobStore::clear();
}
* See Cdb.php and http://cr.yp.to/cdb.html
*/
class LCStoreCDB implements LCStore {
+ /** @var CdbReader[] */
private $readers;
+
+ /** @var CdbWriter */
private $writer;
+
+ /** @var string Current language code */
private $currentLang;
+
+ /** @var bool|string Cache directory. False if not set */
private $directory;
function __construct( $conf = array() ) {
}
/**
- * @param ObjectCache $memCached A cache instance. If none, fall back to CACHE_NONE.
+ * @param BagOStuff $memCached A cache instance. If none, fall back to CACHE_NONE.
* @param bool $useDB
* @param int $expiry Lifetime for cache. @see $mExpiry.
*/
* @return string
*/
private function fileCachedPage() {
- global $wgTitle, $wgOut, $wgRequest;
+ $context = RequestContext::getMain();
- if ( $wgOut->isDisabled() ) {
+ if ( $context->getOutput()->isDisabled() ) {
// Done already?
return '';
}
- if ( $wgTitle ) {
- // use $wgTitle if we managed to set it
- $t = $wgTitle->getPrefixedDBkey();
+ if ( $context->getTitle() ) {
+ // Use the main context's title if we managed to set it
+ $t = $context->getTitle()->getPrefixedDBkey();
} else {
// Fallback to the raw title URL param. We can't use the Title
// class is it may hit the interwiki table and give a DB error.
// We may get a cache miss due to not sanitizing the title though.
- $t = str_replace( ' ', '_', $wgRequest->getVal( 'title' ) );
+ $t = str_replace( ' ', '_', $context->getRequest()->getVal( 'title' ) );
if ( $t == '' ) { // fallback to main page
$t = Title::newFromText(
$this->msg( 'mainpage', 'Main Page' ) )->getPrefixedDBkey();
* @ingroup Database
*/
class DatabaseMssql extends DatabaseBase {
- var $mInsertId = null;
- var $mLastResult = null;
- var $mAffectedRows = null;
+ /** @var resource */
+ protected $mLastResult = null;
- var $mPort;
+ /** @var int The number of rows affected as an integer */
+ protected $mAffectedRows = null;
+
+ /**
+ * @var int Post number for database
+ * @todo Unused and can be removed?
+ */
+ protected $mPort;
+
+ /** @var int */
+ private $mInsertId = null;
function cascadingDeletes() {
return true;
# e.g. the class is being loaded
if ( !strlen( $user ) ) {
- return;
+ return null;
}
$this->close();
/**
* This must be called after nextSequenceVal
- * @return null
+ * @return int|null
*/
function insertId() {
return $this->mInsertId;
* @throws DBConnectionError
*/
function open( $server, $user, $password, $dbName ) {
- global $wgAllDBsAreLocalhost, $wgDBmysql5, $wgSQLMode;
+ global $wgAllDBsAreLocalhost, $wgSQLMode;
wfProfileIn( __METHOD__ );
# Debugging hack -- fake cluster
wfProfileOut( __METHOD__ );
- return $this->reportConnectionError( $error );
+ $this->reportConnectionError( $error );
}
if ( $dbName != '' ) {
wfProfileOut( __METHOD__ );
- return $this->reportConnectionError( "Error selecting database $dbName" );
+ $this->reportConnectionError( "Error selecting database $dbName" );
}
}
- // Tell the server we're communicating with it in UTF-8.
- // This may engage various charset conversions.
- if ( $wgDBmysql5 ) {
- $this->mysqlSetCharset( 'utf8' );
- } else {
- $this->mysqlSetCharset( 'binary' );
+ // Tell the server what we're communicating with
+ if ( !$this->connectInitCharset() ) {
+ $this->reportConnectionError( "Error setting character set" );
}
+
// Set SQL mode, default is turning them all off, can be overridden or skipped with null
if ( is_string( $wgSQLMode ) ) {
$mode = $this->addQuotes( $wgSQLMode );
if ( !$success ) {
wfLogDBError( "Error setting sql_mode to $mode on server {$this->mServer}" );
wfProfileOut( __METHOD__ );
- return $this->reportConnectionError( "Error setting sql_mode to $mode" );
+ $this->reportConnectionError( "Error setting sql_mode to $mode" );
}
}
return true;
}
+ /**
+ * Set the character set information right after connection
+ * @return bool
+ */
+ protected function connectInitCharset() {
+ global $wgDBmysql5;
+
+ if ( $wgDBmysql5 ) {
+ // Tell the server we're communicating with it in UTF-8.
+ // This may engage various charset conversions.
+ return $this->mysqlSetCharset( 'utf8' );
+ } else {
+ return $this->mysqlSetCharset( 'binary' );
+ }
+ }
+
/**
* Open a connection to a MySQL server
*
}
protected function mysqlConnect( $realServer ) {
+ global $wgDBmysql5;
# Fail now
# Otherwise we get a suppressed fatal error, which is very hard to track down
if ( !function_exists( 'mysqli_init' ) ) {
}
$mysqli = mysqli_init();
- $numAttempts = 2;
+ if ( $wgDBmysql5 ) {
+ // Tell the server we're communicating with it in UTF-8.
+ // This may engage various charset conversions.
+ $mysqli->options( MYSQLI_SET_CHARSET_NAME, 'utf8' );
+ } else {
+ $mysqli->options( MYSQLI_SET_CHARSET_NAME, 'binary' );
+ }
+ $numAttempts = 2;
for ( $i = 0; $i < $numAttempts; $i++ ) {
if ( $i > 1 ) {
usleep( 1000 );
return false;
}
+ protected function connectInitCharset() {
+ // already done in mysqlConnect()
+ return true;
+ }
+
/**
* @return bool
*/
* @ingroup Database
*/
class DatabaseOracle extends DatabaseBase {
- var $mInsertId = null;
- var $mLastResult = null;
- var $lastResult = null;
- var $cursor = 0;
- var $mAffectedRows;
+ /** @var resource */
+ protected $mLastResult = null;
- var $ignore_DUP_VAL_ON_INDEX = false;
- var $sequenceData = null;
+ /** @var int The number of rows affected as an integer */
+ protected $mAffectedRows;
- var $defaultCharset = 'AL32UTF8';
+ /** @var int */
+ private $mInsertId = null;
- var $mFieldInfoCache = array();
+ /** @var bool */
+ private $ignoreDupValOnIndex = false;
+
+ /** @var bool|array */
+ private $sequenceData = null;
+
+ /** @var string Character set for Oracle database */
+ private $defaultCharset = 'AL32UTF8';
+
+ /** @var array */
+ private $mFieldInfoCache = array();
function __construct( $p = null ) {
global $wgDBprefix;
}
if ( !strlen( $user ) ) { # e.g. the class is being loaded
- return;
+ return null;
}
if ( $wgDBOracleDRCP ) {
if ( !oci_execute( $stmt, $this->execFlags() ) ) {
$e = oci_error( $stmt );
- if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+ if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
return false;
/**
* This must be called after nextSequenceVal
- * @return null
+ * @return null|int
*/
function insertId() {
return $this->mInsertId;
}
if ( in_array( 'IGNORE', $options ) ) {
- $this->ignore_DUP_VAL_ON_INDEX = true;
+ $this->ignoreDupValOnIndex = true;
}
if ( !is_array( reset( $a ) ) ) {
$retVal = true;
if ( in_array( 'IGNORE', $options ) ) {
- $this->ignore_DUP_VAL_ON_INDEX = false;
+ $this->ignoreDupValOnIndex = false;
}
return $retVal;
if ( oci_execute( $stmt, $this->execFlags() ) === false ) {
$e = oci_error( $stmt );
- if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+ if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
return false;
$sql .= " $tailOpts";
if ( in_array( 'IGNORE', $insertOptions ) ) {
- $this->ignore_DUP_VAL_ON_INDEX = true;
+ $this->ignoreDupValOnIndex = true;
}
$retval = $this->query( $sql, $fname );
if ( in_array( 'IGNORE', $insertOptions ) ) {
- $this->ignore_DUP_VAL_ON_INDEX = false;
+ $this->ignoreDupValOnIndex = false;
}
return $retval;
/**
* Return the next in a sequence, save the value for retrieval via insertId()
- * @return null
+ *
+ * @param string $seqName
+ * @return null|int
*/
function nextSequenceValue( $seqName ) {
$res = $this->query( "SELECT $seqName.nextval FROM dual" );
/**
* Return sequence_name if table has a sequence
+ *
+ * @param string $table
* @return bool
*/
private function getSequenceData( $table ) {
return false;
}
} else {
+ /** @var OCI_Lob[] $lob */
if ( ( $lob[$col] = oci_new_descriptor( $this->mConn, OCI_D_LOB ) ) === false ) {
$e = oci_error( $stmt );
throw new DBUnexpectedError( $this, "Cannot create LOB descriptor: " . $e['message'] );
if ( oci_execute( $stmt, $this->execFlags() ) === false ) {
$e = oci_error( $stmt );
- if ( !$this->ignore_DUP_VAL_ON_INDEX || $e['code'] != '1' ) {
+ if ( !$this->ignoreDupValOnIndex || $e['code'] != '1' ) {
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
return false;
* @ingroup Database
*/
class PostgresTransactionState {
-
- static $WATCHED = array(
+ private static $WATCHED = array(
array(
"desc" => "%s: Connection state changed from %s -> %s\n",
"states" => array(
)
);
+ /** @var array */
+ private $mNewState;
+
+ /** @var array */
+ private $mCurrentState;
+
public function __construct( $conn ) {
$this->mConn = $conn;
$this->update();
* @ingroup Database
*/
class DatabasePostgres extends DatabaseBase {
- var $mInsertId = null;
- var $mLastResult = null;
- var $numeric_version = null;
- var $mAffectedRows = null;
+ /** @var resource */
+ protected $mLastResult = null;
+
+ /** @var int The number of rows affected as an integer */
+ protected $mAffectedRows = null;
+
+ /** @var int */
+ private $mInsertId = null;
+
+ /** @var float|string */
+ private $numericVersion = null;
+
+ /** @var string Connect string to open a PostgreSQL connection */
+ private $connectString;
+
+ /** @var PostgresTransactionState */
+ private $mTransactionState;
+
+ /** @var string */
+ private $mCoreSchema;
function getType() {
return 'postgres';
* Return the result of the last call to nextSequenceValue();
* This must be called after nextSequenceValue().
*
- * @return integer|null
+ * @return int|null
*/
function insertId() {
return $this->mInsertId;
if ( !$res ) {
return null;
}
- foreach ( $res as $row ) {
- return true;
- }
- return false;
+ return $res->numRows() > 0;
}
/**
}
$table = $this->tableName( $table );
- if ( !isset( $this->numeric_version ) ) {
+ if ( !isset( $this->numericVersion ) ) {
$this->getServerVersion();
}
$sql = "INSERT INTO $table (" . implode( ',', $keys ) . ') VALUES ';
if ( $multi ) {
- if ( $this->numeric_version >= 8.2 && !$savepoint ) {
+ if ( $this->numericVersion >= 8.2 && !$savepoint ) {
$first = true;
foreach ( $args as $row ) {
if ( $first ) {
}
}
if ( $savepoint ) {
- $olde = error_reporting( $olde );
+ error_reporting( $olde );
$savepoint->commit();
// Set the affected row count for the whole operation
$savepoint->release();
$numrowsinserted++;
}
- $olde = error_reporting( $olde );
+ error_reporting( $olde );
$savepoint->commit();
// Set the affected row count for the whole operation
/**
* Return the next in a sequence, save the value for retrieval via insertId()
- * @return null
+ *
+ * @param string $seqName
+ * @return int|null
*/
function nextSequenceValue( $seqName ) {
$safeseq = str_replace( "'", "''", $seqName );
/**
* Return the current value of a sequence. Assumes it has been nextval'ed in this session.
+ *
+ * @param string $seqName
* @return
*/
function currentSequenceValue( $seqName ) {
* Needs transaction
*
* @since 1.19
- * @return string return default schema for the current session
+ * @return string Default schema for the current session
*/
function getCurrentSchema() {
$res = $this->query( "SELECT current_schema()", __METHOD__ );
* @return string Version information from the database
*/
function getServerVersion() {
- if ( !isset( $this->numeric_version ) ) {
+ if ( !isset( $this->numericVersion ) ) {
$versionInfo = pg_version( $this->mConn );
if ( version_compare( $versionInfo['client'], '7.4.0', 'lt' ) ) {
// Old client, abort install
- $this->numeric_version = '7.3 or earlier';
+ $this->numericVersion = '7.3 or earlier';
} elseif ( isset( $versionInfo['server'] ) ) {
// Normal client
- $this->numeric_version = $versionInfo['server'];
+ $this->numericVersion = $versionInfo['server'];
} else {
// Bug 16937: broken pgsql extension from PHP<5.3
- $this->numeric_version = pg_parameter_status( $this->mConn, 'server_version' );
+ $this->numericVersion = pg_parameter_status( $this->mConn, 'server_version' );
}
}
- return $this->numeric_version;
+ return $this->numericVersion;
}
/**
protected function replaceVars( $ins ) {
$ins = parent::replaceVars( $ins );
- if ( $this->numeric_version >= 8.3 ) {
+ if ( $this->numericVersion >= 8.3 ) {
// Thanks for not providing backwards-compatibility, 8.3
$ins = preg_replace( "/to_tsvector\s*\(\s*'default'\s*,/", 'to_tsvector(', $ins );
}
- if ( $this->numeric_version <= 8.1 ) { // Our minimum version
+ if ( $this->numericVersion <= 8.1 ) { // Our minimum version
$ins = str_replace( 'USING gin', 'USING gist', $ins );
}
* This allows us to distinguish a blob from a normal string and an array of strings
*/
class Blob {
+ /** @var string */
private $mData;
function __construct( $data ) {
* @ingroup Database
*/
class ResultWrapper implements Iterator {
- var $db, $result, $pos = 0, $currentRow = null;
+ /** @var resource */
+ public $result;
+
+ /** @var DatabaseBase */
+ protected $db;
+
+ /** @var int */
+ protected $pos = 0;
+
+ /** @var */
+ protected $currentRow = null;
/**
* Create a new result object from a result resource and a Database object
*
* @param DatabaseBase $database
- * @param resource $result
+ * @param resource|ResultWrapper $result
*/
function __construct( $database, $result ) {
$this->db = $database;
* doesn't go anywhere near an actual database.
*/
class FakeResultWrapper extends ResultWrapper {
- var $result = array();
- var $db = null; // And it's going to stay that way :D
- var $pos = 0;
- var $currentRow = null;
+ /** @var array */
+ public $result = array();
+
+ /** @var null And it's going to stay that way :D */
+ protected $db = null;
+
+ /** @var int */
+ protected $pos = 0;
+
+ /** @var array|stdClass|bool */
+ protected $currentRow = null;
function __construct( $array ) {
$this->result = $array;
* @ingroup Database
*/
abstract class LBFactory {
- /**
- * @var LBFactory
- */
- static $instance;
+ /** @var LBFactory */
+ protected static $instance;
/**
* Disables all access to the load balancer, will cause all database access
* @return LBFactory
*/
static function &singleton() {
+ global $wgLBFactoryConf;
+
if ( is_null( self::$instance ) ) {
- $LBFactoryConf = self::getLBFactoryClass();
+ $class = self::getLBFactoryClass( $wgLBFactoryConf );
- self::$instance = new $LBFactoryConf[0]( $LBFactoryConf[1] );
+ self::$instance = new $class( $wgLBFactoryConf );
}
return self::$instance;
/**
* Returns the LBFactory class to use and the load balancer configuration.
*
- * @return array ( factory class, $wgLBFactoryConf )
+ * @param array $config (e.g. $wgLBFactoryConf)
+ *
+ * @return string class name
*/
- static function getLBFactoryClass() {
- global $wgLBFactoryConf;
-
+ public static function getLBFactoryClass( array $config ) {
// For configuration backward compatibility after removing
// underscores from class names in MediaWiki 1.23.
$bcClasses = array(
'LBFactory_Fake' => 'LBFactoryFake',
);
- $class = $wgLBFactoryConf['class'];
+ $class = $config['class'];
- if ( in_array( $class, array_keys( $bcClasses ) ) ) {
+ if ( isset( $bcClasses[$class] ) ) {
$class = $bcClasses[$class];
wfDeprecated(
'$wgLBFactoryConf must be updated. See RELEASE-NOTES for details',
);
}
- return array( $class, $wgLBFactoryConf );
+ return $class;
}
/**
* A simple single-master LBFactory that gets its configuration from the b/c globals
*/
class LBFactorySimple extends LBFactory {
+ /** @var LoadBalancer */
+ protected $mainLB;
- /**
- * @var LoadBalancer
- */
- var $mainLB;
- var $extLBs = array();
+ /** @var LoadBalancer[] */
+ protected $extLBs = array();
- # Chronology protector
- var $chronProt;
+ /** @var ChronologyProtector */
+ protected $chronProt;
function __construct( $conf ) {
$this->chronProt = new ChronologyProtector;
* Ignores the old configuration globals
*
* Configuration:
- * sectionsByDB A map of database names to section names
+ * sectionsByDB A map of database names to section names.
*
* sectionLoads A 2-d map. For each section, gives a map of server names to
* load ratios. For example:
*
* hostsByName A map of hostname to IP address.
*
- * externalLoads A map of external storage cluster name to server load map
+ * externalLoads A map of external storage cluster name to server load map.
*
* externalTemplateOverrides A set of server info keys overriding serverTemplate for external
- * storage
+ * storage.
*
* templateOverridesByServer A 2-d map overriding serverTemplate and
* externalTemplateOverrides on a server-by-server basis. Applies
* to both core and external storage.
*
- * templateOverridesByCluster A 2-d map overriding the server info by external storage cluster
+ * templateOverridesByCluster A 2-d map overriding the server info by external storage cluster.
*
* masterTemplateOverrides An override array for all master servers.
*
*/
class LBFactoryMulti extends LBFactory {
// Required settings
- var $sectionsByDB, $sectionLoads, $serverTemplate;
+
+ /** @var array A map of database names to section names */
+ protected $sectionsByDB;
+
+ /**
+ * @var array A 2-d map. For each section, gives a map of server names to
+ * load ratios
+ */
+ protected $sectionLoads;
+
+ /**
+ * @var array A server info associative array as documented for
+ * $wgDBservers. The host, hostName and load entries will be
+ * overridden
+ */
+ protected $serverTemplate;
+
// Optional settings
- var $groupLoadsBySection = array(), $groupLoadsByDB = array(), $hostsByName = array();
- var $externalLoads = array(), $externalTemplateOverrides, $templateOverridesByServer;
- var $templateOverridesByCluster, $masterTemplateOverrides, $readOnlyBySection = array();
+
+ /** @var array A 3-d map giving server load ratios for each section and group */
+ protected $groupLoadsBySection = array();
+
+ /** @var array A 3-d map giving server load ratios by DB name */
+ protected $groupLoadsByDB = array();
+
+ /** @var array A map of hostname to IP address */
+ protected $hostsByName = array();
+
+ /** @var array A map of external storage cluster name to server load map */
+ protected $externalLoads = array();
+
+ /**
+ * @var array A set of server info keys overriding serverTemplate for
+ * external storage
+ */
+ protected $externalTemplateOverrides;
+
+ /**
+ * @var array A 2-d map overriding serverTemplate and
+ * externalTemplateOverrides on a server-by-server basis. Applies to both
+ * core and external storage
+ */
+ protected $templateOverridesByServer;
+
+ /** @var array A 2-d map overriding the server info by external storage cluster */
+ protected $templateOverridesByCluster;
+
+ /** @var array An override array for all master servers */
+ protected $masterTemplateOverrides;
+
+ /**
+ * @var array|bool A map of section name to read-only message. Missing or
+ * false for read/write
+ */
+ protected $readOnlyBySection = array();
+
// Other stuff
- var $conf, $mainLBs = array(), $extLBs = array();
- var $lastWiki, $lastSection;
+
+ /** @var array Load balancer factory configuration */
+ protected $conf;
+
+ /** @var LoadBalancer[] */
+ protected $mainLBs = array();
+
+ /** @var LoadBalancer[] */
+ protected $extLBs = array();
+
+ /** @var string */
+ protected $lastWiki;
+
+ /** @var string */
+ protected $lastSection;
/**
* @param $conf array
// Remove duplicate URLs from collection
$urlArr = array_unique( $urlArr );
+ // Get sequential trx IDs for packet loss counting
+ $ids = UIDGenerator::newSequentialPerNodeIDs(
+ 'squidhtcppurge', 32, count( $urlArr ), UIDGenerator::QUICK_VOLATILE
+ );
+
foreach ( $urlArr as $url ) {
if ( !is_string( $url ) ) {
wfProfileOut( __METHOD__ );
// Construct a minimal HTCP request diagram
// as per RFC 2756
// Opcode 'CLR', no response desired, no auth
- $htcpTransID = rand();
+ $htcpTransID = current( $ids );
+ next( $ids );
$htcpSpecifier = pack( 'na4na*na8n',
4, 'HEAD', strlen( $url ), $url,
* the rest of the file classes.
* @param string $type 'text' or 'id'
* @return int|string
+ * @throws MWException
*/
public function getUser( $type = 'text' ) {
$this->load();
} elseif ( $type == 'id' ) {
return $this->user;
}
+
+ throw new MWException( "Unknown type '$type'." );
+
}
/**
}
class WebInstaller_DBConnect extends WebInstallerPage {
-
+ /**
+ * @return string|void When string, "skip" or "continue"
+ */
public function execute() {
if ( $this->getVar( '_ExistingDBSettings' ) ) {
return 'skip';
// Instead, this uses job_random to pick a row (possibly checking both directions).
$ineq = $gte ? '>=' : '<=';
$dir = $gte ? 'ASC' : 'DESC';
- $row = $dbw->selectRow( 'job', '*', // find a random job
+ $row = $dbw->selectRow( 'job', self::selectFields(), // find a random job
array(
'job_cmd' => $this->type,
'job_token' => '', // unclaimed
// Bug 42614: "ORDER BY job_random" with a job_random inequality causes high CPU
// in MySQL if there are many rows for some reason. This uses a small OFFSET
// instead of job_random for reducing excess claim retries.
- $row = $dbw->selectRow( 'job', '*', // find a random job
+ $row = $dbw->selectRow( 'job', self::selectFields(), // find a random job
array(
'job_cmd' => $this->type,
'job_token' => '', // unclaimed
}
// Fetch any row that we just reserved...
if ( $dbw->affectedRows() ) {
- $row = $dbw->selectRow( 'job', '*',
+ $row = $dbw->selectRow( 'job', self::selectFields(),
array( 'job_cmd' => $this->type, 'job_token' => $uuid ), __METHOD__
);
if ( !$row ) { // raced out by duplicate job removal
$dbr = $this->getSlaveDB();
try {
return new MappedIterator(
- $dbr->select( 'job', '*',
+ $dbr->select( 'job', self::selectFields(),
array( 'job_cmd' => $this->getType(), 'job_token' => '' ) ),
function ( $row ) use ( $dbr ) {
$job = Job::factory(
protected function throwDBException( DBError $e ) {
throw new JobQueueError( get_class( $e ) . ": " . $e->getMessage() );
}
+
+ /**
+ * Return the list of job fields that should be selected.
+ * @since 1.23
+ * @return array
+ */
+ public static function selectFields() {
+ return array(
+ 'job_id',
+ 'job_cmd',
+ 'job_namespace',
+ 'job_title',
+ 'job_timestamp',
+ 'job_params',
+ 'job_random',
+ 'job_attempts',
+ 'job_token',
+ 'job_token_timestamp',
+ 'job_sha1',
+ );
+ }
}
$this->throwErrorIfAllPartitionsDown( $failed );
$this->cache->add( $key, $empty ? 'true' : 'false', self::CACHE_TTL_LONG );
- return !$empty;
+ return $empty;
}
protected function doGetSize() {
}
} else { // cache miss
// Avoid duplicated effort
+ $rand = wfRandomString( 32 );
$conn->multi( Redis::MULTI );
- $conn->setnx( $this->getReadyQueueKey() . ":lock", 1 );
- $conn->expire( $this->getReadyQueueKey() . ":lock", 3600 );
+ $conn->setex( "{$rand}:lock", 3600, 1 );
+ $conn->renamenx( "{$rand}:lock", $this->getReadyQueueKey() . ":lock" );
if ( $conn->exec() !== array( true, true ) ) { // lock
+ $conn->delete( "{$rand}:lock" );
return array(); // already in progress
}
}
$seenTitles[$titleText] = true;
- if ( $title->getInterwiki() ) {
+ if ( $title->isExternal() ) {
// If the target is interwiki, we have to break early (bug 40352).
// Otherwise it will look up a row in the local page table
// with the namespace/page of the interwiki target which can cause
'tif' => 'image/tiff',
'tiff' => 'image/tiff',
'xbm' => 'image/x-xbitmap',
+ 'svg' => 'image/svg+xml',
);
/* Static Methods */
--- /dev/null
+<?php
+/**
+ * MessagePack serializer
+ *
+ * MessagePack is a space-efficient binary data interchange format. This
+ * class provides a pack() method that encodes native PHP values as MessagePack
+ * binary strings. The implementation is derived from msgpack-php.
+ *
+ * Copyright (c) 2013 Ori Livneh <ori@wikimedia.org>
+ * Copyright (c) 2011 OnlineCity <https://github.com/onlinecity/msgpack-php>.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to
+ * deal in the Software without restriction, including without limitation the
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+ * sell copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
+ * IN THE SOFTWARE.
+ *
+ * @see <http://msgpack.org/>
+ * @see <http://wiki.msgpack.org/display/MSGPACK/Format+specification>
+ *
+ * @since 1.23
+ * @file
+ */
+class MWMessagePack {
+
+ /** @var boolean|null Whether current system is bigendian. **/
+ public static $bigendian = null;
+
+ /**
+ * Encode a value using MessagePack
+ *
+ * This method supports null, boolean, integer, float, string and array
+ * (both indexed and associative) types. Object serialization is not
+ * supported.
+ *
+ * @param mixed $value
+ * @return string
+ * @throws InvalidArgumentException if $value is an unsupported type or too long a string
+ */
+ public static function pack( $value ) {
+ if ( self::$bigendian === null ) {
+ self::$bigendian = pack( 'S', 1 ) === pack( 'n', 1 );
+ }
+
+ switch ( gettype( $value ) ) {
+ case 'NULL':
+ return "\xC0";
+
+ case 'boolean':
+ return $value ? "\xC3" : "\xC2";
+
+ case 'double':
+ case 'float':
+ return self::$bigendian
+ ? "\xCB" . pack( 'd', $value )
+ : "\xCB" . strrev( pack( 'd', $value ) );
+
+ case 'string':
+ $length = strlen( $value );
+ if ( $length < 32 ) {
+ return pack( 'Ca*', 0xA0 | $length, $value );
+ } elseif ( $length <= 0xFFFF ) {
+ return pack( 'Cna*', 0xDA, $length, $value );
+ } elseif ( $length <= 0xFFFFFFFF ) {
+ return pack( 'CNa*', 0xDB, $length, $value );
+ }
+ throw new InvalidArgumentException( __METHOD__ . ": string too long (length: $length; max: 4294967295)" );
+
+ case 'integer':
+ if ( $value >= 0 ) {
+ if ( $value <= 0x7F ) {
+ // positive fixnum
+ return chr( $value );
+ }
+ if ( $value <= 0xFF ) {
+ // uint8
+ return pack( 'CC', 0xCC, $value );
+ }
+ if ( $value <= 0xFFFF ) {
+ // uint16
+ return pack( 'Cn', 0xCD, $value );
+ }
+ if ( $value <= 0xFFFFFFFF ) {
+ // uint32
+ return pack( 'CN', 0xCE, $value );
+ }
+ if ( $value <= 0xFFFFFFFFFFFFFFFF ) {
+ // uint64
+ $hi = ( $value & 0xFFFFFFFF00000000 ) >> 32;
+ $lo = $value & 0xFFFFFFFF;
+ return self::$bigendian
+ ? pack( 'CNN', 0xCF, $lo, $hi )
+ : pack( 'CNN', 0xCF, $hi, $lo );
+ }
+ } else {
+ if ( $value >= -32 ) {
+ // negative fixnum
+ return pack( 'c', $value );
+ }
+ if ( $value >= -0x80 ) {
+ // int8
+ return pack( 'Cc', 0xD0, $value );
+ }
+ if ( $value >= -0x8000 ) {
+ // int16
+ $p = pack( 's', $value );
+ return self::$bigendian
+ ? pack( 'Ca2', 0xD1, $p )
+ : pack( 'Ca2', 0xD1, strrev( $p ) );
+ }
+ if ( $value >= -0x80000000 ) {
+ // int32
+ $p = pack( 'l', $value );
+ return self::$bigendian
+ ? pack( 'Ca4', 0xD2, $p )
+ : pack( 'Ca4', 0xD2, strrev( $p ) );
+ }
+ if ( $value >= -0x8000000000000000 ) {
+ // int64
+ // pack() does not support 64-bit ints either so pack into two 32-bits
+ $p1 = pack( 'l', $value & 0xFFFFFFFF );
+ $p2 = pack( 'l', ( $value >> 32 ) & 0xFFFFFFFF );
+ return self::$bigendian
+ ? pack( 'Ca4a4', 0xD3, $p1, $p2 )
+ : pack( 'Ca4a4', 0xD3, strrev( $p2 ), strrev( $p1 ) );
+ }
+ }
+ throw new InvalidArgumentException( __METHOD__ . ": invalid integer '$value'" );
+
+ case 'array':
+ $buffer = '';
+ $length = count( $value );
+ if ( $length > 0xFFFFFFFF ) {
+ throw new InvalidArgumentException( __METHOD__ . ": array too long (length: $length, max: 4294967295)" );
+ }
+
+ $index = 0;
+ foreach ( $value as $k => $v ) {
+ if ( $index !== $k || $index === $length ) {
+ break;
+ } else {
+ $index++;
+ }
+ }
+ $associative = $index !== $length;
+
+ if ( $associative ) {
+ if ( $length < 16 ) {
+ $buffer .= pack( 'C', 0x80 | $length );
+ } elseif ( $length <= 0xFFFF ) {
+ $buffer .= pack( 'Cn', 0xDE, $length );
+ } else {
+ $buffer .= pack( 'CN', 0xDF, $length );
+ }
+ foreach ( $value as $k => $v ) {
+ $buffer .= self::pack( $k );
+ $buffer .= self::pack( $v );
+ }
+ } else {
+ if ( $length < 16 ) {
+ $buffer .= pack( 'C', 0x90 | $length );
+ } elseif ( $length <= 0xFFFF ) {
+ $buffer .= pack( 'Cn', 0xDC, $length );
+ } else {
+ $buffer .= pack( 'CN', 0xDD, $length );
+ }
+ foreach ( $value as $v ) {
+ $buffer .= self::pack( $v );
+ }
+ }
+ return $buffer;
+
+ default:
+ throw new InvalidArgumentException( __METHOD__ . ': unsupported type ' . gettype( $value ) );
+ }
+ }
+}
--- /dev/null
+<?php
+/**
+ * Compute running mean, variance, and extrema of a stream of numbers.
+ *
+ * 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
+ * @ingroup Profiler
+ */
+
+// Needed due to PHP non-bug <https://bugs.php.net/bug.php?id=49828>.
+define( 'NEGATIVE_INF', -INF );
+
+/**
+ * Represents a running summary of a stream of numbers.
+ *
+ * RunningStat instances are accumulator-like objects that provide a set of
+ * continuously-updated summary statistics for a stream of numbers, without
+ * requiring that each value be stored. The measures it provides are the
+ * arithmetic mean, variance, standard deviation, and extrema (min and max);
+ * together they describe the central tendency and statistical dispersion of a
+ * set of values.
+ *
+ * One RunningStat instance can be merged into another; the resultant
+ * RunningStat has the state it would have had if it had accumulated each
+ * individual point. This allows data to be summarized in parallel and in
+ * stages without loss of fidelity.
+ *
+ * Based on a C++ implementation by John D. Cook:
+ * <http://www.johndcook.com/standard_deviation.html>
+ * <http://www.johndcook.com/skewness_kurtosis.html>
+ *
+ * The in-line documentation for this class incorporates content from the
+ * English Wikipedia articles "Variance", "Algorithms for calculating
+ * variance", and "Standard deviation".
+ *
+ * @since 1.23
+ */
+class RunningStat implements Countable {
+
+ /** @var int Number of samples. **/
+ public $n = 0;
+
+ /** @var float The first moment (or mean, or expected value). **/
+ public $m1 = 0.0;
+
+ /** @var float The second central moment (or variance). **/
+ public $m2 = 0.0;
+
+ /** @var float The least value in the the set. **/
+ public $min = INF;
+
+ /** @var float The most value in the set. **/
+ public $max = NEGATIVE_INF;
+
+ /**
+ * Count the number of accumulated values.
+ * @return int Number of values
+ */
+ public function count() {
+ return $this->n;
+ }
+
+ /**
+ * Add a number to the data set.
+ * @param int|float $x Value to add
+ */
+ public function push( $x ) {
+ $x = (float) $x;
+
+ $this->min = min( $this->min, $x );
+ $this->max = max( $this->max, $x );
+
+ $n1 = $this->n;
+ $this->n += 1;
+ $delta = $x - $this->m1;
+ $delta_n = $delta / $this->n;
+ $this->m1 += $delta_n;
+ $this->m2 += $delta * $delta_n * $n1;
+ }
+
+ /**
+ * Get the mean, or expected value.
+ *
+ * The arithmetic mean is the sum of all measurements divided by the number
+ * of observations in the data set.
+ *
+ * @return float Mean
+ */
+ public function getMean() {
+ return $this->m1;
+ }
+
+ /**
+ * Get the estimated variance.
+ *
+ * Variance measures how far a set of numbers is spread out. A small
+ * variance indicates that the data points tend to be very close to the
+ * mean (and hence to each other), while a high variance indicates that the
+ * data points are very spread out from the mean and from each other.
+ *
+ * @return float Estimated variance
+ */
+ public function getVariance() {
+ if ( $this->n === 0 ) {
+ // The variance of the empty set is undefined.
+ return NAN;
+ } elseif ( $this->n === 1 ) {
+ return 0.0;
+ } else {
+ return $this->m2 / ( $this->n - 1.0 );
+ }
+ }
+
+ /**
+ * Get the estimated stanard deviation.
+ *
+ * The standard deviation of a statistical population is the square root of
+ * its variance. It shows shows how much variation from the mean exists. In
+ * addition to expressing the variability of a population, the standard
+ * deviation is commonly used to measure confidence in statistical conclusions.
+ *
+ * @return float Estimated standard deviation
+ */
+ public function getStdDev() {
+ return sqrt( $this->getVariance() );
+ }
+
+ /**
+ * Merge another RunningStat instance into this instance.
+ *
+ * This instance then has the state it would have had if all the data had
+ * been accumulated by it alone.
+ *
+ * @param RunningStat RunningStat instance to merge into this one
+ */
+ public function merge( RunningStat $other ) {
+ // If the other RunningStat is empty, there's nothing to do.
+ if ( $other->n === 0 ) {
+ return;
+ }
+
+ // If this RunningStat is empty, copy values from other RunningStat.
+ if ( $this->n === 0 ) {
+ $this->n = $other->n;
+ $this->m1 = $other->m1;
+ $this->m2 = $other->m2;
+ $this->min = $other->min;
+ $this->max = $other->max;
+ return;
+ }
+
+ $n = $this->n + $other->n;
+ $delta = $other->m1 - $this->m1;
+ $delta2 = $delta * $delta;
+
+ $this->m1 = ( ( $this->n * $this->m1 ) + ( $other->n * $other->m1 ) ) / $n;
+ $this->m2 = $this->m2 + $other->m2 + ( $delta2 * $this->n * $other->n / $n );
+ $this->min = min( $this->min, $other->min );
+ $this->max = max( $this->max, $other->max );
+ $this->n = $n;
+ }
+}
--- /dev/null
+<?php
+/**
+ * This file deals with RAII style scoped callbacks.
+ *
+ * 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
+ */
+
+/**
+ * Class for asserting that a callback happens when an dummy object leaves scope
+ *
+ * @since 1.21
+ */
+class ScopedCallback {
+ /** @var callable */
+ protected $callback;
+
+ /**
+ * @param callable $callback
+ * @throws Exception
+ */
+ public function __construct( $callback ) {
+ if ( !is_callable( $callback ) ) {
+ throw new InvalidArgumentException( "Provided callback is not valid." );
+ }
+ $this->callback = $callback;
+ }
+
+ /**
+ * Trigger a scoped callback and destroy it.
+ * This is the same is just setting it to null.
+ *
+ * @param ScopedCallback $sc
+ */
+ public static function consume( ScopedCallback &$sc = null ) {
+ $sc = null;
+ }
+
+ /**
+ * Destroy a scoped callback without triggering it
+ *
+ * @param ScopedCallback $sc
+ */
+ public static function cancel( ScopedCallback &$sc = null ) {
+ if ( $sc ) {
+ $sc->callback = null;
+ }
+ $sc = null;
+ }
+
+ /**
+ * Trigger the callback when this leaves scope
+ */
+ function __destruct() {
+ if ( $this->callback !== null ) {
+ call_user_func( $this->callback );
+ }
+ }
+}
$count = count( explode( ',', $params[$paramStart] ) );
$newParams[4] = $this->context->getLanguage()->formatNum( $count );
- return $this->parsedParametersDeleteLog = $newParams;
+ $this->parsedParametersDeleteLog = $newParams;
+ return $this->parsedParametersDeleteLog;
} else {
- return $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
+ $this->parsedParametersDeleteLog = array_slice( $params, 0, 3 );
+ return $this->parsedParametersDeleteLog;
}
}
- return $this->parsedParametersDeleteLog = $params;
+ $this->parsedParametersDeleteLog = $params;
+ return $this->parsedParametersDeleteLog;
}
protected function parseBitField( $string ) {
/**
* Constructs new LogEntry from database result row.
* Supports rows from both logging and recentchanges table.
- * @param $row
+ * @param stdClass|array $row
* @return DatabaseLogEntry
*/
public static function newFromRow( $row ) {
- if ( is_array( $row ) && isset( $row['rc_logid'] ) ) {
- return new RCDatabaseLogEntry( (object)$row );
+ $row = (object)$row;
+ if ( isset( $row->rc_logid ) ) {
+ return new RCDatabaseLogEntry( $row );
} else {
return new self( $row );
}
// Bad things happens if the numbers are not in correct order
ksort( $params );
- return $this->parsedParameters = $params;
+ $this->parsedParameters = $params;
+ return $this->parsedParameters;
}
/**
}
if ( $this->entry->isDeleted( LogPage::DELETED_ACTION ) ) {
- return $this->revert = '';
+ $this->revert = '';
+ return $this->revert;
}
$title = $this->entry->getTarget();
* Set the log reader to return only entries by the given user.
*
* @param string $name (In)valid user name
- * @return bool
+ * @return void
*/
private function limitPerformer( $name ) {
if ( $name == '' ) {
- return false;
+ return;
}
$usertitle = Title::makeTitleSafe( NS_USER, $name );
if ( is_null( $usertitle ) ) {
- return false;
+ return;
}
/* Fetch userid at first, if known, provides awesome query plan afterwards */
$userid = User::idFromName( $name );
$this->mConds[] = $this->mDb->bitAnd( 'log_deleted', LogPage::SUPPRESSED_USER ) .
' != ' . LogPage::SUPPRESSED_USER;
}
+
$this->performer = $usertitle->getText();
}
*
* @param string|Title $page Title name
* @param string $pattern
- * @return bool
+ * @return void
*/
private function limitTitle( $page, $pattern ) {
global $wgMiserMode;
} else {
$title = Title::newFromText( $page );
if ( strlen( $page ) == 0 || !$title instanceof Title ) {
- return false;
+ return;
}
}
*/
private $mFilteredExifData;
- /** @var array Filtered and formatted Exif data, see FormatMetadata::getFormattedData() */
- private $mFormattedExifData;
-
/** @var string The file being processed */
private $file;
}
}
- /**
- * Use FormatMetadata to create formatted values for display to user
- * (is this ever used?)
- *
- * @deprecated since 1.18
- */
- function makeFormattedData() {
- wfDeprecated( __METHOD__, '1.18' );
- $this->mFormattedExifData = FormatMetadata::getFormattedData(
- $this->mFilteredExifData );
- }
-
/**#@-*/
/**#@+
return $this->mFilteredExifData;
}
- /**
- * Get $this->mFormattedExifData
- *
- * This returns the data for display to user.
- * Its unclear if this is ever used.
- *
- * @deprecated since 1.18
- */
- function getFormattedData() {
- wfDeprecated( __METHOD__, '1.18' );
- if ( !$this->mFormattedExifData ) {
- $this->makeFormattedData();
- }
-
- return $this->mFormattedExifData;
- }
-
/**#@-*/
/**
* @access private
*/
function _connect_sock( &$sock, $host ) {
- list( $ip, $port ) = explode( ':', $host );
+ list( $ip, $port ) = preg_split('/:(?=\d)/' , $host );
$sock = false;
$timeout = $this->_connect_timeout;
$errno = $errstr = null;
/**
* @return string TS_MW timestamp
*/
- function getCacheTime() { return wfTimestamp( TS_MW, $this->mCacheTime ); }
+ function getCacheTime() {
+ return wfTimestamp( TS_MW, $this->mCacheTime );
+ }
- function containsOldMagic() { return $this->mContainsOldMagic; }
- function setContainsOldMagic( $com ) { return wfSetVar( $this->mContainsOldMagic, $com ); }
+ /**
+ * @return bool
+ */
+ function containsOldMagic() {
+ return $this->mContainsOldMagic;
+ }
+
+ /**
+ * @param $com bool
+ * @return bool
+ */
+ function setContainsOldMagic( $com ) {
+ return wfSetVar( $this->mContainsOldMagic, $com );
+ }
/**
* setCacheTime() sets the timestamp expressing when the page has been rendered.
* @param $t string
* @return string
*/
- function setCacheTime( $t ) { return wfSetVar( $this->mCacheTime, $t ); }
+ function setCacheTime( $t ) {
+ return wfSetVar( $this->mCacheTime, $t );
+ }
/**
* Sets the number of seconds after which this object should expire.
# function callback,
# optional SFH_NO_HASH to omit the hash from calls (e.g. {{int:...}}
# instead of {{#int:...}})
+ $noHashFunctions = array(
+ 'ns', 'nse', 'urlencode', 'lcfirst', 'ucfirst', 'lc', 'uc',
+ 'localurl', 'localurle', 'fullurl', 'fullurle', 'canonicalurl',
+ 'canonicalurle', 'formatnum', 'grammar', 'gender', 'plural',
+ 'numberofpages', 'numberofusers', 'numberofactiveusers',
+ 'numberofarticles', 'numberoffiles', 'numberofadmins',
+ 'numberingroup', 'numberofedits', 'numberofviews', 'language',
+ 'padleft', 'padright', 'anchorencode', 'defaultsort', 'filepath',
+ 'pagesincategory', 'pagesize', 'protectionlevel',
+ 'namespacee', 'namespacenumber', 'talkspace', 'talkspacee',
+ 'subjectspace', 'subjectspacee', 'pagename', 'pagenamee',
+ 'fullpagename', 'fullpagenamee', 'rootpagename', 'rootpagenamee',
+ 'basepagename', 'basepagenamee', 'subpagename', 'subpagenamee',
+ 'talkpagename', 'talkpagenamee', 'subjectpagename',
+ 'subjectpagenamee', 'pageid', 'revisionid', 'revisionday',
+ 'revisionday2', 'revisionmonth', 'revisionmonth1', 'revisionyear',
+ 'revisiontimestamp', 'revisionuser',
+ );
+ foreach ( $noHashFunctions as $func ) {
+ $parser->setFunctionHook( $func, array( __CLASS__, $func ), SFH_NO_HASH );
+ }
- $parser->setFunctionHook( 'int', array( __CLASS__, 'intFunction' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'ns', array( __CLASS__, 'ns' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'nse', array( __CLASS__, 'nse' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'urlencode', array( __CLASS__, 'urlencode' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'lcfirst', array( __CLASS__, 'lcfirst' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'ucfirst', array( __CLASS__, 'ucfirst' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'lc', array( __CLASS__, 'lc' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'uc', array( __CLASS__, 'uc' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'localurl', array( __CLASS__, 'localurl' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'localurle', array( __CLASS__, 'localurle' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'fullurl', array( __CLASS__, 'fullurl' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'fullurle', array( __CLASS__, 'fullurle' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'canonicalurl', array( __CLASS__, 'canonicalurl' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'canonicalurle', array( __CLASS__, 'canonicalurle' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'formatnum', array( __CLASS__, 'formatnum' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'grammar', array( __CLASS__, 'grammar' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'gender', array( __CLASS__, 'gender' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'plural', array( __CLASS__, 'plural' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofpages', array( __CLASS__, 'numberofpages' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofusers', array( __CLASS__, 'numberofusers' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofactiveusers', array( __CLASS__, 'numberofactiveusers' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofarticles', array( __CLASS__, 'numberofarticles' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberoffiles', array( __CLASS__, 'numberoffiles' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofadmins', array( __CLASS__, 'numberofadmins' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberingroup', array( __CLASS__, 'numberingroup' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofedits', array( __CLASS__, 'numberofedits' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'numberofviews', array( __CLASS__, 'numberofviews' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'language', array( __CLASS__, 'language' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'padleft', array( __CLASS__, 'padleft' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'padright', array( __CLASS__, 'padright' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'anchorencode', array( __CLASS__, 'anchorencode' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'special', array( __CLASS__, 'special' ) );
- $parser->setFunctionHook( 'speciale', array( __CLASS__, 'speciale' ) );
- $parser->setFunctionHook( 'defaultsort', array( __CLASS__, 'defaultsort' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'filepath', array( __CLASS__, 'filepath' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'pagesincategory', array( __CLASS__, 'pagesincategory' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'pagesize', array( __CLASS__, 'pagesize' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'protectionlevel', array( __CLASS__, 'protectionlevel' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'namespace', array( __CLASS__, 'mwnamespace' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'namespacee', array( __CLASS__, 'namespacee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'namespacenumber', array( __CLASS__, 'namespacenumber' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'talkspace', array( __CLASS__, 'talkspace' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'talkspacee', array( __CLASS__, 'talkspacee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subjectspace', array( __CLASS__, 'subjectspace' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subjectspacee', array( __CLASS__, 'subjectspacee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'pagename', array( __CLASS__, 'pagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'pagenamee', array( __CLASS__, 'pagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'fullpagename', array( __CLASS__, 'fullpagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'fullpagenamee', array( __CLASS__, 'fullpagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'rootpagename', array( __CLASS__, 'rootpagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'rootpagenamee', array( __CLASS__, 'rootpagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'basepagename', array( __CLASS__, 'basepagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'basepagenamee', array( __CLASS__, 'basepagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subpagename', array( __CLASS__, 'subpagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subpagenamee', array( __CLASS__, 'subpagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'talkpagename', array( __CLASS__, 'talkpagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'talkpagenamee', array( __CLASS__, 'talkpagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subjectpagename', array( __CLASS__, 'subjectpagename' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'subjectpagenamee', array( __CLASS__, 'subjectpagenamee' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'tag', array( __CLASS__, 'tagObj' ), SFH_OBJECT_ARGS );
- $parser->setFunctionHook( 'formatdate', array( __CLASS__, 'formatDate' ) );
- $parser->setFunctionHook( 'pageid', array( __CLASS__, 'pageid' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionid', array( __CLASS__, 'revisionid' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionday', array( __CLASS__, 'revisionday' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionday2', array( __CLASS__, 'revisionday2' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionmonth', array( __CLASS__, 'revisionmonth' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionmonth1', array( __CLASS__, 'revisionmonth1' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionyear', array( __CLASS__, 'revisionyear' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisiontimestamp', array( __CLASS__, 'revisiontimestamp' ), SFH_NO_HASH );
- $parser->setFunctionHook( 'revisionuser', array( __CLASS__, 'revisionuser' ), SFH_NO_HASH );
+ $parser->setFunctionHook( 'namespace', array( __CLASS__, 'mwnamespace' ), SFH_NO_HASH );
+ $parser->setFunctionHook( 'int', array( __CLASS__, 'intFunction' ), SFH_NO_HASH );
+ $parser->setFunctionHook( 'special', array( __CLASS__, 'special' ) );
+ $parser->setFunctionHook( 'speciale', array( __CLASS__, 'speciale' ) );
+ $parser->setFunctionHook( 'tag', array( __CLASS__, 'tagObj' ), SFH_OBJECT_ARGS );
+ $parser->setFunctionHook( 'formatdate', array( __CLASS__, 'formatDate' ) );
if ( $wgAllowDisplayTitle ) {
$parser->setFunctionHook( 'displaytitle', array( __CLASS__, 'displaytitle' ), SFH_NO_HASH );
return $parser->markerSkipCallback( $s, array( $wgContLang, 'uc' ) );
}
- static function localurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getLocalURL', $s, $arg ); }
- static function localurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeLocalURL', $s, $arg ); }
- static function fullurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getFullURL', $s, $arg ); }
- static function fullurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeFullURL', $s, $arg ); }
- static function canonicalurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getCanonicalURL', $s, $arg ); }
- static function canonicalurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeCanonicalURL', $s, $arg ); }
+ static function localurl( $parser, $s = '', $arg = null ) {
+ return self::urlFunction( 'getLocalURL', $s, $arg );
+ }
+
+ static function localurle( $parser, $s = '', $arg = null ) {
+ return htmlspecialchars( self::urlFunction( 'getLocalURL', $s, $arg ) );
+ }
+
+ static function fullurl( $parser, $s = '', $arg = null ) {
+ return self::urlFunction( 'getFullURL', $s, $arg );
+ }
+
+ static function fullurle( $parser, $s = '', $arg = null ) {
+ return htmlspecialchars( self::urlFunction( 'getFullURL', $s, $arg ) );
+ }
+
+ static function canonicalurl( $parser, $s = '', $arg = null ) {
+ return self::urlFunction( 'getCanonicalURL', $s, $arg );
+ }
+
+ static function canonicalurle( $parser, $s = '', $arg = null ) {
+ return self::urlFunction( 'escapeCanonicalURL', $s, $arg );
+ }
static function urlFunction( $func, $s = '', $arg = null ) {
$title = Title::newFromText( $s );
/**
* Strip the whitespace Category links produce, see bug 87
- * @todo We might want to use trim($tmp, "\n") here.
*/
$s .= trim( $prefix . $trail, "\n" ) == '' ? '' : $prefix . $trail;
$value = ( wfUrlencode( $this->mTitle->getSubjectNsText() ) );
break;
case 'currentdayname':
- $value = $pageLang->getWeekdayName( MWTimestamp::getInstance( $ts )->format( 'w' ) + 1 );
+ $value = $pageLang->getWeekdayName( (int)MWTimestamp::getInstance( $ts )->format( 'w' ) + 1 );
break;
case 'currentyear':
$value = $pageLang->formatNum( MWTimestamp::getInstance( $ts )->format( 'Y' ), true );
$value = $pageLang->formatNum( MWTimestamp::getInstance( $ts )->format( 'w' ) );
break;
case 'localdayname':
- $value = $pageLang->getWeekdayName( MWTimestamp::getLocalInstance( $ts )->format( 'w' ) + 1 );
+ $value = $pageLang->getWeekdayName( (int)MWTimestamp::getLocalInstance( $ts )->format( 'w' ) + 1 );
break;
case 'localyear':
$value = $pageLang->formatNum( MWTimestamp::getLocalInstance( $ts )->format( 'Y' ), true );
return $wgLanguageCode;
default:
$ret = null;
- if ( wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret, &$frame ) ) ) {
- return $ret;
- } else {
- return null;
- }
+ wfRunHooks( 'ParserGetVariableValueSwitch', array( &$this, &$this->mVarCache, &$index, &$ret, &$frame ) );
+ return $ret;
}
if ( $index ) {
* cache may be implemented at a later date which takes further advantage of these strict
* dependency requirements.
*
- * @private
- *
* @return PPNode
*/
function preprocessToDom( $text, $flags = 0 ) {
*/
class ParserCache {
private $mMemc;
- const try116cache = false; /* Only useful $wgParserCacheExpireTime after updating to 1.17 */
-
/**
* Get an instance of this object
*
$usedOptions = $optionsKey->mUsedOptions;
wfDebug( "Parser cache options found.\n" );
} else {
- if ( !$useOutdated && !self::try116cache ) {
+ if ( !$useOutdated ) {
return false;
}
$usedOptions = ParserOptions::legacyOptions();
}
$value = $this->mMemc->get( $parserOutputKey );
- if ( self::try116cache && !$value && strpos( $value, '*' ) !== -1 ) {
- wfDebug( "New format parser cache miss.\n" );
- $parserOutputKey = $this->getParserOutputKey( $article,
- $popts->optionsHash( ParserOptions::legacyOptions(), $article->getTitle() ) );
- $value = $this->mMemc->get( $parserOutputKey );
- }
if ( !$value ) {
wfDebug( "ParserOutput cache miss.\n" );
wfIncrStats( "pcache_miss_absent" );
/**
* @param ParserOutput $parserOutput
- * @param Article $article
+ * @param WikiPage $page
* @param ParserOptions $popts
* @param string $cacheTime Time when the cache was generated
*/
- public function save( $parserOutput, $article, $popts, $cacheTime = null ) {
+ public function save( $parserOutput, $page, $popts, $cacheTime = null ) {
$expire = $parserOutput->getCacheExpiry();
if ( $expire > 0 ) {
$cacheTime = $cacheTime ?: wfTimestampNow();
$optionsKey->setContainsOldMagic( $parserOutput->containsOldMagic() );
- $parserOutputKey = $this->getParserOutputKey( $article,
- $popts->optionsHash( $optionsKey->mUsedOptions, $article->getTitle() ) );
+ $parserOutputKey = $this->getParserOutputKey( $page,
+ $popts->optionsHash( $optionsKey->mUsedOptions, $page->getTitle() ) );
// Save the timestamp so that we don't have to load the revision row on view
- $parserOutput->setTimestamp( $article->getTimestamp() );
+ $parserOutput->setTimestamp( $page->getTimestamp() );
$parserOutput->mText .= "\n<!-- Saved in parser cache with key $parserOutputKey and timestamp $cacheTime\n -->\n";
wfDebug( "Saved in parser cache with key $parserOutputKey and timestamp $cacheTime\n" );
$this->mMemc->set( $parserOutputKey, $parserOutput, $expire );
// ...and its pointer
- $this->mMemc->set( $this->getOptionsKey( $article ), $optionsKey, $expire );
+ $this->mMemc->set( $this->getOptionsKey( $page ), $optionsKey, $expire );
} else {
wfDebug( "Parser output was marked as uncacheable and has not been saved.\n" );
}
* @throws MWException if given invalid input
*/
function addInterwikiLink( $title ) {
- $prefix = $title->getInterwiki();
- if ( $prefix == '' ) {
+ if ( !$title->isExternal() ) {
throw new MWException( 'Non-interwiki link passed, internal parser error.' );
}
+ $prefix = $title->getInterwiki();
if ( !isset( $this->mInterwikiLinks[$prefix] ) ) {
$this->mInterwikiLinks[$prefix] = array();
}
class ProfilerSimple extends Profiler {
var $mMinimumTime = 0;
- var $zeroEntry = array( 'cpu' => 0.0, 'cpu_sq' => 0.0, 'real' => 0.0, 'real_sq' => 0.0, 'count' => 0 );
var $errorEntry;
+ public function getZeroEntry() {
+ return array(
+ 'cpu' => 0.0,
+ 'cpu_sq' => 0.0,
+ 'real' => 0.0,
+ 'real_sq' => 0.0,
+ 'count' => 0
+ );
+ }
+
+ public function getErrorEntry() {
+ $entry = $this->getZeroEntry();
+ $entry['count'] = 1;
+ return $entry;
+ }
+
+ public function updateEntry( $name, $elapsedCpu, $elapsedReal ) {
+ $entry =& $this->mCollated[$name];
+ if ( !is_array( $entry ) ) {
+ $entry = $this->getZeroEntry();
+ $this->mCollated[$name] =& $entry;
+ }
+ $entry['cpu'] += $elapsedCpu;
+ $entry['cpu_sq'] += $elapsedCpu * $elapsedCpu;
+ $entry['real'] += $elapsedReal;
+ $entry['real_sq'] += $elapsedReal * $elapsedReal;
+ $entry['count']++;
+ }
+
public function isPersistent() {
/* Implement in output subclasses */
return false;
}
protected function addInitialStack() {
- $this->errorEntry = $this->zeroEntry;
- $this->errorEntry['count'] = 1;
+ $this->errorEntry = $this->getErrorEntry();
$initialTime = $this->getInitialTime();
$initialCpu = $this->getInitialTime( 'cpu' );
$this->debug( "$message\n" );
$this->mCollated[$message] = $this->errorEntry;
}
- $entry =& $this->mCollated[$functionname];
$elapsedcpu = $this->getTime( 'cpu' ) - $octime;
$elapsedreal = $this->getTime() - $ortime;
- if ( !is_array( $entry ) ) {
- $entry = $this->zeroEntry;
- $this->mCollated[$functionname] =& $entry;
- }
- $entry['cpu'] += $elapsedcpu;
- $entry['cpu_sq'] += $elapsedcpu * $elapsedcpu;
- $entry['real'] += $elapsedreal;
- $entry['real_sq'] += $elapsedreal * $elapsedreal;
- $entry['count']++;
-
+ $this->updateEntry( $functionname, $elapsedcpu, $elapsedreal );
$this->updateTrxProfiling( $functionname, $elapsedreal );
}
}
public function logData() {
/* Implement in subclasses */
}
-
- /**
- * Get the actual CPU time or the initial one if $ru is set.
- *
- * @deprecated in 1.20
- * @return float|null
- */
- function getCpuTime( $ru = null ) {
- wfDeprecated( __METHOD__, '1.20' );
-
- if ( $ru === null ) {
- return $this->getTime( 'cpu' );
- } else {
- # It theory we should use $ru here, but it always $wgRUstart that is passed here
- return $this->getInitialTime( 'cpu' );
- }
- }
}
public static function inDebugMode() {
global $wgRequest, $wgResourceLoaderDebug;
static $retval = null;
- if ( !is_null( $retval ) ) {
- return $retval;
+ if ( is_null( $retval ) ) {
+ $retval = $wgRequest->getFuzzyBool( 'debug',
+ $wgRequest->getCookie( 'resourceLoaderDebug', '', $wgResourceLoaderDebug ) );
}
- return $retval = $wgRequest->getFuzzyBool( 'debug',
- $wgRequest->getCookie( 'resourceLoaderDebug', '', $wgResourceLoaderDebug ) );
+ return $retval;
}
/**
// If a module is nothing but a list of dependencies, we need to avoid
// giving max() an empty array
if ( count( $files ) === 0 ) {
+ $this->modifiedTime[$context->getHash()] = 1;
wfProfileOut( __METHOD__ );
- return $this->modifiedTime[$context->getHash()] = 1;
+ return $this->modifiedTime[$context->getHash()];
}
wfProfileIn( __METHOD__ . '-filemtime' );
$module = $loader->getModule( $name );
$time = max( $time, $module->getModifiedTime( $context ) );
}
- return $this->modifiedTime[$hash] = $time;
+ $this->modifiedTime[$hash] = $time;
+ return $this->modifiedTime[$hash];
}
/* Methods */
*/
public function getModifiedTime( ResourceLoaderContext $context ) {
$hash = $context->getHash();
- if ( isset( $this->modifiedTime[$hash] ) ) {
- return $this->modifiedTime[$hash];
+ if ( !isset( $this->modifiedTime[$hash] ) ) {
+ global $wgUser;
+ $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
}
- global $wgUser;
- return $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
+ return $this->modifiedTime[$hash];
}
/**
*/
public function getModifiedTime( ResourceLoaderContext $context ) {
$hash = $context->getHash();
- if ( isset( $this->modifiedTime[$hash] ) ) {
- return $this->modifiedTime[$hash];
+ if ( !isset( $this->modifiedTime[$hash] ) ) {
+ global $wgUser;
+ $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
}
- global $wgUser;
- return $this->modifiedTime[$hash] = wfTimestamp( TS_UNIX, $wgUser->getTouched() );
+ return $this->modifiedTime[$hash];
}
/**
*/
public static function getSearchTypes() {
global $wgSearchType, $wgSearchTypeAlternatives;
- static $alternatives = null;
- if ( $alternatives === null ) {
- $alternatives = $wgSearchTypeAlternatives ?: array();
- array_unshift( $alternatives, $wgSearchType );
- }
+
+ $alternatives = $wgSearchTypeAlternatives ?: array();
+ array_unshift( $alternatives, $wgSearchType );
+
return $alternatives;
}
*/
static function getGroup( &$page ) {
wfDeprecated( __METHOD__, '1.18' );
- return SpecialPageFactory::getGroup( $page );
+ return $page->getFinalGroupName();
}
/**
/**
* Get a localised Title object for a specified special page name
*
- * @param $name String
- * @param string|Bool $subpage subpage string, or false to not use a subpage
- * @param string $fragment the link fragment (after the "#")
+ * @param string $name
+ * @param string|bool $subpage Subpage string, or false to not use a subpage
+ * @param string $fragment The link fragment (after the "#")
+ * @return Title
* @throws MWException
- * @return Title object
*/
public static function getTitleFor( $name, $subpage = false, $fragment = '' ) {
$name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
/**
* Get a localised Title object for a page name with a possibly unvalidated subpage
*
- * @param $name String
- * @param string|Bool $subpage subpage string, or false to not use a subpage
- * @return Title object or null if the page doesn't exist
+ * @param string $name
+ * @param string|bool $subpage Subpage string, or false to not use a subpage
+ * @return Title|null Title object or null if the page doesn't exist
*/
public static function getSafeTitleFor( $name, $subpage = false ) {
$name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
* @param string $name Name of the special page, as seen in links and URLs
* @param string $restriction User right required, e.g. "block" or "delete"
* @param bool $listed Whether the page is listed in Special:Specialpages
- * @param Callback|Bool $function Function called by execute(). By default
- * it is constructed from $name
+ * @param callable|bool $function Function called by execute(). By default
+ * it is constructed from $name
* @param string $file File which is included by execute(). It is also
- * constructed from $name by default
+ * constructed from $name by default
* @param bool $includable Whether the page can be included in normal pages
*/
public function __construct(
* @param string $name Name of the special page, as seen in links and URLs
* @param string $restriction User right required, e.g. "block" or "delete"
* @param bool $listed Whether the page is listed in Special:Specialpages
- * @param Callback|Bool $function Function called by execute(). By default
- * it is constructed from $name
+ * @param callable|bool $function Function called by execute(). By default
+ * it is constructed from $name
* @param string $file File which is included by execute(). It is also
- * constructed from $name by default
+ * constructed from $name by default
* @param bool $includable Whether the page can be included in normal pages
*/
private function init( $name, $restriction, $listed, $function, $file, $includable ) {
/**
* Get the name of this Special Page.
- * @return String
+ * @return string
*/
function getName() {
return $this->mName;
/**
* Get the permission that a user must have to execute this page
- * @return String
+ * @return string
*/
function getRestriction() {
return $this->mRestriction;
* Get the file which will be included by SpecialPage::execute() if your extension is
* still stuck in the past and hasn't overridden the execute() method. No modern code
* should want or need to know this.
- * @return String
+ * @return string
* @deprecated since 1.18
*/
function getFile() {
/**
* Whether this special page is listed in Special:SpecialPages
* @since r3583 (v1.3)
- * @return Bool
+ * @return bool
*/
function isListed() {
return $this->mListed;
}
/**
* Set whether this page is listed in Special:Specialpages, at run-time
- * @since r3583 (v1.3)
- * @param $listed Bool
- * @return Bool
+ * @since 1.3
+ * @param bool $listed
+ * @return bool
*/
function setListed( $listed ) {
return wfSetVar( $this->mListed, $listed );
}
/**
* Get or set whether this special page is listed in Special:SpecialPages
- * @since r11308 (v1.6)
- * @param $x Bool
- * @return Bool
+ * @since 1.6
+ * @param bool $x
+ * @return bool
*/
function listed( $x = null ) {
return wfSetVar( $this->mListed, $x );
/**
* Whether it's allowed to transclude the special page via {{Special:Foo/params}}
- * @return Bool
+ * @return bool
*/
public function isIncludable() {
return $this->mIncludable;
/**
* Whether the special page is being evaluated via transclusion
- * @param $x Bool
- * @return Bool
+ * @param bool $x
+ * @return bool
*/
function including( $x = null ) {
return wfSetVar( $this->mIncluding, $x );
/**
* Get the localised name of the special page
+ * @return string
*/
function getLocalName() {
if ( !isset( $this->mLocalName ) ) {
* (and still overridden) by QueryPage and subclasses, moved here so that
* Special:SpecialPages can safely call it for all special pages.
*
- * @return Boolean
+ * @return bool
*/
public function isExpensive() {
return false;
* Used by QueryPage and subclasses, moved here so that
* Special:SpecialPages can safely call it for all special pages.
*
- * @return Boolean
+ * @return bool
* @since 1.21
*/
public function isCached() {
* Can be overridden by subclasses with more complicated permissions
* schemes.
*
- * @return Boolean: should the page be displayed with the restricted-access
+ * @return bool Should the page be displayed with the restricted-access
* pages?
*/
public function isRestricted() {
* special page (as defined by $mRestriction). Can be overridden by sub-
* classes with more complicated permissions schemes.
*
- * @param $user User: the user to check
- * @return Boolean: does the user have permission to view the page?
+ * @param User $user The user to check
+ * @return bool Does the user have permission to view the page?
*/
public function userCanExecute( User $user ) {
return $user->isAllowed( $this->mRestriction );
/**
* Output an error message telling the user what access level they have to have
+ * @throws PermissionsError
*/
function displayRestrictionError() {
throw new PermissionsError( $this->mRestriction );
* Checks if userCanExecute, and if not throws a PermissionsError
*
* @since 1.19
+ * @return void
+ * @throws PermissionsError
*/
public function checkPermissions() {
if ( !$this->userCanExecute( $this->getUser() ) ) {
* If the wiki is currently in readonly mode, throws a ReadOnlyError
*
* @since 1.19
+ * @return void
* @throws ReadOnlyError
*/
public function checkReadOnly() {
*
* @since 1.20
*
- * @param $subPage string|null
+ * @param string|null $subPage
*/
final public function run( $subPage ) {
/**
*
* @since 1.20
*
- * @param $special SpecialPage
- * @param $subPage string|null
+ * @param SpecialPage $this
+ * @param string|null $subPage
*/
wfRunHooks( 'SpecialPageBeforeExecute', array( $this, $subPage ) );
*
* @since 1.20
*
- * @param $special SpecialPage
- * @param $subPage string|null
+ * @param SpecialPage $this
+ * @param string|null $subPage
*/
wfRunHooks( 'SpecialPageAfterExecute', array( $this, $subPage ) );
}
*
* @since 1.20
*
- * @param $subPage string|null
+ * @param string|null $subPage
*/
protected function beforeExecute( $subPage ) {
// No-op
*
* @since 1.20
*
- * @param $subPage string|null
+ * @param string|null $subPage
*/
protected function afterExecute( $subPage ) {
// No-op
*
* This must be overridden by subclasses; it will be made abstract in a future version
*
- * @param $subPage string|null
+ * @param string|null $subPage
*/
public function execute( $subPage ) {
$this->setHeaders();
* May be overridden, i.e. by extensions to stick with the naming conventions
* for message keys: 'extensionname-xxx'
*
- * @param string $summaryMessageKey message key of the summary
+ * @param string $summaryMessageKey Message key of the summary
*/
function outputHeader( $summaryMessageKey = '' ) {
global $wgContLang;
/**
* Get a self-referential title object
*
- * @param $subpage String|Bool
- * @return Title object
+ * @param string|bool $subpage
+ * @return Title
* @deprecated in 1.23, use SpecialPage::getPageTitle
*/
function getTitle( $subpage = false ) {
/**
* Get a self-referential title object
*
- * @param $subpage String|Bool
- * @return Title object
+ * @param string|bool $subpage
+ * @return Title
+ * @since 1.23
*/
function getPageTitle( $subpage = false ) {
return self::getTitleFor( $this->mName, $subpage );
/**
* Sets the context this SpecialPage is executed in
*
- * @param $context IContextSource
+ * @param IContextSource $context
* @since 1.18
*/
public function setContext( $context ) {
/**
* Adds RSS/atom links
*
- * @param $params array
+ * @param array $params
*/
protected function addFeedLinks( $params ) {
global $wgFeedClasses;
*
* @ingroup SpecialPage
*/
-class SpecialChangePassword extends UnlistedSpecialPage {
+class SpecialChangePassword extends FormSpecialPage {
- protected $mUserName, $mOldpass, $mNewpass, $mRetype, $mDomain;
+ protected $mUserName, $mDomain;
public function __construct() {
parent::__construct( 'ChangePassword', 'editmyprivateinfo' );
+ $this->listed( false );
}
/**
* Main execution point
*/
function execute( $par ) {
- global $wgAuth;
-
- $this->setHeaders();
- $this->outputHeader();
$this->getOutput()->disallowUserJs();
- $request = $this->getRequest();
+ parent::execute( $par );
+ }
- if ( !$request->wasPosted() ) {
+ protected function checkExecutePermissions( User $user ) {
+ parent::checkExecutePermissions( $user );
+
+ if ( !$this->getRequest()->wasPosted() ) {
$this->requireLogin( 'resetpass-no-info' );
}
+ }
- $this->mUserName = trim( $request->getVal( 'wpName' ) );
- $this->mOldpass = $request->getVal( 'wpPassword' );
- $this->mNewpass = $request->getVal( 'wpNewPassword' );
- $this->mRetype = $request->getVal( 'wpRetype' );
- $this->mDomain = $request->getVal( 'wpDomain' );
+ protected function getFormFields() {
+ global $wgCookieExpiration;
$user = $this->getUser();
+ $request = $this->getRequest();
- if ( $request->wasPosted() && $request->getBool( 'wpCancel' ) ) {
- $titleObj = Title::newFromText( $request->getVal( 'returnto' ) );
- if ( !$titleObj instanceof Title ) {
- $titleObj = Title::newMainPage();
- }
- $query = $request->getVal( 'returntoquery' );
- $this->getOutput()->redirect( $titleObj->getFullURL( $query ) );
+ $oldpassMsg = $user->isLoggedIn() ? 'oldpassword' : 'resetpass-temp-password';
+
+ $fields = array(
+ 'Name' => array(
+ 'type' => 'info',
+ 'label-message' => 'username',
+ 'default' => $request->getVal( 'wpName', $user->getName() ),
+ ),
+ 'Password' => array(
+ 'type' => 'password',
+ 'label-message' => $oldpassMsg,
+ ),
+ 'NewPassword' => array(
+ 'type' => 'password',
+ 'label-message' => 'newpassword',
+ ),
+ 'Retype' => array(
+ 'type' => 'password',
+ 'label-message' => 'retypenew',
+ ),
+ );
- return;
+ $extraFields = array();
+ wfRunHooks( 'ChangePasswordForm', array( &$extraFields ) );
+ foreach ( $extraFields as $extra ) {
+ list( $name, $label, $type, $default ) = $extra;
+ $fields[$name] = array(
+ 'type' => $type,
+ 'name' => $name,
+ 'label-message' => $label,
+ 'default' => $default,
+ );
}
- $this->checkReadOnly();
- $this->checkPermissions();
-
- if ( $request->wasPosted() && $user->matchEditToken( $request->getVal( 'token' ) ) ) {
- try {
- $this->mDomain = $wgAuth->getDomain();
- if ( !$wgAuth->allowPasswordChange() ) {
- $this->error( $this->msg( 'resetpass_forbidden' )->text() );
-
- return;
- }
-
- $this->attemptReset( $this->mNewpass, $this->mRetype );
-
- if ( $user->isLoggedIn() ) {
- $this->getOutput()->wrapWikiMsg(
- "<div class=\"successbox\">\n$1\n</div>",
- 'changepassword-success'
- );
- $this->getOutput()->returnToMain();
- } else {
- LoginForm::setLoginToken();
- $token = LoginForm::getLoginToken();
- $data = array(
- 'action' => 'submitlogin',
- 'wpName' => $this->mUserName,
- 'wpDomain' => $this->mDomain,
- 'wpLoginToken' => $token,
- 'wpPassword' => $request->getVal( 'wpNewPassword' ),
- ) + $request->getValues( 'wpRemember', 'returnto', 'returntoquery' );
- $login = new LoginForm( new DerivativeRequest( $request, $data, true ) );
- $login->setContext( $this->getContext() );
- $login->execute( null );
- }
-
- return;
- } catch ( PasswordError $e ) {
- $this->error( $e->getMessage() );
- }
+ if ( !$user->isLoggedIn() ) {
+ $fields['Remember'] = array(
+ 'type' => 'check',
+ 'label' => $this->msg( 'remembermypassword' )
+ ->numParams( ceil( $wgCookieExpiration / ( 3600 * 24 ) ) )
+ ->text(),
+ 'default' => $request->getVal( 'wpRemember' ),
+ );
}
- $this->showForm();
+
+ return $fields;
}
- /**
- * @param $msg string
- */
- function error( $msg ) {
- $this->getOutput()->addHTML( Xml::element( 'p', array( 'class' => 'error' ), $msg ) );
+ protected function alterForm( HTMLForm $form ) {
+ $form->setId( 'mw-resetpass-form' );
+ $form->setTableId( 'mw-resetpass-table' );
+ $form->setWrapperLegendMsg( 'resetpass_header' );
+ $form->setSubmitTextMsg(
+ $this->getUser()->isLoggedIn()
+ ? 'resetpass-submit-loggedin'
+ : 'resetpass_submit'
+ );
+ $form->addButton( 'wpCancel', $this->msg( 'resetpass-submit-cancel' )->text() );
+ $form->setHeaderText( $this->msg( 'resetpass_text' )->parseAsBlock() );
+ $form->addHiddenFields(
+ $this->getRequest()->getValues( 'wpName', 'wpDomain', 'returnto', 'returntoquery' ) );
}
- function showForm() {
- global $wgCookieExpiration;
+ public function onSubmit( array $data ) {
+ global $wgAuth;
- $user = $this->getUser();
- if ( !$this->mUserName ) {
- $this->mUserName = $user->getName();
- }
- $rememberMe = '';
- if ( !$user->isLoggedIn() ) {
- $rememberMe = '<tr>' .
- '<td></td>' .
- '<td class="mw-input">' .
- Xml::checkLabel(
- $this->msg( 'remembermypassword' )->numParams( ceil( $wgCookieExpiration / ( 3600 * 24 ) ) )->text(),
- 'wpRemember', 'wpRemember',
- $this->getRequest()->getCheck( 'wpRemember' ) ) .
- '</td>' .
- '</tr>';
- $submitMsg = 'resetpass_submit';
- $oldpassMsg = 'resetpass-temp-password';
- } else {
- $oldpassMsg = 'oldpassword';
- $submitMsg = 'resetpass-submit-loggedin';
- }
- $extraFields = array();
- wfRunHooks( 'ChangePasswordForm', array( &$extraFields ) );
- $prettyFields = array(
- array( 'wpName', 'username', 'text', $this->mUserName ),
- array( 'wpPassword', $oldpassMsg, 'password', $this->mOldpass ),
- array( 'wpNewPassword', 'newpassword', 'password', null ),
- array( 'wpRetype', 'retypenew', 'password', null ),
- );
- $prettyFields = array_merge( $prettyFields, $extraFields );
- $hiddenFields = array(
- 'token' => $user->getEditToken(),
- 'wpName' => $this->mUserName,
- 'wpDomain' => $this->mDomain,
- ) + $this->getRequest()->getValues( 'returnto', 'returntoquery' );
- $hiddenFieldsStr = '';
- foreach ( $hiddenFields as $fieldname => $fieldvalue ) {
- $hiddenFieldsStr .= Html::hidden( $fieldname, $fieldvalue ) . "\n";
+ $request = $this->getRequest();
+
+ if ( $request->getCheck( 'wpLoginToken' ) ) {
+ // This comes from Special:Userlogin when logging in with a temporary password
+ return false;
}
- $this->getOutput()->addHTML(
- Xml::fieldset( $this->msg( 'resetpass_header' )->text() ) .
- Xml::openElement( 'form',
- array(
- 'method' => 'post',
- 'action' => $this->getPageTitle()->getLocalURL(),
- 'id' => 'mw-resetpass-form' ) ) . "\n" .
- $hiddenFieldsStr .
- $this->msg( 'resetpass_text' )->parseAsBlock() . "\n" .
- Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) . "\n" .
- $this->pretty( $prettyFields ) . "\n" .
- $rememberMe .
- "<tr>\n" .
- "<td></td>\n" .
- '<td class="mw-input">' .
- Xml::submitButton( $this->msg( $submitMsg )->text() ) .
- Xml::submitButton( $this->msg( 'resetpass-submit-cancel' )->text(), array( 'name' => 'wpCancel' ) ) .
- "</td>\n" .
- "</tr>\n" .
- Xml::closeElement( 'table' ) .
- Xml::closeElement( 'form' ) .
- Xml::closeElement( 'fieldset' ) . "\n"
- );
- }
- /**
- * @param $fields array
- * @return string
- */
- function pretty( $fields ) {
- $out = '';
- foreach ( $fields as $list ) {
- list( $name, $label, $type, $value ) = $list;
- if ( $type == 'text' ) {
- $field = htmlspecialchars( $value );
- } else {
- $attribs = array( 'id' => $name );
- if ( $name == 'wpNewPassword' || $name == 'wpRetype' ) {
- $attribs = array_merge( $attribs,
- User::passwordChangeInputAttribs() );
- }
- if ( $name == 'wpPassword' ) {
- $attribs[] = 'autofocus';
- }
- $field = Html::input( $name, $value, $type, $attribs );
+ if ( $request->getCheck( 'wpCancel' ) ) {
+ $titleObj = Title::newFromText( $request->getVal( 'returnto' ) );
+ if ( !$titleObj instanceof Title ) {
+ $titleObj = Title::newMainPage();
}
- $out .= "<tr>\n";
- $out .= "\t<td class='mw-label'>";
+ $query = $request->getVal( 'returntoquery' );
+ $this->getOutput()->redirect( $titleObj->getFullURL( $query ) );
+ return true;
+ }
- if ( $type != 'text' ) {
- $out .= Xml::label( $this->msg( $label )->text(), $name );
- } else {
- $out .= $this->msg( $label )->escaped();
+ try {
+ $this->mUserName = $request->getVal( 'wpName', $this->getUser()->getName() );
+ $this->mDomain = $wgAuth->getDomain();
+
+ if ( !$wgAuth->allowPasswordChange() ) {
+ throw new ErrorPageError( 'changepassword', 'resetpass_forbidden' );
}
- $out .= "</td>\n";
- $out .= "\t<td class='mw-input'>";
- $out .= $field;
- $out .= "</td>\n";
- $out .= "</tr>";
+ $this->attemptReset( $data['Password'], $data['NewPassword'], $data['Retype'] );
+
+ return true;
+ } catch ( PasswordError $e ) {
+ return $e->getMessage();
}
+ }
- return $out;
+ public function onSuccess() {
+ if ( $this->getUser()->isLoggedIn() ) {
+ $this->getOutput()->wrapWikiMsg(
+ "<div class=\"successbox\">\n$1\n</div>",
+ 'changepassword-success'
+ );
+ $this->getOutput()->returnToMain();
+ } else {
+ $request = $this->getRequest();
+ LoginForm::setLoginToken();
+ $token = LoginForm::getLoginToken();
+ $data = array(
+ 'action' => 'submitlogin',
+ 'wpName' => $this->mUserName,
+ 'wpDomain' => $this->mDomain,
+ 'wpLoginToken' => $token,
+ 'wpPassword' => $request->getVal( 'wpNewPassword' ),
+ ) + $request->getValues( 'wpRemember', 'returnto', 'returntoquery' );
+ $login = new LoginForm( new DerivativeRequest( $request, $data, true ) );
+ $login->setContext( $this->getContext() );
+ $login->execute( null );
+ }
}
/**
* @throws PasswordError when cannot set the new password because requirements not met.
*/
- protected function attemptReset( $newpass, $retype ) {
+ protected function attemptReset( $oldpass, $newpass, $retype ) {
global $wgPasswordAttemptThrottle;
$isSelf = ( $this->mUserName === $this->getUser()->getName() );
}
$abortMsg = 'resetpass-abort-generic';
- if ( !wfRunHooks( 'AbortChangePassword', array( $user, $this->mOldpass, $newpass, &$abortMsg ) ) ) {
+ if ( !wfRunHooks( 'AbortChangePassword', array( $user, $oldpass, $newpass, &$abortMsg ) ) ) {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'abortreset' ) );
throw new PasswordError( $this->msg( $abortMsg )->text() );
}
- if ( !$user->checkTemporaryPassword( $this->mOldpass ) && !$user->checkPassword( $this->mOldpass ) ) {
+ if ( !$user->checkTemporaryPassword( $oldpass ) && !$user->checkPassword( $oldpass ) ) {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'wrongpassword' ) );
throw new PasswordError( $this->msg( 'resetpass-wrong-oldpass' )->text() );
}
}
try {
- $user->setPassword( $this->mNewpass );
+ $user->setPassword( $newpass );
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'success' ) );
- $this->mNewpass = $this->mOldpass = $this->mRetype = '';
} catch ( PasswordError $e ) {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'error' ) );
throw new PasswordError( $e->getMessage() );
$user->saveSettings();
}
+ public function requiresUnblock() {
+ return false;
+ }
+
protected function getGroupName() {
return 'users';
}
// This is a bit ugly, but will serve to differentiate
// wiki-borne mails from direct mails and protects against
// SPF and bounce problems with some mailers (see below).
- global $wgPasswordSender, $wgPasswordSenderName;
+ global $wgPasswordSender;
- $mailFrom = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
+ $mailFrom = new MailAddress( $wgPasswordSender,
+ wfMessage( 'emailsender' )->inContentLanguage()->text() );
$replyTo = $from;
} else {
// Put the sending user's e-mail address in the From: header.
foreach ( explode( "\n", $page ) as $pageName ) {
$pageName = trim( $pageName );
$title = Title::newFromText( $pageName );
- if ( $title && $title->getInterwiki() == '' && $title->getText() !== '' ) {
+ if ( $title && !$title->isExternal() && $title->getText() !== '' ) {
// Only record each page once!
$pageSet[$title->getPrefixedText()] = true;
}
if ( $this->including() ) {
$userName = $par;
$search = '';
+ $showAll = false;
} else {
$userName = $this->getRequest()->getText( 'user', $par );
$search = $this->getRequest()->getText( 'ilsearch', '' );
UserCache::singleton()->doQuery( $userIds, array( 'userpage' ), __METHOD__ );
}
+ /**
+ * @param string $field
+ * @param string $value
+ * @return Message|string|int The return type depends on the value of $field:
+ * - thumb: string
+ * - img_timestamp: string
+ * - img_name: string
+ * - img_user_text: string
+ * - img_size: string
+ * - img_description: string
+ * - count: int
+ * - top: Message
+ * @throws MWException
+ */
function formatValue( $field, $value ) {
switch ( $field ) {
case 'thumb':
case 'top':
// Messages: listfiles-latestversion-yes, listfiles-latestversion-no
return $this->msg( 'listfiles-latestversion-' . $value );
+ default:
+ throw new MWException( "Unknown field '$field'" );
}
}
$ns = $request->getIntOrNull( 'namespace' );
$indefOnly = $request->getBool( 'indefonly' ) ? 1 : 0;
$cascadeOnly = $request->getBool( 'cascadeonly' ) ? 1 : 0;
+ $noRedirect = $request->getBool( 'noredirect' ) ? 1 : 0;
$pager = new ProtectedPagesPager(
$this,
$sizetype,
$size,
$indefOnly,
- $cascadeOnly
+ $cascadeOnly,
+ $noRedirect
);
$this->getOutput()->addHTML( $this->showOptions(
$sizetype,
$size,
$indefOnly,
- $cascadeOnly
+ $cascadeOnly,
+ $noRedirect
) );
if ( $pager->getNumRows() ) {
}
/**
- * @param $namespace Integer
- * @param string $type restriction type
- * @param string $level restriction level
+ * @param int $namespace
+ * @param string $type Restriction type
+ * @param string $level Restriction level
* @param string $sizetype "min" or "max"
- * @param $size Integer
- * @param $indefOnly Boolean: only indefinie protection
- * @param $cascadeOnly Boolean: only cascading protection
+ * @param int $size
+ * @param bool $indefOnly Only indefinite protection
+ * @param bool $cascadeOnly Only cascading protection
+ * @param bool $noRedirect Don't show redirects
* @return String: input form
*/
protected function showOptions( $namespace, $type = 'edit', $level, $sizetype,
- $size, $indefOnly, $cascadeOnly
+ $size, $indefOnly, $cascadeOnly, $noRedirect
) {
global $wgScript;
"<br /><span style='white-space: nowrap'>" .
$this->getExpiryCheck( $indefOnly ) . " \n" .
$this->getCascadeCheck( $cascadeOnly ) . " \n" .
+ $this->getRedirectCheck( $noRedirect ) . " \n" .
"</span><br /><span style='white-space: nowrap'>" .
$this->getSizeLimit( $sizetype, $size ) . " \n" .
"</span>" .
) . "\n";
}
+ /**
+ * @param bool $noRedirect
+ * @return string Formatted HTML
+ */
+ protected function getRedirectCheck( $noRedirect ) {
+ return Xml::checkLabel(
+ $this->msg( 'protectedpages-noredirect' )->text(),
+ 'noredirect',
+ 'noredirect',
+ $noRedirect
+ ) . "\n";
+ }
+
/**
* @param string $sizetype "min" or "max"
* @param mixed $size
*/
class ProtectedPagesPager extends AlphabeticPager {
public $mForm, $mConds;
- private $type, $level, $namespace, $sizetype, $size, $indefonly;
+ private $type, $level, $namespace, $sizetype, $size, $indefonly, $cascadeonly, $noredirect;
function __construct( $form, $conds = array(), $type, $level, $namespace,
- $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false
+ $sizetype = '', $size = 0, $indefonly = false, $cascadeonly = false, $noredirect = false
) {
$this->mForm = $form;
$this->mConds = $conds;
$this->size = intval( $size );
$this->indefonly = (bool)$indefonly;
$this->cascadeonly = (bool)$cascadeonly;
+ $this->noredirect = (bool)$noredirect;
parent::__construct( $form->getContext() );
}
if ( $this->cascadeonly ) {
$conds[] = 'pr_cascade = 1';
}
+ if ( $this->noredirect ) {
+ $conds[] = 'page_is_redirect = 0';
+ }
if ( $this->level ) {
$conds[] = 'pr_level=' . $this->mDb->addQuotes( $this->level );
*
* @ingroup SpecialPage
*/
-class SpecialRecentChanges extends IncludableSpecialPage {
+class SpecialRecentChanges extends SpecialPage {
var $rcOptions, $rcSubpage;
protected $customFilters;
*/
protected $feedFormat;
- public function __construct( $name = 'Recentchanges' ) {
- parent::__construct( $name );
+ public function __construct( $name = 'Recentchanges', $restriction = '' ) {
+ parent::__construct( $name, $restriction );
+ }
+
+ public function isIncludable() {
+ return true;
}
/**
}
$outputPage = $this->getOutput();
$title = Title::newFromURL( $target );
- if ( !$title || $title->getInterwiki() != '' ) {
+ if ( !$title || $title->isExternal() ) {
$outputPage->addHtml( '<div class="errorbox">' . $this->msg( 'allpagesbadtitle' )->parse() . '</div>' );
return false;
}
$list->reset();
$bitfield = $list->current()->getBits(); // existing field
if ( $this->submitClicked ) {
- $bitfield = $this->extractBitfield( $this->extractBitParams(), $bitfield );
+ $bitfield = RevisionDeleter::extractBitfield( $this->extractBitParams(), $bitfield );
}
foreach ( $this->checks as $item ) {
list( $message, $name, $field ) = $item;
return $bitfield;
}
- /**
- * Put together a rev_deleted bitfield
- * @deprecated since 1.22, use RevisionDeleter::extractBitfield instead
- * @param array $bitPars extractBitParams() params
- * @param int $oldfield current bitfield
- * @return array
- */
- public static function extractBitfield( $bitPars, $oldfield ) {
- return RevisionDeleter::extractBitfield( $bitPars, $oldfield );
- }
-
/**
* Do the write operations. Simple wrapper for RevDel_*List::setVisibility().
* @param $bitfield
function resetLoginForm( $error ) {
$this->getOutput()->addHTML( Xml::element( 'p', array( 'class' => 'error' ), $error ) );
$reset = new SpecialChangePassword();
- $reset->setContext( $this->getContext() );
+ $derivative = new DerivativeContext( $this->getContext() );
+ $derivative->setTitle( $reset->getPageTitle() );
+ $reset->setContext( $derivative );
$reset->execute( null );
}
* @file
* @ingroup SpecialPage Watchlist
*/
-class SpecialWatchlist extends SpecialPage {
+class SpecialWatchlist extends SpecialRecentChanges {
protected $customFilters;
/**
parent::__construct( $page, $restriction );
}
+ public function isIncludable() {
+ return false;
+ }
+
/**
* Execute
* @param $par Parameter passed to the page
return floor( $count / 2 );
}
-
- protected function getGroupName() {
- return 'changes';
- }
}
* UploadBase and subclasses are the backend of MediaWiki's file uploads.
* The frontends are formed by ApiUpload and SpecialUpload.
*
- * See also includes/docs/upload.txt
- *
* @author Brion Vibber
* @author Bryan Tong Minh
* @author Michael Dale
# exclamation mark, so restrict file name to 240 bytes.
if ( strlen( $this->mFilteredName ) > 240 ) {
$this->mTitleError = self::FILENAME_TOO_LONG;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
}
/**
$nt = Title::makeTitleSafe( NS_FILE, $this->mFilteredName );
if ( is_null( $nt ) ) {
$this->mTitleError = self::ILLEGAL_FILENAME;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
}
$this->mFilteredName = $nt->getDBkey();
if ( $this->mFinalExtension == '' ) {
$this->mTitleError = self::FILETYPE_MISSING;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
} elseif ( $blackListedExtensions ||
( $wgCheckFileExtensions && $wgStrictFileExtensions &&
!$this->checkFileExtensionList( $ext, $wgFileExtensions ) ) ) {
$this->mBlackListedExtensions = $blackListedExtensions;
$this->mTitleError = self::FILETYPE_BADTYPE;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
}
// Windows may be broken with special characters, see bug XXX
if ( wfIsWindows() && !preg_match( '/^[\x0-\x7f]*$/', $nt->getText() ) ) {
$this->mTitleError = self::WINDOWS_NONASCII_FILENAME;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
}
# If there was more than one "extension", reassemble the base
if ( strlen( $partname ) < 1 ) {
$this->mTitleError = self::MIN_LENGTH_PARTNAME;
- return $this->mTitle = null;
+ $this->mTitle = null;
+ return $this->mTitle;
}
- return $this->mTitle = $nt;
+ $this->mTitle = $nt;
+ return $this->mTitle;
}
/**
+++ /dev/null
-<?php
-/**
- * This file deals with RAII style scoped callbacks.
- *
- * 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
- */
-
-/**
- * Class for asserting that a callback happens when an dummy object leaves scope
- *
- * @since 1.21
- */
-class ScopedCallback {
- /** @var callable */
- protected $callback;
-
- /**
- * @param callable $callback
- * @throws MWException
- */
- public function __construct( $callback ) {
- if ( !is_callable( $callback ) ) {
- throw new MWException( "Provided callback is not valid." );
- }
- $this->callback = $callback;
- }
-
- /**
- * Trigger a scoped callback and destroy it.
- * This is the same is just setting it to null.
- *
- * @param ScopedCallback $sc
- */
- public static function consume( ScopedCallback &$sc = null ) {
- $sc = null;
- }
-
- /**
- * Destroy a scoped callback without triggering it
- *
- * @param ScopedCallback $sc
- */
- public static function cancel( ScopedCallback &$sc = null ) {
- if ( $sc ) {
- $sc->callback = null;
- }
- $sc = null;
- }
-
- /**
- * Trigger the callback when this leaves scope
- */
- function __destruct() {
- if ( $this->callback !== null ) {
- call_user_func( $this->callback );
- }
- }
-}
protected $fileHandles = array(); // cache file handles
const QUICK_RAND = 1; // get randomness from fast and insecure sources
+ const QUICK_VOLATILE = 2; // use an APC like in-memory counter if available
protected function __construct() {
$idFile = wfTempDir() . '/mw-' . __CLASS__ . '-UID-nodeid';
return str_replace( '-', '', self::newUUIDv4( $flags ) );
}
+ /**
+ * Return an ID that is sequential *only* for this node and bucket
+ *
+ * These IDs are suitable for per-host sequence numbers, e.g. for some packet protocols.
+ * If UIDGenerator::QUICK_VOLATILE is used the counter might reset on server restart.
+ *
+ * @param string $bucket Arbitrary bucket name (should be ASCII)
+ * @param integer $bits Bit size (<=48) of resulting numbers before wrap-around
+ * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+ * @return float Integer value as float
+ * @since 1.23
+ */
+ public static function newSequentialPerNodeID( $bucket, $bits = 48, $flags = 0 ) {
+ return current( self::newSequentialPerNodeIDs( $bucket, $bits, 1, $flags ) );
+ }
+
+ /**
+ * Return IDs that are sequential *only* for this node and bucket
+ *
+ * @see UIDGenerator::newSequentialPerNodeID()
+ * @param string $bucket Arbitrary bucket name (should be ASCII)
+ * @param integer $bits Bit size (16 to 48) of resulting numbers before wrap-around
+ * @param integer $count Number of IDs to return (1 to 10000)
+ * @param integer $flags (supports UIDGenerator::QUICK_VOLATILE)
+ * @return array Ordered list of float integer values
+ * @since 1.23
+ */
+ public static function newSequentialPerNodeIDs( $bucket, $bits, $count, $flags = 0 ) {
+ if ( $count <= 0 ) {
+ return array(); // nothing to do
+ } elseif ( $count > 10000 ) {
+ throw new MWException( "Number of requested IDs ($count) is too high." );
+ } elseif ( $bits < 16 || $bits > 48 ) {
+ throw new MWException( "Requested bit size ($bits) is out of range." );
+ }
+
+ $counter = null; // post-increment persistent counter value
+
+ // Use APC/eAccelerator/xcache if requested, available, and not in CLI mode;
+ // Counter values would not survive accross script instances in CLI mode.
+ $cache = null;
+ if ( ( $flags & self::QUICK_VOLATILE ) && PHP_SAPI !== 'cli' ) {
+ try {
+ $cache = ObjectCache::newAccelerator( array() );
+ } catch ( MWException $e ) {} // not supported
+ }
+ if ( $cache ) {
+ $counter = $cache->incr( $bucket, $count );
+ if ( $counter === false ) {
+ if ( !$cache->add( $bucket, $count ) ) {
+ throw new MWException( 'Unable to set value to ' . get_class( $cache ) );
+ }
+ $counter = $count;
+ }
+ }
+
+ // Note: use of fmod() avoids "division by zero" on 32 bit machines
+ if ( $counter === null ) {
+ $path = wfTempDir() . '/mw-' . __CLASS__ . '-' . rawurlencode( $bucket ) . '-48';
+ $handle = fopen( $path, 'cb+' );
+ // Acquire the UID lock file
+ if ( $handle === false ) {
+ throw new MWException( "Could not open '{$path}'." );
+ } elseif ( !flock( $handle, LOCK_EX ) ) {
+ fclose( $handle );
+ throw new MWException( "Could not acquire '{$path}'." );
+ }
+ // Fetch the counter value and increment it...
+ rewind( $handle );
+ $counter = floor( trim( fgets( $handle ) ) ) + $count; // fetch as float
+ // Write back the new counter value
+ ftruncate( $handle, 0 );
+ rewind( $handle );
+ fwrite( $handle, fmod( $counter, pow( 2, 48 ) ) ); // warp-around as needed
+ fflush( $handle );
+ // Release the UID lock file
+ flock( $handle, LOCK_UN );
+ fclose( $handle );
+ }
+ $ids = array();
+ $divisor = pow( 2, $bits );
+ $currentId = floor( $counter - $count ); // pre-increment counter value
+ for ( $i = 0; $i < $count; ++$i ) {
+ $ids[] = fmod( ++$currentId, $divisor );
+ }
+
+ return $ids;
+ }
+
/**
* Get a (time,counter,clock sequence) where (time,counter) is higher
* than any previous (time,counter) value for the given clock sequence.
if ( $handle === false ) {
throw new MWException( "Could not open '{$this->$lockFile}'." );
} elseif ( !flock( $handle, LOCK_EX ) ) {
+ fclose( $handle );
throw new MWException( "Could not acquire '{$this->$lockFile}'." );
}
// Get the current timestamp, clock sequence number, last time, and counter
function getParsedTitle() { return ''; }
function markNoConversion( $text, $noParse = false ) { return $text; }
function convertCategoryKey( $key ) { return $key; }
- function convertLinkToAllVariants( $text ) { return $this->autoConvertToAllVariants( $text ); }
/** @deprecated since 1.22 is no longer used */
function armourMath( $text ) { return $text; }
function validateVariant( $variant = null ) { return $variant === $this->mLang->getCode() ? $variant : null; }
$this->mConverter->findVariantLink( $link, $nt, $ignoreOtherCond );
}
- /**
- * If a language supports multiple variants, converts text
- * into an array of all possible variants of the text:
- * 'variant' => text in that variant
- *
- * @deprecated since 1.17 Use autoConvertToAllVariants()
- *
- * @param $text string
- *
- * @return string
- */
- public function convertLinkToAllVariants( $text ) {
- return $this->mConverter->convertLinkToAllVariants( $text );
- }
-
/**
* returns language specific options used by User::getPageRenderHash()
* for example, the preferred language variant
$ret = $wgRequest->getVal( 'uselang' );
}
- return $this->mURLVariant = $this->validateVariant( $ret );
+ $this->mURLVariant = $this->validateVariant( $ret );
+ return $this->mURLVariant;
}
/**
$ret = $wgUser->getOption( 'language' );
}
- return $this->mUserVariant = $this->validateVariant( $ret );
+ $this->mUserVariant = $this->validateVariant( $ret );
+ return $this->mUserVariant;
}
/**
return $ret;
}
- /**
- * Convert link text to all valid variants.
- * In the first, this function only convert text outside the
- * "-{" "}-" markups. Since the "{" and "}" are not allowed in
- * titles, the text will get all converted always.
- * So I removed this feature and deprecated the function.
- *
- * @param $text String: the text to be converted
- * @return Array: variant => converted text
- * @deprecated since 1.17 Use autoConvertToAllVariants() instead
- */
- public function convertLinkToAllVariants( $text ) {
- return $this->autoConvertToAllVariants( $text );
- }
-
/**
* Apply manual conversion rules.
*
* @see http://be-x-old.wikipedia.org/wiki/Project_talk:LanguageBe_tarask.php
*/
class LanguageBe_tarask extends Language {
- /**
- * Plural form transformations
- *
- * $wordform1 - singular form (for 1, 21, 31, 41...)
- * $wordform2 - plural form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
- * $wordform3 - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
- */
-
- /**
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count == 1
- // plural for $count != 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count == 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms instead of 3
- // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-
/**
* The Belarusian language uses apostrophe sign,
* but the characters used for this could be both U+0027 and U+2019.
+++ /dev/null
-<?php
-/**
- * Croatian (hrvatski) specific code.
- *
- * 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
- * @ingroup Language
- */
-
-/**
- * Croatian (hrvatski)
- *
- * @ingroup Language
- */
-class LanguageHr extends Language {
-
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
- // @todo FIXME: CLDR defines 4 plural forms instead of 3. Plural for for decimals is missing.
- // http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-}
return $wgGrammarForms['ru'][$case][$word];
}
- # These rules are not perfect, but they are currently only used for Wikimedia site names so it doesn't
- # matter if they are wrong sometimes. Just add a special case for your site name if necessary.
+ # These rules are not perfect, but they are currently only used for Wikimedia
+ # site names so it doesn't matter if they are wrong sometimes.
+ # Just add a special case for your site name if necessary.
# substr doesn't support Unicode and mb_substr has issues,
# so break it to characters using preg_match_all and then use array_slice and join
return $word;
}
- /**
- * Plural form transformations
- *
- * $forms[0] - singular form (for 1, 21, 31, 41...)
- * $forms[1] - paucal form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
- * $forms[2] - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
- *
- * Examples:
- * message with number
- * "Сделано $1 {{PLURAL:$1|изменение|изменения|изменений}}"
- * ("$1 change[s] were made)
- * message without number
- * "Действие не может быть выполнено по {{PLURAL:$1|следующей причине|следующим причинам}}:"
- * ("The action cannot be performed for the following reason[s]")
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count === 1
- // plural for $count !== 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count === 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
- // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && (int)floor( ( $count % 100 ) / 10 ) === 1 ) {
- return $forms[2];
- }
-
- switch ( $count % 10 ) {
- case 1:
- return $forms[0];
- case 2:
- case 3:
- case 4:
- return $forms[1];
- default:
- return $forms[2];
- }
- }
-
/**
* Four-digit number should be without group commas (spaces)
* See manual of style at http://ru.wikipedia.org/wiki/Википедия:Оформление_статей
*/
require_once __DIR__ . '/../LanguageConverter.php';
-require_once __DIR__ . '/LanguageSr_ec.php';
-require_once __DIR__ . '/LanguageSr_el.php';
/**
* There are two levels of conversion for Serbian: the script level
// regexp for roman numbers
$roman = 'M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})';
- $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks . $roman . '$|' . $breaks . $roman . $breaks . '/';
+ $reg = '/^' . $roman . '$|^' . $roman . $breaks . '|' . $breaks
+ . $roman . '$|' . $breaks . $roman . $breaks . '/';
$matches = preg_split( $reg, $text, -1, PREG_SPLIT_OFFSET_CAPTURE );
$m = array_shift( $matches );
$this->loadTables();
if ( !isset( $this->mTables[$toVariant] ) ) {
- throw new MWException( "Broken variant table: " . implode( ',', array_keys( $this->mTables ) ) );
+ throw new MWException( "Broken variant table: "
+ . implode( ',', array_keys( $this->mTables ) ) );
}
$ret = $this->mTables[$toVariant]->replace( $m[0] );
$mstart = $m[1] + strlen( $m[0] );
*
* @ingroup Language
*/
-class LanguageSr extends LanguageSr_ec {
+class LanguageSr extends Language {
function __construct() {
global $wgHooks;
$this->mConverter = new SrConverter( $this, 'sr', $variants, $variantfallbacks, $flags );
$wgHooks['PageContentSaveComplete'][] = $this->mConverter;
}
-
- /**
- * @param $count int
- * @param $forms array
- *
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count == 1
- // plural for $count != 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count == 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
- // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
}
+++ /dev/null
-<?php
-/**
- * Serbian (cyrillic script) specific code.
- *
- * 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
- * @ingroup Language
- */
-
-/**
- * Serbian (cyrillic script)
- *
- * @ingroup Language
- */
-class LanguageSr_ec extends Language {
-
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-}
+++ /dev/null
-<?php
-/**
- * Serbian (latin script) specific code.
- *
- * 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
- * @ingroup Language
- */
-
-/**
- * Serbian (latin script)
- *
- * @ingroup Language
- */
-class LanguageSr_el extends Language {
-
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-}
return $word;
}
- /**
- * @param $count int
- * @param $forms array
- * @return string
- */
- function convertPlural( $count, $forms ) {
- $forms = $this->handleExplicitPluralForms( $count, $forms );
- if ( is_string( $forms ) ) {
- return $forms;
- }
- if ( !count( $forms ) ) {
- return '';
- }
-
- // If the actual number is not mentioned in the expression, then just two forms are enough:
- // singular for $count == 1
- // plural for $count != 1
- // For example, "This user belongs to {{PLURAL:$1|one group|several groups}}."
- if ( count( $forms ) === 2 ) {
- return $count == 1 ? $forms[0] : $forms[1];
- }
-
- // @todo FIXME: CLDR defines 4 plural forms. Form for decimals is missing/
- // See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#uk
- $forms = $this->preConvertPlural( $forms, 3 );
-
- if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
- return $forms[2];
- } else {
- switch ( $count % 10 ) {
- case 1: return $forms[0];
- case 2:
- case 3:
- case 4: return $forms[1];
- default: return $forms[2];
- }
- }
- }
-
/**
* Ukrainian numeric format is "12 345,67" but "1234,56"
*
<!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
<supplementalData>
<plurals>
- <!--
- The "one" and "two" rules are copied directly from CLDR.
- The "many" rule overrides CLDR, because CLDR seems to have a mistake:
- it's sometimes needed for multiples of 10, but not for 10 itself.
- When the CLDR is fixed, this should be removed.
- -->
- <pluralRules locales="he">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- <pluralRule count="many">n is not 0 AND n is not 10 AND n mod 10 is 0</pluralRule>
- </pluralRules>
+ <!-- Lower Sorbian (Dolnoserbski) and Upper Sorbian (Hornjoserbsce). Not present in CLDR -->
<pluralRules locales="dsb hsb">
- <pluralRule count="one">n mod 100 is 1</pluralRule>
- <pluralRule count="two">n mod 100 is 2</pluralRule>
- <pluralRule count="few">n mod 100 in 3..4</pluralRule>
+ <pluralRule count="one">n % 100 = 1 @integer 1, 101, 201, 301, …</pluralRule>
+ <pluralRule count="two">n % 100 = 2 @integer 2, 102, 202, 302, …</pluralRule>
+ <pluralRule count="few">n % 100 = 3..4 @integer 3~4, 103~104, …</pluralRule>
+ <pluralRule count="other"> @integer 5, 6, 7, 8, 9, 10, 105, 206, 307, …</pluralRule>
</pluralRules>
- <!-- Copied from "be" -->
+
+ <!-- Belarusian in Taraškievica orthography (Беларуская тарашкевіца). Copied from "be" -->
<pluralRules locales="be-tarask">
- <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
- <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
- <pluralRule count="many">n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14</pluralRule>
- <!-- others are fractions -->
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+ <pluralRule count="few">n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="many">n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
</pluralRules>
+ <!-- Old Church Slavonic (Ѩзыкъ словѣньскъ). Not present in CLDR -->
<pluralRules locales="cu">
- <pluralRule count="one">n mod 10 is 1</pluralRule>
- <pluralRule count="two">n mod 10 is 2</pluralRule>
- <pluralRule count="few">n mod 10 in 3..4</pluralRule>
+ <pluralRule count="one">n % 10 = 1 @integer 1, 11, 21, 31, …</pluralRule>
+ <pluralRule count="two">n % 10 = 2 @integer 2, 12, 22, 32, …</pluralRule>
+ <pluralRule count="few">n % 10 = 3..4 @integer 3~4, 13~14, 23~24, …</pluralRule>
+ <pluralRule count="other"> @integer 5, 6, 7, 8, 9, 10, 15, 105, 206, 307, …</pluralRule>
</pluralRules>
<!-- Copied from "bh" -->
<pluralRules locales="bho">
- <pluralRule count="one">n in 0..1</pluralRule>
+ <pluralRule count="one">n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
+ <!-- Samogitian. Not present in CLDR -->
<pluralRules locales="sgs">
- <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
- <pluralRule count="two">n mod 10 is 2 and n mod 100 is not 12</pluralRule>
- <pluralRule count="few">n is 0 or n mod 100 is 0 or n mod 100 in 10..19</pluralRule>
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 91, 101, 121, …</pluralRule>
+ <pluralRule count="two">n % 10 = 2 and n % 100 != 12 @integer 2, 22, 32, 42, 52, 62, 72, 82, 92, 102, 122, …</pluralRule>
+ <pluralRule count="few">n = 0 or n % 100 = 0 or n % 100 = 10..19 @integer 0, 11, 12, 13, 14, 15, 16, 17, 18, 19, 100, 111,112, …</pluralRule>
+ <pluralRule count="other"> @integer 3, 4, 5, 6, 7, 8, 9, 20, 103, 104, …</pluralRule>
</pluralRules>
- <!-- Override as per https://bugzilla.wikimedia.org/show_bug.cgi?id=47099, porting from CLDR 24 -->
- <pluralRules locales="gv">
- <pluralRule count="one">n mod 10 is 1</pluralRule>
- <pluralRule count="two">n mod 10 is 2</pluralRule>
- <pluralRule count="few">n mod 100 in 0,20,40,60</pluralRule>
+ <pluralRules locales="sr-el sr-ec">
+ <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
</plurals>
</supplementalData>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE supplementalData SYSTEM "../../common/dtd/ldmlSupplemental.dtd">
+<!--
+Copyright © 1991-2013 Unicode, Inc.
+CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
+For terms of use, see http://www.unicode.org/copyright.html
+-->
<supplementalData>
- <version number="$Revision: 8007 $"/>
- <generation date="$Date: 2013-01-03 07:17:41 +0530 (Thu, 03 Jan 2013) $"/>
- <plurals>
+ <version number="$Revision: 9369 $"/>
+ <generation date="$Date: 2013-09-14 01:26:08 +0530 (ശ, 14 സെപ് 2013) $"/>
+ <plurals type="cardinal">
+ <!-- For a canonicalized list, use GeneratedPluralSamples -->
<!-- if locale is known to have no plurals, there are no rules -->
- <pluralRules locales="az bm bo dz fa id ig ii hu ja jv ka kde kea km kn ko lo ms my sah ses sg th to tr vi wo yo zh"/>
<pluralRules locales="ar">
- <pluralRule count="zero">n is 0</pluralRule>
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- <pluralRule count="few">n mod 100 in 3..10</pluralRule>
- <pluralRule count="many">n mod 100 in 11..99</pluralRule>
- </pluralRules>
- <pluralRules locales="he">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- <pluralRule count="many">n is not 0 AND n mod 10 is 0</pluralRule>
- </pluralRules>
- <pluralRules locales="asa ast af bem bez bg bn brx ca cgg chr ckb da de dv ee el en eo es et eu fi fo fur fy gl gsw gu ha haw hy is it jgo jmc kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn mr nah nb nd ne nl nn nnh no nr ny nyn om or os pa pap ps pt rof rm rwk saq seh sn so sq ss ssy st sv sw syr ta te teo tig tk tn ts ur vo wae ve vun xh xog zu">
- <pluralRule count="one">n is 1</pluralRule>
- </pluralRules>
- <pluralRules locales="ak am bh fil tl guw hi ln mg nso ti wa">
- <pluralRule count="one">n in 0..1</pluralRule>
- </pluralRules>
- <pluralRules locales="ff fr kab">
- <pluralRule count="one">n within 0..2 and n is not 2</pluralRule>
+ <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+ <pluralRule count="few">n % 100 = 3..10 @integer 3~10, 103~110, 1003, … @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 103.0, 1003.0, …</pluralRule>
+ <pluralRule count="many">n % 100 = 11..99 @integer 11~26, 111, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …</pluralRule>
+ <pluralRule count="other"> @integer 100~102, 200~202, 300~302, 400~402, 500~502, 600, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="he iw">
+ <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="two">i = 2 and v = 0 @integer 2</pluralRule>
+ <pluralRule count="many">v = 0 and n != 0..10 and n % 10 = 0 @integer 20, 30, 40, 50, 60, 70, 80, 90, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 3~17, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="af asa ast az bem bez bg brx cgg chr ckb dv ee el eo es eu fo fur fy gsw ha haw hu jgo jmc ka kaj kcg kk kkj kl ks ksb ku ky lb lg mas mgo ml mn nah nb nd ne nn nnh no nr ny nyn om or os pap ps rm rof rwk saq seh sn so sq ss ssy st syr ta te teo tig tk tn tr ts uz ve vo vun wae xh xog">
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="ak bh guw ln mg nso pa ti wa">
+ <pluralRule count="one">n = 0..1 @integer 0, 1 @decimal 0.0, 1.0, 0.00, 1.00, 0.000, 1.000, 0.0000, 1.0000</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="ff fr hy kab">
+ <pluralRule count="one">i = 0,1 @integer 0, 1 @decimal 0.0~1.5</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="lv">
- <pluralRule count="zero">n is 0</pluralRule>
- <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
+ <pluralRule count="zero">n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19 @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.0, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="other"> @integer 2~9, 22~29, 102, 1002, … @decimal 0.2~0.9, 1.2~1.9, 10.2, 100.2, 1000.2, …</pluralRule>
</pluralRules>
<pluralRules locales="iu kw naq se sma smi smj smn sms">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- </pluralRules>
- <pluralRules locales="ga"> <!-- http://unicode.org/cldr/trac/ticket/3915 -->
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- <pluralRule count="few">n in 3..6</pluralRule>
- <pluralRule count="many">n in 7..10</pluralRule>
- </pluralRules>
- <pluralRules locales="ro mo">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="few">n is 0 OR n is not 1 AND n mod 100 in 1..19</pluralRule>
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+ <pluralRule count="other"> @integer 0, 3~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="ga">
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+ <pluralRule count="few">n = 3..6 @integer 3~6 @decimal 3.0, 4.0, 5.0, 6.0, 3.00, 4.00, 5.00, 6.00, 3.000, 4.000, 5.000, 6.000, 3.0000, 4.0000, 5.0000, 6.0000</pluralRule>
+ <pluralRule count="many">n = 7..10 @integer 7~10 @decimal 7.0, 8.0, 9.0, 10.0, 7.00, 8.00, 9.00, 10.00, 7.000, 8.000, 9.000, 10.000, 7.0000, 8.0000, 9.0000, 10.0000</pluralRule>
+ <pluralRule count="other"> @integer 0, 11~25, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="mo ro">
+ <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="few">v != 0 or n = 0 or n != 1 and n % 100 = 1..19 @integer 0, 2~16, 101, 1001, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @integer 20~35, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
</pluralRules>
<pluralRules locales="lt">
- <pluralRule count="one">n mod 10 is 1 and n mod 100 not in 11..19</pluralRule>
- <pluralRule count="few">n mod 10 in 2..9 and n mod 100 not in 11..19</pluralRule>
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11..19 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+ <pluralRule count="few">n % 10 = 2..9 and n % 100 != 11..19 @integer 2~9, 22~29, 102, 1002, … @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 22.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="many">f != 0 @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 10~20, 30, 40, 50, 60, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
- <pluralRules locales="be bs hr ru sh sr uk">
- <pluralRule count="one">n mod 10 is 1 and n mod 100 is not 11</pluralRule>
- <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
- <pluralRule count="many">n mod 10 is 0 or n mod 10 in 5..9 or n mod 100 in 11..14</pluralRule>
- <!-- others are fractions -->
+ <pluralRules locales="be">
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 81.0, 101.0, 1001.0, …</pluralRule>
+ <pluralRule count="few">n % 10 = 2..4 and n % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 2.0, 3.0, 4.0, 22.0, 23.0, 24.0, 32.0, 33.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="many">n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.1, 1000.1, …</pluralRule>
</pluralRules>
<pluralRules locales="cs sk">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="few">n in 2..4</pluralRule>
+ <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="few">i = 2..4 and v = 0 @integer 2~4</pluralRule>
+ <pluralRule count="many">v != 0 @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
</pluralRules>
<pluralRules locales="pl">
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="few">n mod 10 in 2..4 and n mod 100 not in 12..14</pluralRule>
- <pluralRule count="many">n is not 1 and n mod 10 in 0..1 or n mod 10 in 5..9 or n mod 100 in 12..14</pluralRule>
- <!-- others are fractions -->
- <!-- and n mod 100 not in 22..24 from Tamplin -->
+ <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …</pluralRule>
+ <pluralRule count="many">v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+ <pluralRule count="other"> @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="sl">
- <pluralRule count="one">n mod 100 is 1</pluralRule>
- <pluralRule count="two">n mod 100 is 2</pluralRule>
- <pluralRule count="few">n mod 100 in 3..4</pluralRule>
- </pluralRules>
- <pluralRules locales="mt"> <!-- from Tamplin's data -->
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="few">n is 0 or n mod 100 in 2..10</pluralRule>
- <pluralRule count="many">n mod 100 in 11..19</pluralRule>
- </pluralRules>
- <pluralRules locales="mk"> <!-- from Tamplin's data -->
- <pluralRule count="one">n mod 10 is 1 and n is not 11</pluralRule>
- </pluralRules>
- <pluralRules locales="cy"> <!-- from http://www.saltcymru.org/wordpress/?p=99&lang=en -->
- <pluralRule count="zero">n is 0</pluralRule>
- <pluralRule count="one">n is 1</pluralRule>
- <pluralRule count="two">n is 2</pluralRule>
- <pluralRule count="few">n is 3</pluralRule>
- <pluralRule count="many">n is 6</pluralRule>
+ <pluralRule count="one">v = 0 and i % 100 = 1 @integer 1, 101, 201, 301, 401, 501, 601, 701, 1001, …</pluralRule>
+ <pluralRule count="two">v = 0 and i % 100 = 2 @integer 2, 102, 202, 302, 402, 502, 602, 702, 1002, …</pluralRule>
+ <pluralRule count="few">v = 0 and i % 100 = 3..4 or v != 0 @integer 3, 4, 103, 104, 203, 204, 303, 304, 403, 404, 503, 504, 603, 604, 703, 704, 1003, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="mt">
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="few">n = 0 or n % 100 = 2..10 @integer 0, 2~10, 102~107, 1002, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="many">n % 100 = 11..19 @integer 11~19, 111~117, 1011, … @decimal 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 111.0, 1011.0, …</pluralRule>
+ <pluralRule count="other"> @integer 20~35, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="mk">
+ <pluralRule count="one">v = 0 and i % 10 = 1 or f % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~10, 12~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.0, 1.2~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="cy">
+ <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="two">n = 2 @integer 2 @decimal 2.0, 2.00, 2.000, 2.0000</pluralRule>
+ <pluralRule count="few">n = 3 @integer 3 @decimal 3.0, 3.00, 3.000, 3.0000</pluralRule>
+ <pluralRule count="many">n = 6 @integer 6 @decimal 6.0, 6.00, 6.000, 6.0000</pluralRule>
+ <pluralRule count="other"> @integer 4, 5, 7~20, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="lag">
- <pluralRule count="zero">n is 0</pluralRule>
- <pluralRule count="one">n within 0..2 and n is not 0 and n is not 2</pluralRule>
+ <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+ <pluralRule count="one">i = 0,1 and n != 0 @integer 1 @decimal 0.1~1.6</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 2.0~3.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="shi">
- <pluralRule count="one">n within 0..1</pluralRule>
- <pluralRule count="few">n in 2..10</pluralRule>
+ <pluralRule count="one">i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04</pluralRule>
+ <pluralRule count="few">n = 2..10 @integer 2~10 @decimal 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 2.00, 3.00, 4.00, 5.00, 6.00, 7.00, 8.00</pluralRule>
+ <pluralRule count="other"> @integer 11~26, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~1.9, 2.1~2.7, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
- <pluralRules locales="br"> <!-- from http://unicode.org/cldr/trac/ticket/2886 -->
- <pluralRule count="one">n mod 10 is 1 and n mod 100 not in 11,71,91</pluralRule>
- <pluralRule count="two">n mod 10 is 2 and n mod 100 not in 12,72,92</pluralRule>
- <pluralRule count="few">n mod 10 in 3..4,9 and n mod 100 not in 10..19,70..79,90..99</pluralRule>
- <pluralRule count="many">n is not 0 and n mod 1000000 is 0</pluralRule>
+ <pluralRules locales="br">
+ <pluralRule count="one">n % 10 = 1 and n % 100 != 11,71,91 @integer 1, 21, 31, 41, 51, 61, 81, 101, 1001, … @decimal 1.0, 21.0, 31.0, 41.0, 51.0, 61.0, 81.0, 101.0, 1001.0, …</pluralRule>
+ <pluralRule count="two">n % 10 = 2 and n % 100 != 12,72,92 @integer 2, 22, 32, 42, 52, 62, 82, 102, 1002, … @decimal 2.0, 22.0, 32.0, 42.0, 52.0, 62.0, 82.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="few">n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99 @integer 3, 4, 9, 23, 24, 29, 33, 34, 39, 43, 44, 49, 103, 1003, … @decimal 3.0, 4.0, 9.0, 23.0, 24.0, 29.0, 33.0, 34.0, 103.0, 1003.0, …</pluralRule>
+ <pluralRule count="many">n != 0 and n % 1000000 = 0 @integer 1000000, … @decimal 1000000.0, 1000000.00, 1000000.000, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 5~8, 10~20, 100, 1000, 10000, 100000, … @decimal 0.0~0.9, 1.1~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="ksh">
- <pluralRule count="zero">n is 0</pluralRule>
- <pluralRule count="one">n is 1</pluralRule>
+ <pluralRule count="zero">n = 0 @integer 0 @decimal 0.0, 0.00, 0.000, 0.0000</pluralRule>
+ <pluralRule count="one">n = 1 @integer 1 @decimal 1.0, 1.00, 1.000, 1.0000</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="tzm">
- <pluralRule count="one">n in 0..1 or n in 11..99</pluralRule>
+ <pluralRule count="one">n = 0..1 or n = 11..99 @integer 0, 1, 11~24 @decimal 0.0, 1.0, 11.0, 12.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 20.0, 21.0, 22.0, 23.0, 24.0</pluralRule>
+ <pluralRule count="other"> @integer 2~10, 100~106, 1000, 10000, 100000, 1000000, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
<pluralRules locales="gv">
- <pluralRule count="one">n mod 10 in 1..2 or n mod 20 is 0</pluralRule>
+ <pluralRule count="one">n % 10 = 1 @integer 1, 11, 21, 31, 41, 51, 61, 71, 101, 1001, … @decimal 1.0, 11.0, 21.0, 31.0, 41.0, 51.0, 61.0, 71.0, 101.0, 1001.0, …</pluralRule>
+ <pluralRule count="two">n % 10 = 2 @integer 2, 12, 22, 32, 42, 52, 62, 72, 102, 1002, … @decimal 2.0, 12.0, 22.0, 32.0, 42.0, 52.0, 62.0, 72.0, 102.0, 1002.0, …</pluralRule>
+ <pluralRule count="few">n % 100 = 0,20,40,60 @integer 0, 20, 40, 60, 100, 120, 140, 160, 1000, 10000, 100000, 1000000, … @decimal 0.0, 20.0, 40.0, 60.0, 100.0, 120.0, 140.0, 160.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ <pluralRule count="other"> @integer 3~10, 13~19, 23, 103, 1003, … @decimal 0.1~0.9, 1.1~1.7, 10.0, 100.1, 1000.1, …</pluralRule>
</pluralRules>
<pluralRules locales="gd">
- <pluralRule count="one">n in 1,11</pluralRule>
- <pluralRule count="two">n in 2,12</pluralRule>
- <pluralRule count="few">n in 3..10,13..19</pluralRule>
+ <pluralRule count="one">n = 1,11 @integer 1, 11 @decimal 1.0, 11.0, 1.00, 11.00, 1.000, 11.000, 1.0000</pluralRule>
+ <pluralRule count="two">n = 2,12 @integer 2, 12 @decimal 2.0, 12.0, 2.00, 12.00, 2.000, 12.000, 2.0000</pluralRule>
+ <pluralRule count="few">n = 3..10,13..19 @integer 3~10, 13~19 @decimal 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0, 19.0, 3.00</pluralRule>
+ <pluralRule count="other"> @integer 0, 20~34, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~0.9, 1.1~1.6, 10.1, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="bm bo dz id ig ii in ja jbo jv jw kde kea km ko lkt lo ms my nqo sah ses sg th to vi wo yo zh">
+ <pluralRule count="other"> @integer 0~15, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="fil tl">
+ <pluralRule count="one">i = 0..1 and v = 0 @integer 0, 1</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="ca de en et fi gl it ji nl sv sw ur yi">
+ <pluralRule count="one">i = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="pt">
+ <pluralRule count="one">i = 1 and v = 0 or i = 0 and t = 1 @integer 1 @decimal 0.1, 0.01, 0.10, 0.001, 0.010, 0.100, 0.0001, 0.0010, 0.0100, 0.1000</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.2~1.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="da">
+ <pluralRule count="one">n = 1 or t != 0 and i = 0,1 @integer 1 @decimal 0.1~1.6</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0~3.4, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="pt_PT">
+ <pluralRule count="one">n = 1 and v = 0 @integer 1</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="am bn fa gu hi kn mr zu">
+ <pluralRule count="one">i = 0 or n = 1 @integer 0, 1 @decimal 0.0~1.0, 0.00~0.04</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 1.1~2.6, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="is">
+ <pluralRule count="one">t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1~1.6, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="si">
+ <pluralRule count="one">n = 0,1 or i = 0 and f = 1 @integer 0, 1 @decimal 0.0, 0.1, 1.0, 0.00, 0.01, 1.00, 0.000, 0.001, 1.000, 0.0000, 0.0001, 1.0000</pluralRule>
+ <pluralRule count="other"> @integer 2~17, 100, 1000, 10000, 100000, 1000000, … @decimal 0.2~0.9, 1.1~1.8, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="bs hr sh sr">
+ <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, … @decimal 0.1, 1.1, 2.1, 3.1, 4.1, 5.1, 6.1, 7.1, 10.1, 100.1, 1000.1, …</pluralRule>
+ <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.2~0.4, 1.2~1.4, 2.2~2.4, 3.2~3.4, 4.2~4.4, 5.2, 10.2, 100.2, 1000.2, …</pluralRule>
+ <pluralRule count="other"> @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0, 0.5~1.0, 1.5~2.0, 2.5~2.7, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="ru">
+ <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …</pluralRule>
+ <pluralRule count="many">v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+ <pluralRule count="other"> @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
+ </pluralRules>
+ <pluralRules locales="uk">
+ <pluralRule count="one">v = 0 and i % 10 = 1 and i % 100 != 11 @integer 1, 21, 31, 41, 51, 61, 71, 81, 101, 1001, …</pluralRule>
+ <pluralRule count="few">v = 0 and i % 10 = 2..4 and i % 100 != 12..14 @integer 2~4, 22~24, 32~34, 42~44, 52~54, 62, 102, 1002, …</pluralRule>
+ <pluralRule count="many">v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14 @integer 0, 5~19, 100, 1000, 10000, 100000, 1000000, …</pluralRule>
+ <pluralRule count="other"> @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …</pluralRule>
</pluralRules>
</plurals>
</supplementalData>
'youhavenewmessages' => 'U het $1 (sien $2).',
'youhavenewmessagesfromusers' => "U het $1 van {{PLURAL:$3|'n ander gebruiker|$3 gebruikers}} ($2).",
'youhavenewmessagesmanyusers' => 'U het $1 van baie gebruikers ($2).',
-'newmessageslinkplural' => "{{PLURAL:$1|'n nuwe boodskap|nuwe boodskappe}}",
-'newmessagesdifflinkplural' => 'laaste {{PLURAL:$1|wysiging|wysigings}}',
+'newmessageslinkplural' => "{{PLURAL:$1|'n nuwe boodskap|999=nuwe boodskappe}}",
+'newmessagesdifflinkplural' => 'laaste {{PLURAL:$1|wysiging|999=wysigings}}',
'youhavenewmessagesmulti' => 'U het nuwe boodskappe op $1',
'editsection' => 'wysig',
'editold' => 'wysig',
# General errors
'error' => 'Fout',
'databaseerror' => 'Databasisfout',
+'databaseerror-text' => "'n Databasisfout het voorgekom. Dit kan op 'n fout in die sagteware dui.",
'databaseerror-textcl' => "'n Databasis-versoek het gefaal.",
'databaseerror-query' => 'SQL: $1',
'databaseerror-function' => 'Funksie: $1',
'cannotdelete-title' => 'Bladsy "$1" kan nie verwyder word nie',
'delete-hook-aborted' => "Die wysiging is deur 'n hoek gekanselleer.
Geen verduideliking is verskaf nie.",
+'no-null-revision' => 'Dit was nie moontlik om \'n nuwe leë weergawe vir bladsy "$1" maak nie',
'badtitle' => 'Ongeldige titel',
'badtitletext' => "Die bladsytitel waarvoor gevra is, is ongeldig, leeg, of
'n verkeerd geskakelde tussen-taal of tussen-wiki titel.",
'invalidtitle-knownnamespace' => 'Ongeldige titel met naamruimte "$2" en teks "$3"',
'invalidtitle-unknownnamespace' => 'Ongeldige titel met onbekende naamruimtenummer $1 en teks "$2"',
'exception-nologin' => 'Nie aangeteken nie',
-'exception-nologin-text' => 'U moet eers op hierdie wiki aanmeld alvorens u hierdie bladsy kan sien of die handeling kan uitvoer.',
+'exception-nologin-text' => '[[Special:Userlogin|Meld aan]] om hierdie bladsy te wys of om die handeling uit te voer.',
+'exception-nologin-text-manual' => 'U moet $1 om hierdie bladsy te wys of die handeling uit te voer.',
# Virus scanner
'virus-badscanner' => "Slegte konfigurasie: onbekende virusskandeerder: ''$1''",
'virus-unknownscanner' => 'onbekende antivirus:',
# Login and logout pages
-'logouttext' => "'''U is nou uitgeteken'''
+'logouttext' => "'''U is nou afgemeld'''
-U kan aanhou om {{SITENAME}} anoniem te gebruik; of u kan weer as dieselfde of 'n ander gebruiker <span class='plainlinks'>[$1 aanmeld]</span>.
-Dit is moontlik dat sommige bladsye nog sal aandui dat u steeds aangemeld is totdat u u webblaaier se kas skoonmaak.",
+Sommige bladsye kan moontlik nog aandui dat u steeds aangemeld is, totdat u u webblaaier se kas skoonmaak.",
'welcomeuser' => 'Welkom, $1!',
'welcomecreation-msg' => 'U gebruiker is geskep.
Moenie vergeet om u [[Special:Preferences|voorkeure vir {{SITENAME}}]] te stel nie.',
'gotaccount' => "Het u reeds 'n rekening? $1.",
'gotaccountlink' => 'Meld aan',
'userlogin-resetlink' => 'U besonderhede vergeet?',
-'userlogin-resetpassword-link' => 'Herstel u wagwoord',
+'userlogin-resetpassword-link' => 'Wagwoord vergeet?',
'helplogin-url' => 'Help:Aanmelding',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hulp met aanmelding]]',
+'userlogin-loggedin' => "U is reeds aangemeld as {{GENDER:$1|$1}}.
+Gebruik die onderstaande vorm om as 'n ander gebruiker aan te meld.",
'userlogin-createanother' => "Skep nog 'n rekening",
'createacct-join' => 'Verskaf u gegewens hieronder.',
'createacct-another-join' => 'Sleutel die nuwe rekening se inligting hier onder in:',
'login-abort-generic' => 'U is nie aangemeld nie. Die prosedure is gestaak.',
'loginlanguagelabel' => 'Taal: $1',
'suspicious-userlogout' => "U versoek om af te teken is geïgnoreer omdat dit lyk asof dit deur 'n gebreekte webleser of instaanbediener gestuur is.",
+'createacct-another-realname-tip' => 'Regte naam is opsioneel.
+As u dit verskaf, sal dit gebruik word om u erkenning vir u werk te gee.',
# Email sending
'php-mail-error-unknown' => 'Onbekende fout in PHP se mail()-funksie',
'newpassword' => 'Nuwe wagwoord',
'retypenew' => 'Tik nuwe wagwoord weer in',
'resetpass_submit' => 'Stel wagwoord en meld aan',
-'changepassword-success' => 'U wagwoord is suksesvol gewysig!
-Besig om u aan te meld...',
+'changepassword-success' => 'U wagwoord is suksesvol gewysig!',
'resetpass_forbidden' => 'Wagwoorde kannie gewysig word nie.',
'resetpass-no-info' => 'U moet ingeteken wees om hierdie bladsy direk te kan gebruik.',
'resetpass-submit-loggedin' => 'Verander wagwoord',
# Special:PasswordReset
'passwordreset' => 'Wagwoord herstel',
'passwordreset-text-one' => 'Voltooi hierdie vorm om u wagwoord te herstel.',
-'passwordreset-text-many' => '{{PLURAL:$1|Vul een van die velde in om u wagwoord te herstel.}}',
+'passwordreset-text-many' => "{{PLURAL:$1|Vul een van die velde in om 'n tydelike wagwoord per e-pos te ontvang.}}",
'passwordreset-legend' => 'Kry nuwe wagwoord',
'passwordreset-disabled' => 'Die herskik van U wagwoord is gedeaktiveer op hierdie wiki.',
'passwordreset-emaildisabled' => 'E-posfunksies is afgeskakel op hierdie wiki.',
'ok' => 'موافق',
'retrievedfrom' => 'مجلوبة من "$1"',
-'youhavenewmessages' => 'لك $1 ($2).',
-'youhavenewmessagesfromusers' => 'لديك $1 من {{PLURAL:$3|مستخدم واحد|مستخدم واحد|مستخدمين اثنين|$3 مستخدمين|$3 مستخدما|$3 مستخدم}} ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|لك}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|لديك}} $1 من {{PLURAL:$3|مستخدم واحد|مستخدم واحد|مستخدمين اثنين|$3 مستخدمين|$3 مستخدما|$3 مستخدم}} ($2).',
'youhavenewmessagesmanyusers' => 'لديك $1 من مستخدمين كثر ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|رسالة جديدة|999=رسائل جديدة}}',
'newmessagesdifflinkplural' => 'أحدث {{PLURAL:$1|تغيير|999=تغييرات}}',
'nextn-title' => '$1 {{PLURAL:$1|نتيجة|نتيجة}} تالية',
'shown-title' => 'عرض $1 {{PLURAL:$1|نتيجة|نتيجة}} لكل صفحة',
'viewprevnext' => 'عرض ($1 {{int:pipe-separator}} $2) ($3).',
-'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
-'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" في هذا الويكي!'''",
+'searchmenu-exists' => "'''توجد صفحة اسمها \"[[:\$1]]\" على هذه الويكي.''' {{PLURAL:\$2|0=|انظر ايضا نتائج البحث الأخرى.}}",
+'searchmenu-new' => "'''أنشئ الصفحة \"[[:\$1]]\" على هذه الويكي!''' {{PLURAL:\$2|0=|انظر أيضا الصفحة التي تم العثور عليها من بحثك.|انظر ايضا نتائج البحث.}}",
'searchprofile-articles' => 'صفحات المحتوى',
'searchprofile-project' => 'صفحات المساعدة والمشروع',
'searchprofile-images' => 'الوسائط المتعددة',
'limitreport-cputime-value' => '{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}',
'limitreport-walltime' => 'الزمن الحقيقي المستغرق',
'limitreport-walltime-value' => '{{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتان|$1 ثوان|$1 ثانية}}',
-'limitreport-postexpandincludesize-value' => '$1/$2 بايت',
-'limitreport-templateargumentsize-value' => '$1/$2 بايت',
+'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|بايت|بايت}}',
+'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|بايت|بايت}}',
# Special:ExpandTemplates
'expandtemplates' => 'فرد القوالب',
'gotaccount' => "ܐܝܬ ܠܟ ܚܘܫܒܢܐ؟ '''$1'''.",
'gotaccountlink' => 'ܥܘܠ',
'userlogin-resetlink' => 'ܐܬܢܫܝܬ ܝܕ̈ܥܬܐ ܕܥܠܠܐ؟',
-'userlogin-resetpassword-link' => 'Ü«Ü\9aÜ Ü¦ Ü¡Ü Ü¬Ü\90 Ü\95Ü¥Ü Ü Ü\90',
+'userlogin-resetpassword-link' => 'ܢܫܬ Ü¡Ü Ü¬Ü\90 Ü\95Ü¥Ü Ü Ü\90Ø\9f',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ܥܘܕܪܢܐ ܒܥܠܠܐ ܠܚܘܫܒܢܐ]]',
'createacct-join' => 'ܐܥܠ ܝܕ̈ܥܬܐ ܕܝܠܟ ܠܬܚܬ',
'createacct-emailrequired' => 'ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ',
'wrongpasswordempty' => 'ܡܠܬܐ ܕܥܠܠܐ ܕܐܥܠܬ ܣܦܝܩܬܐ ܐܝܬܝܗ.
ܒܒܥܘ ܡܢܟ ܕܬܢܣܐ ܙܒܢ ܐܚܪܝܢ.',
'passwordtooshort' => 'ܡܠܬܐ ܕܥܠܠܐ ܘܠܐ ܕܬܗܘܐ ܕܠܐ ܒܨܪ ܡܢ{{PLURAL:$1|ܐܬܘܬܐ ܚܕ|$1 ܐܬܘ̈ܬܐ}}.',
-'mailmypassword' => 'Ü«Ü\95ܪ Ü Ü\9d Ü¡Ü Ü¬Ü\90 Ü\9aÜ\95ܬÜ\90 Ü\95Ü¥Ü Ü Ü\90',
+'mailmypassword' => 'Ü£Ü\98Ü¡ Ü¡Ü Ü¬Ü\90 Ü\95Ü¥Ü Ü Ü\90 Ü\99Ü\92Ü¢ Ü\90Ü\9aܪÜ\9dÜ¢',
'passwordremindertitle' => 'ܡܠܬܐ ܕܥܠܠܐ ܙܒܢܢܝܬܐ ܚܕܬܐ ܠ{{SITENAME}}',
'noemail' => 'ܠܝܬ ܒܝܠܕܪܐ ܐܠܩܛܪܘܢܝܐ ܠܡܦܠܚܢܐ "$1".',
'mailerror' => 'ܦܘܕܐ ܒܫܘܕܪܐ ܕܒܝܠܕܪܐ: $1',
'revisiondelete' => 'ܫܘܦ/ܠܐ ܫܘܦ ܬܢܝܬ̈ܐ',
'revdelete-show-file-submit' => 'ܐܝܢ',
'revdelete-selected' => "'''{{PLURAL:$2|ܬܢܝܬܐ ܓܒܝܬܐ|ܬܢܝܬ̈ܐ ܓܒܝܬܐ}} ܕ [[:$1]]:'''",
-'revdelete-hide-text' => 'Ü\9bÜ«Ü\9d Ü\9fܬÜ\92ܬÜ\90 Ü\95ܬܢÜ\9dܬÜ\90',
+'revdelete-hide-text' => 'ܟܬܒܬܐ ܕܬܢܝܬܐ',
'revdelete-hide-image' => 'ܛܫܝ ܚܒܝܫܬ̈ܐ ܕܠܦܦܐ',
'revdelete-hide-name' => 'ܛܫܝ ܥܒܕܐ ܘܢܘܦܐ',
'revdelete-hide-comment' => 'ܫܚܠܦ ܟܪܝܘܬܐ ܕܫܘܚܠܦܐ',
'recentchanges-label-unpatrolled' => 'ܫܘܚܠܦܐ ܗܢܐ ܠܐ ܗܘ ܟܪܝܟܐ ܠܗܫܐ',
'recentchanges-label-plusminus' => 'ܥܓܪܐ ܕܦܐܬܐ ܐܫܬܚܠܦ ܒܗܢܐ ܡܢܝܢܐ ܡܢ ܒܝܛ̈',
'recentchanges-legend-heading' => "'''ܦܘܫܩܐ:'''",
-'recentchanges-legend-newpage' => '$1 - ܦܐܬܐ ܚܕܬܐ',
+'recentchanges-legend-newpage' => '(ܐܦ ܚܙܝ [[Special:NewPages|ܡܟܬܒܘܬܐ ܕܦܐܬܬ̈ܐ ܚܕ̈ܬܬܐ]])',
'rcnotefrom' => "ܠܬܚܬ ܫܘܚܠܦ̈ܐ ܕܡܢ '''$2''' (ܥܕ '''$1''' ܡܬܚܙܝܢ̈ܐ).",
'rclistfrom' => 'ܚܘܝ ܫܘܚܠܦ̈ܐ ܚܕ̈ܬܐ ܡܢ $1',
'rcshowhideminor' => '$1 ܫܘܚܠܦ̈ܐ ܙܥܘܪ̈ܐ',
'rcshowhidebots' => '$1 ܒܘܬ̈ܐ (Bots)',
-'rcshowhideliu' => '$1 Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¥Ü Ü\9dܠ̈ܐ',
+'rcshowhideliu' => '$1 Ü¡Ü¦Ü Ü\9aÜ¢Ì\88Ü\90 Ü¡Ü£Ü\93ܠ̈ܐ',
'rcshowhideanons' => '$1 ܡܦܠܚܢܐ ܠܐ ܝܕܝܥܐ',
'rcshowhidepatr' => '$1 ܫܘܚܠܦ̈ܐ ܬܢܝ̈ܐ',
'rcshowhidemine' => '$1 ܫܘܚܠܦ̈ܝ',
'upload_source_file' => ' (ܠܦܦܐ ܥܠ ܚܫܘܒܬܐ ܕܝܠܟ)',
# Special:ListFiles
-'listfiles-summary' => 'ܦܐܬܐ ܕܝܠܢܝܬܐ ܗܕܐ ܬܓܠܚ ܟܠ ܠܦܦ̈ܐ ܡܣܩ̈ܐ.
-ܐܡܬܝ ܕܬܨܦܐ ܒܝܕ ܡܦܠܚܢܐ ܬܓܠܚ ܨܚܚܐ ܐܚܪܝܐ ܒܠܚܘܕ ܕܠܦܦ̈ܐ ܡܣܩ̈ܐ ܒܝܕ ܗܢܐ ܡܦܠܚܢܐ.',
+'listfiles-summary' => 'ܦܐܬܐ ܕܝܠܢܝܬܐ ܗܕܐ ܬܓܠܚ ܟܠ ܠܦܦ̈ܐ ܡܣܩ̈ܐ.',
'listfiles_search_for' => 'ܒܨܝ ܥܠ ܫܡܐ ܕܡܝܕܝܐ:',
'imgfile' => 'ܠܦܦܐ',
'listfiles' => 'ܡܟܬܒܘܬܐ ܕܠܦܦ̈ܐ',
'contributions' => 'ܫܘܬܦܘ̈ܬܐ {{GENDER:$1|ܕܡܦܠܚܢܐ|ܕܡܦܠܚܢܬܐ}}',
'contributions-title' => 'ܫܘܬܦܘ̈ܬܐ ܕܡܦܠܚܢܐ ܠ$1',
'mycontris' => 'ܫܘܬܦܘ̈ܬܐ',
-'contribsub2' => 'Ü\95 $1 ($2)',
+'contribsub2' => 'Ü {{GENDER:$3|$1}} ($2)',
'uctop' => '(ܗܫܝܐ)',
'month' => 'ܡܢ ܝܪܚܐ ܕ (ܘܡܢ ܩܕܡ ܗܝܕܝܢ):',
'year' => 'ܡܢ ܫܢܬ (ܘܡܢ ܩܕܡ ܗܝܕܝܢ):',
# Special:SpecialPages
'specialpages' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ',
'specialpages-note' => '* ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܥܝܕ̈ܝܬܐ.
-* <span class="mw-specialpagerestricted">ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܕܩܝܘܡ̈ܐ ܒܠܚܘܕ.</span>',
+* <span class="mw-specialpagerestricted">ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܕܩܝܘܡ̈ܐ.</span>',
'specialpages-group-maintenance' => 'ܬܫܪܪ̈ܐ ܕܚܕܬܘܬܐ',
'specialpages-group-other' => 'ܦܐܬܬ̈ܐ ܕ̈ܝܠܢܝܬܐ ܐܚܪ̈ܢܝܬܐ',
'specialpages-group-login' => 'ܥܘܠ / ܒܪܝ ܚܘܫܒܢܐ',
'ok' => 'موافئ',
'retrievedfrom' => 'اتجابت من "$1"',
-'youhavenewmessages' => 'عندك $1 ($2).',
-'youhavenewmessagesfromusers' => 'عندك $1 من {{PLURAL:${{PLURAL:$3|}}3|يوزر واحد|يوزر واحد|اتنين يوزر |$3 مستخدمين|$3 يوزر}} ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|عندك}} $1 ($2).',
+'youhavenewmessagesfromusers' => '{{PLURAL:$4|عندك}} $1 من {{PLURAL:${{PLURAL:$3|}}3|يوزر واحد|يوزر واحد|اتنين يوزر |$3 مستخدمين|$3 يوزر}} ($2).',
'youhavenewmessagesmanyusers' => 'عندك $1 من يوزرات كتير ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|رساله جديده|999=رسايل جديده}}',
'newmessagesdifflinkplural' => '{{PLURAL:$1|تعديل|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}',
'nextn-title' => '{{PLURAL:$1|النتيجه|النتايج}} $1 اللى بعد كدا.',
'shown-title' => 'اعرض $1 {{PLURAL:$1|نتيجه|نتايج}} فى كل صفحه',
'viewprevnext' => 'شوف ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-exists' => "*الصفحة '''[[$1]]'''",
-'searchmenu-new' => "'''ابتدى الصفحه \"[[:\$1]]\" ع الويكى دا!'''",
+'searchmenu-exists' => "'''فيه صفحه اسمها \"[[:\$1]]\" على الويكى ده.''' {{PLURAL:\$2|0=|بص كمان على نتايج البحث التانيه.}}",
+'searchmenu-new' => "'''ابتدى الصفحه \"[[:\$1]]\" ع الويكى دا!''' {{PLURAL:\$2|0=|بص كمان على الصفحه اللى لقيناها من بحثك.|بص كمان على نتايج البحث اللى لقيناها.}}",
'searchprofile-articles' => 'صفحات محتوى',
'searchprofile-project' => 'صفحات المساعده و المشروع',
'searchprofile-images' => 'مالتيميديا',
'savedprefs' => 'التفضيلات بتاعتك اتحفظت.',
'timezonelegend' => 'منطقة التوقيت',
'localtime' => 'التوقيت المحلى',
-'timezoneuseserverdefault' => 'استخدÙ\85 اÙ\81تراض اÙ\84سرÙ\81ر',
+'timezoneuseserverdefault' => 'استخدÙ\85 اÙ\84Ù\88Ù\8aÙ\83Ù\89 اÙ\84اÙ\81تراضÙ\89 ($1)',
'timezoneuseoffset' => 'تانى (حدد الفرق)',
'servertime' => 'وقت السيرفر',
'guesstimezone' => 'دخل التوقيت من البراوزر',
ماينفعش الرجوع فى التعديل دا.',
'prefs-emailconfirm-label' => 'التأكد من الايميل:',
'youremail' => 'الايميل:',
-'username' => 'اسم اليوزر:',
-'uid' => 'رقم اليوزر:',
-'prefs-memberingroups' => 'عضو فى {{PLURAL:$1|مجموعة|مجموعة}}:',
+'username' => '{{GENDER:$1|اسم اليوزر}}:',
+'uid' => 'رقم {{GENDER:$1|اليوزر}}:',
+'prefs-memberingroups' => '{{GENDER:$2|عضو}} فى {{PLURAL:$1|مجموعه|مجموعات}}:',
'prefs-registration' => 'وقت التسجيل:',
'yourrealname' => 'الاسم الحقيقى:',
'yourlanguage' => 'اللغة:',
'userrights-lookup-user' => 'إدارة مجموعات اليوزر',
'userrights-user-editname' => 'دخل اسم يوزر:',
'editusergroup' => 'تعديل مجموعات اليوزر',
-'editinguser' => "تغيير حقوق االيوزر بتاعة اليوزر'''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'editinguser' => "تغيير حقوق اليوزر بتاعه اليوزر '''[[User:$1|$1]]''' $2",
'userrights-editusergroup' => 'تعديل مجموعات اليوزر',
'saveusergroups' => 'حفظ مجموعات اليوزر',
'userrights-groupsmember' => 'عضو في:',
'recentchanges-label-minor' => 'ده تعديل صغير',
'recentchanges-label-bot' => 'التعديل ده عمله بوت',
'recentchanges-label-unpatrolled' => 'التعديل ده مإتراجعش لسه',
-'recentchanges-legend-newpage' => '$1 - صفحه جديده',
+'recentchanges-legend-newpage' => '(بص كمان على [[Special:NewPages|قايمه الصفحات الجديده]])',
'rcnotefrom' => "دى التعديلات من '''$2''' (ل '''$1''' معروضه).",
'rclistfrom' => 'اظهر التعديلات بدايه من $1',
'rcshowhideminor' => '$1 تعديلات صغيره',
'filetype-bad-ie-mime' => ' المف دا ماتحملش لأن الإنترنت إكسبلورر ح يكتشفه ك"$1", وهوه نوع ملف ممنوع ومن المحتمل انه يكون خطر.',
'filetype-unwanted-type' => "'''\".\$1\"''' هو مش نوع ملف مرغوب فيه.
{{PLURAL:\$3|نوع الملف المفضل هو|أنواع الملفات المفضلة هي}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' مش نوع ملف مسموح بيه.
-{{PLURAL:\$3|نوع الملف المسموح بيه هو|أنواع الملفات المسموح بيها هي}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|مش نوع ملف مسموح بيه|مش انواع ملفات مسموح بيها}}.
+{{PLURAL:$3|نوع الملف المسموح بيه هو|أنواع الملفات المسموح بيها هي}} $2.',
'filetype-missing' => 'الملف مالوش امتدا(مثلا ".jpg").',
'file-too-large' => 'الملف كان كبير جدا.',
'filetype-banned' => 'نوع الملف ده ممنوع.',
'linksearch-pat' => 'نظام التدوير:',
'linksearch-ns' => 'النطاق:',
'linksearch-ok' => 'تدوير',
-'linksearch-text' => 'الكروت الخاصة زى "*.wikipedia.org" ممكن تستعمل.<br />
-البروتوكولات المدعومة: <code>$1</code>',
+'linksearch-text' => 'الكروت الخاصه زى "*.wikipedia.org" ممكن تستخدم.
+محتاجه على الاقل لدومين مستوى أعلى، زى "*.org".<br />
+{{PLURAL:$2|البروتوكول المدعوم|البروتوكولات المدعومه}}: <code>$1</code> (الافتراضى http:// لو ما اتحددش بروتوكول).',
'linksearch-line' => '$1 موصوله من $2',
'linksearch-error' => 'الكروت الخاصة ممكن تبان بس فى بداية اسم المضيف',
'mailnologintext' => 'لازم تعمل [[Special:UserLogin|تسجيل الدخول]] و تدخل ايميل صحيح فى صفحة [[Special:Preferences|التفضيلات]] علشان تقدر تبعت ايميلات لليوزرز التانيين.',
'emailuser' => 'ابعت ايميل لليوزر دا',
'emailpage' => 'ابعت ايميل لليوزر ده',
-'emailpagetext' => 'ممكن تستعمل الاستمارة اللى تحت دى عشان تيعت ايميل لليوزر دا.
-عنوان الايميل اللى كتبته فى [[Special:Preferences|التفضيلات بتاعتك]] ح يظهر على انه عنوان الاستمارة و بكدة اللى حيستقبله ح يقدر يرد على الايميل.',
+'emailpagetext' => 'ممكن تستعمل الاستمارة اللى تحت دى عشان تيعت ايميل {{GENDER:$1|لليوزر}} دا.
+عنوان الايميل اللى كتبته فى [[Special:Preferences|التفضيلات بتاعتك]] ح يظهر على انه عنوان الاستمارة، و بكدة اللى حيستقبله ح يقدر يرد على الايميل.',
'usermailererror' => 'البريد رجع غلط:',
-'defemailsubject' => 'Ø¥Ù\8aÙ\85Ù\8aÙ\84 Ù\85Ù\86 {{SITENAME}}',
+'defemailsubject' => 'اÙ\8aÙ\85Ù\8aÙ\84 {{SITENAME}} Ù\85Ù\86 اÙ\84Ù\8aÙ\88زر "$1"',
'noemailtitle' => 'مافيش عنوان ايميل',
'noemailtext' => 'اليوزر دا ما كتبش االايميل بتاعه صح .',
'nowikiemailtitle' => 'الايميلات مش مسموح بيها',
'watchmethod-list' => 'التشييك فى الصفحات المتراقبة على التعديلات الاخيرة',
'watchlistcontains' => 'لستة المراقبة بتاعتك فيها $1 {{PLURAL:$1|صفحة|صفحات}}.',
'iteminvalidname' => "مشكلة فى '$1'، اسم مش صحيح...",
-'wlnote' => "تحت فى {{PLURAL:$1|آخر تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|ساعة|'''$2''' ساعة}}.",
+'wlnote' => "تحت فى {{PLURAL:$1|آخر تغيير|آخر '''$1''' تغيير}} فى آخر {{PLURAL:$2|ساعه|'''$2''' ساعه}}، من الوقت $3، $4.",
'wlshowlast' => 'عرض اخر $1 ساعات $2 ايام $3',
'watchlist-options' => 'اختيارات قايمة المراقبة',
'undeletedrevisions' => 'رجع تانى {{PLURAL:$1|تعديل واحد|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديل}}',
'undeletedrevisions-files' => '{{PLURAL:$1|1 نسخة|$1 نسخة}} و {{PLURAL:$2|1 ملف|$2 ملف}} رجعو تاني',
'undeletedfiles' => '{{PLURAL:$1|ملف|ملفات}} $1 رجعو تاني',
-'cannotundelete' => 'الترجيع ما نفعش :ممكن يكون فى حد تانى رجع الصفحة قبل كدا.',
+'cannotundelete' => 'الترجيع مانفعش:
+$1',
'undeletedpage' => "'''اترجع $1'''
بص على [[Special:Log/delete|سجل المسح]] علشان تشوف عمليات المسح و الترجيع الاخيرة.",
الصفحة الهدف "[[:$1]]" موجودة فعلا.
انت عايز تمسحها علشان تقدر تنقلها؟',
'delete_and_move_confirm' => 'ايوة، امسح الصفحة',
-'delete_and_move_reason' => 'اتمسحت علشان تسمح للنقل',
+'delete_and_move_reason' => 'اتمسحت علشان تسمح بالنقل من "[[$1]]"',
'selfmove' => 'عنوان المصدر والهدف هو نفسه؛
مش ممكن نقل الصفحة على نفسها.',
'immobile-source-namespace' => 'غير قادر على نقل الصفحات فى النطاق "$1"',
'returnto' => '$1লৈ ঘূৰি যাওক ।',
'tagline' => '{{SITENAME}}ৰ পৰা',
'help' => 'সহায়',
-'search' => 'সন্ধান',
+'search' => 'সন্ধান কৰক',
'searchbutton' => 'সন্ধান কৰক',
'go' => 'যাওক',
'searcharticle' => 'যাওক',
'resettokens-legend' => "ট'কেন ৰিছে'ট কৰক",
'resettokens-tokens' => "ট'কেনসমূহ:",
'resettokens-token-label' => '$1 (বর্তমান: $2)',
+'resettokens-watchlist-token' => "[[Special:Watchlist|আপোনাৰ লক্ষ্যতালিকাৰ পৃষ্ঠাৰ সালসলনিৰ]] ৱেব ফীডৰ বাবে ট'কেন (Atom/RSS)",
'resettokens-done' => "ট'কেন ৰিছে'ট কৰা হ'ল।",
'resettokens-resetbutton' => "নিৰ্বাচিত ট'কেনসমূহ ৰিছে'ট কৰক",
'cantcreateaccount-text' => "আই পি ঠিকনা ('''$1''')ৰ পৰা একাউণ্ট সৃষ্টিত [[User:$3|$3]]’য়ে বাধা প্ৰদান কৰিছে ।
$3 য়ে আগবঢ়োৱা ইয়াৰ কাৰণ হৈছে ''$2''",
+'cantcreateaccount-range-text' => " $3 য়ে ''$2'' বুলি কাৰণ দিছে",
# History pages
'viewpagelogs' => 'এই পৃষ্ঠাৰ অভিলেখ চাওক ।',
'pageswithprop-text' => 'বিশেষ পৃষ্ঠা উপাদান ব্যৱহাৰ কৰা পৃষ্ঠাসমূহ ইয়াত তালিকাভুক্ত কৰা হৈছে।',
'pageswithprop-prop' => 'উপাদান নাম:',
'pageswithprop-submit' => 'যাওক',
+'pageswithprop-prophidden-binary' => 'বাইনেৰী প্ৰপাৰ্টী মূল্য লুকোৱা হৈছে ($1)',
'doubleredirects' => 'দ্বি-পুনঃনিৰ্দেশিত',
'doubleredirectstext' => 'আন পুনৰ্নিদেশনা পৃষ্ঠালৈ পুনৰ্নিৰ্দেশিত পৃষ্ঠাসমূহ এই তালিকাত দিয়া হৈছে ।
'ninterwikis' => '$1 {{PLURAL:$1|ইণ্টাৰৱিকি|ইণ্টাৰৱিকিসমূহ}}',
'nlinks' => '$1 {{PLURAL:$1|সংযোগ|সংযোগ}}',
'nmembers' => '{{PLURAL:$1|সদস্য|$1 সদস্যবৃন্দ}}',
-'nmemberschanged' => '$1 → $2 {{PLURAL:$2|জন সদস্য|জন সদস্য}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|জন সদস্য}}',
'nrevisions' => '$1টা {{PLURAL:$1|সংশোধন|সংশোধন}}',
'nviews' => '$1 {{PLURAL:$1|টা দৰ্শন|টা দৰ্শন}}',
'nimagelinks' => '$1 {{PLURAL:$1|খন পৃষ্ঠাত|খন পৃষ্ঠাত}} ব্যৱহৃত',
'mailnologin' => 'পাওঁতাৰ ঠিকনা নাই',
'mailnologintext' => 'আন সদস্যক ই-মেইল পঠিয়াবলৈ আপুনি [[Special:UserLogin|লগ্ ইন]] কৰিব লাগিব আৰু আপোনাৰ [[Special:Preferences|পছন্দসমূহত]] এটা বৈধ ই-মেইল ঠিকনা থাকিব লাগিব ।',
'emailuser' => 'এই সদস্যজনলৈ ই-মেইল পঠিয়াওক',
-'emailuser-title-target' => '{{GENDER:$1|সদসà§\8dযà¦\9cনà¦\95}} ইমেইল পঠিয়াওক',
+'emailuser-title-target' => '{{GENDER:$1|সদসà§\8dযà¦\9cনলà§\88}} ইমেইল পঠিয়াওক',
'emailuser-title-notarget' => 'ব্যৱহাৰকাৰী ই-পত্ৰ প্ৰেৰণ কৰক',
'emailpage' => 'ই-পত্ৰ ব্যৱহাৰকাৰী',
'emailpagetext' => 'তলৰ প্ৰপত্ৰখন ব্যৱহাৰ কৰি আপুনি এই {{GENDER:$1|সদস্যজনলৈ}} ই-মেইল পঠাব পাৰে ।
মেইল: $PAGEEDITOR_EMAIL
ৱিকি: $PAGEEDITOR_WIKI
-আপুনি এই পৃষ্ঠাখন নোচোৱালৈকে আন সালসলনিৰ কোনো জাননী দিয়া নহ’ব।
-আপুনি আপোনাৰ লক্ষ্য-তালিকাৰ পৃষ্ঠাবোৰৰ জাননী ফ্লেগ পূৰ্বৰ অৱস্থালৈও ঘূৰাই নিব পাৰে ।
+আপুনি এই পৃষ্ঠাটো প্ৰৱেশ কৰি নোচোৱালৈকে আন সালসলনিৰ কোনো জাননী দিয়া নহ’ব। আপুনি আপোনাৰ লক্ষ্য-তালিকাৰ পৃষ্ঠাবোৰৰ জাননী ফ্লেগ পূৰ্বৰ অৱস্থালৈও ঘূৰাই নিব পাৰে ।
আপোনাৰ {{SITENAME}} জাননী ব্যৱস্থা
--
-à¦\86পà§\8bনাৰ à¦\87-মà§\87à¦\87ল à¦\9cাননà§\80 à¦\9bà§\87à¦\9fিà¦\82 সলনি à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ ই-মেইল জাননী ছেটিং সলনি কৰিবলৈ চাওক
{{canonicalurl:{{#special:Preferences}}}}
-à¦\86পà§\8bনাৰ লà¦\95à§\8dষà§\8dয-তালিà¦\95াৰ à¦\9bà§\87à¦\9fিà¦\82 সলনি à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ লক্ষ্য-তালিকাৰ ছেটিং সলনি কৰিবলৈ চাওক
{{canonicalurl:{{#special:EditWatchlist}}}}
-à¦\86পà§\8bনাৰ লà¦\95à§\8dষà§\8dয-তালিà¦\95াৰ পৰা পà§\83ষà§\8dঠা বিলà§\8bপ à¦\95ৰিবলà§\88 à¦\8fà¦\87à¦\96ন à¦\9aাà¦\93à¦\95
+আপোনাৰ লক্ষ্য-তালিকাৰ পৰা পৃষ্ঠা বিলোপ কৰিবলৈ চাওক
$UNWATCHURL
প্ৰতিক্ৰিয়া আৰু অধিক সহযোগিতাৰ বাবে:
'sorbsreason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।',
'sorbs_create_account_reason' => '{{SITENAME}}ত ব্যৱহাৰ কৰা DNSBLত আপোনাৰ আই.পি. ঠিকনা মুক্ত প্ৰক্সী হিছাপে তালিকাভুক্ত হৈ আছে ।
আপুনি একাউণ্ট সৃষ্টি কৰিব নোৱাৰে',
+'xffblockreason' => "X-Forwarded-For header-ত থকা আপোনাৰ বা আপুনি ব্যৱহাৰ কৰি থকা প্ৰক্সী চাৰ্ভাৰৰ এটা আই পি ঠিকনা বাৰণ কৰা হৈছে। বাৰণ কৰাৰ কাৰণ হ'ল: $1",
'cant-see-hidden-user' => 'আপুনি বাৰণ কৰিব বিচৰা সদস্যজনক ইতিমধ্যেই বাৰণ কৰি গোপন কৰা হৈছে ।
যিহেতু আপোনাৰ সদস্যগোপনতা অধিকাৰ নাই, আপুনি সদস্যজনৰ প্ৰতিবন্ধক চাব বা সম্পাদনা কৰিব নোৱাৰে ।',
'ipbblocked' => 'আপুনি আন সদস্যক অৱৰোধ কৰিব বা আঁতৰাব নোৱাৰে, কাৰণ আপুনি নিজেই বাধাপ্ৰাপ্ত অৱস্থাত আছে',
এই নিশ্চিতকৰণ সংকেতৰ ম্যাদ $4ত উকলিব ।',
'confirmemail_body_set' => 'কোনোবাই (সম্ভৱতঃ আপুনি) আই.পি. ঠিকনা $1ৰ পৰা {{SITENAME}}ত
-একাউণ্ট "$2"ৰ ই-মেইল ঠিকনা এইটো প্ৰদান কৰিছে ।
+একাউণ্ট "$2"ৰ ইমেইল ঠিকনা এইটো প্ৰদান কৰিছে ।
-à¦\8fà¦\87 à¦\8fà¦\95াà¦\89ণà§\8dà¦\9f à¦\86পà§\8bনাৰ হয়নà§\87 নহয় নিশà§\8dà¦\9aিত à¦\95ৰাৰ বাবà§\87 à¦\86ৰà§\81 {{SITENAME}}ত à¦\87-মà§\87à¦\87ল বà§\88শিষà§\8dà¦\9fসমà§\82হ পà§\81নৰ সà¦\95à§\8dৰিয় à¦\95ৰাৰ বাবà§\87
-à¦\86পà§\8bনাৰ বà§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 সà¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\81লক:
+এই একাউণ্ট আপোনাৰ হয়নে নহয় নিশ্চিত কৰাৰ বাবে আৰু {{SITENAME}}ত ই-মেইল বৈশিষ্টসমূহ সক্ৰিয় কৰাৰ বাবে
+à¦\86পà§\8bনাৰ বà§\8dৰাà¦\89à¦\9cাৰত à¦\8fà¦\87 সà¦\82যà§\8bà¦\97à¦\9fà§\8b à¦\96à§\8bলক:
$3
-যদি একাউণ্টটো আপোনাৰ *নহয়*, তেন্তে ই-মেইল ঠিকনা নিশ্চিতকৰণ বাতিলৰ বাবে
+যদি একাউণ্টটো আপোনাৰ *নহয়*, তেন্তে ইমেইল ঠিকনা নিশ্চিতকৰণ বাতিলৰ বাবে
এই সংযোগটো চাওক:
$5
# Special:Redirect
'redirect' => 'ফাইল, সদস্য, পৃষ্ঠা বা সংশোধন আই ডি-ৰে পুনঃনিৰ্দেশ',
'redirect-legend' => 'এটা ফাইল বা পৃষ্ঠালৈ পুনঃনিৰ্দেশ',
-'redirect-summary' => 'এই বিশেষ পৃষ্ঠাটোৱে আপোনাক পুনঃনির্দেশিত কৰিছে অন্য এটা নথিপত্রলৈ (নথিপত্রৰ নাম), এটা পৃষ্ঠালৈ (পৃষ্ঠাৰ নাম), অথবা অন্য সদস্যৰ পৃষ্ঠালৈ(সংখ্যাৰে লিখা সদস্যৰ আইডি) ।',
+'redirect-summary' => 'এই বিশেষ পৃষ্ঠাটোৱে আপোনাক অন্য এটা ফাইললৈ (ফাইলৰ নাম), এটা পৃষ্ঠালৈ (সংশোধন আই ডি বা পৃষ্ঠা আই ডি), অথবা অন্য সদস্যৰ পৃষ্ঠালৈ (সদস্যৰ সাংখ্যিক আই ডি) পুনঃনির্দেশিত কৰিছে।
+ব্যৱহাৰ: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], বা [[{{#Special:Redirect}}/user/101]]।',
'redirect-submit' => 'যাওক',
'redirect-lookup' => 'চাওক:',
'redirect-value' => 'মূল্য:',
'specialpages' => 'বিশেষ পৃষ্ঠাসমূহ',
'specialpages-note-top' => 'ব্যাখ্যা',
'specialpages-note' => '* সাধাৰণ বিশেষ পৃষ্ঠাসমূহ।
-* <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।</span>
-* <span class="mw-specialpagecached">কেশ্ব কৰা বিশেষ পৃষ্ঠাসমূহ (অপ্ৰচলিতও হ\'ব পাৰে)।</span>',
+* <span class="mw-specialpagerestricted">সীমাবদ্ধ বিশেষ পৃষ্ঠাসমূহ।</span>',
'specialpages-group-maintenance' => 'তত্বাৱধানৰ কাৰ্যবিৱৰণীসমূহ',
'specialpages-group-other' => 'অন্যান্য বিশেষ পৃষ্ঠাসমূহ',
'specialpages-group-login' => 'প্ৰৱেশ/একাউণ্ট সৃষ্টি কৰক',
'tags' => 'সালসলনি টেগসমূহ চাওক',
'tag-filter' => '[[Special:Tags|টেগ]] ছেকনী:',
'tag-filter-submit' => 'সংশোধন',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|টেগ্}}]]: $2)',
'tags-title' => 'টেগসমূহ',
'tags-intro' => 'ছফ্টৱেৰে সম্পাদনা চিহ্নিত কৰিব পৰা টেগসমূহ আৰু সেইবোৰৰ অৰ্থ এই পৃষ্ঠাত তালিকাভুক্ত কৰা হৈছে।',
'tags-tag' => 'টেগ নাম',
'logentry-delete-delete' => " $3 পৃষ্ঠাখন $1ৰদ্বাৰা {{GENDER:$2|বিলোপ কৰা হ'ল}}",
'logentry-delete-restore' => "$3 পৃষ্ঠাখন $1 ৰদ্বাৰা {{GENDER:$2|পুনৰ্সংৰক্ষণ কৰা হ'ল}}",
'logentry-delete-event' => '$3: $4 -ত {{PLURAL:$5|এটা লগ ঘটনা|$5 লগ ঘটনাসমূহ}} -ৰ $1 পৰিৱৰ্তন কৰা দৃশ্যমানতা',
-'logentry-delete-revision' => 'পৃষ্ঠা $3: $4ত {{PLURAL:$5|এটা পুনৰীক্ষন|$5 পুনৰীক্ষনসমূহ}}ৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হ’ল',
+'logentry-delete-revision' => 'পৃষ্ঠা $3ত {{PLURAL:$5|এটা সংশোধন|$5 সংশোধনসমূহ}}ৰ দৃশ্যমানতা $1 {{GENDER:$2|য়ে সলালে}}: $4',
'logentry-delete-event-legacy' => "$3ত ল'গ ঘটনাসমূহৰ দৃশ্যমানতা $1 {{GENDER:$2|ৰদ্বাৰা সলোৱা হ'ল}}",
'logentry-delete-revision-legacy' => 'পৃষ্ঠা $3ত পুনৰীক্ষনসমূহৰ $1 দৃশ্যমানতা পৰিৱৰ্তন কৰা হল',
'logentry-suppress-delete' => '$1 সংকোচিত পৃষ্ঠা $3',
'recentchanges-label-bot' => 'Ining pagliwat pinaghimo bilang sarong bot',
'recentchanges-label-unpatrolled' => 'Ining pagliwat dae pa tabi pinagpatrolyahan',
'recentchanges-label-plusminus' => 'An kadakulaan nin pahina pinagliwat sa paagi kaining numero nin mga bayta',
+'recentchanges-legend-heading' => "'''Kabalaynan:'''",
'recentchanges-legend-newpage' => '(hilngon man [[Special:NewPages|listahan kan mga baguhong pahina]])',
'recentchanges-legend-plusminus' => "(''±saro-duwa-tolo'')",
'rcnotefrom' => "Sa ibaba iyo an mga kaliwatan poon kan '''$2''' (sagkod sa '''$1''' na ipinapahiling).",
An pagpupura kan nasambit na mga pahina dae pinagtutugot tanganing maiwasan an aksidenteng pagka-antala kan {{SITENAME}}.',
'delete-warning-toobig' => 'Ining pahina igwa nin dakulaong historiya sa pagliwat, minasobrang $1 {{PLURAL:$1|rebisyon|mga rebisyon}}.
An pagpupura kaini mapuwedeng makapag-antala sa mga operasyon kan datos-sarayan kan {{SITENAME}}; magpadagos tabi na igwang pag-iingat.',
+'deleting-backlinks-warning' => "'''Patanid:''' An ibang mga pahina nakatakod sa pahina na muya mong pagpupuraon.",
# Rollback
'rollback' => 'Mga paghihira na pabalík',
# Language selector for translatable SVGs
'img-lang-default' => '(panugmad na lengguwahe)',
-'img-lang-info' => 'Giboha ining imahe sa $1 $2.',
+'img-lang-info' => 'Giboha ining imahe sa $1. $2',
'img-lang-go' => 'Dumani',
# Table pager
'version-entrypoints-header-url' => 'Kilyawan',
# Special:Redirect
-'redirect' => 'Palikwatong sa paagi nin sagunson, paragamit, or rebisyon kan ID',
+'redirect' => 'Palikwata sa paagi nin sagunson, paragamit, pahina o rebisyon kan ID',
'redirect-legend' => 'Palikwatong pasiring sa sarong sagunson o pahina',
-'redirect-summary' => 'Ining espesyal na pahina minalikwat pasiring sa sarong sagunson (ipinagtao an ngaran kan sagunson), sarong pahina (ipinagtao an sarong rebisyon kan ID), o sarong pahina nin paragamit (ipinagtao an numerikong ID nin paragamit). Pinaggamitan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Ining espesyal na pahina minalikwat pasiring sa sarong sagunson (ipinagtao an pangaran nin sagunson), sarong pahina (ipinagtao an sarong rebisyon nin ID o pahina nin ID), o sarong pahina nin paragamit (ipinagtao an numerikong ID nin paragamit). Pinagkagamitan: [[{{#Special:Redirect}}/sagunson/Example.jpg]], [[{{#Special:Redirect}}/rebisyon/328429]], or [[{{#Special:Redirect}}/paragamit/101]].',
'redirect-submit' => 'Dumani',
'redirect-lookup' => 'Hanapon mo',
'redirect-value' => 'Halaga:',
'redirect-user' => 'ID nin Paragamit',
+'redirect-page' => 'ID kan pahina',
'redirect-revision' => 'Rebisyon kan Pahina',
'redirect-file' => 'Ngaran nin Sagunson',
'redirect-not-exists' => 'Halaga dae nanagboan',
'logentry-move-move-noredirect' => '$1 премести „$3“ като „$4“ без пренасочване',
'logentry-move-move_redir' => '$1 премести страницата $3 като $4 (върху пренасочване)',
'logentry-move-move_redir-noredirect' => '$1 премести върху пренасочване „$3“ като „$4“ без пренасочване',
-'logentry-patrol-patrol' => '$1 отбеляза като патрулирана версия $4 на страницата „$3“',
-'logentry-patrol-patrol-auto' => '$1 автоматично отбеляза като патрулирана версия $4 на страницата $3',
+'logentry-patrol-patrol' => '$1 {{GENDER:$2|отбеляза}} като патрулирана версия $4 на страницата „$3“',
+'logentry-patrol-patrol-auto' => '$1 автоматично {{GENDER:$2|отбеляза}} като патрулирана версия $4 на страницата $3',
'logentry-newusers-newusers' => 'Потребителската сметка $1 беше {{GENDER:$2|създадена}}',
'logentry-newusers-create' => 'Потребителската сметка $1 беше {{GENDER:$2|създадена}}',
'logentry-newusers-create2' => '$1 {{GENDER:$2|създаде}} потребителска сметка $3',
'recentchanges-summary' => "Dre ar bajenn-mañ e c'hallit heuliañ ar c'hemmoù diwezhañ bet degaset d'ar wiki.",
'recentchanges-noresult' => "N'eus bet kemm ebet a glot gant an dezverkoù-se e-pad ar prantad diferet.",
'recentchanges-feed-description' => "Heuilhit ar c'hemmoù diwezhañ er wiki el lusk-mañ.",
-'recentchanges-label-newpage' => "Gant ar c'hemm-mañ eo bet krouet ur bajenn nevez.",
+'recentchanges-label-newpage' => "Gant ar c'hemm-mañ ez eus bet krouet ur bajenn nevez.",
'recentchanges-label-minor' => "Ur c'hemm dister eo hemañ",
'recentchanges-label-bot' => "Gant ur bot eo bet degaset ar c'hemm-mañ.",
'recentchanges-label-unpatrolled' => "N'eo ket bet gwiriet ar c'hemm-mañ evit c'hoazh.",
-'recentchanges-label-plusminus' => 'Kemmet he deus ment ar bajenn eus an niver-se a bitoù',
+'recentchanges-label-plusminus' => 'Kemmet eo ment ar bajenn eus an niver-mañ a oktedoù',
'recentchanges-legend-newpage' => '(gwelet ivez [[Dibar:PajennoùNevez|roll ar pajennoù nevez krouet]])',
'rcnotefrom' => "Setu aze roll ar c'hemmoù c'hoarvezet abaoe an '''$2''' ('''$1''' d'ar muiañ).",
'rclistfrom' => "Diskouez ar c'hemmoù diwezhañ abaoe an $1.",
'filehist-comment' => 'Notenn',
'filehist-missing' => 'Restr diank',
'imagelinks' => 'Implij ar restr',
-'linkstoimage' => "Liammet eo {{PLURAL:$1|ar bajenn-mañ|an $1 pajenn-mañ}} d'ar restr-mañ :",
+'linkstoimage' => 'Liammet eo {{PLURAL:$1|ar bajenn-mañ|an $1 pajenn-mañ}} ouzh ar restr-mañ :',
'linkstoimage-more' => "Ouzhpenn $1 {{PLURAL:$1|bajenn zo liammet ouzh|pajenn zo liammet ouzh}} ar restr-mañ.
Ne laka ar roll-mañ war wel nemet {{PLURAL:$1|ar bajenn gentañ liammet ouzh|an $1 pajenn gentañ liammet ouzh}} ar rest-mañ.
Ur [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
'article' => 'Članak',
'newwindow' => '(otvara se u novom prozoru)',
'cancel' => 'Poništite',
-'moredotdotdot' => 'Još...',
+'moredotdotdot' => 'Više...',
'morenotlisted' => 'Ovaj spisak nije kompletan.',
'mypage' => 'Korisnička stranica',
'mytalk' => 'Razgovor',
'youhavenewmessages' => 'Imate $1 ($2).',
'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika}} ($2).',
'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|nove poruke}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|posljednja izmjena|posljednje izmjene}}',
+'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|999=nove poruke}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|posljednja izmjena|999=posljednje izmjene}}',
'youhavenewmessagesmulti' => 'Imate nove poruke na $1',
'editsection' => 'uredi',
'editold' => 'uredi',
'passwordtooshort' => 'Šifra mora imati najmanje {{PLURAL:$1|1 znak|$1 znaka|$1 znakova}}.',
'password-name-match' => 'Vaša šifra mora biti različita od Vašeg korisničkog imena.',
'password-login-forbidden' => 'Korištenje ovih korisničkih imena i šifara je zabranjeo.',
-'mailmypassword' => 'Pošalji mi novu šifru',
+'mailmypassword' => 'Poništi šifru/lozinku',
'passwordremindertitle' => 'Nova privremena šifra za {{SITENAME}}',
'passwordremindertext' => 'Neko (vjerovatno Vi, sa IP adrese $1) je zahtjevao da vam pošaljemo novu šifru za {{SITENAME}} ($4). Privremena šifra za korisnika "$2" je napravljena i glasi "$3". Ako ste to željeli, sad treba da se prijavite i promjenite šifru.
Vaša privremena šifra će isteči za {{PLURAL:$5|$5 dan|$5 dana}}.
# Special:PasswordReset
'passwordreset' => 'Poništavanje šifre',
'passwordreset-text-one' => 'Ispunite ovaj obrazac da biste resetovali Vašu šifru/lozinku.',
-'passwordreset-text-many' => '{{PLURAL:$1|Ispunite jedno od polja kako bi ste resetirali svoju šifru/lozinku.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Ispunite jedno od polja kako bi ste dobili privremenu šifru/lozinku putem e-pošte.}}',
'passwordreset-legend' => 'Poništi šifru',
'passwordreset-disabled' => 'Poništavanje šifre je onemogućeno na ovoj wiki.',
'passwordreset-emaildisabled' => 'E-pošta je onemogućena na ovom wikiju.',
'revdelete-hide-user' => 'Korisničko ime urednika/IP',
'revdelete-hide-restricted' => 'Ograniči podatke za administratore kao i za druge korisnike',
'revdelete-radio-same' => '(ne mijenjaj)',
-'revdelete-radio-set' => 'Vidljivo',
-'revdelete-radio-unset' => 'Sakriveno',
+'revdelete-radio-set' => 'Sakriveno',
+'revdelete-radio-unset' => 'Vidljivo',
'revdelete-suppress' => 'Sakrij podatke od administratora kao i od drugih',
'revdelete-unsuppress' => 'Ukloni ograničenja na vraćenim revizijama',
'revdelete-log' => 'Razlog:',
'powersearch-togglenone' => 'Ništa',
'search-external' => 'Vanjska pretraga',
'searchdisabled' => '<p>Izvinjavamo se! Puno pretraga teksta je privremeno onemogućena. U međuvremenu, možete koristiti Google za pretragu. Indeks može biti stariji.',
+'search-error' => 'Dogodila se greška prilikom pretraživanja: $1',
# Preferences page
'preferences' => 'Postavke',
'recentchanges-label-bot' => 'Ova izmjenu je načinio bot',
'recentchanges-label-unpatrolled' => 'Ova izmjena još nije patrolirana',
'recentchanges-label-plusminus' => 'Veličina stranice je se promjenila za ovoliko bajtova',
+'recentchanges-legend-heading' => "'''Legenda:'''",
'recentchanges-legend-newpage' => '(također pogledajte [[Special:NewPages|spisak novih stranica]])',
'rcnotefrom' => 'Ispod su izmjene od <b>$2</b> (do <b>$1</b> prikazano).',
'rclistfrom' => 'Prikaži nove izmjene počev od $1',
'redirect-submit' => 'Idi',
'redirect-value' => 'Vrijednost:',
'redirect-user' => 'Korisnički ID',
+'redirect-page' => 'ID stranice',
'redirect-revision' => 'Verzija stranice',
'redirect-file' => 'Naziv datoteke',
'redirect-not-exists' => 'Vrijednost nije pronađena',
# Special:SpecialPages
'specialpages' => 'Posebne stranice',
+'specialpages-note-top' => 'Legenda',
'specialpages-note' => '* Normalne posebne stranice.
* <strong class="mw-specialpagerestricted">Zaštićene posebne stranice.</strong>',
'specialpages-group-maintenance' => 'Izvještaji za održavanje',
'noemailcreate' => "Has d'indicar una adreça de correu electrònic vàlida",
'passwordsent' => "S'ha enviat una nova contrasenya a l'adreça electrònica registrada per «$1».
Inicieu una sessió després que la rebeu.",
-'blocked-mailpassword' => 'La vostra adreça IP ha estat blocada. Se us ha desactivat la funció de recuperació de contrasenya per a prevenir abusos.',
+'blocked-mailpassword' => "S'ha blocat la vostra adreça IP. Se us ha desactivat la funció de recuperació de contrasenya per a prevenir abusos.",
'eauthentsent' => "S'ha enviat un correu electrònic a la direcció especificada. Abans no s'enviï cap altre correu electrònic a aquesta adreça, cal verificar que és realment vostra. Per tant, cal que seguiu les instruccions presents en el correu electrònic que se us ha enviat.",
'throttled-mailpassword' => "Ja se us ha enviat un correu electrònic de reinicialització de contrasenya en {{PLURAL:$1|l'última hora|les últimes $1 hores}}.
Per a prevenir abusos, només s'envia un correu electrònic de reinicialització de contrasenya cada {{PLURAL:$1|hora|$1 hores}}.",
'permissionserrors' => 'Error de permisos',
'permissionserrorstext' => 'No teniu permisos per a fer-ho, {{PLURAL:$1|pel següent motiu|pels següents motius}}:',
'permissionserrorstext-withaction' => 'No teniu permís per a $2, {{PLURAL:$1|pel motiu següent|pels motius següents}}:',
-'recreate-moveddeleted-warn' => "'''Avís: esteu creant una pàgina que ha estat prèviament suprimida.'''
+'recreate-moveddeleted-warn' => "'''Avís: esteu creant una pàgina que s'ha suprimit prèviament.'''
Hauríeu de considerar si és realment necessari continuar editant aquesta pàgina.
-A continuació s'ofereix el registre d'esborraments i de reanomenaments de la pàgina:",
+A continuació s'ofereix el registre de supressions i de reanomenaments de la pàgina:",
'moveddeleted-notice' => "S'ha suprimit aquesta pàgina.
A continuació us mostrem com a referència el registre d'esborraments i reanomenaments de la pàgina.",
'log-fulllog' => 'Veure tot el registre',
'cantcreateaccounttitle' => 'No es pot crear el compte',
'cantcreateaccount-text' => "[[User:$3|$3]] ha bloquejat la creació de comptes des d'aquesta adreça IP ('''$1''').
+El motiu donat per $3 és ''$2''",
+'cantcreateaccount-range-text' => "La creació de comptes des de les adreces IP en el rang '''$1''', que inclou la vostra adreça IP ('''$4'''), ha esta blocada per [[User:$3|$3]].
+
El motiu donat per $3 és ''$2''",
# History pages
'rev-deleted-user' => "(s'ha suprimit el nom d'usuari)",
'rev-deleted-event' => "(s'ha suprimit el registre d'accions)",
'rev-deleted-user-contribs' => "[nom d'usuari o adreça IP esborrada - modificació ocultada de les contribucions]",
-'rev-deleted-text-permission' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
-Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
+'rev-deleted-text-permission' => "S'ha '''suprimit''' aquesta versió de la pàgina.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].",
'rev-deleted-text-unhide' => "S'ha '''suprimit''' la revisió d'aquesta pàgina.
Hi poden haver més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
Encara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
Encara podeu [$1 veure aquesta revisió] si així ho desitgeu.",
'rev-deleted-text-view' => "S'ha '''suprimit''' aquesta versió de la pàgina.
Podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
-'rev-suppressed-text-view' => "Aquesta versió de la pàgina ha estat '''eliminada'''.
-Podeu veure-la; vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
+'rev-suppressed-text-view' => "S'ha '''suprimit''' aquesta versió de la pàgina.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
'rev-deleted-no-diff' => "No podeu veure aquesta comparativa perquè s'ha '''suprimit''' una de les versions.
Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].",
'rev-suppressed-no-diff' => "No podeu veure aquesta diferència perquè s'ha '''suprimit''' una de les revisions.",
-'rev-deleted-unhide-diff' => "Una de les revisions d'aquesta comparativa ha estat '''eliminada'''.
-Potser trobareu detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborrats].
+'rev-deleted-unhide-diff' => "S'ha '''eliminat''' una de les revisions d'aquesta comparativa.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre de supressions].
Encara podeu [$1 veure aquesta comparativa] si així ho desitgeu.",
'rev-suppressed-unhide-diff' => "S¡ha '''suprimit''' una de les revisions d'aquesta comparativa.
Podeu veure'n més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].
Podeu seguir [$1 veient aquesta comparativa] si així ho desitgeu.",
'rev-deleted-diff-view' => "S'ha '''suprimit'' una de les revisions d'aquesta comparativa.
Podeu veure aquesta comparativa; poden haver-hi més detalls al [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registre d'esborraments].",
-'rev-suppressed-diff-view' => "Una de les revisions d'aquesta comparativa ha estat '''esborrada'''.
-Podeu veure aquesta comparativa; pot haver-hi més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
+'rev-suppressed-diff-view' => "S'ha '''suprimit'' una de les revisions d'aquesta comparativa.
+Vegeu-ne més detalls al [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registre de supressions].",
'rev-delundel' => 'mostra/amaga',
'rev-showdeleted' => 'mostra',
'revisiondelete' => 'Esborrar/restaurar revisions',
'fileexists-shared-forbidden' => 'Ja hi ha un fitxer amb aquest nom al fons comú de fitxers.
Si us plau, si encara desitgeu carregar el vostre fitxer, torneu enrera i carregueu-ne una còpia amb un altre nom. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Aquest fitxer és un duplicat {{PLURAL:$1|del fitxer |dels següents fitxers:}}',
-'file-deleted-duplicate' => "Un fitxer idèntic a aquest ([[:$1]]) ha estat esborrat amb anterioritat. Hauríeu de comprovar el registre d'esborrat del fitxer abans de tornar-lo a carregar.",
+'file-deleted-duplicate' => "S'ha suprimit anteriorment un fitxer idèntic a aquest ([[:$1]]). Hauríeu de comprovar el registre de supressions del fitxer abans de tornar-lo a carregar.",
'uploadwarning' => 'Avís de càrrega',
'uploadwarning-text' => 'Modifiqueu la descripció de la imatge i torneu a intentar-ho.',
'savefile' => 'Desa el fitxer',
'watchnologintext' => "Heu d'[[Special:UserLogin|entrar]]
per modificar el vostre llistat de seguiment.",
'addwatch' => 'Afegeix a llista de seguiment',
-'addedwatchtext' => 'La pàgina "[[:$1]]" ha estat afegida a la vostra [[Special:Watchlist|llista de seguiment]].
+'addedwatchtext' => 'S\'ha afegit la pàgina "[[:$1]]" a la vostra [[Special:Watchlist|llista de seguiment]].
S\'hi mostraran els canvis futurs que tinguin lloc en aquesta pàgina i la corresponent discussió.',
'removewatch' => 'Treu de la llista de seguiment',
'removedwatchtext' => "S'ha tret la pàgina «[[:$1]]» de la vostra [[Special:Watchlist|llista de seguiment]].",
'delete-edit-reasonlist' => "Edita els motius d'eliminació",
'delete-toobig' => "Aquesta pàgina té un historial d'edicions molt gran, amb més de $1 {{PLURAL:$1|canvi|canvis}}. L'eliminació d'aquestes pàgines està restringida per a prevenir que hi pugui haver un desajustament seriós de la base de dades de tot el projecte {{SITENAME}} per accident.",
'delete-warning-toobig' => "Aquesta pàgina té un historial d'edicions molt gran, amb més de $1 {{PLURAL:$1|canvi|canvis}}. Eliminar-la podria suposar un seriós desajustament de la base de dades de tot el projecte {{SITENAME}}; aneu en compte abans dur a terme l'acció.",
+'deleting-backlinks-warning' => "'''Avís:''' Altres pàgines enllacen a la pàgina que esteu a punt de suprimir.",
# Rollback
'rollback' => 'Reverteix edicions',
# Edit tokens
'sessionfailure-title' => 'Error de sessió',
-'sessionfailure' => "Sembla que hi ha problema amb la vostra sessió. Aquesta acció ha estat anuŀlada en prevenció de pirateig de sessió. Si us plau, pitgeu «Torna», i recarregueu la pàgina des d'on veniu, després intenteu-ho de nou.",
+'sessionfailure' => "S'ha produït un error amb la vostra sessió. S'ha anul·lat aquesta acció en prevenció de pirateig de sessió. Premeu «Torna», recarregueu la pàgina des d'on veniu i torneu-ho a intentar.",
# Protect
'protectlogpage' => 'Registre de protecció',
'change-blocklink' => 'canvia el blocatge',
'contribslink' => 'contribucions',
'emaillink' => 'correu electrònic',
-'autoblocker' => "Heu estat blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.
+'autoblocker' => "Se us ha blocat automàticament perquè la vostra adreça IP ha estat recentment utilitzada per l'usuari ''[[User:$1|$1]]''.
El motiu del bloqueig de $1 és: ''$2''.",
'blocklogpage' => 'Registre de bloquejos',
'blocklog-showlog' => "S'ha blocat aquest usuari prèviament.
'navigation-heading' => 'Навигацин меню',
'errorpagetitle' => 'ГӀалат',
-'returnto' => 'Юхагlо оцу агlоне $1.',
+'returnto' => 'ЮхагӀо оцу агӀоне $1.',
'tagline' => 'Гlирс хlокхуьна бу {{grammar:genitive|{{SITENAME}}}}',
'help' => 'ГӀо',
'search' => 'Лаха',
'delete' => 'ДӀаяккха',
'deletethispage' => 'ДӀаяккха хӀара агӀо',
'undeletethispage' => 'ХӀара агӀо меттахӀоттор',
-'undelete_short' => 'Меттахlоттайé $1 {{PLURAL:$1|нисйинарг|нисйинарш|нисйинарш}}',
+'undelete_short' => 'МеттахӀоттайé $1 {{PLURAL:$1|нисйинарг|нисйинарш}}',
'viewdeleted_short' => 'Хьажар {{PLURAL:$1|$1 дlадаьккхина нийсдар|$1 дlадаьхна нийсдарш|$1 дlадаьхна нийсдарш}}',
'protect' => 'Гlаролла дé',
'protect_change' => 'хийца',
'youhavenewmessagesmulti' => 'Хьуна кхаьчна керла хаам оцу $1',
'editsection' => 'нисйé',
'editold' => 'нисйé',
-'viewsourceold' => 'Ñ\85Ñ\8cажа йолÑ\88 йолÑ\83Ñ\87Ñ\83 иÑ\88аÑ\80е',
+'viewsourceold' => 'Ñ\85Ñ\8cажа йолÑ\83Ñ\88 йолÑ\83Ñ\87Ñ\83 коде',
'editlink' => 'нисйé',
-'viewsourcelink' => 'Ñ\85Ñ\8cажа йолÑ\88 йолÑ\83Ñ\87Ñ\83 иÑ\88аÑ\80е',
+'viewsourcelink' => 'Ñ\85Ñ\8cажа йолÑ\83Ñ\88 йолÑ\83Ñ\87Ñ\83 коде',
'editsectionhint' => 'Нисде дакъа: $1',
'toc' => 'Чулацам',
'showtoc' => 'гайта',
'hidetoc' => 'къайлаяккха',
'collapsible-collapse' => 'къайлаяккха',
'collapsible-expand' => 'хьайаста',
-'thisisdeleted' => 'Хьажа йа меттахlоттайé $1?',
+'thisisdeleted' => 'Хьажа я меттахӀоттайé $1?',
'viewdeleted' => 'Хьалххьожи $1?',
'restorelink' => '{{PLURAL:$1|$1 дӀадаьккхина нийсдар|$1 дӀадяхна нийсдарш}}',
'feedlinks' => 'Оцу хатlаьхь:',
'page-atom-feed' => '«$1» — Atom-аса',
'feed-atom' => 'Атом',
'feed-rss' => 'RSS',
-'red-link-title' => '$1 (ишта агlо йоцуш йу)',
+'red-link-title' => '$1 (ишта агӀо йоцуш ю)',
'sort-descending' => 'Ма хийла нисяр',
'sort-ascending' => 'Ма хила нисяр',
'nstab-user' => 'Декъашхо',
'nstab-media' => 'Медиа агӀо',
'nstab-special' => 'Белха агlо',
-'nstab-project' => 'Ð\9aÑ\85олламех',
+'nstab-project' => 'Ð\9fÑ\80оекÑ\82ех',
'nstab-image' => 'Файл',
'nstab-mediawiki' => 'Хаам',
'nstab-template' => 'Кеп',
# Main script and global functions
'nosuchaction' => 'Ишта дийриг дац',
+'nosuchactiontext' => 'ДӀаязйина URL нийса яц.
+URL язъеш гӀалат даьлла хила мега.
+Иза кхин {{SITENAME}} пороектехь гӀалат хила мега.',
'nosuchspecialpage' => 'Иштта белхан агӀо яц',
'nospecialpagetext' => '<strong>Иштта белхан агӀо яц.</strong>
'viewsource' => 'Хьажар',
'viewsource-title' => 'Агӏона $1 дуьххьарлера йозане хьажар',
'actionthrottled' => 'Сиххалин доза тохар',
+'actionthrottledtext' => 'Спам цахилийта хӀара дешдерг кӀезиг хенахь дукху ца дайта дихкина ду. Дехар до массийта минот яьлча гӀорта.',
'protectedpagetext' => 'ХӀара агӀо дӀакъойлина йу рé цадаккхийта.',
'viewsourcetext' => 'Хьоьга далундерг хьажар а дезахь хlокху агlон чура йоза хьаэцар:',
+'viewyourtext' => "Хьан йиш ю '''хьой нисдинчу''' дӀадолалун йозе хьажа а цуна копи ян а:",
'protectedinterface' => 'ХӀара схьгайтарна гӀирса хаамаш латтош йолу агӀо ю. Куьйгалхошна бен иза хийца цало.',
'editinginterface' => "'''Тергам бе:''' Ахьа таеш ю интерфейсан йоза долу агӀо програмин латторан.
Цуна бина хийцам хьокху википедин кхечу декъашхошна гур бу.
'mycustomjsprotected' => 'Хьан бакъо яц JavaScript агӀо тая.',
'myprivateinfoprotected' => 'Хьайн долара хаамна хийцам ба хьа йиш яц',
'mypreferencesprotected' => 'Хьай гӀирс нисбан хьа бакъо яц.',
+'ns-specialprotected' => 'ХӀокху «{{ns:special}}» цӀерийн меттигашан агӀонаш таян йиш яц.',
'exception-nologin' => 'ХӀинца а ахьа системин чохь болх беш бац',
# Virus scanner
'userlogout' => 'Болх дӀаберзор',
'notloggedin' => 'ХӀинца а ахьа системин чохь болх беш бац',
'userlogin-noaccount' => 'Декъашхочун дӀаяздар дац хьа?',
-'userlogin-joinproject' => '{{grammar:genitive|{{SITENAME}}}} юкъахӀотта',
+'userlogin-joinproject' => 'Проектехь дӀаяздар кхоллар',
'nologin' => "Декъашхочун дӀаяздар дац хьа? '''$1'''.",
'nologinlink' => 'Кхолла декъашхочун дӀаяздар',
'createaccount' => 'Кхолла декъашхочун дӀаяздар',
'noname' => 'Ахьа магийтина йолу декъашхочун цӀе билгал йина яц.',
'loginsuccesstitle' => 'Хьан пароль тӀеэца, марша догӀила Википеди чу!',
'loginsuccess' => 'Хlинца ахьа болх бó оцу цlарца $1.',
-'nosuchuser' => 'ЦlаÑ\80Ñ\86а $1 декÑ\8aаÑ\88Ñ\85о ваÑ\86/Ñ\8fц.
-Декъашхой цlераш хаалуш йу дlайазвалрца/яларца элраш.
-Нийса юьй хьажа цlе йа [[Special:UserLogin/signup|дlаяздар кхолла керла]].',
+'nosuchuser' => 'Ð\98Ñ\88Ñ\82Ñ\82а $1 Ñ\86Ó\80е йолÑ\83Ñ\88 декÑ\8aаÑ\88Ñ\85оÑ\87Ñ\83н дÓ\80аÑ\8fздаÑ\80 дац.
+Декъашхой цӀераш хаалуш ю дӀаяздарца элпаш.
+Нийса юьй хьажа цӀе я [[Special:UserLogin/signup|дӀаяздар кхолла керла]].',
'nosuchusershort' => 'Ишта «$1» цӀе йолу декъашхо вац/яц. Хьажа цӀе нийса язйина юй.',
'nouserspecified' => 'Ахьа декъашхочун цӀе билгал ян езаш ю.',
'login-userblocked' => 'ХӀара декъашхо блоктоьхна ву/ю. Системин чувала/яла магийна дац.',
'usernamehasherror' => 'Декъашхочун цӀеран юкъахь хийла ца еза «цаца»',
'login-throttled' => 'Хьо дукха гӀиртира.
Дехар до, собар де $1 юха гӀортале.',
+'login-abort-generic' => 'Сестемин довзийта тарцаделира',
'loginlanguagelabel' => 'Мотт: $1',
# Change password dialog
'oldpassword' => 'Шираелла пароль:',
'newpassword' => 'Керла пароль:',
'retypenew' => 'Юха язъйе керла пароль:',
+'resetpass_submit' => 'Пароль дӀахӀоттийна системин чугӀо',
+'changepassword-success' => 'Хьан пароль кхиамца хийцина!',
'resetpass_forbidden' => 'Пароль хийца йиш яц',
'resetpass-no-info' => 'ХӀара агӀо лело системин чугӀо.',
'resetpass-submit-loggedin' => 'Хийца пароль',
'resetpass-submit-cancel' => 'Цаоьшу',
'resetpass-temp-password' => 'Цхьан хана пароль:',
+'resetpass-abort-generic' => 'Пароль хийцар дӀахедар',
# Special:PasswordReset
'passwordreset' => 'Пароль кхоссар',
'passwordreset-legend' => 'Пароль кхоссар',
'passwordreset-username' => 'Декъашхочун цӀе:',
'passwordreset-domain' => 'Домен:',
+'passwordreset-capture' => 'Хьажа беанчу хааме?',
'passwordreset-email' => 'Электронни почтан адрес:',
+'passwordreset-emailtitle' => '{{SITENAME}}: декъашхочун дӀаяздарх лаьцна хаам',
+'passwordreset-emailelement' => 'Декъашхочун цӀе: $1
+Ханна йолу пароль: $2',
+'passwordreset-emailsent' => 'Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш.',
+'passwordreset-emailsent-capture' => 'Электронан хаам баийтина кхоьссинчу паролах лаьцна хаам чохь болуш.
+цуна йозане хьажа йиш ю лахахь.',
# Special:ChangeEmail
'changeemail' => 'Хийца электрони почт',
'resettokens-text' => 'Хьан йиш ю токенаш кхосса, цара йиш хуьлуьйту цхьаболу долара хаамашна тӀекхача, уьш ю хьан дӀаяздар ца вовшахтесна.
Хьона иза оьшу, ахьа хьай токенаш цхьам гучу яьхна елахь я хьан аккаунт йохийна елахь.',
+'resettokens-no-tokens' => 'Кхосса токенаш яц.',
'resettokens-legend' => 'Токенаш кхоссар',
'resettokens-tokens' => 'Токенаш:',
'resettokens-token-label' => '$1 (карара маьӀна: $2)',
'savearticle' => 'Дlайазъé агlо',
'preview' => 'Хьалха муха ю хьажа',
'showpreview' => 'Хьалха муха ю хьажар',
+'showlivepreview' => 'Сиха хьажар',
'showdiff' => 'Хlоттина болу хийцам',
'anoneditwarning' => "'''Тергам бе''': Ахьа хьай цӀарца тадарш деш дац. Хьан IP-адрес дӀаяздина хира ду хӀокху агӀон истори чу.",
+'anonpreviewwarning' => "''Системин чу цагӀахь хьан IP-адрес агӀона истори чу дӀаяз лур ду.''",
+'missingcommenttext' => 'Дехар до дӀаязбе хайн хаам лахахь.',
'summary-preview' => 'Цуьнах лаьцна хирду:',
+'subject-preview' => 'Коьрта могӀа хира бу:',
'blockedtitle' => 'Декъашхочун блоктоьхана',
+'blockednoreason' => 'бахьана билгалдина дац',
+'whitelistedittext' => 'Ахьа да деза $1 агӀона хийцамаш бан.',
'nosuchsectiontitle' => 'Дакъа каро йиш яц.',
'nosuchsectiontext' => 'Хьо гӀерта доцу дакъа тадан.
Хьо хӀокху агӀоне хьоьжучу хенахь иза кхечухьа деккхина я дӀадаьккхина хела тарло.',
'loginreqtitle' => 'Хьай цӀарца чугӀо',
'loginreqlink' => 'Логин',
+'loginreqpagetext' => 'Ахьа да деза $1, кхин агӀонаш хьажа.',
'accmailtitle' => 'Пароль дlаяхьийтина.',
'accmailtext' => "Пароль декъашхочуьна [[User talk:$1|$1]], йина ша шех хитта делла чу элпашах, дlаяхийтина хьокху $2 адрес тӀе.
Ишта хуьйла ширелла дӀаяьккхина агӀонан хьажораган дихьа делча.
Ма-дара хила мега [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} дӀайаьхарш йолу тептар] чохь.',
-'userpage-userdoesnotexist' => 'Ишта дlайазвар «<nowiki>$1</nowiki>» хlинца дац. Хьажа билгал, хьуна бакъалла лаьи кхолла йа хийцам ба хlокху агlон.',
+'userpage-userdoesnotexist' => 'Ишта декъашхочун дӀаяздар «<nowiki>$1</nowiki>» хӀинца дац. Хьажа билгал, хьуна бакъалла лаьий кхолла я хийцам ба хӀокху агӀон.',
'userpage-userdoesnotexist-view' => '«$1» ишта декъашхочун дӀаяздар дац.',
'blocked-notice-logextract' => 'ХӀара декъашхочун дӀаяздар блоктоьхна ду.
Лахахь гойту блоктохаршан тептар чура тӀаьхьарлера дӀаяздар:',
Хьой бина хийцам лахарчу корера лакхарчу коре баккха.
Кнопкан «{{int:savearticle}}» тӏетаӏича лакхара корера йоза дӏаязлурду.',
'yourtext' => 'Хьан йоза',
+'storedversion' => 'Ӏалашйина верси',
'editingold' => "'''ДӀахьедар. Ахьа таеш ю хӀокху агӀона шира елла верси.'''
АгӀо Ӏалаш йинчул тӀехьа хьалхо бина хийцамаш дӀабяра бу.",
'yourdiff' => 'Башхаллаш',
'template-semiprotected' => '(дуьззина доцуш гlаролла)',
'hiddencategories' => 'ХӀара агӀо чуйогӀуш ю оцу $1 {{PLURAL:$1|къайлаха категори чу|къайлаха категореш чу}}:',
'edittools' => '<!-- Кхузе буха диллина йоза гуш хир ду редоккхуче бухахь а хlума чуйоккхуче бухахь. -->',
+'nocreate-loggedin' => 'Хьан бакъо яц керла агӀонаш кхолла.',
+'sectioneditnotsupported-title' => 'Дакъош тадар ловш дац',
+'sectioneditnotsupported-text' => 'ХӀокху агӀорахь дакъош тадар ловш дац',
'permissionserrors' => 'ТӀекхачаре бакъона гӀалат',
'permissionserrorstext' => 'Хьан бакъо яц кхочуш хилийта хийцам оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:',
'permissionserrorstext-withaction' => "Хьан бакъо яц хlумда «'''$2'''» оцу {{PLURAL:$1|шолгlа бахьанца|шолгlа бахьанашца}}:",
'moveddeleted-notice' => 'Иза агӀо дӀаяьккхина яра.
Хаийтарна лахахьа гойту, цуьнца долу дӀаяздарш кху тептар чура дӀаяхарш а цӀе хийцарш а.',
'log-fulllog' => 'Хьажа деригге тептаре',
+'edit-hook-aborted' => 'Нисдар юхадаьккхина тӀехьожучо.
+ХӀу бахьна ду билгал дина дац.',
+'edit-gone-missing' => 'АгӀо карлаяккха цатарло.
+Иза дӀаяьккхина хила мега.',
+'edit-conflict' => 'Тадарна дойнаш.',
+'edit-no-change' => 'Хьан нисдар юхадаьккхина, ахьа хийцамаш бина цахилар бахьнехь.',
'postedit-confirmation' => 'Хьан нисдар дӏайазъдина.',
+'edit-already-exists' => 'Керла агӀо кхолла цатарло.
+Иза хӀинцале йолуш ю.',
+'defaultmessagetext' => 'Ӏад дитарца йоза',
+'content-failed-to-parse' => 'Чулацам $2 богӀуш бац $1: $3.',
+'invalid-content-data' => 'Хилийта йиш йоцу хаамаш',
+'content-not-allowed-here' => 'Чулацам "$1" [[$2]] агӀонгахь хилийта йиш яц',
# Content models
+'content-model-wikitext' => 'вики-йоза',
+'content-model-text' => 'цхьалхе йоза',
'content-model-javascript' => 'JavaScript',
'content-model-css' => 'CSS',
'revdelete-hide-comment' => 'Хийцамах лаьцнарг',
'revdelete-hide-user' => 'Къайлаяккха авторан цӀе',
'revdelete-radio-same' => '(ма хийца)',
-'revdelete-radio-set' => 'Хlаъ',
-'revdelete-radio-unset' => 'Хlахlа',
+'revdelete-radio-set' => 'Къайлаяьккхина',
+'revdelete-radio-unset' => 'Гуш ерг',
+'revdelete-suppress' => 'Къайлабаха хаамаш куьйгалхойх а',
+'revdelete-unsuppress' => 'МеттахӀоьттина версешан дихкар къайладаккха',
'revdelete-log' => 'Бахьан:',
'revdelete-submit' => 'Кхочушде {{PLURAL:$1|къастина версин|къастина версешан}}',
'revdelete-success' => "'''Версеш гуш хилар кхиамца хийцина.'''",
'revdelete-failure' => "'''Версеш гуш хилар хийца йиш яц:'''
$1",
'logdelete-success' => 'Хиларг гуш хилар хийцина.',
+'logdelete-failure' => "'''Тептаран гуш хилар хӀоттина дац:'''
+$1",
'revdel-restore' => 'Хийцам бе схьагарехь',
'pagehist' => 'АгӀона истори',
'deletedhist' => 'ДӀаяккхаран истори',
'revdelete-otherreason' => 'Кхин бахьна/тӀетохар:',
'revdelete-reasonotherlist' => 'Кхин бахьан',
'revdelete-edit-reasonlist' => 'Бахьанин список нисяр',
+'revdelete-offender' => 'АгӀона версен автор:',
+
+# Suppression log
+'suppressionlog' => 'Хьулдаран тептар',
# History merging
+'mergehistory' => 'Нисдарин истори цхьаьнатохар',
+'mergehistory-box' => 'Шин агӀона нисдарин истори цхьаьнатохар:',
'mergehistory-from' => 'Дуьххьарлера агӀоно',
+'mergehistory-into' => 'Ӏалашонан агӀо:',
+'mergehistory-list' => 'Цхьаьнатухуш долу нисдарин истори',
+'mergehistory-go' => 'Гайта цхьаьнатухуш долу нисдарш',
+'mergehistory-submit' => 'Цхьаьнатоха нисдарш',
+'mergehistory-empty' => 'Цхьаьнатоха нисдарш цакарий.',
'mergehistory-fail' => 'АгӀонийн истореш вовшахтоха цаделира, дехар до агӀона параметаршка а хене а хьажа.',
'mergehistory-invalid-source' => 'Хьостан нийса корта хила еза.',
'mergehistory-invalid-destination' => 'Юзийна агӀона нийса корта хила еза.',
И хаам массарна гуш хир бу.',
'email' => 'Email',
'prefs-help-email' => 'Электрони почтан адрес цахlоттийча аъ хlумма дац, амма иза оьшар ю, нагахь хьуна хьай пароль йицлахь.',
-'prefs-help-email-others' => 'Ð\9aÑ\85ин дÓ\80а Ñ\86о кÑ\85еÑ\87Ñ\83 декÑ\8aаÑ\88Ñ\85оÑ\88на йиÑ\88 Ñ\85Ñ\83Ñ\8cлÑ\83Ñ\8cйÑ\82Ñ\83 Ñ\85Ñ\8cога Ñ\8dлекÑ\82Ñ\80онни кеÑ\85аÑ\82 даийÑ\82а Ñ\85Ñ\8cан агÓ\80она Ñ\87оÑ\85Ñ\8c йолÑ\83 Ñ\85Ñ\8cажоÑ\80иган гÓ\80онца.',
+'prefs-help-email-others' => 'Ð\9aÑ\85ин дÓ\80а Ñ\86о кÑ\85еÑ\87Ñ\83 декÑ\8aаÑ\88Ñ\85оÑ\88на йиÑ\88 Ñ\85Ñ\83Ñ\8cлÑ\83Ñ\8cйÑ\82Ñ\83 Ñ\85Ñ\8cога Ñ\8dлекÑ\82Ñ\80онан кеÑ\85аÑ\82 даийÑ\82а Ñ\85Ñ\8cан агÓ\80она Ñ\87оÑ\85Ñ\8c йолÑ\83 Ñ\85Ñ\8cажоÑ\80иган гÓ\80оÑ\8cнца.',
'prefs-info' => 'Коьрта хаам',
'prefs-i18n' => 'Юкъардекъа мотт',
'prefs-signature' => 'КуьгтаӀор',
'recentchangeslinked-feed' => 'Кхуьнца долу нисдарш',
'recentchangeslinked-toolbox' => 'Кхуьнца долу нисдарш',
'recentchangeslinked-title' => 'Кхуьнца долу нисдарш $1',
-'recentchangeslinked-summary' => "Хlара хийцам биначу агlонашан могlам бу, тlетовжар долуш хьагучу агlон (йа хьагойтуш йолучу категорена).
-Агlонаш юькъайогlуш йолу хьан [[Special:Watchlist|тергаме могlам чохь]] '''къастийна йу'''.",
+'recentchangeslinked-summary' => "ХӀара хийцам биначу агӀонашан могӀам бу, тӀетовжар долуш хьагучу агӀон (йа хьагойтуш йолучу категорена).
+АгӀонаш юькъайогӀуш йолу хьан [[Special:Watchlist|тергаме могӀам чохь]] '''къастийна ю'''.",
'recentchangeslinked-page' => 'Агlон цlе:',
'recentchangeslinked-to' => 'Кхечу агӀор, гайта хийцамаш агӀонашца, хӀоттийначу агӀонтӀе хьажораг йолуш',
'filesource' => 'Хьост:',
'ignorewarning' => 'ХӀума дац чуяккха файл',
'ignorewarnings' => 'ДӀахедар тергал ца дан',
-'badfilename' => 'Файлан цӀе оцу $1.',
+'badfilename' => 'Файлан цӀе хийцина → $1.',
'emptyfile' => 'Ахьа чуйоккхуш йолу файл еса хийла там бу. Иза гӀалат хийла мега файлан цӀе нийса язйина йоцу дела. Дехар до хьажа бакъалла и юьй ахьа чуйоккхуш йолу файл.',
'fileexists' => 'Иштта цӀе йолу файл йолуш ю. Дехар до, хьажа <strong>[[:$1]]</strong>, лаьий хьуна и хийца.
[[$1|thumb]]',
+'filepageexists' => 'Файлах лаьцна хаам болу агӀо кхоьллина <strong>[[:$1]]</strong>, амма иштта цӀе йолуш файл хӀинца яц.
+Язбина хаам файлах лаьцнарг долу агӀонехь гучабаьра бац.
+Керла хаам тӀетоха ахьа и куьга хийца езар ю.
+[[$1|thumb]]',
'fileexists-extension' => 'Тера цӀе йолу файл йолуш ю: [[$2|thumb]]
* Чуйоккхуш йолу файлан цӀе: <strong>[[:$1]]</strong>
* Йолуш йолу файлан цӀе: <strong>[[:$2]]</strong>
Дехар до, харжа кхин цӀе.',
+'fileexists-thumbnail-yes' => 'Файл жима йина копи хила там бу. [[$1|thumb]]
+Дехар до, хьажа файле <strong>[[:$1]]</strong>.
+Билгалйина файл цуна жима йина копи елахь и чуяккха цаоьшу.',
+'file-thumbnail-no' => 'Файлан цӀе йолалуш ю <strong>$1</strong>.
+Файл жима йина суьртан копи хила там бу.
+Хьайгахь хӀара сурт дика барамехь делахь, дехар до, чудаккха и я файлан цӀе хийца.',
'fileexists-forbidden' => 'Иштта цӀе йолу файл йолуш ю цундела тӀехула дӀаязян йиш яц.
ТӀаккха а хьара файл чуяккха лууш делахь, дехар до, юха а гӀой файлан цӀе хийца а яй чуяккха файл. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'ХӀара файл лахарчу {{PLURAL:$1|файлан|файлийн}} дубликат ю:',
'upload-options' => 'Чуякхаран параметраш',
'watchthisupload' => 'Латайе хӀара файл тергаме могӀам юкъахь',
'filewasdeleted' => 'Иштта цӀе йолуш файл хьалха чуяьккхина хила, амма дӀаяьккхина. Дехар до, юху чуяккхале $1 хьажа.',
+'filename-bad-prefix' => "Чуйоккхучу файлан цӀе йолалуш ю «'''$1'''» и сурт доккхучу хӀумнан кепан цӀе хилла мега. Дехар до, хьаржа файлан йогӀуш йолу цӀе.",
'filename-prefix-blacklist' => '#<!-- битийша хlара могlа ша мабарра --> <pre>
# Бухасиз шолгlа:
# * Массо, саболчунтlийра йуьлалуш ерш «#» хуьлу хетаме дерг (могlа чекх балац)
'imagelinks' => 'Файл лелор',
'linkstoimage' => '{{PLURAL:$1|ТӀаьхьайогӀу $1 агӀо тӀетойжина|ТӀаьхьайогӀу $1 агӀонаш тӀетойжина|ТӀаьхьайогlу $1 агӀонаш тӀетойжина}} хӀокху файлан:',
'nolinkstoimage' => 'АгӀонашчохь файл лелош яц.',
-'sharedupload' => 'Хlара хlума оцун $1 чура ю иза хила мега лелош кхечу кхолламашкахь.',
+'sharedupload' => 'ХӀара хӀума оцун $1 чура ю иза хила мега лелош кхечу проекташкахь.',
'sharedupload-desc-here' => 'ХӀара файл $1 чура ю и лело йиш ю массо проекташкахь.
Цунна хаам гайтина лахахь. [$2 Файл Викигуламехь]',
'filepage-nofile' => 'Иштта цӀе йолуш файл яц.',
'statistics-header-pages' => 'Агlонашан жамlа',
'statistics-header-edits' => 'Нисдаран жамӀ',
'statistics-header-users' => 'Декъашхойн жамӀа',
+'statistics-header-hooks' => 'Кхин статистика',
'statistics-articles' => 'Яззамаш',
'statistics-pages' => 'Агlонаш',
'statistics-pages-desc' => 'Массо вики агlонаш, дийцаре агlонашцани, дlасахьаждарш а кхин дерш.',
'longpages' => 'Беха яззамаш',
'deadendpages' => 'Дика йоцу агIонаш',
'protectedpages' => 'ГIаролла дина агIонаш',
+'protectedpages-indef' => 'Хан йоцуш гӀоралла динарш бен',
+'protectedpages-cascade' => 'Чахчарин гӀоралла бен',
'protectedtitles' => 'ГIаролла дина цIераш',
'listusers' => 'Декъашхой могlам',
'listusers-editsonly' => 'Цхаъ мукъане а хийцам бина декъашхой гайта',
# Special:AllPages
'allpages' => 'Массо агӀонаш',
-'alphaindexline' => 'оцу $1 кху $2',
+'alphaindexline' => 'тӀера $1 $2 кхаччалц',
'nextpage' => 'Тlаьхьа йогlу агlо ($1)',
'prevpage' => 'Хьалхалера агlо ($1)',
'allpagesfrom' => 'Гучé яха агӀонаш, йолалуш йолу оцу:',
'protect-expiry-options' => '1 сахьт:1 hour,1 де:1 day,1 кӀиран:1 week,2 кӀиран:2 weeks,1 бутт:1 month,3 бутт:3 months,6 бутт:6 months,1 шо:1 year,цlкъа:infinite',
'restriction-type' => 'Бакъо:',
'restriction-level' => 'ТӀекхочаран локхалла:',
+'minimum-size' => 'Лаххара бараме',
+'maximum-size' => 'Лаккхара бараме:',
# Restrictions (nouns)
'restriction-edit' => 'Тадар',
'restriction-upload' => 'Чуйолуш',
# Restriction levels
+'restriction-level-sysop' => 'дуьззина гӀоралла',
'restriction-level-autoconfirmed' => 'дуьззина доцуш гӀаролла',
'restriction-level-all' => 'массо барам',
Агӏо дӏаяккхинчул тӏяха юху кхолийна елахь меттахӏоттина йолу версеш гучуер ю керлачу версешна хьалха',
'undeleterevdel' => 'Метта хlоттор хира дац, нагахь иза дакъошкахь дlадайина далахь а тlаьххьара кисак башхо йа хlума.
Иштнарг хилча ахьа дlабаккха беза хlоттийна болу къастам йа хьагайта тlаьххьара дlайайина башхо.',
-'undelete-revision' => 'Декъашхочун $3 дӀайаьккхина верси $1 (цу $4 $5 хан):',
+'undelete-revision' => 'Декъашхочун $3 дӀаяьккхина верси $1 (цу $4 $5 хан):',
'undeletebtn' => 'МеттахӀоттае',
'undeletelink' => 'хьажа/меттахӀоттае',
'undeleteviewlink' => 'хьажа',
'isredirect' => 'агlо-дlасахьажайар',
'istemplate' => 'лата йe',
'isimage' => 'Файлан хьажораг',
-'whatlinkshere-prev' => '{{PLURAL:$1|хьалхайодарг|хьалхайодарш|хьалхайодарш}} $1',
+'whatlinkshere-prev' => '{{PLURAL:$1|хьалхайодарг|хьалхайодарш}} $1',
'whatlinkshere-next' => '{{PLURAL:$1|тlаьхьайогlург|тlаьхьайогlурш|тlаьхьайогlурш}} $1',
'whatlinkshere-links' => '← хьажорагаш',
'whatlinkshere-hideredirs' => '$1 дlасахьажйар',
'move-subpages' => 'ЦӀeрш хийцае бухара агӀонаши ($1 кхаччалц)',
'move-talk-subpages' => 'ЦӀе хийца бухара агӀонаши а агӀонашан дийцаре а ($1 кхаччалц)',
'movepage-page-exists' => 'Агӏо $1 йолуш ю цундела и ша юху дӏаязъян йиш яц.',
-'movepage-page-moved' => 'АгӀона $1 цӀе хийцина оцу $2.',
+'movepage-page-moved' => 'АгӀона $1 цӀе хийцина → $2.',
'movelogpage' => 'Цlераш хийцаран тептар',
'movelogpagetext' => 'Лахахьа гойтуш ю цӀе хийцина агӀонаш.',
'movesubpage' => '{{PLURAL:$1|Бухара агӀо|Бухара агӀонаш}}',
'immobile-source-page' => 'ХӀокху агӏона цӏе хийца йиш яц.',
'bad-target-model' => 'Йиш яц хийца $1 оцу $2: цхьаьна ца догӀу моделин хаамаш.',
'move-leave-redirect' => 'Ӏадйита дӀасахьажораг',
-'protectedpagemovewarning' => "'''Дlахьедар.''' Хlара агlо гlаролла йина йу; цlе хийца йа нисйа а бакъо йолуш адаманкуьйгалхой бе бац.
-Лахахьа тептаро балийна тlаьхьаралера дlаязбина хаам:",
-'semiprotectedpagemovewarning' => "'''Дlахьедо.''' Хlара агlо гlаролла йина йу; дlабазбиначу декъашхошка бе цlе хийцалуш яц.
-Лахахьа тептаро балийна тlаьхьаралера дlаязбина хаам:",
+'protectedpagemovewarning' => "'''ДӀахьедар.''' ХӀара агӀо гӀаролла йина ю; цӀе хийца я нисйа а бакъо йолуш куьйгалхой бе бац.
+Лахахьа тептаро балийна тӀаьхьаралера дӀаязбина хаам:",
+'semiprotectedpagemovewarning' => "'''ДӀахьедо.''' ХӀара агӀо гӀаролла йина ю; дӀабазбиначу декъашхошка бе цӀе хийцалуш яц.
+Лахахьа тептаро балийна тӀаьхьаралера дӀаязбина хаам:",
# Export
'export' => 'АгӀонаш араяхар',
'import-upload-filename' => 'Файлан цӀе:',
'import-comment' => 'Билгалдаккхар:',
'importnosources' => 'Юкъаравики-импортан хьост хаьржина яцара, дуьхьала хийцамашан истори чуяккхар дӀадайина ду.',
+'import-error-special' => '«$1» агӀо импорт йина яц, и къастина цӀерийн меттигашан юкъайогӀуш хиларна.',
# Import log
'importlogpage' => 'Импортан тептар',
'tooltip-n-currentevents' => 'Дlаоьхуш болу хаамашна могlам',
'tooltip-n-recentchanges' => 'Тlаьххьаралера хийцаман могlам',
'tooltip-n-randompage' => 'Хьажа цахууш нисйеллачу агlоне',
-'tooltip-n-help' => 'Ð\9dиÑ\81воÑ\85аамаÑ\88 оÑ\86Ñ\83 кÑ\85олламÑ\86а «{{SITENAME}}»',
+'tooltip-n-help' => 'Ð\93Ó\80оде меÑ\82Ñ\82иг',
'tooltip-t-whatlinkshere' => 'Массо агlон могlам, хlокху агlонтlе хьажийна йолу',
'tooltip-t-recentchangeslinked' => 'Тlаьхьарлера хийцамаш хlокху агlонашкахь, мичхьа хьажийна хlара агlо',
'tooltip-feed-rss' => 'Хьагайтар оцу RSS цани хlокху агlон',
'tooltip-feed-atom' => 'Хьагайтар оцу Atom цани хlокху агlон',
'tooltip-t-contributions' => 'Хlокху декъашхочо хийцина йолу агlонашан могlам',
-'tooltip-t-emailuser' => 'Дlабахьийта хаам оцу декъашхона',
+'tooltip-t-emailuser' => 'ДӀабахьийта хаам оцу декъашхона',
'tooltip-t-upload' => 'Чуйаха файлаш',
'tooltip-t-specialpages' => 'Белха агlонаши могlам',
'tooltip-t-print' => 'Хlокху агlонна зорба туху башхо',
'tooltip-ca-nstab-main' => 'Яззамна чулацам',
'tooltip-ca-nstab-user' => 'ХӀора декъашхочун долахь йолу агӀо ю',
'tooltip-ca-nstab-media' => 'Медиа-файл',
-'tooltip-ca-nstab-special' => 'Хlара белха агlо йу, хlара рéдаккхалуш яц',
+'tooltip-ca-nstab-special' => 'ХӀара белха агӀо ю, хӀара тая луш яц',
'tooltip-ca-nstab-project' => 'Кхолламан дакъа',
'tooltip-ca-nstab-image' => 'Хlуман агlо',
'tooltip-ca-nstab-mediawiki' => 'Хааман агlо MediaWiki',
'tooltip-summary' => 'Язъе йоца цӀе',
# Stylesheets
-'common.css' => '/** Чуйиллина йолу кхузе CSS хир йу лелош масхьа кечйечу чохь */',
-'monobook.css' => '/* Чуйиллина йолу кхузе CSS хир йу лелош масхьа Monobook чохь */',
-'print.css' => '/* Чуйиллина йолу кхузе CSS хир йу лелош масхьа зорба тухучуче чохь */',
+'common.css' => '/** Чуйиллина йолу кхузе CSS хир ю лелош масхьа кечйечу чохь */',
+'monobook.css' => '/* Чуйиллина йолу кхузе CSS хир ю лелош масхьа Monobook чохь */',
+'print.css' => '/* Чуйиллина йолу кхузе CSS хир ю лелош масхьа зорба тухучуче чохь */',
# Scripts
'common.js' => '/* Чуйиллина йолу кхузе JavaScript код гучу ера ю массо декъашхошна оцара схьаелларца хlора агlо */',
'pageinfo-language' => 'АгӀона мотт',
'pageinfo-toolboxlink' => 'Агlонах болу бовзам',
'pageinfo-redirectsto-info' => 'Хаам',
+'pageinfo-protect-cascading' => 'Чахчарин гӀоралла кхузара',
+'pageinfo-protect-cascading-from' => 'Чахчарин гӀоралла тӀера',
'pageinfo-category-info' => 'Категорех лаьцна хаам',
# Skin names
'hours-ago' => '$1 {{PLURAL:$1|сахьт}} хьалха',
'minutes-ago' => '$1 {{PLURAL:$1|минут}} хьалха',
'seconds-ago' => '$1 {{PLURAL:$1|секунд}} хьалха',
+'monday-at' => 'оршотан дийнахь $1',
+'wednesday-at' => 'кхаарин дийнахь $1',
+'thursday-at' => 'еарин дийнахь $1',
+'friday-at' => 'пӀераскан дийнахь $1',
+'saturday-at' => 'шот дийнахь $1',
+'sunday-at' => 'кӀиранан дийнахь $1',
'yesterday-at' => 'селхана $1 даьлча',
# Bad image list
'exif-originaltransmissionref' => 'ДӀадолалун меттиган код',
'exif-label' => 'Билгало',
'exif-datetimemetadata' => 'ТӀехьара метахаамаш хийцина терахь',
+'exif-usageterms' => 'Лелоран хьал',
'exif-pngfilecomment' => 'PNG-файлан билгалдаккхар',
'exif-giffilecomment' => 'GIF-файлан билгалдаккхар',
# Live preview
'livepreview-loading' => 'Чуйолуш…',
-'livepreview-ready' => 'Чуйолуш… Кийча йу!',
+'livepreview-ready' => 'Чуйолуш… Кийча ю!',
# Watchlist editor
'watchlistedit-normal-title' => 'Тергаме могӀанийн хийцамаш',
'tags-tag' => 'Билгалона цӀе',
'tags-display-header' => 'МогӀам чохь хийцамаш гар',
'tags-description-header' => 'МаьӀнан дуьззина сурт хӀоттор',
+'tags-active-header' => 'Жигара?',
'tags-hitcount-header' => 'Къастам бина нисдарш',
'tags-edit' => 'нисйé',
'tags-hitcount' => '$1 {{PLURAL:$1|хийцам|хийцамаш|хийцамаш}}',
'compare-submit' => 'Муха ю хьажа',
# Database error messages
-'dberr-header' => 'Хlара вики ловш йу халона бала',
+'dberr-header' => 'ХӀара вики ловш ю халона бала',
'dberr-problems' => 'Бехк ма бил! Хlинц машан меттиган хилла гlирсаца халонаш.',
'dberr-again' => 'Хьажа карла йаккха агlо массех минот йаьлча.',
'dberr-info' => '(аьтто ца хили зlе хlотта гlулкхдечуьнца бухара хаамашца: $1)',
-'dberr-usegoogle' => 'ЦӀачун хьо хьажа лаха гӀонца Google.',
+'dberr-usegoogle' => 'ЦӀачун хьо хьажа лаха гӀоьнца Google.',
'dberr-outofdate' => 'Хьуна хаалахь, цуьна йолу меттиг хила мега тишйелла черахь.',
# HTML forms
'revdelete-uname-unhid' => 'декъашхочун цӀе гуча яьккхина',
'revdelete-restricted' => 'куьйгалхойн доза туху',
'revdelete-unrestricted' => 'куьйгалхойн доза тохар дӀаяьккхина',
-'logentry-move-move' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4',
-'logentry-move-move-noredirect' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажийнарг цаюьтуш',
+'logentry-move-move' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 → $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|цӀе хийцина}} $3 → $4 дӀасахьажийнарг цаюьтуш',
'logentry-move-move_redir' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажоран тӀохул',
'logentry-move-move_redir-noredirect' => '$1 {{GENDER:$2|цӀе хийцина|цӀе хийцина}} $3 оцу $4 дӀасахьажоран тӀохул а дӀасахьажийнарг цаюьтуш а',
'logentry-patrol-patrol-auto' => '$1 автоматически {{GENDER:$2|хьаьжина}} $3 агӀона версега $4',
'delete-edit-reasonlist' => 'Editovat důvody smazání',
'delete-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{plural:$1|verzi|verze|verzí}}. Mazání takových stránek je omezeno, aby se předešlo nechtěnému narušení {{grammar:2sg|{{SITENAME}}}}.',
'delete-warning-toobig' => 'Tato stránka má velkou historii editací, přes $1 {{plural:$1|verzi|verze|verzí}}. Mazání takových stránek může narušit databázové operace {{grammar:2sg|{{SITENAME}}}}; postupujte opatrně.',
+'deleting-backlinks-warning' => "'''Upozornění:''' Na stránku, kterou se chystáte smazat, odkazují jiné stránky.",
# Rollback
'rollback' => 'Vrátit zpět editace',
'dec' => 'раш',
# Categories related messages
-'pagecategories' => 'Категорисем',
+'pagecategories' => '{{PLURAL:$1|Категори|Категорисем}}',
'category_header' => '«$1» категорири статьясем',
'subcategories' => 'Подкатегорисем',
'category-media-header' => '«$1» категорири файлсем',
'cancel' => 'Пăрахăçла',
'moredotdotdot' => 'Малалла…',
'mypage' => 'Ман страница',
-'mytalk' => 'Ð\9cан канаÑ\88лÑ\83 Ñ\81Ñ\82Ñ\80аниÑ\86и',
+'mytalk' => 'СӳÑ\82Ñ\81е Ñ\8fвни',
'anontalk' => 'Çак IP-адреса сӳтсе явни',
'navigation' => 'Меню',
'and' => ' тата',
'articlepage' => 'Статьяна пăх',
'talk' => 'Сӳтсе явни',
'views' => 'Пурĕ пăхнă',
-'toolbox' => 'Ĕç хатĕрĕсем',
+'toolbox' => 'Хатĕрсем',
'userpage' => 'Хутшăнакан страницине пăх',
'projectpage' => 'Проект страницине пăх',
'imagepage' => 'Ӳкерчĕк страницине пăх',
'nstab-main' => 'Статья',
'nstab-user' => 'Хутшăнакан страници',
'nstab-media' => 'Мультимеди',
-'nstab-special' => 'Ятарлă',
+'nstab-special' => 'Ятарлă страницă',
'nstab-project' => 'Проект çинчен',
'nstab-image' => 'Файл',
'nstab-mediawiki' => 'Пĕлтерӳ',
# Preferences page
'preferences' => 'Ĕнерлевсем',
-'mypreferences' => 'Ман ĕнерлевсем',
+'mypreferences' => 'Ĕнерлев',
'prefs-edits' => 'Тӳрлетӳсен шучĕ:',
'prefs-skin' => 'Ерешленӳ',
'skin-preview' => 'Малтанхи курăну',
'cantcreateaccount-text' => "Rhwystrwyd y gallu i greu cyfrif ar gyfer y cyfeiriad IP hwn, ('''$1'''), gan [[User:$3|$3]].
Y rheswm a roddwyd dros y bloc gan $3 yw ''$2''.",
+'cantcreateaccount-range-text' => "Gosododd [[User:\$3|\$3]] floc ar agor cyfrifon o gyfeiriadau IP yn yr ystod '''\$1''', sy'n cynnwys eich cyfeiriad IP chi ('''\$4''').
+
+Y rheswm a roddwyd gan \$3 yw \"\$2\"",
# History pages
'viewpagelogs' => "Dangos logiau'r dudalen hon",
'prefs-tokenwatchlist' => 'Tocyn',
'prefs-diffs' => "Cymharu golygiadau ('gwahan')",
'prefs-help-prefershttps' => "Bydd y dewis yma'n cael ei roi ar waith y tro nesaf i chi fewngofnodi.",
+'prefs-tabs-navigation-hint' => "Awgrym: Gallwch ddefnyddio'r allweddellau sy'n saethau i'r chwith neu i'r dde i lywio rhwng y tabiau ar restr y tabiau.",
# User preference: email validation using jQuery
'email-address-validity-valid' => 'Y cyfeiriad e-bost yn ymddangos yn un dilys',
'recentchanges-label-bot' => 'Golygwyd gan fot',
'recentchanges-label-unpatrolled' => "Nid yw'r golygiad hwn wedi derbyn ymweliad patrôl eto",
'recentchanges-label-plusminus' => "Newidiodd maint y dudalen o'r nifer hwn o feitiau",
+'recentchanges-legend-heading' => "'''Allwedd:'''",
'recentchanges-legend-newpage' => '(gweler hefyd [[Special:NewPages|restr y tudalennau newydd]])',
'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "Isod rhestrir pob newid ers '''$2''' (hyd at '''$1''' ohonynt).",
Cyfyngwyd ar y gallu i ddileu tudalennau sydd wedi eu golygu cymaint â hyn, er mwyn osgoi amharu ar weithrediad databas {{SITENAME}} yn ddamweiniol.",
'delete-warning-toobig' => "Cafwyd dros $1 {{PLURAL:$1|o olygiadau}} i'r dudalen hon.
Gallai dileu tudalen, gyda hanes golygu cymaint â hyn iddi, beri dryswch i weithrediadau'r databas ar {{SITENAME}}; ewch ati'n ofalus.",
+'deleting-backlinks-warning' => "'''Rhybudd:''' Mae tudalennau eraill yn cysylltu i'r dudalen yr ydych ar fin ei dileu.",
# Rollback
'rollback' => 'Gwrthdroi golygiadau',
'imgmultigoto' => "Mynd i'r dudalen $1",
# Language selector for translatable SVGs
+'img-lang-default' => '(diofyn)',
'img-lang-info' => "Cynhyrchu'r ddelwedd yn yr iaith $1. $2",
'img-lang-go' => 'Cynhyrcher',
# Special:Redirect
'redirect' => 'Ailgyfeirio yn ôl enw ffeil, defnyddiwr, tudalen neu ID y diwygiad',
'redirect-legend' => 'Ailgyfeirio i ffeil neu dudalen',
-'redirect-summary' => "Mae'r dudalen arbennig hon yn ailgyfeirio at ffeil (o roi enw'r ffeil), at dudalen (o roi ID rhyw ddiwygiad o'r dudalen), neu at dudalen defnyddiwr (o roi rhif ID y defnyddiwr).
+'redirect-summary' => "Mae'r dudalen arbennig hon yn ailgyfeirio at ffeil (o roi enw'r ffeil), at dudalen (o roi ID rhyw ddiwygiad o'r dudalen neu ID y dudalen), neu at dudalen defnyddiwr (o roi rhif ID y defnyddiwr).
Defnydd:
-[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], neu [[{{#Special:Redirect}}/user/101]].",
+[[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], neu [[{{#Special:Redirect}}/user/101]].",
'redirect-submit' => 'Ati',
'redirect-lookup' => 'Chwilio drwy:',
'redirect-value' => 'Chwilio am:',
'redirect-user' => 'ID defnyddwyr',
+'redirect-page' => 'ID tudalennau',
'redirect-revision' => 'Rhifau diwygiadau tudalennau',
'redirect-file' => 'Enwau ffeiliau',
'redirect-not-exists' => "Heb lwyddo i'w ganfod",
# Special:ExpandTemplates
'expandtemplates' => "Ehangu'r nodynnau",
+'expand_templates_title' => 'Teitl y cyd-destun, ar gyfer {{FULLPAGENAME}}, etc.:',
'expand_templates_input' => 'Cynnwys y mewnbwn:',
'expand_templates_output' => 'Y canlyniad',
'expand_templates_xml_output' => 'Yr allbwn XML',
+'expand_templates_html_output' => 'Allbwn HTML crai',
'expand_templates_ok' => 'Iawn',
'expand_templates_remove_comments' => 'Peidio â dangos sylwadau',
'expand_templates_remove_nowiki' => "Cuddio'r tagiau <nowiki> wrth ehangu",
+'expand_templates_generate_rawhtml' => 'Dangos HTML crai',
'expand_templates_preview' => 'Rhagolwg',
);
'tog-editsection' => 'Redigér afsnit ved hjælp af [redigér]-henvisninger',
'tog-editsectiononrightclick' => 'Redigér afsnit ved at højreklikke på deres titler',
'tog-showtoc' => 'Vis indholdsfortegnelse (på sider med mere end tre afsnit)',
-'tog-rememberpassword' => 'Husk mit login i denne browser (højst $1 {{PLURAL:$1|dag|dage}})',
+'tog-rememberpassword' => 'Husk mig i denne browser (i højst $1 {{PLURAL:$1|dag|dage}})',
'tog-watchcreations' => 'Tilføj sider, jeg opretter, og filer, jeg lægger op, til min overvågningsliste',
'tog-watchdefault' => 'Tilføj sider og filer, jeg redigerer, til min overvågningsliste',
'tog-watchmoves' => 'Tilføj sider og filer, jeg flytter, til min overvågningsliste',
'delete-hook-aborted' => 'Sletningen blev afbrudt af en programfunktion.
Der var ikke nogen forklaring.',
'no-null-revision' => 'Kunne ikke oprette nye tom revision for side "$1"',
-'badtitle' => 'Forkert titel',
-'badtitletext' => 'Den ønskede sides titel var ikke tilladt, tom eller siden er forkert henvist fra en {{SITENAME}} på et andet sprog.
-Den kan indeholde et eller flere tegn, som ikke kan anvendes i titler.',
+'badtitle' => 'Ugyldig titel',
+'badtitletext' => 'Den ønskede sides titel var ikke tilladt, tom eller siden er forkert henvist fra {{SITENAME}} på et andet sprog.
+Den kan indeholde et eller flere tegn, som ikke må anvendes i titler.',
'perfcached' => 'Følgende data er gemt i cachen, der muligvis ikke er helt opdateret. Der gemmes højst {{PLURAL:$1|ét resultat|$1 resultater}} i cachen.',
'perfcachedts' => 'Disse data stammer fra cachen, som senest blev opdateret $1. Der gemmes højst {{PLURAL:$4|ét resultat|$4 resultater}} i cachen.',
'querypage-no-updates' => "'''Opdateringer til denne side er deaktiveret for øjeblikket. Dataene bliver indtil videre ikke fornyet.'''",
'missingcommentheader' => "'''Bemærk:''' Du har ikke angivet en overskrift/emne for denne kommentar. Hvis du trykker \"{{int:savearticle}}\" én gang til, gemmes dine ændringer uden overskrift/emne.",
'summary-preview' => 'Forhåndsvisning af beskrivelsen:',
'subject-preview' => 'Forhåndsvisning af emnet:',
-'blockedtitle' => 'Brugeren er blokeret',
+'blockedtitle' => 'Du eller din IP-adresse er blokeret',
'blockedtext' => "'''Dit brugernavn eller din IP-adresse er blevet blokeret.'''
Blokeringen er foretaget af $1.
'timezoneregion-europe' => 'Europa',
'timezoneregion-indian' => 'Indiske Ocean',
'timezoneregion-pacific' => 'Stillehavet',
-'allowemail' => 'Tillad e-mails fra andre brugere',
+'allowemail' => 'Tillad e-mail fra andre brugere',
'prefs-searchoptions' => 'Søg',
'prefs-namespaces' => 'Navnerum',
'defaultns' => 'Ellers søg i disse navnerum:',
'recentchanges-label-plusminus' => 'Størrelsen på siden blev ændret med dette antal bytes',
'recentchanges-legend-heading' => "'''Forklaring:'''",
'recentchanges-legend-newpage' => '(se også [[Special:NewPages|listen over nye sider]])',
-'recentchanges-legend-plusminus' => '("±123")',
+'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "Nedenfor er op til '''$1''' ændringer siden '''$2''' vist.",
'rclistfrom' => 'Vis nye ændringer startende fra $1',
'rcshowhideminor' => '$1 mindre ændringer',
'brokenredirects' => 'Defekte omdirigeringer',
'brokenredirectstext' => 'Følgende omdirigeringer peger på en side der ikke eksisterer:',
-'brokenredirects-edit' => 'rediger',
+'brokenredirects-edit' => 'redigér',
'brokenredirects-delete' => 'slet',
'withoutinterwiki' => 'Sider uden henvisninger til andre sprog',
'blocklist-target' => 'Mål',
'blocklist-expiry' => 'Udløber',
'blocklist-by' => 'Blokerende administrator',
-'blocklist-params' => 'Block parametre',
+'blocklist-params' => 'Parametre for blokeringen',
'blocklist-reason' => 'Årsag',
'ipblocklist-submit' => 'Søg',
'ipblocklist-localblock' => 'Lokal blokering',
'infiniteblock' => 'udløber ikke',
'expiringblock' => 'udløber $1 $2',
'anononlyblock' => 'kun anonyme',
-'noautoblockblock' => 'Autoblok deaktiveret',
+'noautoblockblock' => 'automatisk blokering slået fra',
'createaccountblock' => 'Oprettelse af brugerkonti spærret',
'emailblock' => 'e-mail blokeret',
'blocklist-nousertalk' => 'kan ikke redigere egen diskussionsside',
'unblocklogentry' => 'ophævede blokering af "$1"',
'block-log-flags-anononly' => 'kun anonyme',
'block-log-flags-nocreate' => 'Oprettelse af brugerkonti blokeret',
-'block-log-flags-noautoblock' => 'Autoblok deaktiveret',
+'block-log-flags-noautoblock' => 'automatisk blokering slået fra',
'block-log-flags-noemail' => 'e-mail blokeret',
'block-log-flags-nousertalk' => 'kan ikke redigere egen diskussionsside',
-'block-log-flags-angry-autoblock' => 'udvidet automatisk blokering slået tilenhanced autoblock enabled',
+'block-log-flags-angry-autoblock' => 'udvidet automatisk blokering slået til',
'block-log-flags-hiddenname' => 'brugernavnet er skjult',
'range_block_disabled' => 'Sysop-muligheden for at oprette blokeringsklasser er slået fra.',
'ipb_expiry_invalid' => 'Udløbstiden er ugyldig.',
'movepage-moved' => 'Siden \'\'\'"$1" er flyttet til "$2"\'\'\'',
'movepage-moved-redirect' => 'En omdirigering er oprettet.',
'movepage-moved-noredirect' => 'Der oprettedes ikke en omdirigering.',
-'articleexists' => 'En side med det navn eksisterer allerede, eller det
+'articleexists' => 'En side med dette navn eksisterer allerede, eller det
navn du har valgt er ikke gyldigt. Vælg et andet navn.',
'cantmove-titleprotected' => 'Du kan ikke omdøbe en side til dette navn. Det nye navn er beskyttet mod oprettelse.',
'movetalk' => 'Flyt også "diskussionssiden", hvis den eksisterer.',
'djvu_no_xml' => 'XML-data kan ikke hentes til DjVu-filen',
'thumbnail-temp-create' => 'Kunne ikke oprette midlertidig miniaturefil',
'thumbnail-dest-create' => 'Kunne ikke gemme miniaturebillede til destinationen',
-'thumbnail_invalid_params' => 'Ugyldige thumbnail-parametre',
+'thumbnail_invalid_params' => 'Ugyldige parametre for miniaturebillede',
'thumbnail_dest_directory' => 'Kataloget kan ikke oprettes.',
'thumbnail_image-type' => 'Billedtypen understøttes ikke',
'thumbnail_gd-library' => 'Ufuldstændig konfiguration af GD-biblioteket: funktionen $1 mangler',
'helplogin-url' => 'Help:Anmelden',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Hilfe beim Anmelden]]',
'userlogin-loggedin' => 'Du bist bereits als {{GENDER:$1|$1}} angemeldet.
-Benutze das unten stehende Formular, um sich unter einem anderen Benutzer anzumelden.',
+Benutze das unten stehende Formular, um dich unter einem anderen Benutzernamen anzumelden.',
'userlogin-createanother' => 'Ein weiteres Benutzerkonto erstellen',
'createacct-join' => 'Gib unten deine Informationen ein.',
'createacct-another-join' => 'Gib unten die Informationen des neuen Benutzerkontos ein.',
'protectedpages' => 'Geschützte Seiten',
'protectedpages-indef' => 'Nur unbeschränkt geschützte Seiten zeigen',
'protectedpages-cascade' => 'Nur Seiten mit Kaskadenschutz',
+'protectedpages-noredirect' => 'Weiterleitungen ausblenden',
'protectedpagesempty' => 'Aktuell sind keine Seiten mit diesen Parametern geschützt.',
'protectedtitles' => 'Geschützte Seitennamen',
'protectedtitlesempty' => 'Zurzeit sind mit den angegebenen Parametern keine Seiten zur Neuerstellung gesperrt.',
'delete-edit-reasonlist' => 'Löschgründe bearbeiten',
'delete-toobig' => 'Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen solcher Seiten wurde eingeschränkt, um eine versehentliche Überlastung der Server zu verhindern.',
'delete-warning-toobig' => 'Diese Seite hat mit mehr als $1 {{PLURAL:$1|Version|Versionen}} eine sehr lange Versionsgeschichte. Das Löschen kann zu Störungen im Datenbankbetrieb führen.',
+'deleting-backlinks-warning' => "'''Warnung:''' Es verweisen noch andere Seiten auf die zu löschende Seite.",
# Rollback
'rollback' => 'Zurücksetzen der Änderungen',
'sat' => 'Bdé',
'january' => 'Çele',
'february' => 'Zemherı',
-'march' => 'Mert',
-'april' => 'Lisan',
+'march' => 'Adar',
+'april' => 'Nisane',
'may_long' => 'Gúlan',
'june' => 'Heziran',
'july' => 'Temuz',
-'august' => 'Ağustos',
+'august' => 'Tebaxe',
'september' => 'Keşkelun',
-'october' => 'Cetan',
-'november' => 'Kelverdan',
-'december' => 'Gağand',
+'october' => 'Tışrino Verên',
+'november' => 'Tışrino Peyên',
+'december' => 'Kanun',
'january-gen' => 'Çele',
'february-gen' => 'Zemherı',
'march-gen' => 'Mert',
-'april-gen' => 'Lisan',
+'april-gen' => 'Nisane',
'may-gen' => 'Gúlan',
'june-gen' => 'Heziran',
'july-gen' => 'Temuz',
-'august-gen' => 'Ağustos',
+'august-gen' => 'Tebaxe',
'september-gen' => 'Keşkelun',
-'october-gen' => 'Cetan',
-'november-gen' => 'Kelverdan',
-'december-gen' => 'Gağand',
+'october-gen' => 'Tışrino Verên',
+'november-gen' => 'Tışrino Peyên',
+'december-gen' => 'Kanun',
'jan' => 'Çel',
'feb' => 'Sbt',
'mar' => 'Adr',
'september-date' => 'Keşkelun $1',
'october-date' => 'Cıtan $1',
'november-date' => 'Qasım $1',
-'december-date' => 'Gağand $1',
+'december-date' => '$1 Kanun',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Kategori|Kategoriy}}',
'about' => 'Heqdé cı',
'article' => 'Wesiqe',
'newwindow' => '(pençereyê newey de beno a)',
-'cancel' => 'Bıterkne',
+'cancel' => 'Bıtexelne',
'moredotdotdot' => 'Vêşi...',
'morenotlisted' => 'Vêşi lista nêbi...',
'mypage' => 'Per',
-'mytalk' => 'Vaten',
+'mytalk' => 'Werênayış',
'anontalk' => 'Pela werênayışê nê IPy',
'navigation' => 'Pusula',
'and' => ' u',
# Cologne Blue skin
'qbfind' => 'Bıvêne',
'qbbrowse' => 'Rovete',
-'qbedit' => 'Timar ke',
+'qbedit' => 'Bıvurne',
'qbpageoptions' => 'Na per',
'qbmyoptions' => 'Peré mı',
'faq' => 'PZP (Persê ke zehf persiyenê)',
'vector-action-unprotect' => 'Starkerdışi bıvurne',
'vector-simplesearch-preference' => 'Çuweya cı geyreyış de rehater aktiv ke (Tenya vector skin de)',
'vector-view-create' => 'İycad ke',
-'vector-view-edit' => 'Timar ke',
-'vector-view-history' => 'Verénan bıvin',
-'vector-view-view' => 'Buwan',
+'vector-view-edit' => 'Bıvurne',
+'vector-view-history' => 'Verênan bıvêne',
+'vector-view-view' => 'Bıwane',
'vector-view-viewsource' => 'Çımi bıvin',
'actions' => 'Hereketi',
'namespaces' => 'Cayê namey',
'errorpagetitle' => 'Ğeta',
'returnto' => 'Peyser şo $1.',
'tagline' => '{{SITENAME}} ra',
-'help' => 'Desteg',
+'help' => 'Peşti',
'search' => 'Cı geyre',
'searchbutton' => 'Cı geyre',
'go' => 'Şo',
'permalink' => 'Gıreyo jûqere',
'print' => 'Nusten ke',
'view' => 'Bıvin',
-'edit' => 'Timar ke',
+'edit' => 'Bıvurne',
'create' => 'İycad ke',
'editthispage' => 'Ena pele bıvurne',
'create-this-page' => 'Na pele bınuse',
'unprotectthispage' => 'Starkerdışe ena peler bıvurne',
'newpage' => 'Pera newiye',
'talkpage' => 'Ena pele sero werêne',
-'talkpagelinktext' => 'Vaten',
+'talkpagelinktext' => 'Werênayış',
'specialpage' => 'Pela xısusiye',
'personaltools' => 'Hacetê şexsiy',
'postcomment' => 'Qısımo newe',
'articlepage' => 'Pela zerreki bıvêne',
-'talk' => 'Vaten',
+'talk' => 'Werênayış',
'views' => 'Asayışi',
'toolbox' => 'Haceti',
'userpage' => 'Pela karberi bıvêne',
'gotaccount' => "Hesabê şıma esto? '''$1'''.",
'gotaccountlink' => 'Dekewtış',
'userlogin-resetlink' => 'Melumatê cıkewtışi xo vira kerdê?',
-'userlogin-resetpassword-link' => 'Şıma parola ke ğo vira?',
+'userlogin-resetpassword-link' => 'Parola xo kerda xo vira?',
'helplogin-url' => 'Help:Qeydbiyayış',
-'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Desteg be qeydbiyayış ra]]',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Peşti be qeydbiyayış ra]]',
+'userlogin-loggedin' => 'Tı xora namey {{GENDER:$1|$1}} ra kewtê/kewtay cı.
+Formê cêrêni bıgureyne ke namey karberio bin ra cı kewê.',
'userlogin-createanother' => 'Zewbi hesab vıraz',
'createacct-join' => 'Cêr melumatê xo cı ke',
'createacct-another-join' => 'Malumata hesabdé ğoye newi dekeré cér.',
'resetpass_forbidden' => 'parolayi nêvuryayi',
'resetpass-no-info' => 'şıma gani hesab akere u hona bıeşke bırese cı',
'resetpass-submit-loggedin' => 'Parola bıvurne',
-'resetpass-submit-cancel' => 'Bıterkne',
+'resetpass-submit-cancel' => 'Bıtexelne',
'resetpass-wrong-oldpass' => 'parolayo parola maqbul niyo.
şıma ya parolaye xo vurnayo ya zi parolayo muwaqqat waşto.',
'resetpass-temp-password' => 'parolayo muweqet:',
'changeemail-none' => '(Çıno)',
'changeemail-password' => 'Parolaya şımaya {{SITENAME}}i:',
'changeemail-submit' => 'E-postay xo bıvurne',
-'changeemail-cancel' => 'Bıterkne',
+'changeemail-cancel' => 'Bıtexelne',
# Special:ResetTokens
'resettokens' => 'Reset fi ye',
# Edit pages
'summary' => "<font style=\"color:Blue\">'''Xulasa:'''</font>",
'subject' => 'Mewzu/sernuşte:',
-'minoredit' => 'Vırnayışa werkek',
+'minoredit' => 'No vırnayışê do werdiyo',
'watchthis' => "'''Ena pele seyr ke'''",
'savearticle' => 'Pele qeyd ke',
'preview' => 'Verqayt',
Hewna kerde aseno.',
'edit-conflict' => 'Vurnayişê pêverdiyaye .',
'edit-no-change' => 'Vurnayişê şıma qebul nêbı, çunke nuşte de yew vurnayiş n3evıraziya.',
-'postedit-confirmation' => 'Vurnayış qeyd be',
+'postedit-confirmation' => 'Vurnayışê to qeyd bi.',
'edit-already-exists' => 'Pelo newe nêvıraziyeno.
Pel ca ra esto.',
'defaultmessagetext' => 'Hesıbyaye metne mesaci',
'undo-success' => 'No vurnayiş tepeye geryeno. pêverronayişêyê cêrıni kontrol bıkeri.',
'undo-failure' => 'Sebayê pêverameyişê vurnayişan karo tepêya gırewtış nêbı.',
'undo-norev' => 'Vurnayiş tepêya nêgeryeno çunke ya vere cû hewna biyo ya zi ca ra çino.',
-'undo-summary' => "Vırnayışa $1'i be terefê [[Special:Contributions/$2|$2i]] ([[User talk:$2|vatenayış]]) peyser grot",
+'undo-summary' => "Vırnayışê $1'i [[Special:Contributions/$2|$2i]] ([[User talk:$2|Werênayış]]) peyser gırewt",
'undo-summary-username-hidden' => "Rewizyona veri $1'i hewada",
# Account creation failure
'revdelete-hide-text' => 'Nuştey revizyoni',
'revdelete-hide-image' => 'zerreyê dosyay bınımnê',
'revdelete-hide-name' => "hedef u vaqa' bınımne",
-'revdelete-hide-comment' => 'Menıni timar ke',
+'revdelete-hide-comment' => 'Xulasa bıvurne',
'revdelete-hide-user' => 'IP asresa/namey vırnoği',
'revdelete-hide-restricted' => 'Malumatan pa serkaran u karberan ra bınım.',
'revdelete-radio-same' => '(mevurne)',
'right-viewmywatchlist' => 'Lista seyr de xo bıvin',
'right-editmywatchlist' => 'Listeya temaşiya karberinda ğo timar ke.Not tay karfinayışi na icazet nédeyo zi pera dekeno de.',
'right-viewmyprivateinfo' => 'Bağse malumatané ğo bıasne (e-posta, nameyo raştay vs.)',
-'right-editmyprivateinfo' => 'Bağse malumatané ğo bıvırn (e-posta, nameyo raştay vs.)',
-'right-editmyoptions' => 'Tercihané Ä\9fo bıvırn',
+'right-editmyprivateinfo' => 'Melumatanê xoyê şexsiyan bıvurne (adresa e-postey, nameyo raştıkên uêb.)',
+'right-editmyoptions' => 'Tercihanê xo bıvurne',
'right-rollback' => 'Lez/herbi vurnayışanê karberê peyêni tekrar bıke, oyo ke yew be yew pelê sero gureyao',
'right-markbotedits' => 'Vurnayışanê peyd ameyan, vurnayışê boti deye nışan kerê',
'right-noratelimit' => 'Sinoranê xızi (rate limit) ra tesir nêbi',
'recentchanges-legend-newpage' => '(Zewbi bıvin [[Special:NewPages|Listeya peran de newan]])',
'recentchanges-legend-plusminus' => "''(±123)''",
'rcnotefrom' => "Cêr de '''$2''' ra nata vurnayışiyê asenê (tewr vêşi <b> '''$1'''</b> asenê).",
-'rclistfrom' => '$1 ra tepya vırnayışané newan bıasne',
+'rclistfrom' => '$1 ra tepiya vurnayışanê neweyan bımocne',
'rcshowhideminor' => 'Vırnayışané werkekean $1',
'rcshowhidebots' => 'Botan $1',
'rcshowhideliu' => 'Karberé qeydınan $1',
'rcshowhideanons' => 'Karberané bénaman $1',
'rcshowhidepatr' => '$1 vurnayışê ke dewriya geyrayê',
'rcshowhidemine' => 'Vurnayışanê mı $1',
-'rclinks' => '$2 rocan peynira $1 vurnayışan bıasne <br />$3',
+'rclinks' => 'Peyniya $2 rocan de $1 vurnayışan bımocne <br />$3',
'diff' => 'ferq',
'hist' => 'verên',
'hide' => 'Bınımne',
-'show' => 'Bıasne',
+'show' => 'Bımocne',
'minoreditletter' => 'q',
'newpageletter' => 'N',
'boteditletter' => 'b',
'newpages' => 'Peré newey',
'newpages-username' => 'Nameyê karberi:',
'ancientpages' => 'Wesiqeyê ke vurnayışê ciyê peyeni tewr kehani',
-'move' => 'Ber',
+'move' => 'Bere',
'movethispage' => 'Na perer ber',
'unusedimagestext' => 'Enê dosyey estê, feqet zerrey yew pele de wedardey niyê.
Xo vira mekerê ke, sıteyê webiê bini şenê direkt ebe URLi yew dosya ra gırê bê, u wına şenê verba gurênayışo feal de tiya hewna lista bê.',
'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' => 'Qeydê bloqi',
-'sp-contributions-deleted' => 'iştırakê karberiê esterıtey',
+'sp-contributions-blocklog' => 'Qeydê blokey',
+'sp-contributions-deleted' => 'İştırakê karberi esterd',
'sp-contributions-uploads' => 'barkerdey',
'sp-contributions-logs' => 'qeydi',
'sp-contributions-talk' => 'werênayış',
-'sp-contributions-userrights' => 'İdareyê heqanê karberan',
+'sp-contributions-userrights' => 'idareyê heqanê karberan',
'sp-contributions-blocked-notice' => 'verniyê no/na karber/e geriyayo/a
qê referansi qeydê vernigrewtışi cêr de eşkera biyo:',
'sp-contributions-blocked-notice-anon' => 'Eno adresê IPi bloke biyo.
'ipblocklist-empty' => 'Lista kılitkerdışi venga.',
'ipblocklist-no-results' => 'Adresa IPya waştiye ya zi namey karberi kılit nêbiyo.',
'blocklink' => 'kılit ke',
-'unblocklink' => 'bloqi hewad',
+'unblocklink' => 'bloki wedare',
'change-blocklink' => 'kılitkerdışi bıvurne',
'contribslink' => 'iştıraqi',
'emaillink' => 'e-poste bırışe',
'sorbs_create_account_reason' => 'IP adresa şıma, hetê no translatewiki.net keyepeli ra DNSBL de proxy hesibyayo u liste biyo.
şıma neeşkeni hesab bıvırazi',
+'xffblockreason' => 'Yew adresê İP sernuştey X-Forwarded-For de esto, ya ê to ya ki ê proxy serverio ke tı gureynenê (xebetnenê), bloke biyo. Sebebê blokekerdışio esıl no bi: $1',
'cant-see-hidden-user' => 'karber o ke şıma gêreni verniyê ey bıgeri ca ra verniyê ey gırewteyo u pinani kerdeyo.',
'ipbblocked' => 'Ti nieşkena karberanê binan bloke bike ya zi a bike cunki ti bloke biya',
'ipbnounblockself' => 'Ti nieşkena xo a bike',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Pera şımaya karberi',
'tooltip-pt-anonuserpage' => 'pelê karberê IPyi',
-'tooltip-pt-mytalk' => 'Pera şımaya vaten',
+'tooltip-pt-mytalk' => 'Pela toya werênayışi',
'tooltip-pt-anontalk' => 'vurnayiş ê ke no Ipadresi ra biyo muneqeşa bıker',
'tooltip-pt-preferences' => 'Tercihi',
'tooltip-pt-watchlist' => 'Lista pelanê ke to gırewtê seyrkerdış',
'tooltip-pt-login' => 'Mayê şıma ronıştış akerdışi rê dawet keme; labelê ronıştış mecburi niyo',
'tooltip-pt-anonlogin' => 'Seba cıkewtışê şıma rê dewato; labelê, no zeruri niyo',
'tooltip-pt-logout' => 'Sistem ra vıcyayış',
-'tooltip-ca-talk' => 'Heqdé zerreki vatenayış',
+'tooltip-ca-talk' => 'Zerrekê pele sero werênayış',
'tooltip-ca-edit' => 'Tı şenay na perer bıvurné.Verdé qeyd kerdışi ver gocega verqayti bıkarné.',
'tooltip-ca-addsection' => 'Zu bınnusteya newi ak',
'tooltip-ca-viewsource' => 'Ena pele kılit biya.
'tooltip-ca-unprotect' => 'Starkerdışe ena peler bıvurne',
'tooltip-ca-delete' => 'Ena perer bestern',
'tooltip-ca-undelete' => 'peli biyarê halê ver hewnakerdışi',
-'tooltip-ca-move' => 'Na perer ber',
+'tooltip-ca-move' => 'Ena pele bere',
'tooltip-ca-watch' => 'Ena pele lista xoya seyrkerdışi ke',
'tooltip-ca-unwatch' => 'Ena pele listeya seyir-kerdışi xo ra bıvec',
'tooltip-search' => '{{SITENAME}} miyan de bıvin',
'tooltip-n-currentevents' => 'Vurnayışanê peyênan de melumatê pey bıvêne',
'tooltip-n-recentchanges' => 'Wiki de lista vurnayışanê peyênan',
'tooltip-n-randompage' => 'Perake raşt amé',
-'tooltip-n-help' => 'Cay desteg grotışi',
+'tooltip-n-help' => 'Cayê peştigırewtışi',
'tooltip-t-whatlinkshere' => 'Lista pelanê wikiya pêroina ke tiya gırê bena',
'tooltip-t-recentchangeslinked' => 'Vurnayışê peyênê pelanê ke ena pela ra gırê biyê',
'tooltip-feed-rss' => 'RSS feed qe ena pele',
'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Script path]',
# Special:Redirect
-'redirect' => "Hetenayışa dosyay, karberi yana rewizyona ID'i",
+'redirect' => 'Serşıkıtena dosya, karberi, pele ya ki revizyonê kamiya dosya',
'redirect-legend' => 'Hetenayışa dosya yana pela',
-'redirect-summary' => "Na pera bağsi şıma bena dosya (cıré namey dosya deyeno), zu per (zu ID'A rewizyoni deyaya) yana cıré zu pera karberi beno herın (kamiya karberiya amoriyen). Karkerden: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], yana [[{{#Special:Redirect}}/user/101]].",
+'redirect-summary' => 'Na pela xase to hetê jû dosya (namey dosya daeyo), jû pele (kamiya revizyoni ya ki pele daiya) ya ki jû pela karberi (kamiya karberia reqemkiye daiya) ser şıknena. Gurenayış: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], ya ki [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Şo',
'redirect-lookup' => 'Bewni',
'redirect-value' => 'Erc:',
'redirect-user' => 'Kamiya Karberi:',
+'redirect-page' => 'Kamiya pele',
'redirect-revision' => 'Rewizyona pela',
'redirect-file' => 'Namey dosya',
'redirect-not-exists' => 'Erc nêvineyê',
'tags-active-yes' => 'E',
'tags-active-no' => 'Nê',
'tags-edit' => 'bıvurne',
-'tags-hitcount' => '$1 {{PLURAL:$1|vırnayış|vırnayışi}}',
+'tags-hitcount' => '$1 {{PLURAL:$1|vurnayış|vurnayışi}}',
# Special:ComparePages
'comparepages' => 'Pela miqeyese ke',
'feedback-bugornote' => 'Jew mersela teferruato teknik esta şıma reca malumatê şıma hazıro se [ $1 jew xırab rapor] bıvinê.Zewbi zi, formê cerê xo rê şenê karfiyê. Vatışê xo pela da "[ $3 $2 ]", namey karber dê xoya piya u wasteriya karfiye.',
'feedback-subject' => 'Mersel:',
'feedback-message' => 'Mesac:',
-'feedback-cancel' => 'Bıterkne',
+'feedback-cancel' => 'Bıtexelne',
'feedback-submit' => 'Peyxeberdar Bırşe',
'feedback-adding' => 'Pela rê peyxeberdar defêno...',
'feedback-error1' => 'Xeta: API ra neticey ne vıcyay',
'otherlanguages' => 'W drugich rěcach',
'redirectedfrom' => '(pósrědnjone z boka „$1”)',
'redirectpagesub' => 'Dalejpósrědnjenje',
-'lastmodifiedat' => 'Slědna změna boka: $1 w $2 goź.',
+'lastmodifiedat' => 'Slědna změna boka: $1 w $2 góź.',
'viewcount' => 'Toś ten bok jo był woglědany {{PLURAL:$1|jaden raz|$1 raza|$1 raze}}.',
'protectedpage' => 'Śćitany bok',
'jumpto' => 'Źi na bok:',
'delete-toobig' => 'Toś ten bok ma z wěcej nježli $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujku historiju. Lašowanje takich bokow bu wobgranicowane, aby wobškoźenju {{GRAMMAR:genitiw|{{SITENAME}}}} z pśigódy zajźowało.',
'delete-warning-toobig' => 'Toś ten bok ma z wěcej ako $1 {{PLURAL:$1|wersiju|wersijomaj|wersijami|wersijami}} dłujke stawizny. Jich wulašowanje móžo źěło datoweje banki na {{SITENAME}} kazyś;
póstupujśo z glědanim.',
+'deleting-backlinks-warning' => "'''Warnowanje:''' Druge boki wótkazuju k bokoju, kótaryž coš wulašowaś.",
# Rollback
'rollback' => 'Wobźěłanja slědk wześ',
# Metadata
'metadata' => 'Metadaty',
-'metadata-help' => 'Toś ta dataja wopśimjejo pśidatne informacije, kótarež nejskerjej póchadaju wót digitalneje kamery abo scannera. Jolic dataja bu pozdźej změnjona, njeby mógli někotare detaile změnjonu dataju wótbłyšćowaś.',
+'metadata-help' => 'Toś ta dataja wopśimjejo pśidatne informacije, kótarež nejskerjej póchadaju wót digitalneje kamery abo scannera. Jolic dataja bu pózdźej změnjona, njeby mógli někotare detaile změnjonu dataju wótbłyšćowaś.',
'metadata-expand' => 'rozšyrjone detaile pokazaś',
'metadata-collapse' => 'rozšyrjone detaile schowaś',
'metadata-fields' => 'Slědujuce póla metadatow, kótarež su w toś tej powěźeńce pódane, budu se do bokow wopisanja wobrazow zapśimowaś, gaž tabela metadatow jo schowana. Druge se pó standarźe njepokazuju.
'tog-showtoc' => "Fà vèder al sûnt (p'r al pàgini cun pió 'd 3 sesiòun)",
# Dates
+'sunday' => 'Dumènica',
+'monday' => 'lunedé',
+'tuesday' => 'Martedé',
+'wednesday' => 'Mercordé',
+'thursday' => 'Giovedé',
+'friday' => 'Venerdé',
+'saturday' => 'Sâbet',
'sun' => 'Dum',
'mon' => 'Lun',
'tue' => 'Mar',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Categoréia!Categoréi}}',
+'category_header' => "Pàgini 'd la categoréia $1",
'hidden-categories' => '{{PLURAL:$1|Categoréia lughêda|Categoréi lughêdi}}',
+'category-subcat-count' => "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'n'ónica sòt-categoréia.| In cla categoréia ché a gh'é {{PLURAL:$1|la sòt-categoréia sgnêda|al $1 sòt-categoréi sgnêdi}} ed sègvit, só 'n totêl ed $2.}}",
+'category-article-count' => "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'na pàgina, sgnêda ché.|In cla categoréia ché gh'é{{PLURAL:$1|la pàgina sgnêda| al pàgini $1 sgnêdi}} ed sègvit, in un totêl ed $2.}}",
'about' => 'Infumasiòun',
+'newwindow' => "(a s'arvés 'na fnèstra nōva)",
'cancel' => 'Scanşèla',
'mytalk' => 'Al mē discusiòun',
'navigation' => 'Navigasiòun',
'faq' => 'Dmândi fâti',
# Vector skin
+'vector-action-addsection' => 'Zûnta discusiòun',
'vector-action-delete' => 'Scanşèla',
'vector-action-move' => 'Spôsta',
'vector-action-protect' => 'Prutēz',
'talk' => 'Discusiòun',
'views' => 'Vîşiti',
'toolbox' => 'Strumèint',
-'userpage' => "Guêrda la pàgina 'd l'uteint",
+'userpage' => 'Guêrda la pàgina utèint',
'projectpage' => 'Guêrda la pàgina dal prugèt',
'imagepage' => "Guêrda la pàgina dal 'file'",
'mediawikipage' => 'Guêrda al mesâg',
'nstab-image' => "'File'",
'nstab-mediawiki' => 'Mesâg',
'nstab-template' => 'Mudèl',
-'nstab-help' => 'Ajót',
+'nstab-help' => 'Per quî rivê da pôch',
'nstab-category' => 'Categoréia',
# General errors
# Edit page toolbar
'bold_sample' => 'Grasèt',
+'bold_tip' => 'Grasèt',
'italic_sample' => 'Cursîv',
+'italic_tip' => 'Cursîv',
+'link_sample' => 'Tétol dal colegamèint',
+'link_tip' => 'Colegamèint intêren',
+'extlink_sample' => 'http://www.example.com tétol dal colegamèint',
+'extlink_tip' => "Colegamèin d'ed fōra (ricôrdet ed mèter préma http://)",
+'headline_sample' => 'Intestasiòun',
+'headline_tip' => 'Intestasiòun ed 2° livèl',
+'nowiki_sample' => 'Mèt dèinter ché al tèst mìa furmatê',
+'nowiki_tip' => 'An badêr mìa la furmatasiòun wiki',
+'image_tip' => 'Mèt dèinter al file',
'media_tip' => "Colegamèint al 'file'",
+'sig_tip' => "Fîrma cun la dâta e l'ōra",
+'hr_tip' => 'Rîga spiâna (drōva cun giudési)',
# Edit pages
'summary' => 'Sûnt:',
+'minoredit' => "Còsta l'é 'na mudéfica céca",
+'watchthis' => 'Tîn adrē a cla pàgina ché',
'savearticle' => 'Sêlva la pàgina',
'preview' => 'Guêrda préma',
'showpreview' => "Guêrda préma 'd salvêr",
'showdiff' => 'Guêrda i cambiamèint',
+'anoneditwarning' => "'''Atensiòun:''' Ingrès mìa fât. Al tó indirés IP al srà sgnê int la stòria ed cla pàgina chè.",
'blockedtitle' => 'Utèint bluchê',
'newarticle' => '(Nōv)',
+'newarticletext' => "Al colegamèint apèina fât al cumbîna cun 'na pàgina ch' an n'é mìa incòra stêda fâta. S'ét vō fêr la pàgina adès, l'é asê cumincêr a scréver al tèst int la caşèla ché sòt (per vedèr infurmasiòun pió precîşi guêrda la [[{{MediaWiki:Helppage}}|pàgina 'd ajót]]). Se al colegamèint l'é stê avêrt per erōr, l'é asê clichêr al pulsânt \"Indrē\" dal tó navigadōr.",
'noarticletext' => 'In cól mumèint ché la pàgina serchêda l\'é vōda. L\'é pusébil [[Special:Search/{{PAGENAME}}|serchêr sté tétol]] int al j êtri pàgini dal sît, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchêr int i regéster coleghê] opór [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifichêr la pàgina adèsa]</span>.',
+'noarticletext-nopermission' => "In cól mumèint ché la pàgina serchêda l'é vōda. L'é pusébil [[Special:Search/{{PAGENAME}}|serchêr sté tétol]] int al j êtri pàgini dal sît o<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchêr int i regéster coleghê] <span>, mó an 't gh'ê mìa al permès ed fêr cla pàgina ché.",
'note' => "'''Nôta:'''",
'editing' => 'Mudéfica ed $1',
'editingsection' => 'Mudéfica ed $1 (sesiòun)',
'log-fulllog' => 'Guêrda la stòria dal registrasiòun',
'edit-conflict' => "Cuntrâst 'd edisiòun",
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Atensiòun:''' la grandèsa di mudē més dèinter l'é trôp grôsa. Soquânt mudē gnirâ mìa més dèinter.",
+'post-expand-template-inclusion-category' => "Pàgini in dó la grandèsa di mudē més dèinter la và d'ed sōver dal lémit permés.",
+
# History pages
'viewpagelogs' => "Guêrda la stòria 'd cla pàgina ché",
'currentrev' => 'Ûltma revişiòun',
# Diffs
'lineno' => 'Rîga $1:',
+'compareselectedversions' => 'Cunfrûnta al revisiòun sernîdi.',
'editundo' => 'scanşèla',
# Search results
'nextn-title' => '{{PLURAL:$1|Al rişultêt ed préma|$1 i rişultêt ed préma}}',
'shown-title' => 'Fà vèder {{PLURAL:$1|un rişultêt|$1 di rişultêt}}',
'viewprevnext' => 'Guêrda ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-new' => "'''Şvilópa la pàgina \"[[:\$1]]\" insém a cól sît ché! '''{{PLURAL:\$2|0=|Guêrda ânch i rişultêt catê}}.",
'searchprofile-articles' => "Pàgini 'd j argumèint",
'searchprofile-project' => "Pàgini 'd ajót e relatîvi al prugèt.",
'searchprofile-images' => 'Multimèdia',
'search-result-size' => "$1 ({{PLURAL:$2|'na parôla|$2 parôli}})",
'search-redirect' => '(redirect $1)',
'search-section' => '(sesiòun $1)',
+'search-suggest' => "Fōrsi 't serchêv $1",
'search-interwiki-caption' => 'Prugèt fradē',
'search-interwiki-default' => 'Rişultêt da $1:',
'search-interwiki-more' => '(êter)',
'searchall' => 'tót',
'showingresultsheader' => "{{PLURAL:$5|Al risultêt '''$1''' ed '''$3'''|I risultêt '''$1 - $2''' ed '''$3'''}} per '''$4'''",
+'search-nonefound' => "La sērca an n'à mìa dê di rişultê.",
'powersearch-toggleall' => 'Tót',
'powersearch-togglenone' => 'Nisûn',
# Recent changes
'recentchanges' => 'Ûltmi mudéfichi',
+'recentchanges-legend' => 'Siēlti ûltmi mudéfichi.',
+'recentchanges-label-newpage' => "Cun cla mudéfica ché t'é fât 'na pàgina nōva.",
+'recentchanges-label-minor' => "Còsta l'é 'na mudéfica céca",
+'recentchanges-label-bot' => "Cla mudéfica ché l'é stêda fâta da un bot.",
+'recentchanges-label-unpatrolled' => "Cla mudéfica ché an n'é mìa incòra stêda verifichêda.",
+'rclistfrom' => 'Fà vèder al mudéfichi fâti a partîr da $1.',
+'rcshowhideminor' => '$1 al mudéfichi céchi',
'rcshowhidebots' => '$1 i bot',
+'rcshowhideliu' => '$1 j utèint registrê',
+'rcshowhideanons' => '$1 j utèint sèinsa nòm.',
'rcshowhidemine' => '$1 al mē mudéfichi',
+'rclinks' => 'Fà vèder al $1 ûltmi mudéfichi fâti int j ûltem $2 dé<br />$3',
'diff' => 'dif',
'hist' => 'stòr',
'hide' => 'Lōga',
'boteditletter' => 'b',
'number_of_watching_users_pageview' => '[vésta da {{PLURAL:$1|un utèint|$1 utèint}}]',
'rc_categories_any' => "Bast' ech sia",
+'rc-enhanced-expand' => 'Fà vèder i particulêr.',
+'rc-enhanced-hide' => 'Lōga i particulêr.',
# Recent changes linked
+'recentchangeslinked' => 'Mudéfichi coleghêdi',
'recentchangeslinked-toolbox' => 'Mudéfichi coleghêdi',
+'recentchangeslinked-title' => 'Mudéfichi coleghêdi a $1.',
'recentchangeslinked-summary' => "Cla pàgina specêla ché la fà vèder al j ûltmi mudéfichi al pàgini coleghêdi da còla sgnêda (o dèinter int la categoréia sgnêda). Al pàgini dèint a la tó lésta 'd j [[Special:Watchlist|tgnû sòt ôc specêl]] în sgnêdi in '''grasèt'''.",
+'recentchangeslinked-page' => "Nòm ' d la pàgina.",
+'recentchangeslinked-to' => 'Fà vèder sōl al mudéfichi fâti al pàgini coleghêdi a còla sgnêda.',
# Upload
'upload' => "Cârga un 'file'",
+'filedesc' => 'Sûnt.',
'license' => 'Licèinsa:',
'license-header' => 'Licèinsa',
# File description page
'file-anchor-link' => "'File'",
'filehist' => "Stòria 'd la pàgina",
-'filehist-current' => "(d'adèsa)",
+'filehist-help' => "Fà cléch insém a 'n gróp dâta/ōra per vèder al file cm'é l'ēra int al mumèint e-sgnê",
+'filehist-current' => '(adès)',
'filehist-datetime' => 'Dâta/Ōra',
'filehist-thumb' => 'Miniadûra',
+'filehist-thumbtext' => 'Miniadûra ed la revisiòun dal $1.',
'filehist-user' => 'Utèint',
'filehist-dimensions' => 'Amzûri',
'filehist-comment' => 'Cumèint',
'imagelinks' => "Ûş dal 'file'",
+'linkstoimage' => "{{PLURAL:$1|Int la pàgina seguèint a gh'é|Int al seguèinti $1 pàgini a gh'é}} colegamèint al file:",
+'sharedupload-desc-here' => "Cól file ché al deşvîn da $1 e al pōl èser druvê da êter prugèt. Ed sègvit a vîn fât vèder la spiegasiòun che gh'é int la [$2 pàgina de spiegasiòun dal file].",
# File deletion
'filedelete-submit' => 'Scanşela',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
+'nmembers' => '$1 {{PLURAL:$1|elemèint}}',
'newpages' => 'Pàgini pió nōvi',
'move' => 'Spôsta',
'alphaindexline' => 'da $1 a $2',
'allpagessubmit' => 'Và',
+# Special:Categories
+'categories' => 'Categoréi',
+
# Special:ListUsers
'listusers-submit' => 'Fà vèder',
# Namespace form on various pages
'namespace' => 'Spâsi di nòm',
+'invert' => "scâmbia 'l pêrti siēlta",
'blanknamespace' => '(Principêl)',
# Contributions
-'contributions' => 'Lavōr fât da {{GENDER:$1|utèint}}',
+'contributions' => "Lavōr fât da {{GENDER:$1|l'utèint}}",
'contributions-title' => 'Lavōr ed $1',
'mycontris' => 'I mē lavōr',
'contribsub2' => 'Per {{GENDER:$3|$1}}($2)',
-'uctop' => "(d'adèsa)",
+'uctop' => '(adès)',
'sp-contributions-submit' => 'Sērca',
# What links here
'whatlinkshere' => 'A pûnten ché',
+'whatlinkshere-title' => 'Pàgini che pûnet a "$1"',
'whatlinkshere-page' => 'Pàgina:',
+'isimage' => "Colegamèint vêrs al 'file'",
'whatlinkshere-links' => '← colegamèint',
+'whatlinkshere-hideredirs' => '$1redirect',
+'whatlinkshere-hidetrans' => '$1 uniòun',
+'whatlinkshere-hidelinks' => '$1 colegamèint',
+'whatlinkshere-filters' => 'Fîlter',
# Block/unblock
'block' => "Blôca l'utèint",
'unblock' => "Şblôcä l'utèint",
'blockip' => "Blôcä l'utèint",
'blockip-legend' => "Blôcä l'utèint",
+'ipboptions' => '2 ōri:2 hours,1 dé:1 day,3 dé:3 days,1 stmâna:1 week,2 stâni:2 weeks,1 mèiş:1 month,3 mèiş:3 months,6 mèiş:6 months,1 ân:1 year,infinito:infinite',
'ipb-unblock-addr' => 'Şblôcä $1',
'unblockip' => "Şblôcä l'utèint",
'blocklist' => 'Utèint bluchê',
+'ipblocklist' => 'Utèint bluchê',
'ipblocklist-submit' => 'Sērca',
'ipblocklist-otherblocks' => 'Êter {{PLURAL:$1|blôch}}',
'blocklink' => 'blôca',
'revertmove' => 'armèt',
# Export
+'export' => "Pôrta fōra 'l pàgini.",
'export-submit' => 'Pôrta fōra',
# Namespace 8 related
'tooltip-pt-logout' => 'Và fōra',
'tooltip-ca-talk' => 'Guêrda al discusiòun relatîvi a cla pàgina chè.',
'tooltip-ca-edit' => 'Ét pō mudifiche cla pàgina ché. Per piaşèir drōva al ptòun "Guêrda préma" préma \'d salvêr còl che t\'é fât.',
+'tooltip-ca-addsection' => "Cumîncia 'na sesiòun nōva.",
'tooltip-ca-viewsource' => "Cla pàgina ché l'é sòta prutesiòun, mó 't pō vèder al só côdis surzéia.",
'tooltip-ca-history' => 'Revişiòun fâti a cla pàgina ché.',
'tooltip-ca-move' => 'Spôsta cla pàgina ché (câmbia tétol)',
'tooltip-ca-watch' => "Zûnta cla pàgina ché a la tó lésta di tgnû 'd ôc specêl.",
+'tooltip-ca-unwatch' => "Tó via cla pàgina ché da la tó lésta di tgnû 'd ôc specêl.",
'tooltip-search' => 'Sērca dèinter ed {{SITENAME}}',
+'tooltip-search-go' => "Và a'na pàgina cun al tétol sgnê, s' al gh'é.",
'tooltip-search-fulltext' => 'Sērca int al pàgini al tèst e-sgnê.',
'tooltip-p-logo' => 'Guêrda la pàgina principêla',
'tooltip-n-mainpage' => 'Guêrda la pàgina principêla',
'tooltip-t-whatlinkshere' => "Elèinch ed tót' al pàgini ch'în coleghêdi a còsta.",
'tooltip-t-recentchangeslinked' => 'Elèinch dal j ûltmi mudéfichi al pàgini coleghêdi a còsta.',
'tooltip-feed-atom' => 'Feed Atom per cla pàgina ché.',
+'tooltip-t-contributions' => "Lèsta di lavōr fât da cl'utèint ché.",
'tooltip-t-upload' => "Cârga un 'file'",
'tooltip-t-specialpages' => 'Elèinch ed tót al pàgini specêli',
'tooltip-t-print' => 'Per stampêr cla pàgina ché.',
-'tooltip-t-permalink' => "Colegamèint fés a cla rervişiòun ché 'd la pàgina.",
+'tooltip-t-permalink' => "Colegamèint fés a cla revişiòun ché 'd la pàgina.",
'tooltip-ca-nstab-main' => 'Guêrda la pàgina',
+'tooltip-ca-nstab-user' => 'Guêrda la pàgina utèint',
'tooltip-ca-nstab-project' => 'Guêrda la pàgina dal prugèt',
'tooltip-ca-nstab-image' => "Guêrda la pàgina dal 'file'",
'tooltip-ca-nstab-template' => "Guêrda 'l template",
'tooltip-ca-nstab-help' => "Guêrda la pàgina d'ajót",
'tooltip-ca-nstab-category' => "Guêrda la pàgina 'd la categoréia",
'tooltip-save' => 'Sêlva al mudéfichi',
+'tooltip-preview' => "Guêrda al mudéfichi préma 'd salvêr (cunsiliê préma 'd salvêr)",
+'tooltip-diff' => "Guêrda 'l mudéfichi fâti al tèst",
+'tooltip-compareselectedversions' => "Guêrda al diferèinsi tr' al dō revisiòun sernîdi ed cla pàgina ché.",
'tooltip-rollback' => "\"Rollback\" al scanşèla cun un cléch tót' al mudéfichi fâti a cla pàgina ché da l'ûltem ch' al gh'à més al mân.",
'tooltip-undo' => '"Scanşèla" al permèt de scanşlêr cla mudéfica ché e l\'arvés al mudèl ed mudéfica in môd "Guerda préma". E al permèt ed mèter dèinter \'na spiegasiòun int l\' elemèint ed la mudéfica.',
+'tooltip-summary' => 'Mèt dèinter un sût cèch.',
# Attribution
'others' => 'êter',
'nextdiff' => 'Diferèinsa dôp →',
# Media information
+'file-info-size' => '$1 × $2 pixel, amzûra dal file:$3, gèner MIME: $4',
+'file-nohires' => "An gh'é mìa la manēra ed vèder pió cêr de csé.",
+'show-big-image' => 'File uriginêl',
'file-info-gif-looped' => 'A ripetisiòun',
'file-info-png-looped' => 'A ripetisiòun',
# Metadata
'metadata' => 'Metadati',
+'metadata-help' => "In cól file ché agh'é dal j infurmasiòun zuntêdi, prubabilmèint zuntêdi da la mâchina fotogrâfica o dal scàner druvê per fotografêrel o per fêrel dvintêr digitêl. Se al file l'é stê mudfifichê, soquânt particulêr a prén cumbinêr mìa cun la realtê.",
+'metadata-fields' => "I câmp relatîv a i metadati ed la figûra, in lésta in cól mesâg ché, a gnirân més int la pàgina ed la figûra quând la tabèla di metadati l'é mustrêda int la fōrma cûrta. Per impustasiòun pre-stabilîda, chiêter câmp a gnirân lughê.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# Exif tags
'exif-exposuretime-format' => '$1 s ($2)',
'specialpages' => 'Pàgini specêli',
# Special:Tags
+'tag-filter' => 'Fîlta per [[Special:Tags|etichèta]]',
'tags-edit' => 'mudéfica',
# Special:ComparePages
Please enter a well-formatted address or empty that field.',
'cannotchangeemail' => 'Account email addresses cannot be changed on this wiki.',
'emaildisabled' => 'This site cannot send emails.',
+'emailsender' => '{{SITENAME}}', # do not translate or duplicate this message to other languages
'accountcreated' => 'Account created',
'accountcreatedtext' => 'The user account for [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) has been created.',
'createaccount-title' => 'Account creation for {{SITENAME}}',
'protectedpages-indef' => 'Indefinite protections only',
'protectedpages-summary' => '', # do not translate or duplicate this message to other languages
'protectedpages-cascade' => 'Cascading protections only',
+'protectedpages-noredirect' => 'Hide redirects',
'protectedpagesempty' => 'No pages are currently protected with these parameters.',
'protectedtitles' => 'Protected titles',
'protectedtitles-summary' => '', # do not translate or duplicate this message to other languages
'historywarning' => "'''Warning:''' The page you are about to delete has a history with approximately $1 {{PLURAL:$1|revision|revisions}}:",
'confirmdeletetext' => 'You are about to delete a page along with all of its history.
Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
+'deleting-backlinks-warning' => "'''Warning:''' Other pages link to the page you are about to delete.",
'actioncomplete' => 'Action complete',
'actionfailed' => 'Action failed',
'deletedtext' => '"$1" has been deleted.
'api-error-unknownerror' => 'Unknown error: "$1".',
'api-error-uploaddisabled' => 'Uploading is disabled on this wiki.',
'api-error-verification-error' => 'This file might be corrupt, or have the wrong extension.',
+'api-error-stasherror' => 'There was an error while uploading the file to stash.',
# Durations
'duration-seconds' => '$1 {{PLURAL:$1|second|seconds}}',
'cantcreateaccounttitle' => 'Ei saa kontot luua',
'cantcreateaccount-text' => "Kasutaja [[User:$3|$3]] on blokeerinud kasutajanime loomise sellelt IP-aadressilt ('''$1''').
Kasutaja $3 märkis põhjuseks ''$2''",
+'cantcreateaccount-range-text' => "Kontode loomine IP-aadressidelt vahemikus '''$1''', millesse jääb sinu IP-aadress ('''$4'''), on blokeeritud. Blokeeris kasutaja [[User:$3|$3]].
+
+$3 tõi järgmise põhjuse: ''$2''",
# History pages
'viewpagelogs' => 'Vaata selle lehe logisid',
# Language selector for translatable SVGs
'img-lang-default' => '(vaikekeel)',
-'img-lang-info' => 'Viimistle pilt järgmises keeles: $1 $2',
+'img-lang-info' => 'Viimistle pilt järgmises keeles: $1. $2',
'img-lang-go' => 'Mine',
# Table pager
'version-entrypoints-header-url' => 'URL',
# Special:Redirect
-'redirect' => 'Ümbersuunamine faili, kasutaja või redaktsiooni identifikaatori järgi',
+'redirect' => 'Ümbersuunamine faili, kasutaja, lehekülje või redaktsiooni identifikaatori järgi',
'redirect-legend' => 'Ümbersuunamine faili juurde või leheküljele',
-'redirect-summary' => 'See erilehekülg suunab ümber faili (toodud failinimi), lehekülje (toodud redaktsiooni identifikaator) või kasutajalehekülje (toodud numbriline kasutaja identfikaator) juurde. Kasutamine: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] või [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'See erilehekülg suunab ümber faili (toodud failinimi), lehekülje (toodud redaktsiooni või lehekülje identifikaator) või kasutajalehekülje (toodud numbriline kasutaja identfikaator) juurde. Kasutamine: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] või [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Mine',
'redirect-lookup' => 'Leia:',
'redirect-value' => 'Väärtus:',
'redirect-user' => 'Kasutaja identifikaator',
+'redirect-page' => 'Lehekülje identifikaator',
'redirect-revision' => 'Lehekülje redaktsioon',
'redirect-file' => 'Failinimi',
'redirect-not-exists' => 'Väärtust ei leitud',
'expand_templates_input' => 'Sisendtekst:',
'expand_templates_output' => 'Tulemus',
'expand_templates_xml_output' => 'XML-väljund',
+'expand_templates_html_output' => 'HTML-toorväljund',
'expand_templates_ok' => 'Hõrenda',
'expand_templates_remove_comments' => 'Eemalda selgitavad märkused',
'expand_templates_remove_nowiki' => 'Ära näita tulemuses <nowiki>-silte',
'expand_templates_generate_xml' => 'Näita XML sõelumispuud',
+'expand_templates_generate_rawhtml' => 'Näita toor-HTMLi',
'expand_templates_preview' => 'Eelvaade',
);
'delete-warning-toobig' => 'این صفحه تاریخچهٔ ویرایشی بزرگی دارد، که شامل بیش از $1 {{PLURAL:$1|نسخه|نسخه}} است.
حذف آن ممکن است که عملکرد پایگاه دادهٔ {{SITENAME}} را مختل کند;
با احتیاط ادامه دهید.',
+'deleting-backlinks-warning' => "''' هشدار:''' صفحات دیگر پیوند به صفحه شما درباره حذف هستند.",
# Rollback
'rollback' => 'واگردانی ویرایشها',
* @author Dereckson
* @author Diti
* @author Dodoïste
+ * @author Dr Brains
* @author Drongou
* @author Elfix
* @author Enzoreg
'revdelete-offender' => 'Auteur de la révision :',
# Suppression log
-'suppressionlog' => 'Journal des suppressions',
-'suppressionlogtext' => 'Voici la liste des suppressions et des blocages qui portent sur du contenu caché aux administrateurs.
+'suppressionlog' => 'Journal des masquages',
+'suppressionlogtext' => 'Voici la liste des masquages et des blocages qui portent sur du contenu caché aux administrateurs.
Voir la [[Special:BlockList|liste des blocages]] pour la liste des bannissements et des blocages actuellement opérationnels.',
# History merging
'delete-warning-toobig' => "Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}.
La supprimer peut perturber le fonctionnement de la base de données de {{SITENAME}} ;
veuiller ne procéder qu'avec prudence.",
+'deleting-backlinks-warning' => "'''Attention :''' D’autres pages ont un lien vers la page que vous allez supprimer.",
# Rollback
'rollback' => 'Révoquer les modifications',
'protect-norestrictiontypes-title' => 'Page non protégeable',
'protect-legend' => 'Confirmer la protection',
'protectcomment' => 'Motif :',
-'protectexpiry' => "Date d'expiration :",
+'protectexpiry' => 'Date d’expiration :',
'protect_expiry_invalid' => "La date d'expiration est invalide.",
'protect_expiry_old' => "La date d'expiration est déjà passée.",
'protect-unchain-permissions' => "Déverrouiller davantage d'options de protection",
Se la cause no samee jessi cheste, tu podaressis vê cjatât un problem tal software.
Segnalilu par plasê a un [[Special:ListUsers/sysop|administrator]], notant la URL.',
'missingarticle-rev' => '(numar de revision: $1)',
+'missingarticle-diff' => '(Dif.: $1, $2)',
'readonly_lag' => 'Par cumò il database al è stât blocât pe sincronizazion cul server',
'internalerror' => 'Erôr interni',
'internalerror_info' => 'Erôr interni: $1',
'fileexistserror' => 'No si pues scrivi il file "$1": al esist zà',
'unexpected' => 'Valor no proviodût: "$1" = "$2"',
'formerror' => 'Erôr: no si rive a mandâ il form',
+'badarticleerror' => 'Operazion no permetude in cheste pagjine',
+'cannotdelete' => 'La pagjine o il file "$1" no si pues concelâ.
+Podarès jessi stât cancelât di cualchidun altri.',
+'cannotdelete-title' => 'No si pues cancelâ la pagjine "$1"',
+'delete-hook-aborted' => 'La cancelazion e je stade anulade di un hook.
+No je une spigazion disponibile.',
+'no-null-revision' => 'No si pues creâ une version vuedie de pagjine "$1"',
'badtitle' => 'Titul sbaliât',
'badtitletext' => 'Il titul de pagjine che tu âs inserît nol è valit, al è vuelit, o al veve un erôr tal colegament tra wiki diviersis o tra versions in altris lenghis.
Al podarès vê dentri caratars che no podin jessi doprâts tai titui.',
+'perfcached' => 'I dats seguints a vegnin di une copie de "cache" dal database e a podaressin no jessi inzornâts. La cache e rive a tignî al massim {{PLURAL:$1|un risultâ disponibil|$1 risultats disponibii}}',
+'perfcachedts' => 'I dats seguints a vegnin di une copie de "cache" dal database dal $1 e a podaressin no jessi inzornâts. La cache e rive a tignî al massim {{PLURAL:$1|un risultâ disponibil|$1 risultats disponibii}}',
+'querypage-no-updates' => 'Inzornaments de pagjine a son al moment sospindûts. I dats metûts no saràn salvâts.',
'viewsource' => 'Cjale risultive',
+'viewsource-title' => 'Cjale il codiç di $1',
+'actionthrottled' => 'Azion ritardade',
+'actionthrottledtext' => 'Come misure anti-spam tu âs des limitazion tal fâ cheste azion masse voltis in toc di timp curt. Il limit al è stât superât. Tu puedis tornâ a provâ fra cualchi minût.',
+'protectedpagetext' => 'Pagjine protete par evitâ modifichis o altris azions.',
'viewsourcetext' => 'Tu puedis viodi e copiâ la risultive di cheste pagjine:',
+'viewyourtext' => 'Tu puedis viodi o copiâ il codiç des "tôs modifichis" in cheste pagjine.',
+'ns-specialprotected' => 'Lis pagjinis specialis no si puedin modificâ',
+'exception-nologin' => 'No tu sês jentrât',
+
+# Virus scanner
+'virus-unknownscanner' => 'antivirus no cognossût:',
# Login and logout pages
-'logouttext' => "'''Tu sâs cumò lât fûr.'''
+'logouttext' => "'''Tu sës cumò lât fûr.'''
-Tu puedis continuâ a doprâ {{SITENAME}} come anonim, o tu puedis <span class='plainlinks'>[$1 jentrâ di gnûf]</span> cul stes o cuntun altri non utent.
Considere che cualchi pagjine e pues mostrâti ancjemò come jentrât tal sît fin cuant che no tu netis la memorie cache dal sgarfadôr.",
'yourname' => 'Non utent',
'yourpassword' => 'Peraule clâf',
'timezoneregion-indian' => 'Ocean Indian',
'timezoneregion-pacific' => 'Ocean Pacific',
'allowemail' => 'Ative la ricezion di messaçs email di bande di altris utents¹',
-'prefs-searchoptions' => 'Opzions de ricercje',
+'prefs-searchoptions' => 'Cîr',
'prefs-namespaces' => 'Spazis dai nons',
'defaultns' => 'Se no, cîr in chescj spazis dai nons:',
'default' => 'predeterminât',
'prefs-custom-js' => 'JS personalizât',
'prefs-emailconfirm-label' => 'Conferme de pueste eletroniche:',
'youremail' => 'Email *',
-'username' => 'Non utent:',
+'username' => '{{GENDER:$1|Non utent}}:',
'uid' => 'ID utent:',
'prefs-memberingroups' => 'Al fâs part {{PLURAL:$1|dal grup|dai grups}}:',
'prefs-registration' => 'Date di regjistrazion:',
'enhancedrc-history' => 'ઇતિહાસ',
'recentchanges' => 'તાજા ફેરફારો',
'recentchanges-legend' => 'હાલમાં થયેલા ફેરફારોના વિકલ્પ',
-'recentchanges-summary' => 'વિàª\95િમાàª\82 તાàª\9cà«\87તરમાàª\82 થયà«\87લા ફà«\87રફારà«\8b પર àª\85હિંથી નજર રાખો.',
+'recentchanges-summary' => 'વિàª\95િમાàª\82 તાàª\9cà«\87તરમાàª\82 થયà«\87લા ફà«\87રફારà«\8b પર àª\85હà«\80ંથી નજર રાખો.',
'recentchanges-feed-description' => 'આ ફીડ દ્વારા વિકિમાં થયેલા તાજા ફેરફારો પર ધ્યાન રાખો.',
'recentchanges-label-newpage' => 'આ ફેરફાર દ્વારા નવું પાનું નિર્મિત થયું',
'recentchanges-label-minor' => 'આ એક નાનો સુધારો છે.',
'tog-showtoolbar' => 'הצגת סרגל העריכה',
'tog-editondblclick' => 'עריכת דפים בלחיצה כפולה',
'tog-editsection' => 'עריכת פסקאות באמצעות קישורי [עריכה]',
-'tog-editsectiononrightclick' => 'ער×\99×\9bת פסק×\90×\95ת ×¢×\9c ×\99×\93×\99 לחיצה ימנית על כותרות הפסקאות',
+'tog-editsectiononrightclick' => 'ער×\99×\9bת פסק×\90×\95ת ×\91×\90×\9eצע×\95ת לחיצה ימנית על כותרות הפסקאות',
'tog-showtoc' => 'הצגת תוכן עניינים (עבור דפים עם יותר מ־3 כותרות)',
'tog-rememberpassword' => 'שמירת הכניסה שלי בדפדפן זה ({{PLURAL:$1|ליום אחד|ליומיים|ל־$1 ימים}} לכל היותר)',
'tog-watchcreations' => 'מעקב אחרי דפים שיצרתי וקבצים שהעליתי',
אנא המתינו $1 לפני שתנסו שוב.',
'login-abort-generic' => 'הכניסה לחשבון לא הצליחה - היא הופסקה',
'loginlanguagelabel' => 'שפה: $1',
-'suspicious-userlogout' => '×\91קשת×\9b×\9d ×\9cצ×\90ת ×\9e×\94×\97ש×\91×\95×\9f × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ×©× ×¨×\90×\94 ש×\94×\99×\90 × ×©×\9c×\97×\94 ×¢×\9c ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
+'suspicious-userlogout' => '×\91קשת×\9a ×\9cצ×\90ת ×\9e×\94×\97ש×\91×\95×\9f × ×\93×\97ת×\94 ×\9b×\99×\95×\95×\9f ×©× ×¨×\90×\94 ש×\94×\99×\90 × ×©×\9c×\97×\94 ×¢×\9cÖ¾ידי דפדפן שבור או שרת פרוקסי עם זיכרון מטמון.',
'createacct-another-realname-tip' => 'השם האמיתי הוא אופציונאלי.
אם תבחרו לספקו, הוא ישמש לייחוס עבודת המשתמש אליו.',
אינכם יכולים להשתמש בתכונת "שליחת דואר אלקטרוני למשתמש זה" אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
כתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.
אנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.',
-'autoblockedtext' => 'כתובת ה־IP שלכם נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על ידי $1, עשה בה שימוש.
+'autoblockedtext' => 'כתובת ה־IP שלכם נחסמה באופן אוטומטי כיוון שמשתמש אחר, שנחסם על־ידי $1, עשה בה שימוש.
הסיבה שניתנה לחסימה היא:
:\'\'\'$2\'\'\'
* פקיעת החסימה: $6
* החסימה שבוצעה: $7
-באפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון על החסימה.
-אינכם יכולים להשתמש בתכונת "שליחת דואר אלקטרוני למשתמש זה" אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
+באפשרותכם ליצור קשר עם $1 או עם כל אחד מ[[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] האחרים כדי לדון בחסימה.
+
+באפשרותכם להשתמש בתכונת "{{int:emailuser}}", אלא אם לא ציינתם כתובת דוא"ל תקפה ב[[Special:Preferences|העדפות המשתמש שלכם]] או אם נחסמתם משליחת דוא"ל.
+
כתובת ה־IP שלכם היא $3, ומספר החסימה שלכם הוא #$5.
אנא ציינו את כל הפרטים הללו בכל פנייה למפעילי המערכת.',
'blockednoreason' => 'לא ניתנה סיבה',
'timezonelegend' => 'אזור זמן:',
'localtime' => 'זמן מקומי:',
'timezoneuseserverdefault' => 'ברירת המחדל של האתר ($1)',
-'timezoneuseoffset' => '×\90×\97ר (× ×\90 צ×\99×\99× ×\95 את ההפרש)',
+'timezoneuseoffset' => '×\90×\97ר (×\99ש ×\9cצ×\99×\99×\9f את ההפרש)',
'servertime' => 'השעה הנוכחית בשרת:',
'guesstimezone' => 'קבלה מהדפדפן',
'timezoneregion-africa' => 'אפריקה',
'allarticles' => 'כל הדפים',
'allinnamespace' => 'כל הדפים (מרחב שם $1)',
'allpagessubmit' => 'הצגה',
-'allpagesprefix' => 'הדפים ששמם מתחיל ב…:',
+'allpagesprefix' => 'הדפים ששמם מתחיל ב:',
'allpagesbadtitle' => 'כותרת הדף שניתנה הייתה בלתי־תקינה או שהייתה בה קידומת של קישור לשפה אחרת או לוויקי אחר.
ייתכן שהיא מכילה תו אחד או יותר האסורים לשימוש בכותרות.',
'allpages-bad-ns' => 'אין מרחב שם בשם "$1".',
'delete-edit-reasonlist' => 'עריכת סיבות המחיקה',
'delete-toobig' => 'דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקת דפים כאלה הוגבלה כדי למנוע פגיעה בביצועי האתר.',
'delete-warning-toobig' => 'דף זה כולל מעל {{PLURAL:$1|גרסה אחת|$1 גרסאות}} בהיסטוריית העריכות שלו. מחיקה שלו עלולה להפריע לפעולות בבסיס הנתונים; אנא שקלו שנית את המחיקה.',
+'deleting-backlinks-warning' => "'''אזהרה:''' דפים אחרים מקשרים לדף שאתם עומדים למחוק.",
# Rollback
'rollback' => 'שחזור עריכות',
'autoblocker' => 'נחסמתם באופן אוטומטי משום שאתם חולקים את כתובת ה־IP שלכם עם [[User:$1|$1]].
הסיבה שניתנה לחסימת $1 היא "\'\'\'$2\'\'\'"',
'blocklogpage' => 'יומן חסימות',
-'blocklog-showlog' => 'משתמש זה נחסם בעבר. יומן החסימות מוצג למטה:',
-'blocklog-showsuppresslog' => 'משתמש זה נחסם והוסתר בעבר. יומן ההסתרות מוצג למטה:',
+'blocklog-showlog' => 'משתמש זה נחסם בעבר.
+יומן החסימות מוצג להלן:',
+'blocklog-showsuppresslog' => 'משתמש זה נחסם והוסתר בעבר.
+יומן ההסתרות מוצג להלן:',
'blocklogentry' => 'חסם את [[$1]] למשך $2 $3',
'reblock-logentry' => 'שינה את הגדרות החסימה של [[$1]] עם זמן פקיעה של $2 $3',
'blocklogtext' => 'זהו יומן פעולות החסימה והשחרור של משתמשים.
'markaspatrolleddiff' => 'סימון השינוי כבדוק',
'markaspatrolledtext' => 'סימון דף זה כבדוק',
'markedaspatrolled' => 'השינוי סומן כבדוק',
-'markedaspatrolledtext' => 'השינוי שבחרתם בדף [[:$1]] סומן כבדוק.',
+'markedaspatrolledtext' => 'השינוי שבחרת בדף [[:$1]] סומן כבדוק.',
'rcpatroldisabled' => 'אפשרות סימון השינויים כבדוקים מבוטלת',
'rcpatroldisabledtext' => 'תכונת סימון שינויים כבדוקים בדף השינויים האחרונים בוטלה.',
'markedaspatrollederror' => 'לא ניתן לסמן כבדוק',
* @ingroup Language
* @file
*
+ * @author Derbeth
* @author Dundak
* @author J budissin
* @author Kaganer
'tog-ccmeonemails' => 'Mi kopije e-mejlkow pósłać, kotrež druhim wužiwarjam pósćelu',
'tog-diffonly' => 'Jenož rozdźěle pokazać (nic pak zbytny wobsah)',
'tog-showhiddencats' => 'Schowane kategorije pokazać',
+'tog-noconvertlink' => 'Konwertowanje wotkazoweho titula znjemóžnić',
'tog-norollbackdiff' => 'Rozdźěl po wróćostajenju zanjechać',
'tog-useeditwarning' => 'Warnować, hdyž so wobdźěłowanska strona z njeskładowanymi změnami wopušća',
'tog-prefershttps' => 'Po přizjewjenju přeco wěsty zwisk wužiwać',
'returnto' => 'Wróćo k stronje $1.',
'tagline' => 'z {{GRAMMAR:genitiw|{{SITENAME}}}}',
'help' => 'Pomoc',
-'search' => 'pytać',
+'search' => 'Pytać',
'searchbutton' => 'Pytać',
'go' => 'Pytać',
'searcharticle' => 'Pytać',
'delete-edit-reasonlist' => 'Přičiny za wušmórnjenje wobdźěłać',
'delete-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje tajkich stronow bu wobmjezowane, zo by připadne přetorhnjenje {{SITENAME}} wobešło.',
'delete-warning-toobig' => 'Tuta strona ma z wjace hač $1 {{PLURAL:$1|wersiju|wersijomaj|wersijemi|wersijemi}} wulke wobdźěłanske stawizny. Wušmórnjenje móže operacije datoweje banki {{SITENAME}} přetorhnyć; pokročuj z kedźbliwosću.',
+'deleting-backlinks-warning' => "'''Warnowanje:''' Druhe strony wotkazuja k stronje, kotruž chceš zhašeć.",
# Rollback
'rollback' => 'Změny cofnyć',
'ninterwikis' => '{{PLURAL:$1|egy|$1}} interwiki',
'nlinks' => '{{PLURAL:$1|egy|$1}} hivatkozás',
'nmembers' => '{{PLURAL:$1|egy|$1}} elem',
+'nmemberschanged' => '$1 → $2 tag',
'nrevisions' => '{{PLURAL:$1|egy|$1}} változat',
'nviews' => '{{PLURAL:$1|egy|$1}} megtekintés',
'nimagelinks' => '{{PLURAL:$1|Egy|$1}} lapon van használva',
'pageinfo-length' => 'Lap hossza (bájtokban)',
'pageinfo-article-id' => 'Lapazonosító',
'pageinfo-language' => 'Laptartalom nyelve',
-'pageinfo-robot-policy' => 'Kereső motor státusz',
-'pageinfo-robot-index' => 'Indexelhető',
-'pageinfo-robot-noindex' => 'Nem indexelhető',
+'pageinfo-robot-policy' => 'Indexelés robottal',
+'pageinfo-robot-index' => 'Engedélyezett',
+'pageinfo-robot-noindex' => 'Nem engedélyezett',
'pageinfo-views' => 'Megtekintések száma',
'pageinfo-watchers' => 'Figyelők száma',
'pageinfo-few-watchers' => 'Kevesebb mint $1 szerkesztő figyeli',
'hours-ago' => '$1 {{PLURAL:$1|órával|órával}} ezelőtt',
'minutes-ago' => '$1 {{PLURAL: $1|perce|perce}}',
'seconds-ago' => '$1 {{PLURAL:$1|másodperce|másodperce}}',
+'monday-at' => '$1 (hétfő)',
+'tuesday-at' => '$1 (kedd)',
+'wednesday-at' => '$1 (szerde)',
+'thursday-at' => '$1 (csütörtök)',
+'friday-at' => '$1 (péntek)',
+'saturday-at' => '$1 (szombat)',
+'sunday-at' => '$1 (vasárnap)',
+'yesterday-at' => 'Tegnap $1',
# Bad image list
'bad_image_list' => 'A formátum a következő:
# Separators for various lists, etc.
'ellipsis' => '…',
+'quotation-marks' => '„$1”',
# Multipage image navigation
'imgmultipageprev' => '← előző oldal',
'tags-tag' => 'Címke neve',
'tags-display-header' => 'Megjelenése a listákon',
'tags-description-header' => 'Teljes leírás',
+'tags-active-header' => 'Aktív?',
'tags-hitcount-header' => 'Címkézett változtatások',
+'tags-active-yes' => 'Igen',
+'tags-active-no' => 'Nem',
'tags-edit' => 'szerkesztés',
'tags-hitcount' => '{{PLURAL:$1|Egy|$1}} változtatás',
'dberr-problems' => 'Sajnáljuk, de az oldallal technikai problémák vannak.',
'dberr-again' => 'Várj néhány percet, majd frissítsd az oldalt.',
'dberr-info' => '(Nem sikerült kapcsolatot létesíteni az adatbázisszerverrel: $1)',
+'dberr-info-hidden' => '(Nem sikerült kapcsolatot létesíteni az adatbázisszerverrel)',
'dberr-usegoogle' => 'A probléma elmúlásáig próbálhatsz keresni a Google-lel.',
'dberr-outofdate' => 'Fontos tudnivaló, hogy az oldal tartalmáról készített indexeik elavultak lehetnek.',
'dberr-cachederror' => 'Lenn a kért oldal gyorsítótárazott változata látható, és lehet, hogy nem teljesen friss.',
'expand_templates_input' => 'Vizsgálandó szöveg',
'expand_templates_output' => 'Eredmény',
'expand_templates_xml_output' => 'XML kimenet',
+'expand_templates_html_output' => 'Nyers HTML-kimenet',
'expand_templates_ok' => 'OK',
'expand_templates_remove_comments' => 'Megjegyzések eltávolítása',
'expand_templates_remove_nowiki' => '<nowiki> tagek mellőzése az eredményben',
'expand_templates_generate_xml' => 'XML elemzési fa mutatása',
+'expand_templates_generate_rawhtml' => 'Nyers HTML megjelenítése',
'expand_templates_preview' => 'Előnézet',
);
'cantcreateaccount-text' => "Le creation de contos desde iste adresse IP ('''$1''') ha essite blocate per [[User:$3|$3]].
Le motivo que $3 dava es ''$2''",
+'cantcreateaccount-range-text' => "Le creation de contos ab le adresses IP in le intervallo '''$1''', le qual include tu adresse IP ('''$4'''), ha essite blocate per [[User:$3|$3]].
+
+Le motivo fornite per $3 es ''$2''",
# History pages
'viewpagelogs' => 'Vider le entratas del registro pro iste pagina',
'delete-warning-toobig' => 'Iste pagina ha un grande historia de modificationes con plus de $1 {{PLURAL:$1|version|versiones}}.
Le deletion de illo pote disrumper le operationes del base de datos de {{SITENAME}};
procede con caution.',
+'deleting-backlinks-warning' => "'''Attention:''' Il ha altere paginas con ligamines al pagina que tu es sur le puncto de deler.",
# Rollback
'rollback' => 'Revocar modificationes',
'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Cammino al script]',
# Special:Redirect
-'redirect' => 'Rediriger per nomine de file, ID de usator o ID de version',
+'redirect' => 'Rediriger per nomine de file, ID de usator, ID de pagina o ID de version',
'redirect-legend' => 'Rediriger a un file o pagina',
-'redirect-summary' => 'Iste pagina special redirige a un file (si es date le nomine de un file), a un pagina (si es date un ID de version) o a un pagina de usator (si es date un ID de usator numeric). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]] o [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Iste pagina special redirige a un file (si es date le nomine de un file), a un pagina (si es date un ID de version o ID de pagina) o a un pagina de usator (si es date un ID de usator numeric). Usage: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] o [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Va',
'redirect-lookup' => 'Cercar:',
'redirect-value' => 'Valor:',
'redirect-user' => 'ID de usator',
+'redirect-page' => 'ID del pagina',
'redirect-revision' => 'Version de pagina',
'redirect-file' => 'Nomine de file',
'redirect-not-exists' => 'Valor non trovate',
'preview' => 'Anteprima',
'showpreview' => 'Visualizza anteprima',
'showlivepreview' => "Funzione ''Live preview''",
-'showdiff' => 'Mostra cambiamenti',
+'showdiff' => 'Mostra modifiche',
'anoneditwarning' => "'''Attenzione:''' Accesso non effettuato. Nella cronologia della pagina verrà registrato il tuo indirizzo IP.",
'anonpreviewwarning' => "''Non è stato eseguito il login. Salvando la pagina, il proprio indirizzo IP sarà registrato nella cronologia.''",
'missingsummary' => "'''Attenzione:''' non è stato specificato l'oggetto di questa modifica. Premendo di nuovo \"{{int:savearticle}}\" la modifica verrà salvata con l'oggetto vuoto.",
'delete-edit-reasonlist' => 'Modifica i motivi di cancellazione',
'delete-toobig' => 'La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|revisione|revisioni}}). La sua cancellazione è stata limitata per evitare di creare accidentalmente dei problemi di funzionamento al database di {{SITENAME}}.',
'delete-warning-toobig' => 'La cronologia di questa pagina è molto lunga (oltre $1 {{PLURAL:$1|revisione|revisioni}}). La sua cancellazione può creare dei problemi di funzionamento al database di {{SITENAME}}; procedere con cautela.',
+'deleting-backlinks-warning' => "'''Attenzione:''' altre pagine contengono collegamenti alla pagina che stai per cancellare.",
# Rollback
'rollback' => 'Annulla le modifiche',
$1または他の[[{{MediaWiki:Grouppage-sysop}}|管理者]]にこのブロックについて問い合わせることができます。
-ã\81\9fã\81 ã\81\97ã\80\81[[Special:Preferences|å\80\8b人è¨å®\9a]]ã\81«æ£ã\81\97ã\81\84ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\80\81ã\81¾ã\81\9fã\81¯ã\83¡ã\83¼ã\83«é\80\81ä¿¡ã\81\8cã\83\96ã\83ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81ã\83¡ã\83¼ã\83«é\80\81ä¿¡æ©\9fè\83½ã\81\8c使ã\81\88ないことに注意してください。
+ã\81\9fã\81 ã\81\97ã\80\81[[Special:Preferences|å\80\8b人è¨å®\9a]]ã\81«æ£ã\81\97ã\81\84ã\83¡ã\83¼ã\83«ã\82¢ã\83\89ã\83¬ã\82¹ã\81\8cç\99»é\8c²ã\81\95ã\82\8cã\81¦ã\81\84ã\81ªã\81\84å ´å\90\88ã\80\81ã\81¾ã\81\9fã\81¯ã\83¡ã\83¼ã\83«é\80\81ä¿¡ã\81\8cã\83\96ã\83ã\83\83ã\82¯ã\81\95ã\82\8cã\81¦ã\81\84ã\82\8bå ´å\90\88ã\80\81ã\80\8c{{int:emailuser}}ã\80\8dæ©\9fè\83½ã\82\92使ç\94¨ã\81§ã\81\8dないことに注意してください。
現在ご使用中のIPアドレスは$3 、このブロックIDは#$5です。
お問い合わせの際は、上記の情報を必ず書いてください。",
'delete-warning-toobig' => 'このページには、 $1版を超える編集履歴があります。
削除すると、{{SITENAME}}のデータベース処理に大きな負荷がかかります。
十分に注意してください。',
+'deleting-backlinks-warning' => "'''警告:''' 削除しようとしているページは、他のページからリンクされています。",
# Rollback
'rollback' => '編集を巻き戻し',
# General errors
'error' => 'Agul',
'databaseerror' => 'Agul n database',
+'databaseerror-text' => 'Tuccḍa n tuttra deg taffa n isefka teḍra-d. Ahat yella afuqes deg useɣẓan.',
+'databaseerror-textcl' => 'Tuccḍa n tuttra deg taffa n isefka teḍra-d.',
+'databaseerror-query' => 'Tuttra : $1',
'databaseerror-function' => 'Tawuri: $1',
'databaseerror-error' => 'Tuccḍa: $1',
'laggedslavemode' => 'Aɣtal: Ahat asebter ur yesɛi ara akk ibeddlen imaynuten.',
'cannotdelete-title' => 'Ulamek an kkes asebter « $1 »',
'delete-hook-aborted' => 'Tukkesa tesemmet s usiɣzef.
Ulac asefru ɣef wagi.',
+'no-null-revision' => 'Ur nezmer ara ad n-snulfu tacaggart tilemnt tamaynut i usebtar « $1 »',
'badtitle' => 'Azwel ur yelhi',
'badtitletext' => 'Asebter i testeqsiḍ fell-as mačči ṣaḥiḥ, d ilem, neɣ yella ugul deg wezday seg wikipedia s tutlayt tayeḍ neɣ deg wezday n wiki nniḍen. Ahat tesɛa asekkil ur yezmir ara ad yettuseqdac deg wezwel.',
'perfcached' => 'Talɣut deg ukessar seg lkac u waqila mačči d tasiwelt taneggarut. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
'actionthrottled' => 'Tigawt tesɛa talast',
'actionthrottledtext' => 'Iwakken an ewwet mgal tira yerkan (SPAM), tigawt agi tesɛa talast n amḍan n tikwalt deg akud awezzlan. talast agi t-ɛedda.
Ɛred tikkelt nniḍen deg kra n dqiqa.',
-'protectedpagetext' => 'Asebter-agi d amsekker.',
+'protectedpagetext' => 'Asebter-agi yetwaḥrez i uqareɛ n ubeddel neɣ tigawin nniḍen.',
'viewsourcetext' => 'Tzemreḍ ad twaliḍ u txedmeḍ alsaru n uɣbalu n usebter-agi:',
'viewyourtext' => 'Tzemṛeḍ ad ẓṛeḍ dɣa ad nɣeleḍ agbur n "ibeddlen inek/inem" deg usebter agi :',
'protectedinterface' => 'Asebter-agi d amsekker axaṭer yettuseqdac i weḍris n software.',
'namespaceprotected' => "Ur tesɛiḍ ara turagt iwakken ad beddeleḍ isebtar n tallunt n isemawen \"'''\$1'''\".",
'customcssprotected' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n CSS, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.',
'customjsprotected' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ asebter agi n Javascript, acku tesɛa iɣewwaren n yiwen useqdac nniḍen.',
+'mycustomcssprotected' => 'Ur tesɛiḍ ara turagt i ubeddel n usebtar agi CSS.',
+'mycustomjsprotected' => 'Ur tesɛiḍ ara turagt i ubeddel n usebtar agi JavaScript.',
+'myprivateinfoprotected' => 'Ur tesɛiḍ ara turagt ad beddeleḍ tilɣa inek(em) tusligtin.',
+'mypreferencesprotected' => 'Ur tesɛiḍ ara turagt ad beddeleḍ iɣewwaren inek(em).',
'ns-specialprotected' => 'Ur t-zemred ara ad beddeleḍ isebtar usligen',
'titleprotected' => "Azwel agi yegdel deg usnulfu ɣef [[User:$1|$1]].
Taɣẓint id yenna : ''$2''",
'invalidtitle-knownnamespace' => 'Azwel ur i ɣbel ara s tallunt n isemawen « $2 » dɣa d-uglam « $3 »',
'invalidtitle-unknownnamespace' => 'Azwel ur i ɣbel ara s uṭṭun n tallunt n isemawen $1 dɣa d-uglam « $2 » warisem',
'exception-nologin' => 'Ur tekcimeḍ ara',
-'exception-nologin-text' => 'I usebter agi naɣ i tigawt agi, ilaq ad qqeneḍ ɣef wiki agi.',
+'exception-nologin-text' => 'Ilaq ad [[Special:Userlogin|qqeneḍ]] iwakken ad kecmeḍ ar usebtar neɣ tawuri agi.',
+'exception-nologin-text-manual' => '$1 iwakken ad kecmeḍ ar asebtar neɣ tigawt agi.',
# Virus scanner
'virus-badscanner' => "Yir tawila : anafraḍ n infafaden warisem : ''$1''",
# Login and logout pages
'logouttext' => "'''Tura tesensereḍ.'''
-Tzemreḍ ad tesseqdceḍ {{SITENAME}} d udrig, <span class='plainlinks'>[$1 ad tkecmeḍ daɣen]</span> s yisem n wemseqdac inek (neɣ nniḍen).
-Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi temḥuḍ lkac.",
+Kra n isebtar zemren ad sskanen belli mazal-ik s yisem n wemseqdac inek armi temḥuḍ tazarkatut.",
+'welcomeuser' => 'Anṣuf, $1 !',
+'welcomecreation-msg' => 'Amian inek(em) yesnulfad.
+Tzemreḍ ad beddeleḍ {{SITENAME}} [[Special:Preferences|ismenyifen]] inek(em) ma tebɣiḍ.',
'yourname' => 'Isem n wemseqdac',
+'userlogin-yourname' => 'Isem n useqdac',
+'userlogin-yourname-ph' => 'Sekcem isem-ik(im) n useqdac',
+'createacct-another-username-ph' => 'Sekcem isem n useqdac',
'yourpassword' => 'Awal n tbaḍnit',
+'userlogin-yourpassword' => 'Awal n uɛeddi',
+'userlogin-yourpassword-ph' => 'Sekcem awal-ik(im) n uɛeddi',
+'createacct-yourpassword-ph' => 'Sekcem awal n uɛeddi',
'yourpasswordagain' => 'Ɛiwed ssekcem awal n tbaḍnit',
+'createacct-yourpasswordagain' => 'Sergeg awal n uɛeddi',
+'createacct-yourpasswordagain-ph' => 'Sekcem awal n uɛeddi tikelt nniḍen',
'remembermypassword' => 'Cfu ɣef wawal n tbaḍnit inu di uselkim-agi (i afellay n $1 {{PLURAL:$1|ass|ussan}})',
+'userlogin-remembermypassword' => 'Eǧǧ taɣimit inu turmidt',
+'userlogin-signwithsecure' => 'Seqdec tuqqna yettwaḥerzen',
'yourdomainname' => 'Taɣult inek',
'password-change-forbidden' => 'Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi ɣef uwiki agi.',
'externaldberror' => 'Yella ugul aberrani n database neɣ ur tettalaseḍ ara ad tbeddleḍ isem an wemseqdac aberrani inek.',
'logout' => 'Ffeɣ',
'userlogout' => 'Ffeɣ',
'notloggedin' => 'Ur tekcimeḍ ara',
+'userlogin-noaccount' => 'Ur tesɛiḍ ara amiḍan ?',
+'userlogin-joinproject' => 'Ddukkel ar {{SITENAME}}',
'nologin' => "Ur tesɛiḍ ara isem n umseqdac? '''$1'''.",
'nologinlink' => 'Xleq isem n wemseqdac',
'createaccount' => 'Xleq isem n wemseqdac',
'gotaccount' => "Tesɛiḍ yagi isem n wemseqdac? '''$1'''.",
'gotaccountlink' => 'Kcem',
'userlogin-resetlink' => 'Ettuḍ tilɣa n tuqqna ?',
-'createaccountmail' => 's e-mail',
+'userlogin-resetpassword-link' => 'Ettuḍ awal n uɛaddi ?',
+'helplogin-url' => 'Help:Tuqqna',
+'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Tallalt i tuqqna]]',
+'userlogin-loggedin' => 'Teqqneḍ yakan am {{GENDER:$1|$1}}. Seqdec tiferkit ddaw-agi iwakken ad teqqneḍ s umiḍan nniḍen.',
+'userlogin-createanother' => 'Snulfud amiḍan nniḍen',
+'createacct-join' => 'Sekcem tilɣa inek(m) ddaw-agi.',
+'createacct-another-join' => 'Sekcem tilɣa n umiḍan amaynut ddaw-agi.',
+'createacct-emailrequired' => 'Tansa email',
+'createacct-emailoptional' => 'Tansa email (axetṛan)',
+'createacct-email-ph' => 'Sekcem tansa email inek(m)',
+'createacct-another-email-ph' => 'Sekcem tansa email',
+'createaccountmail' => 'Seqdec awal n uɛaddi agacuran akudan dɣa ceggeε-it ar tansa email yemlen',
+'createacct-realname' => 'Isem n tidets (axetṛan)',
'createaccountreason' => 'Ayɣer',
+'createacct-reason' => 'Taɣẓint',
+'createacct-reason-ph' => 'Ayɣer ad snulfuḍ amiḍan nniḍen',
+'createacct-captcha' => 'Asenqed n taɣellist',
+'createacct-imgcaptcha-ph' => 'Sekcem aḍris i tezṛiḍ ddaw-agi',
+'createacct-submit' => 'Snulfud amiḍan inek(m)',
+'createacct-another-submit' => 'Snulfud amiḍan nniḍen',
+'createacct-benefit-heading' => '{{SITENAME}} yetwexdem sɣur medden am kečč/kem.',
+'createacct-benefit-body1' => '{{PLURAL:$1|abeddel|ibeddilen}}',
+'createacct-benefit-body2' => '{{PLURAL:$1|asebter|isebtar}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|atekki amaynut|ittekkiyen imaynuten}}',
'badretype' => 'Awal n tbaḍnit amezwaru d wis sin mačči d kif-kif.',
'userexists' => 'Isem n wemseqdac yeddem-as amdan wayeḍ. Fren yiwen nniḍen.',
'loginerror' => 'Agul n ukcam',
+'createacct-error' => 'Tuccda deg usnulfu n umiḍan',
'createaccounterror' => 'Ulamek ad nesnulfu amiḍan : $1',
'nocookiesnew' => 'Isem n wemseqdac-agi yettwaxleq, meɛna ur tekcimeḍ ara. {{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten, umbeɛd kecm s yisem n wemseqdac akk d wawal n tbaḍnit inek.',
'nocookieslogin' => '{{SITENAME}} yesseqdac ikukiyen (cookies) iwakken ad tkecmeḍ. Tekseḍ ikukiyen-nni. Eǧǧ-aten iwakken ad tkecmeḍ.',
'passwordtooshort' => 'Awal-ik (im) n uɛaddi ilaq ad i sɛu adday {{PLURAL:$1|1 asekkil|$1 isekkilen}}.',
'password-name-match' => 'Ilaq awal n uɛaddi ad yili imeẓli s-isem n useqdac.',
'password-login-forbidden' => 'aseqdac agi d awal n uɛaddi agi d-izenbigen.',
-'mailmypassword' => 'Awal n tbaḍnit n e-mail',
+'mailmypassword' => 'Awennez tikkelt nniḍen n awal uɛaddi',
'passwordremindertitle' => 'Asmekti n wawal n tbaḍnit seg {{SITENAME}}',
'passwordremindertext' => 'Amdan (waqila d kečč/kem, seg tansa IP $1) yesteqsa iwakken a nazen
Awal n uɛaddi amaynut i {{SITENAME}} ($4). Awal n uɛaddi i wemseqdac "$2" yuɣal-d tura "$3".
G leɛnaya-k, kcem tikelt nniḍen yis-s.',
'blocked-mailpassword' => 'Tansa n IP inek tɛekkel, ur tezmireḍ ara ad txedmeḍ abeddel,
ur tezmireḍ ara ad tesɛuḍ awal n tbaḍnit i tettuḍ.',
-'eauthentsent' => 'Yiwen e-mail yettwazen-ak iwakken ad tsenteḍ.
-Qbel kulci, ḍfer ayen yenn-ak deg e-mail,
-iwakken ad tbeyyneḍ belli tansa n email inek.',
+'eauthentsent' => 'Yiwen email yetweceggeε ar tansa id efkeḍ.
+Uqbel ad n-ceggeε email nniḍen, ilaq ad ḍfereḍ ayen yellan deg email dɣa ad sergegeḍ amiḍan agi d win inek(m).',
'throttled-mailpassword' => 'Asmekti n wawal n uɛaddi yettwazen yagi deg {{PLURAL:$1|asrag agi aneggaru| $1 isragen agi ineggura}}. Asmekti n wawal n uɛaddi yettwazen tikelt kan mkul $1 swayeɛ. deg {{PLURAL:$1|asrag|azilal n $1 isragen}}.',
'mailerror' => 'Agul asmi yettwazen e-mail: $1',
'acct_creation_throttle_hit' => 'Amdan i seqdacen tansa IP inek/inem yesnulfud {{PLURAL:$1|yiwen amiḍan|$1 imiḍanen}} deg 24 izragen agi ineggura, negweḍ ar talast n turagt deg azilal agi n wakud.',
'recentchanges-label-minor' => 'Wagi d-abeddel amectuḥ',
'recentchanges-label-bot' => 'D-arubut id yeseqdacen abeddel agi',
'recentchanges-label-unpatrolled' => 'Abeddel agi mazal yesɛa aselken.',
+'recentchanges-legend-plusminus' => "(''± 123'')",
'rcnotefrom' => "Deg ukessar llan ibeddlen seg wasmi '''$2''' (ar '''$1''').",
'rclistfrom' => 'Ssken ibeddlen imaynuten seg $1',
'rcshowhideminor' => '$1 ibeddlen ifessasen',
'listfiles_size' => 'Tiddi (bytes/octets)',
'listfiles_description' => 'Aglam',
'listfiles_count' => 'Ileqman',
+'listfiles-latestversion-yes' => 'Ih',
+'listfiles-latestversion-no' => 'Ala',
# File description page
'file-anchor-link' => 'Afaylu',
'randompage' => 'Asebter menwala',
'randompage-nopages' => 'Ulac isebtar deg {{PLURAL:$2|tallunt n isemawen|tallunin n isemawen}} : $1.',
+# Random page in category
+'randomincategory-selectcategory-submit' => 'Ruḥ',
+
# Random redirect
'randomredirect' => 'Asemmimeḍ menwala',
'randomredirect-nopages' => 'Ulac asebter n alsanamad deg tallunt n isemawen « $1 ».',
'statistics-users-active-desc' => 'Iseqdacen yesɛan xersum yiwet tigawt seg {{PLURAL:$1|ass agi aneggaru|$1 ussan agi ineggura}}',
'statistics-mostpopular' => 'isebtar mmeẓren aṭṭas',
+'pageswithprop-submit' => 'Ruḥ',
+
'doubleredirects' => 'Asemmimeḍ yeḍra snat tikwal',
'doubleredirectstext' => 'Mkull ajerriḍ yesɛa azday ɣer asmimeḍ amezwaru akk d wis sin, ajerriḍ amezwaru n uḍris n usebter wis sin daɣen, iwumi yefkan asmimeḍ ṣaḥiḥ i yessefk ad sɛan isebtar azday ɣur-s.',
'double-redirect-fixed-move' => 'Alsanamud agi, ɣef ayed asaḍas [[$1]] yetwebeddel isem, yetawi tura ɣer [[$2]].',
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
'nlinks' => '$1 {{PLURAL:$1|azday|izdayen}}',
'nmembers' => '$1 {{PLURAL:$1|amaslad|imasladen}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|amaslad|imasladen}}',
'nrevisions' => '$1 {{PLURAL:$1|tasiwelt|tisiwal}}',
'nviews' => '$1 {{PLURAL:$1|timeẓriwt|tuẓrin}}',
'nimagelinks' => 'Yetseqdec ɣef $1 {{PLURAL:$1|asebter|isebtar}}',
'mostrevisions' => 'Isebtar i yettubedlen aṭas',
'prefixindex' => 'Akk isebtaren s yisekkilen imezwura',
'prefixindex-namespace' => 'Akkw isebtar s adat (tallunt n isemawe $1)',
+'prefixindex-strip' => 'Ekkes azwir deg umuɣ',
'shortpages' => 'isebtar imecṭuḥen',
'longpages' => 'Isebtar imeqqranen',
'deadendpages' => 'isebtar mebla izdayen',
'listgrouprights' => 'Izerfan n igrawen n iseqdacen',
'listgrouprights-summary' => 'Asebter agi yesɛa yiwen umuɣ n igrawen i sengelen deg wiki agi dɣa izerfan n wadduf i qqenen.
Zemrent ad ilint [[{{MediaWiki:Listgrouprights-helppage}}|tilɣa nniḍen]] ɣef izerfan n yiwen.',
-'listgrouprights-key' => '*<span class="listgrouprights-granted">Izerfan sefkan</span>
+'listgrouprights-key' => 'Aglam :
+*<span class="listgrouprights-granted">Izerfan sefkan</span>
*<span class="listgrouprights-revoked">Izerfan ekkesen</span>',
'listgrouprights-group' => 'Agraw',
'listgrouprights-rights' => 'Izerfan',
'usermessage-editor' => 'Ameskar n unagraw',
# Watchlist
-'watchlist' => 'Umuɣ n uɛessi inu',
-'mywatchlist' => 'Umuɣ n uɛessi inu',
+'watchlist' => 'Umuɣ n uɛessi',
+'mywatchlist' => 'Umuɣ n uɛessi',
'watchlistfor2' => 'I $1 $2',
'nowatchlist' => 'Umuɣ n uɛessi inek d ilem.',
'watchlistanontext' => 'G leɛnaya-k $1 iwakken ad twalaḍ neɣ tbeddleḍ iferdas deg wumuɣ n uɛessi inek.',
'deleteotherreason' => 'Taɣẓint nniḍen / taɣzint tamarnant :',
'deletereasonotherlist' => 'Taɣẓint nniḍen',
'deletereason-dropdown' => '* Tiɣẓinin n umḥu id t-uɣalen aṭas tikkwal
+** Spam
+** Ixṣaren
+** Akukel n Copyright
** Asuter n useqdac
-** Akukel n izerfan umeskar
-** Asfata',
+** Azday yerẓan',
'delete-edit-reasonlist' => 'Beddel tiɣẓinin n umḥu n usebter',
'delete-toobig' => 'Asebter agi yesɛa amezruy ameqqṛan aṭas n ibeddilen, yugar $1 {{PLURAL:$1|lqem|ileqman}}.
Amḥu n isebtar am wagi yesɛa akref iwakken {{SITENAME}} ur yesɛu ara arway.',
'protect-unchain-permissions' => 'Kkes aseḍru i aṭas n tixtiṛiyin n usegdel',
'protect-default' => '(ameslugen)',
'protect-fallback' => 'Yeḥweǧ atrug « $1 »',
-'protect-level-sysop' => 'Inedbalen kan',
+'protect-level-sysop' => 'Ssireg inedbalen kan',
'protect-summary-cascade' => 'acercur',
'protect-expiring' => 'yemmut deg $1 (UTC)',
'protect-expiring-local' => 'ad i neffeṛ ass n $1',
'viewdeletedpage' => 'Ẓer isebtar yettumḥan',
'undelete-fieldset-title' => 'Erred ileqman',
'undeleterevisions' => '$1 {{PLURAL:$1|lqem i ɣbeṛen|ileqman i ɣbeṛen}}',
+'undeletebtn' => 'Err-it',
'undeletelink' => 'ẓeṛ/uɣaled',
'undeleteviewlink' => 'ẓeṛ',
'undeleteinvert' => 'Snegdam ayen textareḍ',
'ipadressorusername' => 'Tansa IP neɣ isem n wemseqdac',
'ipbreason' => 'Ayɣer',
'ipbsubmit' => 'Ɛekkel amseqdac-agi',
+'ipbother' => 'Tanzagt nniḍen :',
'ipboptions' => '2 isragen:2 hours,1 ass:1 day,3 ussan:3 days,1 imalas:1 week,2 imalasen:2 weeks,1 aggur:1 month,3 agguren:3 months,6 agguren:6 months,1 aseggwas:1 year,afdi:infinite',
+'ipbhidename' => 'Ffer isem n useqdac deg ibeddilen d umuγen',
+'ipbwatchuser' => 'Ḍfer isebtar n iseqdacen d idiwenniyen n useqdac agi',
'badipaddress' => 'Tansa IP mačči d ṣaḥiḥ',
'ipusubmit' => 'Ekkes akyaf agi',
'unblocked' => 'Yetwekkes akyaf n [[User:$1|$1]]',
'lockdb' => 'Sekker database',
# Move page
+'move-page' => 'Beddel isem n $1',
'move-page-legend' => 'Smimeḍ asebter',
'movepagetext' => "Seqdec tiferkit ddaw agi iwakken ad beddeleḍ isem n usebter, s usiweḍ n akkw amezruy is ɣer isem amaynut. Azwel aqbur ad yuɣal d asebter n usemmime ɣer azwel amaynut. Tzemreḍ ad mucceḍeḍ s uwurman isemmimen amiran i sweṛen ɣer azwel amezwaru. Ma ur tebɣiḍ ara at sexdemeḍ wagi, ilaq ad selkeneḍ akkw [[Special:DoubleRedirects|Asemmimeḍ yeḍran snat tikwal]] naɣ [[Special:BrokenRedirects|asmmimeḍ yerẓan]]. Ilaq ad sɛuḍ talkint belli izdayen tsweṛen ɣer aserken is.
'spamprotectiontitle' => 'Aḥraz amgel "Spam"',
'spamprotectiontext' => "Asebter i tebɣiḍ ad tesmektiḍ iɛekkel-it ''aḥraz mgel \"Spam\"''. Ahat yella wezday aberrani.",
'spamprotectionmatch' => 'Aḍris-agi ur t-iɛeǧ \'\'"aḥraz mgel "Spam"\'\': $1',
+'spambot_username' => 'Assizdeg n spam sɣur MediaWiki',
'spam_reverting' => 'Asuɣal i tasiwel taneggarut i ur tesɛi ara izdayen ɣer $1',
'spam_blanking' => 'Akk tisiwal sɛan izdayen ɣer $1, ad yemḥu',
'pageinfo-default-sort' => 'Tasarut n ufran s lexṣas',
'pageinfo-length' => 'Tiddi n usebter (s itamḍanen)',
'pageinfo-article-id' => 'Uṭṭun n usebter',
-'pageinfo-robot-policy' => 'Aẓayer n umsadday n unadi',
-'pageinfo-robot-index' => 'Ṭwamatar',
-'pageinfo-robot-noindex' => 'Arṭwamatar',
+'pageinfo-content-model' => 'Talɣa n ugbur n usebtar',
+'pageinfo-robot-policy' => 'Asbeddi sɣur iṛubuten',
+'pageinfo-robot-index' => 'Tessireg',
+'pageinfo-robot-noindex' => 'Tegdel',
'pageinfo-views' => 'Amḍan n timuɣliwin',
'pageinfo-watchers' => 'Amḍan n imttekkiyen yesɛan asebter agi deg umuɣ nsen n uɛassi',
+'pageinfo-few-watchers' => 'Kkes-as $1 {{PLURAL:$1|amanay|imanayen}}',
+'pageinfo-redirects-name' => 'Amḍan n izdayen ɣer asebtar agi',
'pageinfo-subpages-name' => 'Adu-isebtar n usebter agi',
+'pageinfo-firstuser' => 'Ameslal n usebtar',
+'pageinfo-firsttime' => 'Azmez n usnulfu n usebtar',
+'pageinfo-lastuser' => 'Atekki aneggaru',
+'pageinfo-lasttime' => 'Azmez n ubeddel aneggaru',
+'pageinfo-edits' => 'Amḍan aɣrud n ibeddilen',
+'pageinfo-authors' => 'Amḍan aɣrud n imeskaren iwḥiden',
+'pageinfo-recent-edits' => 'Amḍan n ibeddilen imaynuten (deg $1 ineggura)',
+'pageinfo-recent-authors' => 'Amḍan n imeskaren iwḥiden imaynuten',
+'pageinfo-hidden-categories' => '{{PLURAL:$1|Taggayt yeffren|Taggayin yeffren}} ($1)',
+'pageinfo-templates' => '{{PLURAL:$1|Talɣa i seddan|Talɣiwin i seddan}} ($1)',
+'pageinfo-toolboxlink' => 'Tilɣa ɣef usebtar',
+'pageinfo-redirectsto-info' => 'tiɣa',
'pageinfo-contentpage-yes' => 'Ih',
'pageinfo-protect-cascading-yes' => 'Ih',
+'pageinfo-category-info' => 'Tilɣa ɣef taggayt',
+'pageinfo-category-pages' => 'Amḍan n isebtar',
+'pageinfo-category-subcats' => 'Amḍan n adutaggayin',
+'pageinfo-category-files' => 'Amḍan n ifuyla',
# Patrolling
'markaspatrolleddiff' => 'Rcem "yettwassenqden"',
'file-nohires' => 'Ulac resolution i tameqqrant fell-as.',
'svg-long-desc' => 'Afaylu SVG, tabadut n $1 × $2 pixel, lqedd : $3',
'show-big-image' => 'Resolution tameqqrant',
+'file-info-png-looped' => 'deg taglult',
+'file-info-png-repeat' => 'yetwurar {{PLURAL:$1|tikelt|tikwal}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|tugna|tugniwin}}',
+'file-no-thumb-animation' => "'''Tamawt : Ɣef ljal n tilisa titiknitin, tugniwin n ufaylu agi ur sɛunt ara amray.'''",
+'file-no-thumb-animation-gif' => "'''Tamawt : Ɣef ljal n tilisa titiknitin, tugniwin n ifuyla GIF deg tabadut tameqṛant am ttagi ur sɛunt ara amray.'''",
# Special:NewFiles
'newimages' => 'Umuɣ n ifayluwen imaynuten',
'imagelisttext' => "Deg ukessar yella wumuɣ n '''$1''' {{PLURAL:$1|ufaylu|yifayluwen}} $2.",
+'newimages-summary' => 'Asebtar agi uslig yebeqqeḍ ifuyla ineggura i kteren.',
'newimages-legend' => 'Tastayt',
'newimages-label' => 'Isem n ufaylu (naɣ aḥric ines) :',
'showhidebots' => '($1 iṛubuten)',
'minutes' => '{{PLURAL:$1|$1 tamrect|$1 timercin}}',
'hours' => '{{PLURAL:$1|$1 asrag|$1 isragen}}',
'days' => '{{PLURAL:$1|$1 ass|$1 ussan}}',
+'weeks' => '{{PLURAL:$1|$1 imalas|$1 imalasen}}',
+'months' => '{{PLURAL:$1|$1 aggur|$1 agguren}}',
+'years' => '{{PLURAL:$1|$1 aseggwas|$1 iseggwasen}}',
'ago' => '$1 aya',
'just-now' => 'Tura kan',
'exif-exposuretime-format' => '$1 tas ($2 tas)',
'exif-fnumber' => 'Alday',
'exif-exposureprogram' => 'Ahil n timzikent',
+'exif-spectralsensitivity' => 'Aḥalfu n uylal',
+'exif-isospeedratings' => 'Aḥalfu ISO',
+'exif-shutterspeedvalue' => 'Azzal n urjal n APEX',
'exif-aperturevalue' => 'Alday n APEX',
+'exif-brightnessvalue' => 'Asaddi APEX',
'exif-exposurebiasvalue' => 'Aseɣti n timzikent',
'exif-maxaperturevalue' => 'Alday afellay',
'exif-subjectdistance' => 'Ameccaq n usentel',
'exif-sensingmethod' => 'Tawsit n umaṭṭaf',
'exif-filesource' => 'Aɣbal n ufaylu',
'exif-scenetype' => 'Tawsit n usayes',
+'exif-customrendered' => 'Agmuḍ asagan',
'exif-worldregiondest' => 'Timnaḍin n umaḍal yebeqqeḍen',
'exif-countrydest' => 'Timura yebeqqeḍen',
'exif-countrycodedest' => 'Tangalt n tamurt yebeqqeḍen',
'tog-extendwatchlist' => 'Бақылау тізімді ұлғайту (барлық жарамды өзгерістерді көрсету)',
'tog-usenewrc' => 'Кеңейтілген жуықтағы өзгерістер (JavaScript)',
'tog-numberheadings' => 'Мазмұн тақырыптарын автоматты нөмірлеу',
-'tog-showtoolbar' => 'Өңдеу құралдары орналасқан аспаптар жақтауын көрсету (JavaScript-ті қажет етеді)',
-'tog-editondblclick' => 'Қос шерту арқылы бетті өңдеу (JavaScript)',
+'tog-showtoolbar' => 'Өңдеу құралдарын көрсету',
+'tog-editondblclick' => 'Қос шерту арқылы бетті өңдеу',
'tog-editsection' => 'Бөлімдерді [өңдеу] сілтемесімен өңдеуін қос',
-'tog-editsectiononrightclick' => 'Бөлім тақырыбын оң нұқумен өңдеуін қос (JavaScript)',
+'tog-editsectiononrightclick' => 'Бөлім тақырыбын оң нұқумен бөлім өңдеуін қосу',
'tog-showtoc' => 'Мазмұнын көрсету (3-тен астам бөлімі болған жағдайда ғана)',
'tog-rememberpassword' => 'Тіркелгімді осы браузерде ұмытпа (ең көбі $1 {{PLURAL:$1|күн|күн}})',
'tog-watchcreations' => 'Мен бастаған беттерді бақылау тізіміне қос',
'tog-shownumberswatching' => 'Бақылап тұрған қатысушылардың санын көрсет',
'tog-oldsig' => 'Ағымдағы қолтаңбаңыз:',
'tog-fancysig' => 'Қолтаңбаны уикимәтін ретінде қарастыру (автоматты сілтеме қойылмайды)',
-'tog-uselivepreview' => 'Тура қарап шығуды қолдану (JavaScript) (Сынақтама)',
+'tog-uselivepreview' => 'Тура қарап шығуды қолдану (сынақтық)',
'tog-forceeditsummary' => 'Өңдеменің қысқаша мазмұндамасы бос қалғанда маған ескерт',
'tog-watchlisthideown' => 'Өңдемелерімді бақылау тізімінен жасыр',
'tog-watchlisthidebots' => 'Бот өңдемелерін бақылау тізімінен жасыр',
'userlogin-resetpassword-link' => 'Құпия сөздіңізді ұмыттыңыз ба?',
'helplogin-url' => 'Help:Тіркелу',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Тіркелуге көмек]]',
+'userlogin-loggedin' => '{{GENDER:$1|$1}} ретінде әлдеқашан кіргенсіз.
+Төмендегі пішінді басқа қатысушы кіруі ретінде қолданыңыз.',
'userlogin-createanother' => 'Басқа тіркелгі жасау',
'createacct-join' => 'Төменге өзіңіз туралы ақпарат енгізіңіз.',
'createacct-another-join' => 'Төменге жаңа тіркелгі туралы ақпарат енгізіңіз.',
'recentchanges-label-plusminus' => 'Байт бойынша беттің өзгеріс мөлшері',
'recentchanges-legend-heading' => "'''Шартты белгілер:'''",
'recentchanges-legend-newpage' => 'қ. [[Special:NewPages|бөлек бетте]]',
+'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "Төменде '''$2''' кезінен бергі ('''$1''' жеткенше дейін) өзгерістер көрсетіледі.",
'rclistfrom' => '$1 кезінен бергі жаңа өзгерістерді көрсет.',
'rcshowhideminor' => 'Шағын өңдемелерді $1',
'rcshowhidebots' => 'Боттарды $1',
-'rcshowhideliu' => 'Ð\9aÑ\96Ñ\80гендерді $1',
+'rcshowhideliu' => 'ТÑ\96Ñ\80келгендерді $1',
'rcshowhideanons' => 'Кірмегендерді $1',
'rcshowhidepatr' => 'Зерттелген өңдемелерді $1',
'rcshowhidemine' => 'Өңдемелерімді $1',
'ninterwikis' => '$1 {{PLURAL:$1|интеруики|интеруикилер}}',
'nlinks' => '$1 {{PLURAL:$1|сілтеме|сілтемелер}}',
'nmembers' => '$1 {{PLURAL:$1|мүше|мүше}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|мүше|мүше}}',
'nrevisions' => '$1 {{PLURAL:$1|түзету|түзету}}',
'nviews' => '$1 {{PLURAL:$1|қаралу|қаралу}}',
'nimagelinks' => '$1 {{PLURAL:$1|бетінде|беттерінде}} қолданылады',
'delete-warning-toobig' => 'Бұл бетте үлкен өңдеу тарихы бар, $1 {{PLURAL:$1|түзетуден|түзетуден}} астам.
Бұның жоюы {{SITENAME}} торабындағы дерекқор әрекеттерді үзіп тастауын мүмкін;
бұны абайлап өткізіңіз.',
+'deleting-backlinks-warning' => "'''Ескерту:''' Сіз жоймақшы болған мақалаға басқа беттерден сілтенген.",
# Rollback
'rollback' => 'Өңдемелерді шегіндіру',
'allmessages-filter-unmodified' => 'Өзгертілмегендер',
'allmessages-filter-all' => 'Барлығы',
'allmessages-filter-modified' => 'Өзгертілгендер',
+'allmessages-prefix' => 'Префикс бойынша сүзгі',
'allmessages-language' => 'Тілі:',
'allmessages-filter-submit' => 'Өту',
'svg-long-desc' => 'SVG файлы, кесімді $1 × $2 нүкте, файл мөлшері: $3',
'svg-long-desc-animated' => 'SVG қозғалысты файлы, кесімді $1 × $2 нүкте, файл өлшемі: $3',
'svg-long-error' => 'жарамсыз SVG файлы: $1',
-'show-big-image' => 'Ð\96оÒ\93аÑ\80Ñ\8b ажÑ\8bÑ\80аÑ\82Ñ\8bлÑ\8bмдÑ\8b',
+'show-big-image' => 'ТүпнұÑ\81Ò\9bа Ñ\84айл',
'show-big-image-preview' => 'Бұл қарап шығудағы өлшемі: $1.',
'show-big-image-other' => 'Басқа {{PLURAL:$2|ажыратылымдық|ажыратылымдық}}: $1.',
'show-big-image-size' => '$1 × $2 нүкте',
'exif-ycbcrpositioning-1' => 'Орталықты',
+'exif-dc-contributor' => 'Үлескерлер',
'exif-dc-date' => 'Күн(дер)',
'exif-dc-publisher' => 'Жариялаушы',
'exif-dc-relation' => 'Қатысты медиа',
# Separators for various lists, etc.
'semicolon-separator' => ';',
'colon-separator' => ': ',
+'quotation-marks' => '"$1"',
# Multipage image navigation
'imgmultipageprev' => '← алдыңғы бетке',
'imgmultigoto' => '$1 бетіне өту',
# Language selector for translatable SVGs
+'img-lang-default' => '(әдепкі тіл)',
'img-lang-go' => 'Өту',
# Table pager
'duration-millennia' => '$1 {{PLURAL:$1|мың жылдық|мың жылдық}}',
# Limit report
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунт|секунт}}',
+'limitreport-walltime' => 'Нақты уақытта қолданылуы',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунт|секунт}}',
'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$1|байт|байт}}',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|байт|байт}}',
'userlogin-noaccount' => '계정이 없나요?',
'userlogin-joinproject' => '{{SITENAME}}에 가입하세요',
'nologin' => '계정이 없나요? $1.',
-'nologinlink' => 'ê³\84ì \95ì\9d\84 ë§\8cë\93¤ê¸°',
+'nologinlink' => 'ê³\84ì \95ì\9d\84 ë§\8cë\93\9cì\84¸ì\9a\94',
'createaccount' => '계정 만들기',
'gotaccount' => '계정이 이미 있다면, $1.',
'gotaccountlink' => '로그인하세요',
'searchall' => '모두',
'showingresults' => "'''$2'''번 부터의 {{PLURAL:$1|결과 '''1'''개|결과 '''$1'''개}}입니다.",
'showingresultsnum' => "'''$2'''번 부터의 {{PLURAL:$3|결과 '''1'''개|결과 '''$3'''개}} 입니다.",
-'showingresultsheader' => "'''$4''' ê²\80ì\83\89ì\96´ì\97\90 ë\8c\80í\95\98ì\97¬ {{PLURAL:$5|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1'''ê°\9c|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1 - $2'''ë²\88째}}를 ë³´ì\97¬ ì£¼ê³ ì\9e\88ì\8aµë\8b\88ë\8b¤",
+'showingresultsheader' => "'''$4''' ê²\80ì\83\89ì\96´ì\97\90 ë\8c\80í\95\9c {{PLURAL:$5|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1'''ê°\9c|ê²°ê³¼ '''$3'''ê°\9c ì¤\91 '''$1 - $2'''ë²\88째}}",
'search-nonefound' => '검색어와 일치하는 결과가 없습니다.',
'powersearch-legend' => '고급 검색',
'powersearch-ns' => '다음 이름공간에서 검색:',
'recentchanges-summary' => '위키의 최근 바뀜이 나와 있습니다.',
'recentchanges-noresult' => '지정한 조건과 일치하는 주어진 기간 동안 바뀜이 없습니다.',
'recentchanges-feed-description' => '위키의 최근 바뀜이 나와 있습니다.',
-'recentchanges-label-newpage' => '새로운 문서',
+'recentchanges-label-newpage' => '새 문서',
'recentchanges-label-minor' => '사소한 편집',
'recentchanges-label-bot' => '봇의 편집',
'recentchanges-label-unpatrolled' => '아직 검토하지 않은 편집',
'recentchanges-label-plusminus' => '바이트로 표기된 바뀐 문서 크기',
'recentchanges-legend-heading' => "'''범례:'''",
-'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서 목록]]도 참고)',
+'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서 목록]]도 보세요)',
'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "다음은 '''$2'''에서부터 바뀐 문서 '''$1'''개입니다.",
'rclistfrom' => '$1 이래로 새로 바뀐 문서 보기',
'import-error-interwiki' => '"$1" 문서는 제목이 바깥 링크(인터위키)용으로 할당되어 있기 때문에 가져오지 않습니다.',
'import-error-special' => '"$1" 문서는 특수 문서에 속해 있기 때문에 가져오지 않습니다.',
'import-error-invalid' => '"$1" 문서는 제목이 잘못되었기 때문에 가져오지 않습니다.',
-'import-error-unserialize' => '"$1" 문서의 $2 판이 일렬적이지 않습니다. $3 콘텐츠 모델을 사용하여 $4 형식으로 일렬화되도록 판을 보고했습니다.',
+'import-error-unserialize' => '"$1" 문서의 $2 판이 일렬적이지 않습니다. $3 내용 모델을 사용하여 $4 형식으로 일렬화되도록 판을 보고했습니다.',
'import-options-wrong' => '잘못된 {{PLURAL:$2|선택 사항}}: <nowiki>$1</nowiki>',
'import-rootpage-invalid' => '주어진 루트 문서는 잘못된 제목입니다.',
'import-rootpage-nosubpage' => '루트 문서의 "$1" 이름공간은 하위 문서를 허용하지 않습니다.',
'pageinfo-length' => '문서 길이 (바이트)',
'pageinfo-article-id' => '문서 ID',
'pageinfo-language' => '문서 내용 언어',
-'pageinfo-content-model' => '문서 콘텐츠 모델',
+'pageinfo-content-model' => '문서 내용 모델',
'pageinfo-robot-policy' => '로봇에 의한 색인',
'pageinfo-robot-index' => '허용됨',
'pageinfo-robot-noindex' => '불허됨',
* @author ILVI
* @author Jewbask
* @author Maor X
+ * @author Menachem.Moreira
* @author Remember the dot
* @author Runningfridgesrule
* @author Taichi
# User preference toggles
'tog-underline' => 'Suliñar los atamientos:',
'tog-justify' => 'Arrimar los paraggrafos de dos vandas',
-'tog-hideminor' => 'Esconder los trocamientos chiquiticos en la hoja de los "trocamientos freskos"',
+'tog-hideminor' => 'Esconder los trocamientos chikos en la hoja de los "trocamientos freskos"',
'tog-hidepatrolled' => 'Esconder los trocamientos surveyados en la hoja de los "trocamientos freskos"',
'tog-newpageshidepatrolled' => 'Esconder las hojas surveyadas de la lista de las hojas muevas',
'tog-extendwatchlist' => 'Anchar mi lista de akavidamiento afín de àmostrar todos los trocamientos, no sólo los muevos',
'tog-usenewrc' => 'Usar el modo adelantado (JavaScript es menester)',
'tog-numberheadings' => 'Numerotar otomatika mente los títůlos de los kapítůlos',
-'tog-showtoolbar' => 'Àmostrar el chibuk de aparatos (JavaScript es menester)',
-'tog-editondblclick' => 'Trocar las hojas con doble klik (JavaScript es menester)',
+'tog-showtoolbar' => 'Àmostrar el chibuk de aparatos',
+'tog-editondblclick' => 'Trocar las pajinas con doble klik',
'tog-editsection' => 'Ofrir la possibilidad de trocar los kapítůlos con el atamiento [trocar]',
-'tog-editsectiononrightclick' => 'Pueder trocar los kapítůlos, en pizando el botón derecho del ratón encima el títůlo (JavaScript es menester)',
+'tog-editsectiononrightclick' => 'Pueder trocar los kapítůlos, en pizando el botón derecho del ratón encima el títůlo',
'tog-showtoc' => 'Àmostrar el cuadro de contènidos (para las hojas que tienen más de 3 títůlos de capítůlo)',
'tog-rememberpassword' => 'Acordarse de mi entrada en este navigador (a lo más muńcho $1 {{PLURAL:$1|día|días}})',
'tog-watchcreations' => 'Akavidar las hojas que crîo',
'tog-shownumberswatching' => 'Àmostrar el kadhar de usadores que están akavidando las hojas',
'tog-oldsig' => 'La firma presente',
'tog-fancysig' => 'Tratar la firma como un vikiteksto (sin un atamiento otomatiko)',
-'tog-uselivepreview' => 'Usar el "previsteo bivo" (JavaScript es menester) (eksperimental)',
+'tog-uselivepreview' => 'Usar el "previsteo bivo" (eksperimental)',
'tog-forceeditsummary' => 'Avizarme cuando dexo el somaryo vazío',
'tog-watchlisthideown' => 'Esconder mis trocamientos en mi lista de akavidamiento',
'tog-watchlisthidebots' => 'Esconder trocamientos de bot en mi lista de akavidamiento',
'thu' => 'Juğ',
'fri' => 'Vie',
'sat' => 'Shab',
-'january' => 'Enero',
+'january' => 'Jenero',
'february' => 'Hevrero',
'march' => 'Março',
-'april' => 'Abril',
+'april' => 'Avril',
'may_long' => 'Mayo',
'june' => 'Juño',
'july' => 'Jullo',
'oct' => 'Och',
'nov' => 'Nov',
'dec' => 'Dez',
+'january-date' => 'Jenero $1',
+'february-date' => 'Fevrero $1',
+'march-date' => 'Marso $1',
+'april-date' => 'Avril $1',
+'may-date' => 'Mayo $1',
+'june-date' => 'Junio $1',
+'july-date' => 'Djulio $1',
+'august-date' => 'Agosto $1',
+'september-date' => 'Sietembre $1',
+'october-date' => 'Oktubre $1',
+'november-date' => 'Noviembre $1',
+'december-date' => 'Disiembre $1',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Kateggoría|Kateggorías}}',
'article' => 'Artícůlo de contenido',
'newwindow' => '(Se avre en una mueva ventana)',
'cancel' => 'Anular',
-'moredotdotdot' => 'Más...',
-'mypage' => 'Mi hoja',
+'moredotdotdot' => 'Mas...',
+'mypage' => 'Pajina',
'mytalk' => 'Mi diskusyon',
'anontalk' => 'Diskusyón para este adresso de IP',
'navigation' => 'Navigación',
-'and' => ' y',
+'and' => ' i',
# Cologne Blue skin
'qbfind' => 'Topar',
'returnto' => 'Tornar a $1.',
'tagline' => 'De {{SITENAME}}',
'help' => 'Ayudo',
-'search' => 'Busca',
-'searchbutton' => 'Busca',
+'search' => 'Bushkar',
+'searchbutton' => 'Bushkar',
'go' => 'Vate',
'searcharticle' => 'Vate',
'history' => 'La îstoria de la hoja',
'articlepage' => 'Ver el artícůlo de contenido',
'talk' => 'Diskusyón',
'views' => 'Vistas',
-'toolbox' => 'Cuadro de aparates',
+'toolbox' => 'Aparatos',
'userpage' => 'Ver la hoja del usador',
'projectpage' => 'Ver la hoja del projeto',
'imagepage' => 'Ver la hoja de la dosya',
'protectedpage' => 'Hoja guardada',
'jumpto' => 'Salta a:',
'jumptonavigation' => 'navigación',
-'jumptosearch' => 'búsquida',
+'jumptosearch' => 'bushkar',
+'pool-errorunknown' => 'Yerro deskonosido',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
-'aboutsite' => 'Encima de la {{SITENAME}}',
+'aboutsite' => 'Encima de {{SITENAME}}',
'aboutpage' => 'Project:Encima de',
'copyright' => 'El contenido se puede topar debaxo de la <i>$1</i>',
'copyrightpage' => '{{ns:project}}:Derechos de autor',
'ok' => 'DE ACORDDO',
'retrievedfrom' => 'Acòjido del adhresso "$1"',
-'youhavenewmessages' => 'Tienes $1 ($2).',
+'youhavenewmessages' => '{{PLURAL:$3|Tienes}} $1 ($2).',
'youhavenewmessagesmulti' => 'Tienes messajes nuevos en $1',
'editsection' => 'troca',
'editold' => 'troca',
'site-atom-feed' => 'Alimentela de Atom de $1',
'page-rss-feed' => '"$1" Fuente RSS',
'page-atom-feed' => '"$1" Subscripción Atom',
-'red-link-title' => '$1 (esta hoja no egziste)',
+'red-link-title' => '$1 (la hoja no egziste)',
# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Hoja',
+'nstab-main' => 'Pajina',
'nstab-user' => 'Hoja de empleador',
'nstab-media' => 'Hoja de Meddia',
'nstab-special' => 'Hoja especial',
# General errors
'error' => 'Yerro',
'databaseerror' => 'Yerro de la Databasa',
+'databaseerror-error' => 'Yerro: $1',
'missing-article' => 'La basa de dados no topó el teksto de la hoja llamada "$1" $2.
En lo mas muncho, esto se cavsa de un "dif" anakróniko ou de un atamiento a la istoria de una hoja que se efaçó.
'viewsource' => 'Ver su manadero',
# Login and logout pages
+'welcomeuser' => 'Bienvinidos, $1',
'yourname' => 'Su nombre de usuario',
'yourpassword' => 'Parola',
'yourpasswordagain' => 'Entra de muevo la parola',
'gotaccount' => "¿Ya tienes un cuento? '''$1'''.",
'gotaccountlink' => 'Entrar',
'userlogin-resetlink' => 'Olvidates tus detalyos de akseso?',
+'userlogin-createanother' => 'Krear otro kuento',
+'createacct-emailrequired' => 'Adreso de korreo elektroniko',
'createaccountmail' => 'por una letra electrónica',
+'createaccountreason' => 'Razon:',
+'createacct-reason' => 'Razon',
+'createacct-submit' => 'Krear tu cuento',
+'createacct-another-submit' => 'Krear otro kuento',
+'createacct-benefit-body2' => '{{{{PLURAL:$1|pajina|pajinas}}',
'userexists' => 'El nombre que entrates ya se usa.
Si puede ser, escoge un otro nombre.',
'createaccounterror' => 'No se pudo crear el cuento: $1',
'passwordreset-email' => 'Adresso de letral:',
# Special:ChangeEmail
+'changeemail' => 'Kambiar adreso de korreo elektroniko',
+'changeemail-header' => 'Kambiar adreso de korreo elektroniko de kuento',
+'changeemail-newemail' => 'Muevo adreso de korreo elektroniko:',
+'changeemail-none' => '(dinguno)',
'changeemail-submit' => 'Trocar letral',
'changeemail-cancel' => 'Anular',
'loginreqpagetext' => 'Tienes que $1 para pueder ver otras hojas.',
'accmailtitle' => 'La kontrasenya ha sido embiada.',
'accmailtext' => 'La kontrasenya para "$1" se ha embiado a $2.',
-'newarticle' => '(Nuevo)',
+'newarticle' => '(Muevo)',
'newarticletext' => 'Arrivates a una hoja que daínda no egziste.
Para crear esta hoja, empeça a escribir en la caxa de abaxo. Mira [[{{MediaWiki:Helppage}}|la hoja de ayudo]] para saber más.
Si venites aquí por yerro, torna a la hoja de antes.',
'moveddeleted-notice' => "Esta ója fue efassada.
El ''log'' de efassado i taxireado de la ója es amostrado abasho para dar referensia.",
+# Content models
+'content-model-wikitext' => 'vikiteksto',
+
# Parser/template warnings
'post-expand-template-inclusion-warning' => "'''Avizo:''' La contenencia de xablon está muy grande.
Algunos xablones no van á ser comprendidos.",
# Revision deletion
'rev-delundel' => 'mostra/esconde',
'rev-showdeleted' => 'mostra',
-'revdelete-show-file-submit' => 'Sí',
+'revdelete-show-file-submit' => 'Si',
'revdelete-radio-same' => '(no troques)',
-'revdelete-radio-set' => 'Sí',
+'revdelete-radio-set' => 'Eskondido',
'revdelete-radio-unset' => 'No',
-'revdelete-log' => 'Razón:',
+'revdelete-log' => 'Razon:',
'revdel-restore' => 'troca la visibilitá',
'pagehist' => 'La storia de la hoja',
+'revdelete-otherreason' => 'Otro razon/razon adisiyonal',
'revdelete-reasonotherlist' => 'Otra razón',
# History merging
-'mergehistory-reason' => 'Razón:',
+'mergehistory-reason' => 'Razon:',
# Merge log
'revertmerge' => 'Apartar',
'search-suggest' => 'Quijites dezir: $1',
'search-interwiki-caption' => 'Proyectos hermanos',
'search-interwiki-default' => 'Los resultados de $1:',
-'search-interwiki-more' => '(más)',
+'search-interwiki-more' => '(mas)',
'searchrelated' => 'lisionado',
'searchall' => 'todos',
'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
'powersearch-ns' => 'Busca en los espacios de nombres:',
'powersearch-redir' => 'Mostra las redirecciones',
'powersearch-toggleall' => 'Todos',
+'powersearch-togglenone' => 'dingun',
'search-external' => 'Búsqueda eksterna',
# Preferences page
'mypreferences' => 'Las mis preferensias',
'prefs-skin' => 'Vista',
'skin-preview' => 'Previstear',
+'prefs-datetime' => 'Data i ora',
'prefs-rc' => 'Los Trocamientos de Alcabo',
'prefs-watchlist' => 'Lista de los Trocamientos Preferidos',
'prefs-watchlist-days' => 'El número de los días a mostrar en la lista de los trocamientos preferidos:',
-'prefs-watchlist-days-max' => '$1 {{PLURAL:$1|días|días}} a lo más muncho',
+'prefs-watchlist-days-max' => '$1 {{PLURAL:$1|diya|diyas}} a lo más muncho',
'prefs-resetpass' => 'Trocar la parola',
+'prefs-changeemail' => 'Kambiar adreso de korreo elektroniko',
'prefs-rendering' => 'Vista',
'saveprefs' => 'Enrejistrar',
+'searchresultshead' => 'Bushkar',
'timezoneregion-africa' => 'África',
'timezoneregion-america' => 'América',
'timezoneregion-antarctica' => 'Antárctica',
'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Oseano Atlantiko',
'timezoneregion-australia' => 'Ostralia',
'timezoneregion-europe' => 'Europa',
+'timezoneregion-indian' => 'Oseano Indiko',
+'timezoneregion-pacific' => 'Oseano Pasifiko',
+'prefs-searchoptions' => 'Bushkar',
'prefs-files' => 'Dosyas',
-'youremail' => 'El adderesso de tu letra electrόnica:',
-'username' => 'Nombre de usuario:',
+'youremail' => 'Korreo elektroniko:',
+'username' => '{{GENDER:$1|Nombre de usuario}}:',
'yourrealname' => 'Nombre verdadero:',
-'yourlanguage' => 'Lingua:',
+'yourlanguage' => 'Lengua:',
'yournick' => 'Firma mueva:',
-'email' => 'Letral',
+'gender-unknown' => 'Prefiero no dezir',
+'gender-male' => 'El redakto pajinas de viki',
+'gender-female' => 'Eya redakto pajinas de viki',
+'email' => 'Korreo elektroniko',
'prefs-help-email' => 'El adreso de e-posta es menester para alimpiar la tu parola, si la olvidates',
'prefs-help-email-others' => 'Endemas puedes eskojer si keres dar pueder a otros usadores de azer kontakto kon ti por modre de e-posta, a traverso de un atamiento en tus ojas de usador i de diskusyon.',
+'prefs-i18n' => 'Internasionalisasyion',
'prefs-signature' => 'Firma',
+'prefs-editor' => 'Redaktor',
+
+# User rights
+'userrights-reason' => 'Razon:',
# Groups
'group-user' => 'Usadorers',
'group-sysop' => 'Administradores',
+'group-bureaucrat' => 'Burokratos',
'group-all' => '(todos)',
+'group-bureaucrat-member' => '{{GENDER:$1|burokrato}}',
+
'grouppage-sysop' => '{{ns:project}}:Administradores',
+'grouppage-bureaucrat' => '{{ns:project}}:Burokratos',
# Rights
+'right-read' => 'Meldar pajinas',
'right-edit' => 'Trocar las hojas',
+'right-createpage' => 'Krear pajinas (ke no son pajinas de diskusyon)',
+'right-createtalk' => 'Krear pajinas de diskusyon',
'right-minoredit' => 'Marcar trocamientos como "chiquiticos"',
'right-delete' => 'Efassar hojas',
'action-read' => 'meldar esta hoja',
'action-edit' => 'trocar esta hoja',
'action-createpage' => 'crear hojas',
+'action-createtalk' => 'Krear pajinas de diskusyon',
'action-delete' => 'efassar esta hoja',
+'action-sendemail' => 'embiar korreo elektronikos',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|trocamiento|trocamientos}}',
+'enhancedrc-history' => 'istoria',
'recentchanges' => 'Trocamientos freskos',
'recentchanges-legend' => 'Opciones encima de los trocamientos frescos',
'recentchanges-summary' => 'Perseguid en esta hoja, los trocamientos de alcabo realizados en la Viki.',
'minoreditletter' => 'ch',
'newpageletter' => 'N',
'boteditletter' => 'b',
-'rc-enhanced-expand' => 'Mostra los detalyos (cale JavaScript)',
+'rc_categories_any' => 'Kualkyer',
+'rc-enhanced-expand' => 'Mostra los detalyos',
'rc-enhanced-hide' => 'Guarda los detalyos',
# Recent changes linked
'license-header' => 'Lesensiamyénto',
# Special:ListFiles
+'listfiles_date' => 'Data',
'listfiles_name' => 'Nombre',
'listfiles_user' => 'Usuario',
'listfiles_size' => 'Boy',
+'listfiles-latestversion-yes' => 'Si',
# File description page
'file-anchor-link' => 'Archivo',
'sharedupload-desc-here' => 'Esta hoja es de $1 y puede ser usado por otros projetos.
La descripción en su [$2 hoja de descripción del arxivo] está amostrada debaxo.',
'uploadnewversion-linktext' => 'Subir una nueva versión de este arxivo',
+'shared-repo-from' => 'de $1',
+
+# File reversion
+'filerevert-comment' => 'Razon:',
+
+# File deletion
+'filedelete-comment' => 'Razon:',
+'filedelete-reason-otherlist' => 'Otra razon',
+
+# MIME search
+'mimesearch' => 'bushkida por MIME',
+'download' => 'deskargar',
# Random page
'randompage' => 'Hoja por asardo',
# Statistics
'statistics' => 'Estatísticas',
+'statistics-pages' => 'Pajinas',
+
+'brokenredirects-edit' => 'trocar',
+
+'withoutinterwiki-submit' => 'Amostrar',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|bayt|baytes}}',
'nmembers' => '$1 {{PLURAL:$1|miembro|miembros}}',
'prefixindex' => 'Todas las hojas con prefixo',
+'shortpages' => 'Pajinas kurtas',
+'longpages' => 'Pajinas largas',
'usercreated' => '{{GENDER:$3|Enrejistrado|Enrejistrada}} el $1 a las $2',
'newpages' => 'Hojas muevas',
+'newpages-username' => 'Nombre de usuario:',
'ancientpages' => 'Artikolos mas viejos',
'move' => 'taxirea',
'movethispage' => 'Tashirea esta hoja',
'pager-older-n' => '{{PLURAL:$1|1 de antes|$1 de antes}}',
# Book sources
-'booksources' => 'Fuentes de libros',
+'booksources' => 'Fuentes de livros',
'booksources-search-legend' => 'Buscar fuentes de libros',
'booksources-go' => 'Yir',
'prevpage' => 'Hoja de antés ($1)',
'allpagesfrom' => 'Mostrar hojas que empecen por:',
'allpagesto' => 'Mostrar hojas escapadas con:',
-'allarticles' => 'Todos los artikolos',
+'allarticles' => 'Todas las pajinas',
'allinnamespace' => 'Todas las pajinas (espasio $1)',
'allpagessubmit' => 'Àmostrar la lista',
# Special:LinkSearch
'linksearch' => 'Linkes eksternos',
+'linksearch-ok' => 'Bushkar',
'linksearch-line' => 'Atamiento para $1 en la ója $2',
+# Special:ListUsers
+'listusers-submit' => 'Amostrar',
+
# Special:ListGroupRights
'listgrouprights-members' => '(ver los miembros de este grupo)',
# Email user
-'emailuser' => 'Embia e-mail a este usuario',
+'emailuser' => 'Embia korreo elektroniko a este usuario',
# Watchlist
'watchlist' => 'Lista de akavidamiento',
Mira $2 para un registro de los efassados nuevos.',
'dellogpage' => 'Registro de efassados',
'deletecomment' => 'Razón:',
-'deleteotherreason' => 'Otra razón:',
+'deleteotherreason' => 'Otra razon/razon adisiyonal:',
'deletereasonotherlist' => 'Otra razón',
'deletereason-dropdown' => '* Motivos generales de efassamientos
** La demanda del criador de la hoja
'protectedarticle' => 'guardó «[[$1]]»',
'modifiedarticleprotection' => 'trocó el nivel de protección de «[[$1]]»',
'prot_1movedto2' => '[[$1]] trasladado a [[$2]]',
-'protectcomment' => 'Razón:',
+'protectcomment' => 'Razon:',
'protectexpiry' => 'Escapa:',
'protect_expiry_invalid' => 'Tiempo de escapación yerrado.',
'protect_expiry_old' => 'El tiempo de escapación está en el passado.',
'protect-expiring' => 'caduca el $1 (UTC)',
'protect-cascade' => 'Protección en cascada - guardar todas las hojas incluidas en ésta.',
'protect-cantedit' => 'No puedes trocar el nivel de protección porque no tienes permissión para hazer ediciones.',
+'protect-otherreason' => 'Otra razon/razon adisiyonal',
+'protect-otherreason-op' => 'Otra razon',
'restriction-type' => 'Permiso:',
'restriction-level' => 'Nivel de restricción:',
+# Restrictions (nouns)
+'restriction-create' => 'Krear',
+
# Undelete
'undeletelink' => 've/trae atrás',
'undeleteviewlink' => 've',
+'undeletecomment' => 'Razon:',
+'undelete-search-submit' => 'Bushkar',
+'undelete-show-file-submit' => 'Si',
# Namespace form on various pages
'namespace' => 'Espacio de nombres:',
'contributions' => 'Ajustamientos {{GENDER:$1|del usador|de la usadora}}',
'contributions-title' => 'Ajustamientos {{GENDER:$1|del usuario|de la usuaria}} $1',
'mycontris' => 'Mis dados',
-'contribsub2' => '$1 ($2)',
+'contribsub2' => 'Para {{GENDER:$3|$1}}($2)',
'uctop' => '(última modificación)',
'month' => 'Desde el mes (i antes):',
-'year' => 'Desde el año (i antes):',
+'year' => 'Desde el anyo (i antes):',
'sp-contributions-newbies' => 'Mostrar solo las ajustamientos de los usuarios nuevos',
'sp-contributions-blocklog' => 'registro de bloqueos',
'sp-contributions-logs' => 'enrejistros',
'sp-contributions-talk' => 'Diskusyón',
'sp-contributions-search' => 'Buscar ajustamientos',
-'sp-contributions-username' => 'Dirección IP o nombre de usuario:',
+'sp-contributions-username' => 'Adreso de IP o nombre de usuario:',
'sp-contributions-toponly' => "Amostrar solo revisiones d'alkavo",
-'sp-contributions-submit' => 'Buscar',
+'sp-contributions-submit' => 'Bushkar',
# What links here
'whatlinkshere' => 'Atamientos a esta hoja',
'whatlinkshere-title' => 'Hojas que dan link a "$1"',
-'whatlinkshere-page' => 'Hoja:',
+'whatlinkshere-page' => 'Pajina:',
'linkshere' => "Las hojas venideras dan link a '''[[:$1]]''':",
'nolinkshere' => "Dinguna ója tiene atamientos kon '''[[:$1]]'''",
'isredirect' => 'Hoja redirigida',
# Block/unblock
'blockip' => 'Bloquear usuario',
-'ipboptions' => '2 oras:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 año:1 year,para siempre:infinite',
+'ipbreason' => 'Razon:',
+'ipboptions' => '2 oras:2 hours,1 día:1 day,3 días:3 days,1 semana:1 week,2 semanas:2 weeks,1 mes:1 month,3 meses:3 months,6 meses:6 months,1 anyo:1 year,para siempre:infinite',
'ipblocklist' => 'Usadores bloqueados',
+'blocklist-reason' => 'Razon',
+'ipblocklist-submit' => 'Bushkar',
'blocklink' => 'bloka',
'unblocklink' => 'quita el bloko',
'change-blocklink' => 'troca el bloko',
'contribslink' => 'donos',
+'emaillink' => 'embiar korreo elektroniko',
'blocklogpage' => 'Bloqueos de usuarios',
'blocklogentry' => 'bloqueó a [[$1]] $3 durante un tiempo de $2',
'unblocklogentry' => 'desbloqueó a "$1"',
Si puede ser, escoge otro nombre.',
'movetalk' => 'Renombrar la hoja de diskussión también, si es possible.',
'movelogpage' => 'Registro de traslados',
-'movereason' => 'Razón:',
+'movereason' => 'Razon:',
'revertmove' => 'abolta',
# Export
'tooltip-ca-move' => 'Taxirea (renombra) esta hoja',
'tooltip-ca-watch' => 'Ajustar esta hoja a tu lista de akavidamientos',
'tooltip-ca-unwatch' => 'Quita esta hoja de tu lista de escogidos',
-'tooltip-search' => 'Busca en {{SITENAME}}',
+'tooltip-search' => 'Bushkar en {{SITENAME}}',
'tooltip-search-go' => 'Si ay una hoja con este nombre egzakto, vate allá.',
-'tooltip-search-fulltext' => 'Busca este teksto en las hojas',
+'tooltip-search-fulltext' => 'Bushka este teksto en las hojas',
'tooltip-p-logo' => 'Vate a la primera hoja',
'tooltip-n-mainpage' => 'Vate a la primera hoja',
'tooltip-n-mainpage-description' => 'Vate a la primera hoja',
# Attribution
'anonymous' => '{{PLURAL:$1|Uzuario anonimo|Uzuarios anonimos}} de {{SITENAME}}',
+# Info page
+'pageinfo-contentpage-yes' => 'Si',
+'pageinfo-protect-cascading-yes' => 'Si',
+
# Browsing diffs
'previousdiff' => '← Trocamiento más antiguo',
'nextdiff' => 'Edición más nueva →',
'svg-long-desc' => 'arxivo SVG, nominalmente $1 × $2 píkseles, boy del arxivo: $3',
'show-big-image' => 'Resolución original',
+# Special:NewFiles
+'ilsubmit' => 'Bushkar',
+'bydate' => 'por data',
+
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'just-now' => 'endagora',
+
+# Human-readable timestamps
+'hours-ago' => 'aze $1{{PLURAL:$1|ora|oras}}',
+'minutes-ago' => 'aze {{PLURAL:$1|minuto|minutos}}',
+'seconds-ago' => 'aze {{PLURAL:$1|segundo|segundos}}',
+
# Bad image list
'bad_image_list' => 'El formato es ansina:
* gpsaltitude',
# Exif tags
+'exif-artist' => 'Otor',
'exif-filesource' => 'Manadéro de archivo',
'exif-gpstimestamp' => 'Tiémpo GPS (óra atómica)',
'exif-gpsdatestamp' => 'Dáta GPS',
+'exif-languagecode' => 'Lengua',
'exif-meteringmode-255' => 'Otro',
'exif-iimcategory-hth' => 'Salud',
'exif-iimcategory-lab' => 'Lavoro',
+'exif-iimcategory-sci' => 'Sensiya i teknolojiya',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'todos',
'monthsall' => '(todos)',
# Email address confirmation
-'confirmemail' => 'Konfirmar direksion e-pósta',
+'confirmemail' => 'Konfirmar adreso de korreo elektronika',
'confirmemail_send' => 'Embiar el kodigo de konfirmasion.',
'confirmemail_sent' => 'Konfirmasion de pósta embiada.',
-'confirmemail_success' => 'Su direksion de pósta a sido konfirmada. Agóra puedes registrarse e kolaborar en el wiki.',
+'confirmemail_success' => 'Su adreso de korreo elektronika a sido konfirmada. Agóra puedes registrarse e kolaborar en el wiki.',
# Delete conflict
'recreate' => 'Krear de muevo',
# action=purge
'confirm_purge_button' => 'Akseptár',
+# action=watch/unwatch
+'confirm-watch-button' => "D'akodro",
+'confirm-unwatch-button' => "D'akodro",
+
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
# Multipage image navigation
'imgmultipageprev' => '← pajina anterior',
'imgmultipagenext' => 'siguiente pajina →',
# Auto-summaries
'autoredircomment' => 'Redireksionado a [[$1]]',
-'autosumm-new' => 'Pajina mueva: $1',
+'autosumm-new' => 'Pajina kreado con "$1"',
# Live preview
'livepreview-loading' => 'Cargando...',
'version-version' => '(Versión $1)',
'version-poweredby-others' => 'otros',
'version-software-version' => 'Versión',
+'version-entrypoints-header-url' => 'URL',
# Special:FileDuplicateSearch
-'fileduplicatesearch-submit' => 'Buscar',
+'fileduplicatesearch-submit' => 'Bushkar',
# Special:SpecialPages
'specialpages' => 'Hojas especiales',
# Special:Tags
'tag-filter' => 'Filtro de [[Special:Tags|etiquetas]]:',
'tag-filter-submit' => 'Filtro',
+'tags-active-yes' => 'Si',
'tags-edit' => 'trocar',
# Special:ComparePages
# HTML forms
'htmlform-selectorother-other' => 'Otro',
+'htmlform-yes' => 'Si',
# New logging system
'logentry-newusers-autocreate' => 'El cuento $1 fue crîado otomatika mente',
+'rightsnone' => '(dinguno)',
# Feedback
'feedback-subject' => 'Sujeto',
'feedback-message' => 'Messaje',
'feedback-cancel' => 'Anular',
+# Search suggestions
+'searchsuggest-search' => 'Bushkar',
+
+# Durations
+'duration-seconds' => '$1{{PLURAL:$1|segundo|segundos}}',
+'duration-minutes' => '$1{{PLURAL:$1|minuto|minutos}}',
+'duration-hours' => '$1{{PLURAL:$1|ora|oras}}',
+'duration-days' => '$1{{PLURAL:$1|diya|diyas}}',
+'duration-weeks' => '$1{{PLURAL:$1|semana|semanas}}',
+'duration-years' => '$1{{PLURAL:$1|anyo|anyos}}',
+'duration-decades' => '$1{{PLURAL:$1|syekolo|syekolos}}',
+'duration-centuries' => '$1{{PLURAL:$1|syekolo|syekolos}}',
+
+# Limit report
+'limitreport-cputime-value' => '$1{{PLURAL:$1|segundo|segundos}}',
+'limitreport-walltime-value' => '$1{{PLURAL:$1|segundo|segundos}}',
+
+# Special:ExpandTemplates
+'expand_templates_ok' => "D'akodro",
+
);
'delete-warning-toobig' => "Dës Säit huet eng laang Versiounsgeschicht, méi wéi $1 {{PLURAL:$1|Versioun|Versiounen}}.
D'Läschen dovu kann zu Stéierungen am Fonctionnement vun {{SITENAME}} féieren;
dës Aktioun soll mat Virsiicht gemaach ginn.",
+'deleting-backlinks-warning' => "'''Opgepasst:''' Aner Säite linken op d'Säit déi Dir am Gaang sidd ze läschen.",
# Rollback
'rollback' => 'Ännerungen zrécksetzen',
'createaccounterror' => 'И аккаунт туькӀуьриз мумкин ттуш: $1',
'loginsuccesstitle' => 'Агалкьунралди гьахьун',
'wrongpasswordempty' => 'Тавакъу ийида, ичӀи тушир парол ттур.',
-'mailmypassword' => 'ЦÓ\80ийи паÑ\80ол Ñ\8d-мейлдиз кÑ\8aаÑ\87ун',
+'mailmypassword' => 'Ð\9fаÑ\80ол алÑ\83дна гадÑ\80ун',
'mailerror' => 'Чар ракъурунин гъалатӀ: $1',
'emailconfirmlink' => 'Куь электрон почтунин адрес тестикьун.',
'accountcreated' => 'Аккаунт туькӀуьрнава',
'contributions-title' => '$1 уртахди кутур крар',
'mycontris' => 'Кутур кар',
'contribsub2' => '($1)-ин кутур пай ($2)',
-'uctop' => '(вини кьил)',
+'uctop' => 'алай',
'month' => ' Вацралай (ва адалай вилик)',
'year' => 'Иисалай (ва адалай вилик):',
* @ingroup Language
* @file
*
+ * @author Bonevarluri
* @author Mogoeilor
*/
'tog-minordefault' => 'همه ویرایشتیا کؤچک نه وا پیش فرض بیئن نشو دار کو.',
'tog-previewontop' => 'پیش سیل نه دما جعوه ویرایشت نشو بیئه',
'tog-previewonfirst' => 'پیش سیل نه د اولین ویرایشت نشو بیئه',
+'tog-enotifwatchlistpages' => 'اوسه که یه گل بلگه یا فایلی د سیل برگ مه آلشت بوئه منه وا ایمیل خور کو',
'tog-enotifusertalkpages' => 'وختی که بلگه گپسن کارور آلشت پیدا کرد منه وا ایمیل خور کو',
+'tog-enotifminoredits' => 'همچنو اوسه که ویرایشتیا کؤچکی د بلگیا یا فایلیا انجوم بوئه منه خور کو',
+'tog-enotifrevealaddr' => 'نشونی ایمیل منه د ایمیل اشگار نشو بیه',
'tog-shownumberswatching' => 'انازه کاروریایی که د حالت دیئنن نشو بیه',
'tog-oldsig' => 'امضايی هيئش:',
+'tog-fancysig' => 'وا امضا چی ویکی متن برخورد کو',
'tog-uselivepreview' => 'د پیش سیل زنه استفاده کو',
+'tog-forceeditsummary' => 'منه وختی که یه گل چکسه ویرایشت حالی وارد بوئه سریع خور کو',
'tog-watchlisthideown' => 'قام كو ويرايشت منه د',
+'tog-watchlisthidebots' => 'ویرایشت یا بوت نه د سیل برگ قام کو',
'tog-watchlisthideminor' => 'قام كو ويرايشت کؤچک منه د',
+'tog-watchlisthideliu' => 'ویرایشت یا کاروریا وامئن سیستم نه د سیل برگ قام کو',
+'tog-watchlisthideanons' => 'ویرایشت یا کاروریا ناشناس نه د سیل برگ قام کو',
+'tog-watchlisthidepatrolled' => 'ویرایش تیا د تی رس نه د سیل برگ قام کو',
+'tog-ccmeonemails' => 'کپی ایمیل یا منه که سی کسونا تر می فرسنم سیم کل کو',
'tog-diffonly' => 'بلگیایی که شومل فرخیا هارن نشون نیه',
'tog-showhiddencats' => 'دسه يا قام بيئنه نشون بيه',
+'tog-useeditwarning' => 'وختی که آلشتیا ذخیره نبیه د بلگه ویرایشت وه جا می نم خورم کو',
+'tog-prefershttps' => 'همیشه وختی که مه وامئن هئم د ارتواط امن استفاده کو',
'underline-always' => 'هميشه',
'underline-never' => 'هيژوخت',
'category-empty' => 'ای دسه واقعن شومل هیژ بلگه ای یا رسانه ای نی',
'hidden-categories' => '{{PLURAL:$1|دسته قام بيه|دسته يا قام بيه}}',
'hidden-category-category' => 'دسه یا قام بیه',
-'category-subcat-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای زیردسه, خارج د $2 کل.}}',
+'category-subcat-count' => '{{جمی:$2|ای دسه فقط زیر دسه دینداگر هان دش .|ای دسه {{جمی:$1| زیردسه|$1 زیردسه یا}}هئ , خارج د $2 کل.}}',
+'category-subcat-count-limited' => 'ای دسه وا دمال {{جمی:$1|زیردسه|$1زیردسه یا}} بوئه',
'category-article-count' => '{{جمی:$2|ای دسه شومل بلگه نهاییه .| {{جمی:$1| بلگه هئ|$1 بلگیا هئن}} د ای دسه, خارج د $2 کل.}}',
'listingcontinuesabbrev' => 'دماله',
'index-category' => 'بلگيا سيائه دار',
'jumpto' => 'پئرستن د',
'jumptonavigation' => 'ناوگشتن',
'jumptosearch' => 'پی جوری',
+'pool-timeout' => 'وخت سی تیه وه ره منن سی قلف بیئن تموم بی',
+'pool-queuefull' => 'ذخیره گی گرتن پر بیه',
'pool-errorunknown' => 'خطا ناشناس',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'badaccess' => 'خطا :اجازه بئیر',
'badaccess-group0' => 'شما اجازه انجوم کاری که حاستیت نارین',
+'badaccess-groups' => 'ای کاری که شما هاستیته سی کاروریا د {{جمی:$2|گرو|یکی د گرویا}}: $1 مئدود بیه',
'versionrequired' => 'یه نسقه د نیازمنیا ویکی رسانه
$1',
+'versionrequiredtext' => 'نسقه $1 ویکی مدیا سی استفاده د ای بلگه لازم هئی .
+وه نه بوینیت [[ویجه:نسقه|نسقه بلگه]].',
'ok' => 'خوئه',
'retrievedfrom' => 'بازيافته د"$1"',
'youhavenewmessages' => 'شما داريت $1($2)',
+'youhavenewmessagesfromusers' => '{{جمی:$4|شما }} $1 د {{جمی:$3|کارور هنی|$3 کاروریا}}داریتو($2).',
'youhavenewmessagesmanyusers' => 'شما $1 د خيلی كاروريا داريت ($2).',
-'newmessagesdifflinkplural' => 'آخر {{PLURAL:$1|change|changes}}',
+'newmessageslinkplural' => '{{جمی:$1|یه گل پیغوم تازه|999=پیغوم ئل تازه}}',
+'newmessagesdifflinkplural' => 'آخر {{جمی:$1|آلشت|آلشتیا}}',
'youhavenewmessagesmulti' => 'شما یه گل پیغوم تازه د $1 داریتو',
'editsection' => 'ويرايشت',
'editold' => 'ويرايشت',
'collapsible-expand' => 'وا كردن',
'thisisdeleted' => 'دیئن یا ورگنين $1?',
'viewdeleted' => 'دیئن$1?',
+'restorelink' => '{{جمی:$1|یه گل ویرایشت پاک بیه|$1 ویرایشتیا پاک بیه}}',
'feedlinks' => 'غذا دهنه:',
'feed-invalid' => 'نوع مشترک بین خورحو نامعتور',
'site-rss-feed' => 'خورخو RSS سی $1',
'databaseerror-error' => 'خطا: $1',
'laggedslavemode' => 'زنهار:بلگه شايت شومل روزامديا تازه باو نبوئه',
'readonly' => 'جاگه دونسمنيا بسه بيه',
+'enterlockreason' => 'دلیل قلف کردن نه بنیست،یه وختی سی وا کردن قلف د ویر داشتویت.',
'missing-article' => 'پاگا داده نتونه بلگه ای با پیدا بکه بجوره.که نومش $1 و $2 هئ.
معمولند یه سی یه که فرخ ویرگار رئته دش بیه پاک بیه.',
'missingarticle-rev' => '(دوواره ديئن#: $1)',
'missingarticle-diff' => '(فرخ: $1، $2)',
'internalerror' => 'خطا داخلی',
'internalerror_info' => 'خطا داخلی:$1',
+'fileappenderrorread' => 'نبوئه $1 نه اوسه که پیوست بوئه بحونیت.',
+'fileappenderror' => 'نبوئه فایل $1 د $2 پیوست بوئه',
'filecopyerror' => 'نبوئه فایل $1 د $2 کپی بوئه',
'filerenameerror' => 'نبوئه فایل $1 د $2 نوم آلشت بوئه',
'filedeleteerror' => 'نبوئه فایل $1 پاک بوئه',
+'directorycreateerror' => 'نبوئه سردسه $1 راس بوئه.',
'filenotfound' => 'نتونیت فایل $1 پیدا بکید',
+'fileexistserror' => 'نبوئه د فایل "$1" بنیسید:فایل هئیش',
+'unexpected' => 'ارزایشت ناحاسته: "$1"="$2".',
'formerror' => 'خطا:نبوئه فرم وه مو بئيت',
+'badarticleerror' => 'ای انجوم دئنی د ای بلگه انجوم نگره.',
'cannotdelete-title' => 'نبوئه بلگه $1 حذف بو',
'badtitle' => 'موضو گن',
'badtitletext' => 'عنوان بلگه حاسته بیه معتور نی،یا یه گل مئن زونی یا مئن ویکی عنوان غلطه.
یه شایت شومل یکی با یا بیشتر کاراکتریا نبوئه سی ای موضوعیا استفاده بوئن',
'viewsource' => 'سرچشمه نه بوينيت',
'viewsource-title' => 'سرچشمه $1 بوينيت',
+'actionthrottled' => 'عمل جلوگئری بیه',
'mycustomcssprotected' => 'شما حق ناریت ای بلگه سی اس اس نه ویرایشت بکید',
'mycustomjsprotected' => 'شما حق ناریت ای بلگه جاوا اسکریپت نه ویرایشت بکید',
'myprivateinfoprotected' => 'شما حق ناریت دونسمنیا خصوصی نه ویرایشت بکید',
'mypreferencesprotected' => 'شما حق ناریت ویجگی یا هنی تونه ویرایشت بکید',
'ns-specialprotected' => 'بلگیا ویجه نتونن ویرایشت بوئن',
'exception-nologin' => 'نبوئه وارد بوئيد',
+'exception-nologin-text-manual' => 'خواهشمنیدم که $1 تونسه بوئه د ای بلگه دسرسی داشتوه یا کاری انجوم بیئه.',
# Virus scanner
-'virus-scanfailed' => 'زل گشتن شکست حرد',
+'virus-scanfailed' => 'زل بیئن شکست حرد($1)',
'virus-unknownscanner' => 'ويروس كش ناآشگار',
# Login and logout pages
'gotaccount' => 'ایسنی حساو کاروری داریتو؟$1',
'gotaccountlink' => 'اومائن',
'userlogin-resetlink' => 'جزییات وامین اومائن تونه د ویر بردیته',
-'userlogin-resetpassword-link' => 'Ù\87Ù\86Û\8c رÙ\85ز Ù\88ارد بÙ\83Ù\8aد',
+'userlogin-resetpassword-link' => 'پاسÙ\88رد د Ù\88Û\8cرتÙ\88 رئتÙ\87Ø\9f',
'helplogin-url' => 'هومياری:د حالت اومائن د سيستم',
+'userlogin-helplink' => '[[{{مدیاویکی:هومیاری وامئن اومائن-یو آر ال}}|هومیاری وا مئن اومائن]]',
'userlogin-createanother' => 'يه گل حساوهنی راست بكيد',
'createacct-join' => 'دونسمنيا دباره خوتونه د هار وارد بكيد',
'createacct-another-join' => 'دونسمنیا یه گل حساو د هار وارد بکید',
'createacct-submit' => 'حساو خوتونه راس بكيد',
'createacct-another-submit' => 'يه گل حساوهنی راست بكيد',
'createacct-benefit-heading' => '{{نوم مالگه}} وه دس خلکی چی شما راس بیه.',
-'createacct-benefit-body1' => '{{جمی:$1|ویرایشت|ویرایشتا}}',
-'createacct-benefit-body2' => '{{جمی:$1|بلگه|بلگیا}}',
+'createacct-benefit-body1' => '{{جمی:$1|ویرایشت|ویرایشتیا}}',
+'createacct-benefit-body2' => '{{جمی:$1|بلگه|بلگه یا}}',
+'createacct-benefit-body3' => 'تازه{{جمی:$1|هومیار|هومیارا}}',
'badretype' => 'پاسوردی که شما دئیته مطاوقت ناره',
'userexists' => 'کارور نوم که وارد بیه د ایسه استفاده بوئه.
لطف بکید یه گل نوم هنی انتخاو بکید',
'loginerror' => 'خطا اومائن د سيستم',
'createacct-error' => 'خطا راس كردن حساو',
'createaccounterror' => 'نبوئه حساو راس بكيد:$1',
+'nocookiesnew' => 'حساو کاروری راس بی،اما شما وامئن نیامایئته.{{نوم مالگه}} د کوکیا سی اومائن د سیستم کاروریا استفاده می که.کوکیا شما د کار افتائه.لطفن وا کارشو بونیت، اوسه وا نوم کاروری تازه و پسورد هنی بیایت وا مئن.',
+'nocookieslogin' => '{{نوم مالگه}} د کوکیا سی وامئن اومائن کاروریا استفاده می که. کوکیا شما د کار افتائه.
+لطف بکید د کارشو بونیت و دوواره تلاش بکید.',
'noname' => 'شما یه گل نوم کاروری خو ناریت',
'loginsuccesstitle' => 'اومائن د سيستم موفق بی',
'loginsuccess' => 'شما ایسه وارد بیته {{SITENAME}} د دعنوان "$1".\'',
'passwordtooshort' => 'پاسورد با حداقل {{PLURAL:$1|1 character|$1 characters}} با',
'password-name-match' => 'پاسوردتو با د نوم کاروریتو فرخ داشتوه',
'password-login-forbidden' => 'وه کار گرتن ای پاسوردو نوم کاروری ممنو بیه.',
-'mailmypassword' => 'رÙ\85ز Ù\87Ù\86Û\8c Ù\86Ù\87 اÙ\8aÙ\85Ù\8aÙ\84 بÙ\83Ù\8aد',
+'mailmypassword' => 'د Ù\86Û\88 Ù\88ارد Ù\83ردÙ\86 رÙ\85ز',
'passwordremindertitle' => 'پاسورد موقت تازه سی {{SITENAME}}',
'noemail' => 'هیچ نشونی ایمیلی سی کارور $1 ضفط نبیه.',
'noemailcreate' => 'شما باید یه نشونی نومه معتور فراهم بکید',
'mailerror' => 'خطا داره کل موئه:$1',
'emailconfirmlink' => 'نشونی ايملتو نه محكم بكيد',
+'cannotchangeemail' => 'نشونی ایمیل حساو نتونه د ای ویکی آلشت بوئه.',
'emaildisabled' => 'ای مالگه نتونه ایمیل بفرسنه',
'accountcreated' => 'حساو راس بی',
'createaccount-title' => 'حساو راس کرده سی {{SITENAME}}',
# Special:ChangeEmail
'changeemail' => 'ایمیل تو نه آلشت بکید',
'changeemail-header' => 'ایمیل حساوتونه آلشت بکید',
+'changeemail-no-info' => 'شما با بیایت د سیستم تا د ای بلگه دسرسی داشتویت',
'changeemail-oldemail' => 'نشونی ایمیل تازه باو:',
'changeemail-newemail' => 'نشونی ایمیل تازه',
'changeemail-none' => '(هيش كوم)',
'changeemail-submit' => 'آلشت کردن ایمیل',
'changeemail-cancel' => 'رد كردن',
+# Special:ResetTokens
+'resettokens' => 'تازه کردن نشونه یا',
+'resettokens-no-tokens' => 'هیژ نشونه ای سی تازه کردن نئ.',
+'resettokens-legend' => 'تازه کردن نشونه یا',
+'resettokens-tokens' => 'نشونه یا:',
+'resettokens-token-label' => '$1 (ارزشت تازه: $2)',
+'resettokens-done' => 'نشونه یا تازه بیه.',
+'resettokens-resetbutton' => 'نشونه یا انتخاو بیه تازه بوئن',
+
# Edit page toolbar
'bold_sample' => 'متن توپر بيه',
'bold_tip' => 'متن توپر بيه',
'nosuchsectiontitle' => 'نبوئه بشخ پیدا بوئه',
'loginreqtitle' => 'وامین اومائن لازمه',
'loginreqlink' => 'اومائن',
+'loginreqpagetext' => '$1 لطف بکید بلگه یا هنی نه بوینیت',
'accmailtitle' => 'پاسورد کل بی',
'newarticle' => 'تازه',
'newarticletext' => 'شما وادما هوم پیوندی هئیت که وجود ناره.
'last' => 'دمايی',
'page_first' => 'اولی',
'page_last' => 'آخر',
+'histlegend' => "انتخاو فرخدار:جعویا رادیو نه سی دوواره دیئن و وارسی نشو دار بکید و یا ری رئتن کلیک بکید .<br />
+شرح نوشته: '''({{int:cur}})''' = وا آخری دوواره دیئن فرخ داره '''({{ int:last}})'''= وا دواره دیئن انجوم دئنی فرخ داره '''{{int:minoreditletter}}''' =ویرایشت کؤچک.",
'history-fieldset-title' => 'ویرگار مرور ون',
'history-show-deleted' => 'فقط پاك بيه',
'histfirst' => 'قديمي تري',
$2',
# Revision deletion
+'rev-deleted-user' => '(نوم کاروری جا وه جا بیه)',
'rev-delundel' => 'آلشت وضئيت ديئن',
'rev-showdeleted' => 'نشو دائن',
'revdelete-show-file-submit' => 'هری',
'nextn' => 'نيايی {{PLURAL:$1|$1}}',
'prevn-title' => 'پيشتر $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
'nextn-title' => 'نيايی $1 {{PLURAL:$1|نتيجه|نتيجيا}}',
-'shown-title' => 'Ù\86Ø´Ù\88Ù\86 دائÙ\86 $1 {{PLURAL:$1|Ù\86تÙ\8aجÙ\87|Ù\86تÙ\8aجÙ\87}} سÛ\8c Ù\87Ù\85Ù\87 بلگه',
+'shown-title' => 'Ù\86Ø´Ù\88Ù\86 دئÙ\86 $1 {{PLURAL:$1|Ù\86تÙ\8aجÙ\87|Ù\86تÙ\8aجÙ\87}} سÛ\8c Ù\87ر بلگه',
'viewprevnext' => 'ديئن ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''ایچه بلگه ای هئ وه نوم\"[[:\$1]]\" که ها د ای ویکی'''",
'searchmenu-new' => "'''ای بلگه نه راس كو \"[[:\$1]]\" د ای ويكي!'''",
'yourrealname' => 'نوم راستكی:',
'yourlanguage' => 'زون:',
'yournick' => 'امضا تازه:',
+'gender-unknown' => 'مه میهام چی یی نموئم',
+'gender-male' => 'وه(پیا) بلگه یا ویکی نه ویرایشت می که',
+'gender-female' => 'وه(زئنه)بلگه یا ویکی نه ویرایشت می که',
'email' => 'پیومک برقی',
'prefs-help-email' => 'نشونی ایمیل اختیاری هئ.اما سی بازجست پاسورد دش نیاز بوئه.شما باید پاسوردتونه د ویر بوریت',
'prefs-help-email-others' => 'شما می تونید سی پیوند گرتن تو وا نهایین ایمیل مئن یه هوم پیوند د بلگه کاروری یا بلگه چک چنه تو انتخاو بکید.
نشونی ایمیلتو وختی که کاروریا هنی وا تو پیوند می گرن دیار نی.',
+'prefs-help-email-required' => 'نشونی ایمیل لازم هئ.',
+'prefs-info' => 'دونسمنیا اولیه',
+'prefs-i18n' => 'جهون ولاتمنی',
+'prefs-signature' => 'امضا',
'prefs-editor' => 'ويرايشتگر',
'prefs-preview' => 'پیش سیل',
'prefs-diffs' => 'فرخیا',
'saveusergroups' => 'ذخیره کرد گرویا کاروری',
'userrights-groupsmember' => 'اندوم:',
'userrights-reason' => 'دليل:',
+'userrights-changeable-col' => 'گرویایی که شما تونیت ویرایشت بکید',
+'userrights-unchangeable-col' => 'گرویایی که شما نتونیت ویرایشت بکید',
# Groups
'group' => 'گرو',
'group-bureaucrat' => 'بروکراتیا',
'group-all' => '(همه)',
+'group-user-member' => '{{جنس:$1|کارور}}',
+'group-bot-member' => '{{حنس:$1|بوت}}',
+'group-sysop-member' => '{{جنس:$1|مدیر}}',
+'group-bureaucrat-member' => '{{جنس:$1|بروکرات}}',
+
# Rights
'right-read' => 'حنن بلگیا',
'right-edit' => 'ویرایشت بلگیا',
+'right-delete' => 'بلگیا نه پاک کو',
# Special:Log/newusers
'newuserlogpage' => 'راس بیه وا کارور',
'rclistfrom' => 'آلشتیا تازه ایی که وا $1 شرو بیه نشونش بئه',
'rcshowhideminor' => 'ويرايشتيا کؤچک $1',
'rcshowhidebots' => '$1 رواتيا یا بوتيا',
-'rcshowhideliu' => '$1 کارورياداخل بيه',
+'rcshowhideliu' => '$1 کاروريا ثوت نام کرده',
'rcshowhideanons' => '$1 کاروريا ناشناس',
'rcshowhidepatr' => '$1 ویرایشتیا تیه پرس بیه',
'rcshowhidemine' => 'ويرايشتيا مه$1',
# Upload
'upload' => 'بلم گير كردن فايلا',
+'uploadbtn' => 'سوار کردن فایل',
+'uploadnologin' => 'وارد نبیه',
+'uploaderror' => 'خطا د سوار کردن',
'uploadlogpage' => 'سوارکرد',
'filename' => 'نوم فایل',
'filedesc' => 'چكسته',
'booksources-search-legend' => 'پی جوری سی سرچشمه یا کتاو',
'booksources-go' => 'رو',
+# Special:Log
+'log' => 'نیسنن رخ ونیا',
+
# Special:AllPages
'allpages' => 'همه بلگيا',
'alphaindexline' => '$1 د
'sp-contributions-newbies' => 'فقط هومیاری یایی که د حساو تازه بیه نشون بئه',
'sp-contributions-blocklog' => 'قلف',
'sp-contributions-uploads' => 'سواركرديا',
+'sp-contributions-logs' => 'نیسنن رخ ونیا',
'sp-contributions-talk' => 'چك چنه',
'sp-contributions-search' => 'سی هومیاریا پی جور با',
'sp-contributions-username' => 'نوم نشون آی پی يا نوم كاروری:',
'file-info-size' => '$1 × $2 پیکسل, انازه فایل: $3, MIME نوع: $4',
'file-nohires' => 'عسك ون بالاتري دش ني',
'svg-long-desc' => 'اس وی جی فايل.نومنا $1 $2 پيكسل',
-'show-big-image' => 'تموم رخ ون',
+'show-big-image' => 'فایل اصلی',
# Bad image list
'bad_image_list' => 'دونسمنديانه وه ای شلگ وارد بكيت:
'rev-suppressed-no-diff' => "Tu nevari aplūkot šīs izmaiņas, jo viena no versijām ir '''dzēsta'''.",
'rev-delundel' => 'rādīt/slēpt',
'rev-showdeleted' => 'parādīt',
-'revisiondelete' => 'Dzēst / atjaunot versijas',
+'revisiondelete' => 'Dzēst/atjaunot versijas',
'revdelete-nooldid-title' => 'Nederīga mērķa versija',
'revdelete-no-file' => 'Norādītais fails neeksistē.',
'revdelete-show-file-submit' => 'Jā',
+'revdelete-selected' => "'''[[:$1]] {{PLURAL:$2|izvēlētā versija|izvēlētās versijas}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|Izvēlētais reģistra ieraksts|Izvēlētie reģistra ieraksti}}:'''",
+'revdelete-text' => "'''Lapu hronoloģijā un reģistros izdzēstās versijas vēl joprojām būs redzamas, tomēr daļa informācijas nebūs pieejama publiski.''' Citi {{SITENAME}} administratori varēs apskatīt spēlto saturu un varēs to atslēpt, ja vien nav papildu ierobežojumi.",
+'revdelete-confirm' => 'Lūdzu apstiprini, ka Tu zini, ko dari, Tu apzinies sekas, tāpat Tu to dari saskaņā ar vadlīnijām.',
+'revdelete-suppress-text' => "Paslēpšanu izmantot vienīgi šādos gadījumos:
+* potenciāli apmelojoša informācija
+* nepiemērotā personīgā informācija
+*: ''mājas adrese, telefona numuri u.c.''",
'revdelete-legend' => 'Uzstādīt redzamības ierobežojumus',
-'revdelete-hide-text' => 'Paslēpt versijas tekstu',
+'revdelete-hide-text' => 'Versijas teksts',
'revdelete-hide-image' => 'Paslēpt faila saturu',
'revdelete-hide-name' => 'Paslēpt darbību un tās objektu',
-'revdelete-hide-comment' => 'Paslēpt kopsavilkumu',
-'revdelete-hide-user' => 'Paslēpt autora lietotājvārdu/IP adresi',
+'revdelete-hide-comment' => 'Kopsavilkums',
+'revdelete-hide-user' => 'Autora lietotājvārds/IP adrese',
'revdelete-hide-restricted' => 'Paslēpt datus arī no administratoriem',
'revdelete-radio-same' => '(nemainīt)',
'revdelete-radio-set' => 'Jā',
$1",
'revdel-restore' => 'mainīt redzamību',
'pagehist' => 'Lapas vēsture',
-'deletedhist' => 'Vēsture dzēsta',
+'deletedhist' => 'Dzēstā vēsture',
'revdelete-modify-missing' => 'Kļūda, mainot vienumu ar ID $1: tas ir pazudis no datubāzes!',
'revdelete-reason-dropdown' => '*Biežākie dzēšanas iemesli
** autortiesību pārkāpums
** nepiemērota personīgā informācija
+** nepiemērots lietotāja vārds
** potenciāli apmelojoša informācija',
'revdelete-otherreason' => 'Cits/papildu iemesls:',
'revdelete-reasonotherlist' => 'Cits iemesls',
'sp-contributions-newbies' => 'Rādīt jauno lietotāju devumu',
'sp-contributions-newbies-sub' => 'Jaunie lietotāji',
'sp-contributions-blocklog' => 'Bloķēšanas reģistrs',
-'sp-contributions-deleted' => 'Izdzēstais lietotāju devums',
+'sp-contributions-deleted' => 'Izdzēstais lietotāja devums',
'sp-contributions-uploads' => 'augšupielādes',
'sp-contributions-logs' => 'reģistri',
'sp-contributions-talk' => 'diskusija',
'delete-warning-toobig' => 'Оваа страница има долга историја на уредување, преку $1 {{PLURAL:$1|ревизија|ревизии}}.
Бришењето може да предизвика проблеми при работењето на базата на податоци на {{SITENAME}};
продолжете доколку сте сигруни дека треба тоа да го сторите.',
+'deleting-backlinks-warning' => "'''Предупредување:''' До страницата што сакате да ја избришете водат други страници.",
# Rollback
'rollback' => 'Отповикај промени',
'cantcreateaccount-text' => "ഈ ഐ.പി. ('''$1''') വിലാസത്തിൽ നിന്നു അംഗത്വം സൃഷ്ടിക്കുന്നത് [[User:$3|$3]] നിരോധിച്ചിരിക്കുന്നു.
$3 അതിനു കാണിച്ചിരിക്കുന്ന കാരണം ''$2'' ആണ്.",
-'cantcreateaccount-range-text' => "താങ്കളുടെ ഐ.പി. വിലാസം ('''$4''') ഉൾപ്പെടുന്ന '''$1''' എന്ന പരിധിയിലെ ഐ.പി. വിലാസങ്ങളിൽ നിന്ന് അംഗത്വമെടുക്കുന്നത് [[User:$3|$3]] തടഞ്ഞിരിക്കുകയാണ്.",
+'cantcreateaccount-range-text' => "താങ്കളുടെ ഐ.പി. വിലാസം ('''$4''') ഉൾപ്പെടുന്ന '''$1''' എന്ന പരിധിയിലെ ഐ.പി. വിലാസങ്ങളിൽ നിന്ന് അംഗത്വമെടുക്കുന്നത് [[User:$3|$3]] തടഞ്ഞിരിക്കുകയാണ്.
+
+$3 നൽകിയിരിക്കുന്ന കാരണം ''$2'' എന്നാണ്",
# History pages
'viewpagelogs' => 'ഈ താളുമായി ബന്ധപ്പെട്ട രേഖകൾ കാണുക',
'enotif_reset' => 'എല്ലാ താളുകളും സന്ദർശിച്ചതായി രേഖപ്പെടുത്തുക',
'enotif_impersonal_salutation' => '{{SITENAME}} ഉപയോക്താവ്',
'enotif_subject_deleted' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} മായ്ച്ചിരിക്കുന്നു',
-'enotif_subject_created' => '{{SITENAME}} സംരംഭത്തിl $1 എന്ന താൾ {{gender:$2|$2}} സൃഷ്ടിച്ചിരിക്കുന്നു',
+'enotif_subject_created' => '{{SITENAME}} സംരംഭത്തിൽ $1 എന്ന താൾ {{gender:$2|$2}} സൃഷ്ടിച്ചിരിക്കുന്നു',
'enotif_subject_moved' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} മാറ്റിയിരിക്കുന്നു',
'enotif_subject_restored' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താൾ {{gender:$2|$2}} പുനഃസ്ഥാപിച്ചിരിക്കുന്നു',
'enotif_subject_changed' => '{{SITENAME}} സംരംഭത്തിലെ $1 എന്ന താളിൽ {{gender:$2|$2}} മാറ്റം വരുത്തിയിരിക്കുന്നു',
'youhavenewmessages' => 'Anda mempunyai $1 ($2).',
'youhavenewmessagesfromusers' => 'Anda menerima $1 daripada {{PLURAL:$3|seorang|$3 orang}} pengguna lain ($2).',
'youhavenewmessagesmanyusers' => 'Anda menerima $1 daripada ramai pengguna ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|pesanan|pesanan-pesanan}} baru',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|perubahan|perubahan-perubahan}} terkini',
+'newmessageslinkplural' => '{{PLURAL:$1|satu pesanan|999=beberapa pesanan}} baru',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|perubahan|999=beberapa perubahan}} terkini',
'youhavenewmessagesmulti' => 'Anda telah menerima pesanan baru pada $1',
'editsection' => 'sunting',
'editold' => 'sunting',
'invalidtitle-knownnamespace' => 'Tajuk tidak sah dengan ruang nama "$2" dan teks "$3"',
'invalidtitle-unknownnamespace' => 'Tajuk tidak sah dengan nombor ruang nama tidak dikenali $1 dan teks "$2"',
'exception-nologin' => 'Belum log masuk',
-'exception-nologin-text' => 'Halaman atau tindakan ini memerlukan anda untuk log masuk ke dalam wiki ini.',
+'exception-nologin-text' => 'Sila [[Special:Userlogin|log masuk]] untuk dapat mengakses halaman atau tindakan ini.',
+'exception-nologin-text-manual' => 'Sila $1 untuk dapat mengakses halaman atau tindakan ini.',
# Virus scanner
'virus-badscanner' => "Konfigurasi rosak: pengimbas virus yang tidak diketahui: ''$1''",
'gotaccount' => "Sudah mempunyai akaun? '''$1'''.",
'gotaccountlink' => 'Log masuk',
'userlogin-resetlink' => 'Lupa nama pengguna/kata laluan anda?',
-'userlogin-resetpassword-link' => 'Reset kata laluan anda',
+'userlogin-resetpassword-link' => 'Lupa kata laluan anda?',
'helplogin-url' => 'Help:Log masuk',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Bantuan untuk log masuk]]',
+'userlogin-loggedin' => 'Anda sudah log masuk sebagai {{GENDER:$1|$1}}. Gunakan borang di bawah untuk log masuk sebagai pengguna lain.',
+'userlogin-createanother' => 'Buka satu lagi akaun',
'createacct-join' => 'Isikan keterangan anda di bawah.',
'createacct-another-join' => 'Masukkan maklumat akaun baru di bawah.',
'createacct-emailrequired' => 'Alamat e-mel',
Sila log masuk semula setelah anda menerima e-mel tersebut.',
'blocked-mailpassword' => 'Alamat IP anda telah disekat daripada sebarang penyuntingan, oleh itu, untuk
mengelak penyalahgunaan, anda tidak dibenarkan menggunakan ciri pemulihan kata laluan.',
-'eauthentsent' => 'Sebuah e-mel pengesahan telah dikirim kepada alamat e-mel tersebut.
-Sebelum e-emel lain boleh dikirim kepada alamat tersebut, anda perlu mengikuti segala arahan dalam e-mel tersebut
-untuk membuktikan bahawa alamat tersebut memang milik anda.',
+'eauthentsent' => 'Sepucuk e-mel pengesahan telah dikirim kepada alamat e-mel yang dinyatakan.
+Sebelum e-mel lain boleh dikirim kepada alamat tersebut, anda perlu mematuhi arahan-arahan pada e-mel pengesahan tersebut untuk mengesahkan bahawa alamat tersebut benar-benar kepunyaan anda.',
'throttled-mailpassword' => 'E-mel set semula kata laluan telah dihantar dalam tempoh $1 jam yang lalu.
Untuk mencegah salah guna, hanya sepucuk e-mel set semula kata laluan dihantar setiap {{PLURAL:$1|jam|$1 jam}}.',
'mailerror' => 'Ralat ketika mengirim e-mel: $1',
'acct_creation_throttle_hit' => 'Pengunjung wiki ini yang menggunakan alamat IP anda telah membuka sebanyak $1 akaun semenjak sehari lepas, iaitu merupakan had maksimum yang dibenarkan dalam tempoh tersebut.
Akibatknya, pengunjung dari alamat IP ini tidak boleh membuka akaun lagi pada masa sekarang.',
'emailauthenticated' => 'Alamat e-mel anda telah disahkan pada $2, $3.',
-'emailnotauthenticated' => 'Alamat e-mel anda belum disahkan. Oleh itu,
-e-mel bagi ciri-ciri berikut tidak boleh dikirim.',
+'emailnotauthenticated' => 'Alamat e-mel anda belum disahkan. Oleh itu, e-mel tidak boleh dikirim bagi ciri-ciri berikut.',
'noemailprefs' => 'Anda perlu menetapkan alamat e-mel terlebih dahulu untuk menggunakan ciri-ciri ini.',
'emailconfirmlink' => 'Sahkan alamat e-mel anda.',
'invalidemailaddress' => 'Alamat e-mel tersebut tidak boleh diterima kerana ia tidak sah. Sila masukkan alamat e-mel yang betul atau kosongkan sahaja ruangan tersebut.',
# Special:PasswordReset
'passwordreset' => 'Set semula kata laluan',
'passwordreset-text-one' => 'Lengkapkan borang ini untuk mengeset semula kata laluan anda.',
-'passwordreset-text-many' => '{{PLURAL:$1|Isi salah satu ruangan untuk mengeset semula kata laluan anda.}}',
+'passwordreset-text-many' => '{{PLURAL:$1|Isi salah satu ruangan berikut untuk menerima kata laluan sementara melalui e-mel.}}',
'passwordreset-legend' => 'Set semula kata laluan',
'passwordreset-disabled' => 'Ciri set semula kata laluan telah dimatikan di wiki ini.',
'passwordreset-emaildisabled' => 'Ciri-ciri e-mel telah dipadamkan di wiki ini.',
'cantcreateaccounttitle' => 'Akaun tidak dapat dibuka',
'cantcreateaccount-text' => "Pembukaan akaun daripada alamat IP ini (<b>$1</b>) telah disekat oleh [[User:$3|$3]].
+Sebab yang diberikan oleh $3 ialah ''$2''",
+'cantcreateaccount-range-text' => "Pembukaan akaun dari alamat-alamat IP dalam julat '''$1''', termasuk alamat IP anda ('''$4'''), telah disekat oleh [[User:$3|$3]].
+
Sebab yang diberikan oleh $3 ialah ''$2''",
# History pages
'revdelete-text' => "'''Semakan dan peristiwa yang dihapuskan akan tetap muncul dalam sejarah laman dan log, tetapi kandungannya tidak boleh diakses awam.'''
Pentadbir {{SITENAME}} boleh melihat kandungan tersebut dan menyahhapuskannya semula melalui laman ini melainkan mempunyai batasan.",
'revdelete-confirm' => 'Sila sahkan bahawa anda bertujuan melakukan ini, bahawa anda faham akibatnya, dan anda melakukannya menurut [[{{MediaWiki:Policy-url}}| polisi]].',
-'revdelete-suppress-text' => "Pembatasan ini '''hanya''' untuk digunakan dalam kes-kes berikut:
-* Maklumat peribadi tidak sesuai
+'revdelete-suppress-text' => "Sekatan seharusnya digunakan '''hanya''' untuk kes-kes berikut:
+* maklumat yang mungkin berunsur fitnah
+* maklumat peribadi tidak sesuai
*: ''alamat rumah dan nombor telefon, nombor keselamatan sosial, dsbg.''",
'revdelete-legend' => 'Tetapkan batasan:',
-'revdelete-hide-text' => 'Sembunyikan teks semakan',
+'revdelete-hide-text' => 'Teks semakan',
'revdelete-hide-image' => 'Sembunyikan kandungan fail',
'revdelete-hide-name' => 'Sembunyikan tindakan dan sasaran',
-'revdelete-hide-comment' => 'Sembunyikan komen suntingan',
-'revdelete-hide-user' => 'Sembunyikan nama pengguna/IP penyunting',
+'revdelete-hide-comment' => 'Ringkasan suntingan',
+'revdelete-hide-user' => 'Nama pengguna/IP penyunting',
'revdelete-hide-restricted' => 'Sekat data daripada penyelia dan pengguna lain',
'revdelete-radio-same' => '(jangan tukar)',
-'revdelete-radio-set' => 'Ya',
-'revdelete-radio-unset' => 'Tidak',
+'revdelete-radio-set' => 'Tersembunyi',
+'revdelete-radio-unset' => 'Kelihatan',
'revdelete-suppress' => 'Sekat data daripada semua pengguna, termasuk penyelia',
'revdelete-unsuppress' => 'Buang batasan pada semakan yang dipulihkan',
'revdelete-log' => 'Sebab:',
'recentchanges-label-minor' => 'Ini ialah suntingan kecil',
'recentchanges-label-bot' => 'Suntingan ini dilakukan oleh bot',
'recentchanges-label-unpatrolled' => 'Suntingan ini belum dirondai',
-'recentchanges-legend-newpage' => '$1 - laman baru',
+'recentchanges-label-plusminus' => 'Saiz halaman telah berubah sebanyak jumlah bait ini',
+'recentchanges-legend-heading' => "'''Petunjuk:'''",
+'recentchanges-legend-newpage' => '(lihat juga [[Special:NewPages|senarai halaman baru]])',
'rcnotefrom' => 'Yang berikut ialah semua perubahan sejak <b>$2</b> (sehingga <b>$1</b>).',
'rclistfrom' => 'Papar perubahan sejak $1',
'rcshowhideminor' => '$1 suntingan kecil',
'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 pengguna log masuk',
+'rcshowhideliu' => '$1 pengguna berdaftar',
'rcshowhideanons' => '$1 pengguna tanpa nama',
'rcshowhidepatr' => '$1 suntingan dirondai',
'rcshowhidemine' => '$1 suntingan saya',
mel: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Tiada lagi pemberitahuan lanjut sekiranya terdapat suntingan selanjutnya melainkan anda mengunjungi halaman berkenaan. Anda juga boleh menetapkan semula tanda-tanda pemberitahuan untuk kesemua halaman dalam senarai pantau anda.
+Tiada lagi pemberitahuan lanjut sekiranya terdapat kegiatan selanjutnya melainkan anda mengunjungi halaman berkenaan apabila log masuk. Anda juga boleh menetapkan semula tanda-tanda pemberitahuan untuk kesemua halaman dalam senarai pantau anda.
- Sistem pemberitahuan {{SITENAME}} yang mesra
+Sistem pemberitahuan {{SITENAME}} yang mesra
--
Untuk mengubah tetapan pemberitahuan melalui e-mel anda, kunjungi
'deleteotherreason' => 'Sebab lain/tambahan:',
'deletereasonotherlist' => 'Sebab lain',
'deletereason-dropdown' => '* Sebab-sebab lazim
-** Permintaan pengarang
+** Spam
+** Vandalisme
** Melanggar hak cipta
-** Vandalisme',
+** Permintaan pengarang
+** Lencongan terputus',
'delete-edit-reasonlist' => 'Ubah sebab-sebab hapus',
'delete-toobig' => 'Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Oleh itu, laman ini dilindungi daripada dihapuskan untuk mengelak kerosakan di {{SITENAME}} yang tidak disengajakan.',
'delete-warning-toobig' => 'Laman ini mempunyai sejarah yang besar, iaitu melebihi $1 jumlah semakan. Menghapuskannya boleh mengganggu perjalanan pangkalan data {{SITENAME}}. Sila berhati-hati.',
+'deleting-backlinks-warning' => "'''Amaran:''' Terdapat halaman-halaman lain yang berpaut pada halaman yang hendak anda hapus itu.",
# Rollback
'rollback' => 'Undurkan suntingan.',
'spam_reverting' => 'Membalikkan kepada versi terakhir yang tidak mengandungi pautan ke $1',
'spam_blanking' => 'Mengosongkan semua semakan yang mengandungi pautan ke $1',
'spam_deleting' => 'Menghapuskan semua semakan yang mengandungi pautan ke $1',
-'simpleantispam-label' => "Pemeriksaan anti-spam. '''JANGAN''' isi ruangan ini!",
+'simpleantispam-label' => "Pemeriksaan anti-spam.
+'''JANGAN''' isi ruangan ini!",
# Info page
'pageinfo-title' => 'Maklumat untuk "$1"',
'pageinfo-length' => 'Kepanjangan halaman (bait)',
'pageinfo-article-id' => 'ID halaman',
'pageinfo-language' => 'Bahasa isi kandungan halaman',
+'pageinfo-content-model' => 'Model kandungan halaman',
'pageinfo-robot-policy' => 'Indeks oleh robot',
'pageinfo-robot-index' => 'Dibenarkan',
'pageinfo-robot-noindex' => 'Tidak dibenarkan',
# Language selector for translatable SVGs
'img-lang-default' => '(bahasa azali)',
+'img-lang-info' => 'Paparkan gambar ini dalam $1. $2',
+'img-lang-go' => 'Jalan',
# Table pager
'ascending_abbrev' => 'menaik',
'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath Laluan skrip]',
# Special:Redirect
-'redirect' => 'Lencongkan mengikut fail, ID pengguna atau ID semakan',
+'redirect' => 'Lencongkan mengikut ID fail, pengguna, halaman atau semakan',
'redirect-legend' => 'Lencongkan ke fail atau halaman',
-'redirect-summary' => 'Halaman khas ini melencong kepada fail (dengan nama fail), halaman (dengan ID semakan) atau halaman pengguna (dengan ID pengguna berangka).',
+'redirect-summary' => 'Halaman khas ini melencong kepada fail (dengan nama fail), halaman (dengan ID semakan atau ID halaman) atau halaman pengguna (dengan ID pengguna berangka). Penggunaan: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], atau [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Pergi',
'redirect-lookup' => 'Cari:',
'redirect-value' => 'Nilai:',
'redirect-user' => 'ID Pengguna',
+'redirect-page' => 'ID halaman',
'redirect-revision' => 'Semakan halaman',
'redirect-file' => 'Nama fail',
'redirect-not-exists' => 'Nilai tidak dijumpai',
# Special:SpecialPages
'specialpages' => 'Laman khas',
+'specialpages-note-top' => 'Petunjuk',
'specialpages-note' => '* Laman khas biasa.
-* <span class="mw-specialpagerestricted">Laman khas terhad.</span>
-* <span class="mw-specialpagecached">Laman khas tercache (mungkin lapuk).</span>',
+* <span class="mw-specialpagerestricted">Laman khas terhad.</span>',
'specialpages-group-maintenance' => 'Laporan penyenggaraan',
'specialpages-group-other' => 'Laman khas lain',
'specialpages-group-login' => 'Log masuk / buka akaun',
'tags-tag' => 'Nama label',
'tags-display-header' => 'Rupa dalam senarai perubahan',
'tags-description-header' => 'Keterangan makna',
+'tags-active-header' => 'Aktif?',
'tags-hitcount-header' => 'Perubahan',
+'tags-active-yes' => 'Ya',
+'tags-active-no' => 'Tidak',
'tags-edit' => 'sunting',
'tags-hitcount' => '$1 perubahan',
'expand_templates_input' => 'Teks input:',
'expand_templates_output' => 'Hasil',
'expand_templates_xml_output' => 'Output XML',
+'expand_templates_html_output' => 'Output HTML mentah',
'expand_templates_ok' => 'OK',
'expand_templates_remove_comments' => 'Buang ulasan',
'expand_templates_remove_nowiki' => 'Sekat tag <nowiki> dalam hasil',
'expand_templates_generate_xml' => 'Papar pepohon hurai XML',
+'expand_templates_generate_rawhtml' => 'Paparkan HTML mentah',
'expand_templates_preview' => 'Pralihat',
);
'rev-delundel' => 'faje vedé/annascunne',
'rev-showdeleted' => 'faje vedé',
'revdelete-show-file-submit' => 'Sì',
-'revdelete-radio-set' => 'Sì',
-'revdelete-radio-unset' => 'No',
+'revdelete-radio-set' => 'Nasconde',
+'revdelete-radio-unset' => 'Faje vedé',
'revdel-restore' => 'càgna visiblità',
# Diffs
'cantcreateaccount-text' => "Registreren vanaf dit IP-adres ('''$1''') is geblokkeerd door [[User:$3|$3]].
De door $3 opgegeven reden is ''$2''",
+'cantcreateaccount-range-text' => 'Het aanmaken van gebruikers vanaf IP-adressen in de reeks <strong>$1</strong> is niet mogelijk doordat dit is ingesteld door [[User:$3|$3]]. Uw IP-adres $4 bevindt zich in deze reeks.
+
+De reden voor de blokkade is <em>$2</em>',
# History pages
'viewpagelogs' => 'Logboek voor deze pagina bekijken',
'pageinfo-firstuser' => 'Gebruiker die de pagina heeft aangemaakt',
'pageinfo-firsttime' => 'Datum waarop de pagina is aangemaakt',
'pageinfo-lastuser' => 'Laatste bewerker',
-'pageinfo-lasttime' => 'Datum van laatste bewerking',
-'pageinfo-edits' => 'Totaal aantal bewerkingen',
-'pageinfo-authors' => 'Totaal aantal verschillende auteurs',
-'pageinfo-recent-edits' => 'Recent aantal bewerkingen (binnen de afgelopen $1).',
-'pageinfo-recent-authors' => 'Recent aantal verschillende auteurs',
+'pageinfo-lasttime' => 'Laatste bewerking',
+'pageinfo-edits' => 'Aantal bewerkingen',
+'pageinfo-authors' => 'Auteurs totaal',
+'pageinfo-recent-edits' => 'Recente bewerkingen (binnen de afgelopen $1)',
+'pageinfo-recent-authors' => 'Recente auteurs',
'pageinfo-magic-words' => '{{PLURAL:$1|Magisch woord|Magische woorden}} ($1)',
'pageinfo-hidden-categories' => 'Verborgen {{PLURAL:$1|categorie|categorieën}} ($1)',
'pageinfo-templates' => '{{PLURAL:$1|Gebruikt sjabloon|Gebruikte sjablonen}} ($1)',
'oct' => "d'oct",
'nov' => 'de nov',
'dec' => 'de dec',
-'january-date' => '$1 genièr',
-'february-date' => '$1 febrièr',
-'march-date' => '$1 març',
-'april-date' => '$1 abril',
-'may-date' => '$1 mai',
-'june-date' => '$1 junh',
-'july-date' => '$1 julhet',
-'august-date' => '$1 agost',
-'september-date' => '$1 setembre',
-'october-date' => '$1 octobre',
-'november-date' => '$1 novembre',
-'december-date' => '$1 decembre',
+'january-date' => '$1 de genièr',
+'february-date' => '$1 de febrièr',
+'march-date' => '$1 de març',
+'april-date' => '$1 de abril',
+'may-date' => '$1 de mai',
+'june-date' => '$1 de junh',
+'july-date' => '$1 de julhet',
+'august-date' => "$1 d'agost",
+'september-date' => '$1 de setembre',
+'october-date' => "$1 d'octobre",
+'november-date' => '$1 de novembre',
+'december-date' => '$1 de decembre',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Categoria|Categorias}}',
'cantcreateaccount-text' => "La creacion de compte dempuèi aquesta adreça IP ('''$1''') es estada blocada per [[User:$3|$3]].
La rason balhada per $3 èra ''$2''.",
+'cantcreateaccount-range-text' => "La creacion de compte dempuèi las adressas IP '''$1''', que la vòstra n'es ('''$4''') es estada blocada per [[User:$3|$3]].",
# History pages
'viewpagelogs' => 'Vejatz las operacions per aquesta pagina',
'recentchanges-label-minor' => 'Aqueste cambiament es menor',
'recentchanges-label-bot' => 'Aqueste cambiament es estat efectuat per un bòt.',
'recentchanges-label-unpatrolled' => 'Aqueste cambiament es pas estat verificat encara.',
+'recentchanges-legend-heading' => "'''Legenda:'''",
'recentchanges-legend-newpage' => '$1 - pagina novèla',
'rcnotefrom' => "Vaquí los cambiaments efectuats dempuèi lo '''$2''' ('''$1''' al maximum).",
'rclistfrom' => 'Afichar las modificacions novèlas dempuèi lo $1.',
'cantcreateaccounttitle' => 'Nie można utworzyć konta',
'cantcreateaccount-text' => "Tworzenie konta z tego adresu IP ('''$1''') zostało zablokowane przez [[User:$3|$3]].
+Podany przez $3 powód to ''$2''",
+'cantcreateaccount-range-text' => "Tworzenie konta z adresów IP w zakresie '''$1''', który zawiera i twój adres IP ('''$4'''), zostało zablokowane przez [[User:$3|$3]].
+
Podany przez $3 powód to ''$2''",
# History pages
'delete-warning-toobig' => "Sta pàgina-sì a l'ha na stòria motobin longa, bele pì che $1 {{PLURAL:$1|revision|revision}}.
A scancelela as peul fesse darmagi a j'operassion dla base ëd dat ëd {{SITENAME}};
ch'a daga da ment a lòn ch'a fa.",
+'deleting-backlinks-warning' => "'''Avis:''' D'àutre pàgine a l'han na liura a la pàgina che chiel a veul ëscancelé.",
# Rollback
'rollback' => 'Gavé via le modìfiche',
'badretype' => 'دا پټنوم چې تاسې ليکلی د مخکني پټنوم سره ورته نه دی.',
'userexists' => 'کوم کارن نوم چې تاسې ورکړی هغه بل چا کارولی.
لطفاً يو بل نوم وټاکۍ.',
-'loginerror' => 'د Ù\86Ù\86Ù\88تÙ\86Û\90 ستونزه',
+'loginerror' => 'د Ù\86Ù\86Ù\88تÙ\84Ù\88 ستونزه',
'createacct-error' => 'د گڼون جوړېدنې ستونزه',
'createaccounterror' => 'گڼون مو جوړ نه شو: $1',
'nocookiesnew' => 'ستاسې گڼون جوړ شو، خو تاسې لا غونډال ته نه ياست ورننوتلي.
'creating' => '$1 جوړېدنې کې دی',
'editingsection' => '$1 (برخه) په سمېدنې کې دی',
'editingcomment' => 'د $1 سمون (نوې برخه)',
-'editconflict' => 'په سمادولو کې خنډ: $1',
+'editconflict' => 'په سمولو کې خنډ: $1',
'yourtext' => 'ستاسې متن',
'storedversion' => 'زېرمه شوې مخکتنه',
'yourdiff' => 'توپيرونه',
'contributions' => '{{GENDER:$1|کارن}} ونډې',
'contributions-title' => 'د $1 کارن ونډې',
'mycontris' => 'ونډې',
-'contribsub2' => 'د $1 لپاره ($2)',
+'contribsub2' => 'د {{GENDER:$3|$1}} لپاره ($2)',
'nocontribs' => 'دې شرطونو سره سم بدلونونه و نه موندل شول.',
'uctop' => '(اوسنی)',
'month' => 'له مياشتې د (او پخواني):',
'sp-contributions-newbies' => 'د نوو گڼونونو ونډې ښکاره کول',
'sp-contributions-newbies-sub' => 'د نوو گڼونونو لپاره',
+'sp-contributions-newbies-title' => 'د نويو گڼونونو لپاره د کارن ونډې',
'sp-contributions-blocklog' => 'د بنديز يادښت',
'sp-contributions-deleted' => 'ړنگېدلې کارن ونډې',
'sp-contributions-uploads' => 'پورته کېدنې',
'sp-contributions-logs' => 'يادښتونه',
'sp-contributions-talk' => 'خبرې اترې',
+'sp-contributions-userrights' => 'د کارن رښتو سمبالښت',
'sp-contributions-blocked-notice' => 'دم مهال په دې کارن بنديز لگېدلی.
د بنديز يادښت تازه مالومات په لاندې توگه دي:',
'sp-contributions-search' => 'د ونډو پلټنه',
'import-upload-filename' => 'د دوتنې نوم:',
'import-comment' => 'تبصره:',
'import-revision-count' => '$1 {{PLURAL:$1|بڼه|بڼې}}',
+'importnotext' => 'تش او يا بې متنه مخ',
# Import log
'importlogpage' => 'د واردولو يادښت',
'tooltip-diff' => 'دا هغه بدلونونه چې تاسې په متن کې ترسره کړي، ښکاره کوي. [alt-v]',
'tooltip-compareselectedversions' => 'د همدې مخ د دوو ټاکل شويو بڼو تر مېنځ توپيرونه وگورۍ.',
'tooltip-watch' => 'دا مخ ستاسې کتنلړ کې ورگډوي [alt-w]',
+'tooltip-watchlistedit-normal-submit' => 'سرليکونه غورځول',
+'tooltip-watchlistedit-raw-submit' => 'کتنلړ اوسمهالول',
'tooltip-upload' => 'د پورته کولو پيل',
'tooltip-rollback' => 'په همدې مخ کې "په شابېول" د وروستني ونډوال سمون (سمونونه) په يوه کلېک په څټ ورګرځوي.',
'tooltip-undo' => '"ناکړ" همدا سمون پر شا گرځوي او د سمون کړکۍ د مخکتنې په بڼه پرانيزي.
'pageinfo-contentpage' => 'مېنځپانگيز مخ کې شمېرل شوی',
'pageinfo-contentpage-yes' => 'هو',
'pageinfo-protect-cascading-yes' => 'هو',
+'pageinfo-category-info' => 'د وېشنيزې مالومات',
+'pageinfo-category-pages' => 'د مخونو شمېر',
+'pageinfo-category-subcats' => 'د څېرمه وېشنيزو شمېر',
'pageinfo-category-files' => 'د دوتنو شمېر',
# Skin names
# Media information
'thumbsize' => 'د بټنوک کچه:',
'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|مخ|مخونه}}',
+'file-info' => 'د دوتنې کچه: $1, MIME ډول: $2',
'file-info-size' => '$1 × $2 پېکسل, د دوتنې کچه: $3, MIME بڼه: $4',
'file-nohires' => 'تر دې کچې لوړې بېلن نښې نشته.',
'svg-long-desc' => 'SVG دوتنه، نومېنلي $1 × $2 پېکسل، د دوتنې کچه: $3',
'minutes' => '{{PLURAL:$1|$1 دقيقه|$1 دقيقې}}',
'hours' => '{{PLURAL:$1|$1 ساعت|$1 ساعتونه}}',
'days' => '{{PLURAL:$1|$1 ورځ|$1 ورځې}}',
+'weeks' => '{{PLURAL:$1|$1 اونۍ|$1 اونۍ}}',
'months' => '{{PLURAL:$1|$1 مياشت|$1 مياشتې}}',
'years' => '{{PLURAL:$1|$1 کال|$1 کالونه}}',
'ago' => '$1 دمخه',
'redirect-submit' => 'ورځه',
'redirect-value' => 'ارزښت:',
'redirect-user' => 'کارن پېژند',
+'redirect-page' => 'د مخ پېژند',
'redirect-file' => 'د دوتنې نوم',
'redirect-not-exists' => 'ارزښت و نه موندل شو',
'duration-millennia' => '$1 {{PLURAL:$1|زرمه|زرمې}}',
# Limit report
+'limitreport-cputime' => 'سي پي يو وخت کارېدنه',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|ثانيه|ثانيې}}',
+'limitreport-walltime' => 'اصلي وخت کارېدنه',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|ثانيه|ثانيې}}',
'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|بايټ|بايټونه}}',
# Special:ExpandTemplates
Parameters:
* $1 - (Optional) username, for GENDER support',
'wrongpassword' => 'Used as error message when the provided password is wrong.
+This message is used in html.
{{Identical|Please try again}}',
'wrongpasswordempty' => 'Error message displayed when entering a blank password.
{{Identical|Please try again}}',
** {{msg-mw|Duration-seconds}}
This is a protection against robots trying to find the password by trying lots of them.
-The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].',
+The number of attempts and waiting time are configured via [[mw:Manual:$wgPasswordAttemptThrottle|$wgPasswordAttemptThrottle]].
+This message is used in html.',
'login-abort-generic' => 'The generic unsuccessful login message is used unless otherwise specified by hook writers',
'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true. Parameters:
* $1 - a pipe-separated list built from the names that appear in the message {{msg-mw|Loginlanguagelinks}}.
See also:
* {{msg-mw|Showdiff}}
* {{msg-mw|Accesskey-diff}}
-* {{msg-mw|Tooltip-diff}}',
+* {{msg-mw|Tooltip-diff}}
+{{Identical|Show change}}',
'anoneditwarning' => 'Shown when editing a page anonymously.
See also:
* {{msg-mw|Sf autoedit anoneditwarning}}
'protectedpages' => '{{doc-special|ProtectedPages}}',
'protectedpages-indef' => 'Option in [[Special:ProtectedPages]]',
'protectedpages-cascade' => 'Option in [[Special:ProtectedPages]]',
+'protectedpages-noredirect' => 'Option in [[Special:ProtectedPages]]',
'protectedpagesempty' => 'Used in [[Special:ProtectedPages]], when there are no protected pages with the specified parameters.',
'protectedtitles' => '{{doc-special|ProtectedTitles}}',
'protectedtitlesempty' => 'Used on [[Special:ProtectedTitles]]. This text appears if the list of protected titles is empty. See the [[mw:Project:Protected_titles|help page on MediaWiki]] for more information.',
* $1 - the upper limit of number of revisions
See also:
* {{msg-mw|Delete-toobig}}',
+'deleting-backlinks-warning' => 'A warning shown when a page that is being deleted has links to it.',
# Rollback
'rollback' => '{{Identical|Rollback}}',
'pageinfo-few-watchers' => 'Message displayed when there are fewer than $wgUnwatchedPageThreshold watchers. $1 is the value of $wgUnwatchedPageThreshold.',
'pageinfo-redirects-name' => 'Header of the row in the first table of the info action.
-Followed by the number of redirects to the page.
+Followed by {{msg-mw|Pageinfo-redirects-value}}.
+
Used as link text. The link points to "{{int:Whatlinkshere-title}}" page ([[Special:WhatLinksHere]]).
See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
* $1 - the number of redirects to the page',
'pageinfo-subpages-name' => 'Header of the row in the first table of the info action.
-Followed by the number of subpages of the page.
+Followed by {{msg-mw|Pageinfo-subpages-value}}.
+
Used as link text. The link points to the "{{int:Prefixindex}}" page ([[Special:PrefixIndex]]).
See example: [{{canonicalurl:Main page|action=info}} Main page?action=info]',
'specialpages-group-media' => '{{doc-special-group|like=[[Special:FilePath]], [[Special:MIMESearch]] and [[Special:Upload]]}}',
'specialpages-group-users' => '{{doc-special-group|like=[[Special:ActiveUsers]], [[Special:Contributions]] and [[Special:ListGroupRights]]}}',
'specialpages-group-highuse' => '{{doc-special-group|like=[[Special:MostCategories]], [[Special:MostLinked]] and [[Special:MostRevisions]]}}',
-'specialpages-group-pages' => '{{doc-special-group|like=[[Special:AllPages]], [[Special:PrefixIndex]], [[Special:Categories]],
+'specialpages-group-pages' => '{{doc-special-group|like=[[Special:AllPages]], [[Special:PrefixIndex]], [[Special:Categories]],
[[Special:Disambiguations]], etc}}',
'specialpages-group-pagetools' => '{{doc-special-group|like=[[Special:MovePage]], [[Special:Undelete]], [[Special:WhatLinksHere]], [[Special:Export]] etc}}',
'specialpages-group-wiki' => '{{doc-special-group|like=[[Special:Version]], [[Special:Statistics]], [[Special:LockDB]], etc}}',
'api-error-duplicate-archive' => 'API error message that can be used for client side localisation of API errors. Parameters:
* $1 - a number of files
* $2 - a link to a list of duplicate files',
+'api-error-stasherror' => 'API error message that can be used for client side localisation of API errors.',
'api-error-duplicate-archive-popup-title' => 'API error message that can be used for client side localisation of API errors. Parameters:
* $1 is a number of files.',
'api-error-duplicate-popup-title' => 'This message is a pop-up title shown in case one or more files exactly equal to the one just uploaded are already present.
'delete-warning-toobig' => 'Această pagină are un istoric al modificărilor mult prea mare, cu mai mult de $1 {{PLURAL:$1|versiune|versiuni|de versiuni}}.
Ștergerea sa poate afecta baza de date a sitului {{SITENAME}};
acționați cu precauție.',
+'deleting-backlinks-warning' => "'''Atenție:''' Alte pagini se leagă de pagina pe care doriți să o ștergeți.",
# Rollback
'rollback' => 'Editări de revenire',
'cantcreateaccount-text' => "Создание учётных записей с этого IP-адреса ('''$1''') было заблокировано {{GENDER:$3|участником|участницей|}} [[User:$3|$3]].
$3 {{GENDER:$3|указал|указала}} следующую причину: ''$2''.",
+'cantcreateaccount-range-text' => 'Было запрещено создание учётных записей из диапазона IP-адресов $1, включающего ваш IP-адрес $4. Запрет наложил [[User:$3|$3]].',
# History pages
'viewpagelogs' => 'Показать журналы для этой страницы',
'searchrelated' => 'связанный',
'searchall' => 'все',
'showingresults' => "Ниже показаны до '''$1''' {{PLURAL:$1|результата|результатов}}, начиная с № '''$2'''.",
-'showingresultsnum' => "Ниже {{PLURAL:$3|показан|показаны|показаны}} '''$3''' {{PLURAL:$3|результат|результата|результатов}}, начиная с № '''$2'''.",
+'showingresultsnum' => "Ниже {{PLURAL:$3|показан|показаны}} '''$3''' {{PLURAL:$3|результат|результата|результатов}}, начиная с № '''$2'''.",
'showingresultsheader' => "{{PLURAL:$5|Результат '''$1''' из '''$3'''|Результаты '''$1—$2''' из '''$3'''}} для «'''$4'''»",
'search-nonefound' => 'Соответствий запросу не найдено.',
'powersearch-legend' => 'Расширенный поиск',
'delete-warning-toobig' => 'У этой страницы очень длинная история изменений, более $1 {{PLURAL:$1|версии|версий|версий}}.
Её удаление может привести к нарушению нормальной работы базы данных сайта {{SITENAME}};
действуйте с осторожностью.',
+'deleting-backlinks-warning' => "'''Предупреждение.''' Некоторые другие страницы ссылаются на данную удаляемую страницу.",
# Rollback
'rollback' => 'Откатить изменения',
# Language selector for translatable SVGs
'img-lang-default' => '(язык по умолчанию)',
-'img-lang-info' => 'Преобразовать это изображение на $1 $2.',
-'img-lang-go' => 'Перейти',
+'img-lang-info' => 'Показать это изображение на языке $1 $2',
+'img-lang-go' => 'Применить',
# Table pager
'ascending_abbrev' => 'возр',
'tog-justify' => 'Līgintė pastraipas palē abi poses',
'tog-hideminor' => 'Pakavuotė mažus pataisėmus vielībūju taisīmu sārašė',
'tog-extendwatchlist' => 'Ėšpliestė keravuojamu sāraša, kū ruodītu vėsus tėnkamus pakeitėmus',
-'tog-usenewrc' => 'Pažongē ruodomė vielibė̅jė pakeitėmā (rēk JavaScript)',
+'tog-usenewrc' => 'Grupoutė keitėmus vielībūsiūs pakeitėmūs ė keravuojamu poslapiu sārašė',
'tog-numberheadings' => 'Autuomatėškā numeroutė skėrsnelios',
'tog-showtoolbar' => 'Ruodītė redagavėma rakondinė (JavaScript)',
'tog-editondblclick' => 'Poslapiu redagavėms dvėgobu paspaudėmu (JavaScript)',
'history-fieldset-title' => 'Naršītė istuorėjuo',
'history-show-deleted' => 'Tėktās ėštrintė',
'histfirst' => 'Seniausė',
-'histlast' => 'VielibÄ\97Ì\85jė',
+'histlast' => 'VielibÄ\97Ì\84jė',
'historysize' => '($1 {{PLURAL:$1|baits|baitā|baitu}})',
'historyempty' => '(nieka nier)',
'powersearch-legend' => 'Prapliesta paėiška',
'powersearch-ns' => 'Ėiškoutė vardū srėtīsė:',
'powersearch-redir' => 'Itrauktė paradresavėmus',
+'powersearch-togglelabel' => 'Pažīmietė:',
+'powersearch-toggleall' => 'Vėskon',
+'powersearch-togglenone' => 'Nieka',
'search-external' => 'Ėšuorėnė paėiška',
# Preferences page
'prefs-skin' => 'Ėšruoda',
'skin-preview' => 'Parveiza',
'datedefault' => 'Juokė pasėrėnkėma',
+'prefs-beta' => 'Beta fonkcėjės',
'prefs-datetime' => 'Data ė čiesos',
'prefs-personal' => 'Nauduotuojė pruopilis',
'prefs-rc' => 'Vielībė̅jė pakeitėmā',
'prefs-watchlist-edits-max' => '(dėdliausias skaitlius: 1000)',
'prefs-misc' => 'Ivairė nustatīmā',
'prefs-resetpass' => 'Keistė slaptažuodi',
+'prefs-rendering' => 'Ėšruoda',
'saveprefs' => 'Ėšsauguotė',
'restoreprefs' => 'Atstatītė vėsus numatītūsius nustatīmus',
'prefs-editing' => 'Redagavėms',
'username' => 'Nauduotuojė vards:',
'uid' => 'Nauduotuojė ID:',
'prefs-memberingroups' => '{{PLURAL:$1|Gropės|Gropiu}} narīs:',
+'prefs-registration' => 'Ožsėregėstravėma čiesos:',
'yourrealname' => 'Tėkros vards:',
'yourlanguage' => 'Aplėnkuos kalba:',
'yourvariant' => 'Variants',
'email' => 'El. pašts',
'prefs-help-realname' => 'Tėkrs vards nier privaluoms, vuo jēgo Tamsta ana ivesėt, ons bus nauduojams Tamstas darba pažīmiejėmō.',
'prefs-help-email' => 'El. pašta adresos nier privaloms, ale uns leid Tamstā gautė nauja slaptažuodi, jēgo pamėršuot kuoks uns bova, ė tēpuogi Tamsta galėt leistė kėtėims pasėiktė Tamsta par Tamstas nauduotuojė a nauduotuojė aptarėma poslapi neatsklėidont Tamstas tapatoma.',
+'prefs-info' => 'Glavnuojė infuormacėjė',
+'prefs-i18n' => 'Kalbuos nustatīmā',
+'prefs-dateformat' => 'Datuos skvarma',
+'prefs-timeoffset' => 'Čiesa skėrtoms',
+'prefs-advancedrc' => 'Papėlduomė nustatīmā',
+'prefs-diffs' => 'Skėrtomā',
# User rights
'userrights' => 'Nauduotuoju teisiu valdīms',
'nchanges' => '$1 {{PLURAL:$1|pakeitėms|pakeitėmā|pakeitėmu}}',
'recentchanges' => 'Vielībė̅jė pakeitėmā',
'recentchanges-legend' => 'Vielībuju pakeitėmu pasėrinkėmā',
-'recentchanges-summary' => 'Tamė poslapī īr patīs vielībė̅ jė paketėmā tom pruojėktė.',
+'recentchanges-summary' => 'Keravuokėt patius vielībiausius wiki pakeitėmus tamė poslapī.',
'recentchanges-feed-description' => 'Keravuokėt patius vielībiausius pakeitėmus pruojektō tamė šaltėnī.',
'recentchanges-label-newpage' => 'Šėto keitėmo sukurts naus poslapis',
'recentchanges-label-minor' => 'Tas īr mažos pataisīms',
'statistics-header-edits' => 'Redagavėmu statėstėka',
'statistics-header-views' => 'Parveizu statistėka',
'statistics-header-users' => 'Nauduotuoju statėstėka',
+'statistics-header-hooks' => 'Kėta statėstėka',
'statistics-articles' => 'Torėnė poslapē',
'statistics-pages' => 'Poslapē',
+'statistics-pages-desc' => 'Vėsė poslapē, terp anū: aptarėma, nukrėipėmu ė kėtė.',
'statistics-files' => 'Ikeltė failā',
'statistics-edits' => 'Poslapiu redagavėmu skaitlius nū {{SITENAME}} sokūrėma',
'statistics-edits-average' => 'Vėdotėnis keitėmu skaitlius poslapiō',
'statistics-users' => 'Ožsėregėstravosiu [[Special:ListUsers|nauduotuoju]]',
'statistics-users-active' => 'Aktīviu nauduotuoju',
+'statistics-users-active-desc' => 'Nauduotuojē, katrėi par {{PLURAL:$1|paskiausė dėina|paskiausė 2 dėinė|paskiausės $1 dėinas|paskiausiu $1 dėinū}} padėrba keitėmu',
'statistics-mostpopular' => 'Daugiausē ruodītė poslapē',
'doubleredirects' => 'Dvėgobė paradresavėmā',
Īr galėmībė somažintė rezoltatu skaitliu patėkslėnont vēksma tėpa, nauduotuojė a sosėjosė poslapė.',
'logempty' => 'Istuorėjuo nier anėjuokiū atitinkontiu atsėtėkimu.',
'log-title-wildcard' => 'Ėiškuotė pavadinėmu, katrė prasėded šėtuo teksto',
+'showhideselectedlogentries' => 'Ruodītė/kavuotė sāraša ponktus, katrūs pasėrėnkot',
# Special:AllPages
'allpages' => 'Vėsė straipsnē',
'allpagesprefix' => 'Ruodītė poslapios so prīdelēs:',
'allpagesbadtitle' => 'Douts poslapė pavadėnėms īr neteisings a tor terpkalbėnė a terppruojektėnė prīdielė. Anamė īr vėns a kelė žėnklā, katrū negal nauduotė pavadėnėmūs.',
'allpages-bad-ns' => '{{SITENAME}} netor „$1“ vardū srėtėis.',
+'allpages-hide-redirects' => 'Kavuotė nukrėipėmus',
# Special:Categories
'categories' => 'Kateguorėjės',
# Special:ListGroupRights
'listgrouprights' => 'Nauduotuoju gropiu teisės',
'listgrouprights-group' => 'Gropė',
-'listgrouprights-members' => '(nariū sārošos)',
+'listgrouprights-members' => '(nariū sārašos)',
# Email user
'mailnologin' => 'Nier adresa',
'rollback' => 'Atmestė pakeitėmos',
'rollback_short' => 'Atmestė',
'rollbacklink' => 'atmestė',
+'rollbacklinkcount' => 'atmestė $1 {{PLURAL:$1|keitėms|keitėmo|keitėmus|keitėmu}}',
'rollbackfailed' => 'Atmetims napavīka',
'cantrollback' => 'Negalėma atmestė redagavėma; paskotinis keitės nauduotuos īr tuo poslapė autorius.',
'alreadyrolled' => 'Nepavīka atmestė paskotėnė [[User:$2|$2]] ([[User talk:$2|Aptarėms]]) darīta straipsnė [[$1]] keitėma;
# Namespace form on various pages
'namespace' => 'Vardū srėtis:',
'invert' => 'Žīmietė prīšėngā',
+'namespace_association' => 'Sosėrėšos vardū srėtės',
'blanknamespace' => '(Pagrėndinė)',
# Contributions
* @author Pasanbhathiya2
* @author Romaine
* @author Singhalawap
+ * @author Thushara
* @author චතුනි අලහප්පෙරුම
* @author තඹරු විජේසේකර
* @author දසනැබළයෝ
'delete-warning-toobig' => 'මෙම පිටුවට, {{PLURAL:$1|එක් සංශෝධනයකට|සංශෝධන $1 කට}} වඩා වැඩි විශාල සංස්කරණ ඉතිහාසයක් ඇත.
මෙය මකාදැමීම {{SITENAME}} හි දත්ත-ගබඩා ක්රියාකාරකම් වලට අවහිරතා පැන නැංවීමට හේතු විය හැක;
පරිස්සමින් ඉදිරි කටයුතු කරන්න.',
+'deleting-backlinks-warning' => "'''ප්රවේශමෙන්:''' ඔබ සූදානම් වන්නේ ඔබ පරිශීලනය කරන පිටුවට සම්බන්ධ වූ අනෙක් පිටු මකා දැමීමටයි.",
# Rollback
'rollback' => 'සංස්කරණයන් පුනරාවර්තනය කරන්න',
'recentchanges-label-bot' => 'Túto úpravu vykonal bot',
'recentchanges-label-unpatrolled' => 'Táto úprava zatiaľ nebola strážená',
'recentchanges-label-plusminus' => 'Veľkosť stránky sa zmenila o toľkoto bajtov',
+'recentchanges-legend-heading' => "'''Legenda:'''",
'recentchanges-legend-newpage' => '(pozri tiež [[Special:NewPages|zoznam nových stránok]])',
'rcnotefrom' => "Nižšie sú zobrazené úpravy od '''$2''' (do '''$1''').",
'rclistfrom' => 'Zobraziť nové úpravy počnúc od $1',
# Special:SpecialPages
'specialpages' => 'Špeciálne stránky',
+'specialpages-note-top' => 'Legenda',
'specialpages-note' => '* Bežné špeciálne stránky.
* <strong class="mw-specialpagerestricted">Špeciálne stránky s obmedzeným prístupom.</strong>
* <span class="mw-specialpagecached">Špeciálne stránky vo vyrovnávacej pamäti (môže byť neaktuálne).</span>',
'youhavenewmessages' => 'Имате $1 ($2).',
'youhavenewmessagesfromusers' => 'Имате $1 од {{PLURAL:$3|другог корисника|$3 корисника|$3 корисника}} ($2).',
'youhavenewmessagesmanyusers' => 'Имате $1 од много корисника ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|нову поруку|нове поруке}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|последњу измену|последње измене}}',
+'newmessageslinkplural' => '{{PLURAL:$1|нову поруку|999=нове поруке}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|последњу измену|999=последње измене}}',
'youhavenewmessagesmulti' => 'Имате нових порука на $1',
'editsection' => 'уреди',
'editold' => 'уреди',
'passwordtooshort' => 'Лозинка мора имати најмање {{PLURAL:$1|један знак|$1 знака|$1 знакова}}.',
'password-name-match' => 'Лозинка се мора разликовати од корисничког имена.',
'password-login-forbidden' => 'Коришћење овог корисничког имена и лозинке је забрањено.',
-'mailmypassword' => 'Ð\9fоÑ\88аÑ\99и новÑ\83 лозинку',
+'mailmypassword' => 'РеÑ\81еÑ\82Ñ\83Ñ\98 лозинку',
'passwordremindertitle' => '{{SITENAME}} – подсетник за лозинку',
'passwordremindertext' => 'Неко, вероватно ви, са ИП адресе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).
Створена је привремена лозинка за {{GENDER:$2|корисника|корисницу|корисника}} $2 која гласи $3.
'group-sysop' => 'Администратори',
'group-bureaucrat' => 'Бирократе',
'group-suppress' => 'Ревизори',
-'group-all' => '(Ñ\81ве)',
+'group-all' => '(Ñ\81ви)',
'group-user-member' => '{{GENDER:$1|корисник|корисница|корисник}}',
'group-autoconfirmed-member' => '{{GENDER:$1|аутоматски потврђен корисник|аутоматски потврђена корисница|аутоматски потврђен корисник}}',
'nopagetitle' => 'Не постоји таква страница',
'nopagetext' => 'Тражена страница не постоји.',
'pager-newer-n' => '{{PLURAL:$1|новији 1|новија $1|новијих $1}}',
-'pager-older-n' => '{{PLURAL:$1|Ñ\81Ñ\82аÑ\80иÑ\98и 1|Ñ\81Ñ\82аÑ\80иÑ\98а $1|Ñ\81Ñ\82аÑ\80иÑ\98иÑ\85 $1}}',
+'pager-older-n' => '{{PLURAL:$1|старији 1|старијих $1}}',
'suppress' => 'Надзор',
'querypage-disabled' => 'Ова посебна страница је онемогућена ради побољшања перформанси.',
'tooltip-invert' => 'Означите ову кућицу да бисте сакрили измене на страницама у одабраном именском простору (и повезаним именским просторима, ако је означено)',
'namespace_association' => 'Повезани именски простор',
'tooltip-namespace_association' => 'Означите ову кућицу да бисте укључили и разговор или именски простор теме која је повезана с одабраним именским простором',
-'blanknamespace' => '(Ð\93лавно)',
+'blanknamespace' => '(главни)',
# Contributions
'contributions' => '{{GENDER:$1|Кориснички}} доприноси',
'redirect-legend' => 'Преусмери на датотеку или страницу',
'redirect-submit' => 'Иди',
'redirect-value' => 'Вредност:',
+'redirect-page' => 'ID странице',
'redirect-file' => 'Назив датотеке',
'redirect-not-exists' => 'Вредност није пронађена',
'youhavenewmessages' => 'Imate $1 ($2).',
'youhavenewmessagesfromusers' => 'Imate $1 od {{PLURAL:$3|drugog korisnika|$3 korisnika|$3 korisnika}} ($2).',
'youhavenewmessagesmanyusers' => 'Imate $1 od mnogo korisnika ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|nove poruke}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|poslednju izmenu|poslednje izmene}}',
+'newmessageslinkplural' => '{{PLURAL:$1|novu poruku|999=nove poruke}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|poslednju izmenu|999=poslednje izmene}}',
'youhavenewmessagesmulti' => 'Imate novih poruka na $1',
'editsection' => 'uredi',
'editold' => 'uredi',
'passwordtooshort' => 'Lozinka mora imati najmanje {{PLURAL:$1|jedan znak|$1 znaka|$1 znakova}}.',
'password-name-match' => 'Lozinka se mora razlikovati od korisničkog imena.',
'password-login-forbidden' => 'Korišćenje ovog korisničkog imena i lozinke je zabranjeno.',
-'mailmypassword' => 'Pošalji novu lozinku',
+'mailmypassword' => 'Resetuj lozinku',
'passwordremindertitle' => '{{SITENAME}} – podsetnik za lozinku',
'passwordremindertext' => 'Neko, verovatno vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).
Stvorena je privremena lozinka za {{GENDER:$2|korisnika|korisnicu|korisnika}} $2 koja glasi $3.
'group-sysop' => 'Administratori',
'group-bureaucrat' => 'Birokrate',
'group-suppress' => 'Revizori',
-'group-all' => '(sve)',
+'group-all' => '(svi)',
'group-user-member' => '{{GENDER:$1|korisnik|korisnica|korisnik}}',
'group-autoconfirmed-member' => '{{GENDER:$1|automatski potvrđen korisnik|automatski potvrđena korisnica|automatski potvrđen korisnik}}',
'nopagetitle' => 'Ne postoji takva stranica',
'nopagetext' => 'Tražena stranica ne postoji.',
'pager-newer-n' => '{{PLURAL:$1|noviji 1|novija $1|novijih $1}}',
-'pager-older-n' => '{{PLURAL:$1|stariji 1|starija $1|starijih $1}}',
+'pager-older-n' => '{{PLURAL:$1|stariji 1|starijih $1}}',
'suppress' => 'Nadzor',
'querypage-disabled' => 'Ova posebna stranica je onemogućena radi poboljšanja performansi.',
'tooltip-invert' => 'Označite ovu kućicu da biste sakrili izmene na stranicama u odabranom imenskom prostoru (i povezanim imenskim prostorima, ako je označeno)',
'namespace_association' => 'Povezani imenski prostor',
'tooltip-namespace_association' => 'Označite ovu kućicu da biste uključili i razgovor ili imenski prostor teme koja je povezana s odabranim imenskim prostorom',
-'blanknamespace' => '(Glavno)',
+'blanknamespace' => '(glavni)',
# Contributions
'contributions' => '{{GENDER:$1|Korisnički}} doprinosi',
Om inte så är fallet, kan du ha hittat en bugg i mjukvaran.
Rapportera gärna problemet till någon [[Special:ListUsers/sysop|administratör]], ange då URL:en (webbadressen).',
-'missingarticle-rev' => '(version#: $1)',
+'missingarticle-rev' => '(versionsnummer: $1)',
'missingarticle-diff' => '(Skillnad: $1, $2)',
'readonly_lag' => 'Databasen har automatiskt skrivskyddats medan slavdatabasservrarna synkroniseras med huvudservern.',
'internalerror' => 'Internt fel',
# Parser/template warnings
'expensive-parserfunction-warning' => 'Varning: Denna sida innehåller för många anrop av resurskrävande parserfunktioner.
-Antalet anrop får vara högst $2, nu görs {{PLURAL:$1|$1 anrop|$1 anrop}}',
+Antalet anrop får vara högst $2, nu görs {{PLURAL:$1|$1 anrop}}',
'expensive-parserfunction-category' => 'Sidor med för många resurskrävande parserfunktioner',
'post-expand-template-inclusion-warning' => 'Varning: Den här sidan innehåller för mycket mallinklusioner.
Några av mallarna kommer inte att inkluderas.',
'revdelete-no-change' => "'''Varning:''' objektet daterat $2, $1 hade redan de begärda synlighetsinställningarna.",
'revdelete-concurrent-change' => 'Fel vid förändring av objektet daterat $2, $1: dess status verkar ha ändrats av någon annan medan du försökte förändra det.
Vänligen kontrollera loggarna.',
-'revdelete-only-restricted' => 'Fel vid döljning av objekt daterat $2, $1: du kan inte undanhålla objekt från att visas för administratörer utan att också välja en av de övriga visningsalternativen.',
+'revdelete-only-restricted' => 'Fel vid döljandet av objektet daterat $2, $1: du kan inte undanhålla objekt från att visas för administratörer utan att också välja ett av de övriga visningsalternativen.',
'revdelete-reason-dropdown' => '*Vanliga orsaker till radering
-** Brott mot copyright
+** Upphovsrättsbrott
** Opassande kommentar eller personupplysningar
** Opassande användarnamn
** Möjligt ärekränkande uppgifter',
'revdelete-otherreason' => 'Annan/ytterligare anledning:',
'revdelete-reasonotherlist' => 'Annan anledning',
-'revdelete-edit-reasonlist' => 'Redigera anledningar för radering',
+'revdelete-edit-reasonlist' => 'Redigera anledningar för raderingar',
'revdelete-offender' => 'Versionens författare:',
# Suppression log
'mergehistory-into' => 'Målsida:',
'mergehistory-list' => 'Sidhistorik som kan sammanfogas',
'mergehistory-merge' => 'Följande versioner av [[:$1]] kan infogas i [[:$2]]. Med hjälp av alternativknapparna för varje version kan du välja att endast infoga versioner fram till en viss tidpunkt. Notera att om du använder navigationslänkarna så avmarkeras alla alternativknappar.',
-'mergehistory-go' => 'Visa versioner som kan infogas',
-'mergehistory-submit' => 'Sammanfoga',
+'mergehistory-go' => 'Visa redigeringar som kan slås samman',
+'mergehistory-submit' => 'Sammanfoga sidversioner',
'mergehistory-empty' => 'Inga versioner av sidorna kan sammanfogas.',
'mergehistory-success' => '$3 {{PLURAL:$3|version|versioner}} av [[:$1]] har infogats i [[:$2]].',
'mergehistory-fail' => 'Historikerna kunde inte sammanfogas, kontrollera de sidor och den sidversion som du valt.',
'searchresults-title' => 'Sökresultat för "$1"',
'toomanymatches' => 'Sökningen gav för många resultat, försök med en annan fråga',
'titlematches' => 'Träffar i sidtitlar',
-'textmatches' => 'Sidor som innehåller sökordet:',
-'notextmatches' => 'Det finns inga sidor som innehåller sökordet',
+'textmatches' => 'Artikeltexter som matchar sökningen',
+'notextmatches' => 'Inga artikeltexter matchar sökningen',
'prevn' => 'föregående {{PLURAL:$1|$1}}',
'nextn' => 'nästa {{PLURAL:$1|$1}}',
'prevn-title' => 'Föregående $1 {{PLURAL:$1|resultat|resultat}}',
'nextn-title' => 'Nästa $1 {{PLURAL:$1|resultat|resultat}}',
'shown-title' => 'Visa $1 {{PLURAL:$1|resultat|resultat}} per sida',
'viewprevnext' => 'Visa ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-exists' => "'''Det finns en sida med namnet \"[[:\$1]]\" på denna wiki.'''",
+'searchmenu-exists' => "'''Det finns en sida med namnet \"[[:\$1]]\" på denna wiki.''' {{PLURAL:\$2|0=|Se även de andra sökresultaten som hittades.}}",
'searchmenu-new' => "'''Skapa sidan \"[[:\$1]]\" på denna wiki!'''",
'searchprofile-articles' => 'Innehållssidor',
'searchprofile-project' => 'Hjälp- och projektsidor',
'stub-threshold' => 'Gräns för <a href="#" class="stub">stubblänk</a>-formatering (byte):',
'stub-threshold-disabled' => 'Avaktiverat',
'recentchangesdays' => 'Antal dygn som skall visas i "senaste ändringarna":',
-'recentchangesdays-max' => '(maximalt $1 {{PLURAL:$1|dygn|dygn}})',
+'recentchangesdays-max' => 'Maximalt $1 {{PLURAL:$1|dygn}}',
'recentchangescount' => 'Antal redigeringar som visas som standard:',
'prefs-help-recentchangescount' => 'Detta inkluderar senaste ändringarna, sidhistorik och loggar.',
'prefs-help-watchlist-token2' => 'Detta är den hemliga nyckeln till webbflödet i din bevakningslista.
'right-deleterevision' => 'Radera och återställa enskilda sidversioner',
'right-deletedhistory' => 'Se raderad historik utan tillhörande sidtext',
'right-deletedtext' => 'Visa raderad text och ändringar mellan raderade versioner',
-'right-browsearchive' => 'Söka efter raderade sidor',
-'right-undelete' => 'Återställa raderade sidor',
+'right-browsearchive' => 'Sök efter raderade sidor',
+'right-undelete' => 'Återställ raderade sidor',
'right-suppressrevision' => 'Se och återställa sidversioner som dolts för administratörer',
'right-suppressionlog' => 'Se privata loggar',
'right-block' => 'Blockera andra användare från att redigera',
'right-editinterface' => 'Redigera användargränssnittet',
'right-editusercssjs' => 'Redigera andra användares CSS- och JS-filer',
'right-editusercss' => 'Redigera andra användares CSS-filer',
-'right-edituserjs' => 'Redigera andra användares JS-filer',
+'right-edituserjs' => 'Redigera andra användares JavaScript-filer',
'right-editmyusercss' => 'Redigera din egen användares CSS-filer',
'right-editmyuserjs' => 'Redigera din egen användares JavaScript-filer',
'right-viewmywatchlist' => 'Visa din egen bevakningslista',
'recentchanges-label-newpage' => 'Denna redigering skapade en ny sida',
'recentchanges-label-minor' => 'Detta är en mindre ändring',
'recentchanges-label-bot' => 'Denna redigering gjordes av en bot',
-'recentchanges-label-unpatrolled' => 'Denna redigering har inte blivit kontrollerad ännu',
+'recentchanges-label-unpatrolled' => 'Denna redigering har inte blivit patrullerad ännu',
'recentchanges-label-plusminus' => 'Sidans storlek ändrades med detta antal byte',
'recentchanges-legend-heading' => "'''Teckenförklaring:'''",
'recentchanges-legend-newpage' => '(se även [[Special:NewPages|listan över nya sidor]])',
'recentchanges-legend-plusminus' => "(''±123'')",
'rcnotefrom' => "Nedan visas ändringar sedan '''$2''' (upp till '''$1''' visas).",
-'rclistfrom' => 'Visa ändringar efter $1',
+'rclistfrom' => 'Visa ändringar från och med $1',
'rcshowhideminor' => '$1 mindre ändringar',
'rcshowhidebots' => '$1 robotar',
'rcshowhideliu' => '$1 registrerade användare',
'rcshowhideanons' => '$1 oinloggade användare',
-'rcshowhidepatr' => '$1 kontrollerade redigeringar',
+'rcshowhidepatr' => '$1 patrullerade redigeringar',
'rcshowhidemine' => '$1 mina ändringar',
'rclinks' => 'Visa senaste $1 ändringar under de senaste $2 dygnen<br />$3',
'diff' => 'skillnad',
'upload-permitted' => 'Tillåtna filtyper: $1.',
'upload-preferred' => 'Föredragna filtyper: $1.',
'upload-prohibited' => 'Förbjudna filtyper: $1.',
-'uploadlog' => 'Uppladdningar',
+'uploadlog' => 'uppladdningslogg',
'uploadlogpage' => 'Uppladdningslogg',
'uploadlogpagetext' => 'Det här är en logg över de senast uppladdade filerna.
Se [[Special:NewFiles|galleriet över nya filer]] för en mer visuell översikt.',
'filename-toolong' => 'Filnamn får inte vara längre än 240 bytes.',
'badfilename' => 'Filens namn har blivit ändrat till "$1".',
'filetype-mime-mismatch' => 'Filtillägget ".$1" matchar inte med den identifierade MIME-typen för filen ($2).',
-'filetype-badmime' => 'Uppladdning av filer med MIME-typen "$1" är inte tillåten.',
+'filetype-badmime' => 'Uppladdning av filer av MIME-typ "$1" är inte tillåtet.',
'filetype-bad-ie-mime' => 'Kan inte ladda upp denna fil på grund av att Internet Explorer skulle upptäcka att den är "$1", vilket är en otillåten och möjligtvis farlig filtyp.',
'filetype-unwanted-type' => "'''\".\$1\"''' är en oönskad filtyp.
{{PLURAL:\$3|Föredragen filtyp|Föredragna filtyper}} är \$2.",
'delete-edit-reasonlist' => 'Redigera anledningar för radering',
'delete-toobig' => 'Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Borttagning av sådana sidor har begränsats för att förhindra oavsiktliga driftstörningar på {{SITENAME}}.',
'delete-warning-toobig' => 'Denna sida har en lång redigeringshistorik med mer än $1 {{PLURAL:$1|sidversion|sidversioner}}. Att radera sidan kan skapa problem med hanteringen av databasen på {{SITENAME}}; var försiktig.',
+'deleting-backlinks-warning' => "'''Varning:''' Andra sidor länkar till sidan som du är på väg att radera.",
# Rollback
'rollback' => 'Rulla tillbaka ändringar',
'limitreport-templateargumentsize' => 'Storlek på mallargument',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|byte}}',
'limitreport-expansiondepth' => 'Största expansionsdjup',
-'limitreport-expensivefunctioncount' => 'Antal dyra parser-funktioner',
+'limitreport-expensivefunctioncount' => 'Antal resurskrävande parserfunktioner',
# Special:ExpandTemplates
'expandtemplates' => 'Expandera mallar',
'revdelete-hide-user' => 'தொகுப்பவரின் ஐ.பி./பயனர்பெயரை மறை',
'revdelete-hide-restricted' => 'குறிப்புக்களை அதிகாரிகள் உட்பட எல்லோரிடமிருந்தும் மறைத்துவிடு (காட்டத்தேவையில்லை).',
'revdelete-radio-same' => '(தயவுசெய்து மாற்ற வேண்டாம்)',
-'revdelete-radio-set' => 'à®\95ாணà®\95à¯\8dà®\95à¯\82à®\9fியது',
-'revdelete-radio-unset' => 'மறà¯\88à®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9fது',
+'revdelete-radio-set' => 'மறà¯\88à®\95à¯\8dà®\95பà¯\8dபà®\9fà¯\8dà®\9fது',
+'revdelete-radio-unset' => 'à®\95ாணà®\95à¯\8dà®\95à¯\82à®\9fியது',
'revdelete-suppress' => 'நிர்வாகிகள் உட்பட இனவரிடமிருந்தாக தரவுகளை அடக்கு',
'revdelete-unsuppress' => 'மீட்கப்பட்ட திருத்தங்கள் மீதான கட்டுப்பாடுகளை நீக்கு',
'revdelete-log' => 'காரணம்:',
'listfiles_size' => 'அளவு',
'listfiles_description' => 'விளக்கம்',
'listfiles_count' => 'பதிப்புக்கள்',
+'listfiles-latestversion' => 'தற்போதய பதிப்பு',
'listfiles-latestversion-yes' => 'ஆம்',
'listfiles-latestversion-no' => 'இல்லை',
'tog-showhiddencats' => 'దాచిన వర్గాలను చూపించు',
'tog-norollbackdiff' => 'రద్దు చేసాక తేడాలు చూపించవద్దు',
'tog-useeditwarning' => 'ఏదైనా పేజీని నేను వదిలివెళ్తున్నప్పుడు దానిలో భద్రపరచని మార్పులు ఉంటే నన్ను హెచ్చరించు',
+'tog-prefershttps' => 'లాగిన్ అయి ఉన్నప్పుడెల్లా భద్ర కనెక్షనునే వాడు',
'underline-always' => 'ఎల్లప్పుడూ',
'underline-never' => 'ఎప్పటికీ వద్దు',
# General errors
'error' => 'లోపం',
'databaseerror' => 'డేటాబేసు లోపం',
+'databaseerror-text' => 'డేటాబేసు క్వెరీ లోపం దొర్లింది.
+సాఫ్టువేరులోని ఉన్న దోషానికి ఇది సూచిక కావచ్చు.',
+'databaseerror-textcl' => 'డేటాబేసు క్వెరీ లోపం దొర్లింది.',
+'databaseerror-query' => 'క్వెరీ: $1',
+'databaseerror-function' => 'ఫంక్షన్: $1',
+'databaseerror-error' => 'లోపం: $1',
'laggedslavemode' => 'హెచ్చరిక: పేజీలో ఇటీవల జరిగిన మార్పులు ఉండకపోవచ్చు.',
'readonly' => 'డేటాబేసు లాక్చెయ్యబడింది',
'enterlockreason' => 'డేటాబేసుకు వేయబోతున్న లాకుకు కారణం తెలుపండి, దానితోపాటే ఎంతసమయం తరువాత ఆ లాకు తీసేస్తారో కూడా తెలుపండి',
'cannotdelete' => '"$1" అనే పేజీ లేదా ఫైలుని తొలగించలేకపోయాం.
దాన్ని ఇప్పటికే ఎవరైనా తొలగించి ఉండవచ్చు.',
'cannotdelete-title' => '"$1" పుటను తొలగించలేరు',
+'delete-hook-aborted' => 'తొలగింపును హుక్ ఆపేసింది.
+వివరణ ఏమీ ఇవ్వలేదు.',
'badtitle' => 'తప్పు శీర్షిక',
'badtitletext' => 'మీరు కోరిన పుట యొక్క పేరు చెల్లనిది, ఖాళీగా ఉంది, లేదా తప్పుగా ఇచ్చిన అంతర్వికీ లేదా అంతర-భాషా శీర్షిక అయివుండాలి.
శీర్షికలలో ఉపయోగించకూడని అక్షరాలు దానిలో ఉండివుండొచ్చు.',
'cascadeprotected' => 'కింది {{PLURAL:$1|పేజీని|పేజీలను}} కాస్కేడింగు ఆప్షనుతో చేసి సంరక్షించారు. ప్రస్తుత పేజీ, ఈ పేజీల్లో ఇంక్లూడు అయి ఉంది కాబట్టి, దిద్దుబాటు చేసే వీలు లేకుండా ఇది కూడా రక్షణలో ఉంది.
$2',
'namespaceprotected' => "'''$1''' నేంస్పేసులో మార్పులు చేయటానికి మీకు అనుమతి లేదు.",
+'customcssprotected' => 'ఈ CSS పేజీని మార్చేందుకు మీకు అనుమతి లేదు. ఎందుకంటే వేరే వాడుకరి యొక్క వ్యక్తిగత సెట్టింగులు అందులో ఉన్నాయి.',
+'customjsprotected' => 'ఈ JavaScript పేజీని మార్చేందుకు మీకు అనుమతి లేదు. ఎందుకంటే వేరే వాడుకరి యొక్క వ్యక్తిగత సెట్టింగులు అందులో ఉన్నాయి.',
'mycustomcssprotected' => 'ఈ CSS పేజీని సవరించేందుకు మీకు అనుమతి లేదు.',
'mycustomjsprotected' => 'ఈ జావాస్క్రిప్టు పేజీని సవరించేందుకు మీకు అనుమతి లేదు.',
'myprivateinfoprotected' => 'మీ అంతరంగిక సమాచారాన్ని సవరించేందుకు మీకు అనుమతి లేదు.',
'ns-specialprotected' => 'ప్రత్యేక పేజీలపై దిద్దుబాట్లు చేయలేరు.',
'titleprotected' => "సభ్యులు [[User:$1|$1]] ఈ పేజీని సృష్టించనివ్వకుండా నిరోదిస్తున్నారు.
అందుకు ఇచ్చిన కారణం: ''$2''.",
+'filereadonlyerror' => 'ఫైలు ఖజానా "$2" రీడ్-ఓన్లీ స్థితిలో ఉండటం చేత "$1" ఫైలులో మార్పులు చెయ్యలేకపోయాం.
+
+దానికి తాళం వేసిన అధికారి ఇచ్చిన వివరణ ఇది: "$3".',
'exception-nologin' => 'లోనికి ప్రవేశించిలేరు',
'exception-nologin-text' => 'ఈ పేజీని చూడడానికి లేదా ఈ చర్యను చెయ్యడానికి దయచేసి [[Special:Userlogin|ప్రవేశించండి]].',
'userlogin-resetpassword-link' => 'మీ సంకేతపదాన్ని మర్చిపోయారా?',
'helplogin-url' => 'Help:ప్రవేశించడం',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|ప్రవేశించడానికి సహాయం]]',
+'userlogin-loggedin' => 'మీరు ఈసరికే {{GENDER:$1|$1}} గా లాగిన్ అయి ఉన్నారు.
+వేరే వాడుకరిగా లాగినయేందుకు కింది ఫారమును వాడండి.',
'userlogin-createanother' => 'మరొక ఖాతాను సృష్టించండి',
'createacct-join' => 'మీ సమాచారాన్ని క్రింద ఇవ్వండి.',
'createacct-another-join' => 'కొత్త ఖాతా యొక్క సమాచారాన్ని క్రింద ఇవ్వండి.',
'createacct-benefit-heading' => '{{SITENAME}}ను తయారుచేసేది మీలాంటి ప్రజలే.',
'createacct-benefit-body1' => '{{PLURAL:$1|మార్పు|మార్పులు}}',
'createacct-benefit-body2' => '{{PLURAL:$1|పేజీ|పేజీలు}}',
+'createacct-benefit-body3' => 'ఇటీవలి {{PLURAL:$1|సమర్పకుడు|సమర్పకులు}}',
'badretype' => 'మీరు ఇచ్చిన రెండు సంకేతపదాలు ఒకదానితో మరొకటి సరిపోలడం లేదు.',
'userexists' => 'ఇచ్చిన వాడుకరిపేరు ఇప్పటికే వాడుకలో ఉంది.
వేరే పేరును ఎంచుకోండి.',
'login-abort-generic' => 'మీ లాగిన్ ప్రయత్నం విఫలమైంది - ఆగిపోయింది',
'loginlanguagelabel' => 'భాష: $1',
'suspicious-userlogout' => 'సరిగా పనిచేయని విహారిణి లేదా కాషింగ్ ప్రాక్సీ వల్ల పంపబడడం చేత, నిష్క్రమించాలనే మీ అభ్యర్థనని నిరాకరించారు.',
+'createacct-another-realname-tip' => 'అసలు పేరు ఐచ్ఛికం.
+మీరు దాన్ని ఇస్తే, వాడుకరి పనుల శ్రేయస్సు ఆ పేరుకు ఆపాదించబడుతుంది.',
# Email sending
'php-mail-error-unknown' => 'PHP యొక్క mail() ఫంక్షన్లో ఏదో తెలియని లోపం దొర్లింది',
'user-mail-no-addy' => 'ఈ-మెయిలు చిరునామాని ఇవ్వకుండానే ఈ-మెయిలు పంపడానికి ప్రయత్నించారు.',
+'user-mail-no-body' => 'ఈమెయిలును ఖాళీగానో, మరీ తక్కువ విషయంతోనో పంపేందుకు ప్రయత్నించారు.',
# Change password dialog
'changepassword' => 'సంకేతపదాన్ని మార్చండి',
'resetpass-wrong-oldpass' => 'తప్పుడు తాత్కాలిక లేదా ప్రస్తుత సంకేతపదం.
మీరు మీ సంకేతపదాన్ని ఇప్పటికే విజయవంతంగా మార్చుకొనివుండవచ్చు లేదా కొత్త తాత్కాలిక సంకేతపదం కోసం అభ్యర్థించారు.',
'resetpass-temp-password' => 'తాత్కాలిక సంకేతపదం:',
+'resetpass-abort-generic' => 'ఓ పొడిగింత (ఎక్స్టెన్షన్) సంకేతపదం మార్పిడిని ఆపేసింది.',
# Special:PasswordReset
'passwordreset' => 'సంకేతపదాన్ని మార్చుకోండి',
+'passwordreset-text-one' => 'ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఈ ఫారమును నింపండి.',
+'passwordreset-text-many' => '{{PLURAL:$1|ఈమెయిలు ద్వారా తాత్కాలిక సంకేతపదాన్ని పొందేందుకు ఏదో ఒక ఫీల్డును నింపండి.Fill in one of the fields to receive a temporary password via email.}}',
'passwordreset-legend' => 'సంకేతపదాన్ని మార్చుకోండి',
'passwordreset-disabled' => 'ఈ వికీలో సంకేతపదాల మార్పును అచేతనం చేసాం.',
+'passwordreset-emaildisabled' => 'ఈ వికీలో ఈమెయిలు విశేషాలను అశక్తం చేసాం.',
'passwordreset-username' => 'వాడుకరి పేరు:',
'passwordreset-domain' => 'డొమైన్:',
+'passwordreset-capture' => 'ఈమెయిలు ఎలా ఉంటుందో చూస్తారా?',
+'passwordreset-capture-help' => 'ఈ పెట్టెను చెక్ చేస్తే, ఈమెయిలును (తాత్కాలిక సంకేతపదంతో) వాడుకరికి పంపిస్తూనే, మీకూ చూపిస్తాం.',
'passwordreset-email' => 'ఈ-మెయిలు చిరునామా:',
'passwordreset-emailtitle' => '{{SITENAME}}లో ఖాతా వివరాలు',
'passwordreset-emailtext-ip' => 'ఎవరో (బహుశా మీరే, ఐపీ అడ్రసు $1 నుంచి) {{SITENAME}} ($4) లో మీ ఖాతా వివరాలను చెప్పమంటూ అడిగారు. కింది వాడుకరి {{PLURAL:$3|ఖాతా|ఖాతాలు}}
'nosuchsectiontext' => 'మీరు లేని విభాగాన్ని మార్చడానికి ప్రయత్నించారు.
మీరు పేజీని చూస్తూన్నప్పుడు దాన్ని ఎవరైనా తరలించి లేదా తొలగించి ఉండవచ్చు.',
'loginreqtitle' => 'ప్రవేశము తప్పనిసరి',
-'loginreqlink' => 'à°ªà±\8dà°°à°µà±\87శిà°\82à°\9aి',
+'loginreqlink' => 'లాà°\97ినవà°\82à°¡ి',
'loginreqpagetext' => 'ఇతర పుటలను చూడడానికి మీరు $1 ఉండాలి.',
'accmailtitle' => 'సంకేతపదం పంపించబడింది.',
'accmailtext' => "[[User talk:$1|$1]] కొరకు ఒక యాదృచ్చిక సంకేతపదాన్ని $2కి పంపించాం.
'cantcreateaccount-text' => "ఈ ఐపీ అడ్రసు ('''$1''') నుండి ఖాతా సృష్టించడాన్ని [[User:$3|$3]] నిరోధించారు.
$3 చెప్పిన కారణం: ''$2''",
+'cantcreateaccount-range-text' => "'''$1''' శ్రేణిలోని IP చిరునామాల నుండి ఖాతా సృష్టించడాన్ని [[User:$3|$3]] నిషేధించారు. మీ IP చిరునామా ('''$4''') ఈ శ్రేణిలోనే ఉంది.
+
+$3 ఇచ్చిన కారణం: ''$2''",
# History pages
'viewpagelogs' => 'ఈ పేజీకి సంబంధించిన లాగ్లను చూడండి',
'rev-deleted-user-contribs' => '[వాడుకరిపేరు లేదా ఐపీ చిరునామాని తొలగించారు - మార్పుచేర్పుల నుండి మార్పుని దాచారు]',
'rev-deleted-text-permission' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో పూర్తి వివరాలు ఉండవచ్చు.",
-'rev-deleted-text-unhide' => "à°\88 à°ªà±\87à°\9cà±\80 à°\95à±\82à°°à±\8dà°ªà±\81ని '''à°¤à±\8aà°²à°\97à°¿à°\82à°\9aారà±\81'''.
-[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°\89à°\82à°¡à°µà°\9aà±\8dà°\9aà±\81.
-మీరు కావాలనుకుంటే, నిర్వాహకులుగా [$1 ఈ కూర్పుని చూడవచ్చు].",
+'rev-deleted-text-unhide' => "à°ªà±\87à°\9cà±\80 à°¯à±\8aà°\95à±\8dà°\95 à°\88 à°\95à±\82à°°à±\8dà°ªà±\81à°¨à±\81 '''à°¤à±\8aà°²à°\97à°¿à°\82à°\9aà°¾à°\82'''.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} à°¤à±\8aà°²à°\97à°¿à°\82à°ªà±\81 à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°\9aà±\82à°¡à°µà°\9aà±\8dà°\9aà±\81.
+మీరు కావాలనుకుంటే, [$1 ఈ కూర్పుని చూడవచ్చు].",
'rev-suppressed-text-unhide' => "ఈ పేజీకూర్పును '''అణచి పెట్టాం'''.
-[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°\89à°\82à°¡à±\8aచ్చు.
-ముందుకు సాగాలనుకుంటే ఒక నిర్వాహకుడిగా మీరీ [$1 కూర్పును చూడవచ్చు].",
+[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} à°\85à°£à°\9aà°¿à°µà±\87à°¤ à°\9aà°¿à°\9fà±\8dà°\9fà°¾]à°²à±\8b వివరాలà±\81 à°\9aà±\82à°¡à°µచ్చు.
+ముందుకు సాగాలనుకుంటే [$1 కూర్పును చూడవచ్చు].",
'rev-deleted-text-view' => "ఈ పేజీ కూర్పుని '''తొలగించారు'''.
ఒక నిర్వాహకుడిగా మీరు దాన్ని చూడవచ్చు; [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు చిట్టా]లో వివరాలు ఉండవచ్చు.",
'rev-suppressed-text-view' => "ఈ పేజీకూర్పును '''అణచి పెట్టాం'''.
'diff-empty' => '(తేడా లేదు)',
'diff-multi' => '({{PLURAL:$2|ఒక వాడుకరి|$2 వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
'diff-multi-manyusers' => '$2 మంది పైన ({{PLURAL:$2|ఒక వాడుకరి|వాడుకరుల}} యొక్క {{PLURAL:$1|ఒక మధ్యంతర కూర్పును|$1 మధ్యంతర కూర్పులను}} చూపించట్లేదు)',
+'difference-missing-revision' => 'ఈ తేడా ($1) యొక్క {{PLURAL:$2|ఒక కూర్పు|$2 కూర్పులు}} of this difference {{PLURAL:$2|కనబడలేదు|కనబడలేదు}}.
+
+సాధారణంగా, తొలగించబడిన పేజీ యొక్క కాలదోషం పట్టిన ’తేడా’ లింకును నొక్కినపుడు ఇది జరుగుతుంది.
+[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} తొలగింపు లాగ్] లో వివరాలు దొరుకుతాయి.',
# Search results
'searchresults' => 'వెదుకులాట ఫలితాలు',
'powersearch-togglenone' => 'ఏదీకాదు',
'search-external' => 'బయటి అన్వేషణ',
'searchdisabled' => '{{SITENAME}} అన్వేషణ తాత్కాలికంగా పని చెయ్యడం లేదు. ఈలోగా మీరు గూగుల్ ఉపయోగించి అన్వేషించవచ్చు. ఒక గమనిక: గూగుల్ ద్వారా కాలదోషం పట్టిన ఫలితాలు రావడానికి అవకాశం ఉంది.',
+'search-error' => '$1 కోసం వెతికేటపుడు లోపమేదో దొర్లింది.',
# Preferences page
'preferences' => 'అభిరుచులు',
'mypreferences' => 'అభిరుచులు',
'prefs-edits' => 'దిద్దుబాట్ల సంఖ్య:',
+'prefsnologintext2' => 'మీ అభిరుచులను మార్చుకునేందుకు $1.',
'prefs-skin' => 'అలంకారం',
'skin-preview' => 'మునుజూపు/సరిచూడు',
'datedefault' => 'ఏదైనా పరవాలేదు',
'recentchangesdays-max' => '($1 {{PLURAL:$1|రోజు|రోజులు}} గరిష్ఠం)',
'recentchangescount' => 'అప్రమేయంగా చూపించాల్సిన దిద్దుబాట్ల సంఖ్య:',
'prefs-help-recentchangescount' => 'ఇది ఇటీవలి మార్పులు, పేజీ చరిత్రలు, మరియు చిట్టాలకు వర్తిస్తుంది.',
+'prefs-help-watchlist-token2' => 'మీ వీక్షణజాబితా యొక్క జాలవడ్డింపుకు చెందిన రహస్య తాళమిది.
+ఈ తాళం తెలిసిన ఎవరైనా మీ వీక్షణజాబితాను చదవగలుగుతారు. అందుచేత దీన్ని ఎవరికీ ఇవ్వకండి.
+[[Special:ResetTokens|దాన్ని మార్చాలంటే ఇక్కడ నొక్కండి]].',
'savedprefs' => 'మీ అభిరుచులను భద్రపరిచాం.',
'timezonelegend' => 'కాల మండలం:',
'localtime' => 'స్థానిక సమయం:',
'prefs-displayrc' => 'ప్రదర్శన ఎంపికలు',
'prefs-displaysearchoptions' => 'ప్రదర్శన ఎంపికలు',
'prefs-displaywatchlist' => 'ప్రదర్శన ఎంపికలు',
+'prefs-tokenwatchlist' => 'టోకెన్',
'prefs-diffs' => 'తేడాలు',
+'prefs-help-prefershttps' => 'ఈ అభిరుచి మీరు పైసారి లాగినైనపుడు అమలౌతుంది.',
+'prefs-tabs-navigation-hint' => 'చిట్కా: ట్యాబుల జాబితాలో ఓ ట్యాబు నుండి మరోదానికి వెళ్ళేందుకు కుడి ఎడమ బాణాల కీలను వాడవచ్చు.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'ఈ-మెయిలు చిరునామా సరిగానే ఉన్నట్టుంది',
'userrights-notallowed' => 'వాడుకరి హక్కులను చేర్చే మరియు తొలగించే అనుమతి మీకు లేదు.',
'userrights-changeable-col' => 'మీరు మార్చదగిన గుంపులు',
'userrights-unchangeable-col' => 'మీరు మార్చలేని గుంపులు',
+'userrights-conflict' => 'వాడుకరి హక్కుల మార్పులలో ఘర్షణ! మీ మార్పులను సమీక్షించి, నిర్ధారించండి.',
'userrights-removed-self' => 'మీ హక్కులను మీరు విజయవంతంగా తొలగించుకున్నారు. తద్వారా, ఈ పేజీని చూడడానికి మీకు ఇక అనుమతి లేదు.',
# Groups
'right-unblockself' => 'వారినే అనిరోధించుకోవడం',
'right-protect' => 'సంరక్షణ స్థాయిలను మార్చు, సంరక్షిత పేజీలలో దిద్దుబాటు చెయ్యి',
'right-editprotected' => 'సంరక్షిత పేజీలలో దిద్దుబటు చెయ్యి (కాస్కేడింగు సంరక్షణ లేనివి)',
+'right-editsemiprotected' => '"{{int:protect-level-autoconfirmed}}" గా సంరక్షించబడ్డ పేజీలను మార్చు',
'right-editinterface' => 'యూజరు ఇంటరుఫేసులో దిద్దుబాటు చెయ్యి',
'right-editusercssjs' => 'ఇతర వాడుకరుల CSS, JS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
'right-editusercss' => 'ఇతర వాడుకరుల CSS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
'right-edituserjs' => 'ఇతర వాడుకరుల JS ఫైళ్ళలో దిద్దుబాటు చెయ్యి',
+'right-editmyuserjs' => 'మీ స్వంత JavaScript దస్త్రాలను మార్చండి',
+'right-viewmywatchlist' => 'మీ స్వంత వీక్షణజాబితాను చూడండి',
+'right-editmywatchlist' => 'మీ స్వంత వీక్షణజాబితాను మార్చుకోండి. ఈ హక్కు లేకపోయినా, కొన్ని చర్యల ద్వారా పేజీలు జాబితాకు చేరుతాయని గమనించండి.',
+'right-viewmyprivateinfo' => 'మీ స్వంత గోపనీయ డేటాను చూడండి (ఉదా: ఈమెయిలు చిరునామా, అసలు పేరు)',
+'right-editmyprivateinfo' => 'మీ స్వంత గోపనీయ డేటాను మార్చుకోండి (ఉదా: ఈమెయిలు చిరునామా, అసలు పేరు)',
+'right-editmyoptions' => 'మీ స్వంత అభిరుచులను మార్చుకోండి',
'right-rollback' => 'ఒకానొక పేజీలో చివరి దిద్దుబాటు చేసిన వాడుకరి చేసిన దిద్దుబాట్లను రద్దుచేయి',
'right-markbotedits' => 'వెనక్కి తెచ్చిన దిద్దుబాట్లను బాట్ దిద్దుబాట్లుగా గుర్తించు',
'right-noratelimit' => 'రేటు పరిమితులు ప్రభావం చూపవు',
'action-suppressionlog' => 'ఈ అంతరంగిక చిట్టాను చూసే',
'action-block' => 'ఈ వాడుకరిని మార్పులు చేయడం నుండి నిరోధించే',
'action-protect' => 'ఈ పేజీకి సంరక్షణా స్థాయిని మార్చే',
+'action-rollback' => 'ఏదైనా పేజీలో మార్పులు చేసిన చివరి వాడుకరి యొక్క మార్పులను త్వరితంగా వెనక్కి తీసుకెళ్ళు',
'action-import' => 'మరో వికీ నుండి ఈ పేజీని దిగుమతి చేసే',
'action-importupload' => 'ఎగుమతి చేసిన ఫైలు నుండి ఈ పేజీలోనికి దిగుమతి చేసే',
'action-patrol' => 'ఇతరుల మార్పులను పర్యవేక్షించినవిగా గుర్తించే',
'allpages-hide-redirects' => 'దారిమార్పులను దాచు',
# SpecialCachedPage
+'cachedspecial-viewing-cached-ttl' => 'ఈ పేజీ యొక్క కాషె కూర్పును చూస్తున్నారు. ఇది $1 దాకా పాతదై ఉండవచ్చు.',
+'cachedspecial-viewing-cached-ts' => 'ఈ పేజీ యొక్క కాషె కూర్పును చూస్తున్నారు. ఇది పూర్తిగా వాస్తవమైన కూర్పు కాకపోవచ్చు.',
'cachedspecial-refresh-now' => 'సరికొత్త కూర్పును చూడండి.',
# Special:Categories
'noemailtext' => 'ఈ వాడుకరి సరైన ఈ-మెయిలు చిరునామాని ఇవ్వలేదు.',
'nowikiemailtitle' => 'ఈ-మెయిళ్ళను అనుమతించరు',
'nowikiemailtext' => 'ఇతర వాడుకరుల నుండి ఈ-మెయిళ్ళను అందుకోడానికి ఈ వాడుకరి సుముఖంగా లేరు.',
+'emailnotarget' => 'గ్రహీతగా ఇచ్చిన వాడుకరిపేరు తప్పైనా కావచ్చు, లేదా అసలే ఉండి ఉండకపోవచ్చు',
'emailtarget' => 'అందుకొనేవారి వాడుకరిపేరు ఇవ్వండి',
'emailusername' => 'వాడుకరి పేరు:',
'emailusernamesubmit' => 'దాఖలుచెయ్యి',
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'గమనిస్తున్నాం...',
'unwatching' => 'వీక్షణ నుండి తొలగిస్తున్నా...',
+'watcherrortext' => '"$1" కు మీ సెట్టింగులను మార్చేటపుడు ఏదో లోపం దొర్లింది.',
'enotif_mailer' => '{{SITENAME}} ప్రకటన మెయిలు పంపునది',
'enotif_reset' => 'అన్ని పేజీలను చూసినట్లుగా గుర్తించు',
'enotif_impersonal_salutation' => '{{SITENAME}} వాడుకరి',
+'enotif_subject_deleted' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|తొలగించారు}}',
+'enotif_subject_created' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|సృష్టించారు}}',
+'enotif_subject_moved' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|తరలించారు}}',
+'enotif_subject_restored' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|పునస్థాపించారు}}',
+'enotif_subject_changed' => '{{SITENAME}} $1 పేజీని $2 {{GENDER:$2|మార్చారు}}',
+'enotif_body_intro_deleted' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|తొలగించారు}}, $3 చూడండి.',
+'enotif_body_intro_created' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|సృష్టించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_moved' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|తరలించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_restored' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|పునస్థాపించారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
+'enotif_body_intro_changed' => '{{SITENAME}} $1 పేజీని $PAGEEDITDATE న $2 {{GENDER:$2|మార్చారు}}, ప్రస్తుత కూర్పు కోసం $3 చూడండి.',
'enotif_lastvisited' => 'మీ గత సందర్శన తరువాత జరిగిన మార్పుల కొరకు $1 చూడండి.',
'enotif_lastdiff' => 'ఈ మార్పు చూసేందుకు $1 కు వెళ్ళండి.',
'enotif_anon_editor' => 'అజ్ఞాత వాడుకరి $1',
'deleteotherreason' => 'ఇతర/అదనపు కారణం:',
'deletereasonotherlist' => 'ఇతర కారణం',
'deletereason-dropdown' => '* తొలగింపుకి సాధారణ కారణాలు
-** రచయిత అభ్యర్థన
+** స్పాము
+** దుశ్చర్య
** కాపీహక్కుల ఉల్లంఘన
-** దుశ్చర్య',
+** రచయిత అభ్యర్థన
+** తెగిపోయిన దారిమార్పు',
'delete-edit-reasonlist' => 'తొలగింపు కారణాలని మార్చండి',
'delete-toobig' => 'ఈ పేజీకి $1 {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} మించిన, చాలా పెద్ద దిద్దుబాటు చరితం ఉంది. {{SITENAME}}కు అడ్డంకులు కలగడాన్ని నివారించేందుకు గాను, అలాంటి పెద్ద పేజీల తొలగింపును నియంత్రించాం.',
'delete-warning-toobig' => 'ఈ పేజీకి $1 {{PLURAL:$1|కూర్పుకు|కూర్పులకు}} మించిన, చాలా పెద్ద దిద్దుబాటు చరితం ఉంది. దాన్ని తొలగిస్తే {{SITENAME}}కి చెందిన డేటాబేసు కార్యాలకు ఆటంకం కలగొచ్చు; అప్రమత్తతో ముందుకుసాగండి.',
+'deleting-backlinks-warning' => "'''హెచ్చరిక:''' మీరు తొలగించబోతున్న పేజీకి ఇతర పేజీల నుండి లింకులు ఉన్నాయి.",
# Rollback
'rollback' => 'దిద్దుబాట్లను రద్దుచేయి',
'protect-title' => '"$1" యొక్క సంరక్షణ స్థాయి అమర్పు',
'protect-title-notallowed' => '"$1" యొక్క సంరక్షణ స్థాయి',
'prot_1movedto2' => '$1, $2కు తరలించబడింది',
+'protect-badnamespace-title' => 'సంరక్షించజాలని పేరుబరి',
'protect-badnamespace-text' => 'ఈ పేరుబరిలో ఉన్న పేజీలను సంరక్షించలేరు.',
+'protect-norestrictiontypes-title' => 'సంరక్షించజాలని పేజీ',
'protect-legend' => 'సంరక్షణను నిర్ధారించు',
'protectcomment' => 'కారణం:',
'protectexpiry' => 'గడువు:',
# Namespace form on various pages
'namespace' => 'పేరుబరి:',
'invert' => 'ఎంపికను తిరగవెయ్యి',
+'tooltip-invert' => 'ఎంచుకున్న పేరుబరి (చెక్ చేసి ఉంటే అనుబంధ పేరుబరి కూడా) లోని పేజీల్లో జరిగిన మార్పులను దాచేందుకు ఈ పెట్టెను చెక్ చెయ్యండి',
'namespace_association' => 'సంబంధిత పేరుబరి',
'blanknamespace' => '(మొదటి)',
'unlockdbsuccesstext' => 'డాటాబేసుకి తాళం తీసాం.',
'lockfilenotwritable' => 'డేటాబేసుకు తాళంవేయగల ఫైలులో రాయలేకపోతున్నాను. డేటాబేసుకు తాళంవేయటానికిగానీ లేదా తీసేయటానికిగానీ, వెబ్సర్వరులో ఉన్న ఈ ఫైలులో రాయగలగాలి.',
'databasenotlocked' => 'డేటాబేసు లాకవలేదు.',
+'lockedbyandtime' => '($2 న $3 వద్ద {{GENDER:$1|$1}} ద్వారా)',
# Move page
'move-page' => '$1 తరలింపు',
'articlepage' => 'ดูหน้าเนื้อหา',
'talk' => 'อภิปราย',
'views' => 'ดู',
-'toolbox' => 'à¸\81ลà¹\88à¸à¸\87à¹\80à¸\84รืà¹\88à¸à¸\87มืà¸',
+'toolbox' => 'เครื่องมือ',
'userpage' => 'ดูหน้าผู้ใช้',
'projectpage' => 'ดูหน้าโครงการ',
'imagepage' => 'ดูหน้าไฟล์',
'invalidtitle-knownnamespace' => 'ชื่อเรื่องที่มีเนมสเปซ "$2" กับข้อความ "$3" ไม่ถูกต้อง',
'invalidtitle-unknownnamespace' => 'ชื่อเรื่องที่ไม่ทราบเนมสเปซหมายเลข $1 กับข้อความ "$2" ไม่ถูกต้อง',
'exception-nologin' => 'ไม่ได้ล็อกอิน',
-'exception-nologin-text' => 'หน้าหรือปฏิบัติการนี้กำหนดให้คุณต้องล็อกอินเข้าสู่วิกินี้ก่อน',
+'exception-nologin-text' => 'โปรด[[Special:Userlogin|ล็อกอิน]]เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้',
+'exception-nologin-text-manual' => 'โปรด$1เพื่อสามารถเข้าถึงหน้าหรือปฏิบัติการนี้',
# Virus scanner
'virus-badscanner' => "โครงแบบผิดพลาด: ไม่รู้จักตัวสแกนไวรัส: ''$1''",
'gotaccount' => "มีบัญชีแล้วใช่ไหม '''$1'''",
'gotaccountlink' => 'ล็อกอิน',
'userlogin-resetlink' => 'ลืมรายละเอียดล็อกอินของคุณหรือ',
-'userlogin-resetpassword-link' => 'à¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88',
+'userlogin-resetpassword-link' => 'ลืมรหัสà¸\9cà¹\88าà¸\99หรืà¸',
'helplogin-url' => 'Help:การล็อกอิน',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|คำอธิบายเรื่องการล็อกอิน]]',
'userlogin-loggedin' => 'คุณล็อกอินในชื่อ {{GENDER:$1|$1}} แล้ว
'passwordtooshort' => 'รหัสผ่านต้องมีความยาวอย่างน้อย $1 อักขระ',
'password-name-match' => 'รหัสผ่านต้องต่างจากชื่อผู้ใช้',
'password-login-forbidden' => 'ห้ามใช้ชื่อผู้ใช้และรหัสผ่านนี้',
-'mailmypassword' => 'à¸à¸µà¹\80มลรหัสผ่านใหม่',
+'mailmypassword' => 'à¸\95ัà¹\89à¸\87รหัสผ่านใหม่',
'passwordremindertitle' => 'รหัสผ่านชั่วคราวใหม่สำหรับ {{SITENAME}}',
'passwordremindertext' => 'ผู้ใดผู้หนึ่ง (ซึ่งอาจเป็นคุณ ที่ใช้เลขที่อยู่ไอพี $1) ขอให้ส่งรหัสผ่านใหม่ของ {{SITENAME}} ($4) รหัสผ่านชั่วคราวสำหรับชื่อผู้ใช้ "$2" ถูกสร้างขึ้น และกำหนดเป็น "$3" หากการขอรหัสผ่านใหม่นี้เป็นเจตนาของคุณ คุณจำต้องล็อกอินและเลือกรหัสผ่านใหม่ ณ ขณะนี้ รหัสผ่านชั่วคราวของคุณจะหมดอายุใน $5 วัน
จึงส่งผลให้ผู้เข้าชมที่ใช้เลขที่อยู่ไอพีนี้ ไม่สามารถสร้างบัญชีได้อีกในขณะนี้',
'emailauthenticated' => 'ที่อยู่อีเมลของคุณได้รับการยืนยันเมื่อวันที่ $2 เวลา $3',
'emailnotauthenticated' => 'ที่อยู่อีเมลของคุณยังไม่ได้รับการยืนยัน
-ไม่มีการส่งอีเมลสำหรับคุณลักษณะใด ๆ ต่อไปนี้',
+à¸\88ะà¹\84มà¹\88มีà¸\81ารสà¹\88à¸\87à¸à¸µà¹\80มลสำหรัà¸\9aà¸\84ุà¸\93ลัà¸\81ษà¸\93ะà¹\83à¸\94 à¹\86 à¸\95à¹\88à¸à¹\84à¸\9bà¸\99ีà¹\89',
'noemailprefs' => 'ระบุที่อยู่อีเมลในการตั้งค่าของคุณเพื่อให้คุณลักษณะเหล่านี้ทำงานได้',
'emailconfirmlink' => 'ยืนยันที่อยู่อีเมลของคุณ',
'invalidemailaddress' => 'ไม่สามารถรับที่อยู่อีเมลได้ เพราะดูมีรูปแบบไม่ถูกต้อง
# Special:PasswordReset
'passwordreset' => 'ตั้งรหัสผ่านใหม่',
'passwordreset-text-one' => 'กรอกแบบนี้เพื่อตั้งรหัสผ่านใหม่',
-'passwordreset-text-many' => '{{PLURAL:$1|à¸\81รà¸à¸\81à¹\80à¸\82à¸\95à¸\82à¹\89à¸à¸¡à¸¹à¸¥à¸«à¸\99ึà¹\88à¸\87à¹\80à¸\9eืà¹\88à¸à¸\95ัà¹\89à¸\87รหัสà¸\9cà¹\88าà¸\99à¹\83หมà¹\88}}',
+'passwordreset-text-many' => '{{PLURAL:$1|à¸\81รà¸à¸\81à¹\80à¸\82à¸\95à¸\82à¹\89à¸à¸¡à¸¹à¸¥à¸«à¸\99ึà¹\88à¸\87à¹\80à¸\9eืà¹\88à¸à¸£à¸±à¸\9aรหัสà¸\9cà¹\88าà¸\99à¸\8aัà¹\88วà¸\84ราวà¸\97าà¸\87à¸à¸µà¹\80มล}}',
'passwordreset-legend' => 'เปลี่ยนรหัสผ่าน',
'passwordreset-disabled' => 'การตั้งรหัสผ่านใหม่ปิดใช้งานบนวิกินี้',
'passwordreset-emaildisabled' => 'คุณลักษณะอีเมลถูกปิดใช้งานบนวิกินี้',
'cantcreateaccount-text' => "การสร้างบัญชีใหม่จากที่อยู่ไอพีนี้ ('''$1''') ถูกระงับโดย [[User:$3|$3]]
เหตุผลที่ $3 ให้ไว้ คือ ''$2''",
+'cantcreateaccount-range-text' => "การสร้างบัญชีจากเลขที่อยู่ไอพีในช่วง '''$1''' ซึ่งรวมเลขที่อยู่ไอพีของคุณ ('''$4''') ถูกบล็อกโดย [[User:$3|$3]]
+
+เหตุผลที่ $3 ชี้แจง คือ ''$2''",
# History pages
'viewpagelogs' => 'ดูปูมของหน้านี้',
'revdelete-text' => "'''รุ่นการปรับปรุงและเหตุการณ์ที่ถูกลบยังปรากฏในประวัติและปูมของหน้า แต่สาธารณะไม่สามารถเข้าถึงเนื้อหาบางส่วนได้'''
ผู้ดูแลระบบคนอื่นบน {{SITENAME}} ยังสามารถเข้าถึงเนื้อหาที่ถูกซ่อน และสามารถกู้คืนอีกครั้งในลักษณะเดิมเช่นนี้ เว้นแต่จะมีการกำหนดการจำกัดเพิ่มเติม",
'revdelete-confirm' => 'กรุณายืนยันว่าคุณมีเจตนาลบจริง และเข้าใจผลลัพธ์ และกระทำภายใต้[[{{MediaWiki:Policy-url}}|นโยบาย]]',
-'revdelete-suppress-text' => "การระงับควรใช้ '''เฉพาะ''' กรณีต่อไปนี้:
+'revdelete-suppress-text' => "การระงับควรใช้'''เฉพาะ'''กรณีต่อไปนี้:
* ข้อมูลที่อาจหมิ่นประมาท
* ข้อมูลส่วนบุคคลที่ไม่เหมาะสม
*: ''ที่อยู่บ้านและหมายเลขโทรศัพท์บ้าน, หมายเลขประกันสังคม, ฯลฯ''",
'revdelete-legend' => 'ตั้งการจำกัดทัศนวิสัย:',
-'revdelete-hide-text' => 'à¸\8bà¹\88à¸à¸\99à¸\82à¹\89à¸à¸\84วามรุà¹\88à¸\99',
+'revdelete-hide-text' => 'ข้อความรุ่น',
'revdelete-hide-image' => 'ซ่อนเนื้อหาไฟล์',
'revdelete-hide-name' => 'ซ่อนปฏิบัติการและเป้าหมาย',
-'revdelete-hide-comment' => 'à¸\8bà¹\88à¸à¸\99à¸\84ำà¸à¸\98ิà¸\9aายà¸à¸¢à¹\88าà¸\87ยà¹\88à¸',
-'revdelete-hide-user' => 'à¸\8bà¹\88à¸à¸\99à¸\8aืà¹\88à¸à¸\9cูà¹\89à¹\83à¸\8aà¹\89/à¹\80ลà¸\82à¸\97ีà¹\88à¸à¸¢à¸¹à¹\88à¹\84à¸à¸\9eีà¸\9cูà¹\89à¹\80à¸\82ียà¸\99',
+'revdelete-hide-comment' => 'คำอธิบายอย่างย่อ',
+'revdelete-hide-user' => 'ชื่อผู้ใช้/เลขที่อยู่ไอพีผู้เขียน',
'revdelete-hide-restricted' => 'ระงับข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้อื่น',
'revdelete-radio-same' => '(ไม่เปลี่ยนแปลง)',
-'revdelete-radio-set' => 'à¹\83à¸\8aà¹\88',
-'revdelete-radio-unset' => 'à¹\84มà¹\88',
+'revdelete-radio-set' => 'à¸\8bà¹\88à¸à¸\99',
+'revdelete-radio-unset' => 'à¹\80à¸\9bิà¸\94à¹\80à¸\9cย',
'revdelete-suppress' => 'ซ่อนข้อมูลจากผู้ดูแลระบบเช่นเดียวกับผู้ใช้อื่น',
'revdelete-unsuppress' => 'ลบการจำกัดสำหรับรุ่นที่กู้คืน',
'revdelete-log' => 'เหตุผล:',
'preferences' => 'ตั้งค่าส่วนตัว',
'mypreferences' => 'การตั้งค่า',
'prefs-edits' => 'จำนวนการแก้ไข:',
+'prefsnologintext2' => 'โปรด$1เพื่อเปลี่ยนการตั้งค่าของคุณ',
'prefs-skin' => 'หน้าตา',
'skin-preview' => 'แสดงตัวอย่าง',
'datedefault' => 'ค่าตั้งต้น',
'recentchanges-label-bot' => 'การแก้ไขนี้กระทำโดยบอต',
'recentchanges-label-unpatrolled' => 'การแก้ไขนี้ยังไม่ได้ตรวจสอบ',
'recentchanges-label-plusminus' => 'ขนาดของหน้าเปลี่ยนไปด้วยจำนวนไบต์เท่านี้',
+'recentchanges-legend-heading' => "'''คำอธิบายสัญลักษณ์:'''",
'recentchanges-legend-newpage' => '(ดูเพิ่มที่[[Special:NewPages|รายชื่อหน้าใหม่]])',
'rcnotefrom' => "ด้านล่างเป็นการเปลี่ยนแปลงตั้งแต่ '''$2''' (มากสุด '''$1''' รายการ)",
'rclistfrom' => 'แสดงการเปลี่ยนแปลงใหม่เริ่มตั้งแต่ $1',
'rcshowhideminor' => '$1การแก้ไขเล็กน้อย',
'rcshowhidebots' => '$1บอต',
-'rcshowhideliu' => '$1à¸\9cูà¹\89à¹\83à¸\8aà¹\89ลà¹\87à¸à¸\81à¸à¸´น',
+'rcshowhideliu' => '$1à¸\9cูà¹\89à¹\83à¸\8aà¹\89ลà¸\87à¸\97ะà¹\80à¸\9aียน',
'rcshowhideanons' => '$1ผู้ใช้นิรนาม',
'rcshowhidepatr' => '$1การแก้ไขที่ตรวจสอบแล้ว',
'rcshowhidemine' => '$1การแก้ไขของฉัน',
'file-nohires' => 'ไม่มีความละเอียดสูงกว่านี้',
'svg-long-desc' => 'ไฟล์ SVG, $1 × $2 พิกเซล พอเป็นพิธี, ขนาดไฟล์: $3',
'svg-long-error' => 'ไฟล์ SVG ไม่ถูกต้อง: $1',
-'show-big-image' => 'à¸\84วามละà¹\80à¸à¸µà¸¢à¸\94สูà¸\87สุà¸\94',
+'show-big-image' => 'à¹\84à¸\9fลà¹\8cà¸\95à¹\89à¸\99à¸\89à¸\9aัà¸\9a',
'show-big-image-other' => 'อื่นๆ {{PLURAL:$2|resolution|resolutions}}: $1.',
'show-big-image-size' => '$1 × $2 พิกเซล',
'file-info-gif-looped' => 'วนซ้ำ',
'confirm-unwatch-button' => 'ตกลง',
'confirm-unwatch-top' => 'ลบหน้านี้ออกจากรายการเฝ้าดูของคุณ',
+# Separators for various lists, etc.
+'quotation-marks' => '"$1"',
+
# Multipage image navigation
'imgmultipageprev' => '← หน้าก่อนหน้า',
'imgmultipagenext' => 'หน้าถัดไป →',
'version-entrypoints-scriptpath' => '[https://www.mediawiki.org/wiki/Manual:$wgScriptPath เส้นทางสคริปต์]',
# Special:Redirect
-'redirect' => 'การเปลี่ยนทางตามชื่อไฟล์ รหัสประจำผู้ใช้หรือรุ่น',
+'redirect' => 'การเปลี่ยนทางตามชื่อไฟล์ รหัสประจำผู้ใช้ หน้าหรือรุ่น',
'redirect-legend' => 'การเปลี่ยนทางไปยังไฟล์หรือหน้า',
'redirect-summary' => 'หน้าพิเศษนี้เปลี่ยนทางไปยังไฟล์ (ระบุเป็นชื่อไฟล์) หน้า (ระบุเป็นรหัสรุ่น) หรือหน้าผู้ใช้ (ระบุเป็นรหัสผู้ใช้)',
'redirect-submit' => 'ไป',
'redirect-lookup' => 'ค้นดู:',
'redirect-value' => 'ค่า:',
'redirect-user' => 'รหัสผู้ใช้',
+'redirect-page' => 'รหัสประจำหน้า',
'redirect-revision' => 'รุ่นหน้า',
'redirect-file' => 'ชื่อไฟล์',
'redirect-not-exists' => 'ไม่พบค่า',
# Special:SpecialPages
'specialpages' => 'หน้าพิเศษ',
+'specialpages-note-top' => 'คำอธิบายสัญลักษณ์',
'specialpages-note' => '* หน้าพิเศษปกติ
* <span class="mw-specialpagerestricted">หน้าพิเศษที่ถูกจำกัด</span>',
'specialpages-group-maintenance' => 'รายงานการเก็บกวาด',
'tags-tag' => 'ชื่อป้ายกำกับ',
'tags-display-header' => 'สิ่งที่แสดงในรายการการเปลี่ยนแปลง',
'tags-description-header' => 'คำอธิบายความหมายโดยละเอียด',
+'tags-active-header' => 'เปิดใช้งานหรือไม่',
'tags-hitcount-header' => 'การเปลี่ยนแปลงที่มีป้ายนี้กำกับ',
+'tags-active-yes' => 'ใช่',
+'tags-active-no' => 'ไม่',
'tags-edit' => 'แก้ไข',
'tags-hitcount' => '$1 การเปลี่ยนแปลง',
'dberr-problems' => 'ขออภัย เว็บไซต์นี้กำลังพบกับข้อผิดพลาดทางเทคนิค',
'dberr-again' => 'กรุณารอสักครู่แล้วจึงโหลดใหม่',
'dberr-info' => '(ไม่สามารถติดต่อเซิร์ฟเวอร์ฐานข้อมูลได้: $1)',
+'dberr-info-hidden' => '(ไม่สามารถติดต่อเซิร์ฟเวอร์ฐานข้อมูล)',
'dberr-usegoogle' => 'คุณสามารถลองสืบค้นผ่านกูเกิลในระหว่างนี้',
'dberr-outofdate' => 'โปรดทราบว่าดัชนีเนื้อหาของเราในกูเกิลอาจล้าสมัยแล้ว',
'dberr-cachederror' => 'นี่คือข้อมูลคัดลอกชั่วคราวของหน้าที่ร้องขอ และอาจไม่เป็นปัจจุบัน',
'htmlform-selectorother-other' => 'อื่น ๆ',
'htmlform-no' => 'ไม่',
'htmlform-yes' => 'ใช่',
+'htmlform-chosen-placeholder' => 'เลือกตัวเลือก',
# SQLite database support
'sqlite-has-fts' => 'รุ่น $1 พร้อมการสนับสนุนการค้นหาข้อความแบบเต็ม',
* @author BetelgeuSeginus
* @author Bilalokms
* @author Bombola
+ * @author Cagrix
* @author Cekli829
* @author Coolland
* @author Dbl2010
'hidden-category-category' => 'Gizli kategoriler',
'category-subcat-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki alt kategoriyi içermektedir.|Bu kategoride aşağıdaki {{PLURAL:$1|alt kategori|$1 alt kategorisi}} dahil $2 alt kategorisi vardır.}}',
'category-subcat-count-limited' => 'Bu kategori aşağıdaki {{PLURAL:$1|alt kategoriye|$1 alt kategoriye}} sahiptir.',
-'category-article-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki sayfayı içermektedir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|sayfa|$1 sayfa}} bu kategoridedir.}}',
-'category-article-count-limited' => 'Bu kategoride {{PLURAL:$1|sayfa|$1 sayfa}} bulunmaktadır.',
-'category-file-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki dosyayı içerir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} bu kategoridedir.}}',
-'category-file-count-limited' => 'Aşağıdaki {{PLURAL:$1|dosya|$1 dosya}} mevcut kategoridedir.',
+'category-article-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki sayfayı içermektedir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|sayfa|$1 sayfalar}} bu kategoridedir.}}',
+'category-article-count-limited' => 'Bu kategoride {{PLURAL:$1|sayfa|$1 sayfalar}} bulunmaktadır.',
+'category-file-count' => '{{PLURAL:$2|Bu kategori sadece aşağıdaki dosyayı içerir.|Toplam $2 taneden, aşağıdaki {{PLURAL:$1|dosya|$1 dosyalar}} bu kategoridedir.}}',
+'category-file-count-limited' => 'Aşağıdaki {{PLURAL:$1|dosya|$1 dosyalar}} mevcut kategoridedir.',
'listingcontinuesabbrev' => '(devam)',
'index-category' => 'Dizinli sayfalar',
'noindex-category' => 'Dizinli olmayan sayfalar',
'broken-file-category' => 'Bozuk dosya bağlantıları içeren sayfalar',
'about' => 'Hakkında',
-'article' => 'Madde',
+'article' => 'İçerik sayfası',
'newwindow' => '(yeni bir pencerede açılır)',
'cancel' => 'İptal',
'moredotdotdot' => 'Daha...',
'helppage' => 'Help:İçindekiler',
'mainpage' => 'Ana Sayfa',
'mainpage-description' => 'Ana sayfa',
-'policy-url' => 'Project:Politika',
+'policy-url' => 'Project:İlkeler',
'portal' => 'Topluluk portalı',
-'portal-url' => 'Project:Topluluk portalı',
+'portal-url' => 'Project:Topluluk portali',
'privacy' => 'Gizlilik ilkesi',
'privacypage' => 'Project:Gizlilik ilkesi',
'ok' => 'Tamam',
'pagetitle-view-mainpage' => '{{SITENAME}}',
'retrievedfrom' => '"$1" adresinden alındı.',
-'youhavenewmessages' => 'Yeni $1 var ($2).',
+'youhavenewmessages' => '$1 {{PLURAL:$3|var}} ($2).',
'youhavenewmessagesfromusers' => '{{PLURAL:$3|Başka bir kullanıcıdan|$3 kullanıcıdan}} $1 var ($2).',
'youhavenewmessagesmanyusers' => 'Birçok kullanıcıdan $1 var ($2).',
'newmessageslinkplural' => '{{PLURAL:$1|yeni mesajınız|yeni mesajlarınız}}',
'delete-warning-toobig' => 'Bu sayfanın büyük bir değişiklik geçmişi var, $1 {{PLURAL:$1|revizyonun|revizyonun}} üzerinde.
Bunu silmek {{SITENAME}} işlemlerini aksatabilir;
dikkatle devam edin.',
+'deleting-backlinks-warning' => "'''Uyarı:''' Silmek üzere olduğunuz sayfaya başka sayfalardan bağlantılar var.",
# Rollback
'rollback' => 'değişiklikleri geri al',
'mainpage' => 'باش بەت',
'mainpage-description' => 'باش بەت',
'policy-url' => 'Project:تاكتىكا',
-'portal' => 'ئىجتىمائى رايون',
+'portal' => 'ئىجتىمائىي رايون',
'portal-url' => 'Project:ئىجتىمائى رايون',
'privacy' => 'شەخسىيەت تاكتىكىسى',
'privacypage' => 'Project:شەخسىيەت تاكتىكىسى',
'delete-warning-toobig' => 'У цієї сторінки дуже довга історія редагувань, більше $1 {{PLURAL:$1|версії|версій|версій}}.
Її вилучення може призвести до порушень у роботі бази даних сайту {{SITENAME}};
дійте обережно.',
+'deleting-backlinks-warning' => "'''Попередження:''' інші сторінки посилаються на сторінку, яку ви маєте намір видалити.",
# Rollback
'rollback' => 'Відкинути редагування',
'tog-hidepatrolled' => 'Käkiq perämäidsi muutmiisi nimekirän ärq muutmisõq, miä ommaq perräkaemisnimekirän',
'tog-newpageshidepatrolled' => 'Käkiq vahtsidõ lehti nimekirän ärq ülekaeduq leheq',
'tog-extendwatchlist' => 'Laendaq perräkaemisnimekirjä, et nätäq kõiki muutmiisi, mitte õnnõ kõgõ perämäidsi',
-'tog-usenewrc' => 'Laendõduq perämädseq muutmisõq (vaia JavaScripti)',
+'tog-usenewrc' => 'Sordiq viimädseq muutmisõq ja muutmisnimekirän leheküle perrä',
'tog-numberheadings' => 'Päälkirjo automaatnummõrdus',
-'tog-showtoolbar' => 'Näütäq toimõndusõ riistakasti',
-'tog-editondblclick' => 'Artiklidõ toimõndaminõ topõltklõpsu pääle (JavaScript)',
+'tog-showtoolbar' => 'Näütäq toimõndusõ tüüriistaripa',
+'tog-editondblclick' => 'Toimõndaq artikliid topõltklõpsu pääle',
'tog-editsection' => 'Lupaq lõikõ toimõndaq [toimõndaq]-linkõga',
-'tog-editsectiononrightclick' => 'Lupaq lõikõ toimõndaq hüäpoolidsõ klõpsutusõga <br /> lõigu päälkirä pääl (JavaScript)',
+'tog-editsectiononrightclick' => 'Lupaq lõikõ toimõndaq hüäpoolidsõ klõpsutusõga lõigu päälkirä pääl',
'tog-showtoc' => 'Näütäq sisukõrda (rohkõmb ku kolmõ vaihõpäälkiräga lehile)',
'tog-rememberpassword' => 'Salasõna miildejätmine tulõvaidsis kõrros (kõgõ inämb $1 {{PLURAL:$1|pääväs|pääväs}})',
-'tog-watchcreations' => 'Panõq mu luuduq leheq mu perräkaemisnimekirjä',
-'tog-watchdefault' => 'Kaeq vahtsidõ ja muudõtuidõ artiklidõ perrä',
-'tog-watchmoves' => 'Panõq mu ümbrenõstõduq leheküleq mu perräkaemisnimekirjä',
+'tog-watchcreations' => 'Panõq muq luuduq leheq ja üleslaadiduq teedüstüq muq perräkaemisnimekirjä',
+'tog-watchdefault' => 'Panõq perräkaemisnimekirjä muq muudõduq leheq ja teedüstüq',
+'tog-watchmoves' => 'Panõq muq ümbrenõstõduq leheq ja teedüstüq muq perräkaemisnimekirjä',
'tog-watchdeletion' => 'Panõq mu kistutõduq leheküleq mu perräkaemisnimekirjä',
'tog-minordefault' => 'Märgiq kõik parandusõq vaikimiisi väikeisis paranduisis',
'tog-previewontop' => 'Näütäq proovikaehust inne, mitte perän toimõnduskasti',
'tog-shownumberswatching' => "Näütäq, ku pall'o pruukjit taa lehe perrä kaes",
'tog-oldsig' => 'Parhillanõ alakirotus:',
'tog-fancysig' => 'Pruugiq vikiteksti moodulist alakirotust (ilma automaatsõ lingildä)',
-'tog-uselivepreview' => 'Pruugiq kipõkaehust (JavaScript) (proomi)',
+'tog-uselivepreview' => 'Pruugiq õkvakipõkaehust (proomivõimalus)',
'tog-forceeditsummary' => 'Annaq teedäq, ku olõ-i kirotõt kokkovõtõt',
'tog-watchlisthideown' => 'Näüdäku-i perräkaemisnimekirän mu hindä toimõnduisi',
'tog-watchlisthidebots' => 'Näüdäku-i perräkaemisnimekirän robotidõ toimõnduisi',
'tog-diffonly' => 'Näüdäku-i lahkominekide lehe all lehe täüt sissu',
'tog-showhiddencats' => 'Näütäq käkitüid katõgoorijit',
'tog-norollbackdiff' => 'Päält tagasivõtmist näüdäku-i lahkominekiid',
+'tog-useeditwarning' => 'Hoiadaq minno, ku ma lääq lehe päält ärq ilma ummi muutmiisi ärq pästmäldä',
+'tog-prefershttps' => 'Pruugiq nimega sisseminemises kõgõ kaidsõtut ütistüst',
'underline-always' => 'Kõgõ',
'underline-never' => 'Ei kunagi',
'oct' => 'rehek',
'nov' => 'märtek',
'dec' => 'jouluk',
+'january-date' => '$1. vahtsõaastakuu päiv',
+'february-date' => '$1. radokuu päiv',
+'march-date' => '$1. urbõkuu päiv',
+'april-date' => '$1. mahlakuu päiv',
+'may-date' => '$1. lehekuu päiv',
+'june-date' => '$1. piimäkuu päiv',
+'july-date' => '$1. hainakuu päiv',
+'august-date' => '$1. põimukuu päiv',
+'september-date' => '$1. süküskuu päiv',
+'october-date' => '$1. rehekuu päiv',
+'november-date' => '$1. märtekuu päiv',
+'december-date' => '$1. joulukuu päiv',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Katõgooria|Katõgooriaq}}',
'newwindow' => '(tulõ vallalõ vahtsõn aknõn)',
'cancel' => 'Jätäq katski',
'moredotdotdot' => 'Viil...',
+'morenotlisted' => 'Seo nimekiri olõ-õi tävveline.',
'mypage' => 'Muq lehekülg',
'mytalk' => 'Arotus',
'anontalk' => 'Seo puutri võrgoaadrõsi arotus',
'vector-action-protect' => 'Kaidsaq',
'vector-action-undelete' => 'Tiiq tagasi',
'vector-action-unprotect' => 'Muudaq kaidsõt',
-'vector-simplesearch-preference' => 'Lupaq tävvendedüid otsmispakmiisi (õnnõ Vektori-kujundusõn)',
+'vector-simplesearch-preference' => 'Lupaq lihtsüstedüt otsmisripa (õnnõ Vektor-kujondusõn)',
'vector-view-create' => 'Luuq',
'vector-view-edit' => 'Toimõndaq',
'vector-view-history' => 'Näütäq aoluku',
'namespaces' => 'Nimeruumiq',
'variants' => 'Tõõsõndiq',
+'navigation-heading' => 'Juhtmisvaliguq',
'errorpagetitle' => 'Viga',
'returnto' => 'Tagasi lehe manoq $1.',
'tagline' => 'Läteq: {{SITENAME}}',
'create-this-page' => 'Luuq seo leht',
'delete' => 'Kistudaq ärq',
'deletethispage' => 'Kistudaq seo artikli ärq',
+'undeletethispage' => 'Tiiq seo leht tagasi',
'undelete_short' => 'Võtaq tagasi {{PLURAL:$1|üts muutminõ|$1 muutmist}}',
'viewdeleted_short' => 'Kaeq {{PLURAL:$1|ütte|$1}} kistutõdut redaktsiooni',
'protect' => 'Kaidsaq',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage).
'aboutsite' => '{{SITENAME}} tutvustus',
'aboutpage' => 'Project:Pääteedüs',
-'copyright' => 'Teksti või vabalt pruukiq litsendsi $1 perrä.',
+'copyright' => 'Teksti või vabalt pruukiq litsendsi $1 perrä, ku olõ-õi tõisildõ üteld.',
'copyrightpage' => '{{ns:project}}:Tegijäõigusõq',
'currentevents' => 'Miä sünnüs',
'currentevents-url' => 'Project:Miä sünnüs',
'disclaimers' => 'Hoiatuisi',
'disclaimerpage' => 'Project:Üledseq hoiatusõq',
'edithelp' => 'Toimõndamisoppus',
-'helppage' => 'Help:Oppus',
+'helppage' => 'Help:Sisukõrd',
'mainpage' => 'Pääleht',
'mainpage-description' => 'Pääleht',
'policy-url' => 'Project:Säädüseq',
'ok' => 'Hää külh',
'retrievedfrom' => 'Vällä otsit teedüskogost "$1"',
'youhavenewmessages' => 'Sul om $1 ($2).',
+'youhavenewmessagesfromusers' => 'Sullõ om $1 {{PLURAL:$3|ütelt|$3}} pruukjalt ($2).',
+'youhavenewmessagesmanyusers' => "Sullõ om $1 pall'odõlt pruukjilt ($2).",
+'newmessageslinkplural' => '{{PLURAL:$1|vahtsõnõ sõnnom|999=vahtsit sõnomit}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|viimäne muutminõ|999=viimädseq muutmisõq}}',
'youhavenewmessagesmulti' => 'Sullõ om vahtsit sõnomit lehe pääl $1',
'editsection' => 'toimõndaq',
'editold' => 'toimõndaq',
'page-rss-feed' => '$1 (RSS-söödüs)',
'page-atom-feed' => '$1 (Atom-söödüs)',
'red-link-title' => '$1 (säänest lehte olõ-i)',
+'sort-descending' => 'Panõq alanõvahe järekõrda',
+'sort-ascending' => 'Panõq nõsõvahe järekõrda',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Artikli',
# General errors
'error' => 'Viga',
'databaseerror' => 'Teedüskogo viga',
+'databaseerror-text' => "Teedüskogost perräküsümise man oll' viga.
+Viga või ollaq tarkvaran.",
+'databaseerror-textcl' => "Teedüskogost perräküsümise man oll' viga.",
+'databaseerror-query' => 'Perräküsümine: $1',
+'databaseerror-function' => 'Ülesannõq: $1',
'databaseerror-error' => 'Viga: $1',
'laggedslavemode' => 'Hoiatus: Taa lehe pääl pruugi-i ollaq perämäidsi muutmiisi.',
'readonly' => 'Teedüskogo kirotuskaitsõ all',
'readonly_lag' => 'Teedüskogo panti automaatsõhe kinniq, et kõik teedüskogoserveriq saasiq kätte kõik värskiq muutmisõq',
'internalerror' => 'Sisemäne viga',
'internalerror_info' => 'Viga: $1',
+'fileappenderrorread' => 'Teedüstüt "$1" saa-as manopandmisõ aol lukõq.',
+'fileappenderror' => 'Teedüstüt "$1" saa-as manoq pandaq teedüstüle "$2".',
'filecopyerror' => 'Es saaq teedüstüt "$1" teedüstüs "$2" kopidaq.',
'filerenameerror' => 'Es saaq teedüstüt "$1" teedüstüs "$2" ümbre nimetäq.',
'filedeleteerror' => 'Teedüstüt nimega "$1" saa-i ärq kistutaq.',
'badarticleerror' => 'Taad tallitust saa ei seo leheküle pääl tetäq.',
'cannotdelete' => 'Lehekülge vai pilti "$1" saa ei ärq kistutaq.
Või-ollaq kiäki tõõnõ jo kistut\' taa ärq.',
+'cannotdelete-title' => 'Lehekülge "$1" saa-ai ärq kistutaq',
'badtitle' => 'Viganõ päälkiri',
'badtitletext' => "Küsüt artiklipäälkiri oll' kas viganõ, tühi vai sis
võlssi näüdät kiili- vai wikidevaihõlinõ päälkiri.",
-'perfcached' => 'Järgmäne teedüs om puhvõrdõt ja pruugi ei ollaq kõgõ värskimb. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
-'perfcachedts' => 'Järgmäne teedüs om puhvõrdõt ja om viimäte muudõt $1. A maximum of {{PLURAL:$4|one result is|$4 results are}} available in the cache.',
+'perfcached' => 'Järgmäne teedüs om puhvõrdõt ja pruugi ei ollaq kõgõ värskimb.
+Puhvrin om {{PLURAL:$1|üts tullõm|$1 tulõmit}}.',
+'perfcachedts' => 'Järgmõne teedüs om vaihõmälon. Viimäne vahtsõndamisaig: $2, kell $3. Puhvrin om kooniq {{PLURAL:$4|üts tullõm|$4 tulõmit}}.',
'querypage-no-updates' => 'Taad lehe teedüst parhilla värskis ei tetäq.',
'viewsource' => 'Kaeq lätteteksti',
+'viewsource-title' => 'Lehe $1 lätteteksti kaeminõ',
'actionthrottled' => 'Tallitusõ kibõhus piirõt',
'actionthrottledtext' => "Taa tallitusõ mitmit kõrdo tegemine om prahipandjidõ peräst ärq keelet. Olõt taad lühkü ao seen pall'o hulga tennüq. Prooviq veidükese ao peräst vahtsõst.",
-'protectedpagetext' => 'Taa lehekülg om kirotuskaidsõt.',
+'protectedpagetext' => 'Taa lehekülg om kirotuskaidsõt, taad saa-ai muutaq.',
'viewsourcetext' => 'Võit kaiaq ja kopidaq taa lehe lättekoodi:',
-'protectedinterface' => "Taa lehe pääl om tarkvara pruukjapalgõ tekst. Leht om lukku pant, et taad saasi-i ärq ts'urkiq.",
-'editinginterface' => "'''Hoiatus:''' Sa toimõndat tarkvara pruukjapalgõ tekstiga lehte. Ku siin midä muudat, mõotas tuu pruukjapalõt. Ümbrepandmisõs tasos pruukiq MediaWiki ümbrepandmisõ tüüriista [//translatewiki.net/wiki/Main_Page?setlang=fiu-vro translatewiki.net].",
+'viewyourtext' => "Saat kaiaq ja kopidaq noidõ muutmiisi lätteteksti, miä sa seo lehe pääle '''esiq''' tennüq olõt:",
+'protectedinterface' => "Taa lehe pääl om tarkvara pruukjapalgõ tekst. Leht om lukku pant, et taad saasi-i ärq ts'urkiq.
+Ku tahat tetäq ümbrepandmiisi (midä pruukvaq kõik vikiq) pruugiq tuus MediaWiki ümbrepandmisõ tüükeskkunda [//translatewiki.net/ translatewiki.net].",
+'editinginterface' => "'''Hoiatus:''' Sa toimõndat tarkvara pruukjapalgõ tekstiga lehte. Ku siin midä muudat, mõotas tuu pruukjapalõt. Ümbrepandmisõs tasos pruukiq MediaWiki ümbrepandmisõ tüükeskkunda [//translatewiki.net/ translatewiki.net].",
'cascadeprotected' => 'Taa leht om kirotuskaidsõt, selle et taa {{PLURAL:$1|kuulus alanolõvidõ kaidsõtuidõ lehti hulka|kuulus alanolõvidõ kaidsõtuidõ lehti hulka}}:
$2',
'namespaceprotected' => "Sul olõ-i lubat toimõndaq nimeruumi '''$1''' lehti.",
'createaccount' => 'Tiiq pruukjanimi ärq',
'gotaccount' => "Ku sul jo om uma pruukjanimi, sis '''$1'''.",
'gotaccountlink' => 'võit nimega sisse minnäq',
+'userlogin-resetlink' => 'Kas olõt uma salasõna ärq unõhtanuq?',
'createaccountmail' => 'e-postiga',
'createaccountreason' => 'Põhjus:',
'badretype' => 'Kirotõduq salasõnaq ei klapiq kokko.',
'wrongpassword' => 'Kirotõt võlss salasõna. Prooviq vahtsõst.',
'wrongpasswordempty' => 'Salasõna tohe-i tühi ollaq.',
'passwordtooshort' => "Salasõna om viganõ vai pall'o lühkü. Taan piät olõma vähämbält {{PLURAL:$1|1 märk|$1 märki}} ja taa tohe-i ollaq sama, miä su pruukjanimi.",
-'mailmypassword' => 'Saadaq mullõ e-postiga vahtsõnõ salasõna',
+'mailmypassword' => 'Vahtsõndaq umma salasõnna',
'passwordremindertitle' => '{{SITENAME}} salasõna miildetulõtus',
'passwordremindertext' => 'Kiäki (arvadaq saq esiq, puutri võrgonummõr $1),
pallõl\' vahtsõt sisseminegi salasõnna {{SITENAME}} ($4) jaos.
'bold_tip' => 'Paks kiri',
'italic_sample' => 'Liuhkakiri',
'italic_tip' => 'Liuhkakiri',
-'link_sample' => 'Lingitäv päälkiri',
+'link_sample' => 'Lingi päälkiri',
'link_tip' => 'Siselink',
'extlink_sample' => 'http://www.example.com Lingi nimi',
'extlink_tip' => 'Välislink (unõhtagu-i ette pandaq http://)',
'noarticletext' => 'Seo leht om parlaq tühi.
Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]] tõisi lehti päält vai
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo] vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} puuduolõva leheküle esiq luvvaq]</span>.',
+'noarticletext-nopermission' => 'Seo lehe pääl olõ-õi parlaq teksti.
+Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]] tõisi lehti päält vai
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo]</span>, a sul olõ-õi õigust seod lehte alostaq.',
'userpage-userdoesnotexist' => 'Pruukjanimme "<nowiki>$1</nowiki>" olõ-i kirjä pant. Kaeq perrä, kas olõt iks kimmäs, et tahat taad lehte toimõndaq.',
'userpage-userdoesnotexist-view' => 'Pruukjanimme "$1" olõ-õi kirjä pant.',
'clearyourcache' => "'''Panõq tähele:''' perän pästmist piät muutmiisi nägemises uma võrgokaeja vaihõmälo tühäs tegemä. '''Mozillal / Firofoxil / Safaril''' hoiaq all nõstmisnuppi ''Shift'' ja vaodaq ''Reload'' vai ''Ctrl-R'' (Macil ''Command-R''); Konqueroril vaodaq ''Reload'' vai ''F5''. Operal puhastaq vaihõmälo ja võtaq valikust ''Tools → Preferences''. Internet Exploreril hoiaq ''Ctrl'' ja vaodaq ''Refresh'' vai vaodaq ''ctrl-f5''.",
'userinvalidcssjstitle' => "'''Miildetulõtus:''' Olõ-i stiili nimega \"\$1\". Piäq meelen, et pruukja säedüq .css- and .js-leheq piät nakkama väiku algustähega.",
'updated' => '(Värskis tett)',
'note' => "'''Miildetulõtus:'''",
-'previewnote' => "'''Taa om õnnõ proovikaehus; muutmisõq olõ-i pästedüq!'''",
+'previewnote' => "'''Seo om õnnõ proovikaehus!'''
+Suq tettüq muutmisõq olõ-õi viil pästedüq!",
'previewconflict' => "Taa proovikaehus näütäs, kuis ülembädsen toimõtuskastin ollõv tekst' päält pästmist vällä nägemä nakkas.",
'session_fail_preview' => "'''Annaq andis! Su toimõndust saa-s pästäq, selle et su tüükõrra teedüs om kaoma lännüq. Olõq hää, proomiq viilkõrd. Ku tuust olõ-i kassu, proomiq nii, et läät nime alt vällä ja sis jälq tagasi sisse.'''",
'session_fail_preview_html' => "'''Annaq andis, mi saa-i tallitaq su toimõndust, selle et toimõnduskõrra teedüs om kaoma lännüq.'''
'permissionserrorstext-withaction' => 'Sul olõ-õi lubat {{lcfirst:$2}} {{PLURAL:$1|järgmädsel põhjusõl|järgmäidsil põhjuisil}}:',
'recreate-moveddeleted-warn' => "'''Hoiatus: Sa proovit vahtsõst luvvaq lehte, miä om ärq kistutõt.'''
-Kas tahat taad lehte tõtõstõ toimõndaq? Kaeq ka sissekirotust seo lehe ärqkistutamisõ kotsilõ:",
+Märgiq perrä, kas tahat taad lehte tõtõstõ luvvaq.
+Tan ommaq nätäq seo lehe innembädseq ärqkistutamisõq ja tõistõ paika pandmisõq:",
+'moveddeleted-notice' => 'Seo leht om ärq kistutõt.
+Tan om lehe kistutamiisi ja tõistõ paika pandmiisi nimekiri.',
'edit-conflict' => 'Samaaignõ toimõndus.',
# Parser/template warnings
'post-expand-template-inclusion-warning' => "'''Hoiatus:''' Pruugitavidõ näüdüsside maht om pall'o suur.
Tuuperäst ossa näüdüssit näüdädä-äi.",
'post-expand-template-inclusion-category' => 'Leheküleq, mil om näüdüsside mahupiir ületet',
+'post-expand-template-argument-warning' => "'''Hoiatus:''' Seo lehe pääl om näüdüs, mil vähämbält üts muutuja om määrät pall'o suurõs.
+Sääntseq muutujaq ommaq vaihõlõ jätedüq.",
+'post-expand-template-argument-category' => 'Leheq, kon om näüdüsside seen vaihõlõjätetüisi muutujit',
# "Undo" feature
'undo-success' => "Tagasivõtminõ läts' kõrda. Kaeq üle, kas taa om tuu, midä sa tetäq tahtsõt ja pästäq muutusõq.",
(minev) = lahkominegiq minevädsest kujost, ts = väiku (tsill'okõnõ) muutminõ",
'history-fieldset-title' => 'Kaeq muutmiisi aoluku',
'history-show-deleted' => 'Õnnõ kistutõduq',
-'histfirst' => 'Edimädseq',
-'histlast' => 'Viimädseq',
+'histfirst' => 'Kõgõ vanõmbaq',
+'histlast' => 'Kõgõ vahtsõmbaq',
'historysize' => '({{PLURAL:$1|1 bait|$1 baiti}})',
'historyempty' => '(tühi)',
'revertmerge' => 'Lüüq jälki lahko',
# Diffs
-'history-title' => '"$1" muutmiisi nimekiri',
+'history-title' => 'Lehekülje "$1" muutmiisi aolugu',
'lineno' => 'Rida $1:',
'compareselectedversions' => 'Võrdõlõq valituid kujjõ',
'editundo' => 'võtaq tagasi',
-'diff-multi' => '(Kujjõ vaihõl {{PLURAL:$1|üts näütämäldä muutminõ|$1 näütämäldä muutmist}}.)',
+'diff-multi' => '(Naidõ kujjõ vaihõl om {{PLURAL:$1|üts toimõndus|$1 kujjo, miä ommaq {{PLURAL:$2|üte pruukja tettüq|$2 esiq pruukja tettüq}}}}.)',
# Search results
-'searchresults' => 'Otsmisõ tulõmusõq',
+'searchresults' => 'Otsmisõ tulõmiq',
'searchresults-title' => 'Otsmisõ "$1" tulõmiq',
'titlematches' => "Artiklipäälkir'ost löüt",
'textmatches' => 'Artiklitekstest löüt',
'nextn-title' => '{{PLURAL:$1|Järgmäne tulõmus|Järgmädseq $1 tulõmust}}',
'shown-title' => 'Näütäq lehe kotsilõ $1 {{PLURAL:$1|tulõmus|tulõmust}}',
'viewprevnext' => 'Näütäq ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-exists' => "'''Lehekülg päälkiräga \"[[:\$1]]\" om olõman.''' {{PLURAL:\$2|0=|Kaeq ka tõisi otsmistulõmit.}}",
'searchmenu-new' => "'''Luuq leht päälkiräga \"[[:\$1]]\".'''",
'searchprofile-articles' => 'Sisuleheq',
'searchprofile-project' => 'Abi- ja projektileheq',
Taa tohe-i ollaq rohkõmb ku $1 {{PLURAL:$1|märk|märki}}.",
'email' => 'e-posti aadrõs',
'prefs-help-realname' => "* <strong>Peris nimi</strong> (piä-i kirotama): ku taa teedäq annat, sis pruugitas taad pruukjanime asõmõl lehekülgi tegijide nimekir'on.",
-'prefs-help-email' => 'E-postiaadrõssit piä-i kirotama, a taa lupa tõisil pruukjil sullõ kirotaq ilma su aadrõssit nägemäldäq. Taast om sis kah kassu, ku uma salasõna ärq johtut unõhtama.',
+'prefs-help-email' => 'E-postiaadrõssit piä-i kirotama, a taa lupa sul telliq vahtsõ salasõna, ku uma salasõna ärq johtut unõhtama.',
+'prefs-help-email-others' => 'Nii saavaq ka tõõsõq pruukjaq sullõ kirotaq lingi kaudu su arotuslehe pääl
+ilma, et nä näesiq suq e-posti-aadrõssit.',
'prefs-help-email-required' => 'E-postiaadrõs piät olõma.',
# User rights
'rclistfrom' => 'Näütäq muutmiisi kuupääväst $1 pääle',
'rcshowhideminor' => '$1 väikuq parandusõq',
'rcshowhidebots' => '$1 robodiq',
-'rcshowhideliu' => '$1 nimega pruukjaq',
+'rcshowhideliu' => '$1 nimega pruukjat',
'rcshowhideanons' => '$1 nimeldä pruukjaq',
'rcshowhidepatr' => '$1 kontrolliduq muutmisõq',
'rcshowhidemine' => '$1 mu toimõndusõq.',
'number_of_watching_users_pageview' => '[{{PLURAL:$1|$1 perräkaejat|üts perräkaeja}}]',
'rc_categories' => 'Õnnõ katõgoorijist (eräldedäs märgiga "|")',
'rc_categories_any' => 'Miä taht',
-'rc-enhanced-expand' => 'Näütäq ütsikasjo (nõud JavaScripti)',
+'rc-enhanced-expand' => 'Näütäq ütsikasjo',
'rc-enhanced-hide' => "Käkiq ütsikas'aq ärq",
# Recent changes linked
'listfiles_description' => 'Seletüs',
# File description page
-'file-anchor-link' => 'Pilt',
+'file-anchor-link' => 'Teedüstü',
'filehist' => 'Teedüstü aolugu',
'filehist-help' => "Klõpsaq kuupäävä/kelläao pääl, et nätäq määne taa teedüstü sis oll'.",
'filehist-deleteall' => 'kistudaq kõik ärq',
'protectedpages' => 'Kaidsõduq leheq',
'protectedpagesempty' => 'Olõ-i kaidsõtuid lehti.',
'listusers' => 'Pruukjaq',
+'usercreated' => '{{GENDER:$3|Luud}} $1 kell $2',
'newpages' => 'Vahtsõq leheküleq',
'newpages-username' => 'Pruukjanimi:',
'ancientpages' => 'Kõgõ vanõmbaq leheküleq',
# Special:LinkSearch
'linksearch' => 'Välislingiq',
'linksearch-ok' => 'Otsminõ',
+'linksearch-line' => '$1 on lingit lehekülelt $2',
# Special:ListUsers
'listusersfrom' => 'Näütäq pruukjit alostõn:',
'confirmdeletetext' => 'Sa kistutat teedüskogost periselt ärq lehe vai pildi üten kõgõ timä aoluuga.
Kinnüdäq, et sa tahat tuud tõtõstõ tetäq, et sa saat arvo, miä tuust tullaq või ja et tuu, miä sa tiit, klapis [[{{MediaWiki:Policy-url}}|sisekõrraga]].',
'actioncomplete' => 'Tallitus valmis',
+'actionfailed' => 'Tallitus lää-äs kõrda',
'deletedtext' => '"$1" om ärq kistutõt.
Perämäidsi kistutuisi nimekirjä näet siist: $2.',
'dellogpage' => 'Kistutõduq leheküleq',
# Namespace form on various pages
'namespace' => 'Nimeruum:',
'invert' => 'Näütäq kõiki päält validu nimeruumi',
-'blanknamespace' => '(Artikliq)',
+'blanknamespace' => '(artikliq)',
# Contributions
-'contributions' => 'Pruukja kirotusõq',
+'contributions' => '{{GENDER:$1|Pruukja}} toimõndusõq',
'contributions-title' => 'Pruukja $1 toimõndusõq',
'mycontris' => 'Hindä kirotusõq',
-'contribsub2' => 'Pruukja "$1 ($2)" kirotusõq',
+'contribsub2' => 'Pruukja {{GENDER:$3|$1}} ($2) toimõndusõq',
'nocontribs' => 'Sääntsit muutmiisi es lövväq.',
-'uctop' => '(kõgõ vahtsõmb)',
+'uctop' => '(parhillanõ)',
'month' => 'Alostõn kuust (ja varrampa):',
'year' => 'Alostõn aastagast (ja varrampa):',
'sp-contributions-newbies' => 'Näütäq õnnõ vahtsidõ pruukjidõ toimõnduisi',
'sp-contributions-newbies-sub' => 'Vahtsidõ pruukjidõ toimõndusõq',
'sp-contributions-blocklog' => 'Kinniqpidämisnimekiri',
+'sp-contributions-uploads' => 'üleslaatmisõq',
+'sp-contributions-logs' => 'muutmisnimekiräq',
'sp-contributions-talk' => 'arotus',
'sp-contributions-userrights' => 'Pruukja õiguisi muutminõ',
'sp-contributions-search' => 'Otsiq muutmiisi',
'sp-contributions-username' => 'Puutri võrgoaadrõs vai pruukjanimi:',
+'sp-contributions-toponly' => 'Näütäq õnnõ kõgõ vahtsõmbit toimõnduisi',
'sp-contributions-submit' => 'Otsiq',
# What links here
'nolinkshere-ns' => "Valitun nimeruumin näütä-i ütegi lehe päält linke lehe '''[[:$1]]''' pääle.",
'isredirect' => 'ümbresaatmislehekülg',
'istemplate' => 'pruugit näüdüssen',
-'isimage' => 'pildilink',
+'isimage' => 'teedüstülink',
'whatlinkshere-prev' => '← {{PLURAL:$1|mineväne leht|$1 mineväst lehte}}',
'whatlinkshere-next' => '{{PLURAL:$1|mineväne leht|$1 mineväst lehte}} →',
'whatlinkshere-links' => '← lingiq',
'whatlinkshere-hideredirs' => '$1 ümbresaatmisõq',
'whatlinkshere-hidetrans' => '$1 näüdüsses pruukmisõq',
'whatlinkshere-hidelinks' => '$1 lingiq',
+'whatlinkshere-hideimages' => 'Teedüstülingiq ($1)',
'whatlinkshere-filters' => 'Sõglaq',
# Block/unblock
'blocklink' => 'piäq kinniq',
'unblocklink' => 'võtaq kinniqpidämine maaha',
'change-blocklink' => 'muudaq kinniqpidämist',
-'contribslink' => 'kirotusõq',
+'contribslink' => 'toimõndusõq',
'autoblocker' => 'Olõt automaatsõhe kinniq peet, selle et jaat puutri võrgoaadrõssit pruukjaga $1. Kinniqpidämise põhjus: $2.',
'blocklogpage' => 'Kinniqpidämiisi nimekiri',
'blocklogentry' => 'pidi kinniq pruukja vai puutri võrgoaadrõsi "[[$1]]". Kinniqpidämise tähtaig $2 $3',
'file-info-size' => '$1 × $2 pikslit, $3, MIME-tüüp: $4',
'file-nohires' => 'Taast terävämpä pilti olõ-i saiaq.',
'svg-long-desc' => 'SVG-teedüstü, põhisuurus $1 × $2 pikslit, teedüstü suurus $3',
-'show-big-image' => 'Täüsterräv kujo',
+'show-big-image' => 'Algteedüstü',
# Special:NewFiles
'newimages' => 'Vahtsõq pildiq',
'metadata-help' => 'Seon teedüstün om lisateedüst, miä om arvadaq peri pildinudsijast, digikaamõrast vai pilditoimõndusprogrammist. Ku teedüstüt om peräst timä tegemist muudõt, sis pruugi-i taa teedüs inämb õigõ ollaq.',
'metadata-expand' => 'Näütäq kõiki sisuseletüisi',
'metadata-collapse' => 'Näütäq õnnõ tähtsämbit sisuseletüisi',
-'metadata-fields' => 'Naaq riaq ommaq nätäq pildilehe pääl, ku sisuseletüse tapõl om tühi.
+'metadata-fields' => 'Naid pildi metateedüse väljo näüdätäs pildi seletüslehe vähändedün kahusõn. Ülejäänüq teedüs om vaikimiisi käkit.
* make
* model
* datetimeoriginal
* imagedescription
* gpslatitude
* gpslongitude
+* gpsaltitude
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
* gpsaltitude',
# Exif tags
'watchlisttools-edit' => 'Kaeq ja toimõndaq perräkaemisnimekirjä',
'watchlisttools-raw' => 'Toimõndaq lätteteedüstüt',
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'Hoiatus:\'\'\' Sortmisvõti "$2" tühistäs ärq innembädse sortmisvõtmõ "$1".',
+
# Special:Version
'version' => 'Kujo',
'version-version' => '(Kujo $1)',
'specialpages-group-wiki' => 'Vikiteedüseq ja tüüriistaq',
'specialpages-group-redirects' => 'Ümbrenäütämistallitusleheq',
+# External image whitelist
+'external_image_whitelist' => ' #Jätäq seo rida muutmalda kujo pääle<pre>
+#Panõq regulaaravaldusõ osaq (õnnõ //-märke vaihõl ollõv jago) allapoolõ
+#Naaq pandasõq vastama vikivälitside pilte internetiaadrõssidõga
+#Nuuq, miä vastasõq, näüdätäseq ku pildiq, muido näüdätäs õnnõ pildi link
+#Märgiga # päälenakkajaq riaq ommaq kommõntaariq
+#Seo tii-i vaiht suuril ja väikeisil tähil
+
+#Panõq kõik regulaaravaldusq osaq seo joonõ kotsilõ. Jätäq seo rida muutmalda</pre>',
+
+# Special:Tags
+'tag-filter' => '[[Special:Tags|Märkmisfiltri]]:',
+
# New logging system
'rightsnone' => '(olõ-i õiguisi)',
'yourdomainname' => 'Domain yín:',
'password-change-forbidden' => 'Ẹ kò le ṣe ìyípadà ọ̀rọ̀ìpamọ́ lórí wiki yìí.',
'externaldberror' => 'Bóyá àsìṣe ìfidájú ibùdó dátà ló ṣẹlẹ̀ tàbí ẹ kò jẹ́ gbígbà ní ààyè láti sọ àpamọ́ òde yín di ọ̀tun.',
-'login' => 'Ìwọlé',
+'login' => 'Ìjáwọlé',
'nav-login-createaccount' => 'Ìwọlé / Ìforúkọ sílẹ̀',
'loginprompt' => 'Ẹ gbọ́dọ̀ jọ̀wọ́ cookies láti wọlé sí {{SITENAME}}.',
'userlogin' => 'Ìwọlé / ìforúkọ sílẹ̀',
-'userloginnocreate' => 'Ìwọlé',
+'userloginnocreate' => 'Ìjáwọlé',
'logout' => 'Ìjáde',
'userlogout' => 'Ìjáde',
'notloggedin' => "Ẹ kò tí w'ọlé",
'nosuchsectiontext' => 'Ẹ ti gbìyànjú láti ṣàtúnṣe abala tí kòsí.
Ó ti le jẹ́ yíyípò tàbí píparẹ́ nígbà tí ẹ ún bojúwo ojúewé náà.',
'loginreqtitle' => "Ẹ gbọ́dọ̀ kọ́kọ́ w'ọlé ná",
-'loginreqlink' => 'wọlé',
+'loginreqlink' => 'jáwọlé',
'loginreqpagetext' => 'Ẹ gbọ́dọ̀ $1 láti wo àwọn ojúewé míràn.',
'accmailtitle' => 'Ti fi ọ̀rọ̀ìpamọ́ ránṣẹ́.',
'accmailtext' => "A ti fi ọ̀rọ̀ìpamọ́ àrìnàkò tí a pèsè fún [[User talk:$1|$1]] ránṣẹ́ sí $2. Ẹ le ṣe àyípadà ọ̀rọ̀ìpamọ́ fún àpamọ́ tuntun yìí ní ibi ''[[Special:ChangePassword|àyípadà ọ̀rọ̀ìpamọ́]]'' lẹ́yìn tí ẹ bá ti jáwọlé.",
'revdelete-hide-user' => 'Orúkọ oníṣe/àdírẹ́ẹ̀sì IP olùtúnṣe',
'revdelete-hide-restricted' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
'revdelete-radio-same' => '(láì yípadà)',
-'revdelete-radio-set' => 'Híhàn',
-'revdelete-radio-unset' => 'Bíbòmọ́lẹ̀',
+'revdelete-radio-set' => 'Bíbòmọ́lẹ̀',
+'revdelete-radio-unset' => 'Híhàn',
'revdelete-suppress' => 'Ìbòmọ́lẹ̀ àwọn ìpèsè ti àwọn alámùójútó àti ti àwọn yìókù',
'revdelete-unsuppress' => 'Ìyọkúrò àlà sí àwọn àtúnyẹ̀wò àdápadà',
'revdelete-log' => 'Ìdíẹ̀:',
'compareselectedversions' => 'Ìfiwéra àwọn àtúnṣe ìṣàyàn',
'showhideselectedversions' => 'Ìfihàn/ìbòmọ́lẹ̀ àwọn àtúnyẹ̀wò ṣíṣàyàn',
'editundo' => 'dápadà',
+'diff-empty' => '(Kò ní yàtọ̀)',
'diff-multi' => '({{PLURAL:$1|Àtúnyẹ̀wò inú àrin kan|Àwọn àtúnyẹ̀wò inú àrin $1}} látọwọ́ {{PLURAL:$2|oníṣe kan|àwọn oníṣe $2}} kò jẹ́ fífihàn)',
'diff-multi-manyusers' => '({{PLURAL:$1|Àtúnyẹ̀wò inú àrin kan|Àwọn àtúnyẹ̀wò inú àrin $1}} látọwọ́ {{PLURAL:$2|oníṣe|àwọn oníṣe}} tó pọ̀ju $2 lọ kò jẹ́ fífihàn)',
'difference-missing-revision' => '{{PLURAL:$2|Àtúnyẹ̀wò kan|Àwọn àtúnyẹ̀wò $2}} ìyàtọ̀ yìí ($1) kò {{PLURAL:$2|sí|sí}}.
'searchdisabled' => 'Ṣíṣàwárí nínú {{SITENAME}} wà ní dídálẹ́kun.
Ní báyìí ná ẹ le ṣàwárí lọ́dọ̀ Google.
Àkíyèsí pé àwọn atọ́ka wọn fún àkóónú {{SITENAME}} le mọ́ jẹ́ tuntun.',
+'search-error' => 'Àṣìṣe ṣẹlẹ̀ fún ìwárí: $1',
# Preferences page
'preferences' => 'Àwọn ìfẹ́ràn',
'mypreferences' => 'Àwọn ìfẹ́ràn',
'prefs-edits' => 'Iye àwọn àtúnṣe:',
+'prefsnologintext2' => 'Ẹ jọ̀wọ́ ẹ $1 láti ṣe ìyípadà àwọn ìfẹ́ràn yín.',
'prefs-skin' => 'Skin (Àwọ̀)',
'skin-preview' => 'Àkọ́yẹ̀wò',
'datedefault' => 'Kò sí ìfẹ́ràn',
'prefs-dateformat' => 'Irú ọjọ́ọdún',
'prefs-timeoffset' => 'Ìyàtọ̀ àsìkò',
'prefs-advancedediting' => 'Àwọn àṣàyàn gíga',
+'prefs-editor' => 'Olùṣàtúnṣe',
+'prefs-preview' => 'Àkọ́yẹ̀wò',
'prefs-advancedrc' => 'Àwọn àṣàyàn onígíga',
'prefs-advancedrendering' => 'Àwọn àṣàyàn onígíga',
'prefs-advancedsearchoptions' => 'Àwọn àṣàyàn onígíga',
# Recent changes
'nchanges' => '{{PLURAL:$1|àtúnṣe|àwọn àtúnṣe}} $1',
+'enhancedrc-history' => 'ìtàn',
'recentchanges' => 'Àwọn àtúnṣe tuntun',
'recentchanges-legend' => 'Àwọn àṣàyàn fún àtúnṣe tuntun',
'recentchanges-summary' => 'Ẹ tẹ̀ lé àwọn àtúnṣe tuntun sí wiki lórí ojúewé yìí.',
'recentchanges-label-minor' => 'Àtùnṣe kékeré nìyí',
'recentchanges-label-bot' => 'Rọ́bọ́ọ̀tì ni ó ṣe àtúnṣe yìí',
'recentchanges-label-unpatrolled' => 'Àtúnṣe yìí kò tí ì jẹ́ onísíṣọ́',
-'recentchanges-legend-newpage' => '$1 - ojúewé tuntun',
+'recentchanges-label-plusminus' => 'Iye bytes àtúnṣe sí ìtóbi ojúewé',
+'recentchanges-legend-heading' => "'''Ìtumọ̀:'''",
+'recentchanges-legend-newpage' => '(ẹ tún wo [[Special:NewPages|àtòjọ àwọn ojúewé tuntun]])',
'rcnotefrom' => "Àwọn àtúnṣe láti ''''$2''' (títí dé '''$1''' hàn) lábẹ́.",
'rclistfrom' => 'Àfihàn àwọn àtúnṣe tuntun nípa bíbẹ̀rẹ̀ láti $1',
'rcshowhideminor' => '$1 àwọn àtúnṣe kékéèké',
'rcshowhidebots' => '$1 àwọn bot',
-'rcshowhideliu' => '$1 àwọn oníṣe tótiwọlé',
+'rcshowhideliu' => '$1 àwọn oníṣe aforúkọsílẹ̀',
'rcshowhideanons' => '$1 àwọn oníṣe aláìlórúkọ',
'rcshowhidepatr' => '$1 àwọn àtúnṣe ọlùṣọ́',
'rcshowhidemine' => '$1 àwọn àtúnṣe mi',
'reuploaddesc' => 'Fagilé ìrùsókè kí ó tó padà sí fọ́ọ̀mù ìrùsókè',
'upload-tryagain' => 'Ìkóólẹ̀ fáìlì ìjúwe aláàtúnṣe',
'uploadnologin' => 'Ẹ kò tíì wọlé',
-'uploadnologintext' => 'Ẹ gbọ́dọ̀ [[Special:UserLogin|wọlè]] láti ṣe ìrùsókè faili.',
+'uploadnologintext' => 'Ẹ jọ̀wọ́ ẹ $1 láti ṣe ìrùsókè fáìlì.',
'upload_directory_missing' => 'Àpò ìrùsókè ($1) kòsí bẹ́ẹ̀sìni kò le jẹ́ dídá látọwọ́ ẹ̀rọ-ìwọ̀fà.',
'upload_directory_read_only' => 'Àpò ìrùsókè ($1) kò ṣeékọ sí nínú látọwọ́ ẹ̀rọ-ìwọ̀fà.',
'uploaderror' => 'Àsìse ìrùsókè',
'listfiles_size' => 'Ìtóbi',
'listfiles_description' => 'Ìjúwe',
'listfiles_count' => 'Àwọn àtẹ̀jáde',
+'listfiles-latestversion-yes' => 'Bẹ́ẹ̀ni',
+'listfiles-latestversion-no' => 'Bẹ́ẹ̀kọ́',
# File description page
'file-anchor-link' => 'Fáìlì',
'imgmultigo' => 'Lọ!',
'imgmultigoto' => 'Lọ sí ojúewé $1',
+# Language selector for translatable SVGs
+'img-lang-default' => '(èdè látìbẹ̀rẹ̀)',
+
# Table pager
'ascending_abbrev' => 'ròkè',
'descending_abbrev' => 'relẹ̀',
# Image rotation
'rotate-comment' => 'Àwòrán jẹ́ mímúyípo ní {{PLURAL:$1|degree|ìyí}} $1 bíi ọwọ́ ago',
+# Special:ExpandTemplates
+'expand_templates_preview' => 'Àkọ́yẹ̀wò',
+
);
'nviews' => '$1次浏览',
'nimagelinks' => '用于$1个页面中',
'ntransclusions' => '用于$1个页面中',
-'specialpage-empty' => 'æ\97 该æ\8a¥å\91\8aç\9a\84结果。',
+'specialpage-empty' => 'æ¤æ\8a¥å\91\8aæ\97 结果。',
'lonelypages' => '孤立页面',
'lonelypagestext' => '以下页面没有被{{SITENAME}}的其它页面链接或包含。',
'uncategorizedpages' => '未归类页面',
'delete-edit-reasonlist' => '编辑删除原因',
'delete-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除此类页面的动作已经被限制,以防止在{{SITENAME}}上的意外扰乱。',
'delete-warning-toobig' => '这个页面有一个十分大量的编辑历史,超过$1次修订。删除它可能会扰乱{{SITENAME}}的数据库操作;在继续此动作前请小心。',
+'deleting-backlinks-warning' => "'''警告:'''有其他页面链接到你要删除的页面。",
# Rollback
'rollback' => '回退编辑',
'delete-edit-reasonlist' => '編輯刪除理由',
'delete-toobig' => '這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除此類頁面的動作已經被限制,以防止在{{SITENAME}}上的意外擾亂。',
'delete-warning-toobig' => '這個頁面有一個十分大量的編輯歷史,超過$1次修訂。刪除它可能會擾亂{{SITENAME}}的資料庫操作;在繼續此動作前請小心。',
+'deleting-backlinks-warning' => "'''警告:'''您要刪除的頁面有其他頁面連接至此。",
# Rollback
'rollback' => '回退編輯',
// Autodetect mode...
$backgroundMode = wfGetLB()->getServerCount() > 1 ||
- ( $dbw instanceof DatabaseMysql && version_compare( $dbver, '4.1' ) < 0 );
+ ( $dbw instanceof DatabaseMysql );
if ( $this->hasOption( 'background' ) ) {
$backgroundMode = true;
'signupstart',
'signupend',
'signupend-https',
+ 'emailsender',
'sitenotice',
'sitesubtitle',
'sitetitle',
'invalidemailaddress',
'cannotchangeemail',
'emaildisabled',
+ 'emailsender',
'accountcreated',
'accountcreatedtext',
'createaccount-title',
'protectedpages-indef',
'protectedpages-summary',
'protectedpages-cascade',
+ 'protectedpages-noredirect',
'protectedpagesempty',
'protectedtitles',
'protectedtitles-summary',
'delete-edit-reasonlist',
'delete-toobig',
'delete-warning-toobig',
+ 'deleting-backlinks-warning',
),
'rollback' => array(
'rollback',
'api-error-overwrite',
'api-error-stashfailed',
'api-error-publishfailed',
+ 'api-error-stasherror',
'api-error-timeout',
'api-error-unclassified',
'api-error-unknown-code',
$blacklist = array_keys( $backoffs );
$job = $group->pop( JobQueueGroup::TYPE_DEFAULT, $flags, $blacklist );
} else {
- $group->pop( $type ); // job from a single queue
+ $job = $group->pop( $type ); // job from a single queue
}
if ( $job ) { // found a job
++$jobsRun;
$totalRevs = $dbr->selectField( 'text', 'MAX(old_id)', false, __METHOD__ );
- if ( $dbr->getType() == 'mysql'
- && version_compare( $dbr->getServerVersion(), '4.1.0', '>=' )
- ) {
+ if ( $dbr->getType() == 'mysql' ) {
// In MySQL 4.1+, the binary field old_text has a non-working LOWER() function
$lowerLeft = 'LOWER(CONVERT(LEFT(old_text,22) USING latin1))';
- } else {
- // No CONVERT() in MySQL 4.0
- $lowerLeft = 'LOWER(LEFT(old_text,22))';
}
while ( true ) {
'messages' => array( 'htmlform-chosen-placeholder' ),
),
'mediawiki.icon' => array(
- 'styles' => 'resources/mediawiki/mediawiki.icon.css',
+ 'styles' => 'resources/mediawiki/mediawiki.icon.less',
),
'mediawiki.inspect' => array(
'scripts' => 'resources/mediawiki/mediawiki.inspect.js',
'styles' => 'resources/mediawiki.action/mediawiki.action.edit.collapsibleFooter.css',
'dependencies' => array(
'jquery.makeCollapsible',
+ 'jquery.cookie',
'mediawiki.icon',
),
),
/**
* Checks the current browser against a support map object.
*
+ * Version numbers passed as numeric values will be compared like numbers (1.2 > 1.11).
+ * Version numbers passed as string values will be compared using a simple component-wise
+ * algorithm, similar to PHP's version_compare ('1.2' < '1.11').
+ *
* A browser map is in the following format:
* {
* // Multiple rules with configurable operators
test: function ( map, profile, exactMatchOnly ) {
/*jshint evil: true */
- var conditions, dir, i, op, val;
+ var conditions, dir, i, op, val, j, pieceVersion, pieceVal, compare;
profile = $.isPlainObject( profile ) ? profile : $.client.profile();
if ( map.ltr && map.rtl ) {
dir = $( 'body' ).is( '.rtl' ) ? 'rtl' : 'ltr';
op = conditions[i][0];
val = conditions[i][1];
if ( typeof val === 'string' ) {
- if ( !( eval( 'profile.version' + op + '"' + val + '"' ) ) ) {
+ // Perform a component-wise comparison of versions, similar to PHP's version_compare
+ // but simpler. '1.11' is larger than '1.2'.
+ pieceVersion = profile.version.toString().split( '.' );
+ pieceVal = val.split( '.' );
+ // Extend with zeroes to equal length
+ while ( pieceVersion.length < pieceVal.length ) {
+ pieceVersion.push( '0' );
+ }
+ while ( pieceVal.length < pieceVersion.length ) {
+ pieceVal.push( '0' );
+ }
+ // Compare components
+ compare = 0;
+ for ( j = 0; j < pieceVersion.length; j++ ) {
+ if ( Number( pieceVersion[j] ) < Number( pieceVal[j] ) ) {
+ compare = -1;
+ break;
+ } else if ( Number( pieceVersion[j] ) > Number( pieceVal[j] ) ) {
+ compare = 1;
+ break;
+ }
+ }
+ // compare will be -1, 0 or 1, depending on comparison result
+ if ( !( eval( '' + compare + op + '0' ) ) ) {
return false;
}
} else if ( typeof val === 'number' ) {
// update from from the ajax-loaded preview page.
copySelectors = [
// Main
+ '#firstHeading',
'#wikiPreview',
'#wikiDiff',
'#catlinks',
$spinner = $.createSpinner( {
size: 'large',
type: 'block'
- });
+ } );
$wikiPreview.before( $spinner );
$spinner.css( {
marginTop: $spinner.height()
-/* This is cldrpluralparser 1.0, ported to MediaWiki ResourceLoader */
+/* This is CLDRPluralRuleParser v1.1, ported to MediaWiki ResourceLoader */
/**
-* cldrpluralparser.js
+* CLDRPluralRuleParser.js
* A parser engine for CLDR plural rules.
*
* Copyright 2012 GPLV3+, Santhosh Thottingal
* @author Amir Aharoni
*/
+( function ( mw ) {
/**
* Evaluates a plural rule in CLDR syntax for a number
- * @param rule
- * @param number
- * @return true|false|null
+ * @param {string} rule
+ * @param {integer} number
+ * @return {boolean} true if evaluation passed, false if evaluation failed.
*/
-( function( mw ) {
function pluralRuleParser(rule, number) {
/*
Syntax: see http://unicode.org/reports/tr35/#Language_Plural_Rules
-----------------------------------------------------------------
-
condition = and_condition ('or' and_condition)*
+ ('@integer' samples)?
+ ('@decimal' samples)?
and_condition = relation ('and' relation)*
- relation = is_relation | in_relation | within_relation | 'n' <EOL>
+ relation = is_relation | in_relation | within_relation
is_relation = expr 'is' ('not')? value
- in_relation = expr ('not')? 'in' range_list
+ in_relation = expr (('not')? 'in' | '=' | '!=') range_list
within_relation = expr ('not')? 'within' range_list
- expr = 'n' ('mod' value)?
+ expr = operand (('mod' | '%') value)?
+ operand = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
range_list = (range | value) (',' range_list)*
value = digit+
digit = 0|1|2|3|4|5|6|7|8|9
range = value'..'value
-
+ samples = sampleRange (',' sampleRange)* (',' ('…'|'...'))?
+ sampleRange = decimalValue '~' decimalValue
+ decimalValue = value ('.' value)?
*/
+
+ // we don't evaluate the samples section of the rule. Ignore it.
+ rule = rule.split('@')[0].trim();
+
+ if (!rule.length) {
+ // empty rule or 'other' rule.
+ return true;
+ }
// Indicates current position in the rule as we parse through it.
// Shared among all parsing functions below.
- var pos = 0;
-
- var whitespace = makeRegexParser(/^\s+/);
- var digits = makeRegexParser(/^\d+/);
-
- var _n_ = makeStringParser('n');
- var _is_ = makeStringParser('is');
- var _mod_ = makeStringParser('mod');
- var _not_ = makeStringParser('not');
- var _in_ = makeStringParser('in');
- var _within_ = makeStringParser('within');
- var _range_ = makeStringParser('..');
- var _comma_ = makeStringParser(',');
- var _or_ = makeStringParser('or');
- var _and_ = makeStringParser('and');
+ var pos = 0,
+ operand,
+ expression,
+ relation,
+ result,
+ whitespace = makeRegexParser(/^\s+/),
+ value = makeRegexParser(/^\d+/),
+ _n_ = makeStringParser('n'),
+ _i_ = makeStringParser('i'),
+ _f_ = makeStringParser('f'),
+ _t_ = makeStringParser('t'),
+ _v_ = makeStringParser('v'),
+ _w_ = makeStringParser('w'),
+ _is_ = makeStringParser('is'),
+ _isnot_ = makeStringParser('is not'),
+ _isnot_sign_ = makeStringParser('!='),
+ _equal_ = makeStringParser('='),
+ _mod_ = makeStringParser('mod'),
+ _percent_ = makeStringParser('%'),
+ _not_ = makeStringParser('not'),
+ _in_ = makeStringParser('in'),
+ _within_ = makeStringParser('within'),
+ _range_ = makeStringParser('..'),
+ _comma_ = makeStringParser(','),
+ _or_ = makeStringParser('or'),
+ _and_ = makeStringParser('and');
function debug() {
- /* console.log.apply(console, arguments);*/
+ // console.log.apply(console, arguments);
}
debug('pluralRuleParser', rule, number);
// Try parsers until one works, if none work return null
+
function choice(parserSyntax) {
- return function () {
+ return function() {
for (var i = 0; i < parserSyntax.length; i++) {
var result = parserSyntax[i]();
if (result !== null) {
// Try several parserSyntax-es in a row.
// All must succeed; otherwise, return null.
// This is the only eager one.
+
function sequence(parserSyntax) {
var originalPos = pos;
var result = [];
// Run the same parser over and over until it fails.
// Must succeed a minimum of n times; otherwise, return null.
+
function nOrMore(n, p) {
- return function () {
+ return function() {
var originalPos = pos;
var result = [];
var parsed = p();
}
// Helpers -- just make parserSyntax out of simpler JS builtin types
-
function makeStringParser(s) {
var len = s.length;
- return function () {
+ return function() {
var result = null;
if (rule.substr(pos, len) === s) {
result = s;
pos += len;
}
+
return result;
};
}
function makeRegexParser(regex) {
- return function () {
+ return function() {
var matches = rule.substr(pos).match(regex);
if (matches === null) {
return null;
};
}
+ /*
+ * integer digits of n.
+ */
+ function i() {
+ var result = _i_();
+ if (result === null) {
+ debug(' -- failed i', parseInt(number, 10));
+ return result;
+ }
+ result = parseInt(number, 10);
+ debug(' -- passed i ', result);
+ return result;
+ }
+
+ /*
+ * absolute value of the source number (integer and decimals).
+ */
function n() {
var result = _n_();
if (result === null) {
- debug(" -- failed n");
+ debug(' -- failed n ', number);
return result;
}
- result = parseInt(number, 10);
- debug(" -- passed n ", result);
+ result = parseFloat(number, 10);
+ debug(' -- passed n ', result);
+ return result;
+ }
+
+ /*
+ * visible fractional digits in n, with trailing zeros.
+ */
+ function f() {
+ var result = _f_();
+ if (result === null) {
+ debug(' -- failed f ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1] || 0;
+ debug(' -- passed f ', result);
+ return result;
+ }
+
+ /*
+ * visible fractional digits in n, without trailing zeros.
+ */
+ function t() {
+ var result = _t_();
+ if (result === null) {
+ debug(' -- failed t ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1].replace(/0$/, '') || 0;
+ debug(' -- passed t ', result);
+ return result;
+ }
+
+ /*
+ * number of visible fraction digits in n, with trailing zeros.
+ */
+ function v() {
+ var result = _v_();
+ if (result === null) {
+ debug(' -- failed v ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1].length || 0;
+ debug(' -- passed v ', result);
+ return result;
+ }
+
+ /*
+ * number of visible fraction digits in n, without trailing zeros.
+ */
+ function w() {
+ var result = _w_();
+ if (result === null) {
+ debug(' -- failed w ', number);
+ return result;
+ }
+ result = (number + '.').split('.')[1].replace(/0$/, '').length || 0;
+ debug(' -- passed w ', result);
return result;
}
- var expression = choice([mod, n]);
+ // operand = 'n' | 'i' | 'f' | 't' | 'v' | 'w'
+ operand = choice([n, i, f, t, v, w]);
+
+ // expr = operand (('mod' | '%') value)?
+ expression = choice([mod, operand]);
function mod() {
- var result = sequence([n, whitespace, _mod_, whitespace, digits]);
+ var result = sequence([operand, whitespace, choice([_mod_, _percent_]), whitespace, value]);
if (result === null) {
- debug(" -- failed mod");
+ debug(' -- failed mod');
return null;
}
- debug(" -- passed mod");
+ debug(' -- passed ' + parseInt(result[0], 10) + ' ' + result[2] + ' ' + parseInt(result[4], 10));
return parseInt(result[0], 10) % parseInt(result[4], 10);
}
function not() {
var result = sequence([whitespace, _not_]);
if (result === null) {
- debug(" -- failed not");
+ debug(' -- failed not');
return null;
- } else {
- return result[1];
}
+
+ return result[1];
}
+ // is_relation = expr 'is' ('not')? value
function is() {
- var result = sequence([expression, whitespace, _is_, nOrMore(0, not), whitespace, digits]);
+ var result = sequence([expression, whitespace, choice([_is_]), whitespace, value]);
if (result !== null) {
- debug(" -- passed is");
- if (result[3][0] === 'not') {
- return result[0] !== parseInt(result[5], 10);
- } else {
- return result[0] === parseInt(result[5], 10);
+ debug(' -- passed is : ' + result[0] + ' == ' + parseInt(result[4], 10));
+ return result[0] === parseInt(result[4], 10);
+ }
+ debug(' -- failed is');
+ return null;
+ }
+
+ // is_relation = expr 'is' ('not')? value
+ function isnot() {
+ var result = sequence([expression, whitespace, choice([_isnot_, _isnot_sign_]), whitespace, value]);
+ if (result !== null) {
+ debug(' -- passed isnot: ' + result[0] + ' != ' + parseInt(result[4], 10));
+ return result[0] !== parseInt(result[4], 10);
+ }
+ debug(' -- failed isnot');
+ return null;
+ }
+
+ function not_in() {
+ var result = sequence([expression, whitespace, _isnot_sign_, whitespace, rangeList]);
+ if (result !== null) {
+ debug(' -- passed not_in: ' + result[0] + ' != ' + result[4]);
+ var range_list = result[4];
+ for (var i = 0; i < range_list.length; i++) {
+ if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
+ return false;
+ }
}
+ return true;
}
- debug(" -- failed is");
+ debug(' -- failed not_in');
return null;
}
+ // range_list = (range | value) (',' range_list)*
function rangeList() {
- // range_list = (range | value) (',' range_list)*
- var result = sequence([choice([range, digits]), nOrMore(0, rangeTail)]);
+ var result = sequence([choice([range, value]), nOrMore(0, rangeTail)]);
var resultList = [];
if (result !== null) {
- resultList = resultList.concat(result[0], result[1][0]);
+ resultList = resultList.concat(result[0]);
+ if (result[1][0]) {
+ resultList = resultList.concat(result[1][0]);
+ }
return resultList;
}
- debug(" -- failed rangeList");
+ debug(' -- failed rangeList');
return null;
}
if (result !== null) {
return result[1];
}
- debug(" -- failed rangeTail");
+ debug(' -- failed rangeTail');
return null;
}
+ // range = value'..'value
+
function range() {
var i;
- var result = sequence([digits, _range_, digits]);
+ var result = sequence([value, _range_, value]);
if (result !== null) {
- debug(" -- passed range");
+ debug(' -- passed range');
var array = [];
var left = parseInt(result[0], 10);
var right = parseInt(result[2], 10);
- for ( i = left; i <= right; i++) {
+ for (i = left; i <= right; i++) {
array.push(i);
}
return array;
}
- debug(" -- failed range");
+ debug(' -- failed range');
return null;
}
function _in() {
// in_relation = expr ('not')? 'in' range_list
- var result = sequence([expression, nOrMore(0, not), whitespace, _in_, whitespace, rangeList]);
+ var result = sequence([expression, nOrMore(0, not), whitespace, choice([_in_, _equal_]), whitespace, rangeList]);
if (result !== null) {
- debug(" -- passed _in");
+ debug(' -- passed _in:' + result);
var range_list = result[5];
for (var i = 0; i < range_list.length; i++) {
- if (parseInt(range_list[i], 10) === result[0]) {
+ if (parseInt(range_list[i], 10) === parseInt(result[0], 10)) {
return (result[1][0] !== 'not');
}
}
return (result[1][0] === 'not');
}
- debug(" -- failed _in ");
+ debug(' -- failed _in ');
return null;
}
+ /*
+ * The difference between in and within is that in only includes integers in the specified range,
+ * while within includes all values.
+ */
+
function within() {
- var result = sequence([expression, whitespace, _within_, whitespace, rangeList]);
+ // within_relation = expr ('not')? 'within' range_list
+ var result = sequence([expression, nOrMore(0, not), whitespace, _within_, whitespace, rangeList]);
if (result !== null) {
- debug(" -- passed within ");
- var range_list = result[4];
- return (parseInt( range_list[0],10 )<= result[0] && result[0] <= parseInt( range_list[1], 10));
+ debug(' -- passed within');
+ var range_list = result[5];
+ if ((result[0] >= parseInt(range_list[0], 10)) &&
+ (result[0] < parseInt(range_list[range_list.length - 1], 10))) {
+ return (result[1][0] !== 'not');
+ }
+ return (result[1][0] === 'not');
}
- debug(" -- failed within ");
+ debug(' -- failed within ');
return null;
}
+ // relation = is_relation | in_relation | within_relation
+ relation = choice([is, not_in, isnot, _in, within]);
- var relation = choice([is, _in, within]);
-
+ // and_condition = relation ('and' relation)*
function and() {
- var result = sequence([relation, whitespace, _and_, whitespace, condition]);
+ var result = sequence([relation, nOrMore(0, andTail)]);
if (result) {
- debug(" -- passed and");
- return result[0] && result[4];
+ if (!result[0]) {
+ return false;
+ }
+ for (var i = 0; i < result[1].length; i++) {
+ if (!result[1][i]) {
+ return false;
+ }
+ }
+ return true;
}
- debug(" -- failed and");
+ debug(' -- failed and');
return null;
}
- function or() {
- var result = sequence([relation, whitespace, _or_, whitespace, condition]);
- if (result) {
- debug(" -- passed or");
- return result[0] || result[4];
+ // ('and' relation)*
+ function andTail() {
+ var result = sequence([whitespace, _and_, whitespace, relation]);
+ if (result !== null) {
+ debug(' -- passed andTail' + result);
+ return result[3];
}
- debug(" -- failed or");
+ debug(' -- failed andTail');
return null;
- }
- var condition = choice([and, or, relation]);
+ }
+ // ('or' and_condition)*
+ function orTail() {
+ var result = sequence([whitespace, _or_, whitespace, and]);
+ if (result !== null) {
+ debug(' -- passed orTail: ' + result[3]);
+ return result[3];
+ }
+ debug(' -- failed orTail');
+ return null;
- function isInt(n) {
- return parseFloat(n) % 1 === 0;
}
+ // condition = and_condition ('or' and_condition)*
+ function condition() {
+ var result = sequence([and, nOrMore(0, orTail)]);
+ if (result) {
+ for (var i = 0; i < result[1].length; i++) {
+ if (result[1][i]) {
+ return true;
+ }
+ }
+ return result[0];
- function start() {
- if (!isInt(number)) {
- return false;
}
- var result = condition();
- return result;
+ return false;
}
-
- var result = start();
-
+ result = condition();
/*
* For success, the pos must have gotten to the end of the rule
* and returned a non-null.
* n.b. This is part of language infrastructure, so we do not throw an internationalizable message.
*/
- if (result === null || pos !== rule.length) {
- // throw new Error("Parse error at position " + pos.toString() + " in input: " + rule + " result is " + result);
+ if (result === null) {
+ throw new Error('Parse error at position ' + pos.toString() + ' for rule: ' + rule);
}
- return result;
-}
+ if (pos !== rule.length) {
+ debug('Warning: Rule not parsed completely. Parser stopped at ' + rule.substr(0, pos) + ' for rule: ' + rule);
+ }
-/* For module loaders, e.g. NodeJS, NPM */
-if (typeof module !== 'undefined' && module.exports) {
- module.exports = pluralRuleParser;
+ return result;
}
/* pluralRuleParser ends here */
--- /dev/null
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12"><path d="M4 1.533v9.671l4.752-4.871z" fill="#797979"/></svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12"><path d="M8 1.533v9.671l-4.752-4.871z" fill="#797979"/></svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="12" height="12"><path d="M1.165 3.624h9.671l-4.871 4.752z" fill="#797979"/></svg>
\ No newline at end of file
+++ /dev/null
-/* General-purpose icons via CSS. Classes here should be named "mw-icon-*". */
-
-/* For the collapsed and expanded arrows, we also provide selectors to make it
- * easy to use them with jquery.makeCollapsible. */
-.mw-icon-arrow-collapsed,
-.mw-collapsible-arrow.mw-collapsible-toggle-collapsed {
- /* @embed */
- background: url(images/arrow-collapsed-ltr.png) no-repeat left bottom;
-}
-
-.mw-icon-arrow-expanded,
-.mw-collapsible-arrow.mw-collapsible-toggle-expanded {
- /* @embed */
- background: url(images/arrow-expanded.png) no-repeat left bottom;
-}
--- /dev/null
+/* General-purpose icons via CSS. Classes here should be named "mw-icon-*". */
+
+@import "mediawiki.mixins";
+
+/* For the collapsed and expanded arrows, we also provide selectors to make it
+ * easy to use them with jquery.makeCollapsible. */
+.mw-icon-arrow-collapsed,
+.mw-collapsible-arrow.mw-collapsible-toggle-collapsed {
+ .background-image-svg('images/arrow-collapsed-ltr.svg', 'images/arrow-collapsed-ltr.png');
+ background-repeat: no-repeat;
+ background-position: left bottom;
+}
+
+.mw-icon-arrow-expanded,
+.mw-collapsible-arrow.mw-collapsible-toggle-expanded {
+ .background-image-svg('images/arrow-expanded.svg', 'images/arrow-expanded.png');
+ background-repeat: no-repeat;
+ background-position: left bottom;
+}
JSON.stringify( descriptor.style ),
JSON.stringify( descriptor.messages )
];
+ // Attempted workaround for a possible Opera bug (bug 57567).
+ // This regex should never match under sane conditions.
+ if ( /^\s*\(/.test( args[1] ) ) {
+ args[1] = 'function' + args[1];
+ log( 'Detected malformed function stringification (bug 57567)' );
+ }
} catch ( e ) {
return;
}
+++ /dev/null
-*
-!cologneblue
-!CologneBlue.php
-!common
-!modern
-!Modern.php
-!monobook
-!MonoBook.php
-!vector
-!Vector.php
-!.gitignore
font-weight: bold;
}
+dt {
+ font-weight: bold;
+}
+
p {
margin: 1em 0;
line-height: 1.2em;
-<?xml version="1.0"?>\r
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
-<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="128px" height="128px" id="RSSicon" viewBox="0 0 256 256">\r
-<defs>\r
-<linearGradient x1="0.085" y1="0.085" x2="0.915" y2="0.915" id="RSSg">\r
-<stop offset="0.0" stop-color="#E3702D"/><stop offset="0.1071" stop-color="#EA7D31"/>\r
-<stop offset="0.3503" stop-color="#F69537"/><stop offset="0.5" stop-color="#FB9E3A"/>\r
-<stop offset="0.7016" stop-color="#EA7C31"/><stop offset="0.8866" stop-color="#DE642B"/>\r
-<stop offset="1.0" stop-color="#D95B29"/>\r
-</linearGradient>\r
-</defs>\r
-<rect width="256" height="256" rx="55" ry="55" x="0" y="0" fill="#CC5D15"/>\r
-<rect width="246" height="246" rx="50" ry="50" x="5" y="5" fill="#F49C52"/>\r
-<rect width="236" height="236" rx="47" ry="47" x="10" y="10" fill="url(#RSSg)"/>\r
-<circle cx="68" cy="189" r="24" fill="#FFF"/>\r
-<path d="M160 213h-34a82 82 0 0 0 -82 -82v-34a116 116 0 0 1 116 116z" fill="#FFF"/>\r
-<path d="M184 213A140 140 0 0 0 44 73 V 38a175 175 0 0 1 175 175z" fill="#FFF"/>\r
-</svg>\r
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 256 256"><defs><linearGradient x1=".085" y1=".085" x2=".915" y2=".915" id="a"><stop offset="0" stop-color="#E3702D"/><stop offset=".107" stop-color="#EA7D31"/><stop offset=".35" stop-color="#F69537"/><stop offset=".5" stop-color="#FB9E3A"/><stop offset=".702" stop-color="#EA7C31"/><stop offset=".887" stop-color="#DE642B"/><stop offset="1" stop-color="#D95B29"/></linearGradient></defs><rect width="256" height="256" rx="55" ry="55" fill="#CC5D15"/><rect width="246" height="246" rx="50" ry="50" x="5" y="5" fill="#F49C52"/><rect width="236" height="236" rx="47" ry="47" x="10" y="10" fill="url(#a)"/><circle cx="68" cy="189" r="24" fill="#FFF"/><path d="M160 213h-34a82 82 0 0 0-82-82v-34a116 116 0 0 1 116 116zM184 213a140 140 0 0 0-140-140v-35a175 175 0 0 1 175 175z" fill="#FFF"/></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="utf-8"?>\r
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
- width="21.059px" height="21.06px" viewBox="0 0 21.059 21.06" enable-background="new 0 0 21.059 21.06" xml:space="preserve">\r
-<path fill="#575757" d="M10.529,0C4.715,0,0,4.714,0,10.529s4.715,10.53,10.529,10.53c5.816,0,10.529-4.715,10.529-10.53\r
- S16.346,0,10.529,0z M10.527,16.767c-0.861,0-1.498-0.688-1.498-1.516c0-0.862,0.637-1.534,1.498-1.534c0.828,0,1.5,0.672,1.5,1.534\r
- C12.027,16.078,11.355,16.767,10.527,16.767z M12.664,10.255c-0.723,0.568-1,0.931-1,1.739v0.5H9.459v-0.603\r
- c0-1.517,0.449-2.136,1.154-2.688c0.707-0.552,1.139-0.845,1.139-1.637c0-0.672-0.414-1.051-1.24-1.051\r
- c-0.707,0-1.328,0.189-1.982,0.638L7.479,5.346c0.861-0.604,1.93-1.034,3.342-1.034c1.912,0,3.516,1.051,3.516,3.066\r
- C14.336,8.808,13.543,9.566,12.664,10.255z"/>\r
-</svg>\r
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="21.059" height="21.06"><path fill="#575757" d="M10.529 0c-5.814 0-10.529 4.714-10.529 10.529s4.715 10.53 10.529 10.53c5.816 0 10.529-4.715 10.529-10.53s-4.712-10.529-10.529-10.529zm-.002 16.767c-.861 0-1.498-.688-1.498-1.516 0-.862.637-1.534 1.498-1.534.828 0 1.5.672 1.5 1.534 0 .827-.672 1.516-1.5 1.516zm2.137-6.512c-.723.568-1 .931-1 1.739v.5h-2.205v-.603c0-1.517.449-2.136 1.154-2.688.707-.552 1.139-.845 1.139-1.637 0-.672-.414-1.051-1.24-1.051-.707 0-1.328.189-1.982.638l-1.051-1.807c.861-.604 1.93-1.034 3.342-1.034 1.912 0 3.516 1.051 3.516 3.066-.001 1.43-.794 2.188-1.673 2.877z"/></svg>
\ No newline at end of file
display: none;
}
-/* For developpers */
+/* For developers */
.xdebug-error {
position: absolute;
z-index: 99;
}
.mw-editsection,
-.toctoggle {
+.toctoggle,
+#jump-to-nav {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="16"
- height="16"
- id="svg2">
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.0288)"
- id="layer1">
- <path
- d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
- transform="matrix(0,-2.7307791,1.576616,0,0.05143855,1066.4148)"
- id="path2985"
- style="fill:#797979;fill-opacity:1;stroke:none" />
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M6.001 2.998l5.001 5-5.001 5z" fill="#797979"/></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="16"
- height="16"
- id="svg2">
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.0288)"
- id="layer1">
- <path
- d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
- transform="matrix(0,2.7307791,-1.576616,0,15.948561,1021.6428)"
- id="path2985"
- style="fill:#797979;fill-opacity:1;stroke:none" />
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M9.999 13.002l-5.001-5 5.001-5z" fill="#797979"/></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="22"
- height="16"
- id="svg2">
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1">
- <path
- d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
- transform="matrix(2.7307791,0,0,1.576616,-11.885956,1036.4136)"
- id="path2985"
- style="fill:#929292;fill-opacity:1;stroke:none" />
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="22" height="16"><path d="M15.502 6.001l-5 5.001-5-5.001z" fill="#929292"/></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="22"
- height="16"
- id="svg2">
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1">
- <path
- d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
- transform="matrix(2.7307791,0,0,1.576616,-11.885956,1036.4136)"
- id="path2985"
- style="fill:#797979;fill-opacity:1;stroke:none" />
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="22" height="16"><path d="M15.502 6.001l-5 5.001-5-5.001z" fill="#797979"/></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- version="1.1"
- width="16"
- height="16"
- id="svg2">
- <defs
- id="defs4" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- transform="translate(0,-1036.3622)"
- id="layer1">
- <path
- d="M 10.028624,3.7729932 8.1976442,6.9443424 6.3666649,3.7729932 z"
- transform="matrix(2.7307791,0,0,1.576616,-14.385956,1036.4136)"
- id="path2985"
- style="fill:#797979;fill-opacity:1;stroke:none" />
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"><path d="M13.002 6.001l-5 5.001-5-5.001z" fill="#797979"/></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- id="svg6167"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="Nowy dokument 22">
- <defs
- id="defs6169">
- <linearGradient
- id="linearGradient6707">
- <stop
- style="stop-color:#b2bf46;stop-opacity:1;"
- offset="0"
- id="stop6709" />
- <stop
- style="stop-color:#c8d17b;stop-opacity:1;"
- offset="1"
- id="stop6711" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6707"
- id="linearGradient6713"
- x1="22.262903"
- y1="9.1418257"
- x2="22.262903"
- y2="5.3889236"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.96979296,0,0,0.96979296,858.75554,710.2631)" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="7.6304965"
- inkscape:cy="5.5914204"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:window-width="1920"
- inkscape:window-height="1014"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata6172">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-877.85712,-710.2193)">
- <path
- style="fill:url(#linearGradient6713);fill-opacity:1;stroke:#757f2a;stroke-width:0.96979296px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 880.63649,710.74799 0,5.78845 c -0.30291,0.0337 -0.60613,0.10534 -0.90918,0.24245 -1.08747,0.49204 -1.62536,1.48002 -1.21224,2.21234 0.41311,0.73233 1.60977,0.91632 2.69723,0.42429 0.87694,-0.39677 1.37959,-1.10894 1.33347,-1.75775 l 0,-0.15153 0,-3.81856 2.93968,0 0,2.84876 c -0.30894,0.0309 -0.62965,0.10227 -0.93948,0.24245 -1.07493,0.48636 -1.6206,1.48846 -1.21225,2.21234 0.40836,0.72389 1.59201,0.91065 2.66694,0.42429 0.87404,-0.39547 1.38893,-1.11233 1.33346,-1.75775 l 0,-0.15153 0,-6.75825 -6.69763,0 z"
- id="path6186"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10"><defs><linearGradient id="a"><stop offset="0" stop-color="#b2bf46"/><stop offset="1" stop-color="#c8d17b"/></linearGradient><linearGradient xlink:href="#a" id="b" x1="22.263" y1="9.142" x2="22.263" y2="5.389" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.97 0 0 .97 858.756 710.263)"/></defs><path d="M2.779.529v5.788c-.303.034-.606.105-.909.242-1.087.492-1.625 1.48-1.212 2.212.413.732 1.61.916 2.697.424.877-.397 1.38-1.109 1.333-1.758v-3.971h2.94v2.849c-.309.031-.63.102-.939.242-1.075.486-1.621 1.488-1.212 2.212.408.724 1.592.911 2.667.424.874-.395 1.389-1.112 1.333-1.758v-6.91h-6.698z" fill="url(#b)" stroke="#757f2a" stroke-width=".97"/></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- id="svg7339"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="document-icon.svg">
- <defs
- id="defs7341">
- <linearGradient
- id="linearGradient7918">
- <stop
- style="stop-color:#e2e2e2;stop-opacity:1;"
- offset="0"
- id="stop7920" />
- <stop
- style="stop-color:#f8f8f8;stop-opacity:1;"
- offset="1"
- id="stop7922" />
- </linearGradient>
- <linearGradient
- id="linearGradient7902">
- <stop
- style="stop-color:#e2e2e2;stop-opacity:1;"
- offset="0"
- id="stop7904" />
- <stop
- style="stop-color:#e2e2e2;stop-opacity:1;"
- offset="1"
- id="stop7906" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7918"
- id="radialGradient7931"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4065972,0,0,2.1428629,6.7977966,-4.7132748)"
- cx="-16.71875"
- cy="3.344311"
- fx="-16.71875"
- fy="3.344311"
- r="2" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7918"
- id="radialGradient7968"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4065972,0,0,2.1428629,810.35359,682.73485)"
- cx="-16.71875"
- cy="3.344311"
- fx="-16.71875"
- fy="3.344311"
- r="2" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="32"
- inkscape:cx="3.7383502"
- inkscape:cy="5.7078811"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:window-width="1920"
- inkscape:window-height="1041"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7344">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-783.57141,-687.36218)">
- <path
- inkscape:connector-curvature="0"
- style="fill:#ffffff;fill-opacity:1;stroke:#878787;stroke-width:0.89999998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 785.05579,687.85437 0,9.09375 7.03125,0 0,-6.84375 -2.25,-2.25 -4.78125,0 z"
- id="rect7358" />
- <path
- inkscape:connector-curvature="0"
- style="fill:url(#radialGradient7968);fill-opacity:1;stroke:none"
- d="m 786.52454,689.44812 0,6.09375 4,0 0,-5.28125 -0.84375,0 0,-0.8125 -3.15625,0 z"
- id="rect7896" />
- <g
- style="font-size:1px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- id="text7952">
- <path
- d="m 786.54126,689.4494 0.0986,0 0,0.646 0.35498,0 0,0.083 -0.45361,0 0,-0.72901"
- style=""
- id="path2999" />
- <path
- d="m 787.28833,689.69452 c -0.0482,0 -0.0863,0.0189 -0.11426,0.0566 -0.028,0.0374 -0.042,0.0889 -0.042,0.1543 0,0.0654 0.0138,0.11702 0.0415,0.15478 0.028,0.0374 0.0662,0.0562 0.11475,0.0562 0.0479,0 0.0858,-0.0189 0.11377,-0.0566 0.028,-0.0378 0.042,-0.0892 0.042,-0.15429 0,-0.0648 -0.014,-0.11605 -0.042,-0.15381 -0.028,-0.0381 -0.0659,-0.0571 -0.11377,-0.0571 m 0,-0.0762 c 0.0781,0 0.13949,0.0254 0.18408,0.0762 0.0446,0.0508 0.0669,0.12109 0.0669,0.21094 0,0.0895 -0.0223,0.15983 -0.0669,0.21093 -0.0446,0.0508 -0.10596,0.0762 -0.18408,0.0762 -0.0784,0 -0.13997,-0.0254 -0.18457,-0.0762 -0.0443,-0.0511 -0.0664,-0.12142 -0.0664,-0.21093 0,-0.0898 0.0221,-0.16016 0.0664,-0.21094 0.0446,-0.0508 0.10612,-0.0762 0.18457,-0.0762"
- style=""
- id="path3001" />
- <path
- d="m 788.00464,689.71552 c -0.0101,-0.006 -0.0212,-0.0101 -0.0332,-0.0127 -0.0117,-0.003 -0.0247,-0.004 -0.0391,-0.004 -0.0508,0 -0.0898,0.0166 -0.11718,0.0498 -0.027,0.0329 -0.0405,0.0802 -0.0405,0.14209 l 0,0.28809 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0189,-0.0332 0.0435,-0.0578 0.0737,-0.0737 0.0303,-0.0163 0.0671,-0.0244 0.11035,-0.0244 0.006,0 0.013,4.9e-4 0.0205,0.001 0.007,6.5e-4 0.0158,0.002 0.0249,0.003 l 4.9e-4,0.0923"
- style=""
- id="path3003" />
- <path
- d="m 788.54614,689.88251 0,0.0439 -0.41308,0 c 0.004,0.0618 0.0225,0.10905 0.0557,0.1416 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.1001,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0108 -0.10303,0.0108 -0.0872,0 -0.15641,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11946 -0.0762,-0.20605 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13168,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0491 -0.0145,-0.0884 -0.0415,-0.11768 -0.0267,-0.0293 -0.0622,-0.0439 -0.10644,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0517,0.11963 l 0.32031,-4.9e-4"
- style=""
- id="path3005" />
- <path
- d="m 789.11938,689.73651 c 0.0225,-0.0404 0.0493,-0.0701 0.0806,-0.0893 0.0312,-0.0192 0.068,-0.0288 0.11035,-0.0288 0.057,0 0.10091,0.02 0.13184,0.0601 0.0309,0.0397 0.0464,0.0964 0.0464,0.16992 l 0,0.33008 -0.0903,0 0,-0.32715 c 0,-0.0524 -0.009,-0.0913 -0.0278,-0.1167 -0.0186,-0.0254 -0.0469,-0.0381 -0.085,-0.0381 -0.0466,0 -0.0833,0.0155 -0.11035,0.0464 -0.027,0.0309 -0.0405,0.0731 -0.0405,0.12646 l 0,0.30909 -0.0903,0 0,-0.32715 c 0,-0.0527 -0.009,-0.0916 -0.0278,-0.1167 -0.0186,-0.0254 -0.0472,-0.0381 -0.0859,-0.0381 -0.0459,0 -0.0824,0.0156 -0.10938,0.0469 -0.027,0.0309 -0.0405,0.0729 -0.0405,0.12597 l 0,0.30909 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0205,-0.0335 0.0451,-0.0583 0.0737,-0.0742 0.0286,-0.016 0.0627,-0.0239 0.10205,-0.0239 0.0397,0 0.0734,0.0101 0.10107,0.0303 0.028,0.0202 0.0487,0.0495 0.062,0.0879"
- style=""
- id="path3007" />
- <path
- d="m 786.53735,690.88153 0.0899,0 0,0.54688 -0.0899,0 0,-0.54688 m 0,-0.21289 0.0899,0 0,0.11377 -0.0899,0 0,-0.11377"
- style=""
- id="path3009" />
- <path
- d="m 786.90161,691.34637 0,0.29004 -0.0903,0 0,-0.75488 0.0903,0 0,0.083 c 0.0189,-0.0326 0.0426,-0.0566 0.0713,-0.0723 0.029,-0.016 0.0635,-0.0239 0.10352,-0.0239 0.0664,0 0.12028,0.0264 0.16162,0.0791 0.0417,0.0527 0.0625,0.12207 0.0625,0.20801 0,0.0859 -0.0208,0.15527 -0.0625,0.208 -0.0413,0.0527 -0.0952,0.0791 -0.16162,0.0791 -0.04,0 -0.0745,-0.008 -0.10352,-0.0234 -0.0286,-0.0159 -0.0524,-0.0402 -0.0713,-0.0728 m 0.30567,-0.19091 c -10e-6,-0.0661 -0.0137,-0.11784 -0.041,-0.15528 -0.027,-0.0378 -0.0643,-0.0566 -0.11182,-0.0566 -0.0475,0 -0.085,0.0189 -0.1123,0.0566 -0.027,0.0374 -0.0405,0.0892 -0.0405,0.15528 0,0.0661 0.0135,0.118 0.0405,0.15576 0.0273,0.0374 0.0648,0.0562 0.1123,0.0562 0.0475,0 0.0848,-0.0187 0.11182,-0.0562 0.0273,-0.0378 0.041,-0.0897 0.041,-0.15576"
- style=""
- id="path3011" />
- <path
- d="m 787.7981,690.89764 0,0.085 c -0.0254,-0.013 -0.0518,-0.0228 -0.0791,-0.0293 -0.0273,-0.007 -0.0557,-0.01 -0.085,-0.01 -0.0446,0 -0.0781,0.007 -0.10058,0.0205 -0.0221,0.0137 -0.0332,0.0342 -0.0332,0.0615 0,0.0208 0.008,0.0373 0.0239,0.0493 0.0159,0.0117 0.048,0.023 0.0962,0.0337 l 0.0308,0.007 c 0.0638,0.0137 0.10905,0.033 0.13575,0.0581 0.027,0.0247 0.0405,0.0594 0.0405,0.10401 0,0.0508 -0.0202,0.091 -0.0605,0.1206 -0.04,0.0296 -0.0952,0.0444 -0.16553,0.0444 -0.0293,0 -0.0599,-0.003 -0.0918,-0.009 -0.0316,-0.006 -0.0649,-0.014 -0.1001,-0.0254 l 0,-0.0928 c 0.0332,0.0173 0.0659,0.0303 0.0982,0.0391 0.0322,0.008 0.0641,0.0127 0.0957,0.0127 0.0423,0 0.0749,-0.007 0.0977,-0.0215 0.0228,-0.0147 0.0342,-0.0352 0.0342,-0.0615 0,-0.0244 -0.008,-0.0431 -0.0249,-0.0562 -0.0163,-0.013 -0.0522,-0.0255 -0.10792,-0.0376 l -0.0312,-0.007 c -0.0557,-0.0117 -0.0959,-0.0296 -0.1206,-0.0537 -0.0247,-0.0244 -0.0371,-0.0578 -0.0371,-0.1001 0,-0.0514 0.0182,-0.0912 0.0547,-0.11914 0.0365,-0.028 0.0882,-0.042 0.15527,-0.042 0.0332,0 0.0644,0.002 0.0937,0.007 0.0293,0.005 0.0563,0.0122 0.0811,0.022"
- style=""
- id="path3013" />
- <path
- d="m 787.96167,691.21259 0,-0.33106 0.0898,0 0,0.32764 c 0,0.0518 0.0101,0.0907 0.0303,0.1167 0.0202,0.0257 0.0505,0.0386 0.0908,0.0386 0.0485,0 0.0868,-0.0155 0.11474,-0.0464 0.0283,-0.0309 0.0425,-0.0731 0.0425,-0.12646 l 0,-0.31006 0.0898,0 0,0.54688 -0.0898,0 0,-0.084 c -0.0218,0.0332 -0.0472,0.0579 -0.0762,0.0742 -0.0286,0.0159 -0.062,0.0239 -0.1001,0.0239 -0.0628,0 -0.11051,-0.0195 -0.14306,-0.0586 -0.0326,-0.0391 -0.0488,-0.0962 -0.0488,-0.17138 m 0.22607,-0.34424 0,0"
- style=""
- id="path3015" />
- <path
- d="m 789.03149,690.98651 c 0.0225,-0.0404 0.0493,-0.0701 0.0806,-0.0893 0.0312,-0.0192 0.068,-0.0288 0.11035,-0.0288 0.057,0 0.10091,0.02 0.13184,0.0601 0.0309,0.0397 0.0464,0.0964 0.0464,0.16992 l 0,0.33008 -0.0903,0 0,-0.32715 c 0,-0.0524 -0.009,-0.0913 -0.0278,-0.1167 -0.0186,-0.0254 -0.0469,-0.0381 -0.085,-0.0381 -0.0465,0 -0.0833,0.0155 -0.11035,0.0464 -0.027,0.0309 -0.0405,0.0731 -0.0405,0.12646 l 0,0.30909 -0.0903,0 0,-0.32715 c 0,-0.0527 -0.009,-0.0916 -0.0278,-0.1167 -0.0186,-0.0254 -0.0472,-0.0381 -0.0859,-0.0381 -0.0459,0 -0.0824,0.0156 -0.10938,0.0469 -0.027,0.0309 -0.0405,0.0729 -0.0405,0.12597 l 0,0.30909 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0205,-0.0335 0.0451,-0.0583 0.0737,-0.0742 0.0286,-0.016 0.0627,-0.0239 0.10205,-0.0239 0.0397,0 0.0734,0.0101 0.10107,0.0303 0.028,0.0202 0.0487,0.0495 0.062,0.0879"
- style=""
- id="path3017" />
- <path
- d="m 786.89722,692.21454 0,-0.2959 0.0898,0 0,0.75977 -0.0898,0 0,-0.082 c -0.0189,0.0326 -0.0428,0.0568 -0.0718,0.0728 -0.0286,0.0156 -0.0631,0.0234 -0.10352,0.0234 -0.0661,0 -0.11995,-0.0264 -0.16162,-0.0791 -0.0413,-0.0527 -0.062,-0.12207 -0.062,-0.208 0,-0.0859 0.0207,-0.15528 0.062,-0.20801 0.0417,-0.0527 0.0955,-0.0791 0.16162,-0.0791 0.0404,0 0.0749,0.008 0.10352,0.0239 0.029,0.0156 0.0529,0.0397 0.0718,0.0723 m -0.30616,0.19092 c 0,0.0661 0.0135,0.118 0.0405,0.15576 0.0274,0.0374 0.0648,0.0562 0.11231,0.0562 0.0475,0 0.085,-0.0187 0.1123,-0.0562 0.0273,-0.0378 0.041,-0.0897 0.041,-0.15576 0,-0.0661 -0.0137,-0.11784 -0.041,-0.15528 -0.0273,-0.0378 -0.0648,-0.0566 -0.1123,-0.0566 -0.0475,0 -0.085,0.0189 -0.11231,0.0566 -0.027,0.0374 -0.0405,0.0892 -0.0405,0.15528"
- style=""
- id="path3019" />
- <path
- d="m 787.38403,692.19452 c -0.0482,0 -0.0863,0.0189 -0.11425,0.0566 -0.028,0.0374 -0.042,0.0889 -0.042,0.1543 0,0.0654 0.0138,0.11702 0.0415,0.15478 0.028,0.0374 0.0662,0.0562 0.11474,0.0562 0.0478,0 0.0858,-0.0189 0.11377,-0.0566 0.028,-0.0378 0.042,-0.0892 0.042,-0.15429 0,-0.0648 -0.014,-0.11605 -0.042,-0.15381 -0.028,-0.0381 -0.0659,-0.0571 -0.11377,-0.0571 m 0,-0.0762 c 0.0781,0 0.13949,0.0254 0.18409,0.0762 0.0446,0.0508 0.0669,0.12109 0.0669,0.21094 0,0.0895 -0.0223,0.15983 -0.0669,0.21093 -0.0446,0.0508 -0.10596,0.0762 -0.18409,0.0762 -0.0785,0 -0.13997,-0.0254 -0.18457,-0.0762 -0.0443,-0.0511 -0.0664,-0.12142 -0.0664,-0.21093 0,-0.0898 0.0221,-0.16016 0.0664,-0.21094 0.0446,-0.0508 0.10612,-0.0762 0.18457,-0.0762"
- style=""
- id="path3021" />
- <path
- d="m 787.78345,691.91864 0.0898,0 0,0.75977 -0.0898,0 0,-0.75977"
- style=""
- id="path3023" />
- <path
- d="m 788.27271,692.19452 c -0.0482,0 -0.0863,0.0189 -0.11426,0.0566 -0.028,0.0374 -0.042,0.0889 -0.042,0.1543 -10e-6,0.0654 0.0138,0.11702 0.0415,0.15478 0.028,0.0374 0.0662,0.0562 0.11475,0.0562 0.0479,0 0.0858,-0.0189 0.11376,-0.0566 0.028,-0.0378 0.042,-0.0892 0.042,-0.15429 0,-0.0648 -0.014,-0.11605 -0.042,-0.15381 -0.028,-0.0381 -0.0659,-0.0571 -0.11376,-0.0571 m 0,-0.0762 c 0.0781,0 0.13948,0.0254 0.18408,0.0762 0.0446,0.0508 0.0669,0.12109 0.0669,0.21094 0,0.0895 -0.0223,0.15983 -0.0669,0.21093 -0.0446,0.0508 -0.10596,0.0762 -0.18408,0.0762 -0.0785,0 -0.13998,-0.0254 -0.18458,-0.0762 -0.0443,-0.0511 -0.0664,-0.12142 -0.0664,-0.21093 0,-0.0898 0.0221,-0.16016 0.0664,-0.21094 0.0446,-0.0508 0.10612,-0.0762 0.18458,-0.0762"
- style=""
- id="path3025" />
- <path
- d="m 788.98901,692.21552 c -0.0101,-0.006 -0.0212,-0.0101 -0.0332,-0.0127 -0.0117,-0.003 -0.0247,-0.004 -0.0391,-0.004 -0.0508,0 -0.0898,0.0166 -0.11719,0.0498 -0.027,0.0329 -0.0405,0.0802 -0.0405,0.14209 l 0,0.28809 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0189,-0.0332 0.0435,-0.0578 0.0737,-0.0737 0.0303,-0.0163 0.0671,-0.0244 0.11036,-0.0244 0.006,0 0.013,4.9e-4 0.0205,0.001 0.007,6.5e-4 0.0158,0.002 0.0249,0.003 l 4.8e-4,0.0923"
- style=""
- id="path3027" />
- <path
- d="m 786.88599,693.39764 0,0.085 c -0.0254,-0.013 -0.0518,-0.0228 -0.0791,-0.0293 -0.0273,-0.007 -0.0557,-0.01 -0.085,-0.01 -0.0446,0 -0.0781,0.007 -0.10058,0.0205 -0.0221,0.0137 -0.0332,0.0342 -0.0332,0.0615 0,0.0208 0.008,0.0373 0.0239,0.0493 0.0159,0.0117 0.048,0.023 0.0962,0.0337 l 0.0308,0.007 c 0.0638,0.0137 0.10905,0.033 0.13575,0.0581 0.027,0.0247 0.0405,0.0594 0.0405,0.10401 0,0.0508 -0.0202,0.091 -0.0605,0.1206 -0.04,0.0296 -0.0952,0.0444 -0.16553,0.0444 -0.0293,0 -0.0599,-0.003 -0.0918,-0.009 -0.0316,-0.006 -0.0649,-0.014 -0.1001,-0.0254 l 0,-0.0928 c 0.0332,0.0173 0.0659,0.0303 0.0982,0.0391 0.0322,0.008 0.0641,0.0127 0.0957,0.0127 0.0423,0 0.0749,-0.007 0.0977,-0.0215 0.0228,-0.0147 0.0342,-0.0352 0.0342,-0.0615 0,-0.0244 -0.008,-0.0431 -0.0249,-0.0562 -0.0163,-0.013 -0.0522,-0.0255 -0.10791,-0.0376 l -0.0312,-0.007 c -0.0557,-0.0117 -0.0959,-0.0296 -0.12061,-0.0537 -0.0247,-0.0244 -0.0371,-0.0578 -0.0371,-0.1001 0,-0.0514 0.0182,-0.0912 0.0547,-0.11914 0.0365,-0.028 0.0882,-0.042 0.15527,-0.042 0.0332,0 0.0644,0.002 0.0937,0.007 0.0293,0.005 0.0563,0.0122 0.0811,0.022"
- style=""
- id="path3029" />
- <path
- d="m 787.05884,693.38153 0.0898,0 0,0.54688 -0.0898,0 0,-0.54688 m 0,-0.21289 0.0898,0 0,0.11377 -0.0898,0 0,-0.11377"
- style=""
- id="path3031" />
- <path
- d="m 787.42505,693.22626 0,0.15527 0.18506,0 0,0.0698 -0.18506,0 0,0.29688 c 0,0.0446 0.006,0.0732 0.0181,0.0859 0.0124,0.0127 0.0373,0.019 0.0747,0.019 l 0.0923,0 0,0.0752 -0.0923,0 c -0.0693,0 -0.11719,-0.0129 -0.14355,-0.0386 -0.0264,-0.026 -0.0396,-0.0732 -0.0396,-0.1416 l 0,-0.29688 -0.0659,0 0,-0.0698 0.0659,0 0,-0.15527 0.0903,0"
- style=""
- id="path3033" />
- <path
- d="m 788.29565,693.6535 c -0.0726,0 -0.12288,0.008 -0.15087,0.0249 -0.028,0.0166 -0.042,0.0449 -0.042,0.085 0,0.0319 0.0104,0.0573 0.0312,0.0762 0.0212,0.0185 0.0498,0.0278 0.0859,0.0278 0.0498,0 0.0897,-0.0176 0.11963,-0.0527 0.0303,-0.0355 0.0454,-0.0825 0.0454,-0.14112 l 0,-0.02 -0.0894,0 m 0.1792,-0.0371 0,0.31202 -0.0898,0 0,-0.083 c -0.0205,0.0332 -0.0461,0.0578 -0.0767,0.0737 -0.0306,0.0156 -0.068,0.0234 -0.11231,0.0234 -0.056,0 -0.10058,-0.0156 -0.13378,-0.0469 -0.0329,-0.0316 -0.0493,-0.0737 -0.0493,-0.12646 0,-0.0615 0.0205,-0.10791 0.0615,-0.13916 0.0413,-0.0312 0.10287,-0.0469 0.18457,-0.0469 l 0.12598,0 0,-0.009 c 0,-0.0413 -0.0137,-0.0732 -0.041,-0.0957 -0.027,-0.0228 -0.0651,-0.0342 -0.11425,-0.0342 -0.0312,0 -0.0617,0.004 -0.0913,0.0112 -0.0296,0.007 -0.0581,0.0187 -0.0854,0.0337 l 0,-0.083 c 0.0329,-0.0127 0.0648,-0.0221 0.0957,-0.0283 0.0309,-0.007 0.061,-0.01 0.0903,-0.01 0.0791,0 0.13819,0.0205 0.17725,0.0615 0.0391,0.041 0.0586,0.10319 0.0586,0.18652"
- style=""
- id="path3035" />
- <path
- d="m 789.08618,693.48651 c 0.0225,-0.0404 0.0493,-0.0701 0.0806,-0.0893 0.0312,-0.0192 0.068,-0.0288 0.11035,-0.0288 0.057,0 0.10091,0.02 0.13184,0.0601 0.0309,0.0397 0.0464,0.0964 0.0464,0.16992 l 0,0.33008 -0.0903,0 0,-0.32715 c 0,-0.0524 -0.009,-0.0913 -0.0278,-0.1167 -0.0186,-0.0254 -0.0469,-0.0381 -0.085,-0.0381 -0.0466,0 -0.0833,0.0155 -0.11035,0.0464 -0.027,0.0309 -0.0405,0.0731 -0.0405,0.12646 l 0,0.30909 -0.0903,0 0,-0.32715 c 0,-0.0527 -0.009,-0.0916 -0.0278,-0.1167 -0.0186,-0.0254 -0.0472,-0.0381 -0.0859,-0.0381 -0.0459,0 -0.0824,0.0156 -0.10938,0.0469 -0.027,0.0309 -0.0405,0.0729 -0.0405,0.12597 l 0,0.30909 -0.0903,0 0,-0.54688 0.0903,0 0,0.085 c 0.0205,-0.0335 0.0451,-0.0583 0.0737,-0.0742 0.0286,-0.016 0.0627,-0.0239 0.10206,-0.0239 0.0397,0 0.0734,0.0101 0.10107,0.0303 0.028,0.0202 0.0487,0.0495 0.062,0.0879"
- style=""
- id="path3037" />
- <path
- d="m 790.10278,693.63251 0,0.0439 -0.41308,0 c 0.004,0.0618 0.0225,0.10905 0.0557,0.1416 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.1001,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0108 -0.10303,0.0108 -0.0872,0 -0.15641,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11946 -0.0762,-0.20605 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13168,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0491 -0.0145,-0.0884 -0.0415,-0.11768 -0.0267,-0.0293 -0.0622,-0.0439 -0.10645,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0517,0.11963 l 0.32031,-4.9e-4"
- style=""
- id="path3039" />
- <path
- d="m 790.33911,693.22626 0,0.15527 0.18506,0 0,0.0698 -0.18506,0 0,0.29688 c 0,0.0446 0.006,0.0732 0.0181,0.0859 0.0124,0.0127 0.0373,0.019 0.0747,0.019 l 0.0923,0 0,0.0752 -0.0923,0 c -0.0693,0 -0.11718,-0.0129 -0.14355,-0.0386 -0.0264,-0.026 -0.0395,-0.0732 -0.0395,-0.1416 l 0,-0.29688 -0.0659,0 0,-0.0698 0.0659,0 0,-0.15527 0.0903,0"
- style=""
- id="path3041" />
- </g>
- <path
- style="fill:none;stroke:#878787;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 789.74329,687.77624 0,2.35938 2.34375,0"
- id="path7894"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10"><defs><linearGradient id="a"><stop offset="0" stop-color="#e2e2e2"/><stop offset="1" stop-color="#f8f8f8"/></linearGradient><linearGradient><stop offset="0" stop-color="#e2e2e2"/><stop offset="1" stop-color="#e2e2e2"/></linearGradient><radialGradient xlink:href="#a" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.407 0 0 2.143 6.798 -4.713)" cx="-16.719" cy="3.344" fx="-16.719" fy="3.344" r="2"/><radialGradient xlink:href="#a" id="b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.407 0 0 2.143 810.354 682.735)" cx="-16.719" cy="3.344" fx="-16.719" fy="3.344" r="2"/></defs><g><path d="M1.484.492v9.094h7.031v-6.844l-2.25-2.25h-4.781z" fill="#fff" stroke="#878787" stroke-width=".9" stroke-linecap="square"/><path d="M2.953 2.086v6.094h4v-5.281h-.844v-.813h-3.156z" fill="url(#b)"/><g style="line-height:125%" font-size="1" letter-spacing="0" word-spacing="0" font-family="Sans"><path d="M2.97 2.087h.099v.646h.355v.083h-.454v-.729"/><path d="M3.717 2.332l-.114.057-.042.154.042.155.115.056.114-.057.042-.154-.042-.154-.114-.057m0-.076c.078 0 .139.025.184.076.045.051.067.121.067.211 0 .089-.022.16-.067.211-.045.051-.106.076-.184.076s-.14-.025-.185-.076c-.044-.051-.066-.121-.066-.211s.022-.16.066-.211c.045-.051.106-.076.185-.076"/><path d="M4.433 2.353l-.033-.013-.039-.004-.117.05-.041.142v.288h-.09v-.547h.09v.085l.074-.074.11-.024.021.001.025.003v.092"/><path d="M4.975 2.52v.044h-.413l.056.142.14.048.1-.013.097-.038v.085l-.099.031-.103.011c-.087 0-.156-.025-.208-.076-.051-.051-.076-.119-.076-.206 0-.089.024-.16.072-.213.049-.053.114-.079.196-.079.074 0 .132.024.174.071.043.047.065.111.065.193m-.09-.026l-.042-.118-.106-.044-.121.043-.052.12h.32"/><path d="M5.548 2.374l.081-.089.11-.029.132.06.046.17v.33h-.09v-.327l-.028-.117-.085-.038-.11.046-.041.126v.309h-.09v-.327l-.028-.117-.086-.038-.109.047-.041.126v.309h-.09v-.547h.09v.085l.074-.074.102-.024.101.03.062.088"/><path d="M2.966 3.519h.09v.547h-.09v-.547m0-.213h.09v.114h-.09v-.114"/><path d="M3.33 3.984v.29h-.09v-.755h.09v.083l.071-.072.104-.024c.066 0 .12.026.162.079.042.053.063.122.063.208s-.021.155-.063.208c-.041.053-.095.079-.162.079l-.104-.023-.071-.073m.306-.191l-.041-.155-.112-.057-.112.057-.041.155.041.156.112.056.112-.056.041-.156"/><path d="M4.227 3.535v.085l-.079-.029-.085-.01-.101.021-.033.061.024.049.096.034.031.007.136.058.041.104-.06.121-.166.044-.092-.009-.1-.025v-.093l.098.039.096.013.098-.021.034-.061-.025-.056-.108-.038-.031-.007-.121-.054-.037-.1.055-.119.155-.042.094.007.081.022"/><path d="M4.39 3.85v-.331h.09v.328l.03.117.091.039.115-.046.043-.126v-.31h.09v.547h-.09v-.084l-.076.074-.1.024c-.063 0-.111-.019-.143-.059l-.049-.171m.226-.344"/><path d="M5.46 3.624l.081-.089.11-.029.132.06.046.17v.33h-.09v-.327l-.028-.117-.085-.038-.11.046-.041.126v.309h-.09v-.327l-.028-.117-.086-.038-.109.047-.041.126v.309h-.09v-.547h.09v.085l.074-.074.102-.024.101.03.062.088"/><path d="M3.326 4.852v-.296h.09v.76h-.09v-.082l-.072.073-.104.023c-.066 0-.12-.026-.162-.079-.041-.053-.062-.122-.062-.208s.021-.155.062-.208c.042-.053.096-.079.162-.079l.104.024.072.072m-.306.191l.041.156.112.056.112-.056.041-.156-.041-.155-.112-.057-.112.057-.041.155"/><path d="M3.813 4.832l-.114.057-.042.154.042.155.115.056.114-.057.042-.154-.042-.154-.114-.057m0-.076c.078 0 .139.025.184.076.045.051.067.121.067.211 0 .089-.022.16-.067.211-.045.051-.106.076-.184.076-.079 0-.14-.025-.185-.076-.044-.051-.066-.121-.066-.211s.022-.16.066-.211c.045-.051.106-.076.185-.076"/><path d="M4.212 4.556h.09v.76h-.09v-.76"/><path d="M4.701 4.832l-.114.057-.042.154.042.155.115.056.114-.057.042-.154-.042-.154-.114-.057m0-.076c.078 0 .139.025.184.076.045.051.067.121.067.211 0 .089-.022.16-.067.211-.045.051-.106.076-.184.076-.079 0-.14-.025-.185-.076-.044-.051-.066-.121-.066-.211s.022-.16.066-.211c.045-.051.106-.076.185-.076"/><path d="M5.418 4.853l-.033-.013-.039-.004-.117.05-.041.142v.288h-.09v-.547h.09v.085l.074-.074.11-.024.021.001.025.003v.092"/><path d="M3.315 6.035v.085l-.079-.029-.085-.01-.101.021-.033.061.024.049.096.034.031.007.136.058.041.104-.06.121-.166.044-.092-.009-.1-.025v-.093l.098.039.096.013.098-.021.034-.061-.025-.056-.108-.038-.031-.007-.121-.054-.037-.1.055-.119.155-.042.094.007.081.022"/><path d="M3.487 6.019h.09v.547h-.09v-.547m0-.213h.09v.114h-.09v-.114"/><path d="M3.854 5.864v.155h.185v.07h-.185v.297l.018.086.075.019h.092v.075h-.092l-.144-.039-.04-.142v-.297h-.066v-.07h.066v-.155h.09"/><path d="M4.724 6.291l-.151.025-.042.085.031.076.086.028.12-.053.045-.141v-.02h-.089m.179-.037v.312h-.09v-.083l-.077.074-.112.023-.134-.047-.049-.126.061-.139c.041-.031.103-.047.185-.047h.126v-.009l-.041-.096-.114-.034-.091.011-.085.034v-.083l.096-.028.09-.01c.079 0 .138.021.177.061.039.041.059.103.059.187"/><path d="M5.515 6.124l.081-.089.11-.029.132.06.046.17v.33h-.09v-.327l-.028-.117-.085-.038-.11.046-.041.126v.309h-.09v-.327l-.028-.117-.086-.038-.109.047-.041.126v.309h-.09v-.547h.09v.085l.074-.074.102-.024.101.03.062.088"/><path d="M6.531 6.27v.044h-.413l.056.142.14.048.1-.013.097-.038v.085l-.099.031-.103.011c-.087 0-.156-.025-.208-.076-.051-.051-.076-.119-.076-.206 0-.089.024-.16.072-.213.049-.053.114-.079.196-.079.074 0 .132.024.174.071.043.047.065.111.065.193m-.09-.026l-.042-.118-.106-.044-.121.043-.052.12h.32"/><path d="M6.768 5.864v.155h.185v.07h-.185v.297l.018.086.075.019h.092v.075h-.092l-.144-.039-.04-.142v-.297h-.066v-.07h.066v-.155h.09"/></g><path d="M6.172.414v2.359h2.344" stroke="#878787" stroke-width=".9" fill="none"/></g></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="external-link-ltr-icon.svg"
- inkscape:export-filename="/run/user/1000/gvfs/sftp:host=users.v-lo.krakow.pl,user=m4tx/home/WWW/m4tx/WWW/Wikimedia/skins/vector/images/external-link-ltr-icon.png"
- inkscape:export-xdpi="144.13724"
- inkscape:export-ydpi="144.13724">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Club"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Club"
- style="overflow:visible">
- <path
- id="path3996"
- d="M -1.5971367,-7.0977635 C -3.4863874,-7.0977635 -5.0235187,-5.5606321 -5.0235187,-3.6713813 C -5.0235187,-3.0147015 -4.7851656,-2.4444556 -4.4641095,-1.9232271 C -4.5028609,-1.8911157 -4.5437814,-1.8647646 -4.5806531,-1.8299921 C -5.2030765,-2.6849849 -6.1700514,-3.2751330 -7.3077730,-3.2751330 C -9.1970245,-3.2751331 -10.734155,-1.7380016 -10.734155,0.15124914 C -10.734155,2.0404999 -9.1970245,3.5776313 -7.3077730,3.5776313 C -6.3143268,3.5776313 -5.4391540,3.1355702 -4.8137404,2.4588126 C -4.9384274,2.8137041 -5.0235187,3.1803000 -5.0235187,3.5776313 C -5.0235187,5.4668819 -3.4863874,7.0040135 -1.5971367,7.0040135 C 0.29211394,7.0040135 1.8292454,5.4668819 1.8292454,3.5776313 C 1.8292454,2.7842354 1.5136868,2.0838028 1.0600576,1.5031550 C 2.4152718,1.7663868 3.7718375,2.2973711 4.7661444,3.8340272 C 4.0279463,3.0958289 3.5540908,1.7534117 3.5540908,-0.058529361 L 2.9247554,-0.10514681 L 3.5074733,-0.12845553 C 3.5074733,-1.9403966 3.9580199,-3.2828138 4.6962183,-4.0210121 C 3.7371277,-2.5387813 2.4390549,-1.9946496 1.1299838,-1.7134486 C 1.5341802,-2.2753578 1.8292454,-2.9268556 1.8292454,-3.6713813 C 1.8292454,-5.5606319 0.29211394,-7.0977635 -1.5971367,-7.0977635 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:0.74587913pt"
- transform="scale(0.6)" />
- </marker>
- <marker
- inkscape:stockid="DiamondM"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="DiamondM"
- style="overflow:visible">
- <path
- id="path3849"
- d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
- transform="scale(0.4)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path3767"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
- transform="scale(0.8) translate(12.5,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="11.725312"
- inkscape:cy="5.6780159"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:window-width="1920"
- inkscape:window-height="1041"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-826.42859,-698.79077)">
- <rect
- style="fill:#ffffff;stroke:#0066cc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
- id="rect2996"
- width="5.9821429"
- height="5.9821429"
- x="826.92859"
- y="702.30865"
- inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
- inkscape:export-xdpi="90.085777"
- inkscape:export-ydpi="90.085777" />
- <g
- id="g4815"
- transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,762.87,-359.88339)"
- inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
- inkscape:export-xdpi="90.085777"
- inkscape:export-ydpi="90.085777">
- <path
- sodipodi:nodetypes="cccccccccc"
- inkscape:connector-curvature="0"
- id="path4777"
- d="m 796.90819,700.28317 3.70127,-3.70126 3.81174,3.81175 -0.0189,2.20336 -1.85234,0 0,3.8543 -3.80233,0 0,-3.97108 -1.8536,0 z"
- style="fill:#0066ff;fill-opacity:1;stroke:none" />
- <path
- sodipodi:nodetypes="cccccccc"
- inkscape:connector-curvature="0"
- id="path4779"
- d="m 800.60946,698.00244 3.46986,3.43865 -2.5702,0 0,4.07436 -1.7362,0 0,-4.07436 -2.61754,-3.6e-4 z"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
- </g>
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10"><defs><marker orient="auto" overflow="visible"><path d="M-.958-4.259c-1.134 0-2.056.922-2.056 2.056 0 .394.143.736.336 1.049l-.07.056c-.373-.513-.954-.867-1.636-.867-1.134 0-2.056.922-2.056 2.056s.922 2.056 2.056 2.056c.596 0 1.121-.265 1.496-.671-.075.213-.126.433-.126.671 0 1.134.922 2.056 2.056 2.056s2.056-.922 2.056-2.056c0-.476-.189-.896-.462-1.245.813.158 1.627.477 2.224 1.399-.443-.443-.727-1.248-.727-2.336l-.378-.028.35-.014c0-1.087.27-1.893.713-2.336-.575.889-1.354 1.216-2.14 1.385.243-.337.42-.728.42-1.175 0-1.134-.922-2.056-2.056-2.056z" fill-rule="evenodd" stroke="#000" stroke-width="NaN"/></marker><marker orient="auto" overflow="visible"><path d="M0-2.828l-2.828 2.828 2.828 2.828 2.828-2.828-2.828-2.828z" fill-rule="evenodd" stroke="#000" stroke-width="NaN"/></marker><marker orient="auto" overflow="visible"><path d="M10 0l4-4-14 4 14 4-4-4z" fill-rule="evenodd" stroke="#000" stroke-width="NaN"/></marker></defs><g transform="translate(-826.429 -698.791)"><rect width="5.982" height="5.982" x="826.929" y="702.309" fill="#fff" stroke="#06c"/><g><path d="M831.194 698.791h5.234v5.391l-1.571 1.545-1.31-1.31-2.725 2.725-2.689-2.689 2.808-2.808-1.311-1.311z" fill="#06f"/><path d="M835.424 699.795l.022 4.885-1.817-1.817-2.881 2.881-1.228-1.228 2.881-2.881-1.851-1.851z" fill="#fff"/></g></g></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- id="svg2"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="external-link-ltr-icon.svg"
- inkscape:export-filename="/run/user/1000/gvfs/sftp:host=users.v-lo.krakow.pl,user=m4tx/home/WWW/m4tx/WWW/Wikimedia/skins/vector/images/external-link-ltr-icon.png"
- inkscape:export-xdpi="144.13724"
- inkscape:export-ydpi="144.13724">
- <defs
- id="defs4">
- <marker
- inkscape:stockid="Club"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Club"
- style="overflow:visible">
- <path
- id="path3996"
- d="M -1.5971367,-7.0977635 C -3.4863874,-7.0977635 -5.0235187,-5.5606321 -5.0235187,-3.6713813 C -5.0235187,-3.0147015 -4.7851656,-2.4444556 -4.4641095,-1.9232271 C -4.5028609,-1.8911157 -4.5437814,-1.8647646 -4.5806531,-1.8299921 C -5.2030765,-2.6849849 -6.1700514,-3.2751330 -7.3077730,-3.2751330 C -9.1970245,-3.2751331 -10.734155,-1.7380016 -10.734155,0.15124914 C -10.734155,2.0404999 -9.1970245,3.5776313 -7.3077730,3.5776313 C -6.3143268,3.5776313 -5.4391540,3.1355702 -4.8137404,2.4588126 C -4.9384274,2.8137041 -5.0235187,3.1803000 -5.0235187,3.5776313 C -5.0235187,5.4668819 -3.4863874,7.0040135 -1.5971367,7.0040135 C 0.29211394,7.0040135 1.8292454,5.4668819 1.8292454,3.5776313 C 1.8292454,2.7842354 1.5136868,2.0838028 1.0600576,1.5031550 C 2.4152718,1.7663868 3.7718375,2.2973711 4.7661444,3.8340272 C 4.0279463,3.0958289 3.5540908,1.7534117 3.5540908,-0.058529361 L 2.9247554,-0.10514681 L 3.5074733,-0.12845553 C 3.5074733,-1.9403966 3.9580199,-3.2828138 4.6962183,-4.0210121 C 3.7371277,-2.5387813 2.4390549,-1.9946496 1.1299838,-1.7134486 C 1.5341802,-2.2753578 1.8292454,-2.9268556 1.8292454,-3.6713813 C 1.8292454,-5.5606319 0.29211394,-7.0977635 -1.5971367,-7.0977635 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:0.74587913pt"
- transform="scale(0.6)" />
- </marker>
- <marker
- inkscape:stockid="DiamondM"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="DiamondM"
- style="overflow:visible">
- <path
- id="path3849"
- d="M 0,-7.0710768 L -7.0710894,0 L 0,7.0710589 L 7.0710462,0 L 0,-7.0710768 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
- transform="scale(0.4)" />
- </marker>
- <marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lstart"
- style="overflow:visible">
- <path
- id="path3767"
- d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
- style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
- transform="scale(0.8) translate(12.5,0)" />
- </marker>
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="11.725312"
- inkscape:cy="5.6780159"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:window-width="1920"
- inkscape:window-height="1041"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-826.42859,-698.79077)">
- <rect
- style="fill:#ffffff;fill-opacity:1;stroke:#0066cc;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- id="rect2996"
- width="5.9821429"
- height="5.9821429"
- x="-835.92859"
- y="702.30865"
- inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
- inkscape:export-xdpi="90.085777"
- inkscape:export-ydpi="90.085777"
- transform="scale(-1,1)" />
- <g
- id="g4815"
- transform="matrix(-0.70710678,0.70710678,0.70710678,0.70710678,899.98717,-359.88339)"
- inkscape:export-filename="/home/m4tx/Pulpit/eheheh.png"
- inkscape:export-xdpi="90.085777"
- inkscape:export-ydpi="90.085777">
- <path
- sodipodi:nodetypes="cccccccccc"
- inkscape:connector-curvature="0"
- id="path4777"
- d="m 796.90819,700.28317 3.70127,-3.70126 3.81174,3.81175 -0.0189,2.20336 -1.85234,0 0,3.8543 -3.80233,0 0,-3.97108 -1.8536,0 z"
- style="fill:#0066ff;fill-opacity:1;stroke:none" />
- <path
- sodipodi:nodetypes="cccccccc"
- inkscape:connector-curvature="0"
- id="path4779"
- d="m 800.60946,698.00244 3.46986,3.43865 -2.5702,0 0,4.07436 -1.7362,0 0,-4.07436 -2.61754,-3.6e-4 z"
- style="fill:#ffffff;fill-opacity:1;stroke:none" />
- </g>
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" width="10" height="10"><defs><marker orient="auto" overflow="visible"><path d="M-.958-4.259c-1.134 0-2.056.922-2.056 2.056 0 .394.143.736.336 1.049l-.07.056c-.373-.513-.954-.867-1.636-.867-1.134 0-2.056.922-2.056 2.056s.922 2.056 2.056 2.056c.596 0 1.121-.265 1.496-.671-.075.213-.126.433-.126.671 0 1.134.922 2.056 2.056 2.056s2.056-.922 2.056-2.056c0-.476-.189-.896-.462-1.245.813.158 1.627.477 2.224 1.399-.443-.443-.727-1.248-.727-2.336l-.378-.028.35-.014c0-1.087.27-1.893.713-2.336-.575.889-1.354 1.216-2.14 1.385.243-.337.42-.728.42-1.175 0-1.134-.922-2.056-2.056-2.056z" fill-rule="evenodd" stroke="#000" stroke-width="NaN"/></marker><marker orient="auto" overflow="visible"><path d="M0-2.828l-2.828 2.828 2.828 2.828 2.828-2.828-2.828-2.828z" fill-rule="evenodd" stroke="#000" stroke-width="NaN"/></marker><marker orient="auto" overflow="visible"><path d="M10 0l4-4-14 4 14 4-4-4z" fill-rule="evenodd" stroke="#000" stroke-width="NaN"/></marker></defs><g transform="translate(-826.429 -698.791)"><rect width="5.982" height="5.982" x="-835.929" y="702.309" transform="scale(-1 1)" fill="#fff" stroke="#06c"/><g><path d="M831.663 698.791h-5.234v5.391l1.571 1.545 1.31-1.31 2.725 2.725 2.689-2.689-2.808-2.808 1.311-1.311z" fill="#06f"/><path d="M827.433 699.795l-.022 4.885 1.817-1.817 2.881 2.881 1.228-1.228-2.881-2.881 1.851-1.851z" fill="#fff"/></g></g></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- id="svg7339"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="Nowy dokument 30">
- <defs
- id="defs7341">
- <linearGradient
- id="linearGradient7918">
- <stop
- style="stop-color:#e2e2e2;stop-opacity:1;"
- offset="0"
- id="stop7920" />
- <stop
- style="stop-color:#f8f8f8;stop-opacity:1;"
- offset="1"
- id="stop7922" />
- </linearGradient>
- <linearGradient
- id="linearGradient7902">
- <stop
- style="stop-color:#e2e2e2;stop-opacity:1;"
- offset="0"
- id="stop7904" />
- <stop
- style="stop-color:#e2e2e2;stop-opacity:1;"
- offset="1"
- id="stop7906" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7918"
- id="radialGradient7924"
- cx="-16.71875"
- cy="3.344311"
- fx="-16.71875"
- fy="3.344311"
- r="2"
- gradientTransform="matrix(1.4065972,0,0,2.1428629,6.7977966,-4.7132748)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7918"
- id="radialGradient7931"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.4065972,0,0,2.1428629,6.7977966,-4.7132748)"
- cx="-16.71875"
- cy="3.344311"
- fx="-16.71875"
- fy="3.344311"
- r="2" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="1.5361037"
- inkscape:cy="9.1135498"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:window-width="1920"
- inkscape:window-height="1014"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata7344">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-783.57141,-687.36218)">
- <g
- id="g7926"
- transform="translate(19.984375,0.08593751)">
- <path
- transform="translate(783.57141,687.36218)"
- id="rect7358"
- d="m -18.5,0.40625 0,9.09375 7.03125,0 0,-6.84375 -2.25,-2.25 -4.78125,0 z"
- style="fill:#ffffff;fill-opacity:1;stroke:#878787;stroke-width:0.89999998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- inkscape:connector-curvature="0" />
- <path
- id="rect7896"
- transform="translate(783.57141,687.36218)"
- d="m -17.03125,2 0,6.09375 4,0 0,-5.28125 -0.84375,0 0,-0.8125 -3.15625,0 z"
- style="fill:url(#radialGradient7931);fill-opacity:1;stroke:none"
- inkscape:connector-curvature="0" />
- <path
- transform="translate(783.57141,687.36218)"
- inkscape:connector-curvature="0"
- id="path7894"
- d="m -13.8125,0.32812497 0,2.35937503 2.34375,0"
- style="fill:none;stroke:#878787;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
- </g>
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10"><defs><linearGradient id="a"><stop offset="0" stop-color="#e2e2e2"/><stop offset="1" stop-color="#f8f8f8"/></linearGradient><linearGradient><stop offset="0" stop-color="#e2e2e2"/><stop offset="1" stop-color="#e2e2e2"/></linearGradient><radialGradient xlink:href="#a" cx="-16.719" cy="3.344" fx="-16.719" fy="3.344" r="2" gradientTransform="matrix(1.407 0 0 2.143 6.798 -4.713)" gradientUnits="userSpaceOnUse"/><radialGradient xlink:href="#a" id="b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.407 0 0 2.143 6.798 -4.713)" cx="-16.719" cy="3.344" fx="-16.719" fy="3.344" r="2"/></defs><g><path d="M1.484.492v9.094h7.031v-6.844l-2.25-2.25h-4.781z" fill="#fff" stroke="#878787" stroke-width=".9" stroke-linecap="square"/><path d="M2.953 2.086v6.094h4v-5.281h-.844v-.813h-3.156z" fill="url(#b)"/><path d="M6.172.414v2.359h2.344" stroke="#878787" stroke-width=".9" fill="none"/></g></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- id="svg3813"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="lock-icon.svg">
- <defs
- id="defs3815">
- <linearGradient
- id="linearGradient4348">
- <stop
- style="stop-color:#fff8bb;stop-opacity:1;"
- offset="0"
- id="stop4350" />
- <stop
- style="stop-color:#e9d84d;stop-opacity:1;"
- offset="1"
- id="stop4352" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4348"
- id="radialGradient4354"
- cx="806.97711"
- cy="720.04266"
- fx="806.97711"
- fy="720.04266"
- r="4.5721774"
- gradientTransform="matrix(0.66177697,-3.2424834e-7,5.5632116e-7,1.1354276,273.09596,-96.976308)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4348"
- id="radialGradient4394"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.66177697,-3.2424834e-7,5.5632116e-7,1.1354276,273.09596,-96.976308)"
- cx="806.97711"
- cy="720.04266"
- fx="806.97711"
- fy="720.04266"
- r="4.5721774" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="5.6568542"
- inkscape:cx="-65.758796"
- inkscape:cy="-20.849434"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:window-width="1920"
- inkscape:window-height="1041"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata3818">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-817.85712,-715.93359)">
- <g
- id="g4389"
- transform="translate(14.984745,-0.12063576)">
- <rect
- y="719.4939"
- x="803.37238"
- height="6.0609155"
- width="8.1443548"
- id="rect3832"
- style="fill:url(#radialGradient4394);fill-opacity:1;stroke:#888a85;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none" />
- <path
- sodipodi:end="6.2831853"
- sodipodi:start="3.1415927"
- transform="matrix(0.98668274,0,0,2.0515802,802.05109,715.32099)"
- d="m 2.4622467,2.0134813 c 0,-0.7845354 1.3285159,-1.42052694 2.9673232,-1.4205269 1.6388072,3e-8 2.9673229,0.6359916 2.9673229,1.420527 l -2.9673231,0 z"
- sodipodi:ry="1.420527"
- sodipodi:rx="2.9673231"
- sodipodi:cy="2.0134814"
- sodipodi:cx="5.4295697"
- id="path4346"
- style="fill:none;stroke:#888a85;stroke-width:0.68014622;stroke-linejoin:miter;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none"
- sodipodi:type="arc" />
- <path
- style="fill:none;stroke:#ac5f08;stroke-width:1.04513526px;stroke-linecap:square;stroke-linejoin:miter;stroke-opacity:0.69072164"
- d="m 807.32587,723.57494 0,-1.12645"
- id="path4368"
- inkscape:connector-curvature="0" />
- </g>
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10"><defs><linearGradient id="a"><stop offset="0" stop-color="#fff8bb"/><stop offset="1" stop-color="#e9d84d"/></linearGradient><radialGradient xlink:href="#a" cx="806.977" cy="720.043" fx="806.977" fy="720.043" r="4.572" gradientTransform="matrix(.662 0 0 1.135 273.096 -96.976)" gradientUnits="userSpaceOnUse"/><radialGradient xlink:href="#a" id="b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.662 0 0 1.135 273.096 -96.976)" cx="806.977" cy="720.043" fx="806.977" fy="720.043" r="4.572"/></defs><g transform="translate(-817.857 -715.934) translate(14.985 -.121)"><rect y="719.494" x="803.372" height="6.061" width="8.144" fill="url(#b)" stroke="#888a85" stroke-linejoin="round" stroke-miterlimit="2"/><path transform="matrix(.987 0 0 2.052 802.051 715.321)" d="M2.462 2.013c0-.785 1.329-1.421 2.967-1.421 1.639 0 2.967.636 2.967 1.421h-2.967z" stroke="#888a85" stroke-width=".68" stroke-miterlimit="2" fill="none"/><path d="M807.326 723.575v-1.126" stroke="#ac5f08" stroke-width="1.045" stroke-linecap="square" stroke-opacity=".691" fill="none"/></g></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- id="svg4396"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="Nowy dokument 10">
- <defs
- id="defs4398">
- <linearGradient
- id="linearGradient4947">
- <stop
- style="stop-color:#d2d2d2;stop-opacity:1;"
- offset="0"
- id="stop4949" />
- <stop
- style="stop-color:#f6f6f6;stop-opacity:0;"
- offset="1"
- id="stop4951" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- id="linearGradient4927">
- <stop
- style="stop-color:#888a85;stop-opacity:1;"
- offset="0"
- id="stop4929" />
- <stop
- style="stop-color:#888a85;stop-opacity:0;"
- offset="1"
- id="stop4931" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4927"
- id="linearGradient4933"
- x1="847.07153"
- y1="696.06909"
- x2="847.07153"
- y2="699.29285"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(14,0)" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4947"
- id="radialGradient4953"
- cx="861.14233"
- cy="699.01233"
- fx="861.14233"
- fy="699.01233"
- r="4.987131"
- gradientTransform="matrix(1.1817158,0,0,1.1856764,-156.48316,-109.77743)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient4947"
- id="radialGradient4962"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.1817158,0,0,1.1856764,-156.48316,-109.77743)"
- cx="861.14233"
- cy="699.01233"
- fx="861.14233"
- fy="699.01233"
- r="4.987131" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="8"
- inkscape:cx="17.964337"
- inkscape:cy="-3.5009398"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:window-width="1920"
- inkscape:window-height="1014"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata4401">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-832.14288,-690.2193)">
- <g
- id="g4957"
- transform="translate(-23.99948,-20.005085)">
- <path
- inkscape:connector-curvature="0"
- id="path4415"
- d="m 856.64003,714.98211 4.51344,-4.27677 4.49122,4.2557 0,4.78239 -8.96019,0 z"
- style="fill:url(#radialGradient4962);fill-opacity:1;stroke:#888a85;stroke-width:0.96960205px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1" />
- <path
- sodipodi:nodetypes="ccc"
- style="fill:#a8a7a3;fill-opacity:1;stroke:none"
- d="m 858.18557,715.14414 2.96409,-2.80866 2.94949,2.79482"
- id="path4937"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:nodetypes="ccccc"
- inkscape:connector-curvature="0"
- id="path4955"
- d="m 857.89337,719.26617 3.26025,-3.14859 3.23877,3.11734 -3.24112,-1.90625 z"
- style="fill:#888a85;fill-opacity:1;stroke:none" />
- </g>
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10"><defs><linearGradient id="b"><stop offset="0" stop-color="#d2d2d2"/><stop offset="1" stop-color="#f6f6f6" stop-opacity="0"/></linearGradient><linearGradient id="a"><stop offset="0" stop-color="#888a85"/><stop offset="1" stop-color="#888a85" stop-opacity="0"/></linearGradient><linearGradient xlink:href="#a" x1="847.072" y1="696.069" x2="847.072" y2="699.293" gradientUnits="userSpaceOnUse" gradientTransform="translate(14)"/><radialGradient xlink:href="#b" cx="861.142" cy="699.012" fx="861.142" fy="699.012" r="4.987" gradientTransform="matrix(1.182 0 0 1.186 -156.483 -109.777)" gradientUnits="userSpaceOnUse"/><radialGradient xlink:href="#b" id="c" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.182 0 0 1.186 -156.483 -109.777)" cx="861.142" cy="699.012" fx="861.142" fy="699.012" r="4.987"/></defs><g><path d="M.498 4.758l4.513-4.277 4.491 4.256v4.782h-8.96z" fill="url(#c)" stroke="#888a85" stroke-width=".97" stroke-linejoin="round"/><path d="M2.044 4.92l2.964-2.809 2.949 2.795" fill="#a8a7a3"/><path d="M1.751 9.042l3.26-3.149 3.239 3.117-3.241-1.906z" fill="#888a85"/></g></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- id="svg4983"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="news-icon.svg">
- <defs
- id="defs4985">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient5528">
- <stop
- style="stop-color:#cccccc;stop-opacity:1;"
- offset="0"
- id="stop5530" />
- <stop
- style="stop-color:#cccccc;stop-opacity:0;"
- offset="1"
- id="stop5532" />
- </linearGradient>
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5528"
- id="linearGradient5534"
- x1="902.61218"
- y1="696.32751"
- x2="902.61218"
- y2="694.04303"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5528"
- id="linearGradient5566"
- gradientUnits="userSpaceOnUse"
- x1="902.61218"
- y1="696.32751"
- x2="902.61218"
- y2="694.04303" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5528"
- id="linearGradient3048"
- gradientUnits="userSpaceOnUse"
- x1="902.61218"
- y1="696.32751"
- x2="902.61218"
- y2="694.04303"
- gradientTransform="translate(-19.98763,0.00341)" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5528"
- id="linearGradient3799"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-29.98763,0.00341)"
- x1="902.61218"
- y1="696.32751"
- x2="902.61218"
- y2="694.04303" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5528"
- id="linearGradient3821"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-907.84475,-687.35877)"
- x1="902.61218"
- y1="696.32751"
- x2="902.61218"
- y2="694.04303" />
- <linearGradient
- inkscape:collect="always"
- xlink:href="#linearGradient5528"
- id="linearGradient3824"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-19.98763,0.00341)"
- x1="902.61218"
- y1="696.32751"
- x2="902.61218"
- y2="694.04303" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="0.50343757"
- inkscape:cy="4.9811997"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:window-width="1920"
- inkscape:window-height="1041"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata4988">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-877.85712,-687.36218)">
- <g
- style="font-size:41.13991928px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- id="text5536">
- <path
- inkscape:connector-curvature="0"
- d="m 879.87841,689.39933 0.19335,0 0,0.60364 0.33948,0 0,0.14614 -0.53283,0 0,-0.74978"
- style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
- id="path3051" />
- <path
- inkscape:connector-curvature="0"
- d="m 880.52524,689.58665 0.17978,0 0,0.56246 -0.17978,0 0,-0.56246 m 0,-0.21896 0.17978,0 0,0.14664 -0.17978,0 0,-0.14664"
- style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
- id="path3053" />
- <path
- inkscape:connector-curvature="0"
- d="m 881.05857,690.06775 0,0.29529 -0.17979,0 0,-0.77639 0.17979,0 0,0.0824 c 0.0248,-0.0328 0.0522,-0.0569 0.0824,-0.0723 0.0301,-0.0157 0.0648,-0.0236 0.10396,-0.0236 0.0693,0 0.12621,0.0276 0.17074,0.0829 0.0445,0.0549 0.0668,0.12572 0.0668,0.21243 0,0.0867 -0.0223,0.15769 -0.0668,0.21293 -0.0445,0.0549 -0.10144,0.0824 -0.17074,0.0824 -0.0392,0 -0.0738,-0.008 -0.10396,-0.0231 -0.0301,-0.0157 -0.0576,-0.04 -0.0824,-0.0728 m 0.11952,-0.36409 c -0.0385,0 -0.0681,0.0142 -0.0889,0.0427 -0.0204,0.0281 -0.0306,0.0688 -0.0306,0.12203 0,0.0532 0.0102,0.0941 0.0306,0.12254 0.0208,0.0281 0.0504,0.0422 0.0889,0.0422 0.0385,0 0.0678,-0.0141 0.0879,-0.0422 0.0204,-0.0281 0.0306,-0.069 0.0306,-0.12254 0,-0.0536 -0.0102,-0.0944 -0.0306,-0.12253 -0.0201,-0.0281 -0.0494,-0.0422 -0.0879,-0.0422"
- style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
- id="path3055" />
- <path
- inkscape:connector-curvature="0"
- d="m 882.05543,689.60423 0,0.13659 c -0.0385,-0.0161 -0.0757,-0.0281 -0.11149,-0.0362 -0.0358,-0.008 -0.0696,-0.0121 -0.10144,-0.0121 -0.0341,0 -0.0596,0.004 -0.0763,0.0131 -0.0164,0.008 -0.0246,0.0214 -0.0246,0.0392 0,0.0144 0.006,0.0255 0.0186,0.0332 0.0127,0.008 0.0353,0.0134 0.0678,0.0171 l 0.0316,0.005 c 0.0921,0.0117 0.15401,0.031 0.18582,0.0578 0.0318,0.0268 0.0477,0.0688 0.0477,0.12605 -10e-6,0.0599 -0.0221,0.10496 -0.0663,0.13509 -0.0442,0.0301 -0.11015,0.0452 -0.19787,0.0452 -0.0372,0 -0.0757,-0.003 -0.11551,-0.009 -0.0395,-0.006 -0.0802,-0.0144 -0.12203,-0.0261 l 0,-0.1366 c 0.0358,0.0174 0.0725,0.0305 0.10998,0.0392 0.0378,0.009 0.0762,0.0131 0.115,0.0131 0.0352,0 0.0616,-0.005 0.0793,-0.0146 0.0178,-0.01 0.0266,-0.0241 0.0266,-0.0432 0,-0.0161 -0.006,-0.028 -0.0186,-0.0357 -0.0121,-0.008 -0.0363,-0.0142 -0.0728,-0.0186 l -0.0316,-0.004 c -0.08,-0.01 -0.1361,-0.0286 -0.16824,-0.0557 -0.0321,-0.0271 -0.0482,-0.0683 -0.0482,-0.12354 0,-0.0596 0.0204,-0.10379 0.0613,-0.13258 0.0408,-0.0288 0.10345,-0.0432 0.18782,-0.0432 0.0331,0 0.068,0.003 0.10446,0.008 0.0365,0.005 0.0762,0.0129 0.11902,0.0236"
- style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
- id="path3057" />
- <path
- inkscape:connector-curvature="0"
- d="m 882.22266,689.93015 0,-0.3435 0.18079,0 0,0.0563 c 0,0.0305 -1.7e-4,0.0688 -5e-4,0.115 -3.3e-4,0.0459 -5e-4,0.0765 -5e-4,0.0919 0,0.0452 10e-4,0.0778 0.004,0.0979 0.002,0.0198 0.006,0.0342 0.0121,0.0432 0.007,0.0117 0.0169,0.0208 0.0286,0.0271 0.0121,0.006 0.0258,0.01 0.0412,0.01 0.0375,0 0.067,-0.0144 0.0884,-0.0432 0.0214,-0.0288 0.0321,-0.0688 0.0321,-0.12003 l 0,-0.27771 0.17978,0 0,0.56246 -0.17978,0 0,-0.0814 c -0.0271,0.0328 -0.0559,0.0571 -0.0864,0.0728 -0.0301,0.0154 -0.0634,0.0231 -0.0999,0.0231 -0.0649,0 -0.1145,-0.0199 -0.14865,-0.0598 -0.0338,-0.0398 -0.0507,-0.0978 -0.0507,-0.17376"
- style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
- id="path3059" />
- <path
- inkscape:connector-curvature="0"
- d="m 883.48317,689.68006 c 0.0228,-0.0348 0.0497,-0.0613 0.0809,-0.0793 0.0315,-0.0184 0.066,-0.0276 0.10345,-0.0276 0.0646,0 0.11383,0.0199 0.14765,0.0598 0.0338,0.0398 0.0507,0.0978 0.0507,0.17376 l 0,0.3425 -0.18079,0 0,-0.29328 c 3.3e-4,-0.004 5e-4,-0.009 5e-4,-0.0136 3.3e-4,-0.005 5e-4,-0.0114 5e-4,-0.0201 0,-0.0398 -0.006,-0.0686 -0.0176,-0.0864 -0.0117,-0.0181 -0.0306,-0.0271 -0.0567,-0.0271 -0.0342,0 -0.0606,0.0141 -0.0794,0.0422 -0.0184,0.0281 -0.028,0.0688 -0.0286,0.12203 l 0,0.27621 -0.18079,0 0,-0.29328 c 0,-0.0623 -0.005,-0.10228 -0.0161,-0.12003 -0.0107,-0.0181 -0.0298,-0.0271 -0.0573,-0.0271 -0.0345,0 -0.0611,0.0142 -0.0798,0.0427 -0.0187,0.0281 -0.0281,0.0685 -0.0281,0.12103 l 0,0.27671 -0.18079,0 0,-0.56246 0.18079,0 0,0.0824 c 0.0221,-0.0318 0.0474,-0.0557 0.0758,-0.0718 0.0288,-0.0161 0.0604,-0.0241 0.0949,-0.0241 0.0388,0 0.0732,0.009 0.10295,0.0281 0.0298,0.0187 0.0524,0.045 0.0678,0.0788"
- style="font-size:1.02849805px;font-weight:bold;-inkscape-font-specification:Sans Bold"
- id="path3061" />
- </g>
- <g
- transform="scale(1.0447384,0.95717741)"
- style="font-size:48.46436691px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- id="text5540">
- <path
- inkscape:connector-curvature="0"
- d="m 847.3858,720.32852 -0.1621,0.43956 0.3248,0 -0.1627,-0.43956 m -0.0674,-0.11773 0.13548,0 0.33662,0.88327 -0.12423,0 -0.0805,-0.22659 -0.39815,0 -0.0805,0.22659 -0.12601,0 0.33721,-0.88327"
- style="font-size:1.21160913px;-inkscape-font-specification:Sans"
- id="path3064" />
- </g>
- <g
- style="font-size:1px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- id="text5544">
- <path
- inkscape:connector-curvature="0"
- d="m 883.88953,691.50378 0.13281,0 0.32324,0.60987 0,-0.60987 0.0957,0 0,0.72901 -0.13281,0 -0.32324,-0.60987 0,0.60987 -0.0957,0 0,-0.72901"
- id="path3067" />
- <path
- inkscape:connector-curvature="0"
- d="m 885.10144,691.93689 0,0.0439 -0.41309,0 c 0.004,0.0619 0.0225,0.10905 0.0557,0.14161 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.10009,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0107 -0.10302,0.0107 -0.0872,0 -0.15642,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11947 -0.0762,-0.20606 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13167,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0492 -0.0145,-0.0884 -0.0415,-0.11767 -0.0267,-0.0293 -0.0622,-0.0439 -0.10644,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0518,0.11963 l 0.32032,-4.9e-4"
- id="path3069" />
- <path
- inkscape:connector-curvature="0"
- d="m 885.19666,691.68591 0.0898,0 0.1123,0.42676 0.11182,-0.42676 0.10596,0 0.1123,0.42676 0.11182,-0.42676 0.0898,0 -0.14306,0.54688 -0.10596,0 -0.11768,-0.44824 -0.11816,0.44824 -0.10596,0 -0.14306,-0.54688"
- id="path3071" />
- </g>
- <g
- style="font-size:1px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
- id="text5548">
- <path
- inkscape:connector-curvature="0"
- d="m 883.88953,693.52722 0.13281,0 0.32324,0.60986 0,-0.60986 0.0957,0 0,0.72901 -0.13281,0 -0.32324,-0.60987 0,0.60987 -0.0957,0 0,-0.72901"
- id="path3074" />
- <path
- inkscape:connector-curvature="0"
- d="m 885.10144,693.96033 0,0.0439 -0.41309,0 c 0.004,0.0618 0.0225,0.10905 0.0557,0.1416 0.0335,0.0322 0.0801,0.0483 0.13965,0.0483 0.0345,0 0.0679,-0.004 0.10009,-0.0127 0.0326,-0.008 0.0648,-0.0212 0.0967,-0.0381 l 0,0.085 c -0.0322,0.0137 -0.0653,0.0241 -0.0991,0.0312 -0.0339,0.007 -0.0682,0.0108 -0.10302,0.0108 -0.0872,0 -0.15642,-0.0254 -0.20752,-0.0762 -0.0508,-0.0508 -0.0762,-0.11946 -0.0762,-0.20605 0,-0.0895 0.0241,-0.16048 0.0723,-0.21289 0.0485,-0.0527 0.11377,-0.0791 0.1958,-0.0791 0.0736,0 0.13167,0.0238 0.17432,0.0713 0.043,0.0472 0.0645,0.11149 0.0645,0.19287 m -0.0898,-0.0264 c -6.5e-4,-0.0491 -0.0145,-0.0884 -0.0415,-0.11768 -0.0267,-0.0293 -0.0622,-0.0439 -0.10644,-0.0439 -0.0501,0 -0.0903,0.0142 -0.12061,0.0425 -0.0299,0.0283 -0.0472,0.0682 -0.0518,0.11963 l 0.32032,-4.9e-4"
- id="path3076" />
- <path
- inkscape:connector-curvature="0"
- d="m 885.19666,693.70935 0.0898,0 0.1123,0.42676 0.11182,-0.42676 0.10596,0 0.1123,0.42676 0.11182,-0.42676 0.0898,0 -0.14306,0.54688 -0.10596,0 -0.11768,-0.44825 -0.11816,0.44825 -0.10596,0 -0.14306,-0.54688"
- id="path3078" />
- </g>
- <rect
- style="fill:#c0c1be;fill-opacity:1;stroke:#000000;stroke-width:0.10008001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:2;stroke-opacity:1;stroke-dasharray:none"
- id="rect5552"
- width="2.8749001"
- height="2.8749392"
- x="879.96875"
- y="691.46332" />
- <path
- style="fill:url(#linearGradient3824);fill-opacity:1;stroke:#888a85;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
- d="m 878.38837,687.89343 0,7.40625 c -2.1e-4,0.0102 0,0.021 0,0.0312 0,0.8311 0.6689,1.5 1.5,1.5 l 5.90625,0 c 0.0102,2.1e-4 0.021,0 0.0312,0 0.8311,0 1.5,-0.6689 1.5,-1.5 0,-0.0206 8.2e-4,-0.0421 0,-0.0625 l 0,-7.375 -8.9375,0 z"
- id="path3797"
- inkscape:connector-curvature="0" />
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10"><defs><linearGradient id="a"><stop offset="0" stop-color="#ccc"/><stop offset="1" stop-color="#ccc" stop-opacity="0"/></linearGradient><linearGradient xlink:href="#a" x1="902.612" y1="696.328" x2="902.612" y2="694.043" gradientUnits="userSpaceOnUse"/><linearGradient xlink:href="#a" gradientUnits="userSpaceOnUse" x1="902.612" y1="696.328" x2="902.612" y2="694.043"/><linearGradient xlink:href="#a" gradientUnits="userSpaceOnUse" x1="902.612" y1="696.328" x2="902.612" y2="694.043" gradientTransform="translate(-19.988 .003)"/><linearGradient xlink:href="#a" gradientUnits="userSpaceOnUse" gradientTransform="translate(-29.988 .003)" x1="902.612" y1="696.328" x2="902.612" y2="694.043"/><linearGradient xlink:href="#a" gradientUnits="userSpaceOnUse" gradientTransform="translate(-907.845 -687.359)" x1="902.612" y1="696.328" x2="902.612" y2="694.043"/><linearGradient xlink:href="#a" id="b" gradientUnits="userSpaceOnUse" gradientTransform="translate(-19.988 .003)" x1="902.612" y1="696.328" x2="902.612" y2="694.043"/></defs><g transform="translate(-877.857 -687.362)"><g style="line-height:125%" font-size="1.028" letter-spacing="0" word-spacing="0" font-family="Sans" font-weight="bold"><path d="M879.878 689.399h.193v.604h.339v.146h-.533v-.75" style="-inkscape-font-specification:Sans Bold"/><path d="M880.525 689.587h.18v.562h-.18v-.562m0-.219h.18v.147h-.18v-.147" style="-inkscape-font-specification:Sans Bold"/><path d="M881.059 690.068v.295h-.18v-.776h.18v.082l.082-.072.104-.024c.069 0 .126.028.171.083.044.055.067.126.067.212 0 .087-.022.158-.067.213-.044.055-.101.082-.171.082l-.104-.023-.082-.073m.12-.364l-.089.043-.031.122.031.123.089.042.088-.042.031-.123-.031-.123-.088-.042" style="-inkscape-font-specification:Sans Bold"/><path d="M882.055 689.604v.137l-.111-.036-.101-.012-.076.013-.025.039.019.033.068.017.032.005.186.058.048.126c0 .06-.022.105-.066.135-.044.03-.11.045-.198.045l-.116-.009-.122-.026v-.137l.11.039.115.013.079-.015.027-.043-.019-.036-.073-.019-.032-.004-.168-.056-.048-.124.061-.133.188-.043.104.008.119.024" style="-inkscape-font-specification:Sans Bold"/><path d="M882.223 689.93v-.344h.181v.056l-.001.115-.001.092.004.098.012.043.029.027.041.01.088-.043.032-.12v-.278h.18v.562h-.18v-.081l-.086.073-.1.023c-.065 0-.115-.02-.149-.06-.034-.04-.051-.098-.051-.174" style="-inkscape-font-specification:Sans Bold"/><path d="M883.483 689.68l.081-.079.103-.028c.065 0 .114.02.148.06.034.04.051.098.051.174v.343h-.181v-.293l.001-.014.001-.02-.018-.086-.057-.027-.079.042-.029.122v.276h-.181v-.293l-.016-.12-.057-.027-.08.043-.028.121v.277h-.181v-.562h.181v.082l.076-.072.095-.024.103.028.068.079" style="-inkscape-font-specification:Sans Bold"/></g><path d="M885.296 689.482l-.169.421h.339l-.17-.421m-.07-.113h.142l.352.845h-.13l-.084-.217h-.416l-.084.217h-.132l.352-.845" style="-inkscape-font-specification:Sans" font-size="1.212" letter-spacing="0" word-spacing="0" font-family="Sans"/><g style="line-height:125%" font-size="1" letter-spacing="0" word-spacing="0" font-family="Sans"><path d="M883.89 691.504h.133l.323.61v-.61h.096v.729h-.133l-.323-.61v.61h-.096v-.729"/><path d="M885.101 691.937v.044h-.413l.056.142.14.048.1-.013.097-.038v.085l-.099.031-.103.011c-.087 0-.156-.025-.208-.076-.051-.051-.076-.119-.076-.206 0-.089.024-.16.072-.213.049-.053.114-.079.196-.079.074 0 .132.024.174.071.043.047.065.111.065.193m-.09-.026l-.042-.118-.106-.044-.121.043-.052.12h.32"/><path d="M885.197 691.686h.09l.112.427.112-.427h.106l.112.427.112-.427h.09l-.143.547h-.106l-.118-.448-.118.448h-.106l-.143-.547"/></g><g style="line-height:125%" font-size="1" letter-spacing="0" word-spacing="0" font-family="Sans"><path d="M883.89 693.527h.133l.323.61v-.61h.096v.729h-.133l-.323-.61v.61h-.096v-.729"/><path d="M885.101 693.96v.044h-.413l.056.142.14.048.1-.013.097-.038v.085l-.099.031-.103.011c-.087 0-.156-.025-.208-.076-.051-.051-.076-.119-.076-.206 0-.089.024-.16.072-.213.049-.053.114-.079.196-.079.074 0 .132.024.174.071.043.047.065.111.065.193m-.09-.026l-.042-.118-.106-.044-.121.043-.052.12h.32"/><path d="M885.197 693.709h.09l.112.427.112-.427h.106l.112.427.112-.427h.09l-.143.547h-.106l-.118-.448-.118.448h-.106l-.143-.547"/></g><rect width="2.875" height="2.875" x="879.969" y="691.463" fill="#c0c1be" stroke="#000" stroke-width=".1" stroke-linecap="square" stroke-linejoin="bevel" stroke-miterlimit="2"/><path d="M878.388 687.893v7.436999999999999c0 .831.669 1.5 1.5 1.5h5.936999999999999c.831 0 1.5-.669 1.5-1.5v-7.438h-8.938z" fill="url(#b)" stroke="#888a85"/></g></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- id="svg5587"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="talk-icon.svg">
- <defs
- id="defs5589">
- <linearGradient
- inkscape:collect="always"
- id="linearGradient6134">
- <stop
- style="stop-color:#e9e9e9;stop-opacity:1;"
- offset="0"
- id="stop6136" />
- <stop
- style="stop-color:#e9e9e9;stop-opacity:0;"
- offset="1"
- id="stop6138" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6134"
- id="radialGradient6140"
- cx="755.80591"
- cy="683.84875"
- fx="755.80591"
- fy="683.84875"
- r="2.656485"
- gradientTransform="matrix(2.4898047,0,0,2.5230165,-1126.0032,-1041.5417)"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient6134"
- id="radialGradient6146"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(2.4898047,0,0,2.5230165,-1126.0032,-1041.5417)"
- cx="755.80591"
- cy="683.84875"
- fx="755.80591"
- fy="683.84875"
- r="2.656485" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="45.254834"
- inkscape:cx="8.6391885"
- inkscape:cy="3.9760181"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:window-width="1920"
- inkscape:window-height="1041"
- inkscape:window-x="0"
- inkscape:window-y="0"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata5592">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title />
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-763.57141,-681.64789)">
- <g
- id="g6142"
- transform="matrix(1.0212411,0,0,0.97119998,-5.0201418,19.699049)">
- <path
- sodipodi:nodetypes="sssscccsssss"
- inkscape:connector-curvature="0"
- id="rect5606"
- transform="translate(763.57141,681.64789)"
- d="m -8.625,0.4375 c -0.4851513,0 -0.875,0.38984873 -0.875,0.875 l 0,4.375 c 0,0.4851513 0.3898487,0.875 0.875,0.875 l 0.125,0 0,2.6739053 3.4513641,-2.6739053 2.5173859,0 c 0.4851513,0 0.875,-0.3898487 0.875,-0.875 l 0,-4.375 c 0,-0.48515127 -0.3898487,-0.875 -0.875,-0.875 z"
- style="fill:#ffffff;fill-opacity:1;stroke:#888a85;stroke-width:0.98900002;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:9.80000019;stroke-opacity:1;stroke-dasharray:none" />
- <path
- style="fill:url(#radialGradient6146);fill-opacity:1;stroke:none"
- d="m 755.96029,683.3154 c -0.32861,0 -0.59267,0.23853 -0.59267,0.53539 l 0,2.67695 c 0,0.29685 0.26406,0.53539 0.59267,0.53539 l 0.0847,0 0,1.63611 2.33776,-1.63611 1.70516,0 c 0.32862,0 0.59268,-0.23854 0.59268,-0.53539 l 0,-2.67695 c 0,-0.29686 -0.26406,-0.53539 -0.59268,-0.53539 z"
- id="path6124"
- inkscape:connector-curvature="0"
- sodipodi:nodetypes="sssscccsssss" />
- </g>
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10"><defs><linearGradient id="a"><stop offset="0" stop-color="#e9e9e9"/><stop offset="1" stop-color="#e9e9e9" stop-opacity="0"/></linearGradient><radialGradient xlink:href="#a" cx="755.806" cy="683.849" fx="755.806" fy="683.849" r="2.656" gradientTransform="matrix(2.49 0 0 2.523 -1126.003 -1041.542)" gradientUnits="userSpaceOnUse"/><radialGradient xlink:href="#a" id="b" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.49 0 0 2.523 -1126.003 -1041.542)" cx="755.806" cy="683.849" fx="755.806" fy="683.849" r="2.656"/></defs><g><path transform="matrix(1.021 0 0 .971 11.015 -.069)" d="M-8.625.438c-.485 0-.875.39-.875.875v4.375c0 .485.39.875.875.875h.125v2.674l3.451-2.674h2.517c.485 0 .875-.39.875-.875v-4.375c0-.485-.39-.875-.875-.875z" fill="#fff" stroke="#888a85" stroke-width=".989" stroke-linecap="square" stroke-miterlimit="9.8"/><path d="M3.243 1.55c-.336 0-.605.232-.605.52v2.599c0 .288.27.52.605.52h.086v1.589l2.387-1.589h1.741c.336 0 .605-.232.605-.52v-2.599c0-.288-.27-.52-.605-.52z" fill="url(#b)"/></g></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- version="1.1"
- width="12"
- height="13.837458"
- id="svg2108">
- <metadata
- id="metadata68">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <defs
- id="defs3">
- <linearGradient
- id="linearGradient4356">
- <stop
- id="stop4358"
- style="stop-color:#000000;stop-opacity:1"
- offset="0" />
- <stop
- id="stop4360"
- style="stop-color:#000000;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient4344">
- <stop
- id="stop4346"
- style="stop-color:#727e0a;stop-opacity:1"
- offset="0" />
- <stop
- id="stop4348"
- style="stop-color:#5b6508;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient4338">
- <stop
- id="stop4340"
- style="stop-color:#e9b15e;stop-opacity:1"
- offset="0" />
- <stop
- id="stop4342"
- style="stop-color:#966416;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient4163">
- <stop
- id="stop4165"
- style="stop-color:#3b74bc;stop-opacity:1"
- offset="0" />
- <stop
- id="stop4167"
- style="stop-color:#2d5990;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient3824">
- <stop
- id="stop3826"
- style="stop-color:#ffffff;stop-opacity:1"
- offset="0" />
- <stop
- id="stop3828"
- style="stop-color:#c9c9c9;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient3816">
- <stop
- id="stop3818"
- style="stop-color:#000000;stop-opacity:1"
- offset="0" />
- <stop
- id="stop3820"
- style="stop-color:#000000;stop-opacity:0"
- offset="1" />
- </linearGradient>
- <linearGradient
- id="linearGradient3800">
- <stop
- id="stop3802"
- style="stop-color:#f4d9b1;stop-opacity:1"
- offset="0" />
- <stop
- id="stop3804"
- style="stop-color:#df9725;stop-opacity:1"
- offset="1" />
- </linearGradient>
- <radialGradient
- cx="29.344931"
- cy="17.064077"
- r="9.1620579"
- fx="29.344931"
- fy="17.064077"
- id="radialGradient3806"
- xlink:href="#linearGradient3800"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="31.112698"
- cy="19.008621"
- r="8.6620579"
- fx="31.112698"
- fy="19.008621"
- id="radialGradient3822"
- xlink:href="#linearGradient3816"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="30.935921"
- y1="29.553486"
- x2="30.935921"
- y2="35.803486"
- id="linearGradient3830"
- xlink:href="#linearGradient3824"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="28.089741"
- cy="27.203083"
- r="13.56536"
- fx="28.089741"
- fy="27.203083"
- id="radialGradient4169"
- xlink:href="#linearGradient4163"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.297564,0,0,0.884831,-8.358505,4.940469)" />
- <radialGradient
- cx="29.344931"
- cy="17.064077"
- r="9.1620579"
- fx="29.344931"
- fy="17.064077"
- id="radialGradient4171"
- xlink:href="#linearGradient3800"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.787998,0,0,0.787998,6.221198,3.617627)" />
- <linearGradient
- x1="30.935921"
- y1="29.553486"
- x2="30.935921"
- y2="35.803486"
- id="linearGradient4175"
- xlink:href="#linearGradient3824"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(0.707108,0)" />
- <radialGradient
- cx="31.112698"
- cy="19.008621"
- r="8.6620579"
- fx="31.112698"
- fy="19.008621"
- id="radialGradient4179"
- xlink:href="#linearGradient3816"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="30.935921"
- y1="29.553486"
- x2="30.935921"
- y2="35.803486"
- id="linearGradient4326"
- xlink:href="#linearGradient3824"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-12.41789,-7)" />
- <radialGradient
- cx="29.344931"
- cy="17.064077"
- r="9.1620579"
- fx="29.344931"
- fy="17.064077"
- id="radialGradient4328"
- xlink:href="#linearGradient4338"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.787998,0,0,0.787998,6.221198,3.617627)" />
- <radialGradient
- cx="31.112698"
- cy="19.008621"
- r="8.6620579"
- fx="31.112698"
- fy="19.008621"
- id="radialGradient4330"
- xlink:href="#linearGradient3816"
- gradientUnits="userSpaceOnUse" />
- <linearGradient
- x1="30.935921"
- y1="29.553486"
- x2="30.935921"
- y2="35.803486"
- id="linearGradient4332"
- xlink:href="#linearGradient3824"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-13.125,-7)" />
- <radialGradient
- cx="31.112698"
- cy="19.008621"
- r="8.6620579"
- fx="31.112698"
- fy="19.008621"
- id="radialGradient4336"
- xlink:href="#linearGradient3816"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="16.214741"
- cy="19.836468"
- r="13.56536"
- fx="16.214741"
- fy="19.836468"
- id="radialGradient4350"
- xlink:href="#linearGradient4344"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.681917,0,8.233773)" />
- <linearGradient
- x1="20.661695"
- y1="35.817974"
- x2="22.626925"
- y2="36.217758"
- id="linearGradient4362"
- xlink:href="#linearGradient4356"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,6.231716,-2.651466)" />
- <linearGradient
- x1="22.686766"
- y1="36.3904"
- x2="21.408455"
- y2="35.739632"
- id="linearGradient4366"
- xlink:href="#linearGradient4356"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,55.1096,-3.945209)" />
- <linearGradient
- x1="20.661695"
- y1="35.817974"
- x2="22.626925"
- y2="36.217758"
- id="linearGradient4372"
- xlink:href="#linearGradient4356"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.07212,-9.82492)" />
- <linearGradient
- x1="22.686766"
- y1="36.3904"
- x2="21.408455"
- y2="35.739632"
- id="linearGradient4374"
- xlink:href="#linearGradient4356"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)" />
- <linearGradient
- x1="22.686766"
- y1="36.3904"
- x2="21.408455"
- y2="35.739632"
- id="linearGradient1366"
- xlink:href="#linearGradient4356"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,41.80576,-11.11866)" />
- <linearGradient
- x1="20.661695"
- y1="35.817974"
- x2="22.626925"
- y2="36.217758"
- id="linearGradient1369"
- xlink:href="#linearGradient4356"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,-7.07212,-9.82492)" />
- <linearGradient
- x1="30.935921"
- y1="29.553486"
- x2="30.935921"
- y2="35.803486"
- id="linearGradient1372"
- xlink:href="#linearGradient3824"
- gradientUnits="userSpaceOnUse"
- gradientTransform="translate(-12.41789,-7)" />
- <radialGradient
- cx="16.214741"
- cy="19.836468"
- r="13.56536"
- fx="16.214741"
- fy="19.836468"
- id="radialGradient1381"
- xlink:href="#linearGradient4344"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1,0,0,0.681917,0,8.233773)" />
- <radialGradient
- cx="31.112698"
- cy="19.008621"
- r="8.6620579"
- fx="31.112698"
- fy="19.008621"
- id="radialGradient2243"
- xlink:href="#linearGradient3816"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="28.089741"
- cy="27.203083"
- r="13.56536"
- fx="28.089741"
- fy="27.203083"
- id="radialGradient2245"
- xlink:href="#linearGradient4163"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(1.297564,0,0,0.884831,-8.358505,4.940469)" />
- <linearGradient
- x1="30.935921"
- y1="29.553486"
- x2="30.935921"
- y2="35.803486"
- id="linearGradient2247"
- xlink:href="#linearGradient3824"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="31.112698"
- cy="19.008621"
- r="8.6620579"
- fx="31.112698"
- fy="19.008621"
- id="radialGradient2249"
- xlink:href="#linearGradient3816"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- cx="29.344931"
- cy="17.064077"
- r="9.1620579"
- fx="29.344931"
- fy="17.064077"
- id="radialGradient2251"
- xlink:href="#linearGradient3800"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.787998,0,0,0.787998,6.221198,3.617627)" />
- <linearGradient
- x1="20.661695"
- y1="35.817974"
- x2="22.626925"
- y2="36.217758"
- id="linearGradient2253"
- xlink:href="#linearGradient4356"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(0.983375,0.181588,-0.181588,0.983375,6.231716,-2.651466)" />
- <linearGradient
- x1="22.686766"
- y1="36.3904"
- x2="21.408455"
- y2="35.739632"
- id="linearGradient2255"
- xlink:href="#linearGradient4356"
- gradientUnits="userSpaceOnUse"
- gradientTransform="matrix(-0.977685,0.210075,0.210075,0.977685,55.1096,-3.945209)" />
- </defs>
- <g
- transform="translate(-5.0000039,-32.070112)"
- id="layer1"
- style="display:inline" />
- <g
- transform="translate(-5.0000039,-32.070112)"
- id="layer2"
- style="display:inline">
- <g
- transform="matrix(0.39012793,0,0,0.39012793,-1.0891578,28.22979)"
- id="g2230">
- <path
- d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
- transform="matrix(1.77551,0,0,0.959183,-24.25322,18.77153)"
- id="path4306"
- style="color:#000000;fill:url(#radialGradient2243);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
- <path
- d="m 25.986174,41.636039 10.606602,0 c 3.005204,0 5.980484,-1.101932 7.071067,-4.242641 1.035639,-2.982476 0.176777,-8.662058 -6.540737,-13.258252 l -12.551146,0 c -6.717514,4.24264 -7.556991,10.044831 -6.010407,13.435028 1.575595,3.45379 4.24264,4.065865 7.424621,4.065865 z"
- id="path4308"
- style="color:#000000;fill:url(#radialGradient2245);fill-opacity:1;fill-rule:evenodd;stroke:#204a87;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
- <path
- d="m 26.693281,25.726136 c 3.18198,2.828427 4.596194,13.081476 4.596194,13.081476 0,0 1.414213,-10.253048 3.889087,-13.258252 l -8.485281,0.176776 z"
- id="path4310"
- style="color:#000000;fill:url(#linearGradient2247);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
- <path
- d="m 28.972721,26.786797 c 0,0 -2.151323,1.660335 -1.965991,3.660533 -2.041226,-1.800794 -2.099873,-5.251524 -2.099873,-5.251524 l 4.065864,1.590991 z"
- id="path4312"
- style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
- <path
- d="m 25.914862,40.593933 10.493447,-0.0221 c 2.639723,0 5.253161,-0.967919 6.211112,-3.726667 0.909689,-2.61976 -0.09472,-7.608614 -5.995279,-11.645837 L 25.099417,24.956264 c -5.900557,3.726667 -7.04262,8.823219 -5.662029,12.044182 1.380592,3.220963 3.395211,3.57139 6.477474,3.593487 z"
- id="path4314"
- style="opacity:0.21518986;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.99999976px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
- <path
- d="m 33.410795,26.786797 c 0,0 2.151323,1.660335 1.965991,3.660533 2.041226,-1.800794 2.099873,-5.251524 2.099873,-5.251524 l -4.065864,1.590991 z"
- id="path4316"
- style="color:#000000;fill:#729fcf;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
- <path
- d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
- transform="translate(-0.125,3.5)"
- id="path4318"
- style="color:#000000;fill:url(#radialGradient2249);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
- <path
- d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
- id="path4320"
- style="color:#000000;fill:url(#radialGradient2251);fill-opacity:1;fill-rule:evenodd;stroke:#c17d11;stroke-width:1px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
- <path
- d="m 39.774755,19.008621 a 8.6620579,8.6620579 0 1 1 -17.324115,0 8.6620579,8.6620579 0 1 1 17.324115,0 z"
- transform="matrix(0.877095,0,0,0.877095,3.823927,2.336267)"
- id="path4322"
- style="opacity:0.19620254;color:#000000;fill:none;stroke:#ffffff;stroke-width:1.14012825px;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible" />
- <path
- d="m 21.85179,40.775197 c -1.247607,-0.544969 -1.805994,-1.858277 -1.805994,-1.858277 0.841281,-4.069136 3.719925,-7.046216 3.719925,-7.046216 0,0 -2.279321,6.411514 -1.913931,8.904493 z"
- id="path4354"
- style="opacity:0.22784807;color:#000000;fill:url(#linearGradient2253);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
- <path
- d="m 40.757497,39.916846 c 1.231251,-0.580978 1.80438,-2.002321 1.80438,-2.002321 -0.95912,-4.042983 -3.976149,-6.842821 -3.976149,-6.842821 0,0 2.464593,6.342602 2.171769,8.845142 z"
- id="path4364"
- style="opacity:0.22784807;color:#000000;fill:url(#linearGradient2255);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;marker:none;visibility:visible;display:inline;overflow:visible" />
- </g>
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="12" height="13.837"><defs><linearGradient id="g"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="f"><stop offset="0" stop-color="#727e0a"/><stop offset="1" stop-color="#5b6508"/></linearGradient><linearGradient id="e"><stop offset="0" stop-color="#e9b15e"/><stop offset="1" stop-color="#966416"/></linearGradient><linearGradient id="d"><stop offset="0" stop-color="#3b74bc"/><stop offset="1" stop-color="#2d5990"/></linearGradient><linearGradient id="c"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#c9c9c9"/></linearGradient><linearGradient id="b"><stop offset="0"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="a"><stop offset="0" stop-color="#f4d9b1"/><stop offset="1" stop-color="#df9725"/></linearGradient><radialGradient cx="29.345" cy="17.064" r="9.162" fx="29.345" fy="17.064" xlink:href="#a" gradientUnits="userSpaceOnUse"/><radialGradient cx="31.113" cy="19.009" r="8.662" fx="31.113" fy="19.009" xlink:href="#b" gradientUnits="userSpaceOnUse"/><linearGradient x1="30.936" y1="29.553" x2="30.936" y2="35.803" xlink:href="#c" gradientUnits="userSpaceOnUse"/><radialGradient cx="28.09" cy="27.203" r="13.565" fx="28.09" fy="27.203" xlink:href="#d" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.298 0 0 .885 -8.359 4.94)"/><radialGradient cx="29.345" cy="17.064" r="9.162" fx="29.345" fy="17.064" xlink:href="#a" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.788 0 0 .788 6.221 3.618)"/><linearGradient x1="30.936" y1="29.553" x2="30.936" y2="35.803" xlink:href="#c" gradientUnits="userSpaceOnUse" gradientTransform="translate(.707)"/><radialGradient cx="31.113" cy="19.009" r="8.662" fx="31.113" fy="19.009" xlink:href="#b" gradientUnits="userSpaceOnUse"/><linearGradient x1="30.936" y1="29.553" x2="30.936" y2="35.803" xlink:href="#c" gradientUnits="userSpaceOnUse" gradientTransform="translate(-12.418 -7)"/><radialGradient cx="29.345" cy="17.064" r="9.162" fx="29.345" fy="17.064" xlink:href="#e" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.788 0 0 .788 6.221 3.618)"/><radialGradient cx="31.113" cy="19.009" r="8.662" fx="31.113" fy="19.009" xlink:href="#b" gradientUnits="userSpaceOnUse"/><linearGradient x1="30.936" y1="29.553" x2="30.936" y2="35.803" xlink:href="#c" gradientUnits="userSpaceOnUse" gradientTransform="translate(-13.125 -7)"/><radialGradient cx="31.113" cy="19.009" r="8.662" fx="31.113" fy="19.009" xlink:href="#b" gradientUnits="userSpaceOnUse"/><radialGradient cx="16.215" cy="19.836" r="13.565" fx="16.215" fy="19.836" xlink:href="#f" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1 0 0 .682 0 8.234)"/><linearGradient x1="20.662" y1="35.818" x2="22.627" y2="36.218" xlink:href="#g" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.983 .182 -.182 .983 6.232 -2.651)"/><linearGradient x1="22.687" y1="36.39" x2="21.408" y2="35.74" xlink:href="#g" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-.978 .21 .21 .978 55.11 -3.945)"/><linearGradient x1="20.662" y1="35.818" x2="22.627" y2="36.218" xlink:href="#g" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.983 .182 -.182 .983 -7.072 -9.825)"/><linearGradient x1="22.687" y1="36.39" x2="21.408" y2="35.74" xlink:href="#g" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-.978 .21 .21 .978 41.806 -11.119)"/><linearGradient x1="22.687" y1="36.39" x2="21.408" y2="35.74" xlink:href="#g" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-.978 .21 .21 .978 41.806 -11.119)"/><linearGradient x1="20.662" y1="35.818" x2="22.627" y2="36.218" xlink:href="#g" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.983 .182 -.182 .983 -7.072 -9.825)"/><linearGradient x1="30.936" y1="29.553" x2="30.936" y2="35.803" xlink:href="#c" gradientUnits="userSpaceOnUse" gradientTransform="translate(-12.418 -7)"/><radialGradient cx="16.215" cy="19.836" r="13.565" fx="16.215" fy="19.836" xlink:href="#f" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1 0 0 .682 0 8.234)"/><radialGradient cx="31.113" cy="19.009" r="8.662" fx="31.113" fy="19.009" id="h" xlink:href="#b" gradientUnits="userSpaceOnUse"/><radialGradient cx="28.09" cy="27.203" r="13.565" fx="28.09" fy="27.203" id="i" xlink:href="#d" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.298 0 0 .885 -8.359 4.94)"/><linearGradient x1="30.936" y1="29.553" x2="30.936" y2="35.803" id="j" xlink:href="#c" gradientUnits="userSpaceOnUse"/><radialGradient cx="31.113" cy="19.009" r="8.662" fx="31.113" fy="19.009" id="k" xlink:href="#b" gradientUnits="userSpaceOnUse"/><radialGradient cx="29.345" cy="17.064" r="9.162" fx="29.345" fy="17.064" id="l" xlink:href="#a" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.788 0 0 .788 6.221 3.618)"/><linearGradient x1="20.662" y1="35.818" x2="22.627" y2="36.218" id="m" xlink:href="#g" gradientUnits="userSpaceOnUse" gradientTransform="matrix(.983 .182 -.182 .983 6.232 -2.651)"/><linearGradient x1="22.687" y1="36.39" x2="21.408" y2="35.74" id="n" xlink:href="#g" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-.978 .21 .21 .978 55.11 -3.945)"/></defs><g color="#000"><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" transform="matrix(.693 0 0 .374 -15.548 3.481)" fill="url(#h)" fill-rule="evenodd" overflow="visible"/><path d="M4.046 12.398h4.137c1.172 0 2.332-.43 2.758-1.655.404-1.163.069-3.378-2.551-5.171h-4.895c-2.62 1.655-2.947 3.917-2.344 5.24.614 1.347 1.655 1.586 2.896 1.586z" fill="url(#i)" fill-rule="evenodd" stroke="#204a87" stroke-linecap="round" stroke-linejoin="round" overflow="visible" stroke-width="0.39"/><path d="M4.321 6.193c1.241 1.103 1.793 5.102 1.793 5.102s.552-3.999 1.517-5.171l-3.309.069z" fill="url(#j)" fill-rule="evenodd" overflow="visible"/><path d="M5.21 6.607s-.839.648-.767 1.428c-.796-.702-.819-2.048-.819-2.048l1.586.62z" fill="#729fcf" fill-rule="evenodd" overflow="visible"/><path d="M4.018 11.992l4.092-.009c1.029 0 2.049-.377 2.422-1.453.355-1.022-.037-2.967-2.338-4.542l-4.495-.095c-2.301 1.453-2.747 3.441-2.208 4.697.538 1.256 1.324 1.393 2.526 1.401z" opacity=".215" stroke="#fff" stroke-linecap="round" stroke-linejoin="round" overflow="visible" fill="none" stroke-width="0.39"/><path d="M6.941 6.607s.839.648.767 1.428c.796-.702.819-2.048.819-2.048l-1.586.62z" fill="#729fcf" fill-rule="evenodd" overflow="visible"/><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" transform="matrix(.39 0 0 .39 -6.138 -2.475)" fill="url(#k)" fill-rule="evenodd" overflow="visible"/><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" fill="url(#l)" fill-rule="evenodd" stroke="#c17d11" stroke-linecap="round" stroke-linejoin="round" overflow="visible" transform="matrix(.39 0 0 .39 -6.089 -3.84)"/><path d="M39.775 19.009a8.662 8.662 0 1 1-17.324 0 8.662 8.662 0 1 1 17.324 0z" transform="matrix(.342 0 0 .342 -4.598 -2.929)" opacity=".196" stroke="#fff" stroke-width="1.14" stroke-linecap="round" stroke-linejoin="round" overflow="visible" fill="none"/><path d="M2.433 12.062c-.487-.213-.704-.725-.704-.725.328-1.587 1.451-2.748 1.451-2.748s-.889 2.5-.746 3.473z" opacity=".228" fill="url(#m)" fill-rule="evenodd" overflow="visible"/><path d="M9.806 11.728c.48-.227.704-.781.704-.781-.374-1.577-1.551-2.669-1.551-2.669s.961 2.474.847 3.45z" opacity=".228" fill="url(#n)" fill-rule="evenodd" overflow="visible"/></g></svg>
\ No newline at end of file
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:cc="http://creativecommons.org/ns#"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:svg="http://www.w3.org/2000/svg"
- xmlns="http://www.w3.org/2000/svg"
- xmlns:xlink="http://www.w3.org/1999/xlink"
- xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
- xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
- width="10"
- height="10"
- id="svg6734"
- version="1.1"
- inkscape:version="0.48.4 r9939"
- sodipodi:docname="video-icon.svg">
- <defs
- id="defs6736">
- <linearGradient
- id="linearGradient7265">
- <stop
- style="stop-color:#cccccc;stop-opacity:1;"
- offset="0"
- id="stop7267" />
- <stop
- style="stop-color:#dfdfdf;stop-opacity:1;"
- offset="1"
- id="stop7269" />
- </linearGradient>
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7265"
- id="radialGradient7271"
- cx="5.0034118"
- cy="4.9650207"
- fx="5.0034118"
- fy="4.9650207"
- r="4.9996192"
- gradientUnits="userSpaceOnUse" />
- <radialGradient
- inkscape:collect="always"
- xlink:href="#linearGradient7265"
- id="radialGradient7327"
- gradientUnits="userSpaceOnUse"
- cx="5.0034118"
- cy="4.9650207"
- fx="5.0034118"
- fy="4.9650207"
- r="4.9996192" />
- </defs>
- <sodipodi:namedview
- id="base"
- pagecolor="#ffffff"
- bordercolor="#666666"
- borderopacity="1.0"
- inkscape:pageopacity="0.0"
- inkscape:pageshadow="2"
- inkscape:zoom="22.627417"
- inkscape:cx="4.0209944"
- inkscape:cy="7.104383"
- inkscape:document-units="px"
- inkscape:current-layer="layer1"
- showgrid="false"
- fit-margin-top="0"
- fit-margin-left="0"
- fit-margin-right="0"
- fit-margin-bottom="0"
- inkscape:window-width="1920"
- inkscape:window-height="1014"
- inkscape:window-x="0"
- inkscape:window-y="27"
- inkscape:window-maximized="1" />
- <metadata
- id="metadata6739">
- <rdf:RDF>
- <cc:Work
- rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type
- rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
- <dc:title></dc:title>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g
- inkscape:label="Layer 1"
- inkscape:groupmode="layer"
- id="layer1"
- transform="translate(-903.57141,-715.93359)">
- <path
- style="fill:none;stroke:#5f6060;stroke-width:0.89999998000000003;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
- d="m 911.68723,725.33709 -0.61872,-0.92808 c 0,0 0.17677,0.92808 0.92808,1.01647 0.7513,0.0884 1.19324,0.0884 1.19324,0.0884"
- id="path7292"
- inkscape:connector-curvature="0" />
- <path
- sodipodi:type="arc"
- style="fill:url(#radialGradient7327);fill-opacity:1;stroke:#848484;stroke-width:0.89999998;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:9.80000019;stroke-opacity:1;stroke-dasharray:none"
- id="path6755"
- sodipodi:cx="5.0034118"
- sodipodi:cy="4.9650207"
- sodipodi:rx="4.5141191"
- sodipodi:ry="4.5141191"
- d="m 9.5175309,4.9650207 a 4.5141191,4.5141191 0 1 1 -9.02823828,0 4.5141191,4.5141191 0 1 1 9.02823828,0 z"
- transform="translate(903.4637,715.9024)" />
- <g
- id="g7310"
- transform="matrix(0.897287,0,0,0.897287,111.13225,74.055304)">
- <path
- transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,880.61345,716.13137)"
- d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
- sodipodi:ry="0.59375"
- sodipodi:rx="0.59375"
- sodipodi:cy="2.59375"
- sodipodi:cx="4.4375"
- id="path7300"
- style="fill:#818181;fill-opacity:1;stroke:none"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="fill:#818181;fill-opacity:1;stroke:none"
- id="path7302"
- sodipodi:cx="4.4375"
- sodipodi:cy="2.59375"
- sodipodi:rx="0.59375"
- sodipodi:ry="0.59375"
- d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
- transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,878.85062,718.47146)" />
- <path
- transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,883.48161,716.7296)"
- d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
- sodipodi:ry="0.59375"
- sodipodi:rx="0.59375"
- sodipodi:cy="2.59375"
- sodipodi:cx="4.4375"
- id="path7304"
- style="fill:#818181;fill-opacity:1;stroke:none"
- sodipodi:type="arc" />
- <path
- sodipodi:type="arc"
- style="fill:#818181;fill-opacity:1;stroke:none"
- id="path7306"
- sodipodi:cx="4.4375"
- sodipodi:cy="2.59375"
- sodipodi:rx="0.59375"
- sodipodi:ry="0.59375"
- d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
- transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,880.77974,720.67629)" />
- <path
- transform="matrix(1.4672484,-0.2948259,0.2948259,1.4672484,883.52712,719.65906)"
- d="M 5.03125,2.59375 C 5.03125,2.9216691 4.7654191,3.1875 4.4375,3.1875 4.1095809,3.1875 3.84375,2.9216691 3.84375,2.59375 3.84375,2.2658309 4.1095809,2 4.4375,2 4.7654191,2 5.03125,2.2658309 5.03125,2.59375 z"
- sodipodi:ry="0.59375"
- sodipodi:rx="0.59375"
- sodipodi:cy="2.59375"
- sodipodi:cx="4.4375"
- id="path7308"
- style="fill:#818181;fill-opacity:1;stroke:none"
- sodipodi:type="arc" />
- </g>
- </g>
-</svg>
+<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="10" height="10"><defs><linearGradient id="a"><stop offset="0" stop-color="#ccc"/><stop offset="1" stop-color="#dfdfdf"/></linearGradient><radialGradient xlink:href="#a" cx="5.003" cy="4.965" fx="5.003" fy="4.965" r="5" gradientUnits="userSpaceOnUse"/><radialGradient xlink:href="#a" id="b" gradientUnits="userSpaceOnUse" cx="5.003" cy="4.965" fx="5.003" fy="4.965" r="5"/></defs><g><path d="M8.116 9.404l-.619-.928s.177.928.928 1.016c.751.088 1.193.088 1.193.088" stroke="#5f6060" stroke-width=".9" fill="none"/><path d="M9.518 4.965a4.514 4.514 0 1 1-9.028 0 4.514 4.514 0 1 1 9.028 0z" transform="translate(-903.571 -715.934) translate(903.464 715.902)" fill="url(#b)" stroke="#848484" stroke-width=".9" stroke-linecap="square" stroke-miterlimit="9.8"/><g fill="#818181"><path d="M4.777 2.577c.087.432-.193.852-.625.938-.432.087-.852-.193-.938-.625-.087-.432.193-.852.625-.938.432-.087.852.193.938.625z"/><path d="M3.196 4.676c.087.432-.193.852-.625.938-.432.087-.852-.193-.938-.625-.087-.432.193-.852.625-.938.432-.087.852.193.938.625z"/><path d="M7.35 3.113c.087.432-.193.852-.625.938-.432.087-.852-.193-.938-.625-.087-.432.193-.852.625-.938.432-.087.852.193.938.625z"/><path d="M4.926 6.654c.087.432-.193.852-.625.938-.432.087-.852-.193-.938-.625-.087-.432.193-.852.625-.938.432-.087.852.193.938.625z"/><path d="M7.391 5.741c.087.432-.193.852-.625.938-.432.087-.852-.193-.938-.625-.087-.432.193-.852.625-.938.432-.087.852.193.938.625z"/></g></g></svg>
\ No newline at end of file
/**
* Holds original values of MediaWiki configuration settings
* to be restored in tearDown().
- * See also setMwGlobal().
+ * See also setMwGlobals().
* @var array
*/
private $mwGlobals = array();
$this->assertEquals( 'hello hello.', $rev->getContent()->getNativeData() );
}
- /**
- * @covers Revision::revText
- */
- public function testRevText() {
- $this->hideDeprecated( 'Revision::revText' );
- $orig = $this->makeRevision( array( 'text' => 'hello hello rev.' ) );
- $rev = Revision::newFromId( $orig->getId() );
-
- $this->assertEquals( 'hello hello rev.', $rev->revText() );
- }
-
/**
* @covers Revision::getRawText
*/
'A ~~~~~ Timestamp',
str_repeat( 'x', 256 ),
// Namespace prefix without actual title
- // ':', // bug 54044
'Talk:',
'Category: ',
'Category: #bar'
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
* http://www.gnu.org/copyleft/gpl.html
*
+ * @group Database
* @file
* @author Antoine Musso
* @copyright © 2013 Antoine Musso
* @copyright © 2013 Wikimedia Foundation Inc.
*/
-
-class FakeLBFactory extends LBFactory {
- function __construct( $conf ) {}
- function newMainLB( $wiki = false ) {}
- function getMainLB( $wiki = false ) {}
- function newExternalLB( $cluster, $wiki = false ) {}
- function &getExternalLB( $cluster, $wiki = false ) {}
- function forEachLB( $callback, $params = array() ) {}
-}
-
class LBFactoryTest extends MediaWikiTestCase {
- function setup() {
- parent::setup();
- FakeLBFactory::destroyInstance();
- }
-
/**
- * @dataProvider provideDeprecatedLbfactoryClasses
+ * @dataProvider getLBFactoryClassProvider
*/
- function testLbfactoryClassBackcompatibility( $expected, $deprecated ) {
+ public function testGetLBFactoryClass( $expected, $deprecated ) {
$mockDB = $this->getMockBuilder( 'DatabaseMysql' )
- -> disableOriginalConstructor()
+ ->disableOriginalConstructor()
->getMock();
- $this->setMwGlobals( 'wgLBFactoryConf',
- array(
- 'class' => $deprecated,
- 'connection' => $mockDB,
- # Various other parameters required:
- 'sectionsByDB' => array(),
- 'sectionLoads' => array(),
- 'serverTemplate' => array(),
- )
- );
- global $wgLBFactoryConf;
- $this->assertArrayHasKey( 'class', $wgLBFactoryConf );
- $this->assertEquals( $wgLBFactoryConf['class'], $deprecated );
+ $config = array(
+ 'class' => $deprecated,
+ 'connection' => $mockDB,
+ # Various other parameters required:
+ 'sectionsByDB' => array(),
+ 'sectionLoads' => array(),
+ 'serverTemplate' => array(),
+ );
- # The point of this test is to call a deprecated interface and make
- # sure it keeps back compatibility, so skip the deprecation warning.
$this->hideDeprecated( '$wgLBFactoryConf must be updated. See RELEASE-NOTES for details' );
- $lbfactory = FakeLBFactory::singleton();
- $this->assertInstanceOf( $expected, $lbfactory,
- "LBFactory passed $deprecated should yield the new class $expected" );
+ $result = LBFactory::getLBFactoryClass( $config );
+
+ $this->assertEquals( $expected, $result );
}
- function provideDeprecatedLbfactoryClasses() {
+ public function getLBFactoryClassProvider() {
return array(
# Format: new class, old class
array( 'LBFactorySimple', 'LBFactory_Simple' ),
--- /dev/null
+<?php
+/**
+ * PHP Unit tests for MWMessagePack
+ * @covers MWMessagePack
+ */
+class MWMessagePackTest extends MediaWikiTestCase {
+
+ /**
+ * Provides test cases for MWMessagePackTest::testMessagePack
+ *
+ * Returns an array of test cases. Each case is an array of (type, value,
+ * expected encoding as hex string). The expected values were generated
+ * using <https://github.com/msgpack/msgpack-php>, which includes a
+ * serialization function.
+ */
+ public function provider() {
+ return array(
+ array( 'nil', null, 'c0' ),
+ array( 'bool', true, 'c3' ),
+ array( 'bool', false, 'c2' ),
+ array( 'positive fixnum', 0, '00' ),
+ array( 'positive fixnum', 1, '01' ),
+ array( 'positive fixnum', 5, '05' ),
+ array( 'positive fixnum', 35, '23' ),
+ array( 'uint 8', 128, 'cc80' ),
+ array( 'uint 16', 1000, 'cd03e8' ),
+ array( 'uint 32', 100000, 'ce000186a0' ),
+ array( 'uint 64', 10000000000, 'cf00000002540be400' ),
+ array( 'negative fixnum', -1, 'ff' ),
+ array( 'negative fixnum', -2, 'fe' ),
+ array( 'int 8', -128, 'd080' ),
+ array( 'int 8', -35, 'd0dd' ),
+ array( 'int 16', -1000, 'd1fc18' ),
+ array( 'int 32', -100000, 'd2fffe7960' ),
+ array( 'int 64', -10000000000, 'd3fffffffdabf41c00' ),
+ array( 'int 64', -223372036854775807, 'd3fce66c50e2840001' ),
+ array( 'int 64', -9223372036854775807, 'd38000000000000001' ),
+ array( 'double', 0.1, 'cb3fb999999999999a' ),
+ array( 'double', 1.1, 'cb3ff199999999999a' ),
+ array( 'double', 123.456, 'cb405edd2f1a9fbe77' ),
+ array( 'fix raw', '', 'a0' ),
+ array( 'fix raw', 'foobar', 'a6666f6f626172' ),
+ array(
+ 'raw 16',
+ 'Lorem ipsum dolor sit amet amet.',
+ 'da00204c6f72656d20697073756d20646f6c6f722073697420616d657420616d65742e'
+ ),
+ array(
+ 'fix array',
+ array( 'abc', 'def', 'ghi' ),
+ '93a3616263a3646566a3676869'
+ ),
+ array(
+ 'fix map',
+ array( 'one' => 1, 'two' => 2 ),
+ '82a36f6e6501a374776f02'
+ ),
+ );
+ }
+
+ /**
+ * Verify that values are serialized correctly.
+ * @covers MWMessagePack::pack
+ * @dataProvider provider
+ */
+ public function testPack( $type, $value, $expected ) {
+ $actual = bin2hex( MWMessagePack::pack( $value ) );
+ $this->assertEquals( $actual, $expected, $type );
+ }
+}
--- /dev/null
+<?php
+/**
+ * PHP Unit tests for RunningStat class.
+ * @covers RunningStat
+ */
+class RunningStatTest extends MediaWikiTestCase {
+
+ public $points = array(
+ 49.7168, 74.3804, 7.0115, 96.5769, 34.9458,
+ 36.9947, 33.8926, 89.0774, 23.7745, 73.5154,
+ 86.1322, 53.2124, 16.2046, 73.5130, 10.4209,
+ 42.7299, 49.3330, 47.0215, 34.9950, 18.2914,
+ );
+
+ /**
+ * Verify that the statistical moments and extrema computed by RunningStat
+ * match expected values.
+ * @covers RunningStat::push
+ * @covers RunningStat::count
+ * @covers RunningStat::getMean
+ * @covers RunningStat::getVariance
+ * @covers RunningStat::getStdDev
+ */
+ public function testRunningStatAccuracy() {
+ $rstat = new RunningStat();
+ foreach( $this->points as $point ) {
+ $rstat->push( $point );
+ }
+
+ $mean = array_sum( $this->points ) / count( $this->points );
+ $variance = array_sum( array_map( function ( $x ) use ( $mean ) {
+ return pow( $mean - $x, 2 );
+ }, $this->points ) ) / ( count( $rstat ) - 1 );
+ $stddev = sqrt( $variance );
+ $min = min( $this->points );
+ $max = max( $this->points );
+
+ $this->assertEquals( count( $rstat ), count( $this->points ) );
+ $this->assertEquals( $rstat->min, min( $this->points ) );
+ $this->assertEquals( $rstat->max, max( $this->points ) );
+ $this->assertEquals( $rstat->getMean(), $mean );
+ $this->assertEquals( $rstat->getVariance(), $variance );
+ $this->assertEquals( $rstat->getStdDev(), $stddev );
+ }
+
+ /**
+ * When one RunningStat instance is merged into another, the state of the
+ * target RunningInstance should have the state that it would have had if
+ * all the data had been accumulated by it alone.
+ * @covers RunningStat::merge
+ * @covers RunningStat::count
+ */
+ public function testRunningStatMerge() {
+ $expected = new RunningStat();
+
+ foreach( $this->points as $point ) {
+ $expected->push( $point );
+ }
+
+ // Split the data into two sets
+ $sets = array_chunk( $this->points, floor( count( $this->points ) / 2 ) );
+
+ // Accumulate the first half into one RunningStat object
+ $first = new RunningStat();
+ foreach( $sets[0] as $point ) {
+ $first->push( $point );
+ }
+
+ // Accumulate the second half into another RunningStat object
+ $second = new RunningStat();
+ foreach( $sets[1] as $point ) {
+ $second->push( $point );
+ }
+
+ // Merge the second RunningStat object into the first
+ $first->merge( $second );
+
+ $this->assertEquals( count( $first ), count( $this->points ) );
+ $this->assertEquals( $first, $expected );
+ }
+}
* @note Coverage will only ever show one of on of the Search* classes
*/
class SearchEngineTest extends MediaWikiLangTestCase {
+
/**
* @var SearchEngine
*/
protected $search;
+
protected $pageList;
/**
parent::setUp();
// Search tests require MySQL or SQLite with FTS
- # Get database type and version
$dbType = $this->db->getType();
- $dbSupported =
- ( $dbType === 'mysql' )
- || ( $dbType === 'sqlite' && $this->db->getFulltextSearchModule() == 'FTS3' );
+ $dbSupported = ( $dbType === 'mysql' )
+ || ( $dbType === 'sqlite' && $this->db->getFulltextSearchModule() == 'FTS3' );
if ( !$dbSupported ) {
$this->markTestSkipped( "MySQL or SQLite with FTS3 only" );
}
$searchType = $this->db->getSearchEngine();
+ $this->setMwGlobals( array(
+ 'wgSearchType' => $searchType
+ ) );
+
+ if ( !isset( self::$pageList ) ) {
+ $this->addPages();
+ }
+
$this->search = new $searchType( $this->db );
}
parent::tearDown();
}
- function pageExists( $title ) {
- return false;
- }
-
- function addDBData() {
- if ( $this->pageExists( 'Not_Main_Page' ) ) {
- return;
- }
-
+ protected function addPages() {
if ( !$this->isWikitextNS( NS_MAIN ) ) {
// @todo cover the case of non-wikitext content in the main namespace
return;
$this->insertPage( 'DomainName', 'example.com', 0 );
}
- function fetchIds( $results ) {
+ protected function fetchIds( $results ) {
if ( !$this->isWikitextNS( NS_MAIN ) ) {
$this->markTestIncomplete( __CLASS__ . " does no yet support non-wikitext content "
. "in the main namespace" );
}
-
$this->assertTrue( is_object( $results ) );
$matches = array();
* @param $text String: page's content
* @param $n Integer: unused
*/
- function insertPage( $pageName, $text, $ns ) {
+ protected function insertPage( $pageName, $text, $ns ) {
$title = Title::newFromText( $pageName, $ns );
$user = User::newFromName( 'WikiSysop' );
$this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
"Title power search failed" );
}
+
}
--- /dev/null
+<?php
+/**
+ * Test class for SpecialListFiles class.
+ *
+ * Copyright © 2013, Antoine Musso
+ * Copyright © 2013, Siebrand Mazeland
+ * Copyright © 2013, Wikimedia Foundation Inc.
+ *
+ */
+
+class SpecialListFilesTest extends MediaWikiTestCase {
+ /**
+ * @expectedException MWException
+ * @expectedExceptionMesage invalid_field
+ * @covers ImageListPager::formatValue
+ */
+ public function testFormatValuesThrowException() {
+ $page = new ImageListPager( RequestContext::getMain() );
+ $page->formatValue( 'invalid_field', 'invalid_value' );
+ }
+}
}
}
+ /**
+ * @covers UIDGenerator::newSequentialPerNodeID
+ */
+ public function testNewSequentialID() {
+ $id1 = UIDGenerator::newSequentialPerNodeID( 'test', 32 );
+ $id2 = UIDGenerator::newSequentialPerNodeID( 'test', 32 );
+
+ $this->assertType( 'float', $id1, "ID returned as float" );
+ $this->assertType( 'float', $id2, "ID returned as float" );
+ $this->assertGreaterThan( 0, $id1, "ID greater than 1" );
+ $this->assertGreaterThan( $id1, $id2, "IDs increasing in value" );
+ }
+
+ /**
+ * @covers UIDGenerator::newSequentialPerNodeIDs
+ */
+ public function testNewSequentialIDs() {
+ $ids = UIDGenerator::newSequentialPerNodeIDs( 'test', 32, 5 );
+ $lastId = null;
+ foreach ( $ids as $id ) {
+ $this->assertType( 'float', $id, "ID returned as float" );
+ $this->assertGreaterThan( 0, $id, "ID greater than 1" );
+ if ( $lastId ) {
+ $this->assertGreaterThan( $lastId, $id, "IDs increasing in value" );
+ }
+ $lastId = $id;
+ }
+ }
}
* @covers Language::convertPlural
*/
public function testPluralTwoForms( $result, $value ) {
- $forms = array( 'one', 'other', '0=one' );
+ $forms = array( '1=one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePluralTwoForms() {
return array(
- array( 'one', 0 ),
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'other', 11 ),
array( 'other', 91 ),
* @file
*/
-/** Tests for MediaWiki languages/LanguageBs.php */
+/** Tests for Croatian (hrvatski) */
class LanguageBsTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePlural() {
return array(
- array( 'many', 0 ),
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
array( 'few', 4 ),
- array( 'many', 5 ),
- array( 'many', 11 ),
- array( 'many', 20 ),
+ array( 'other', 5 ),
+ array( 'other', 11 ),
+ array( 'other', 20 ),
array( 'one', 21 ),
array( 'few', 24 ),
- array( 'many', 25 ),
- array( 'many', 200 ),
+ array( 'other', 25 ),
+ array( 'other', 200 ),
);
}
}
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePlural() {
return array(
- array( 'many', 0 ),
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
array( 'few', 4 ),
- array( 'many', 5 ),
- array( 'many', 11 ),
- array( 'many', 20 ),
+ array( 'other', 5 ),
+ array( 'other', 11 ),
+ array( 'other', 20 ),
array( 'one', 21 ),
array( 'few', 24 ),
- array( 'many', 25 ),
- array( 'many', 200 ),
+ array( 'other', 25 ),
+ array( 'other', 200 ),
);
}
}
* @file
*/
-/** Tests for MediaWiki languages/LanguageHy.php */
+/** Tests for Armenian (Հայերեն) */
class LanguageHyTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::getPluralRuleType
*/
public function testGetPluralRuleType( $result, $value ) {
- // This fails for 0, but I'm not sure why. Some voodoo going on here.
$this->assertEquals( $result, $this->getLang()->getPluralRuleType( $value ) );
}
public static function providePlural() {
return array(
- array( 'other', 0 ),
+ array( 'one', 0 ),
array( 'one', 1 ),
array( 'other', 2 ),
array( 'other', 200 ),
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageLv.php */
+/** Tests for Latvian */
class LanguageLvTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
return array(
array( 'zero', 0 ),
array( 'one', 1 ),
- array( 'other', 11 ),
+ array( 'zero', 11 ),
array( 'one', 21 ),
- array( 'other', 411 ),
+ array( 'zero', 411 ),
+ array( 'other', 2 ),
+ array( 'other', 9 ),
+ array( 'zero', 12 ),
array( 'other', 12.345 ),
- array( 'other', 20 ),
+ array( 'zero', 20 ),
+ array( 'other', 22 ),
array( 'one', 31 ),
- array( 'other', 200 ),
+ array( 'zero', 200 ),
);
}
}
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageMk.php */
+/** Tests for македонски/Macedonian */
class LanguageMkTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
return array(
array( 'other', 0 ),
array( 'one', 1 ),
- array( 'other', 11 ),
+ array( 'one', 11 ),
array( 'one', 21 ),
array( 'one', 411 ),
array( 'other', 12.345 ),
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'many', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
* @covers Language::convertPlural
*/
public function testExplicitPlural() {
- $forms = array( 'one', 'few', 'many', 'other', '12=dozen' );
+ $forms = array( 'one','many', 'other', '12=dozen' );
$this->assertEquals( 'dozen', $this->getLang()->convertPlural( 12, $forms ) );
- $forms = array( 'one', 'few', 'many', '100=hundred', 'other', '12=dozen' );
+ $forms = array( 'one', 'many', '100=hundred', 'other', '12=dozen' );
$this->assertEquals( 'hundred', $this->getLang()->convertPlural( 100, $forms ) );
}
array( 'many', 11 ),
array( 'one', 91 ),
array( 'one', 121 ),
- array( 'few', 2 ),
- array( 'few', 3 ),
- array( 'few', 4 ),
- array( 'few', 334 ),
+ array( 'other', 2 ),
+ array( 'other', 3 ),
+ array( 'other', 4 ),
+ array( 'other', 334 ),
array( 'many', 5 ),
array( 'many', 15 ),
array( 'many', 120 ),
* @covers Language::convertPlural
*/
public function testPluralTwoForms( $result, $value ) {
- $forms = array( 'one', 'other' );
+ $forms = array( '1=one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageSgs.php */
+/** Tests for Samogitian */
class LanguageSgsTest extends LanguageClassesTestCase {
/**
* @dataProvider providePluralAllForms
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageSh.php */
+/** Tests for srpskohrvatski / српскохрватски / Serbocroatian */
class LanguageShTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePlural() {
return array(
- array( 'many', 0 ),
+ array( 'other', 0 ),
array( 'one', 1 ),
array( 'few', 2 ),
array( 'few', 4 ),
- array( 'many', 5 ),
- array( 'many', 10 ),
- array( 'many', 11 ),
- array( 'many', 12 ),
+ array( 'other', 5 ),
+ array( 'other', 10 ),
+ array( 'other', 11 ),
+ array( 'other', 12 ),
array( 'one', 101 ),
array( 'few', 102 ),
- array( 'many', 111 ),
+ array( 'other', 111 ),
);
}
}
* @covers Language::convertPlural
*/
public function testPlural( $result, $value ) {
- $forms = array( 'one', 'few', 'many', 'other' );
+ $forms = array( 'one', 'few', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
public static function providePlural() {
return array(
array( 'one', 1 ),
- array( 'many', 11 ),
+ array( 'other', 11 ),
array( 'one', 91 ),
array( 'one', 121 ),
array( 'few', 2 ),
array( 'few', 3 ),
array( 'few', 4 ),
array( 'few', 334 ),
- array( 'many', 5 ),
- array( 'many', 15 ),
- array( 'many', 120 ),
+ array( 'other', 5 ),
+ array( 'other', 15 ),
+ array( 'other', 120 ),
);
}
return array(
array( 'one', 1 ),
array( 'other', 11 ),
- array( 'other', 91 ),
- array( 'other', 121 ),
+ array( 'other', 4 ),
+ array( 'one', 91 ),
+ array( 'one', 121 ),
);
}
* @file
*/
-/** Tests for MediaWiki languages/classes/LanguageUk.php */
+/** Tests for Ukrainian */
class LanguageUkTest extends LanguageClassesTestCase {
/**
* @dataProvider providePlural
* @covers Language::convertPlural
*/
public function testPluralTwoForms( $result, $value ) {
- $forms = array( 'one', 'other' );
+ $forms = array( '1=one', 'other' );
$this->assertEquals( $result, $this->getLang()->convertPlural( $value, $forms ) );
}
rtl: true
}
},
- // Bug #34924
+ // Rekonq (bug 34924)
'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.34 (KHTML, like Gecko) rekonq Safari/534.34': {
title: 'Rekonq',
platform: 'Linux i686',
ltr: true,
rtl: true
}
+ },
+ // Konqueror
+ 'Mozilla/5.0 (X11; Linux i686) KHTML/4.9.1 (like Gecko) Konqueror/4.9': {
+ title: 'Konqueror',
+ platform: 'Linux i686',
+ profile: {
+ name: 'konqueror',
+ layout: 'khtml',
+ layoutVersion: 'unknown',
+ platform: 'linux',
+ version: '4.9.1',
+ versionBase: '4',
+ versionNumber: 4.9
+ },
+ wikiEditor: {
+ // '4.9' is less than '4.11'.
+ ltr: false,
+ rtl: false
+ },
+ wikiEditorLegacy: {
+ // The check is missing in legacyTestMap
+ ltr: true,
+ rtl: true
+ }
}
},
testMap = {
- // Example from WikiEditor
- // Make sure to use raw numbers, a string like "7.0" would fail on a
- // version 10 browser since in string comparaison "10" is before "7.0" :)
+ // Example from WikiEditor, modified to provide version identifiers as strings and with
+ // Konqueror 4.11 check added.
+ 'ltr': {
+ 'msie': [['>=', '7.0']],
+ 'firefox': [['>=', '2']],
+ 'opera': [['>=', '9.6']],
+ 'safari': [['>=', '3']],
+ 'chrome': [['>=', '3']],
+ 'netscape': [['>=', '9']],
+ 'konqueror': [['>=', '4.11']],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false
+ },
+ 'rtl': {
+ 'msie': [['>=', '8']],
+ 'firefox': [['>=', '2']],
+ 'opera': [['>=', '9.6']],
+ 'safari': [['>=', '3']],
+ 'chrome': [['>=', '3']],
+ 'netscape': [['>=', '9']],
+ 'konqueror': [['>=', '4.11']],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false
+ }
+ },
+ legacyTestMap = {
+ // Original example from WikiEditor.
+ // This is using the old, but still supported way of providing version identifiers as numbers
+ // instead of strings; with this method, 4.9 would be considered larger than 4.11.
'ltr': {
'msie': [['>=', 7.0]],
'firefox': [['>=', 2]],
}, ie7Profile, true ), false, 'returns false if browser not found and exactMatchOnly is set' );
} );
- QUnit.test( 'test( testMap) - WikiEditor sample', uacount * 2, function ( assert ) {
+ QUnit.test( 'test( testMap ), test( legacyTestMap ) - WikiEditor sample', uacount * 2 * 2, function ( assert ) {
var $body = $( 'body' ),
bodyClasses = $body.attr( 'class' );
// Loop through and run tests
$.each( uas, function ( agent, data ) {
$.each( ['ltr', 'rtl'], function ( i, dir ) {
- var profile, testMatch;
+ var profile, testMatch, legacyTestMatch;
$body.removeClass( 'ltr rtl' ).addClass( dir );
profile = $.client.profile( {
userAgent: agent,
platform: data.platform
} );
testMatch = $.client.test( testMap, profile );
+ legacyTestMatch = $.client.test( legacyTestMap, profile );
$body.removeClass( dir );
- assert.equal( testMatch, data.wikiEditor[dir], 'testing comparison based on ' + dir + ', ' + agent );
+ assert.equal(
+ testMatch,
+ data.wikiEditor[dir],
+ 'testing comparison based on ' + dir + ', ' + agent
+ );
+ assert.equal(
+ legacyTestMatch,
+ data.wikiEditorLegacy ? data.wikiEditorLegacy[dir] : data.wikiEditor[dir],
+ 'testing comparison based on ' + dir + ', ' + agent + ' (legacyTestMap)'
+ );
} );
} );
// purposes it is part of the title
repeat( 'x', 252 ) + '.json',
// Namespace prefix without actual title
- // ':', // bug 54044
'Talk:',
'Category: ',
'Category: #bar'