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}}").
+* $wgDBAhandler was removed as the only class using it was also removed
=== New features in 1.23 ===
* ResourceLoader can utilize the Web Storage API to cache modules client-side.
remaining page content.
* (bug 23542) imagelinks now stores both the redirect and target (as
templatelinks does).
+* (bug 58167) The web installer no longer throws an exception when PHP is
+ compiled without support for MySQL yet with support for another DBMS.
+* (bug 56199) Raw option of parser functions must now match complete word,
+ to take effect.
=== Web API changes in 1.23 ===
* (bug 54884) action=parse&prop=categories now indicates hidden and missing
if ( strpos( $path, $prefix ) === 0 ) {
$be = FileBackendGroup::singleton()->backendFromPath( $storageDir );
$filename = $storageDir . substr( $path, strlen( $prefix ) ); // strip prefix
+ // Check basic user authorization
+ if ( !RequestContext::getMain()->getUser()->isAllowed( 'read' ) ) {
+ wfForbidden( 'img-auth-accessdenied', 'img-auth-noread', $path );
+ return;
+ }
if ( $be->fileExists( array( 'src' => $filename ) ) ) {
wfDebugLog( 'img_auth', "Streaming `" . $filename . "`." );
$be->streamFile( array( 'src' => $filename ),
array( 'Cache-Control: private', 'Vary: Cookie' ) );
} else {
- wfForbidden( 'img-auth-accessdenied', 'img-auth-nofile', $filename );
+ wfForbidden( 'img-auth-accessdenied', 'img-auth-nofile', $path );
}
return;
}
'SpecialMyuploads' => 'includes/specials/SpecialMyRedirectPages.php',
'SpecialAllMyUploads' => 'includes/specials/SpecialMyRedirectPages.php',
'SpecialPage' => 'includes/specialpage/SpecialPage.php',
- 'SpecialPageFactory' => 'includes/SpecialPageFactory.php',
+ 'SpecialPageFactory' => 'includes/specialpage/SpecialPageFactory.php',
'SpecialRedirectToSpecial' => 'includes/specialpage/RedirectSpecialPage.php',
'SquidPurgeClient' => 'includes/SquidPurgeClient.php',
'SquidPurgeClientPool' => 'includes/SquidPurgeClient.php',
'XmlJsCode' => 'includes/Xml.php',
'XMLReader2' => 'includes/Import.php',
'XmlSelect' => 'includes/Xml.php',
- 'ZhClient' => 'includes/ZhClient.php',
# includes/actions
'CachedAction' => 'includes/actions/CachedAction.php',
# includes/objectcache
'APCBagOStuff' => 'includes/objectcache/APCBagOStuff.php',
'BagOStuff' => 'includes/objectcache/BagOStuff.php',
- 'DBABagOStuff' => 'includes/objectcache/DBABagOStuff.php',
- 'EhcacheBagOStuff' => 'includes/objectcache/EhcacheBagOStuff.php',
'EmptyBagOStuff' => 'includes/objectcache/EmptyBagOStuff.php',
'FakeMemCachedClient' => 'includes/objectcache/EmptyBagOStuff.php',
'HashBagOStuff' => 'includes/objectcache/HashBagOStuff.php',
return;
}
- if ( substr( $filename, 0, 6 ) === 'alias:' ) {
- // Supported alias formats:
- // - No deprecation warning: alias:MyNewClassName
- // - Deprecated in MediaWiki 1.1: alias:MyNewClassName?v=1.1
- // - Deprecated in MyExtension 1.1: alias:MyNewClassName?c=MyExtension&v=1.1
- $parts = explode( '?', substr( $filename, 6 ), 2 );
- $newClassName = $parts[0];
-
- // If necessary, this will make a recursive call to this function to
- // load the class using its actual, canonical name.
- class_alias( $newClassName, $className );
-
- if ( isset( $parts[1] ) && function_exists( 'wfDeprecated' ) ) {
- $info = wfCgiToArray( $parts[1] );
- $function = "name $className for class $newClassName";
- $version = isset( $info['v'] ) ? $info['v'] : false;
- $component = isset( $info['c'] ) ? $info['c'] : false;
-
- // https://github.com/facebook/hhvm/issues/1018
- $callerOffset = wfIsHHVM() ? 2 : 3;
- wfDeprecated( $function, $version, $component, $callerOffset );
- }
-
- return;
- }
-
# Make an absolute path, this improves performance by avoiding some stat calls
if ( substr( $filename, 0, 1 ) != '/' && substr( $filename, 1, 1 ) != ':' ) {
global $IP;
* - CACHE_DB: Store cache objects in the DB
* - CACHE_MEMCACHED: MemCached, must specify servers in $wgMemCachedServers
* - CACHE_ACCEL: APC, XCache or WinCache
- * - CACHE_DBA: Use PHP's DBA extension to store in a DBM-style
- * database. This is slow, and is not recommended for
- * anything other than debugging.
* - (other): A string may be used which identifies a cache
* configuration in $wgObjectCaches.
*
* the value is an associative array of parameters. The "class" parameter is the
* class name which will be used. Alternatively, a "factory" parameter may be
* given, giving a callable function which will generate a suitable cache object.
- *
- * The other parameters are dependent on the class used.
- * - CACHE_DBA uses $wgTmpDirectory by default. The 'dir' parameter let you
- * overrides that.
*/
$wgObjectCaches = array(
CACHE_NONE => array( 'class' => 'EmptyBagOStuff' ),
CACHE_DB => array( 'class' => 'SqlBagOStuff', 'table' => 'objectcache' ),
- CACHE_DBA => array( 'class' => 'DBABagOStuff' ),
CACHE_ANYTHING => array( 'factory' => 'ObjectCache::newAnything' ),
CACHE_ACCEL => array( 'factory' => 'ObjectCache::newAccelerator' ),
*/
$wgParserCacheExpireTime = 86400;
-/**
- * Select which DBA handler <http://www.php.net/manual/en/dba.requirements.php>
- * to use as CACHE_DBA backend.
- */
-$wgDBAhandler = 'db3';
-
/**
* Deprecated alias for $wgSessionsInObjectCache.
*
define( 'CACHE_DB', 1 ); // Store cache objects in the DB
define( 'CACHE_MEMCACHED', 2 ); // MemCached, must specify servers in $wgMemCacheServers
define( 'CACHE_ACCEL', 3 ); // APC, XCache or WinCache
-define( 'CACHE_DBA', 4 ); // Use PHP's DBA extension to store in a DBM-style database
/**@}*/
/**@{
var $mId, $mSynonyms, $mCaseSensitive;
var $mRegex = '';
var $mRegexStart = '';
+ var $mRegexStartToEnd = '';
var $mBaseRegex = '';
var $mVariableRegex = '';
var $mVariableStartToEndRegex = '';
$case = $this->mCaseSensitive ? '' : 'iu';
$this->mRegex = "/{$this->mBaseRegex}/{$case}";
$this->mRegexStart = "/^(?:{$this->mBaseRegex})/{$case}";
+ $this->mRegexStartToEnd = "/^(?:{$this->mBaseRegex})$/{$case}";
$this->mVariableRegex = str_replace( "\\$1", "(.*?)", $this->mRegex );
$this->mVariableStartToEndRegex = str_replace( "\\$1", "(.*?)",
"/^(?:{$this->mBaseRegex})$/{$case}" );
return $this->mRegexStart;
}
+ /**
+ * Gets a regex matching the word from start to end of a string
+ *
+ * @return string
+ * @since 1.23
+ */
+ function getRegexStartToEnd() {
+ if ( $this->mRegexStartToEnd == '' ) {
+ $this->initRegex();
+ }
+ return $this->mRegexStartToEnd;
+ }
+
/**
* regex without the slashes and what not
*
return (bool)preg_match( $this->getRegexStart(), $text );
}
+ /**
+ * Returns true if the text matched the word
+ *
+ * @param $text string
+ *
+ * @return bool
+ * @since 1.23
+ */
+ function matchStartToEnd( $text ) {
+ return (bool)preg_match( $this->getRegexStartToEnd(), $text );
+ }
+
/**
* Returns NULL if there's no match, the value of $1 otherwise
* The return code is the matched string, if there's no variable
$ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n";
+ // Avoid Internet Explorer "compatibility view", so that
+ // jQuery can work correctly.
+ $ret .= Html::element( 'meta', array( 'http-equiv' => 'X-UA-Compatible', 'content' => 'IE=EDGE' ) );
+
$ret .= implode( "\n", array(
$this->getHeadLinks(),
$this->buildCssLinks(),
// Normalize Halfwidth and Fullwidth Unicode block that IE6 might treat as ascii
$value = preg_replace_callback(
- '/[ï¼\81-ï½\9a]/u', // U+FF01 to U+FF5A
+ '/[ï¼\81-[]-ï½\9a]/u', // U+FF01 to U+FF5A, excluding U+FF3C (bug 58088)
function ( $matches ) {
$cp = utf8ToCodepoint( $matches[0] );
if ( $cp === false ) {
if ( preg_match( '/[\000-\010\013\016-\037\177]/', $value ) ) {
return '/* invalid control char */';
} elseif ( preg_match(
- '! expression | filter\s*: | accelerator\s*: | url\s*\( | image\s*\( | image-set\s*\( !ix',
- $value
- ) ) {
+ '! expression
+ | filter\s*:
+ | accelerator\s*:
+ | -o-link\s*:
+ | -o-link-source\s*:
+ | -o-replace\s*:
+ | url\s*\(
+ | image\s*\(
+ | image-set\s*\(
+ !ix', $value ) ) {
return '/* insecure input */';
}
return $value;
+++ /dev/null
-<?php
-/**
- * Factory for handling the special page list and generating SpecialPage objects.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * 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 SpecialPage
- * @defgroup SpecialPage SpecialPage
- */
-
-/**
- * Factory for handling the special page list and generating SpecialPage objects.
- *
- * To add a special page in an extension, add to $wgSpecialPages either
- * an object instance or an array containing the name and constructor
- * parameters. The latter is preferred for performance reasons.
- *
- * The object instantiated must be either an instance of SpecialPage or a
- * sub-class thereof. It must have an execute() method, which sends the HTML
- * for the special page to $wgOut. The parent class has an execute() method
- * which distributes the call to the historical global functions. Additionally,
- * execute() also checks if the user has the necessary access privileges
- * and bails out if not.
- *
- * To add a core special page, use the similar static list in
- * SpecialPageFactory::$list. To remove a core static special page at runtime, use
- * a SpecialPage_initList hook.
- *
- * @ingroup SpecialPage
- * @since 1.17
- */
-class SpecialPageFactory {
- /**
- * List of special page names to the subclass of SpecialPage which handles them.
- */
- private static $list = array(
- // Maintenance Reports
- 'BrokenRedirects' => 'BrokenRedirectsPage',
- 'Deadendpages' => 'DeadendpagesPage',
- 'DoubleRedirects' => 'DoubleRedirectsPage',
- 'Longpages' => 'LongpagesPage',
- 'Ancientpages' => 'AncientpagesPage',
- 'Lonelypages' => 'LonelypagesPage',
- 'Fewestrevisions' => 'FewestrevisionsPage',
- 'Withoutinterwiki' => 'WithoutinterwikiPage',
- 'Protectedpages' => 'SpecialProtectedpages',
- 'Protectedtitles' => 'SpecialProtectedtitles',
- 'Shortpages' => 'ShortpagesPage',
- 'Uncategorizedcategories' => 'UncategorizedcategoriesPage',
- 'Uncategorizedimages' => 'UncategorizedimagesPage',
- 'Uncategorizedpages' => 'UncategorizedpagesPage',
- 'Uncategorizedtemplates' => 'UncategorizedtemplatesPage',
- 'Unusedcategories' => 'UnusedcategoriesPage',
- 'Unusedimages' => 'UnusedimagesPage',
- 'Unusedtemplates' => 'UnusedtemplatesPage',
- 'Unwatchedpages' => 'UnwatchedpagesPage',
- 'Wantedcategories' => 'WantedcategoriesPage',
- 'Wantedfiles' => 'WantedfilesPage',
- 'Wantedpages' => 'WantedpagesPage',
- 'Wantedtemplates' => 'WantedtemplatesPage',
-
- // List of pages
- 'Allpages' => 'SpecialAllpages',
- 'Prefixindex' => 'SpecialPrefixindex',
- 'Categories' => 'SpecialCategories',
- 'Listredirects' => 'ListredirectsPage',
- 'PagesWithProp' => 'SpecialPagesWithProp',
-
- // Login/create account
- 'Userlogin' => 'LoginForm',
- 'CreateAccount' => 'SpecialCreateAccount',
-
- // Users and rights
- 'Block' => 'SpecialBlock',
- 'Unblock' => 'SpecialUnblock',
- 'BlockList' => 'SpecialBlockList',
- 'ChangePassword' => 'SpecialChangePassword',
- 'PasswordReset' => 'SpecialPasswordReset',
- 'DeletedContributions' => 'DeletedContributionsPage',
- 'Preferences' => 'SpecialPreferences',
- 'ResetTokens' => 'SpecialResetTokens',
- 'Contributions' => 'SpecialContributions',
- 'Listgrouprights' => 'SpecialListGroupRights',
- 'Listusers' => 'SpecialListUsers',
- 'Listadmins' => 'SpecialListAdmins',
- 'Listbots' => 'SpecialListBots',
- 'Activeusers' => 'SpecialActiveUsers',
- 'Userrights' => 'UserrightsPage',
- 'EditWatchlist' => 'SpecialEditWatchlist',
-
- // Recent changes and logs
- 'Newimages' => 'SpecialNewFiles',
- 'Log' => 'SpecialLog',
- 'Watchlist' => 'SpecialWatchlist',
- 'Newpages' => 'SpecialNewpages',
- 'Recentchanges' => 'SpecialRecentChanges',
- 'Recentchangeslinked' => 'SpecialRecentChangesLinked',
- 'Tags' => 'SpecialTags',
-
- // Media reports and uploads
- 'Listfiles' => 'SpecialListFiles',
- 'Filepath' => 'SpecialFilepath',
- 'MIMEsearch' => 'MIMEsearchPage',
- 'FileDuplicateSearch' => 'FileDuplicateSearchPage',
- 'Upload' => 'SpecialUpload',
- 'UploadStash' => 'SpecialUploadStash',
-
- // Data and tools
- 'Statistics' => 'SpecialStatistics',
- 'Allmessages' => 'SpecialAllmessages',
- 'Version' => 'SpecialVersion',
- 'Lockdb' => 'SpecialLockdb',
- 'Unlockdb' => 'SpecialUnlockdb',
-
- // Redirecting special pages
- 'LinkSearch' => 'LinkSearchPage',
- 'Randompage' => 'Randompage',
- 'RandomInCategory' => 'SpecialRandomInCategory',
- 'Randomredirect' => 'SpecialRandomredirect',
-
- // High use pages
- 'Mostlinkedcategories' => 'MostlinkedCategoriesPage',
- 'Mostimages' => 'MostimagesPage',
- 'Mostinterwikis' => 'MostinterwikisPage',
- 'Mostlinked' => 'MostlinkedPage',
- 'Mostlinkedtemplates' => 'MostlinkedTemplatesPage',
- 'Mostcategories' => 'MostcategoriesPage',
- 'Mostrevisions' => 'MostrevisionsPage',
-
- // Page tools
- 'ComparePages' => 'SpecialComparePages',
- 'Export' => 'SpecialExport',
- 'Import' => 'SpecialImport',
- 'Undelete' => 'SpecialUndelete',
- 'Whatlinkshere' => 'SpecialWhatlinkshere',
- 'MergeHistory' => 'SpecialMergeHistory',
- 'ExpandTemplates' => 'SpecialExpandTemplates',
-
- // Other
- 'Booksources' => 'SpecialBookSources',
-
- // Unlisted / redirects
- 'Blankpage' => 'SpecialBlankpage',
- 'Emailuser' => 'SpecialEmailUser',
- 'Movepage' => 'MovePageForm',
- 'Mycontributions' => 'SpecialMycontributions',
- 'Mypage' => 'SpecialMypage',
- 'Mytalk' => 'SpecialMytalk',
- 'Myuploads' => 'SpecialMyuploads',
- 'AllMyUploads' => 'SpecialAllMyUploads',
- 'PermanentLink' => 'SpecialPermanentLink',
- 'Redirect' => 'SpecialRedirect',
- 'Revisiondelete' => 'SpecialRevisionDelete',
- 'Specialpages' => 'SpecialSpecialpages',
- 'Userlogout' => 'SpecialUserlogout',
- );
-
- private static $aliases;
-
- /**
- * Get the special page list
- *
- * @return array
- */
- static function getList() {
- global $wgSpecialPages;
- global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
- global $wgEnableEmail, $wgEnableJavaScriptTest;
-
- if ( !is_object( self::$list ) ) {
- wfProfileIn( __METHOD__ );
-
- if ( !$wgDisableCounters ) {
- self::$list['Popularpages'] = 'PopularpagesPage';
- }
-
- if ( !$wgDisableInternalSearch ) {
- self::$list['Search'] = 'SpecialSearch';
- }
-
- if ( $wgEmailAuthentication ) {
- self::$list['Confirmemail'] = 'EmailConfirmation';
- self::$list['Invalidateemail'] = 'EmailInvalidation';
- }
-
- if ( $wgEnableEmail ) {
- self::$list['ChangeEmail'] = 'SpecialChangeEmail';
- }
-
- if ( $wgEnableJavaScriptTest ) {
- self::$list['JavaScriptTest'] = 'SpecialJavaScriptTest';
- }
-
- // Add extension special pages
- self::$list = array_merge( self::$list, $wgSpecialPages );
-
- // Run hooks
- // This hook can be used to remove undesired built-in special pages
- wfRunHooks( 'SpecialPage_initList', array( &self::$list ) );
-
- // Cast to object: func()[$key] doesn't work, but func()->$key does
- settype( self::$list, 'object' );
-
- wfProfileOut( __METHOD__ );
- }
- return self::$list;
- }
-
- /**
- * Initialise and return the list of special page aliases. Returns an object with
- * properties which can be accessed $obj->pagename - each property is an array of
- * aliases; the first in the array is the canonical alias. All registered special
- * pages are guaranteed to have a property entry, and for that property array to
- * contain at least one entry (English fallbacks will be added if necessary).
- * @return Object
- */
- static function getAliasList() {
- if ( !is_object( self::$aliases ) ) {
- global $wgContLang;
- $aliases = $wgContLang->getSpecialPageAliases();
-
- // Objects are passed by reference by default, need to create a copy
- $missingPages = clone self::getList();
-
- self::$aliases = array();
- foreach ( $aliases as $realName => $aliasList ) {
- foreach ( $aliasList as $alias ) {
- self::$aliases[$wgContLang->caseFold( $alias )] = $realName;
- }
- unset( $missingPages->$realName );
- }
- foreach ( $missingPages as $name => $stuff ) {
- self::$aliases[$wgContLang->caseFold( $name )] = $name;
- }
-
- // Cast to object: func()[$key] doesn't work, but func()->$key does
- self::$aliases = (object)self::$aliases;
- }
- return self::$aliases;
- }
-
- /**
- * Given a special page name with a possible subpage, return an array
- * where the first element is the special page name and the second is the
- * subpage.
- *
- * @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;
- $bits = explode( '/', $alias, 2 );
-
- $caseFoldedAlias = $wgContLang->caseFold( $bits[0] );
- $caseFoldedAlias = str_replace( ' ', '_', $caseFoldedAlias );
- if ( isset( self::getAliasList()->$caseFoldedAlias ) ) {
- $name = self::getAliasList()->$caseFoldedAlias;
- } else {
- return array( null, null );
- }
-
- if ( !isset( $bits[1] ) ) { // bug 2087
- $par = null;
- } else {
- $par = $bits[1];
- }
-
- return array( $name, $par );
- }
-
- /**
- * Add a page to a certain display group for Special:SpecialPages
- *
- * @param SpecialPage|string $page
- * @param string $group
- * @deprecated since 1.21 Override SpecialPage::getGroupName
- */
- public static function setGroup( $page, $group ) {
- wfDeprecated( __METHOD__, '1.21' );
-
- global $wgSpecialPageGroups;
- $name = is_object( $page ) ? $page->getName() : $page;
- $wgSpecialPageGroups[$name] = $group;
- }
-
- /**
- * Get the group that the special page belongs in on Special:SpecialPage
- *
- * @param SpecialPage $page
- * @return string
- * @deprecated since 1.21 Use SpecialPage::getFinalGroupName
- */
- public static function getGroup( &$page ) {
- wfDeprecated( __METHOD__, '1.21' );
-
- return $page->getFinalGroupName();
- }
-
- /**
- * 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 bool True if a special page exists with this name
- */
- public static function exists( $name ) {
- list( $title, /*...*/ ) = self::resolveAlias( $name );
- return property_exists( self::getList(), $title );
- }
-
- /**
- * Find the object with a given name and return it (or NULL)
- *
- * @param string $name Special page name, may be localised and/or an alias
- * @return SpecialPage|null SpecialPage object or null if the page doesn't exist
- */
- public static function getPage( $name ) {
- list( $realName, /*...*/ ) = self::resolveAlias( $name );
- if ( property_exists( self::getList(), $realName ) ) {
- $rec = self::getList()->$realName;
- if ( is_string( $rec ) ) {
- $className = $rec;
- return new $className;
- } elseif ( is_array( $rec ) ) {
- // @deprecated, officially since 1.18, unofficially since forever
- wfDebug( "Array syntax for \$wgSpecialPages is deprecated, define a subclass of SpecialPage instead." );
- $className = array_shift( $rec );
- self::getList()->$realName = MWFunction::newObj( $className, $rec );
- }
- return self::getList()->$realName;
- } else {
- return null;
- }
- }
-
- /**
- * 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
- * if not provided
- * @return array ( string => Specialpage )
- */
- public static function getUsablePages( User $user = null ) {
- $pages = array();
- if ( $user === null ) {
- global $wgUser;
- $user = $wgUser;
- }
- foreach ( self::getList() as $name => $rec ) {
- $page = self::getPage( $name );
- if ( $page ) { // not null
- $page->setContext( RequestContext::getMain() );
- if ( $page->isListed()
- && ( !$page->isRestricted() || $page->userCanExecute( $user ) )
- ) {
- $pages[$name] = $page;
- }
- }
- }
- return $pages;
- }
-
- /**
- * Return categorised listable special pages for all users
- *
- * @return array ( string => Specialpage )
- */
- public static function getRegularPages() {
- $pages = array();
- foreach ( self::getList() as $name => $rec ) {
- $page = self::getPage( $name );
- if ( $page->isListed() && !$page->isRestricted() ) {
- $pages[$name] = $page;
- }
- }
- return $pages;
- }
-
- /**
- * Return categorised listable special pages which are available
- * for the current user, but not for everyone
- *
- * @return array ( string => Specialpage )
- */
- public static function getRestrictedPages() {
- global $wgUser;
- $pages = array();
- foreach ( self::getList() as $name => $rec ) {
- $page = self::getPage( $name );
- if (
- $page->isListed()
- && $page->isRestricted()
- && $page->userCanExecute( $wgUser )
- ) {
- $pages[$name] = $page;
- }
- }
- return $pages;
- }
-
- /**
- * Execute a special page path.
- * The path may contain parameters, e.g. Special:Name/Params
- * Extracts the special page name and call the execute method, passing the parameters
- *
- * 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
- * @param IContextSource $context
- * @param bool $including Bool output is being captured for use in {{special:whatever}}
- *
- * @return bool
- */
- public static function executePath( Title &$title, IContextSource &$context, $including = false ) {
- wfProfileIn( __METHOD__ );
-
- // @todo FIXME: Redirects broken due to this call
- $bits = explode( '/', $title->getDBkey(), 2 );
- $name = $bits[0];
- if ( !isset( $bits[1] ) ) { // bug 2087
- $par = null;
- } else {
- $par = $bits[1];
- }
- $page = self::getPage( $name );
- // Nonexistent?
- if ( !$page ) {
- $context->getOutput()->setArticleRelated( false );
- $context->getOutput()->setRobotPolicy( 'noindex,nofollow' );
-
- global $wgSend404Code;
- if ( $wgSend404Code ) {
- $context->getOutput()->setStatusCode( 404 );
- }
-
- $context->getOutput()->showErrorPage( 'nosuchspecialpage', 'nospecialpagetext' );
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- // Page exists, set the context
- $page->setContext( $context );
-
- if ( !$including ) {
- // Redirect to canonical alias for GET commands
- // Not for POST, we'd lose the post data, so it's best to just distribute
- // the request. Such POST requests are possible for old extensions that
- // generate self-links without being aware that their default name has
- // changed.
- if ( $name != $page->getLocalName() && !$context->getRequest()->wasPosted() ) {
- $query = $context->getRequest()->getQueryValues();
- unset( $query['title'] );
- $title = $page->getPageTitle( $par );
- $url = $title->getFullURL( $query );
- $context->getOutput()->redirect( $url );
- wfProfileOut( __METHOD__ );
- return $title;
- } else {
- $context->setTitle( $page->getPageTitle( $par ) );
- }
-
- } elseif ( !$page->isIncludable() ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $page->including( $including );
-
- // Execute special page
- $profName = 'Special:' . $page->getName();
- wfProfileIn( $profName );
- $page->run( $par );
- wfProfileOut( $profName );
- wfProfileOut( __METHOD__ );
- return true;
- }
-
- /**
- * Just like executePath() but will override global variables and execute
- * the page in "inclusion" mode. Returns true if the execution was
- * successful or false if there was no such special page, or a title object
- * if it was a redirect.
- *
- * Also saves the current $wgTitle, $wgOut, $wgRequest, $wgUser and $wgLang
- * 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 IContextSource $context
- * @return string HTML fragment
- */
- static function capturePath( Title $title, IContextSource $context ) {
- global $wgOut, $wgTitle, $wgRequest, $wgUser, $wgLang;
-
- // Save current globals
- $oldTitle = $wgTitle;
- $oldOut = $wgOut;
- $oldRequest = $wgRequest;
- $oldUser = $wgUser;
- $oldLang = $wgLang;
-
- // Set the globals to the current context
- $wgTitle = $title;
- $wgOut = $context->getOutput();
- $wgRequest = $context->getRequest();
- $wgUser = $context->getUser();
- $wgLang = $context->getLanguage();
-
- // The useful part
- $ret = self::executePath( $title, $context, true );
-
- // And restore the old globals
- $wgTitle = $oldTitle;
- $wgOut = $oldOut;
- $wgRequest = $oldRequest;
- $wgUser = $oldUser;
- $wgLang = $oldLang;
-
- return $ret;
- }
-
- /**
- * Get the local name for a specified canonical name
- *
- * @param string $name
- * @param string|bool $subpage
- * @return string
- */
- static function getLocalNameFor( $name, $subpage = false ) {
- global $wgContLang;
- $aliases = $wgContLang->getSpecialPageAliases();
-
- if ( isset( $aliases[$name][0] ) ) {
- $name = $aliases[$name][0];
- } else {
- // Try harder in case someone misspelled the correct casing
- $found = false;
- foreach ( $aliases as $n => $values ) {
- if ( strcasecmp( $name, $n ) === 0 ) {
- wfWarn( "Found alias defined for $n when searching for " .
- "special page aliases for $name. Case mismatch?" );
- $name = $values[0];
- $found = true;
- break;
- }
- }
- if ( !$found ) {
- wfWarn( "Did not find alias for special page '$name'. " .
- "Perhaps no aliases are defined for it?" );
- }
- }
- if ( $subpage !== false && !is_null( $subpage ) ) {
- $name = "$name/$subpage";
- }
- return $wgContLang->ucfirst( $name );
- }
-
- /**
- * Get a title for a given alias
- *
- * @param string $alias
- * @return Title|null Title or null if there is no such alias
- */
- static function getTitleForAlias( $alias ) {
- $name = self::resolveAlias( $alias );
- if ( $name ) {
- return SpecialPage::getTitleFor( $name );
- } else {
- return null;
- }
- }
-}
return ( $sources > 0 );
}
+ /**
+ * Determines whether cascading protection sources have already been loaded from
+ * the database.
+ *
+ * @param bool $getPages True to check if the pages are loaded, or false to check
+ * if the status is loaded.
+ * @return bool Whether or not the specified information has been loaded
+ * @since 1.23
+ */
+ public function areCascadeProtectionSourcesLoaded( $getPages = true ) {
+ return $getPages ? isset( $this->mCascadeSources ) : isset( $this->mHasCascadingRestrictions );
+ }
+
/**
* Cascading protection: Get the source of any cascading restrictions on this page.
*
return array( $sources, $pagerestrictions );
}
+ /**
+ * Accessor for mRestrictionsLoaded
+ *
+ * @return bool Whether or not the page's restrictions have already been
+ * loaded from the database
+ * @since 1.23
+ */
+ public function areRestrictionsLoaded() {
+ return $this->mRestrictionsLoaded;
+ }
+
/**
* Accessor/initialisation for mRestrictions
*
: array();
}
+ /**
+ * Accessor/initialisation for mRestrictions
+ *
+ * @return Array of Arrays of Strings the first level indexed by
+ * action, the second level containing the names of the groups
+ * allowed to perform each action
+ * @since 1.23
+ */
+ public function getAllRestrictions() {
+ if ( !$this->mRestrictionsLoaded ) {
+ $this->loadRestrictions();
+ }
+ return $this->mRestrictions;
+ }
+
/**
* Get the expiry time for the restriction against a given action
*
+++ /dev/null
-<?php
-/**
- * Client for querying zhdaemon.
- *
- * 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
- */
-
-/**
- * Client for querying zhdaemon
- */
-class ZhClient {
- var $mHost, $mPort, $mFP, $mConnected;
-
- /**
- * Constructor
- *
- * @param $host
- * @param $port
- *
- * @return ZhClient
- */
- function __construct( $host, $port ) {
- $this->mHost = $host;
- $this->mPort = $port;
- $this->mConnected = $this->connect();
- }
-
- /**
- * Check if connection to zhdaemon is successful
- *
- * @return bool
- */
- function isconnected() {
- return $this->mConnected;
- }
-
- /**
- * Establish connection
- *
- * @access private
- *
- * @return bool
- */
- function connect() {
- wfSuppressWarnings();
- $errno = $errstr = '';
- $this->mFP = fsockopen( $this->mHost, $this->mPort, $errno, $errstr, 30 );
- wfRestoreWarnings();
- return !$this->mFP;
- }
-
- /**
- * Query the daemon and return the result
- *
- * @access private
- *
- * @return string
- */
- function query( $request ) {
- if ( !$this->mConnected ) {
- return false;
- }
-
- fwrite( $this->mFP, $request );
-
- $result = fgets( $this->mFP, 1024 );
-
- list( $status, $len ) = explode( ' ', $result );
- if ( $status == 'ERROR' ) {
- // $len is actually the error code...
- print "zhdaemon error $len<br />\n";
- return false;
- }
- $bytesread = 0;
- $data = '';
- while ( !feof( $this->mFP ) && $bytesread < $len ) {
- $str = fread( $this->mFP, $len - $bytesread );
- $bytesread += strlen( $str );
- $data .= $str;
- }
- // data should be of length $len. otherwise something is wrong
- return strlen( $data ) == $len;
- }
-
- /**
- * Convert the input to a different language variant
- *
- * @param string $text input text
- * @param string $tolang language variant
- * @return string the converted text
- */
- function convert( $text, $tolang ) {
- $len = strlen( $text );
- $q = "CONV $tolang $len\n$text";
- $result = $this->query( $q );
- if ( !$result ) {
- $result = $text;
- }
- return $result;
- }
-
- /**
- * Convert the input to all possible variants
- *
- * @param string $text input text
- * @return array langcode => converted_string
- */
- function convertToAllVariants( $text ) {
- $len = strlen( $text );
- $q = "CONV ALL $len\n$text";
- $result = $this->query( $q );
- if ( !$result ) {
- return false;
- }
- list( $infoline, $data ) = explode( '|', $result, 2 );
- $info = explode( ';', $infoline );
- $ret = array();
- $i = 0;
- foreach ( $info as $variant ) {
- list( $code, $len ) = explode( ' ', $variant );
- $ret[strtolower( $code )] = substr( $data, $i, $len );
- $i += $len;
- }
- return $ret;
- }
-
- /**
- * Perform word segmentation
- *
- * @param string $text input text
- * @return string segmented text
- */
- function segment( $text ) {
- $len = strlen( $text );
- $q = "SEG $len\n$text";
- $result = $this->query( $q );
- if ( !$result ) { // fallback to character based segmentation
- $result = $this->segment( $text );
- }
- return $result;
- }
-
- /**
- * Close the connection
- */
- function close() {
- fclose( $this->mFP );
- }
-}
* @return array
*/
protected function pageInfo() {
- global $wgContLang, $wgRCMaxAge, $wgMemc,
+ global $wgContLang, $wgRCMaxAge, $wgMemc, $wgMiserMode,
$wgUnwatchedPageThreshold, $wgPageInfoTransclusionLimit;
$user = $this->getUser();
) {
$options = array( 'LIMIT' => $wgPageInfoTransclusionLimit );
$transcludedTemplates = $title->getTemplateLinksFrom( $options );
- $transcludedTargets = $title->getTemplateLinksTo( $options );
+ if ( $wgMiserMode ) {
+ $transcludedTargets = array();
+ } else {
+ $transcludedTargets = $title->getTemplateLinksTo( $options );
+ }
// Page properties
$pageInfo['header-properties'] = array();
);
}
- if ( $pageCounts['transclusion']['to'] > 0 ) {
+ if ( !$wgMiserMode && $pageCounts['transclusion']['to'] > 0 ) {
if ( $pageCounts['transclusion']['to'] > count( $transcludedTargets ) ) {
$more = Linker::link(
$whatLinksHere,
if ( $this->fld_ids ) {
$vals['logid'] = intval( $row->log_id );
- $vals['pageid'] = intval( $row->page_id );
}
if ( $this->fld_title || $this->fld_parsedcomment ) {
$title = Title::makeTitle( $row->log_namespace, $row->log_title );
}
- if ( $this->fld_title ) {
+ if ( $this->fld_title || $this->fld_ids ) {
if ( LogEventsList::isDeleted( $row, LogPage::DELETED_ACTION ) ) {
$vals['actionhidden'] = '';
} else {
- ApiQueryBase::addTitleInfo( $vals, $title );
+ if ( $this->fld_title ) {
+ ApiQueryBase::addTitleInfo( $vals, $title );
+ }
+ if ( $this->fld_ids ) {
+ $vals['pageid'] = intval( $row->page_id );
+ }
}
}
$data['imagelimits'][$k] = array( 'width' => $limit[0], 'height' => $limit[1] );
}
+ if ( !empty( $GLOBALS['wgFavicon'] ) ) {
+ $data['favicon'] = $GLOBALS['wgFavicon'];
+ }
+
wfRunHooks( 'APIQuerySiteInfoGeneralInfo', array( $this, &$data ) );
return $this->getResult()->addValue( 'query', $property, $data );
if ( $block[0]->mAttribs['rc_log_type'] ) {
# Log entry
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
- . $block[0]->mAttribs['rc_log_type'] . '-' . $block[0]->mAttribs['rc_title'] );
+ . $block[0]->mAttribs['rc_log_type'] );
} else {
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns'
. $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] );
$classes = array( 'mw-enhanced-rc' );
if ( $logType ) {
# Log entry
- $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-'
- . $logType . '-' . $rcObj->mAttribs['rc_title'] );
+ $classes[] = Sanitizer::escapeClass( 'mw-changeslist-log-' . $logType );
} else {
$classes[] = Sanitizer::escapeClass( 'mw-changeslist-ns' .
$rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title'] );
protected $mForeign;
protected $mErrorCount = 0;
protected $mLBInfo = array();
- protected $mFakeSlaveLag = null, $mFakeMaster = false;
protected $mDefaultBigSelects = null;
protected $mSchemaVars = false;
/**
* Set lag time in seconds for a fake slave
*
- * @param int $lag
+ * @param mixed $lag Valid values for this parameter are determined by the
+ * subclass, but should be a PHP scalar or array that would be sensible
+ * as part of $wgLBFactoryConf.
*/
public function setFakeSlaveLag( $lag ) {
- $this->mFakeSlaveLag = $lag;
}
/**
* @param bool $enabled
*/
public function setFakeMaster( $enabled = true ) {
- $this->mFakeMaster = $enabled;
}
/**
* zero if we timed out.
*/
public function masterPosWait( DBMasterPos $pos, $timeout ) {
- wfProfileIn( __METHOD__ );
-
- if ( !is_null( $this->mFakeSlaveLag ) ) {
- $wait = intval( ( $pos->pos - microtime( true ) + $this->mFakeSlaveLag ) * 1e6 );
-
- if ( $wait > $timeout * 1e6 ) {
- wfDebug( "Fake slave timed out waiting for $pos ($wait us)\n" );
- wfProfileOut( __METHOD__ );
-
- return -1;
- } elseif ( $wait > 0 ) {
- wfDebug( "Fake slave waiting $wait us\n" );
- usleep( $wait );
- wfProfileOut( __METHOD__ );
-
- return 1;
- } else {
- wfDebug( "Fake slave up to date ($wait us)\n" );
- wfProfileOut( __METHOD__ );
-
- return 0;
- }
- }
-
- wfProfileOut( __METHOD__ );
-
# Real waits are implemented in the subclass.
return 0;
}
* @return DBMasterPos|bool False if this is not a slave.
*/
public function getSlavePos() {
- if ( !is_null( $this->mFakeSlaveLag ) ) {
- $pos = new MySQLMasterPos( 'fake', microtime( true ) - $this->mFakeSlaveLag );
- wfDebug( __METHOD__ . ": fake slave pos = $pos\n" );
-
- return $pos;
- } else {
- # Stub
- return false;
- }
+ # Stub
+ return false;
}
/**
* @return DBMasterPos|bool False if this is not a master
*/
public function getMasterPos() {
- if ( $this->mFakeMaster ) {
- return new MySQLMasterPos( 'fake', microtime( true ) );
- } else {
- return false;
- }
+ # Stub
+ return false;
}
/**
* @return int Database replication lag in seconds
*/
public function getLag() {
- return intval( $this->mFakeSlaveLag );
+ return 0;
}
/**
* @return string Wikitext of a link to the server software's web site
*/
public function getSoftwareLink() {
- return "[http://www.microsoft.com/sql/ MS SQL Server]";
+ return "[{{int:version-db-mssql-url}} MS SQL Server]";
}
/**
/** @var MysqlMasterPos */
protected $lastKnownSlavePos;
+ /** @var null|int */
+ protected $mFakeSlaveLag = null;
+
+ protected $mFakeMaster = false;
+
/**
* @return string
*/
*/
abstract protected function mysqlPing();
+ /**
+ * Set lag time in seconds for a fake slave
+ *
+ * @param int $lag
+ */
+ public function setFakeSlaveLag( $lag ) {
+ $this->mFakeSlaveLag = $lag;
+ }
+
+ /**
+ * Make this connection a fake master
+ *
+ * @param bool $enabled
+ */
+ public function setFakeMaster( $enabled = true ) {
+ $this->mFakeMaster = $enabled;
+ }
+
/**
* Returns slave lag.
*
*
* @param DBMasterPos|MySQLMasterPos $pos
* @param int $timeout The maximum number of seconds to wait for synchronisation
- * @return bool|string
+ * @return int Zero if the slave was past that position already,
+ * greater than zero if we waited for some period of time, less than
+ * zero if we timed out.
*/
function masterPosWait( DBMasterPos $pos, $timeout ) {
if ( $this->lastKnownSlavePos && $this->lastKnownSlavePos->hasReached( $pos ) ) {
$this->commit( __METHOD__, 'flush' );
if ( !is_null( $this->mFakeSlaveLag ) ) {
- $status = parent::masterPosWait( $pos, $timeout );
- wfProfileOut( __METHOD__ );
+ $wait = intval( ( $pos->pos - microtime( true ) + $this->mFakeSlaveLag ) * 1e6 );
+
+ if ( $wait > $timeout * 1e6 ) {
+ wfDebug( "Fake slave timed out waiting for $pos ($wait us)\n" );
+ wfProfileOut( __METHOD__ );
- return $status;
+ return -1;
+ } elseif ( $wait > 0 ) {
+ wfDebug( "Fake slave waiting $wait us\n" );
+ usleep( $wait );
+ wfProfileOut( __METHOD__ );
+
+ return 1;
+ } else {
+ wfDebug( "Fake slave up to date ($wait us)\n" );
+ wfProfileOut( __METHOD__ );
+
+ return 0;
+ }
}
# Call doQuery() directly, to avoid opening a transaction if DBO_TRX is set
$encFile = $this->addQuotes( $pos->file );
- $encPos = intval( $pos->getMasterPos() );
+ $encPos = intval( $pos->pos );
$sql = "SELECT MASTER_POS_WAIT($encFile, $encPos, $timeout)";
$res = $this->doQuery( $sql );
*/
function getSlavePos() {
if ( !is_null( $this->mFakeSlaveLag ) ) {
- return parent::getSlavePos();
+ $pos = new MySQLMasterPos( 'fake', microtime( true ) - $this->mFakeSlaveLag );
+ wfDebug( __METHOD__ . ": fake slave pos = $pos\n" );
+
+ return $pos;
}
$res = $this->query( 'SHOW SLAVE STATUS', 'DatabaseBase::getSlavePos' );
*/
function getMasterPos() {
if ( $this->mFakeMaster ) {
- return parent::getMasterPos();
+ return new MySQLMasterPos( 'fake', microtime( true ) );
}
$res = $this->query( 'SHOW MASTER STATUS', 'DatabaseBase::getMasterPos' );
* @return string
*/
public function getSoftwareLink() {
- return '[http://www.mysql.com/ MySQL]';
+ $version = $this->getServerVersion();
+ if ( strpos( $version, 'MariaDB' ) !== false ) {
+ return '[{{int:version-db-mariadb-url}} MariaDB]';
+ } elseif ( strpos( $version, 'percona' ) !== false ) {
+ return '[{{int:version-db-percona-url}} Percona Server]';
+ } else {
+ return '[{{int:version-db-mysql-url}} MySQL]';
+ }
}
/**
/** @var string */
public $file;
- /** @var int */
- private $pos;
+ /** @var int timestamp */
+ public $pos;
function __construct( $file, $pos ) {
$this->file = $file;
return ( $thisPos && $thatPos && $thisPos >= $thatPos );
}
-
- /**
- * @return int
- */
- public function getMasterPos() {
- return $this->pos;
- }
}
* @return string wikitext of a link to the server software's web site
*/
public function getSoftwareLink() {
- return '[http://www.oracle.com/ Oracle]';
+ return '[{{int:version-db-oracle-url}} Oracle]';
}
/**
return 'BITOR(' . $fieldLeft . ', ' . $fieldRight . ')';
}
- function setFakeMaster( $enabled = true ) {
- }
-
function getDBname() {
return $this->mDBname;
}
return $res->numRows() > 0;
}
+ /**
+ * Change the FOR UPDATE option as necessary based on the join conditions. Then pass
+ * to the parent function to get the actual SQL text.
+ *
+ * In Postgres when using FOR UPDATE, only the main table and tables that are inner joined
+ * can be locked. That means tables in an outer join cannot be FOR UPDATE locked. Trying to do
+ * so causes a DB error. This wrapper checks which tables can be locked and adjusts it accordingly.
+ */
+ function selectSQLText( $table, $vars, $conds = '', $fname = __METHOD__, $options = array(), $join_conds = array() ) {
+ $forUpdateKey = array_search( 'FOR UPDATE', $options );
+ if ( $forUpdateKey !== false && $join_conds ) {
+ unset( $options[$forUpdateKey] );
+
+ foreach ( $join_conds as $table => $join_cond ) {
+ if ( 0 === preg_match( '/^(?:LEFT|RIGHT|FULL)(?: OUTER)? JOIN$/i', $join_cond[0] ) ) {
+ $options['FOR UPDATE'][] = $table;
+ }
+ }
+ }
+
+ return parent::selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
+ }
+
/**
* INSERT wrapper, inserts an array into a table
*
* @return string Wikitext of a link to the server software's web site
*/
public function getSoftwareLink() {
- return '[http://www.postgresql.org/ PostgreSQL]';
+ return '[{{int:version-db-postgres-url}} PostgreSQL]';
}
/**
// : false );
//}
- if ( isset( $noKeyOptions['FOR UPDATE'] ) ) {
+ if ( isset( $options['FOR UPDATE'] ) ) {
+ $postLimitTail .= ' FOR UPDATE OF ' . implode( ', ', $options['FOR UPDATE'] );
+ } else if ( isset( $noKeyOptions['FOR UPDATE'] ) ) {
$postLimitTail .= ' FOR UPDATE';
}
+
if ( isset( $noKeyOptions['DISTINCT'] ) || isset( $noKeyOptions['DISTINCTROW'] ) ) {
$startOpts .= 'DISTINCT';
}
return array( $startOpts, $useIndex, $preLimitTail, $postLimitTail );
}
- function setFakeMaster( $enabled = true ) {
- }
-
function getDBname() {
return $this->mDBname;
}
* @return string wikitext of a link to the server software's web site
*/
public function getSoftwareLink() {
- return "[http://sqlite.org/ SQLite]";
+ return "[{{int:version-db-sqlite-url}} SQLite]";
}
/**
/**
* An object representing a master or slave position in a replicated setup.
+ *
+ * The implementation details of this opaque type are up to the database subclass.
*/
interface DBMasterPos {
- /**
- * Return the master position.
- *
- * @return mixed Master position
- */
- public function getMasterPos();
}
list( $rcode, $rdesc, $rhdrs, $rbody, $rerr ) = $this->http->run( array(
'method' => 'HEAD',
'url' => $this->storageUrl( $auth, $srcCont, $srcRel ),
- 'headers' => $this->authTokenHeaders( $auth )
+ 'headers' => $this->authTokenHeaders( $auth ) + $this->headersFromParams( $params )
) );
if ( $rcode === 200 || $rcode === 204 ) {
// Update the object if it is missing some headers
fclose( $op['stream'] ); // close open handle
if ( $rcode >= 200 && $rcode <= 299
// double check that the disk is not full/broken
- && $tmpFile->getSize() == $rhdrs['content-length']
+ && $tmpFiles[$path]->getSize() == $rhdrs['content-length']
) {
// good
} elseif ( $rcode === 404 ) {
if ( $this->swiftTempUrlKey != '' ) {
$url = $this->storageUrl( $auth, $srcCont, $srcRel );
+ // Swift wants the signature based on the unencoded object name
+ $contPath = parse_url( $this->storageUrl( $auth, $srcCont ), PHP_URL_PATH );
$signature = hash_hmac( 'sha1',
- "GET\n{$expires}\n" . parse_url( $url, PHP_URL_PATH ),
+ "GET\n{$expires}\n{$contPath}/{$srcRel}",
$this->swiftTempUrlKey
);
return "{$url}?temp_url_sig={$signature}&temp_url_expires={$expires}";
protected function headersFromParams( array $params ) {
$hdrs = array();
if ( !empty( $params['latest'] ) ) {
- $hdrs[] = 'X-Newest: true';
+ $hdrs['x-newest'] = 'true';
}
return $hdrs;
'config-no-db' => 'Could not find a suitable database driver! You need to install a database driver for PHP.
The following database types are supported: $1.
-If you are on shared hosting, ask your hosting provider to install a suitable database driver.
-If you compiled PHP yourself, reconfigure it with a database client enabled, for example using <code>./configure --with-mysql</code>.
-If you installed PHP from a Debian or Ubuntu package, then you also need install the php5-mysql module.',
+If you compiled PHP yourself, reconfigure it with a database client enabled, for example, using <code>./configure --with-mysqli</code>.
+If you installed PHP from a Debian or Ubuntu package, then you also need to install, for example, the <code>php5-mysql</code> package.',
'config-outdated-sqlite' => "'''Warning:''' you have SQLite $1, which is lower than minimum required version $2. SQLite will be unavailable.",
'config-no-fts3' => "'''Warning:''' SQLite is compiled without the [//sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
'config-register-globals' => "'''Warning: PHP's <code>[http://php.net/register_globals register_globals]</code> option is enabled.'''
Consider putting the database somewhere else altogether, for example in <code>/var/lib/mediawiki/yourwiki</code>.",
'config-oracle-def-ts' => 'Default tablespace:',
'config-oracle-temp-ts' => 'Temporary tablespace:',
- 'config-type-mysql' => 'MySQL',
+ 'config-type-mysql' => 'MySQL (or compatible)',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
$1
If you do not see the database system you are trying to use listed below, then follow the instructions linked above to enable support.',
- 'config-support-mysql' => '* $1 is the primary target for MediaWiki and is best supported ([http://www.php.net/manual/en/mysql.installation.php how to compile PHP with MySQL support])',
- 'config-support-postgres' => '* $1 is a popular open source database system as an alternative to MySQL ([http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]). There may be some minor outstanding bugs, and it is not recommended for use in a production environment.',
- 'config-support-sqlite' => '* $1 is a lightweight database system which is very well supported. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], uses PDO)',
- 'config-support-oracle' => '* $1 is a commercial enterprise database. ([http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
+ 'config-dbsupport-mysql' => '* [{{int:version-db-mysql-url}} MySQL] is the primary target for MediaWiki and is best supported. MediaWiki also works with [{{int:version-db-mariadb-url}} MariaDB] and [{{int:version-db-percona-url}} Percona Server], which are MySQL compatible. ([http://www.php.net/manual/en/mysqli.installation.php How to compile PHP with MySQL support])',
+ 'config-dbsupport-postgres' => '* [{{int:version-db-postgres-url}} PostgreSQL] is a popular open source database system as an alternative to MySQL. There may be some minor outstanding bugs, and it is not recommended for use in a production environment. ([http://www.php.net/manual/en/pgsql.installation.php How to compile PHP with PostgreSQL support])',
+ 'config-dbsupport-sqlite' => '* [{{int:version-db-sqlite-url}} SQLite] is a lightweight database system that is very well supported. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], uses PDO)',
+ 'config-dbsupport-oracle' => '* [{{int:version-db-oracle-url}} Oracle] is a commercial enterprise database. ([http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
'config-header-mysql' => 'MySQL settings',
'config-header-postgres' => 'PostgreSQL settings',
'config-header-sqlite' => 'SQLite settings',
* {{msg-mw|config-env-php}}',
'config-unicode-pure-php-warning' => 'PECL is the name of a group producing standard pieces of software for PHP, and intl is the name of their library handling some aspects of internationalization.',
'config-unicode-update-warning' => "ICU is a body producing standard software tools for support of Unicode and other internationalization aspects. This message warns the system administrator installing MediaWiki that the server's software is not up-to-date and MediaWiki will have problems handling some characters.",
- 'config-no-db' => '{{doc-important|Do not translate "<code>./configure --with-mysql</code>" and "<code>php5-mysql</code>".}}
+ 'config-no-db' => '{{doc-important|Do not translate "<code>./configure --with-mysqli</code>" and "<code>php5-mysql</code>".}}
Parameters:
* $1 is comma separated list of database types supported by MediaWiki.',
'config-outdated-sqlite' => 'Used as warning. Parameters:
* $2 - error message',
'config-sqlite-dir-help' => '{{doc-important|Do not translate <code>.htaccess</code> and <code>/var/lib/mediawiki/yourwiki</code>.}}
Used in help box.',
- 'config-type-mysql' => '{{optional}}',
+ 'config-type-mysql' => '"Or compatible" refers to several database systems that are compatible with MySQL, as explained in {{msg-mw|config-dbsupport-mysql}}, and thus also work with this choice of database type.',
'config-type-postgres' => '{{optional}}',
'config-type-sqlite' => '{{optional}}',
'config-type-oracle' => '{{optional}}',
'config-support-info' => 'Parameters:
-* $1 - a list of DBMSs that MediaWiki supports, composed with other config-type-* and config-support-* messages.',
+* $1 - a list of DBMSs that MediaWiki supports, composed with config-dbsupport-* messages.',
'config-support-mysql' => 'Parameters:
* $1 - a link to the MySQL home page having the anchor text "MySQL".',
'config-support-postgres' => 'Parameters:
* $1 - a link to the SQLite home page having the anchor text "SQLite".',
'config-support-oracle' => 'Parameters:
* $1 - a link to the Oracle home page, the anchor text of which is "Oracle".',
+ 'config-dbsupport-mysql' => 'Used in {{msg-mw|config-support-info}}.',
+ 'config-dbsupport-postgres' => 'Used in {{msg-mw|config-support-info}}.',
+ 'config-dbsupport-sqlite' => 'Used in {{msg-mw|config-support-info}}.',
+ 'config-dbsupport-oracle' => 'Used in {{msg-mw|config-support-info}}.',
'config-invalid-db-server-oracle' => 'Used as error message. Parameters:
* $1 - database server name
See also:
$settings = '';
$defaultType = $this->getVar( 'wgDBtype' );
- // Messages: config-support-mysql, config-support-postgres, config-support-oracle,
- // config-support-sqlite
+ // Messages: config-dbsupport-mysql, config-dbsupport-postgres, config-dbsupport-oracle,
+ // config-dbsupport-sqlite
$dbSupport = '';
- foreach ( $this->parent->getDBTypes() as $type ) {
- $link = DatabaseBase::factory( $type )->getSoftwareLink();
- $dbSupport .= wfMessage( "config-support-$type", $link )->plain() . "\n";
+ foreach ( Installer::getDBTypes() as $type ) {
+ $dbSupport .= wfMessage( "config-dbsupport-$type" )->plain() . "\n";
}
$this->addHTML( $this->parent->getInfoBox(
wfMessage( 'config-support-info', trim( $dbSupport ) )->text() ) );
*/
public $rootElement = '';
+ /**
+ * Additional parsing options
+ */
+ private $parserOptions = array(
+ 'processing_instruction_handler' => '',
+ );
+
/**
* @param string $input a filename or string containing the XML element
* @param callable $filterCallback (optional)
* Filter should return 'true' to toggle on $this->filterMatch
* @param boolean $isFile (optional) indicates if the first parameter is a
* filename (default, true) or if it is a string (false)
+ * @param array $options list of additional parsing options:
+ * processing_instruction_handler: Callback for xml_set_processing_instruction_handler
*/
- function __construct( $input, $filterCallback = null, $isFile = true ) {
+ function __construct( $input, $filterCallback = null, $isFile = true, $options = array() ) {
$this->filterCallback = $filterCallback;
+ $this->parserOptions = array_merge( $this->parserOptions, $options );
+
if ( $isFile ) {
$this->validateFromFile( $input );
} else {
// case folding violates XML standard, turn it off
xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, false );
xml_set_element_handler( $parser, array( $this, 'rootElementOpen' ), false );
+ if ( $this->parserOptions['processing_instruction_handler'] ) {
+ xml_set_processing_instruction_handler(
+ $parser,
+ array( $this, 'processingInstructionHandler' )
+ );
+ }
return $parser;
}
$this->filterMatch = true;
}
}
+
+ /**
+ * @param $parser
+ * @param $target
+ * @param $data
+ */
+ private function processingInstructionHandler( $parser, $target, $data ) {
+ if ( call_user_func( $this->parserOptions['processing_instruction_handler'], $target, $data ) ) {
+ // Filter hit!
+ $this->filterMatch = true;
+ }
+ }
}
--- /dev/null
+/CompositionExclusions.txt
+/DerivedNormalizationProps.txt
+/NormalizationCorrections.txt
+/NormalizationTest.txt
+/UTF-8-test.txt
+/UnicodeData.txt
+/testdata
FETCH=wget
#FETCH=fetch
-all : UtfNormalData.inc Utf8Case.php
+all : UtfNormalData.inc
UtfNormalData.inc : UtfNormalGenerate.php UtfNormalUtil.php UnicodeData.txt CompositionExclusions.txt NormalizationCorrections.txt DerivedNormalizationProps.txt
$(PHP) UtfNormalGenerate.php
-Utf8Case.php : Utf8CaseGenerate.php UtfNormalUtil.php UnicodeData.txt
- $(PHP) Utf8CaseGenerate.php
-
test : testutf8 UtfNormalTest.php UtfNormalData.inc NormalizationTest.txt
$(PHP) UtfNormalTest.php
+++ /dev/null
-<?php
-/**
- * Simple 1:1 upper/lowercase switching arrays for utf-8 text.
- * Won't get context-sensitive things yet.
- *
- * Hack for bugs in ucfirst() and company
- *
- * These are pulled from memcached if possible, as this is faster than filling
- * up a big array manually.
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Translation array to get upper case character
- */
-$wikiUpperChars = array(
- 'a' => 'A',
- 'b' => 'B',
- 'c' => 'C',
- 'd' => 'D',
- 'e' => 'E',
- 'f' => 'F',
- 'g' => 'G',
- 'h' => 'H',
- 'i' => 'I',
- 'j' => 'J',
- 'k' => 'K',
- 'l' => 'L',
- 'm' => 'M',
- 'n' => 'N',
- 'o' => 'O',
- 'p' => 'P',
- 'q' => 'Q',
- 'r' => 'R',
- 's' => 'S',
- 't' => 'T',
- 'u' => 'U',
- 'v' => 'V',
- 'w' => 'W',
- 'x' => 'X',
- 'y' => 'Y',
- 'z' => 'Z',
- 'µ' => 'Μ',
- 'à' => 'À',
- 'á' => 'Á',
- 'â' => 'Â',
- 'ã' => 'Ã',
- 'ä' => 'Ä',
- 'å' => 'Å',
- 'æ' => 'Æ',
- 'ç' => 'Ç',
- 'è' => 'È',
- 'é' => 'É',
- 'ê' => 'Ê',
- 'ë' => 'Ë',
- 'ì' => 'Ì',
- 'í' => 'Í',
- 'î' => 'Î',
- 'ï' => 'Ï',
- 'ð' => 'Ð',
- 'ñ' => 'Ñ',
- 'ò' => 'Ò',
- 'ó' => 'Ó',
- 'ô' => 'Ô',
- 'õ' => 'Õ',
- 'ö' => 'Ö',
- 'ø' => 'Ø',
- 'ù' => 'Ù',
- 'ú' => 'Ú',
- 'û' => 'Û',
- 'ü' => 'Ü',
- 'ý' => 'Ý',
- 'þ' => 'Þ',
- 'ÿ' => 'Ÿ',
- 'ā' => 'Ā',
- 'ă' => 'Ă',
- 'ą' => 'Ą',
- 'ć' => 'Ć',
- 'ĉ' => 'Ĉ',
- 'ċ' => 'Ċ',
- 'č' => 'Č',
- 'ď' => 'Ď',
- 'đ' => 'Đ',
- 'ē' => 'Ē',
- 'ĕ' => 'Ĕ',
- 'ė' => 'Ė',
- 'ę' => 'Ę',
- 'ě' => 'Ě',
- 'ĝ' => 'Ĝ',
- 'ğ' => 'Ğ',
- 'ġ' => 'Ġ',
- 'ģ' => 'Ģ',
- 'ĥ' => 'Ĥ',
- 'ħ' => 'Ħ',
- 'ĩ' => 'Ĩ',
- 'ī' => 'Ī',
- 'ĭ' => 'Ĭ',
- 'į' => 'Į',
- 'ı' => 'I',
- 'ij' => 'IJ',
- 'ĵ' => 'Ĵ',
- 'ķ' => 'Ķ',
- 'ĺ' => 'Ĺ',
- 'ļ' => 'Ļ',
- 'ľ' => 'Ľ',
- 'ŀ' => 'Ŀ',
- 'ł' => 'Ł',
- 'ń' => 'Ń',
- 'ņ' => 'Ņ',
- 'ň' => 'Ň',
- 'ŋ' => 'Ŋ',
- 'ō' => 'Ō',
- 'ŏ' => 'Ŏ',
- 'ő' => 'Ő',
- 'œ' => 'Œ',
- 'ŕ' => 'Ŕ',
- 'ŗ' => 'Ŗ',
- 'ř' => 'Ř',
- 'ś' => 'Ś',
- 'ŝ' => 'Ŝ',
- 'ş' => 'Ş',
- 'š' => 'Š',
- 'ţ' => 'Ţ',
- 'ť' => 'Ť',
- 'ŧ' => 'Ŧ',
- 'ũ' => 'Ũ',
- 'ū' => 'Ū',
- 'ŭ' => 'Ŭ',
- 'ů' => 'Ů',
- 'ű' => 'Ű',
- 'ų' => 'Ų',
- 'ŵ' => 'Ŵ',
- 'ŷ' => 'Ŷ',
- 'ź' => 'Ź',
- 'ż' => 'Ż',
- 'ž' => 'Ž',
- 'ſ' => 'S',
- 'ƀ' => 'Ƀ',
- 'ƃ' => 'Ƃ',
- 'ƅ' => 'Ƅ',
- 'ƈ' => 'Ƈ',
- 'ƌ' => 'Ƌ',
- 'ƒ' => 'Ƒ',
- 'ƕ' => 'Ƕ',
- 'ƙ' => 'Ƙ',
- 'ƚ' => 'Ƚ',
- 'ƞ' => 'Ƞ',
- 'ơ' => 'Ơ',
- 'ƣ' => 'Ƣ',
- 'ƥ' => 'Ƥ',
- 'ƨ' => 'Ƨ',
- 'ƭ' => 'Ƭ',
- 'ư' => 'Ư',
- 'ƴ' => 'Ƴ',
- 'ƶ' => 'Ƶ',
- 'ƹ' => 'Ƹ',
- 'ƽ' => 'Ƽ',
- 'ƿ' => 'Ƿ',
- 'Dž' => 'DŽ',
- 'dž' => 'DŽ',
- 'Lj' => 'LJ',
- 'lj' => 'LJ',
- 'Nj' => 'NJ',
- 'nj' => 'NJ',
- 'ǎ' => 'Ǎ',
- 'ǐ' => 'Ǐ',
- 'ǒ' => 'Ǒ',
- 'ǔ' => 'Ǔ',
- 'ǖ' => 'Ǖ',
- 'ǘ' => 'Ǘ',
- 'ǚ' => 'Ǚ',
- 'ǜ' => 'Ǜ',
- 'ǝ' => 'Ǝ',
- 'ǟ' => 'Ǟ',
- 'ǡ' => 'Ǡ',
- 'ǣ' => 'Ǣ',
- 'ǥ' => 'Ǥ',
- 'ǧ' => 'Ǧ',
- 'ǩ' => 'Ǩ',
- 'ǫ' => 'Ǫ',
- 'ǭ' => 'Ǭ',
- 'ǯ' => 'Ǯ',
- 'Dz' => 'DZ',
- 'dz' => 'DZ',
- 'ǵ' => 'Ǵ',
- 'ǹ' => 'Ǹ',
- 'ǻ' => 'Ǻ',
- 'ǽ' => 'Ǽ',
- 'ǿ' => 'Ǿ',
- 'ȁ' => 'Ȁ',
- 'ȃ' => 'Ȃ',
- 'ȅ' => 'Ȅ',
- 'ȇ' => 'Ȇ',
- 'ȉ' => 'Ȉ',
- 'ȋ' => 'Ȋ',
- 'ȍ' => 'Ȍ',
- 'ȏ' => 'Ȏ',
- 'ȑ' => 'Ȑ',
- 'ȓ' => 'Ȓ',
- 'ȕ' => 'Ȕ',
- 'ȗ' => 'Ȗ',
- 'ș' => 'Ș',
- 'ț' => 'Ț',
- 'ȝ' => 'Ȝ',
- 'ȟ' => 'Ȟ',
- 'ȣ' => 'Ȣ',
- 'ȥ' => 'Ȥ',
- 'ȧ' => 'Ȧ',
- 'ȩ' => 'Ȩ',
- 'ȫ' => 'Ȫ',
- 'ȭ' => 'Ȭ',
- 'ȯ' => 'Ȯ',
- 'ȱ' => 'Ȱ',
- 'ȳ' => 'Ȳ',
- 'ȼ' => 'Ȼ',
- 'ȿ' => 'Ȿ',
- 'ɀ' => 'Ɀ',
- 'ɂ' => 'Ɂ',
- 'ɇ' => 'Ɇ',
- 'ɉ' => 'Ɉ',
- 'ɋ' => 'Ɋ',
- 'ɍ' => 'Ɍ',
- 'ɏ' => 'Ɏ',
- 'ɐ' => 'Ɐ',
- 'ɑ' => 'Ɑ',
- 'ɒ' => 'Ɒ',
- 'ɓ' => 'Ɓ',
- 'ɔ' => 'Ɔ',
- 'ɖ' => 'Ɖ',
- 'ɗ' => 'Ɗ',
- 'ə' => 'Ə',
- 'ɛ' => 'Ɛ',
- 'ɠ' => 'Ɠ',
- 'ɣ' => 'Ɣ',
- 'ɥ' => 'Ɥ',
- 'ɨ' => 'Ɨ',
- 'ɩ' => 'Ɩ',
- 'ɫ' => 'Ɫ',
- 'ɯ' => 'Ɯ',
- 'ɱ' => 'Ɱ',
- 'ɲ' => 'Ɲ',
- 'ɵ' => 'Ɵ',
- 'ɽ' => 'Ɽ',
- 'ʀ' => 'Ʀ',
- 'ʃ' => 'Ʃ',
- 'ʈ' => 'Ʈ',
- 'ʉ' => 'Ʉ',
- 'ʊ' => 'Ʊ',
- 'ʋ' => 'Ʋ',
- 'ʌ' => 'Ʌ',
- 'ʒ' => 'Ʒ',
- 'ͅ' => 'Ι',
- 'ͱ' => 'Ͱ',
- 'ͳ' => 'Ͳ',
- 'ͷ' => 'Ͷ',
- 'ͻ' => 'Ͻ',
- 'ͼ' => 'Ͼ',
- 'ͽ' => 'Ͽ',
- 'ά' => 'Ά',
- 'έ' => 'Έ',
- 'ή' => 'Ή',
- 'ί' => 'Ί',
- 'α' => 'Α',
- 'β' => 'Β',
- 'γ' => 'Γ',
- 'δ' => 'Δ',
- 'ε' => 'Ε',
- 'ζ' => 'Ζ',
- 'η' => 'Η',
- 'θ' => 'Θ',
- 'ι' => 'Ι',
- 'κ' => 'Κ',
- 'λ' => 'Λ',
- 'μ' => 'Μ',
- 'ν' => 'Ν',
- 'ξ' => 'Ξ',
- 'ο' => 'Ο',
- 'π' => 'Π',
- 'ρ' => 'Ρ',
- 'ς' => 'Σ',
- 'σ' => 'Σ',
- 'τ' => 'Τ',
- 'υ' => 'Υ',
- 'φ' => 'Φ',
- 'χ' => 'Χ',
- 'ψ' => 'Ψ',
- 'ω' => 'Ω',
- 'ϊ' => 'Ϊ',
- 'ϋ' => 'Ϋ',
- 'ό' => 'Ό',
- 'ύ' => 'Ύ',
- 'ώ' => 'Ώ',
- 'ϐ' => 'Β',
- 'ϑ' => 'Θ',
- 'ϕ' => 'Φ',
- 'ϖ' => 'Π',
- 'ϗ' => 'Ϗ',
- 'ϙ' => 'Ϙ',
- 'ϛ' => 'Ϛ',
- 'ϝ' => 'Ϝ',
- 'ϟ' => 'Ϟ',
- 'ϡ' => 'Ϡ',
- 'ϣ' => 'Ϣ',
- 'ϥ' => 'Ϥ',
- 'ϧ' => 'Ϧ',
- 'ϩ' => 'Ϩ',
- 'ϫ' => 'Ϫ',
- 'ϭ' => 'Ϭ',
- 'ϯ' => 'Ϯ',
- 'ϰ' => 'Κ',
- 'ϱ' => 'Ρ',
- 'ϲ' => 'Ϲ',
- 'ϵ' => 'Ε',
- 'ϸ' => 'Ϸ',
- 'ϻ' => 'Ϻ',
- 'а' => 'А',
- 'б' => 'Б',
- 'в' => 'В',
- 'г' => 'Г',
- 'д' => 'Д',
- 'е' => 'Е',
- 'ж' => 'Ж',
- 'з' => 'З',
- 'и' => 'И',
- 'й' => 'Й',
- 'к' => 'К',
- 'л' => 'Л',
- 'м' => 'М',
- 'н' => 'Н',
- 'о' => 'О',
- 'п' => 'П',
- 'р' => 'Р',
- 'с' => 'С',
- 'т' => 'Т',
- 'у' => 'У',
- 'ф' => 'Ф',
- 'х' => 'Х',
- 'ц' => 'Ц',
- 'ч' => 'Ч',
- 'ш' => 'Ш',
- 'щ' => 'Щ',
- 'ъ' => 'Ъ',
- 'ы' => 'Ы',
- 'ь' => 'Ь',
- 'э' => 'Э',
- 'ю' => 'Ю',
- 'я' => 'Я',
- 'ѐ' => 'Ѐ',
- 'ё' => 'Ё',
- 'ђ' => 'Ђ',
- 'ѓ' => 'Ѓ',
- 'є' => 'Є',
- 'ѕ' => 'Ѕ',
- 'і' => 'І',
- 'ї' => 'Ї',
- 'ј' => 'Ј',
- 'љ' => 'Љ',
- 'њ' => 'Њ',
- 'ћ' => 'Ћ',
- 'ќ' => 'Ќ',
- 'ѝ' => 'Ѝ',
- 'ў' => 'Ў',
- 'џ' => 'Џ',
- 'ѡ' => 'Ѡ',
- 'ѣ' => 'Ѣ',
- 'ѥ' => 'Ѥ',
- 'ѧ' => 'Ѧ',
- 'ѩ' => 'Ѩ',
- 'ѫ' => 'Ѫ',
- 'ѭ' => 'Ѭ',
- 'ѯ' => 'Ѯ',
- 'ѱ' => 'Ѱ',
- 'ѳ' => 'Ѳ',
- 'ѵ' => 'Ѵ',
- 'ѷ' => 'Ѷ',
- 'ѹ' => 'Ѹ',
- 'ѻ' => 'Ѻ',
- 'ѽ' => 'Ѽ',
- 'ѿ' => 'Ѿ',
- 'ҁ' => 'Ҁ',
- 'ҋ' => 'Ҋ',
- 'ҍ' => 'Ҍ',
- 'ҏ' => 'Ҏ',
- 'ґ' => 'Ґ',
- 'ғ' => 'Ғ',
- 'ҕ' => 'Ҕ',
- 'җ' => 'Җ',
- 'ҙ' => 'Ҙ',
- 'қ' => 'Қ',
- 'ҝ' => 'Ҝ',
- 'ҟ' => 'Ҟ',
- 'ҡ' => 'Ҡ',
- 'ң' => 'Ң',
- 'ҥ' => 'Ҥ',
- 'ҧ' => 'Ҧ',
- 'ҩ' => 'Ҩ',
- 'ҫ' => 'Ҫ',
- 'ҭ' => 'Ҭ',
- 'ү' => 'Ү',
- 'ұ' => 'Ұ',
- 'ҳ' => 'Ҳ',
- 'ҵ' => 'Ҵ',
- 'ҷ' => 'Ҷ',
- 'ҹ' => 'Ҹ',
- 'һ' => 'Һ',
- 'ҽ' => 'Ҽ',
- 'ҿ' => 'Ҿ',
- 'ӂ' => 'Ӂ',
- 'ӄ' => 'Ӄ',
- 'ӆ' => 'Ӆ',
- 'ӈ' => 'Ӈ',
- 'ӊ' => 'Ӊ',
- 'ӌ' => 'Ӌ',
- 'ӎ' => 'Ӎ',
- 'ӏ' => 'Ӏ',
- 'ӑ' => 'Ӑ',
- 'ӓ' => 'Ӓ',
- 'ӕ' => 'Ӕ',
- 'ӗ' => 'Ӗ',
- 'ә' => 'Ә',
- 'ӛ' => 'Ӛ',
- 'ӝ' => 'Ӝ',
- 'ӟ' => 'Ӟ',
- 'ӡ' => 'Ӡ',
- 'ӣ' => 'Ӣ',
- 'ӥ' => 'Ӥ',
- 'ӧ' => 'Ӧ',
- 'ө' => 'Ө',
- 'ӫ' => 'Ӫ',
- 'ӭ' => 'Ӭ',
- 'ӯ' => 'Ӯ',
- 'ӱ' => 'Ӱ',
- 'ӳ' => 'Ӳ',
- 'ӵ' => 'Ӵ',
- 'ӷ' => 'Ӷ',
- 'ӹ' => 'Ӹ',
- 'ӻ' => 'Ӻ',
- 'ӽ' => 'Ӽ',
- 'ӿ' => 'Ӿ',
- 'ԁ' => 'Ԁ',
- 'ԃ' => 'Ԃ',
- 'ԅ' => 'Ԅ',
- 'ԇ' => 'Ԇ',
- 'ԉ' => 'Ԉ',
- 'ԋ' => 'Ԋ',
- 'ԍ' => 'Ԍ',
- 'ԏ' => 'Ԏ',
- 'ԑ' => 'Ԑ',
- 'ԓ' => 'Ԓ',
- 'ԕ' => 'Ԕ',
- 'ԗ' => 'Ԗ',
- 'ԙ' => 'Ԙ',
- 'ԛ' => 'Ԛ',
- 'ԝ' => 'Ԝ',
- 'ԟ' => 'Ԟ',
- 'ԡ' => 'Ԡ',
- 'ԣ' => 'Ԣ',
- 'ԥ' => 'Ԥ',
- 'ԧ' => 'Ԧ',
- 'ա' => 'Ա',
- 'բ' => 'Բ',
- 'գ' => 'Գ',
- 'դ' => 'Դ',
- 'ե' => 'Ե',
- 'զ' => 'Զ',
- 'է' => 'Է',
- 'ը' => 'Ը',
- 'թ' => 'Թ',
- 'ժ' => 'Ժ',
- 'ի' => 'Ի',
- 'լ' => 'Լ',
- 'խ' => 'Խ',
- 'ծ' => 'Ծ',
- 'կ' => 'Կ',
- 'հ' => 'Հ',
- 'ձ' => 'Ձ',
- 'ղ' => 'Ղ',
- 'ճ' => 'Ճ',
- 'մ' => 'Մ',
- 'յ' => 'Յ',
- 'ն' => 'Ն',
- 'շ' => 'Շ',
- 'ո' => 'Ո',
- 'չ' => 'Չ',
- 'պ' => 'Պ',
- 'ջ' => 'Ջ',
- 'ռ' => 'Ռ',
- 'ս' => 'Ս',
- 'վ' => 'Վ',
- 'տ' => 'Տ',
- 'ր' => 'Ր',
- 'ց' => 'Ց',
- 'ւ' => 'Ւ',
- 'փ' => 'Փ',
- 'ք' => 'Ք',
- 'օ' => 'Օ',
- 'ֆ' => 'Ֆ',
- 'ᵹ' => 'Ᵹ',
- 'ᵽ' => 'Ᵽ',
- 'ḁ' => 'Ḁ',
- 'ḃ' => 'Ḃ',
- 'ḅ' => 'Ḅ',
- 'ḇ' => 'Ḇ',
- 'ḉ' => 'Ḉ',
- 'ḋ' => 'Ḋ',
- 'ḍ' => 'Ḍ',
- 'ḏ' => 'Ḏ',
- 'ḑ' => 'Ḑ',
- 'ḓ' => 'Ḓ',
- 'ḕ' => 'Ḕ',
- 'ḗ' => 'Ḗ',
- 'ḙ' => 'Ḙ',
- 'ḛ' => 'Ḛ',
- 'ḝ' => 'Ḝ',
- 'ḟ' => 'Ḟ',
- 'ḡ' => 'Ḡ',
- 'ḣ' => 'Ḣ',
- 'ḥ' => 'Ḥ',
- 'ḧ' => 'Ḧ',
- 'ḩ' => 'Ḩ',
- 'ḫ' => 'Ḫ',
- 'ḭ' => 'Ḭ',
- 'ḯ' => 'Ḯ',
- 'ḱ' => 'Ḱ',
- 'ḳ' => 'Ḳ',
- 'ḵ' => 'Ḵ',
- 'ḷ' => 'Ḷ',
- 'ḹ' => 'Ḹ',
- 'ḻ' => 'Ḻ',
- 'ḽ' => 'Ḽ',
- 'ḿ' => 'Ḿ',
- 'ṁ' => 'Ṁ',
- 'ṃ' => 'Ṃ',
- 'ṅ' => 'Ṅ',
- 'ṇ' => 'Ṇ',
- 'ṉ' => 'Ṉ',
- 'ṋ' => 'Ṋ',
- 'ṍ' => 'Ṍ',
- 'ṏ' => 'Ṏ',
- 'ṑ' => 'Ṑ',
- 'ṓ' => 'Ṓ',
- 'ṕ' => 'Ṕ',
- 'ṗ' => 'Ṗ',
- 'ṙ' => 'Ṙ',
- 'ṛ' => 'Ṛ',
- 'ṝ' => 'Ṝ',
- 'ṟ' => 'Ṟ',
- 'ṡ' => 'Ṡ',
- 'ṣ' => 'Ṣ',
- 'ṥ' => 'Ṥ',
- 'ṧ' => 'Ṧ',
- 'ṩ' => 'Ṩ',
- 'ṫ' => 'Ṫ',
- 'ṭ' => 'Ṭ',
- 'ṯ' => 'Ṯ',
- 'ṱ' => 'Ṱ',
- 'ṳ' => 'Ṳ',
- 'ṵ' => 'Ṵ',
- 'ṷ' => 'Ṷ',
- 'ṹ' => 'Ṹ',
- 'ṻ' => 'Ṻ',
- 'ṽ' => 'Ṽ',
- 'ṿ' => 'Ṿ',
- 'ẁ' => 'Ẁ',
- 'ẃ' => 'Ẃ',
- 'ẅ' => 'Ẅ',
- 'ẇ' => 'Ẇ',
- 'ẉ' => 'Ẉ',
- 'ẋ' => 'Ẋ',
- 'ẍ' => 'Ẍ',
- 'ẏ' => 'Ẏ',
- 'ẑ' => 'Ẑ',
- 'ẓ' => 'Ẓ',
- 'ẕ' => 'Ẕ',
- 'ẛ' => 'Ṡ',
- 'ạ' => 'Ạ',
- 'ả' => 'Ả',
- 'ấ' => 'Ấ',
- 'ầ' => 'Ầ',
- 'ẩ' => 'Ẩ',
- 'ẫ' => 'Ẫ',
- 'ậ' => 'Ậ',
- 'ắ' => 'Ắ',
- 'ằ' => 'Ằ',
- 'ẳ' => 'Ẳ',
- 'ẵ' => 'Ẵ',
- 'ặ' => 'Ặ',
- 'ẹ' => 'Ẹ',
- 'ẻ' => 'Ẻ',
- 'ẽ' => 'Ẽ',
- 'ế' => 'Ế',
- 'ề' => 'Ề',
- 'ể' => 'Ể',
- 'ễ' => 'Ễ',
- 'ệ' => 'Ệ',
- 'ỉ' => 'Ỉ',
- 'ị' => 'Ị',
- 'ọ' => 'Ọ',
- 'ỏ' => 'Ỏ',
- 'ố' => 'Ố',
- 'ồ' => 'Ồ',
- 'ổ' => 'Ổ',
- 'ỗ' => 'Ỗ',
- 'ộ' => 'Ộ',
- 'ớ' => 'Ớ',
- 'ờ' => 'Ờ',
- 'ở' => 'Ở',
- 'ỡ' => 'Ỡ',
- 'ợ' => 'Ợ',
- 'ụ' => 'Ụ',
- 'ủ' => 'Ủ',
- 'ứ' => 'Ứ',
- 'ừ' => 'Ừ',
- 'ử' => 'Ử',
- 'ữ' => 'Ữ',
- 'ự' => 'Ự',
- 'ỳ' => 'Ỳ',
- 'ỵ' => 'Ỵ',
- 'ỷ' => 'Ỷ',
- 'ỹ' => 'Ỹ',
- 'ỻ' => 'Ỻ',
- 'ỽ' => 'Ỽ',
- 'ỿ' => 'Ỿ',
- 'ἀ' => 'Ἀ',
- 'ἁ' => 'Ἁ',
- 'ἂ' => 'Ἂ',
- 'ἃ' => 'Ἃ',
- 'ἄ' => 'Ἄ',
- 'ἅ' => 'Ἅ',
- 'ἆ' => 'Ἆ',
- 'ἇ' => 'Ἇ',
- 'ἐ' => 'Ἐ',
- 'ἑ' => 'Ἑ',
- 'ἒ' => 'Ἒ',
- 'ἓ' => 'Ἓ',
- 'ἔ' => 'Ἔ',
- 'ἕ' => 'Ἕ',
- 'ἠ' => 'Ἠ',
- 'ἡ' => 'Ἡ',
- 'ἢ' => 'Ἢ',
- 'ἣ' => 'Ἣ',
- 'ἤ' => 'Ἤ',
- 'ἥ' => 'Ἥ',
- 'ἦ' => 'Ἦ',
- 'ἧ' => 'Ἧ',
- 'ἰ' => 'Ἰ',
- 'ἱ' => 'Ἱ',
- 'ἲ' => 'Ἲ',
- 'ἳ' => 'Ἳ',
- 'ἴ' => 'Ἴ',
- 'ἵ' => 'Ἵ',
- 'ἶ' => 'Ἶ',
- 'ἷ' => 'Ἷ',
- 'ὀ' => 'Ὀ',
- 'ὁ' => 'Ὁ',
- 'ὂ' => 'Ὂ',
- 'ὃ' => 'Ὃ',
- 'ὄ' => 'Ὄ',
- 'ὅ' => 'Ὅ',
- 'ὑ' => 'Ὑ',
- 'ὓ' => 'Ὓ',
- 'ὕ' => 'Ὕ',
- 'ὗ' => 'Ὗ',
- 'ὠ' => 'Ὠ',
- 'ὡ' => 'Ὡ',
- 'ὢ' => 'Ὢ',
- 'ὣ' => 'Ὣ',
- 'ὤ' => 'Ὤ',
- 'ὥ' => 'Ὥ',
- 'ὦ' => 'Ὦ',
- 'ὧ' => 'Ὧ',
- 'ὰ' => 'Ὰ',
- 'ά' => 'Ά',
- 'ὲ' => 'Ὲ',
- 'έ' => 'Έ',
- 'ὴ' => 'Ὴ',
- 'ή' => 'Ή',
- 'ὶ' => 'Ὶ',
- 'ί' => 'Ί',
- 'ὸ' => 'Ὸ',
- 'ό' => 'Ό',
- 'ὺ' => 'Ὺ',
- 'ύ' => 'Ύ',
- 'ὼ' => 'Ὼ',
- 'ώ' => 'Ώ',
- 'ᾀ' => 'ᾈ',
- 'ᾁ' => 'ᾉ',
- 'ᾂ' => 'ᾊ',
- 'ᾃ' => 'ᾋ',
- 'ᾄ' => 'ᾌ',
- 'ᾅ' => 'ᾍ',
- 'ᾆ' => 'ᾎ',
- 'ᾇ' => 'ᾏ',
- 'ᾐ' => 'ᾘ',
- 'ᾑ' => 'ᾙ',
- 'ᾒ' => 'ᾚ',
- 'ᾓ' => 'ᾛ',
- 'ᾔ' => 'ᾜ',
- 'ᾕ' => 'ᾝ',
- 'ᾖ' => 'ᾞ',
- 'ᾗ' => 'ᾟ',
- 'ᾠ' => 'ᾨ',
- 'ᾡ' => 'ᾩ',
- 'ᾢ' => 'ᾪ',
- 'ᾣ' => 'ᾫ',
- 'ᾤ' => 'ᾬ',
- 'ᾥ' => 'ᾭ',
- 'ᾦ' => 'ᾮ',
- 'ᾧ' => 'ᾯ',
- 'ᾰ' => 'Ᾰ',
- 'ᾱ' => 'Ᾱ',
- 'ᾳ' => 'ᾼ',
- 'ι' => 'Ι',
- 'ῃ' => 'ῌ',
- 'ῐ' => 'Ῐ',
- 'ῑ' => 'Ῑ',
- 'ῠ' => 'Ῠ',
- 'ῡ' => 'Ῡ',
- 'ῥ' => 'Ῥ',
- 'ῳ' => 'ῼ',
- 'ⅎ' => 'Ⅎ',
- 'ⅰ' => 'Ⅰ',
- 'ⅱ' => 'Ⅱ',
- 'ⅲ' => 'Ⅲ',
- 'ⅳ' => 'Ⅳ',
- 'ⅴ' => 'Ⅴ',
- 'ⅵ' => 'Ⅵ',
- 'ⅶ' => 'Ⅶ',
- 'ⅷ' => 'Ⅷ',
- 'ⅸ' => 'Ⅸ',
- 'ⅹ' => 'Ⅹ',
- 'ⅺ' => 'Ⅺ',
- 'ⅻ' => 'Ⅻ',
- 'ⅼ' => 'Ⅼ',
- 'ⅽ' => 'Ⅽ',
- 'ⅾ' => 'Ⅾ',
- 'ⅿ' => 'Ⅿ',
- 'ↄ' => 'Ↄ',
- 'ⓐ' => 'Ⓐ',
- 'ⓑ' => 'Ⓑ',
- 'ⓒ' => 'Ⓒ',
- 'ⓓ' => 'Ⓓ',
- 'ⓔ' => 'Ⓔ',
- 'ⓕ' => 'Ⓕ',
- 'ⓖ' => 'Ⓖ',
- 'ⓗ' => 'Ⓗ',
- 'ⓘ' => 'Ⓘ',
- 'ⓙ' => 'Ⓙ',
- 'ⓚ' => 'Ⓚ',
- 'ⓛ' => 'Ⓛ',
- 'ⓜ' => 'Ⓜ',
- 'ⓝ' => 'Ⓝ',
- 'ⓞ' => 'Ⓞ',
- 'ⓟ' => 'Ⓟ',
- 'ⓠ' => 'Ⓠ',
- 'ⓡ' => 'Ⓡ',
- 'ⓢ' => 'Ⓢ',
- 'ⓣ' => 'Ⓣ',
- 'ⓤ' => 'Ⓤ',
- 'ⓥ' => 'Ⓥ',
- 'ⓦ' => 'Ⓦ',
- 'ⓧ' => 'Ⓧ',
- 'ⓨ' => 'Ⓨ',
- 'ⓩ' => 'Ⓩ',
- 'ⰰ' => 'Ⰰ',
- 'ⰱ' => 'Ⰱ',
- 'ⰲ' => 'Ⰲ',
- 'ⰳ' => 'Ⰳ',
- 'ⰴ' => 'Ⰴ',
- 'ⰵ' => 'Ⰵ',
- 'ⰶ' => 'Ⰶ',
- 'ⰷ' => 'Ⰷ',
- 'ⰸ' => 'Ⰸ',
- 'ⰹ' => 'Ⰹ',
- 'ⰺ' => 'Ⰺ',
- 'ⰻ' => 'Ⰻ',
- 'ⰼ' => 'Ⰼ',
- 'ⰽ' => 'Ⰽ',
- 'ⰾ' => 'Ⰾ',
- 'ⰿ' => 'Ⰿ',
- 'ⱀ' => 'Ⱀ',
- 'ⱁ' => 'Ⱁ',
- 'ⱂ' => 'Ⱂ',
- 'ⱃ' => 'Ⱃ',
- 'ⱄ' => 'Ⱄ',
- 'ⱅ' => 'Ⱅ',
- 'ⱆ' => 'Ⱆ',
- 'ⱇ' => 'Ⱇ',
- 'ⱈ' => 'Ⱈ',
- 'ⱉ' => 'Ⱉ',
- 'ⱊ' => 'Ⱊ',
- 'ⱋ' => 'Ⱋ',
- 'ⱌ' => 'Ⱌ',
- 'ⱍ' => 'Ⱍ',
- 'ⱎ' => 'Ⱎ',
- 'ⱏ' => 'Ⱏ',
- 'ⱐ' => 'Ⱐ',
- 'ⱑ' => 'Ⱑ',
- 'ⱒ' => 'Ⱒ',
- 'ⱓ' => 'Ⱓ',
- 'ⱔ' => 'Ⱔ',
- 'ⱕ' => 'Ⱕ',
- 'ⱖ' => 'Ⱖ',
- 'ⱗ' => 'Ⱗ',
- 'ⱘ' => 'Ⱘ',
- 'ⱙ' => 'Ⱙ',
- 'ⱚ' => 'Ⱚ',
- 'ⱛ' => 'Ⱛ',
- 'ⱜ' => 'Ⱜ',
- 'ⱝ' => 'Ⱝ',
- 'ⱞ' => 'Ⱞ',
- 'ⱡ' => 'Ⱡ',
- 'ⱥ' => 'Ⱥ',
- 'ⱦ' => 'Ⱦ',
- 'ⱨ' => 'Ⱨ',
- 'ⱪ' => 'Ⱪ',
- 'ⱬ' => 'Ⱬ',
- 'ⱳ' => 'Ⱳ',
- 'ⱶ' => 'Ⱶ',
- 'ⲁ' => 'Ⲁ',
- 'ⲃ' => 'Ⲃ',
- 'ⲅ' => 'Ⲅ',
- 'ⲇ' => 'Ⲇ',
- 'ⲉ' => 'Ⲉ',
- 'ⲋ' => 'Ⲋ',
- 'ⲍ' => 'Ⲍ',
- 'ⲏ' => 'Ⲏ',
- 'ⲑ' => 'Ⲑ',
- 'ⲓ' => 'Ⲓ',
- 'ⲕ' => 'Ⲕ',
- 'ⲗ' => 'Ⲗ',
- 'ⲙ' => 'Ⲙ',
- 'ⲛ' => 'Ⲛ',
- 'ⲝ' => 'Ⲝ',
- 'ⲟ' => 'Ⲟ',
- 'ⲡ' => 'Ⲡ',
- 'ⲣ' => 'Ⲣ',
- 'ⲥ' => 'Ⲥ',
- 'ⲧ' => 'Ⲧ',
- 'ⲩ' => 'Ⲩ',
- 'ⲫ' => 'Ⲫ',
- 'ⲭ' => 'Ⲭ',
- 'ⲯ' => 'Ⲯ',
- 'ⲱ' => 'Ⲱ',
- 'ⲳ' => 'Ⲳ',
- 'ⲵ' => 'Ⲵ',
- 'ⲷ' => 'Ⲷ',
- 'ⲹ' => 'Ⲹ',
- 'ⲻ' => 'Ⲻ',
- 'ⲽ' => 'Ⲽ',
- 'ⲿ' => 'Ⲿ',
- 'ⳁ' => 'Ⳁ',
- 'ⳃ' => 'Ⳃ',
- 'ⳅ' => 'Ⳅ',
- 'ⳇ' => 'Ⳇ',
- 'ⳉ' => 'Ⳉ',
- 'ⳋ' => 'Ⳋ',
- 'ⳍ' => 'Ⳍ',
- 'ⳏ' => 'Ⳏ',
- 'ⳑ' => 'Ⳑ',
- 'ⳓ' => 'Ⳓ',
- 'ⳕ' => 'Ⳕ',
- 'ⳗ' => 'Ⳗ',
- 'ⳙ' => 'Ⳙ',
- 'ⳛ' => 'Ⳛ',
- 'ⳝ' => 'Ⳝ',
- 'ⳟ' => 'Ⳟ',
- 'ⳡ' => 'Ⳡ',
- 'ⳣ' => 'Ⳣ',
- 'ⳬ' => 'Ⳬ',
- 'ⳮ' => 'Ⳮ',
- 'ⴀ' => 'Ⴀ',
- 'ⴁ' => 'Ⴁ',
- 'ⴂ' => 'Ⴂ',
- 'ⴃ' => 'Ⴃ',
- 'ⴄ' => 'Ⴄ',
- 'ⴅ' => 'Ⴅ',
- 'ⴆ' => 'Ⴆ',
- 'ⴇ' => 'Ⴇ',
- 'ⴈ' => 'Ⴈ',
- 'ⴉ' => 'Ⴉ',
- 'ⴊ' => 'Ⴊ',
- 'ⴋ' => 'Ⴋ',
- 'ⴌ' => 'Ⴌ',
- 'ⴍ' => 'Ⴍ',
- 'ⴎ' => 'Ⴎ',
- 'ⴏ' => 'Ⴏ',
- 'ⴐ' => 'Ⴐ',
- 'ⴑ' => 'Ⴑ',
- 'ⴒ' => 'Ⴒ',
- 'ⴓ' => 'Ⴓ',
- 'ⴔ' => 'Ⴔ',
- 'ⴕ' => 'Ⴕ',
- 'ⴖ' => 'Ⴖ',
- 'ⴗ' => 'Ⴗ',
- 'ⴘ' => 'Ⴘ',
- 'ⴙ' => 'Ⴙ',
- 'ⴚ' => 'Ⴚ',
- 'ⴛ' => 'Ⴛ',
- 'ⴜ' => 'Ⴜ',
- 'ⴝ' => 'Ⴝ',
- 'ⴞ' => 'Ⴞ',
- 'ⴟ' => 'Ⴟ',
- 'ⴠ' => 'Ⴠ',
- 'ⴡ' => 'Ⴡ',
- 'ⴢ' => 'Ⴢ',
- 'ⴣ' => 'Ⴣ',
- 'ⴤ' => 'Ⴤ',
- 'ⴥ' => 'Ⴥ',
- 'ꙁ' => 'Ꙁ',
- 'ꙃ' => 'Ꙃ',
- 'ꙅ' => 'Ꙅ',
- 'ꙇ' => 'Ꙇ',
- 'ꙉ' => 'Ꙉ',
- 'ꙋ' => 'Ꙋ',
- 'ꙍ' => 'Ꙍ',
- 'ꙏ' => 'Ꙏ',
- 'ꙑ' => 'Ꙑ',
- 'ꙓ' => 'Ꙓ',
- 'ꙕ' => 'Ꙕ',
- 'ꙗ' => 'Ꙗ',
- 'ꙙ' => 'Ꙙ',
- 'ꙛ' => 'Ꙛ',
- 'ꙝ' => 'Ꙝ',
- 'ꙟ' => 'Ꙟ',
- 'ꙡ' => 'Ꙡ',
- 'ꙣ' => 'Ꙣ',
- 'ꙥ' => 'Ꙥ',
- 'ꙧ' => 'Ꙧ',
- 'ꙩ' => 'Ꙩ',
- 'ꙫ' => 'Ꙫ',
- 'ꙭ' => 'Ꙭ',
- 'ꚁ' => 'Ꚁ',
- 'ꚃ' => 'Ꚃ',
- 'ꚅ' => 'Ꚅ',
- 'ꚇ' => 'Ꚇ',
- 'ꚉ' => 'Ꚉ',
- 'ꚋ' => 'Ꚋ',
- 'ꚍ' => 'Ꚍ',
- 'ꚏ' => 'Ꚏ',
- 'ꚑ' => 'Ꚑ',
- 'ꚓ' => 'Ꚓ',
- 'ꚕ' => 'Ꚕ',
- 'ꚗ' => 'Ꚗ',
- 'ꜣ' => 'Ꜣ',
- 'ꜥ' => 'Ꜥ',
- 'ꜧ' => 'Ꜧ',
- 'ꜩ' => 'Ꜩ',
- 'ꜫ' => 'Ꜫ',
- 'ꜭ' => 'Ꜭ',
- 'ꜯ' => 'Ꜯ',
- 'ꜳ' => 'Ꜳ',
- 'ꜵ' => 'Ꜵ',
- 'ꜷ' => 'Ꜷ',
- 'ꜹ' => 'Ꜹ',
- 'ꜻ' => 'Ꜻ',
- 'ꜽ' => 'Ꜽ',
- 'ꜿ' => 'Ꜿ',
- 'ꝁ' => 'Ꝁ',
- 'ꝃ' => 'Ꝃ',
- 'ꝅ' => 'Ꝅ',
- 'ꝇ' => 'Ꝇ',
- 'ꝉ' => 'Ꝉ',
- 'ꝋ' => 'Ꝋ',
- 'ꝍ' => 'Ꝍ',
- 'ꝏ' => 'Ꝏ',
- 'ꝑ' => 'Ꝑ',
- 'ꝓ' => 'Ꝓ',
- 'ꝕ' => 'Ꝕ',
- 'ꝗ' => 'Ꝗ',
- 'ꝙ' => 'Ꝙ',
- 'ꝛ' => 'Ꝛ',
- 'ꝝ' => 'Ꝝ',
- 'ꝟ' => 'Ꝟ',
- 'ꝡ' => 'Ꝡ',
- 'ꝣ' => 'Ꝣ',
- 'ꝥ' => 'Ꝥ',
- 'ꝧ' => 'Ꝧ',
- 'ꝩ' => 'Ꝩ',
- 'ꝫ' => 'Ꝫ',
- 'ꝭ' => 'Ꝭ',
- 'ꝯ' => 'Ꝯ',
- 'ꝺ' => 'Ꝺ',
- 'ꝼ' => 'Ꝼ',
- 'ꝿ' => 'Ꝿ',
- 'ꞁ' => 'Ꞁ',
- 'ꞃ' => 'Ꞃ',
- 'ꞅ' => 'Ꞅ',
- 'ꞇ' => 'Ꞇ',
- 'ꞌ' => 'Ꞌ',
- 'ꞑ' => 'Ꞑ',
- 'ꞡ' => 'Ꞡ',
- 'ꞣ' => 'Ꞣ',
- 'ꞥ' => 'Ꞥ',
- 'ꞧ' => 'Ꞧ',
- 'ꞩ' => 'Ꞩ',
- 'a' => 'A',
- 'b' => 'B',
- 'c' => 'C',
- 'd' => 'D',
- 'e' => 'E',
- 'f' => 'F',
- 'g' => 'G',
- 'h' => 'H',
- 'i' => 'I',
- 'j' => 'J',
- 'k' => 'K',
- 'l' => 'L',
- 'm' => 'M',
- 'n' => 'N',
- 'o' => 'O',
- 'p' => 'P',
- 'q' => 'Q',
- 'r' => 'R',
- 's' => 'S',
- 't' => 'T',
- 'u' => 'U',
- 'v' => 'V',
- 'w' => 'W',
- 'x' => 'X',
- 'y' => 'Y',
- 'z' => 'Z',
- '𐐨' => '𐐀',
- '𐐩' => '𐐁',
- '𐐪' => '𐐂',
- '𐐫' => '𐐃',
- '𐐬' => '𐐄',
- '𐐭' => '𐐅',
- '𐐮' => '𐐆',
- '𐐯' => '𐐇',
- '𐐰' => '𐐈',
- '𐐱' => '𐐉',
- '𐐲' => '𐐊',
- '𐐳' => '𐐋',
- '𐐴' => '𐐌',
- '𐐵' => '𐐍',
- '𐐶' => '𐐎',
- '𐐷' => '𐐏',
- '𐐸' => '𐐐',
- '𐐹' => '𐐑',
- '𐐺' => '𐐒',
- '𐐻' => '𐐓',
- '𐐼' => '𐐔',
- '𐐽' => '𐐕',
- '𐐾' => '𐐖',
- '𐐿' => '𐐗',
- '𐑀' => '𐐘',
- '𐑁' => '𐐙',
- '𐑂' => '𐐚',
- '𐑃' => '𐐛',
- '𐑄' => '𐐜',
- '𐑅' => '𐐝',
- '𐑆' => '𐐞',
- '𐑇' => '𐐟',
- '𐑈' => '𐐠',
- '𐑉' => '𐐡',
- '𐑊' => '𐐢',
- '𐑋' => '𐐣',
- '𐑌' => '𐐤',
- '𐑍' => '𐐥',
- '𐑎' => '𐐦',
- '𐑏' => '𐐧'
-);
-
-/**
- * Translation array to get lower case character
- */
-$wikiLowerChars = array(
- 'A' => 'a',
- 'B' => 'b',
- 'C' => 'c',
- 'D' => 'd',
- 'E' => 'e',
- 'F' => 'f',
- 'G' => 'g',
- 'H' => 'h',
- 'I' => 'i',
- 'J' => 'j',
- 'K' => 'k',
- 'L' => 'l',
- 'M' => 'm',
- 'N' => 'n',
- 'O' => 'o',
- 'P' => 'p',
- 'Q' => 'q',
- 'R' => 'r',
- 'S' => 's',
- 'T' => 't',
- 'U' => 'u',
- 'V' => 'v',
- 'W' => 'w',
- 'X' => 'x',
- 'Y' => 'y',
- 'Z' => 'z',
- 'À' => 'à',
- 'Á' => 'á',
- 'Â' => 'â',
- 'Ã' => 'ã',
- 'Ä' => 'ä',
- 'Å' => 'å',
- 'Æ' => 'æ',
- 'Ç' => 'ç',
- 'È' => 'è',
- 'É' => 'é',
- 'Ê' => 'ê',
- 'Ë' => 'ë',
- 'Ì' => 'ì',
- 'Í' => 'í',
- 'Î' => 'î',
- 'Ï' => 'ï',
- 'Ð' => 'ð',
- 'Ñ' => 'ñ',
- 'Ò' => 'ò',
- 'Ó' => 'ó',
- 'Ô' => 'ô',
- 'Õ' => 'õ',
- 'Ö' => 'ö',
- 'Ø' => 'ø',
- 'Ù' => 'ù',
- 'Ú' => 'ú',
- 'Û' => 'û',
- 'Ü' => 'ü',
- 'Ý' => 'ý',
- 'Þ' => 'þ',
- 'Ā' => 'ā',
- 'Ă' => 'ă',
- 'Ą' => 'ą',
- 'Ć' => 'ć',
- 'Ĉ' => 'ĉ',
- 'Ċ' => 'ċ',
- 'Č' => 'č',
- 'Ď' => 'ď',
- 'Đ' => 'đ',
- 'Ē' => 'ē',
- 'Ĕ' => 'ĕ',
- 'Ė' => 'ė',
- 'Ę' => 'ę',
- 'Ě' => 'ě',
- 'Ĝ' => 'ĝ',
- 'Ğ' => 'ğ',
- 'Ġ' => 'ġ',
- 'Ģ' => 'ģ',
- 'Ĥ' => 'ĥ',
- 'Ħ' => 'ħ',
- 'Ĩ' => 'ĩ',
- 'Ī' => 'ī',
- 'Ĭ' => 'ĭ',
- 'Į' => 'į',
- 'İ' => 'i',
- 'IJ' => 'ij',
- 'Ĵ' => 'ĵ',
- 'Ķ' => 'ķ',
- 'Ĺ' => 'ĺ',
- 'Ļ' => 'ļ',
- 'Ľ' => 'ľ',
- 'Ŀ' => 'ŀ',
- 'Ł' => 'ł',
- 'Ń' => 'ń',
- 'Ņ' => 'ņ',
- 'Ň' => 'ň',
- 'Ŋ' => 'ŋ',
- 'Ō' => 'ō',
- 'Ŏ' => 'ŏ',
- 'Ő' => 'ő',
- 'Œ' => 'œ',
- 'Ŕ' => 'ŕ',
- 'Ŗ' => 'ŗ',
- 'Ř' => 'ř',
- 'Ś' => 'ś',
- 'Ŝ' => 'ŝ',
- 'Ş' => 'ş',
- 'Š' => 'š',
- 'Ţ' => 'ţ',
- 'Ť' => 'ť',
- 'Ŧ' => 'ŧ',
- 'Ũ' => 'ũ',
- 'Ū' => 'ū',
- 'Ŭ' => 'ŭ',
- 'Ů' => 'ů',
- 'Ű' => 'ű',
- 'Ų' => 'ų',
- 'Ŵ' => 'ŵ',
- 'Ŷ' => 'ŷ',
- 'Ÿ' => 'ÿ',
- 'Ź' => 'ź',
- 'Ż' => 'ż',
- 'Ž' => 'ž',
- 'Ɓ' => 'ɓ',
- 'Ƃ' => 'ƃ',
- 'Ƅ' => 'ƅ',
- 'Ɔ' => 'ɔ',
- 'Ƈ' => 'ƈ',
- 'Ɖ' => 'ɖ',
- 'Ɗ' => 'ɗ',
- 'Ƌ' => 'ƌ',
- 'Ǝ' => 'ǝ',
- 'Ə' => 'ə',
- 'Ɛ' => 'ɛ',
- 'Ƒ' => 'ƒ',
- 'Ɠ' => 'ɠ',
- 'Ɣ' => 'ɣ',
- 'Ɩ' => 'ɩ',
- 'Ɨ' => 'ɨ',
- 'Ƙ' => 'ƙ',
- 'Ɯ' => 'ɯ',
- 'Ɲ' => 'ɲ',
- 'Ɵ' => 'ɵ',
- 'Ơ' => 'ơ',
- 'Ƣ' => 'ƣ',
- 'Ƥ' => 'ƥ',
- 'Ʀ' => 'ʀ',
- 'Ƨ' => 'ƨ',
- 'Ʃ' => 'ʃ',
- 'Ƭ' => 'ƭ',
- 'Ʈ' => 'ʈ',
- 'Ư' => 'ư',
- 'Ʊ' => 'ʊ',
- 'Ʋ' => 'ʋ',
- 'Ƴ' => 'ƴ',
- 'Ƶ' => 'ƶ',
- 'Ʒ' => 'ʒ',
- 'Ƹ' => 'ƹ',
- 'Ƽ' => 'ƽ',
- 'DŽ' => 'dž',
- 'Dž' => 'dž',
- 'LJ' => 'lj',
- 'Lj' => 'lj',
- 'NJ' => 'nj',
- 'Nj' => 'nj',
- 'Ǎ' => 'ǎ',
- 'Ǐ' => 'ǐ',
- 'Ǒ' => 'ǒ',
- 'Ǔ' => 'ǔ',
- 'Ǖ' => 'ǖ',
- 'Ǘ' => 'ǘ',
- 'Ǚ' => 'ǚ',
- 'Ǜ' => 'ǜ',
- 'Ǟ' => 'ǟ',
- 'Ǡ' => 'ǡ',
- 'Ǣ' => 'ǣ',
- 'Ǥ' => 'ǥ',
- 'Ǧ' => 'ǧ',
- 'Ǩ' => 'ǩ',
- 'Ǫ' => 'ǫ',
- 'Ǭ' => 'ǭ',
- 'Ǯ' => 'ǯ',
- 'DZ' => 'dz',
- 'Dz' => 'dz',
- 'Ǵ' => 'ǵ',
- 'Ƕ' => 'ƕ',
- 'Ƿ' => 'ƿ',
- 'Ǹ' => 'ǹ',
- 'Ǻ' => 'ǻ',
- 'Ǽ' => 'ǽ',
- 'Ǿ' => 'ǿ',
- 'Ȁ' => 'ȁ',
- 'Ȃ' => 'ȃ',
- 'Ȅ' => 'ȅ',
- 'Ȇ' => 'ȇ',
- 'Ȉ' => 'ȉ',
- 'Ȋ' => 'ȋ',
- 'Ȍ' => 'ȍ',
- 'Ȏ' => 'ȏ',
- 'Ȑ' => 'ȑ',
- 'Ȓ' => 'ȓ',
- 'Ȕ' => 'ȕ',
- 'Ȗ' => 'ȗ',
- 'Ș' => 'ș',
- 'Ț' => 'ț',
- 'Ȝ' => 'ȝ',
- 'Ȟ' => 'ȟ',
- 'Ƞ' => 'ƞ',
- 'Ȣ' => 'ȣ',
- 'Ȥ' => 'ȥ',
- 'Ȧ' => 'ȧ',
- 'Ȩ' => 'ȩ',
- 'Ȫ' => 'ȫ',
- 'Ȭ' => 'ȭ',
- 'Ȯ' => 'ȯ',
- 'Ȱ' => 'ȱ',
- 'Ȳ' => 'ȳ',
- 'Ⱥ' => 'ⱥ',
- 'Ȼ' => 'ȼ',
- 'Ƚ' => 'ƚ',
- 'Ⱦ' => 'ⱦ',
- 'Ɂ' => 'ɂ',
- 'Ƀ' => 'ƀ',
- 'Ʉ' => 'ʉ',
- 'Ʌ' => 'ʌ',
- 'Ɇ' => 'ɇ',
- 'Ɉ' => 'ɉ',
- 'Ɋ' => 'ɋ',
- 'Ɍ' => 'ɍ',
- 'Ɏ' => 'ɏ',
- 'Ͱ' => 'ͱ',
- 'Ͳ' => 'ͳ',
- 'Ͷ' => 'ͷ',
- 'Ά' => 'ά',
- 'Έ' => 'έ',
- 'Ή' => 'ή',
- 'Ί' => 'ί',
- 'Ό' => 'ό',
- 'Ύ' => 'ύ',
- 'Ώ' => 'ώ',
- 'Α' => 'α',
- 'Β' => 'β',
- 'Γ' => 'γ',
- 'Δ' => 'δ',
- 'Ε' => 'ε',
- 'Ζ' => 'ζ',
- 'Η' => 'η',
- 'Θ' => 'θ',
- 'Ι' => 'ι',
- 'Κ' => 'κ',
- 'Λ' => 'λ',
- 'Μ' => 'μ',
- 'Ν' => 'ν',
- 'Ξ' => 'ξ',
- 'Ο' => 'ο',
- 'Π' => 'π',
- 'Ρ' => 'ρ',
- 'Σ' => 'σ',
- 'Τ' => 'τ',
- 'Υ' => 'υ',
- 'Φ' => 'φ',
- 'Χ' => 'χ',
- 'Ψ' => 'ψ',
- 'Ω' => 'ω',
- 'Ϊ' => 'ϊ',
- 'Ϋ' => 'ϋ',
- 'Ϗ' => 'ϗ',
- 'Ϙ' => 'ϙ',
- 'Ϛ' => 'ϛ',
- 'Ϝ' => 'ϝ',
- 'Ϟ' => 'ϟ',
- 'Ϡ' => 'ϡ',
- 'Ϣ' => 'ϣ',
- 'Ϥ' => 'ϥ',
- 'Ϧ' => 'ϧ',
- 'Ϩ' => 'ϩ',
- 'Ϫ' => 'ϫ',
- 'Ϭ' => 'ϭ',
- 'Ϯ' => 'ϯ',
- 'ϴ' => 'θ',
- 'Ϸ' => 'ϸ',
- 'Ϲ' => 'ϲ',
- 'Ϻ' => 'ϻ',
- 'Ͻ' => 'ͻ',
- 'Ͼ' => 'ͼ',
- 'Ͽ' => 'ͽ',
- 'Ѐ' => 'ѐ',
- 'Ё' => 'ё',
- 'Ђ' => 'ђ',
- 'Ѓ' => 'ѓ',
- 'Є' => 'є',
- 'Ѕ' => 'ѕ',
- 'І' => 'і',
- 'Ї' => 'ї',
- 'Ј' => 'ј',
- 'Љ' => 'љ',
- 'Њ' => 'њ',
- 'Ћ' => 'ћ',
- 'Ќ' => 'ќ',
- 'Ѝ' => 'ѝ',
- 'Ў' => 'ў',
- 'Џ' => 'џ',
- 'А' => 'а',
- 'Б' => 'б',
- 'В' => 'в',
- 'Г' => 'г',
- 'Д' => 'д',
- 'Е' => 'е',
- 'Ж' => 'ж',
- 'З' => 'з',
- 'И' => 'и',
- 'Й' => 'й',
- 'К' => 'к',
- 'Л' => 'л',
- 'М' => 'м',
- 'Н' => 'н',
- 'О' => 'о',
- 'П' => 'п',
- 'Р' => 'р',
- 'С' => 'с',
- 'Т' => 'т',
- 'У' => 'у',
- 'Ф' => 'ф',
- 'Х' => 'х',
- 'Ц' => 'ц',
- 'Ч' => 'ч',
- 'Ш' => 'ш',
- 'Щ' => 'щ',
- 'Ъ' => 'ъ',
- 'Ы' => 'ы',
- 'Ь' => 'ь',
- 'Э' => 'э',
- 'Ю' => 'ю',
- 'Я' => 'я',
- 'Ѡ' => 'ѡ',
- 'Ѣ' => 'ѣ',
- 'Ѥ' => 'ѥ',
- 'Ѧ' => 'ѧ',
- 'Ѩ' => 'ѩ',
- 'Ѫ' => 'ѫ',
- 'Ѭ' => 'ѭ',
- 'Ѯ' => 'ѯ',
- 'Ѱ' => 'ѱ',
- 'Ѳ' => 'ѳ',
- 'Ѵ' => 'ѵ',
- 'Ѷ' => 'ѷ',
- 'Ѹ' => 'ѹ',
- 'Ѻ' => 'ѻ',
- 'Ѽ' => 'ѽ',
- 'Ѿ' => 'ѿ',
- 'Ҁ' => 'ҁ',
- 'Ҋ' => 'ҋ',
- 'Ҍ' => 'ҍ',
- 'Ҏ' => 'ҏ',
- 'Ґ' => 'ґ',
- 'Ғ' => 'ғ',
- 'Ҕ' => 'ҕ',
- 'Җ' => 'җ',
- 'Ҙ' => 'ҙ',
- 'Қ' => 'қ',
- 'Ҝ' => 'ҝ',
- 'Ҟ' => 'ҟ',
- 'Ҡ' => 'ҡ',
- 'Ң' => 'ң',
- 'Ҥ' => 'ҥ',
- 'Ҧ' => 'ҧ',
- 'Ҩ' => 'ҩ',
- 'Ҫ' => 'ҫ',
- 'Ҭ' => 'ҭ',
- 'Ү' => 'ү',
- 'Ұ' => 'ұ',
- 'Ҳ' => 'ҳ',
- 'Ҵ' => 'ҵ',
- 'Ҷ' => 'ҷ',
- 'Ҹ' => 'ҹ',
- 'Һ' => 'һ',
- 'Ҽ' => 'ҽ',
- 'Ҿ' => 'ҿ',
- 'Ӏ' => 'ӏ',
- 'Ӂ' => 'ӂ',
- 'Ӄ' => 'ӄ',
- 'Ӆ' => 'ӆ',
- 'Ӈ' => 'ӈ',
- 'Ӊ' => 'ӊ',
- 'Ӌ' => 'ӌ',
- 'Ӎ' => 'ӎ',
- 'Ӑ' => 'ӑ',
- 'Ӓ' => 'ӓ',
- 'Ӕ' => 'ӕ',
- 'Ӗ' => 'ӗ',
- 'Ә' => 'ә',
- 'Ӛ' => 'ӛ',
- 'Ӝ' => 'ӝ',
- 'Ӟ' => 'ӟ',
- 'Ӡ' => 'ӡ',
- 'Ӣ' => 'ӣ',
- 'Ӥ' => 'ӥ',
- 'Ӧ' => 'ӧ',
- 'Ө' => 'ө',
- 'Ӫ' => 'ӫ',
- 'Ӭ' => 'ӭ',
- 'Ӯ' => 'ӯ',
- 'Ӱ' => 'ӱ',
- 'Ӳ' => 'ӳ',
- 'Ӵ' => 'ӵ',
- 'Ӷ' => 'ӷ',
- 'Ӹ' => 'ӹ',
- 'Ӻ' => 'ӻ',
- 'Ӽ' => 'ӽ',
- 'Ӿ' => 'ӿ',
- 'Ԁ' => 'ԁ',
- 'Ԃ' => 'ԃ',
- 'Ԅ' => 'ԅ',
- 'Ԇ' => 'ԇ',
- 'Ԉ' => 'ԉ',
- 'Ԋ' => 'ԋ',
- 'Ԍ' => 'ԍ',
- 'Ԏ' => 'ԏ',
- 'Ԑ' => 'ԑ',
- 'Ԓ' => 'ԓ',
- 'Ԕ' => 'ԕ',
- 'Ԗ' => 'ԗ',
- 'Ԙ' => 'ԙ',
- 'Ԛ' => 'ԛ',
- 'Ԝ' => 'ԝ',
- 'Ԟ' => 'ԟ',
- 'Ԡ' => 'ԡ',
- 'Ԣ' => 'ԣ',
- 'Ԥ' => 'ԥ',
- 'Ԧ' => 'ԧ',
- 'Ա' => 'ա',
- 'Բ' => 'բ',
- 'Գ' => 'գ',
- 'Դ' => 'դ',
- 'Ե' => 'ե',
- 'Զ' => 'զ',
- 'Է' => 'է',
- 'Ը' => 'ը',
- 'Թ' => 'թ',
- 'Ժ' => 'ժ',
- 'Ի' => 'ի',
- 'Լ' => 'լ',
- 'Խ' => 'խ',
- 'Ծ' => 'ծ',
- 'Կ' => 'կ',
- 'Հ' => 'հ',
- 'Ձ' => 'ձ',
- 'Ղ' => 'ղ',
- 'Ճ' => 'ճ',
- 'Մ' => 'մ',
- 'Յ' => 'յ',
- 'Ն' => 'ն',
- 'Շ' => 'շ',
- 'Ո' => 'ո',
- 'Չ' => 'չ',
- 'Պ' => 'պ',
- 'Ջ' => 'ջ',
- 'Ռ' => 'ռ',
- 'Ս' => 'ս',
- 'Վ' => 'վ',
- 'Տ' => 'տ',
- 'Ր' => 'ր',
- 'Ց' => 'ց',
- 'Ւ' => 'ւ',
- 'Փ' => 'փ',
- 'Ք' => 'ք',
- 'Օ' => 'օ',
- 'Ֆ' => 'ֆ',
- 'Ⴀ' => 'ⴀ',
- 'Ⴁ' => 'ⴁ',
- 'Ⴂ' => 'ⴂ',
- 'Ⴃ' => 'ⴃ',
- 'Ⴄ' => 'ⴄ',
- 'Ⴅ' => 'ⴅ',
- 'Ⴆ' => 'ⴆ',
- 'Ⴇ' => 'ⴇ',
- 'Ⴈ' => 'ⴈ',
- 'Ⴉ' => 'ⴉ',
- 'Ⴊ' => 'ⴊ',
- 'Ⴋ' => 'ⴋ',
- 'Ⴌ' => 'ⴌ',
- 'Ⴍ' => 'ⴍ',
- 'Ⴎ' => 'ⴎ',
- 'Ⴏ' => 'ⴏ',
- 'Ⴐ' => 'ⴐ',
- 'Ⴑ' => 'ⴑ',
- 'Ⴒ' => 'ⴒ',
- 'Ⴓ' => 'ⴓ',
- 'Ⴔ' => 'ⴔ',
- 'Ⴕ' => 'ⴕ',
- 'Ⴖ' => 'ⴖ',
- 'Ⴗ' => 'ⴗ',
- 'Ⴘ' => 'ⴘ',
- 'Ⴙ' => 'ⴙ',
- 'Ⴚ' => 'ⴚ',
- 'Ⴛ' => 'ⴛ',
- 'Ⴜ' => 'ⴜ',
- 'Ⴝ' => 'ⴝ',
- 'Ⴞ' => 'ⴞ',
- 'Ⴟ' => 'ⴟ',
- 'Ⴠ' => 'ⴠ',
- 'Ⴡ' => 'ⴡ',
- 'Ⴢ' => 'ⴢ',
- 'Ⴣ' => 'ⴣ',
- 'Ⴤ' => 'ⴤ',
- 'Ⴥ' => 'ⴥ',
- 'Ḁ' => 'ḁ',
- 'Ḃ' => 'ḃ',
- 'Ḅ' => 'ḅ',
- 'Ḇ' => 'ḇ',
- 'Ḉ' => 'ḉ',
- 'Ḋ' => 'ḋ',
- 'Ḍ' => 'ḍ',
- 'Ḏ' => 'ḏ',
- 'Ḑ' => 'ḑ',
- 'Ḓ' => 'ḓ',
- 'Ḕ' => 'ḕ',
- 'Ḗ' => 'ḗ',
- 'Ḙ' => 'ḙ',
- 'Ḛ' => 'ḛ',
- 'Ḝ' => 'ḝ',
- 'Ḟ' => 'ḟ',
- 'Ḡ' => 'ḡ',
- 'Ḣ' => 'ḣ',
- 'Ḥ' => 'ḥ',
- 'Ḧ' => 'ḧ',
- 'Ḩ' => 'ḩ',
- 'Ḫ' => 'ḫ',
- 'Ḭ' => 'ḭ',
- 'Ḯ' => 'ḯ',
- 'Ḱ' => 'ḱ',
- 'Ḳ' => 'ḳ',
- 'Ḵ' => 'ḵ',
- 'Ḷ' => 'ḷ',
- 'Ḹ' => 'ḹ',
- 'Ḻ' => 'ḻ',
- 'Ḽ' => 'ḽ',
- 'Ḿ' => 'ḿ',
- 'Ṁ' => 'ṁ',
- 'Ṃ' => 'ṃ',
- 'Ṅ' => 'ṅ',
- 'Ṇ' => 'ṇ',
- 'Ṉ' => 'ṉ',
- 'Ṋ' => 'ṋ',
- 'Ṍ' => 'ṍ',
- 'Ṏ' => 'ṏ',
- 'Ṑ' => 'ṑ',
- 'Ṓ' => 'ṓ',
- 'Ṕ' => 'ṕ',
- 'Ṗ' => 'ṗ',
- 'Ṙ' => 'ṙ',
- 'Ṛ' => 'ṛ',
- 'Ṝ' => 'ṝ',
- 'Ṟ' => 'ṟ',
- 'Ṡ' => 'ṡ',
- 'Ṣ' => 'ṣ',
- 'Ṥ' => 'ṥ',
- 'Ṧ' => 'ṧ',
- 'Ṩ' => 'ṩ',
- 'Ṫ' => 'ṫ',
- 'Ṭ' => 'ṭ',
- 'Ṯ' => 'ṯ',
- 'Ṱ' => 'ṱ',
- 'Ṳ' => 'ṳ',
- 'Ṵ' => 'ṵ',
- 'Ṷ' => 'ṷ',
- 'Ṹ' => 'ṹ',
- 'Ṻ' => 'ṻ',
- 'Ṽ' => 'ṽ',
- 'Ṿ' => 'ṿ',
- 'Ẁ' => 'ẁ',
- 'Ẃ' => 'ẃ',
- 'Ẅ' => 'ẅ',
- 'Ẇ' => 'ẇ',
- 'Ẉ' => 'ẉ',
- 'Ẋ' => 'ẋ',
- 'Ẍ' => 'ẍ',
- 'Ẏ' => 'ẏ',
- 'Ẑ' => 'ẑ',
- 'Ẓ' => 'ẓ',
- 'Ẕ' => 'ẕ',
- 'ẞ' => 'ß',
- 'Ạ' => 'ạ',
- 'Ả' => 'ả',
- 'Ấ' => 'ấ',
- 'Ầ' => 'ầ',
- 'Ẩ' => 'ẩ',
- 'Ẫ' => 'ẫ',
- 'Ậ' => 'ậ',
- 'Ắ' => 'ắ',
- 'Ằ' => 'ằ',
- 'Ẳ' => 'ẳ',
- 'Ẵ' => 'ẵ',
- 'Ặ' => 'ặ',
- 'Ẹ' => 'ẹ',
- 'Ẻ' => 'ẻ',
- 'Ẽ' => 'ẽ',
- 'Ế' => 'ế',
- 'Ề' => 'ề',
- 'Ể' => 'ể',
- 'Ễ' => 'ễ',
- 'Ệ' => 'ệ',
- 'Ỉ' => 'ỉ',
- 'Ị' => 'ị',
- 'Ọ' => 'ọ',
- 'Ỏ' => 'ỏ',
- 'Ố' => 'ố',
- 'Ồ' => 'ồ',
- 'Ổ' => 'ổ',
- 'Ỗ' => 'ỗ',
- 'Ộ' => 'ộ',
- 'Ớ' => 'ớ',
- 'Ờ' => 'ờ',
- 'Ở' => 'ở',
- 'Ỡ' => 'ỡ',
- 'Ợ' => 'ợ',
- 'Ụ' => 'ụ',
- 'Ủ' => 'ủ',
- 'Ứ' => 'ứ',
- 'Ừ' => 'ừ',
- 'Ử' => 'ử',
- 'Ữ' => 'ữ',
- 'Ự' => 'ự',
- 'Ỳ' => 'ỳ',
- 'Ỵ' => 'ỵ',
- 'Ỷ' => 'ỷ',
- 'Ỹ' => 'ỹ',
- 'Ỻ' => 'ỻ',
- 'Ỽ' => 'ỽ',
- 'Ỿ' => 'ỿ',
- 'Ἀ' => 'ἀ',
- 'Ἁ' => 'ἁ',
- 'Ἂ' => 'ἂ',
- 'Ἃ' => 'ἃ',
- 'Ἄ' => 'ἄ',
- 'Ἅ' => 'ἅ',
- 'Ἆ' => 'ἆ',
- 'Ἇ' => 'ἇ',
- 'Ἐ' => 'ἐ',
- 'Ἑ' => 'ἑ',
- 'Ἒ' => 'ἒ',
- 'Ἓ' => 'ἓ',
- 'Ἔ' => 'ἔ',
- 'Ἕ' => 'ἕ',
- 'Ἠ' => 'ἠ',
- 'Ἡ' => 'ἡ',
- 'Ἢ' => 'ἢ',
- 'Ἣ' => 'ἣ',
- 'Ἤ' => 'ἤ',
- 'Ἥ' => 'ἥ',
- 'Ἦ' => 'ἦ',
- 'Ἧ' => 'ἧ',
- 'Ἰ' => 'ἰ',
- 'Ἱ' => 'ἱ',
- 'Ἲ' => 'ἲ',
- 'Ἳ' => 'ἳ',
- 'Ἴ' => 'ἴ',
- 'Ἵ' => 'ἵ',
- 'Ἶ' => 'ἶ',
- 'Ἷ' => 'ἷ',
- 'Ὀ' => 'ὀ',
- 'Ὁ' => 'ὁ',
- 'Ὂ' => 'ὂ',
- 'Ὃ' => 'ὃ',
- 'Ὄ' => 'ὄ',
- 'Ὅ' => 'ὅ',
- 'Ὑ' => 'ὑ',
- 'Ὓ' => 'ὓ',
- 'Ὕ' => 'ὕ',
- 'Ὗ' => 'ὗ',
- 'Ὠ' => 'ὠ',
- 'Ὡ' => 'ὡ',
- 'Ὢ' => 'ὢ',
- 'Ὣ' => 'ὣ',
- 'Ὤ' => 'ὤ',
- 'Ὥ' => 'ὥ',
- 'Ὦ' => 'ὦ',
- 'Ὧ' => 'ὧ',
- 'ᾈ' => 'ᾀ',
- 'ᾉ' => 'ᾁ',
- 'ᾊ' => 'ᾂ',
- 'ᾋ' => 'ᾃ',
- 'ᾌ' => 'ᾄ',
- 'ᾍ' => 'ᾅ',
- 'ᾎ' => 'ᾆ',
- 'ᾏ' => 'ᾇ',
- 'ᾘ' => 'ᾐ',
- 'ᾙ' => 'ᾑ',
- 'ᾚ' => 'ᾒ',
- 'ᾛ' => 'ᾓ',
- 'ᾜ' => 'ᾔ',
- 'ᾝ' => 'ᾕ',
- 'ᾞ' => 'ᾖ',
- 'ᾟ' => 'ᾗ',
- 'ᾨ' => 'ᾠ',
- 'ᾩ' => 'ᾡ',
- 'ᾪ' => 'ᾢ',
- 'ᾫ' => 'ᾣ',
- 'ᾬ' => 'ᾤ',
- 'ᾭ' => 'ᾥ',
- 'ᾮ' => 'ᾦ',
- 'ᾯ' => 'ᾧ',
- 'Ᾰ' => 'ᾰ',
- 'Ᾱ' => 'ᾱ',
- 'Ὰ' => 'ὰ',
- 'Ά' => 'ά',
- 'ᾼ' => 'ᾳ',
- 'Ὲ' => 'ὲ',
- 'Έ' => 'έ',
- 'Ὴ' => 'ὴ',
- 'Ή' => 'ή',
- 'ῌ' => 'ῃ',
- 'Ῐ' => 'ῐ',
- 'Ῑ' => 'ῑ',
- 'Ὶ' => 'ὶ',
- 'Ί' => 'ί',
- 'Ῠ' => 'ῠ',
- 'Ῡ' => 'ῡ',
- 'Ὺ' => 'ὺ',
- 'Ύ' => 'ύ',
- 'Ῥ' => 'ῥ',
- 'Ὸ' => 'ὸ',
- 'Ό' => 'ό',
- 'Ὼ' => 'ὼ',
- 'Ώ' => 'ώ',
- 'ῼ' => 'ῳ',
- 'Ω' => 'ω',
- 'K' => 'k',
- 'Å' => 'å',
- 'Ⅎ' => 'ⅎ',
- 'Ⅰ' => 'ⅰ',
- 'Ⅱ' => 'ⅱ',
- 'Ⅲ' => 'ⅲ',
- 'Ⅳ' => 'ⅳ',
- 'Ⅴ' => 'ⅴ',
- 'Ⅵ' => 'ⅵ',
- 'Ⅶ' => 'ⅶ',
- 'Ⅷ' => 'ⅷ',
- 'Ⅸ' => 'ⅸ',
- 'Ⅹ' => 'ⅹ',
- 'Ⅺ' => 'ⅺ',
- 'Ⅻ' => 'ⅻ',
- 'Ⅼ' => 'ⅼ',
- 'Ⅽ' => 'ⅽ',
- 'Ⅾ' => 'ⅾ',
- 'Ⅿ' => 'ⅿ',
- 'Ↄ' => 'ↄ',
- 'Ⓐ' => 'ⓐ',
- 'Ⓑ' => 'ⓑ',
- 'Ⓒ' => 'ⓒ',
- 'Ⓓ' => 'ⓓ',
- 'Ⓔ' => 'ⓔ',
- 'Ⓕ' => 'ⓕ',
- 'Ⓖ' => 'ⓖ',
- 'Ⓗ' => 'ⓗ',
- 'Ⓘ' => 'ⓘ',
- 'Ⓙ' => 'ⓙ',
- 'Ⓚ' => 'ⓚ',
- 'Ⓛ' => 'ⓛ',
- 'Ⓜ' => 'ⓜ',
- 'Ⓝ' => 'ⓝ',
- 'Ⓞ' => 'ⓞ',
- 'Ⓟ' => 'ⓟ',
- 'Ⓠ' => 'ⓠ',
- 'Ⓡ' => 'ⓡ',
- 'Ⓢ' => 'ⓢ',
- 'Ⓣ' => 'ⓣ',
- 'Ⓤ' => 'ⓤ',
- 'Ⓥ' => 'ⓥ',
- 'Ⓦ' => 'ⓦ',
- 'Ⓧ' => 'ⓧ',
- 'Ⓨ' => 'ⓨ',
- 'Ⓩ' => 'ⓩ',
- 'Ⰰ' => 'ⰰ',
- 'Ⰱ' => 'ⰱ',
- 'Ⰲ' => 'ⰲ',
- 'Ⰳ' => 'ⰳ',
- 'Ⰴ' => 'ⰴ',
- 'Ⰵ' => 'ⰵ',
- 'Ⰶ' => 'ⰶ',
- 'Ⰷ' => 'ⰷ',
- 'Ⰸ' => 'ⰸ',
- 'Ⰹ' => 'ⰹ',
- 'Ⰺ' => 'ⰺ',
- 'Ⰻ' => 'ⰻ',
- 'Ⰼ' => 'ⰼ',
- 'Ⰽ' => 'ⰽ',
- 'Ⰾ' => 'ⰾ',
- 'Ⰿ' => 'ⰿ',
- 'Ⱀ' => 'ⱀ',
- 'Ⱁ' => 'ⱁ',
- 'Ⱂ' => 'ⱂ',
- 'Ⱃ' => 'ⱃ',
- 'Ⱄ' => 'ⱄ',
- 'Ⱅ' => 'ⱅ',
- 'Ⱆ' => 'ⱆ',
- 'Ⱇ' => 'ⱇ',
- 'Ⱈ' => 'ⱈ',
- 'Ⱉ' => 'ⱉ',
- 'Ⱊ' => 'ⱊ',
- 'Ⱋ' => 'ⱋ',
- 'Ⱌ' => 'ⱌ',
- 'Ⱍ' => 'ⱍ',
- 'Ⱎ' => 'ⱎ',
- 'Ⱏ' => 'ⱏ',
- 'Ⱐ' => 'ⱐ',
- 'Ⱑ' => 'ⱑ',
- 'Ⱒ' => 'ⱒ',
- 'Ⱓ' => 'ⱓ',
- 'Ⱔ' => 'ⱔ',
- 'Ⱕ' => 'ⱕ',
- 'Ⱖ' => 'ⱖ',
- 'Ⱗ' => 'ⱗ',
- 'Ⱘ' => 'ⱘ',
- 'Ⱙ' => 'ⱙ',
- 'Ⱚ' => 'ⱚ',
- 'Ⱛ' => 'ⱛ',
- 'Ⱜ' => 'ⱜ',
- 'Ⱝ' => 'ⱝ',
- 'Ⱞ' => 'ⱞ',
- 'Ⱡ' => 'ⱡ',
- 'Ɫ' => 'ɫ',
- 'Ᵽ' => 'ᵽ',
- 'Ɽ' => 'ɽ',
- 'Ⱨ' => 'ⱨ',
- 'Ⱪ' => 'ⱪ',
- 'Ⱬ' => 'ⱬ',
- 'Ɑ' => 'ɑ',
- 'Ɱ' => 'ɱ',
- 'Ɐ' => 'ɐ',
- 'Ɒ' => 'ɒ',
- 'Ⱳ' => 'ⱳ',
- 'Ⱶ' => 'ⱶ',
- 'Ȿ' => 'ȿ',
- 'Ɀ' => 'ɀ',
- 'Ⲁ' => 'ⲁ',
- 'Ⲃ' => 'ⲃ',
- 'Ⲅ' => 'ⲅ',
- 'Ⲇ' => 'ⲇ',
- 'Ⲉ' => 'ⲉ',
- 'Ⲋ' => 'ⲋ',
- 'Ⲍ' => 'ⲍ',
- 'Ⲏ' => 'ⲏ',
- 'Ⲑ' => 'ⲑ',
- 'Ⲓ' => 'ⲓ',
- 'Ⲕ' => 'ⲕ',
- 'Ⲗ' => 'ⲗ',
- 'Ⲙ' => 'ⲙ',
- 'Ⲛ' => 'ⲛ',
- 'Ⲝ' => 'ⲝ',
- 'Ⲟ' => 'ⲟ',
- 'Ⲡ' => 'ⲡ',
- 'Ⲣ' => 'ⲣ',
- 'Ⲥ' => 'ⲥ',
- 'Ⲧ' => 'ⲧ',
- 'Ⲩ' => 'ⲩ',
- 'Ⲫ' => 'ⲫ',
- 'Ⲭ' => 'ⲭ',
- 'Ⲯ' => 'ⲯ',
- 'Ⲱ' => 'ⲱ',
- 'Ⲳ' => 'ⲳ',
- 'Ⲵ' => 'ⲵ',
- 'Ⲷ' => 'ⲷ',
- 'Ⲹ' => 'ⲹ',
- 'Ⲻ' => 'ⲻ',
- 'Ⲽ' => 'ⲽ',
- 'Ⲿ' => 'ⲿ',
- 'Ⳁ' => 'ⳁ',
- 'Ⳃ' => 'ⳃ',
- 'Ⳅ' => 'ⳅ',
- 'Ⳇ' => 'ⳇ',
- 'Ⳉ' => 'ⳉ',
- 'Ⳋ' => 'ⳋ',
- 'Ⳍ' => 'ⳍ',
- 'Ⳏ' => 'ⳏ',
- 'Ⳑ' => 'ⳑ',
- 'Ⳓ' => 'ⳓ',
- 'Ⳕ' => 'ⳕ',
- 'Ⳗ' => 'ⳗ',
- 'Ⳙ' => 'ⳙ',
- 'Ⳛ' => 'ⳛ',
- 'Ⳝ' => 'ⳝ',
- 'Ⳟ' => 'ⳟ',
- 'Ⳡ' => 'ⳡ',
- 'Ⳣ' => 'ⳣ',
- 'Ⳬ' => 'ⳬ',
- 'Ⳮ' => 'ⳮ',
- 'Ꙁ' => 'ꙁ',
- 'Ꙃ' => 'ꙃ',
- 'Ꙅ' => 'ꙅ',
- 'Ꙇ' => 'ꙇ',
- 'Ꙉ' => 'ꙉ',
- 'Ꙋ' => 'ꙋ',
- 'Ꙍ' => 'ꙍ',
- 'Ꙏ' => 'ꙏ',
- 'Ꙑ' => 'ꙑ',
- 'Ꙓ' => 'ꙓ',
- 'Ꙕ' => 'ꙕ',
- 'Ꙗ' => 'ꙗ',
- 'Ꙙ' => 'ꙙ',
- 'Ꙛ' => 'ꙛ',
- 'Ꙝ' => 'ꙝ',
- 'Ꙟ' => 'ꙟ',
- 'Ꙡ' => 'ꙡ',
- 'Ꙣ' => 'ꙣ',
- 'Ꙥ' => 'ꙥ',
- 'Ꙧ' => 'ꙧ',
- 'Ꙩ' => 'ꙩ',
- 'Ꙫ' => 'ꙫ',
- 'Ꙭ' => 'ꙭ',
- 'Ꚁ' => 'ꚁ',
- 'Ꚃ' => 'ꚃ',
- 'Ꚅ' => 'ꚅ',
- 'Ꚇ' => 'ꚇ',
- 'Ꚉ' => 'ꚉ',
- 'Ꚋ' => 'ꚋ',
- 'Ꚍ' => 'ꚍ',
- 'Ꚏ' => 'ꚏ',
- 'Ꚑ' => 'ꚑ',
- 'Ꚓ' => 'ꚓ',
- 'Ꚕ' => 'ꚕ',
- 'Ꚗ' => 'ꚗ',
- 'Ꜣ' => 'ꜣ',
- 'Ꜥ' => 'ꜥ',
- 'Ꜧ' => 'ꜧ',
- 'Ꜩ' => 'ꜩ',
- 'Ꜫ' => 'ꜫ',
- 'Ꜭ' => 'ꜭ',
- 'Ꜯ' => 'ꜯ',
- 'Ꜳ' => 'ꜳ',
- 'Ꜵ' => 'ꜵ',
- 'Ꜷ' => 'ꜷ',
- 'Ꜹ' => 'ꜹ',
- 'Ꜻ' => 'ꜻ',
- 'Ꜽ' => 'ꜽ',
- 'Ꜿ' => 'ꜿ',
- 'Ꝁ' => 'ꝁ',
- 'Ꝃ' => 'ꝃ',
- 'Ꝅ' => 'ꝅ',
- 'Ꝇ' => 'ꝇ',
- 'Ꝉ' => 'ꝉ',
- 'Ꝋ' => 'ꝋ',
- 'Ꝍ' => 'ꝍ',
- 'Ꝏ' => 'ꝏ',
- 'Ꝑ' => 'ꝑ',
- 'Ꝓ' => 'ꝓ',
- 'Ꝕ' => 'ꝕ',
- 'Ꝗ' => 'ꝗ',
- 'Ꝙ' => 'ꝙ',
- 'Ꝛ' => 'ꝛ',
- 'Ꝝ' => 'ꝝ',
- 'Ꝟ' => 'ꝟ',
- 'Ꝡ' => 'ꝡ',
- 'Ꝣ' => 'ꝣ',
- 'Ꝥ' => 'ꝥ',
- 'Ꝧ' => 'ꝧ',
- 'Ꝩ' => 'ꝩ',
- 'Ꝫ' => 'ꝫ',
- 'Ꝭ' => 'ꝭ',
- 'Ꝯ' => 'ꝯ',
- 'Ꝺ' => 'ꝺ',
- 'Ꝼ' => 'ꝼ',
- 'Ᵹ' => 'ᵹ',
- 'Ꝿ' => 'ꝿ',
- 'Ꞁ' => 'ꞁ',
- 'Ꞃ' => 'ꞃ',
- 'Ꞅ' => 'ꞅ',
- 'Ꞇ' => 'ꞇ',
- 'Ꞌ' => 'ꞌ',
- 'Ɥ' => 'ɥ',
- 'Ꞑ' => 'ꞑ',
- 'Ꞡ' => 'ꞡ',
- 'Ꞣ' => 'ꞣ',
- 'Ꞥ' => 'ꞥ',
- 'Ꞧ' => 'ꞧ',
- 'Ꞩ' => 'ꞩ',
- 'A' => 'a',
- 'B' => 'b',
- 'C' => 'c',
- 'D' => 'd',
- 'E' => 'e',
- 'F' => 'f',
- 'G' => 'g',
- 'H' => 'h',
- 'I' => 'i',
- 'J' => 'j',
- 'K' => 'k',
- 'L' => 'l',
- 'M' => 'm',
- 'N' => 'n',
- 'O' => 'o',
- 'P' => 'p',
- 'Q' => 'q',
- 'R' => 'r',
- 'S' => 's',
- 'T' => 't',
- 'U' => 'u',
- 'V' => 'v',
- 'W' => 'w',
- 'X' => 'x',
- 'Y' => 'y',
- 'Z' => 'z',
- '𐐀' => '𐐨',
- '𐐁' => '𐐩',
- '𐐂' => '𐐪',
- '𐐃' => '𐐫',
- '𐐄' => '𐐬',
- '𐐅' => '𐐭',
- '𐐆' => '𐐮',
- '𐐇' => '𐐯',
- '𐐈' => '𐐰',
- '𐐉' => '𐐱',
- '𐐊' => '𐐲',
- '𐐋' => '𐐳',
- '𐐌' => '𐐴',
- '𐐍' => '𐐵',
- '𐐎' => '𐐶',
- '𐐏' => '𐐷',
- '𐐐' => '𐐸',
- '𐐑' => '𐐹',
- '𐐒' => '𐐺',
- '𐐓' => '𐐻',
- '𐐔' => '𐐼',
- '𐐕' => '𐐽',
- '𐐖' => '𐐾',
- '𐐗' => '𐐿',
- '𐐘' => '𐑀',
- '𐐙' => '𐑁',
- '𐐚' => '𐑂',
- '𐐛' => '𐑃',
- '𐐜' => '𐑄',
- '𐐝' => '𐑅',
- '𐐞' => '𐑆',
- '𐐟' => '𐑇',
- '𐐠' => '𐑈',
- '𐐡' => '𐑉',
- '𐐢' => '𐑊',
- '𐐣' => '𐑋',
- '𐐤' => '𐑌',
- '𐐥' => '𐑍',
- '𐐦' => '𐑎',
- '𐐧' => '𐑏'
-);
+++ /dev/null
-<?php
-/**
- * This script generates Utf8Case.php from the Unicode Character Database
- * and supplementary files.
- *
- * Copyright © 2004,2008 Brion Vibber <brion@pobox.com>
- * http://www.mediawiki.org/
- *
- * 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 UtfNormal
- */
-
-if( PHP_SAPI != 'cli' ) {
- die( "Run me from the command line please.\n" );
-}
-
-require_once 'UtfNormalDefines.php';
-require_once 'UtfNormalUtil.php';
-
-$in = fopen("UnicodeData.txt", "rt" );
-if( !$in ) {
- print "Can't open UnicodeData.txt for reading.\n";
- print "If necessary, fetch this file from the internet:\n";
- print "http://www.unicode.org/Public/UNIDATA/UnicodeData.txt\n";
- exit(-1);
-}
-$wikiUpperChars = array();
-$wikiLowerChars = array();
-
-print "Reading character definitions...\n";
-while( false !== ($line = fgets( $in ) ) ) {
- $columns = explode(';', $line);
- $codepoint = $columns[0];
- $name = $columns[1];
- $simpleUpper = $columns[12];
- $simpleLower = $columns[13];
-
- $source = codepointToUtf8( hexdec( $codepoint ) );
- if( $simpleUpper ) {
- $wikiUpperChars[$source] = codepointToUtf8( hexdec( $simpleUpper ) );
- }
- if( $simpleLower ) {
- $wikiLowerChars[$source] = codepointToUtf8( hexdec( $simpleLower ) );
- }
-}
-fclose( $in );
-
-$out = fopen( "Utf8Case.php", "wt" );
-if( $out ) {
- $outUpperChars = escapeArray( $wikiUpperChars );
- $outLowerChars = escapeArray( $wikiLowerChars );
- $outdata = "<" . "?php
-/**
- * Simple 1:1 upper/lowercase switching arrays for utf-8 text.
- * Won't get context-sensitive things yet.
- *
- * Hack for bugs in ucfirst() and company
- *
- * These are pulled from memcached if possible, as this is faster than filling
- * up a big array manually.
- *
- * @file
- * @ingroup Language
- */
-
-/**
- * Translation array to get upper case character
- */
-\$wikiUpperChars = $outUpperChars;
-
-/**
- * Translation array to get lower case character
- */
-\$wikiLowerChars = $outLowerChars;\n";
- fputs( $out, $outdata );
- fclose( $out );
- print "Wrote out Utf8Case.php\n";
-} else {
- print "Can't create file Utf8Case.php\n";
- exit(-1);
-}
-
-
-function escapeArray( $arr ) {
- return "array(\n" .
- implode( ",\n",
- array_map( "escapeLine",
- array_keys( $arr ),
- array_values( $arr ) ) ) .
- "\n)";
-}
-
-function escapeLine( $key, $val ) {
- $encKey = escapeSingleString( $key );
- $encVal = escapeSingleString( $val );
- return "\t'$encKey' => '$encVal'";
-}
+++ /dev/null
-<?php
-/**
- * Object caching using DBA backend.
- *
- * 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 Cache
- */
-
-/**
- * Cache that uses DBA as a backend.
- * Slow due to the need to constantly open and close the file to avoid holding
- * writer locks. Intended for development use only, as a memcached workalike
- * for systems that don't have it.
- *
- * On construction you can pass array( 'dir' => '/some/path' ); as a parameter
- * to override the default DBA files directory (wfTempDir()).
- *
- * @ingroup Cache
- */
-class DBABagOStuff extends BagOStuff {
- var $mHandler, $mFile, $mReader, $mWriter, $mDisabled;
-
- /**
- * @param $params array
- */
- public function __construct( $params ) {
- global $wgDBAhandler;
-
- if ( !isset( $params['dir'] ) ) {
- $params['dir'] = wfTempDir();
- }
-
- $this->mFile = $params['dir'] . '/mw-cache-' . wfWikiID() . '.db';
- wfDebug( __CLASS__ . ": using cache file {$this->mFile}\n" );
- $this->mHandler = $wgDBAhandler;
- }
-
- /**
- * Encode value and expiry for storage
- * @param $value
- * @param $expiry
- *
- * @return string
- */
- protected function encode( $value, $expiry ) {
- # Convert to absolute time
- $expiry = $this->convertExpiry( $expiry );
-
- return sprintf( '%010u', intval( $expiry ) ) . ' ' . serialize( $value );
- }
-
- /**
- * @param $blob string
- * @return array list containing value first and expiry second
- */
- protected function decode( $blob ) {
- if ( !is_string( $blob ) ) {
- return array( false, 0 );
- } else {
- return array(
- unserialize( substr( $blob, 11 ) ),
- intval( substr( $blob, 0, 10 ) )
- );
- }
- }
-
- /**
- * @return resource
- */
- protected function getReader() {
- if ( file_exists( $this->mFile ) ) {
- $handle = dba_open( $this->mFile, 'rl', $this->mHandler );
- } else {
- $handle = $this->getWriter();
- }
-
- if ( !$handle ) {
- wfDebug( "Unable to open DBA cache file {$this->mFile}\n" );
- }
-
- return $handle;
- }
-
- /**
- * @return resource
- */
- protected function getWriter() {
- $handle = dba_open( $this->mFile, 'cl', $this->mHandler );
-
- if ( !$handle ) {
- wfDebug( "Unable to open DBA cache file {$this->mFile}\n" );
- }
-
- return $handle;
- }
-
- /**
- * @param $key string
- * @param $casToken[optional] mixed
- * @return mixed
- */
- public function get( $key, &$casToken = null ) {
- wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . "($key)\n" );
-
- $handle = $this->getReader();
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $val = dba_fetch( $key, $handle );
- list( $val, $expiry ) = $this->decode( $val );
-
- # Must close ASAP because locks are held
- dba_close( $handle );
-
- if ( $val !== false && $expiry && $expiry < time() ) {
- # Key is expired, delete it
- $handle = $this->getWriter();
- dba_delete( $key, $handle );
- dba_close( $handle );
- wfDebug( __METHOD__ . ": $key expired\n" );
- $val = false;
- }
-
- $casToken = $val;
-
- wfProfileOut( __METHOD__ );
-
- return $val;
- }
-
- /**
- * @param $key string
- * @param $value mixed
- * @param $exptime int
- * @return bool
- */
- public function set( $key, $value, $exptime = 0 ) {
- wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . "($key)\n" );
-
- $blob = $this->encode( $value, $exptime );
-
- $handle = $this->getWriter();
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $ret = dba_replace( $key, $blob, $handle );
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @param $casToken mixed
- * @param $key string
- * @param $value mixed
- * @param $exptime int
- * @return bool
- */
- public function cas( $casToken, $key, $value, $exptime = 0 ) {
- wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . "($key)\n" );
-
- $blob = $this->encode( $value, $exptime );
-
- $handle = $this->getWriter();
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- // DBA is locked to any other write connection, so we can safely
- // compare the current & previous value before saving new value
- $val = dba_fetch( $key, $handle );
- list( $val, $exptime ) = $this->decode( $val );
- if ( $casToken !== $val ) {
- dba_close( $handle );
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $ret = dba_replace( $key, $blob, $handle );
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @param $key string
- * @param $time int
- * @return bool
- */
- public function delete( $key, $time = 0 ) {
- wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . "($key)\n" );
-
- $handle = $this->getWriter();
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $ret = !dba_exists( $key, $handle ) || dba_delete( $key, $handle );
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @param $key string
- * @param $value mixed
- * @param $exptime int
- * @return bool
- */
- public function add( $key, $value, $exptime = 0 ) {
- wfProfileIn( __METHOD__ );
-
- $blob = $this->encode( $value, $exptime );
-
- $handle = $this->getWriter();
-
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $ret = dba_insert( $key, $blob, $handle );
-
- # Insert failed, check to see if it failed due to an expired key
- if ( !$ret ) {
- list( , $expiry ) = $this->decode( dba_fetch( $key, $handle ) );
-
- if ( $expiry && $expiry < time() ) {
- # Yes expired, delete and try again
- dba_delete( $key, $handle );
- $ret = dba_insert( $key, $blob, $handle );
- # This time if it failed then it will be handled by the caller like any other race
- }
- }
-
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @param $key string
- * @param $step integer
- * @return integer|bool
- */
- public function incr( $key, $step = 1 ) {
- wfProfileIn( __METHOD__ );
-
- $handle = $this->getWriter();
-
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- list( $value, $expiry ) = $this->decode( dba_fetch( $key, $handle ) );
- if ( $value !== false ) {
- if ( $expiry && $expiry < time() ) {
- # Key is expired, delete it
- dba_delete( $key, $handle );
- wfDebug( __METHOD__ . ": $key expired\n" );
- $value = false;
- } else {
- $value += $step;
- $blob = $this->encode( $value, $expiry );
-
- $ret = dba_replace( $key, $blob, $handle );
- $value = $ret ? $value : false;
- }
- }
-
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
-
- return ( $value === false ) ? false : (int)$value;
- }
-}
+++ /dev/null
-<?php
-/**
- * Object caching using the Ehcache RESTful web service.
- *
- * 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 Cache
- */
-
-/**
- * Client for the Ehcache RESTful web service - http://ehcache.org/documentation/cache_server.html
- * TODO: Simplify configuration and add to the installer.
- *
- * @ingroup Cache
- */
-class EhcacheBagOStuff extends BagOStuff {
- var $servers, $cacheName, $connectTimeout, $timeout, $curlOptions,
- $requestData, $requestDataPos;
-
- var $curls = array();
-
- /**
- * @param $params array
- * @throws MWException
- */
- function __construct( $params ) {
- if ( !defined( 'CURLOPT_TIMEOUT_MS' ) ) {
- throw new MWException( __CLASS__ . ' requires curl version 7.16.2 or later.' );
- }
- if ( !extension_loaded( 'zlib' ) ) {
- throw new MWException( __CLASS__ . ' requires the zlib extension' );
- }
- if ( !isset( $params['servers'] ) ) {
- throw new MWException( __METHOD__ . ': servers parameter is required' );
- }
- $this->servers = $params['servers'];
- $this->cacheName = isset( $params['cache'] ) ? $params['cache'] : 'mw';
- $this->connectTimeout = isset( $params['connectTimeout'] )
- ? $params['connectTimeout'] : 1;
- $this->timeout = isset( $params['timeout'] ) ? $params['timeout'] : 1;
- $this->curlOptions = array(
- CURLOPT_CONNECTTIMEOUT_MS => intval( $this->connectTimeout * 1000 ),
- CURLOPT_TIMEOUT_MS => intval( $this->timeout * 1000 ),
- CURLOPT_RETURNTRANSFER => 1,
- CURLOPT_CUSTOMREQUEST => 'GET',
- CURLOPT_POST => 0,
- CURLOPT_POSTFIELDS => '',
- CURLOPT_HTTPHEADER => array(),
- );
- }
-
- /**
- * @param $key string
- * @param $casToken[optional] mixed
- * @return bool|mixed
- */
- public function get( $key, &$casToken = null ) {
- wfProfileIn( __METHOD__ );
- $response = $this->doItemRequest( $key );
- if ( !$response || $response['http_code'] == 404 ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
- if ( $response['http_code'] >= 300 ) {
- wfDebug( __METHOD__ . ": GET failure, got HTTP {$response['http_code']}\n" );
- wfProfileOut( __METHOD__ );
- return false;
- }
- $body = $response['body'];
- $type = $response['content_type'];
- if ( $type == 'application/vnd.php.serialized+deflate' ) {
- $body = gzinflate( $body );
- if ( !$body ) {
- wfDebug( __METHOD__ . ": error inflating $key\n" );
- wfProfileOut( __METHOD__ );
- return false;
- }
- $data = unserialize( $body );
- } elseif ( $type == 'application/vnd.php.serialized' ) {
- $data = unserialize( $body );
- } else {
- wfDebug( __METHOD__ . ": unknown content type \"$type\"\n" );
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $casToken = $body;
-
- wfProfileOut( __METHOD__ );
- return $data;
- }
-
- /**
- * @param $key string
- * @param $value mixed
- * @param $expiry int
- * @return bool
- */
- public function set( $key, $value, $expiry = 0 ) {
- wfProfileIn( __METHOD__ );
- $expiry = $this->convertExpiry( $expiry );
- $ttl = $expiry ? $expiry - time() : 2147483647;
- $blob = serialize( $value );
- if ( strlen( $blob ) > 100 ) {
- $blob = gzdeflate( $blob );
- $contentType = 'application/vnd.php.serialized+deflate';
- } else {
- $contentType = 'application/vnd.php.serialized';
- }
-
- $code = $this->attemptPut( $key, $blob, $contentType, $ttl );
-
- if ( $code == 404 ) {
- // Maybe the cache does not exist yet, let's try creating it
- if ( !$this->createCache( $key ) ) {
- wfDebug( __METHOD__ . ": cache creation failed\n" );
- wfProfileOut( __METHOD__ );
- return false;
- }
- $code = $this->attemptPut( $key, $blob, $contentType, $ttl );
- }
-
- $result = false;
- if ( !$code ) {
- wfDebug( __METHOD__ . ": PUT failure for key $key\n" );
- } elseif ( $code >= 300 ) {
- wfDebug( __METHOD__ . ": PUT failure for key $key: HTTP $code\n" );
- } else {
- $result = true;
- }
-
- wfProfileOut( __METHOD__ );
- return $result;
- }
-
- /**
- * @param $casToken mixed
- * @param $key string
- * @param $value mixed
- * @param $exptime int
- * @return bool
- */
- public function cas( $casToken, $key, $value, $exptime = 0 ) {
- // Not sure if we can implement CAS for ehcache. There appears to be CAS-support per
- // http://ehcache.org/documentation/get-started/consistency-options#cas-cache-operations,
- // but I can't find any docs for our current implementation.
- throw new MWException( "CAS is not implemented in " . __CLASS__ );
- }
-
- /**
- * @param $key string
- * @param $time int
- * @return bool
- */
- public function delete( $key, $time = 0 ) {
- wfProfileIn( __METHOD__ );
- $response = $this->doItemRequest( $key,
- array( CURLOPT_CUSTOMREQUEST => 'DELETE' ) );
- $code = isset( $response['http_code'] ) ? $response['http_code'] : 0;
- if ( !$response || ( $code != 404 && $code >= 300 ) ) {
- wfDebug( __METHOD__ . ": DELETE failure for key $key\n" );
- $result = false;
- } else {
- $result = true;
- }
- wfProfileOut( __METHOD__ );
- return $result;
- }
-
- /**
- * @see BagOStuff::merge()
- * @return bool success
- */
- public function merge( $key, closure $callback, $exptime = 0, $attempts = 10 ) {
- return $this->mergeViaLock( $key, $callback, $exptime, $attempts );
- }
-
- /**
- * @param $key string
- * @return string
- */
- protected function getCacheUrl( $key ) {
- if ( count( $this->servers ) == 1 ) {
- $server = reset( $this->servers );
- } else {
- // Use consistent hashing
- $hashes = array();
- foreach ( $this->servers as $server ) {
- $hashes[$server] = md5( $server . '/' . $key );
- }
- asort( $hashes );
- reset( $hashes );
- $server = key( $hashes );
- }
- return "http://$server/ehcache/rest/{$this->cacheName}";
- }
-
- /**
- * Get a cURL handle for the given cache URL.
- * We cache the handles to allow keepalive.
- */
- protected function getCurl( $cacheUrl ) {
- if ( !isset( $this->curls[$cacheUrl] ) ) {
- $this->curls[$cacheUrl] = curl_init();
- }
- return $this->curls[$cacheUrl];
- }
-
- /**
- * @param $key string
- * @param $data
- * @param $type
- * @param $ttl
- * @return int
- */
- protected function attemptPut( $key, $data, $type, $ttl ) {
- // In initial benchmarking, it was 30 times faster to use CURLOPT_POST
- // than CURLOPT_UPLOAD with CURLOPT_READFUNCTION. This was because
- // CURLOPT_UPLOAD was pushing the request headers first, then waiting
- // for an ACK packet, then sending the data, whereas CURLOPT_POST just
- // sends the headers and the data in a single send().
- $response = $this->doItemRequest( $key,
- array(
- CURLOPT_POST => 1,
- CURLOPT_CUSTOMREQUEST => 'PUT',
- CURLOPT_POSTFIELDS => $data,
- CURLOPT_HTTPHEADER => array(
- 'Content-Type: ' . $type,
- 'ehcacheTimeToLiveSeconds: ' . $ttl
- )
- )
- );
- if ( !$response ) {
- return 0;
- } else {
- return $response['http_code'];
- }
- }
-
- /**
- * @param $key string
- * @return bool
- */
- protected function createCache( $key ) {
- wfDebug( __METHOD__ . ": creating cache for $key\n" );
- $response = $this->doCacheRequest( $key,
- array(
- CURLOPT_POST => 1,
- CURLOPT_CUSTOMREQUEST => 'PUT',
- CURLOPT_POSTFIELDS => '',
- ) );
- if ( !$response ) {
- wfDebug( __CLASS__ . ": failed to create cache for $key\n" );
- return false;
- }
- return ( $response['http_code'] == 201 /* created */
- || $response['http_code'] == 409 /* already there */ );
- }
-
- /**
- * @param $key string
- * @param $curlOptions array
- * @return array|bool|mixed
- */
- protected function doCacheRequest( $key, $curlOptions = array() ) {
- $cacheUrl = $this->getCacheUrl( $key );
- $curl = $this->getCurl( $cacheUrl );
- return $this->doRequest( $curl, $cacheUrl, $curlOptions );
- }
-
- /**
- * @param $key string
- * @param $curlOptions array
- * @return array|bool|mixed
- */
- protected function doItemRequest( $key, $curlOptions = array() ) {
- $cacheUrl = $this->getCacheUrl( $key );
- $curl = $this->getCurl( $cacheUrl );
- $url = $cacheUrl . '/' . rawurlencode( $key );
- return $this->doRequest( $curl, $url, $curlOptions );
- }
-
- /**
- * @param $curl
- * @param $url string
- * @param $curlOptions array
- * @return array|bool|mixed
- * @throws MWException
- */
- protected function doRequest( $curl, $url, $curlOptions = array() ) {
- if ( array_diff_key( $curlOptions, $this->curlOptions ) ) {
- // var_dump( array_diff_key( $curlOptions, $this->curlOptions ) );
- throw new MWException( __METHOD__ . ": to prevent options set in one doRequest() " .
- "call from affecting subsequent doRequest() calls, only options listed " .
- "in \$this->curlOptions may be specified in the \$curlOptions parameter." );
- }
- $curlOptions += $this->curlOptions;
- $curlOptions[CURLOPT_URL] = $url;
-
- curl_setopt_array( $curl, $curlOptions );
- $result = curl_exec( $curl );
- if ( $result === false ) {
- wfDebug( __CLASS__ . ": curl error: " . curl_error( $curl ) . "\n" );
- return false;
- }
- $info = curl_getinfo( $curl );
- $info['body'] = $result;
- return $info;
- }
-}
return false;
}
- $casToken = $this->bag[$key][0];
+ $casToken = serialize( $this->bag[$key][0] );
return $this->bag[$key][0];
}
* @return bool
*/
function cas( $casToken, $key, $value, $exptime = 0 ) {
- if ( $this->get( $key ) === $casToken ) {
+ if ( serialize( $this->get( $key ) ) === $casToken ) {
return $this->set( $key, $value, $exptime );
}
return false;
}
try {
- $result = $this->unserialize( $conn->get( $key ) );
+ $value = $conn->get( $key );
+ $casToken = $value;
+ $result = $this->unserialize( $value );
} catch ( RedisException $e ) {
$result = false;
$this->handleException( $server, $conn, $e );
}
- $casToken = $result;
$this->logRequest( 'get', $key, $server, $result );
return $result;
try {
$conn->watch( $key );
- if ( $this->get( $key ) !== $casToken ) {
+ if ( $this->serialize( $this->get( $key ) ) !== $casToken ) {
$conn->unwatch();
return false;
}
* @return boolean true on successful match
*/
private static function matchAgainstMagicword( $magicword, $value ) {
- if ( strval( $value ) === '' ) {
+ $value = trim( strval( $value ) );
+ if ( $value === '' ) {
return false;
}
$mwObject = MagicWord::get( $magicword );
- return $mwObject->match( $value );
+ return $mwObject->matchStartToEnd( $value );
}
static function formatRaw( $num, $raw ) {
}
/**
- * Returns the requested protection level for the current page
+ * Returns the requested protection level for the current page. This
+ * is an expensive parser function and can't be called too many times
+ * per page, unless the protection levels for the given title have
+ * already been retrieved
*
* @param Parser $parser
* @param string $type
if ( !( $titleObject instanceof Title ) ) {
$titleObject = $parser->mTitle;
}
- $restrictions = $titleObject->getRestrictions( strtolower( $type ) );
- # Title::getRestrictions returns an array, its possible it may have
- # multiple values in the future
- return implode( $restrictions, ',' );
+ if ( $titleObject->areRestrictionsLoaded() || $parser->incrementExpensiveFunctionCount() ) {
+ $restrictions = $titleObject->getRestrictions( strtolower( $type ) );
+ # Title::getRestrictions returns an array, its possible it may have
+ # multiple values in the future
+ return implode( $restrictions, ',' );
+ }
+ return '';
}
/**
// Use title from parser to have correct pageid after edit
if ( $t->equals( $parser->getTitle() ) ) {
$t = $parser->getTitle();
+ return $t->getArticleID();
+ }
+
+ // These can't have ids
+ if ( !$t->canExist() || $t->isExternal() ) {
+ return 0;
+ }
+
+ // Check the link cache, maybe something already looked it up.
+ $linkCache = LinkCache::singleton();
+ $pdbk = $t->getPrefixedDBkey();
+ $id = $linkCache->getGoodLinkID( $pdbk );
+ if ( $id != 0 ) {
+ $parser->mOutput->addLink( $t, $id );
+ return $id;
+ }
+ if ( $linkCache->isBadLink( $pdbk ) ) {
+ $parser->mOutput->addLink( $t, 0 );
+ return $id;
}
- // fetch pageid from cache/database and return the value
- $pageid = $t->getArticleID();
- return $pageid ? $pageid : '';
+
+ // We need to load it from the DB, so mark expensive
+ if ( $parser->incrementExpensiveFunctionCount() ) {
+ $id = $t->getArticleID();
+ $parser->mOutput->addLink( $t, $id );
+ return $id;
+ }
+ return null;
}
/**
/**
* Returns the sources of any cascading protection acting on a specified page.
* Pages will not return their own title unless they transclude themselves.
- * This is an expensive parser function and can't be called too many times per page.
+ * This is an expensive parser function and can't be called too many times per page,
+ * unless cascading protection sources for the page have already been loaded.
*
* @param Parser $parser
* @param string $title
if ( !( $titleObject instanceof Title ) ) {
$titleObject = $parser->mTitle;
}
- $names = array();
- if ( $parser->incrementExpensiveFunctionCount() ) {
+ if ( $titleObject->areCascadeProtectionSourcesLoaded()
+ || $parser->incrementExpensiveFunctionCount()
+ ) {
+ $names = array();
$sources = $titleObject->getCascadeProtectionSources();
foreach ( $sources[0] as $sourceTitle ) {
$names[] = $sourceTitle->getPrefixedText();
}
+ return implode( $names, '|' );
}
-
- return implode( $names, '|' );
+ return '';
}
}
$process = proc_open(
"$wgTidyBin -config $wgTidyConf $wgTidyOpts$opts", $descriptorspec, $pipes );
+ //NOTE: At least on linux, the process will be created even if tidy is not installed.
+ // This means that missing tidy will be treated as a validation failure.
+
if ( is_resource( $process ) ) {
// Theoretically, this style of communication could cause a deadlock
// here. If the stdout buffer fills up, then writes to stdin could
/**
* @var Revision
*/
- var $mRevision = null;
- var $mImage = null;
+ protected $mRevision = null;
+
+ /**
+ * @var File
+ */
+ protected $mImage = null;
/**
* @var Title
*/
- var $mTitle;
+ protected $mTitle;
/**
* @var String
*/
- var $mText;
+ protected $mText;
/**
* Return a new SearchResult and initializes it with a title.
* @return Boolean
*/
function isBrokenTitle() {
- if ( is_null( $this->mTitle ) ) {
- return true;
- }
- return false;
+ return is_null( $this->mTitle );
}
/**
return $this->mTitle;
}
+ /**
+ * Get the file for this page, if one exists
+ * @return File|null
+ */
+ function getFile() {
+ return $this->mImage;
+ }
+
/**
* @return float|null if not supported
*/
--- /dev/null
+<?php
+/**
+ * Factory for handling the special page list and generating SpecialPage objects.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * 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 SpecialPage
+ * @defgroup SpecialPage SpecialPage
+ */
+
+/**
+ * Factory for handling the special page list and generating SpecialPage objects.
+ *
+ * To add a special page in an extension, add to $wgSpecialPages either
+ * an object instance or an array containing the name and constructor
+ * parameters. The latter is preferred for performance reasons.
+ *
+ * The object instantiated must be either an instance of SpecialPage or a
+ * sub-class thereof. It must have an execute() method, which sends the HTML
+ * for the special page to $wgOut. The parent class has an execute() method
+ * which distributes the call to the historical global functions. Additionally,
+ * execute() also checks if the user has the necessary access privileges
+ * and bails out if not.
+ *
+ * To add a core special page, use the similar static list in
+ * SpecialPageFactory::$list. To remove a core static special page at runtime, use
+ * a SpecialPage_initList hook.
+ *
+ * @ingroup SpecialPage
+ * @since 1.17
+ */
+class SpecialPageFactory {
+ /**
+ * List of special page names to the subclass of SpecialPage which handles them.
+ */
+ private static $list = array(
+ // Maintenance Reports
+ 'BrokenRedirects' => 'BrokenRedirectsPage',
+ 'Deadendpages' => 'DeadendpagesPage',
+ 'DoubleRedirects' => 'DoubleRedirectsPage',
+ 'Longpages' => 'LongpagesPage',
+ 'Ancientpages' => 'AncientpagesPage',
+ 'Lonelypages' => 'LonelypagesPage',
+ 'Fewestrevisions' => 'FewestrevisionsPage',
+ 'Withoutinterwiki' => 'WithoutinterwikiPage',
+ 'Protectedpages' => 'SpecialProtectedpages',
+ 'Protectedtitles' => 'SpecialProtectedtitles',
+ 'Shortpages' => 'ShortpagesPage',
+ 'Uncategorizedcategories' => 'UncategorizedcategoriesPage',
+ 'Uncategorizedimages' => 'UncategorizedimagesPage',
+ 'Uncategorizedpages' => 'UncategorizedpagesPage',
+ 'Uncategorizedtemplates' => 'UncategorizedtemplatesPage',
+ 'Unusedcategories' => 'UnusedcategoriesPage',
+ 'Unusedimages' => 'UnusedimagesPage',
+ 'Unusedtemplates' => 'UnusedtemplatesPage',
+ 'Unwatchedpages' => 'UnwatchedpagesPage',
+ 'Wantedcategories' => 'WantedcategoriesPage',
+ 'Wantedfiles' => 'WantedfilesPage',
+ 'Wantedpages' => 'WantedpagesPage',
+ 'Wantedtemplates' => 'WantedtemplatesPage',
+
+ // List of pages
+ 'Allpages' => 'SpecialAllpages',
+ 'Prefixindex' => 'SpecialPrefixindex',
+ 'Categories' => 'SpecialCategories',
+ 'Listredirects' => 'ListredirectsPage',
+ 'PagesWithProp' => 'SpecialPagesWithProp',
+
+ // Login/create account
+ 'Userlogin' => 'LoginForm',
+ 'CreateAccount' => 'SpecialCreateAccount',
+
+ // Users and rights
+ 'Block' => 'SpecialBlock',
+ 'Unblock' => 'SpecialUnblock',
+ 'BlockList' => 'SpecialBlockList',
+ 'ChangePassword' => 'SpecialChangePassword',
+ 'PasswordReset' => 'SpecialPasswordReset',
+ 'DeletedContributions' => 'DeletedContributionsPage',
+ 'Preferences' => 'SpecialPreferences',
+ 'ResetTokens' => 'SpecialResetTokens',
+ 'Contributions' => 'SpecialContributions',
+ 'Listgrouprights' => 'SpecialListGroupRights',
+ 'Listusers' => 'SpecialListUsers',
+ 'Listadmins' => 'SpecialListAdmins',
+ 'Listbots' => 'SpecialListBots',
+ 'Userrights' => 'UserrightsPage',
+ 'EditWatchlist' => 'SpecialEditWatchlist',
+
+ // Recent changes and logs
+ 'Newimages' => 'SpecialNewFiles',
+ 'Log' => 'SpecialLog',
+ 'Watchlist' => 'SpecialWatchlist',
+ 'Newpages' => 'SpecialNewpages',
+ 'Recentchanges' => 'SpecialRecentChanges',
+ 'Recentchangeslinked' => 'SpecialRecentChangesLinked',
+ 'Tags' => 'SpecialTags',
+
+ // Media reports and uploads
+ 'Listfiles' => 'SpecialListFiles',
+ 'Filepath' => 'SpecialFilepath',
+ 'MIMEsearch' => 'MIMEsearchPage',
+ 'FileDuplicateSearch' => 'FileDuplicateSearchPage',
+ 'Upload' => 'SpecialUpload',
+ 'UploadStash' => 'SpecialUploadStash',
+
+ // Data and tools
+ 'Statistics' => 'SpecialStatistics',
+ 'Allmessages' => 'SpecialAllmessages',
+ 'Version' => 'SpecialVersion',
+ 'Lockdb' => 'SpecialLockdb',
+ 'Unlockdb' => 'SpecialUnlockdb',
+
+ // Redirecting special pages
+ 'LinkSearch' => 'LinkSearchPage',
+ 'Randompage' => 'Randompage',
+ 'RandomInCategory' => 'SpecialRandomInCategory',
+ 'Randomredirect' => 'SpecialRandomredirect',
+
+ // High use pages
+ 'Mostlinkedcategories' => 'MostlinkedCategoriesPage',
+ 'Mostimages' => 'MostimagesPage',
+ 'Mostinterwikis' => 'MostinterwikisPage',
+ 'Mostlinked' => 'MostlinkedPage',
+ 'Mostlinkedtemplates' => 'MostlinkedTemplatesPage',
+ 'Mostcategories' => 'MostcategoriesPage',
+ 'Mostrevisions' => 'MostrevisionsPage',
+
+ // Page tools
+ 'ComparePages' => 'SpecialComparePages',
+ 'Export' => 'SpecialExport',
+ 'Import' => 'SpecialImport',
+ 'Undelete' => 'SpecialUndelete',
+ 'Whatlinkshere' => 'SpecialWhatlinkshere',
+ 'MergeHistory' => 'SpecialMergeHistory',
+ 'ExpandTemplates' => 'SpecialExpandTemplates',
+
+ // Other
+ 'Booksources' => 'SpecialBookSources',
+
+ // Unlisted / redirects
+ 'Blankpage' => 'SpecialBlankpage',
+ 'Emailuser' => 'SpecialEmailUser',
+ 'Movepage' => 'MovePageForm',
+ 'Mycontributions' => 'SpecialMycontributions',
+ 'Mypage' => 'SpecialMypage',
+ 'Mytalk' => 'SpecialMytalk',
+ 'Myuploads' => 'SpecialMyuploads',
+ 'AllMyUploads' => 'SpecialAllMyUploads',
+ 'PermanentLink' => 'SpecialPermanentLink',
+ 'Redirect' => 'SpecialRedirect',
+ 'Revisiondelete' => 'SpecialRevisionDelete',
+ 'Specialpages' => 'SpecialSpecialpages',
+ 'Userlogout' => 'SpecialUserlogout',
+ );
+
+ private static $aliases;
+
+ /**
+ * Get the special page list
+ *
+ * @return array
+ */
+ static function getList() {
+ global $wgSpecialPages;
+ global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
+ global $wgEnableEmail, $wgEnableJavaScriptTest;
+ global $wgMiserMode;
+
+ if ( !is_object( self::$list ) ) {
+ wfProfileIn( __METHOD__ );
+
+ if ( !$wgDisableCounters ) {
+ self::$list['Popularpages'] = 'PopularpagesPage';
+ }
+
+ if ( !$wgDisableInternalSearch ) {
+ self::$list['Search'] = 'SpecialSearch';
+ }
+
+ if ( $wgEmailAuthentication ) {
+ self::$list['Confirmemail'] = 'EmailConfirmation';
+ self::$list['Invalidateemail'] = 'EmailInvalidation';
+ }
+
+ if ( $wgEnableEmail ) {
+ self::$list['ChangeEmail'] = 'SpecialChangeEmail';
+ }
+
+ if ( $wgEnableJavaScriptTest ) {
+ self::$list['JavaScriptTest'] = 'SpecialJavaScriptTest';
+ }
+
+ if ( !$wgMiserMode ) {
+ self::$list['Activeusers'] = 'SpecialActiveUsers';
+ }
+
+ // Add extension special pages
+ self::$list = array_merge( self::$list, $wgSpecialPages );
+
+ // Run hooks
+ // This hook can be used to remove undesired built-in special pages
+ wfRunHooks( 'SpecialPage_initList', array( &self::$list ) );
+
+ // Cast to object: func()[$key] doesn't work, but func()->$key does
+ settype( self::$list, 'object' );
+
+ wfProfileOut( __METHOD__ );
+ }
+ return self::$list;
+ }
+
+ /**
+ * Initialise and return the list of special page aliases. Returns an object with
+ * properties which can be accessed $obj->pagename - each property is an array of
+ * aliases; the first in the array is the canonical alias. All registered special
+ * pages are guaranteed to have a property entry, and for that property array to
+ * contain at least one entry (English fallbacks will be added if necessary).
+ * @return Object
+ */
+ static function getAliasList() {
+ if ( !is_object( self::$aliases ) ) {
+ global $wgContLang;
+ $aliases = $wgContLang->getSpecialPageAliases();
+
+ // Objects are passed by reference by default, need to create a copy
+ $missingPages = clone self::getList();
+
+ self::$aliases = array();
+ foreach ( $aliases as $realName => $aliasList ) {
+ foreach ( $aliasList as $alias ) {
+ self::$aliases[$wgContLang->caseFold( $alias )] = $realName;
+ }
+ unset( $missingPages->$realName );
+ }
+ foreach ( $missingPages as $name => $stuff ) {
+ self::$aliases[$wgContLang->caseFold( $name )] = $name;
+ }
+
+ // Cast to object: func()[$key] doesn't work, but func()->$key does
+ self::$aliases = (object)self::$aliases;
+ }
+ return self::$aliases;
+ }
+
+ /**
+ * Given a special page name with a possible subpage, return an array
+ * where the first element is the special page name and the second is the
+ * subpage.
+ *
+ * @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;
+ $bits = explode( '/', $alias, 2 );
+
+ $caseFoldedAlias = $wgContLang->caseFold( $bits[0] );
+ $caseFoldedAlias = str_replace( ' ', '_', $caseFoldedAlias );
+ if ( isset( self::getAliasList()->$caseFoldedAlias ) ) {
+ $name = self::getAliasList()->$caseFoldedAlias;
+ } else {
+ return array( null, null );
+ }
+
+ if ( !isset( $bits[1] ) ) { // bug 2087
+ $par = null;
+ } else {
+ $par = $bits[1];
+ }
+
+ return array( $name, $par );
+ }
+
+ /**
+ * Add a page to a certain display group for Special:SpecialPages
+ *
+ * @param SpecialPage|string $page
+ * @param string $group
+ * @deprecated since 1.21 Override SpecialPage::getGroupName
+ */
+ public static function setGroup( $page, $group ) {
+ wfDeprecated( __METHOD__, '1.21' );
+
+ global $wgSpecialPageGroups;
+ $name = is_object( $page ) ? $page->getName() : $page;
+ $wgSpecialPageGroups[$name] = $group;
+ }
+
+ /**
+ * Get the group that the special page belongs in on Special:SpecialPage
+ *
+ * @param SpecialPage $page
+ * @return string
+ * @deprecated since 1.21 Use SpecialPage::getFinalGroupName
+ */
+ public static function getGroup( &$page ) {
+ wfDeprecated( __METHOD__, '1.21' );
+
+ return $page->getFinalGroupName();
+ }
+
+ /**
+ * 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 bool True if a special page exists with this name
+ */
+ public static function exists( $name ) {
+ list( $title, /*...*/ ) = self::resolveAlias( $name );
+ return property_exists( self::getList(), $title );
+ }
+
+ /**
+ * Find the object with a given name and return it (or NULL)
+ *
+ * @param string $name Special page name, may be localised and/or an alias
+ * @return SpecialPage|null SpecialPage object or null if the page doesn't exist
+ */
+ public static function getPage( $name ) {
+ list( $realName, /*...*/ ) = self::resolveAlias( $name );
+ if ( property_exists( self::getList(), $realName ) ) {
+ $rec = self::getList()->$realName;
+ if ( is_string( $rec ) ) {
+ $className = $rec;
+ return new $className;
+ } elseif ( is_array( $rec ) ) {
+ // @deprecated, officially since 1.18, unofficially since forever
+ wfDebug( "Array syntax for \$wgSpecialPages is deprecated, define a subclass of SpecialPage instead." );
+ $className = array_shift( $rec );
+ self::getList()->$realName = MWFunction::newObj( $className, $rec );
+ }
+ return self::getList()->$realName;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * 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
+ * if not provided
+ * @return array ( string => Specialpage )
+ */
+ public static function getUsablePages( User $user = null ) {
+ $pages = array();
+ if ( $user === null ) {
+ global $wgUser;
+ $user = $wgUser;
+ }
+ foreach ( self::getList() as $name => $rec ) {
+ $page = self::getPage( $name );
+ if ( $page ) { // not null
+ $page->setContext( RequestContext::getMain() );
+ if ( $page->isListed()
+ && ( !$page->isRestricted() || $page->userCanExecute( $user ) )
+ ) {
+ $pages[$name] = $page;
+ }
+ }
+ }
+ return $pages;
+ }
+
+ /**
+ * Return categorised listable special pages for all users
+ *
+ * @return array ( string => Specialpage )
+ */
+ public static function getRegularPages() {
+ $pages = array();
+ foreach ( self::getList() as $name => $rec ) {
+ $page = self::getPage( $name );
+ if ( $page->isListed() && !$page->isRestricted() ) {
+ $pages[$name] = $page;
+ }
+ }
+ return $pages;
+ }
+
+ /**
+ * Return categorised listable special pages which are available
+ * for the current user, but not for everyone
+ *
+ * @return array ( string => Specialpage )
+ */
+ public static function getRestrictedPages() {
+ global $wgUser;
+ $pages = array();
+ foreach ( self::getList() as $name => $rec ) {
+ $page = self::getPage( $name );
+ if (
+ $page->isListed()
+ && $page->isRestricted()
+ && $page->userCanExecute( $wgUser )
+ ) {
+ $pages[$name] = $page;
+ }
+ }
+ return $pages;
+ }
+
+ /**
+ * Execute a special page path.
+ * The path may contain parameters, e.g. Special:Name/Params
+ * Extracts the special page name and call the execute method, passing the parameters
+ *
+ * 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
+ * @param IContextSource $context
+ * @param bool $including Bool output is being captured for use in {{special:whatever}}
+ *
+ * @return bool
+ */
+ public static function executePath( Title &$title, IContextSource &$context, $including = false ) {
+ wfProfileIn( __METHOD__ );
+
+ // @todo FIXME: Redirects broken due to this call
+ $bits = explode( '/', $title->getDBkey(), 2 );
+ $name = $bits[0];
+ if ( !isset( $bits[1] ) ) { // bug 2087
+ $par = null;
+ } else {
+ $par = $bits[1];
+ }
+ $page = self::getPage( $name );
+ // Nonexistent?
+ if ( !$page ) {
+ $context->getOutput()->setArticleRelated( false );
+ $context->getOutput()->setRobotPolicy( 'noindex,nofollow' );
+
+ global $wgSend404Code;
+ if ( $wgSend404Code ) {
+ $context->getOutput()->setStatusCode( 404 );
+ }
+
+ $context->getOutput()->showErrorPage( 'nosuchspecialpage', 'nospecialpagetext' );
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ // Page exists, set the context
+ $page->setContext( $context );
+
+ if ( !$including ) {
+ // Redirect to canonical alias for GET commands
+ // Not for POST, we'd lose the post data, so it's best to just distribute
+ // the request. Such POST requests are possible for old extensions that
+ // generate self-links without being aware that their default name has
+ // changed.
+ if ( $name != $page->getLocalName() && !$context->getRequest()->wasPosted() ) {
+ $query = $context->getRequest()->getQueryValues();
+ unset( $query['title'] );
+ $title = $page->getPageTitle( $par );
+ $url = $title->getFullURL( $query );
+ $context->getOutput()->redirect( $url );
+ wfProfileOut( __METHOD__ );
+ return $title;
+ } else {
+ $context->setTitle( $page->getPageTitle( $par ) );
+ }
+
+ } elseif ( !$page->isIncludable() ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ $page->including( $including );
+
+ // Execute special page
+ $profName = 'Special:' . $page->getName();
+ wfProfileIn( $profName );
+ $page->run( $par );
+ wfProfileOut( $profName );
+ wfProfileOut( __METHOD__ );
+ return true;
+ }
+
+ /**
+ * Just like executePath() but will override global variables and execute
+ * the page in "inclusion" mode. Returns true if the execution was
+ * successful or false if there was no such special page, or a title object
+ * if it was a redirect.
+ *
+ * Also saves the current $wgTitle, $wgOut, $wgRequest, $wgUser and $wgLang
+ * 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 IContextSource $context
+ * @return string HTML fragment
+ */
+ static function capturePath( Title $title, IContextSource $context ) {
+ global $wgOut, $wgTitle, $wgRequest, $wgUser, $wgLang;
+
+ // Save current globals
+ $oldTitle = $wgTitle;
+ $oldOut = $wgOut;
+ $oldRequest = $wgRequest;
+ $oldUser = $wgUser;
+ $oldLang = $wgLang;
+
+ // Set the globals to the current context
+ $wgTitle = $title;
+ $wgOut = $context->getOutput();
+ $wgRequest = $context->getRequest();
+ $wgUser = $context->getUser();
+ $wgLang = $context->getLanguage();
+
+ // The useful part
+ $ret = self::executePath( $title, $context, true );
+
+ // And restore the old globals
+ $wgTitle = $oldTitle;
+ $wgOut = $oldOut;
+ $wgRequest = $oldRequest;
+ $wgUser = $oldUser;
+ $wgLang = $oldLang;
+
+ return $ret;
+ }
+
+ /**
+ * Get the local name for a specified canonical name
+ *
+ * @param string $name
+ * @param string|bool $subpage
+ * @return string
+ */
+ static function getLocalNameFor( $name, $subpage = false ) {
+ global $wgContLang;
+ $aliases = $wgContLang->getSpecialPageAliases();
+
+ if ( isset( $aliases[$name][0] ) ) {
+ $name = $aliases[$name][0];
+ } else {
+ // Try harder in case someone misspelled the correct casing
+ $found = false;
+ foreach ( $aliases as $n => $values ) {
+ if ( strcasecmp( $name, $n ) === 0 ) {
+ wfWarn( "Found alias defined for $n when searching for " .
+ "special page aliases for $name. Case mismatch?" );
+ $name = $values[0];
+ $found = true;
+ break;
+ }
+ }
+ if ( !$found ) {
+ wfWarn( "Did not find alias for special page '$name'. " .
+ "Perhaps no aliases are defined for it?" );
+ }
+ }
+ if ( $subpage !== false && !is_null( $subpage ) ) {
+ $name = "$name/$subpage";
+ }
+ return $wgContLang->ucfirst( $name );
+ }
+
+ /**
+ * Get a title for a given alias
+ *
+ * @param string $alias
+ * @return Title|null Title or null if there is no such alias
+ */
+ static function getTitleForAlias( $alias ) {
+ $name = self::resolveAlias( $alias );
+ if ( $name ) {
+ return SpecialPage::getTitleFor( $name );
+ } else {
+ return null;
+ }
+ }
+}
* Add page-specific modules.
*/
protected function addModules() {
- $this->getOutput()->addModules( array(
- 'mediawiki.special.recentchanges',
- ) );
+ $out = $this->getOutput();
+ $out->addModules( 'mediawiki.special.recentchanges' );
+ // This modules include styles and behavior for the legend box, load it unconditionally
+ $out->addModuleStyles( 'mediawiki.special.changeslist' );
+ $out->addModules( 'mediawiki.special.changeslist.js' );
}
protected function getGroupName() {
// Include a thumbnail for media files...
if ( $t->getNamespace() == NS_FILE ) {
- $img = wfFindFile( $t );
+ $img = $result->getFile();
+ $img = $img ?: wfFindFile( $t );
if ( $img ) {
$thumb = $img->transform( array( 'width' => 120, 'height' => 120 ) );
if ( $thumb ) {
$user = $this->getUser();
$output = $this->getOutput();
- $output->addModuleStyles( 'mediawiki.special.changeslist' );
- $output->addModules( 'mediawiki.special.changeslist.js' );
# Anons don't get a watchlist
$this->requireLogin( 'watchlistanontext' );
// Check permissions
$this->checkPermissions();
- // Add feed links
- $wlToken = $user->getTokenFromOption( 'watchlisttoken' );
- if ( $wlToken ) {
- $this->addFeedLinks( array(
- 'action' => 'feedwatchlist',
- 'allrev' => 1,
- 'wlowner' => $user->getName(),
- 'wltoken' => $wlToken,
- ) );
- }
-
- $opts = $this->getOptions();
- $this->setHeaders();
- $this->outputHeader();
-
- $output->addSubtitle(
- $this->msg( 'watchlistfor2', $user->getName() )
- ->rawParams( SpecialEditWatchlist::buildTools( null ) )
- );
-
$request = $this->getRequest();
+ $opts = $this->getOptions();
$mode = SpecialEditWatchlist::getMode( $request, $par );
if ( $mode !== false ) {
return;
}
+ if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' ) &&
+ $request->wasPosted() )
+ {
+ $user->clearAllNotifications();
+ $output->redirect( $this->getPageTitle()->getFullURL( $opts->getChangedValues() ) );
+ return;
+ }
+
+ $this->setHeaders();
+ $this->outputHeader();
+ $this->addModules();
+
$dbr = wfGetDB( DB_SLAVE, 'watchlist' );
- $nitems = $this->countItems( $dbr );
- if ( $nitems == 0 ) {
+ $this->numItems = $this->countItems( $dbr ); // TODO kill me
+ if ( $this->numItems == 0 ) {
$output->addWikiMsg( 'nowatchlist' );
return;
}
- # Get namespace value, if supplied, and prepare a WHERE fragment
- $nameSpace = $opts['namespace'];
- $invert = $opts['invert'];
- $associated = $opts['associated'];
+ // Fetch results, prepare a batch link existence check query
+ $conds = $this->buildMainQueryConds( $opts );
+ $rows = $this->doMainQuery( $conds, $opts );
+ $this->numRows = $rows->numRows(); // TODO kill me
+ if ( $rows === false ) {
+ $this->doHeader( $opts );
- if ( $nameSpace !== '' ) {
- $eq_op = $invert ? '!=' : '=';
- $bool_op = $invert ? 'AND' : 'OR';
- if ( !$associated ) {
- $nameSpaceClause = "rc_namespace $eq_op $nameSpace";
- } else {
- $associatedNS = MWNamespace::getAssociated( $nameSpace );
- $nameSpaceClause =
- "rc_namespace $eq_op $nameSpace " .
- $bool_op .
- " rc_namespace $eq_op $associatedNS";
+ return;
+ }
+
+ $feedFormat = $this->getRequest()->getVal( 'feed' );
+ if ( !$feedFormat ) {
+ $batch = new LinkBatch;
+ foreach ( $rows as $row ) {
+ $batch->add( NS_USER, $row->rc_user_text );
+ $batch->add( NS_USER_TALK, $row->rc_user_text );
+ $batch->add( $row->rc_namespace, $row->rc_title );
}
+ $batch->execute();
+ }
+ if ( $feedFormat ) {
+ list( $changesFeed, $formatter ) = $this->getFeedObject( $feedFormat );
+ /** @var ChangesFeed $changesFeed */
+ $changesFeed->execute( $formatter, $rows, $lastmod, $opts );
} else {
- $nameSpaceClause = '';
+ $this->webOutput( $rows, $opts );
}
- // Dump everything here
- $nondefaults = $opts->getChangedValues();
-
- if ( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' )
- && $request->wasPosted()
- ) {
- $user->clearAllNotifications();
- $output->redirect( $this->getPageTitle()->getFullURL( $nondefaults ) );
- return;
- }
+ $rows->free();
+ }
- # Possible where conditions
+ /**
+ * Return an array of conditions depending of options set in $opts
+ *
+ * @param FormOptions $opts
+ * @return array
+ */
+ public function buildMainQueryConds( FormOptions $opts ) {
+ $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
$conds = array();
+ $user = $this->getUser();
+ // Calculate cutoff
if ( $opts['days'] > 0 ) {
$conds[] = 'rc_timestamp > ' . $dbr->addQuotes( $dbr->timestamp( time() - intval( $opts['days'] * 86400 ) ) );
}
if ( $user->useRCPatrol() && $opts['hidepatrolled'] ) {
$conds[] = 'rc_patrolled != 1';
}
- if ( $nameSpaceClause ) {
- $conds[] = $nameSpaceClause;
+
+ # Namespace filtering
+ if ( $opts['namespace'] !== '' ) {
+ $selectedNS = $dbr->addQuotes( $opts['namespace'] );
+ $operator = $opts['invert'] ? '!=' : '=';
+ $boolean = $opts['invert'] ? 'AND' : 'OR';
+
+ # namespace association (bug 2429)
+ if ( !$opts['associated'] ) {
+ $condition = "rc_namespace $operator $selectedNS";
+ } else {
+ # Also add the associated namespace
+ $associatedNS = $dbr->addQuotes(
+ MWNamespace::getAssociated( $opts['namespace'] )
+ );
+ $condition = "(rc_namespace $operator $selectedNS "
+ . $boolean
+ . " rc_namespace $operator $associatedNS)";
+ }
+
+ $conds[] = $condition;
}
+ return $conds;
+ }
+
+ /**
+ * Process the query
+ *
+ * @param array $conds
+ * @param FormOptions $opts
+ * @return bool|ResultWrapper Result or false (for Recentchangeslinked only)
+ */
+ public function doMainQuery( $conds, $opts ) {
+ global $wgShowUpdatedMarker;
+
+ $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
+ $user = $this->getUser();
# Toggle watchlist content (all recent edits or just the latest)
if ( $opts['extended'] ) {
$limitWatchlist = $user->getIntOption( 'wllimit' );
$usePage = true;
}
+ $tables = array( 'recentchanges', 'watchlist' );
+ $fields = RecentChange::selectFields();
+ $join_conds = array(
+ 'watchlist' => array(
+ 'INNER JOIN',
+ array(
+ 'wl_user' => $user->getId(),
+ 'wl_namespace=rc_namespace',
+ 'wl_title=rc_title'
+ ),
+ ),
+ );
+ $options = array( 'ORDER BY' => 'rc_timestamp DESC' );
+ if ( $wgShowUpdatedMarker ) {
+ $fields[] = 'wl_notificationtimestamp';
+ }
+ if ( $limitWatchlist ) {
+ $options['LIMIT'] = $limitWatchlist;
+ }
+
+ $rollbacker = $user->isAllowed( 'rollback' );
+ if ( $usePage || $rollbacker ) {
+ $tables[] = 'page';
+ $join_conds['page'] = array( 'LEFT JOIN', 'rc_cur_id=page_id' );
+ if ( $rollbacker ) {
+ $fields[] = 'page_latest';
+ }
+ }
+
+ // Log entries with DELETED_ACTION must not show up unless the user has
+ // the necessary rights.
+ if ( !$user->isAllowed( 'deletedhistory' ) ) {
+ $bitmask = LogPage::DELETED_ACTION;
+ } elseif ( !$user->isAllowed( 'suppressrevision' ) ) {
+ $bitmask = LogPage::DELETED_ACTION | LogPage::DELETED_RESTRICTED;
+ } else {
+ $bitmask = 0;
+ }
+ if ( $bitmask ) {
+ $conds[] = $dbr->makeList( array(
+ 'rc_type != ' . RC_LOG,
+ $dbr->bitAnd( 'rc_deleted', $bitmask ) . " != $bitmask",
+ ), LIST_OR );
+ }
+
+
+ ChangeTags::modifyDisplayQuery( $tables, $fields, $conds, $join_conds, $options, '' );
+ wfRunHooks( 'SpecialWatchlistQuery', array( &$conds, &$tables, &$join_conds, &$fields, $opts ) );
+
+ return $dbr->select( $tables, $fields, $conds, __METHOD__, $options, $join_conds );
+ }
+
+ /**
+ * Send output to the OutputPage object, only called if not used feeds
+ *
+ * @param array $rows Database rows
+ * @param FormOptions $opts
+ */
+ public function webOutput( $rows, $opts ) {
+ global $wgShowUpdatedMarker, $wgRCShowWatchingUsers;
+
+ $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
+ $user = $this->getUser();
+
+ $dbr->dataSeek( $rows, 0 );
+
+ $list = ChangesList::newFromContext( $this->getContext() );
+ $list->setWatchlistDivs();
+
+ $s = $list->beginRecentChangesList();
+ $counter = 1;
+ foreach ( $rows as $obj ) {
+ # Make RC entry
+ $rc = RecentChange::newFromRow( $obj );
+ $rc->counter = $counter++;
+
+ if ( $wgShowUpdatedMarker ) {
+ $updated = $obj->wl_notificationtimestamp;
+ } else {
+ $updated = false;
+ }
+
+ if ( $wgRCShowWatchingUsers && $user->getOption( 'shownumberswatching' ) ) {
+ $rc->numberofWatchingusers = $dbr->selectField( 'watchlist',
+ 'COUNT(*)',
+ array(
+ 'wl_namespace' => $obj->rc_namespace,
+ 'wl_title' => $obj->rc_title,
+ ),
+ __METHOD__ );
+ } else {
+ $rc->numberofWatchingusers = 0;
+ }
+
+ $changeLine = $list->recentChangesLine( $rc, $updated, $counter );
+ if ( $changeLine !== false ) {
+ $s .= $changeLine;
+ }
+ }
+ $s .= $list->endRecentChangesList();
+
+ // Print things out
+
+ $output = $this->getOutput();
+
+ $output->addSubtitle(
+ $this->msg( 'watchlistfor2', $user->getName() )
+ ->rawParams( SpecialEditWatchlist::buildTools( null ) )
+ );
+
+ // Output options box
+ $this->doHeader( $opts );
+
+ // Add feed links
+ $wlToken = $user->getTokenFromOption( 'watchlisttoken' );
+ if ( $wlToken ) {
+ $this->addFeedLinks( array(
+ 'action' => 'feedwatchlist',
+ 'allrev' => 1,
+ 'wlowner' => $user->getName(),
+ 'wltoken' => $wlToken,
+ ) );
+ }
+
# Show a message about slave lag, if applicable
$lag = wfGetLB()->safeGetLag( $dbr );
if ( $lag > 0 ) {
$output->showLagWarning( $lag );
}
- # Create output
- $form = '';
+ if ( $rows->numRows() == 0 ) {
+ $output->wrapWikiMsg(
+ "<div class='mw-changeslist-empty'>\n$1\n</div>", 'recentchanges-noresult'
+ );
+ } else {
+ $output->addHTML( $s );
+ }
+ }
+
+ function setTopText( FormOptions $opts ) {
+ global $wgEnotifWatchlist, $wgShowUpdatedMarker;
+
+ $nondefaults = $opts->getChangedValues();
+ $form = "";
+ $user = $this->getUser();
# Show watchlist header
$form .= "<p>";
- $form .= $this->msg( 'watchlist-details' )->numParams( $nitems )->parse() . "\n";
+ $form .= $this->msg( 'watchlist-details' )->numParams( $this->numItems )->parse() . "\n";
if ( $wgEnotifWatchlist && $user->getOption( 'enotifwatchlistpages' ) ) {
$form .= $this->msg( 'wlheader-enotif' )->parse() . "\n";
}
$form .= SpecialRecentChanges::makeLegend( $this->getContext() );
- $tables = array( 'recentchanges', 'watchlist' );
- $fields = RecentChange::selectFields();
- $join_conds = array(
- 'watchlist' => array(
- 'INNER JOIN',
- array(
- 'wl_user' => $user->getId(),
- 'wl_namespace=rc_namespace',
- 'wl_title=rc_title'
- ),
- ),
- );
- $options = array( 'ORDER BY' => 'rc_timestamp DESC' );
- if ( $wgShowUpdatedMarker ) {
- $fields[] = 'wl_notificationtimestamp';
- }
- if ( $limitWatchlist ) {
- $options['LIMIT'] = $limitWatchlist;
- }
-
- $rollbacker = $user->isAllowed( 'rollback' );
- if ( $usePage || $rollbacker ) {
- $tables[] = 'page';
- $join_conds['page'] = array( 'LEFT JOIN', 'rc_cur_id=page_id' );
- if ( $rollbacker ) {
- $fields[] = 'page_latest';
- }
- }
+ $this->getOutput()->addHTML( $form );
+ }
- ChangeTags::modifyDisplayQuery( $tables, $fields, $conds, $join_conds, $options, '' );
- wfRunHooks( 'SpecialWatchlistQuery', array( &$conds, &$tables, &$join_conds, &$fields, $opts ) );
+ /**
+ * Return the text to be displayed above the changes
+ *
+ * @param FormOptions $opts
+ * @return string XHTML
+ */
+ public function doHeader( $opts ) {
+ global $wgScript;
- $res = $dbr->select( $tables, $fields, $conds, __METHOD__, $options, $join_conds );
- $numRows = $res->numRows();
+ $user = $this->getUser();
- /* Start bottom header */
+ $this->setTopText( $opts );
$lang = $this->getLanguage();
$wlInfo = '';
if ( $opts['days'] > 0 ) {
$timestamp = wfTimestampNow();
- $wlInfo = $this->msg( 'wlnote' )->numParams( $numRows, round( $opts['days'] * 24 ) )->params(
+ $wlInfo = $this->msg( 'wlnote' )->numParams( $this->numRows, round( $opts['days'] * 24 ) )->params(
$lang->userDate( $timestamp, $user ), $lang->userTime( $timestamp, $user ) )->parse() . "<br />\n";
}
+ $nondefaults = $opts->getChangedValues();
$cutofflinks = $this->cutoffLinks( $opts['days'], $nondefaults ) . "<br />\n";
# Spit out some control panel links
unset( $hiddenFields['invert'] );
unset( $hiddenFields['associated'] );
+ # Create output
+ $form = '';
+
# Namespace filter and put the whole form together.
$form .= $wlInfo;
$form .= $cutofflinks;
$form .= "<hr />\n<p>";
$form .= Html::namespaceSelector(
array(
- 'selected' => $nameSpace,
+ 'selected' => $opts['namespace'],
'all' => '',
'label' => $this->msg( 'namespace' )->text()
), array(
$this->msg( 'invert' )->text(),
'invert',
'nsinvert',
- $invert,
+ $opts['invert'],
array( 'title' => $this->msg( 'tooltip-invert' )->text() )
) . ' ';
$form .= Xml::checkLabel(
$this->msg( 'namespace_association' )->text(),
'associated',
- 'associated',
- $associated,
+ 'nsassociated',
+ $opts['associated'],
array( 'title' => $this->msg( 'tooltip-namespace_association' )->text() )
) . ' ';
$form .= Xml::submitButton( $this->msg( 'allpagessubmit' )->text() ) . "</p>\n";
}
$form .= Xml::closeElement( 'fieldset' ) . "\n";
$form .= Xml::closeElement( 'form' ) . "\n";
- $output->addHTML( $form );
-
- # If there's nothing to show, stop here
- if ( $numRows == 0 ) {
- $output->wrapWikiMsg(
- "<div class='mw-changeslist-empty'>\n$1\n</div>", 'recentchanges-noresult'
- );
- return;
- }
-
- /* End bottom header */
-
- /* Do link batch query */
- $linkBatch = new LinkBatch;
- foreach ( $res as $row ) {
- $userNameUnderscored = str_replace( ' ', '_', $row->rc_user_text );
- if ( $row->rc_user != 0 ) {
- $linkBatch->add( NS_USER, $userNameUnderscored );
- }
- $linkBatch->add( NS_USER_TALK, $userNameUnderscored );
-
- $linkBatch->add( $row->rc_namespace, $row->rc_title );
- }
- $linkBatch->execute();
- $dbr->dataSeek( $res, 0 );
-
- $list = ChangesList::newFromContext( $this->getContext() );
- $list->setWatchlistDivs();
-
- $s = $list->beginRecentChangesList();
- $counter = 1;
- foreach ( $res as $obj ) {
- # Make RC entry
- $rc = RecentChange::newFromRow( $obj );
- $rc->counter = $counter++;
-
- if ( $wgShowUpdatedMarker ) {
- $updated = $obj->wl_notificationtimestamp;
- } else {
- $updated = false;
- }
-
- if ( $wgRCShowWatchingUsers && $user->getOption( 'shownumberswatching' ) ) {
- $rc->numberofWatchingusers = $dbr->selectField( 'watchlist',
- 'COUNT(*)',
- array(
- 'wl_namespace' => $obj->rc_namespace,
- 'wl_title' => $obj->rc_title,
- ),
- __METHOD__ );
- } else {
- $rc->numberofWatchingusers = 0;
- }
-
- $changeLine = $list->recentChangesLine( $rc, $updated, $counter );
- if ( $changeLine !== false ) {
- $s .= $changeLine;
- }
- }
- $s .= $list->endRecentChangesList();
+ $this->getOutput()->addHTML( $form );
- $output->addHTML( $s );
+ $this->setBottomText( $opts );
}
protected function showHideLink( $options, $message, $name, $value ) {
*/
protected function countItems( $dbr ) {
# Fetch the raw count
- $res = $dbr->select( 'watchlist', array( 'count' => 'COUNT(*)' ),
+ $rows = $dbr->select( 'watchlist', array( 'count' => 'COUNT(*)' ),
array( 'wl_user' => $this->getUser()->getId() ), __METHOD__ );
- $row = $dbr->fetchObject( $res );
+ $row = $dbr->fetchObject( $rows );
$count = $row->count;
return floor( $count / 2 );
return array( 'uploadscripted' );
}
if ( $this->mFinalExtension == 'svg' || $mime == 'image/svg+xml' ) {
- if ( $this->detectScriptInSvg( $this->mTempPath ) ) {
+ $svgStatus = $this->detectScriptInSvg( $this->mTempPath );
+ if ( $svgStatus !== false ) {
wfProfileOut( __METHOD__ );
- return array( 'uploadscripted' );
+ return $svgStatus;
}
}
}
/**
* @param $filename string
- * @return bool
+ * @return mixed false of the file is verified (does not contain scripts), array otherwise.
*/
protected function detectScriptInSvg( $filename ) {
- $check = new XmlTypeCheck( $filename, array( $this, 'checkSvgScriptCallback' ) );
- return $check->filterMatch;
+ $check = new XmlTypeCheck(
+ $filename,
+ array( $this, 'checkSvgScriptCallback' ),
+ true,
+ array( 'processing_instruction_handler' => 'UploadBase::checkSvgPICallback' )
+ );
+ if ( $check->wellFormed !== true ) {
+ // Invalid xml (bug 58553)
+ return array( 'uploadinvalidxml' );
+ } elseif ( $check->filterMatch ) {
+ return array( 'uploadscripted' );
+ }
+ return false;
+ }
+
+ /**
+ * Callback to filter SVG Processing Instructions.
+ * @param $target string processing instruction name
+ * @param $data string processing instruction attribute and value
+ * @return bool (true if the filter identified something bad)
+ */
+ public static function checkSvgPICallback( $target, $data ) {
+ // Don't allow external stylesheets (bug 57550)
+ if ( preg_match( '/xml-stylesheet/i', $target) ) {
+ return true;
+ }
+ return false;
}
/**
if ( self::isIPv6( $ip ) ) {
$n = self::toUnsigned6( $ip );
} else {
+ // Bug 60035: an IP with leading 0's fails in ip2long sometimes (e.g. *.08)
+ $ip = preg_replace( '/(?<=\.)0+(?=[1-9])/', '', $ip );
$n = ip2long( $ip );
if ( $n < 0 ) {
$n += pow( 2, 32 );
* @author Hakeem
* @author Histolo2
* @author Houcinee1
+ * @author Ibrahim.ID
* @author Jak
* @author Khaledhosny
* @author Lord Anubis
* @author Zack wadghiri
* @author Zanatos
* @author أحمد
+ * @author الهميان
* @author ترجمان05
* @author خالد حسني
* @author روخو
'content-not-allowed-here' => '"$1" المحتوى غير مسموح على صفحة [[$2]]',
'editwarning-warning' => 'قد تتسبب مغادرة هذه الصفحة بخسارتك لأي تغييرات أجريتها.
يمكنك تعطيل هذا التحذير إذا كنت والجًا في قسم "التحرير" في تفضيلاتك.',
+'editpage-notsupportedcontentformat-title' => 'تنسيق المحتوى غير مدعوم',
+'editpage-notsupportedcontentformat-text' => 'تنسيق المحتوى $1 غير مدعوم بواسطة نموذج المحتوى $2.',
# Content models
'content-model-wikitext' => 'نص ويكي',
'cantcreateaccount-text' => "إنشاء الحسابات من عنوان الأيبي هذا ('''$1''') تم منعه بواسطة [[User:$3|$3]].
السبب المعطى بواسطة $3 هو ''$2''",
+'cantcreateaccount-range-text' => "إنشاء الحسابات من عناوين الآيبي في النطاق '''$1'''، التي تحتوي على الآيبي الخاص بك ('''$4''')، قد حظرها [[مستخدم:$3|$3]].
+
+سبب الحظر الذي قاله $3 هو ''$2''",
# History pages
'viewpagelogs' => 'اعرض سجلات هذه الصفحة',
'right-reupload-shared' => 'الرفع على الملفات في مستودع الملفات المشترك محليا',
'right-upload_by_url' => 'رفع ملف من عنوان مسار',
'right-purge' => 'تحديث كاش الموقع لصفحة بدون تأكيد',
-'right-autoconfirmed' => 'تعدÙ\8aÙ\84 اÙ\84صÙ\81Øات Ù\86صÙ\81 اÙ\84Ù\85ØÙ\85Ù\8aØ©',
+'right-autoconfirmed' => 'غÙ\8aر Ù\85تأثر بØدÙ\88د اÙ\84Ù\85عدÙ\84',
'right-bot' => 'تعامل كعملية أوتوماتيكية',
'right-nominornewtalk' => 'عدم جعل التعديلات الطفيفة لصفحات النقاش تظهر برواز الرسائل الجديدة',
'right-apihighlimits' => 'استخدام حدود أعلى في استعلامات API',
'right-editmyusercss' => 'تعديل ملفات CSS للمستخدم نفسه',
'right-editmyuserjs' => 'تعديل ملفات جافاسكربت للمستخدم نفسه',
'right-viewmywatchlist' => 'عرض قائمة مراقبتك',
+'right-editmywatchlist' => 'حرر قائمة مراقبتك. لاحظ أن بعض الإجراءات لا تزال تضيف الصفحات حتى بدون هذا الحق.',
'right-viewmyprivateinfo' => 'إستعرض بياناتك الشخصية (مثل البريد الإلكتروني والإسم الحقيقي)',
'right-editmyprivateinfo' => 'حرر بياناتك الشخصية (مثل البريد الإلكتروني والإسم الحقيقي)',
'right-editmyoptions' => 'تعديل تفضيلاتك',
'rclistfrom' => 'أظهر التغييرات بدءا من $1',
'rcshowhideminor' => '$1 التعديلات الطفيفة',
'rcshowhidebots' => '$1 البوتات',
-'rcshowhideliu' => '$1 المستخدمين المسجلين',
+'rcshowhideliu' => '$1 {{GENDER:$1|مستخدمين مسجلين|مستخدمات مسجلات|مستخدمون مسجلون}}',
'rcshowhideanons' => '$1 المستخدمين المجهولين',
'rcshowhidepatr' => '$1 التعديلات المراجعة',
'rcshowhidemine' => '$1 تعديلاتي',
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'هذا الملف مكرر {{PLURAL:$1|للملف|للملفات}} التالية:',
'file-deleted-duplicate' => 'ملف مطابق لهذه الملف ([[:$1]]) تم حذفه من قبل. ينبغي أن تتحقق من تاريخ الحذف لهذا الملف قبل المتابعة بإعادة رفعه.',
+'file-deleted-duplicate-notitle' => 'سابقا تم حذف ملف مطابق لهذا الملف، وقد تم منع العنوان.
+ينبغي أن تسأل شخص ما لديه القدرة على عرض بيانات الملف الممنوع لاستعراض الوضع قبل الشروع في إعادة تحميله.',
'uploadwarning' => 'تحذير الرفع',
'uploadwarning-text' => 'من فضلك عدل وصف الملف أدناه وحاول مرة أخرى.',
'savefile' => 'احفظ الملف',
'pageswithprop-text' => 'تسرد هذه الصفحة الصفحات التي تستخدم خاصية صفحة معينة.',
'pageswithprop-prop' => 'اسم الخاصية:',
'pageswithprop-submit' => 'اذهب',
+'pageswithprop-prophidden-long' => 'قيمة خاصية النص الطويل المخفية ($1)',
+'pageswithprop-prophidden-binary' => 'قيمة الخاصية الثنائية المخفية ($1)',
'doubleredirects' => 'تحويلات مزدوجة',
'doubleredirectstext' => 'هذه الصفحة تعرض الصفحات التي تحول إلى صفحات تحويل أخرى.
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikis}}',
'nlinks' => '{{PLURAL:$1|لا وصلات|وصلة واحدة|وصلتان|$1 وصلات|$1 وصلة}}',
'nmembers' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوا|$1 عضو}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|عضو|أعضاء}}',
'nrevisions' => '{{PLURAL:$1|لا مراجعات|مراجعة واحدة|مراجعتان|$1 مراجعات|$1 مراجعة}}',
'nviews' => '{{PLURAL:$1|مشاهدة واحدة|مشاهدتان|$1 مشاهدات|$1 مشاهدة}}',
'nimagelinks' => 'مستخدم في {{PLURAL:$1||صفحة واحدة|صفحتين|$1 صفحات|$1 صفحة}}',
'protectedpages' => 'صفحات محمية',
'protectedpages-indef' => 'عمليات الحماية غير المحددة فقط',
'protectedpages-cascade' => 'الحماية المضمنة فقط',
+'protectedpages-noredirect' => 'أخفِ التحويلات',
'protectedpagesempty' => 'لا توجد صفحات محمية حاليا بهذه المحددات.',
'protectedtitles' => 'عناوين محمية',
'protectedtitlesempty' => 'لا توجد عناوين محمية حاليا بهذه المحددات.',
'listgrouprights' => 'صلاحيات مجموعات المستخدمين',
'listgrouprights-summary' => 'التالي قائمة بمجموعات المستخدمين المعرفة في هذا الويكي، بصلاحياتهم المصاحبة.
ربما تكون هناك [[{{MediaWiki:Listgrouprights-helppage}}|معلومات إضافية]] حول الصلاحيات المنفردة.',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">صلاحية ممنوحة</span>
+'listgrouprights-key' => 'عنوان:
+* <span class="listgrouprights-granted">صلاحية ممنوحة</span>
* <span class="listgrouprights-revoked">صلاحية مسحوبة</span>',
'listgrouprights-group' => 'المجموعة',
'listgrouprights-rights' => 'الصلاحيات',
'deleteotherreason' => 'سبب آخر/إضافي:',
'deletereasonotherlist' => 'سبب آخر',
'deletereason-dropdown' => '*أسباب الحذف الشائعة
-** طلب المؤلف
+** سخام
+** تخريب
** خرق لحقوق التأليف والنشر
-** تخريب',
+** طلب المؤلف
+** تحويلة مكسورة',
'delete-edit-reasonlist' => 'عدل أسباب الحذف',
'delete-toobig' => 'لهذه الصفحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.
قُيّد محذف مثل هذه الصفحات لمنع الاضطراب المفاجئة في {{SITENAME}}.',
'delete-warning-toobig' => 'لهذه الصفحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.
قد يؤدي حذفها إلى اضطراب عمليات قاعدة البيانات في {{SITENAME}}؛
استمر مع الحذر.',
+'deleting-backlinks-warning' => "'''تحذير:''' ترتبط صفحات أخرى بالصفحة التي أنت على وشك حذفها.",
# Rollback
'rollback' => 'استرجاع التعديلات',
أنظر [[Special:BlockList|قائمة منع الآيبي]] لمراجعة حالات المنع.',
'ipb-blockingself' => 'أنت على وشك منع نفسك! أمتأكد من رغبتك في القيام بذلك؟',
'ipb-confirmhideuser' => 'أنت على وشك منع مستخدم مع تفعيل خيار "أخف المستخدم". سوف يخفي هذا الخيار اسم المستخدم من جميل القوائم ومدخلات السجلات. أمتأكد من رغبتك في القيام بذلك؟',
+'ipb-confirmaction' => 'إن كنت متأكدًا أنك تريد القيام بذلك حقًا، فالرجاء التحقق من حقل "{{int:ipb-confirm}}" في الأسفل.',
'ipb-edit-dropdown' => 'عدل أسباب المنع',
'ipb-unblock-addr' => 'رفع منع $1',
'ipb-unblock' => 'رفع المنع عن مستخدم أو عنوان أيبي',
'pageinfo-length' => 'حجم الصفحة (بالبايت)',
'pageinfo-article-id' => 'معرف الصفحة (ID)',
'pageinfo-language' => 'لغة محتوى الصفحة',
+'pageinfo-content-model' => 'نموذج محتوى الصفحة',
'pageinfo-robot-policy' => 'فهرسة الروبوتات',
'pageinfo-robot-index' => 'مسموحة',
'pageinfo-robot-noindex' => 'غير مسموحة',
'imgmultigoto' => 'اذهب إلى صفحة $1',
# Language selector for translatable SVGs
+'img-lang-default' => '(اللغة الافتراضية)',
'img-lang-go' => 'اذهب',
# Table pager
'version-hook-name' => 'اسم الخطاف',
'version-hook-subscribedby' => 'يستخدم بواسطة',
'version-version' => '(نسخة $1)',
-'version-svn-revision' => '(r$2)',
+'version-svn-revision' => 'ن$1',
'version-license' => 'الرخصة',
'version-poweredby-credits' => "تدار هذه الويكي بواسطة '''[https://www.mediawiki.org/ ميدياويكي]'''، حقوق النشر © 2001-$1 $2.",
'version-poweredby-others' => 'آخرون',
'version-hook-subscribedby' => 'Abunə olan',
'version-version' => '(Versiya $1)',
'version-license' => 'Lisenziya',
+'version-ext-license' => 'Lisenziya',
+'version-ext-colheader-version' => 'Versiya',
+'version-ext-colheader-license' => 'Lisenziya',
+'version-ext-colheader-credits' => 'Müəlliflər',
'version-poweredby-credits' => "Bu wiki '''[https://www.mediawiki.org/ MediaWiki]''' proqramı istifadə edilərək yaradılmışdır, müəlliflik © 2001-$1 $2.",
'version-poweredby-others' => 'digərləri',
'version-software-product' => 'Məhsul',
'version-hook-name' => 'Ngaran kan pangawil',
'version-hook-subscribedby' => 'Pinaghaguhot ni',
'version-version' => '(Bersyon na $1)',
-'version-license' => 'Lisensiya',
+'version-license' => 'Lisensiya kan MediaWiki',
+'version-ext-license' => 'Lisensiya',
+'version-ext-colheader-name' => 'Ekstensyon',
+'version-ext-colheader-version' => 'Bersyon',
+'version-ext-colheader-license' => 'Lisensiya',
+'version-ext-colheader-description' => 'Deskripsyon',
+'version-ext-colheader-credits' => 'Mga Kagsurat',
+'version-license-title' => 'Lisensiya para sa $1',
+'version-license-not-found' => 'Mayong detalyadong impormasyon sa lisensiya an nanumpungan para sa ekstensyon na ini.',
'version-poweredby-credits' => "An wiking ini pinagpagana kan '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'mga iba pa',
'version-poweredby-translators' => 'translatewiki.net na mga paradakit-taramon',
'api-error-overwrite' => 'An salambawan na sarong eksistido nang sagunson dae pinagtutugutan.',
'api-error-stashfailed' => 'Panlaog na kasalaan: An serbidor nagpalya sa pagsaray kan temporaryong sagunson.',
'api-error-publishfailed' => 'Panlaog na kasalaan: An serbidor nagpalya na ipublikar an temporaryong sagunson.',
+'api-error-stasherror' => 'Nagkaigwa nin kasalaan mantang ikinakarga an sagunson sa sarayan.',
'api-error-timeout' => 'An serbidor dae nakapagsimbag sa laog kan pinaghunang panahon.',
'api-error-unclassified' => 'May dae midbid na kasalaan an nangyari.',
'api-error-unknown-code' => 'Dae midbid na kasalaan: "$1".',
'no-null-revision' => 'Немагчыма стварыць нулявую вэрсію для старонкі «$1»',
'badtitle' => 'Няслушная назва',
'badtitletext' => 'Запытаная назва старонкі няслушная ці пустая, альбо няслушна ўказаная міжмоўная ці інтэрвікі-назва. Яна можа ўтрымліваць сымбалі, якія нельга ўжываць у назвах.',
-'perfcached' => 'Наступныя зьвесткі кэшаваныя і могуць быць састарэлымі. У кэшы {{PLURAL:$1|1=даступны|даступныя}} ня больш за $1 {{PLURAL:$1|вынік|вынікі|вынікаў}}.',
-'perfcachedts' => 'Наступныя зьвесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|1=даступны|даступныя}} ня больш за $4 {{PLURAL:$4|вынік|вынікі|вынікаў}}.',
+'perfcached' => 'Наступныя зьвесткі кэшаваныя і могуць быць састарэлымі. У кэшы {{PLURAL:$1|даступны|даступныя}} ня больш за $1 {{PLURAL:$1|вынік|вынікаў|вынікі}}.',
+'perfcachedts' => 'Наступныя зьвесткі кэшаваныя і апошні раз былі абноўленыя $1. У кэшы {{PLURAL:$4|даступны|даступныя}} ня больш за $4 {{PLURAL:$4|вынік|вынікаў|вынікі}}.',
'querypage-no-updates' => 'Абнаўленьні гэтай старонкі цяпер адключаныя. Зьвесткі ня будуць абнаўляцца.',
'viewsource' => 'Паказаць крыніцу',
'viewsource-title' => 'Прагляд крыніцы для $1',
'passwordtooshort' => 'Паролі павінны ўтрымліваць ня менш за $1 {{PLURAL:$1|сымбаль|сымбалі|сымбаляў}}.',
'password-name-match' => 'Ваш пароль павінен адрозьнівацца ад Вашага імя ўдзельніка.',
'password-login-forbidden' => 'Выкарыстаньне гэтага імя ўдзельніка і пароля было забароненае.',
-'mailmypassword' => 'Ð\94аÑ\81лаÑ\86Ñ\8c новÑ\8b паÑ\80олÑ\8c па Ñ\8dлекÑ\82Ñ\80оннай поÑ\88Ñ\86е',
+'mailmypassword' => 'СкÑ\96нÑ\83Ñ\86Ñ\8c паÑ\80олÑ\8c',
'passwordremindertitle' => 'Новы часовы пароль для {{GRAMMAR:родны|{{SITENAME}}}}',
'passwordremindertext' => 'Нехта (магчыма Вы, з IP-адрасу $1) запытаў нас даслаць новы пароль для {{GRAMMAR:родны|{{SITENAME}}}} ($4). Для ўдзельніка «$2» быў створаны часовы пароль і ён цяпер «$3». Калі гэта была Вашая ініцыятыва, Вам трэба ўвайсьці ў сыстэму і адразу зьмяніць пароль. Тэрмін дзеяньня Вашага часовага паролю — $5 {{PLURAL:$5|дзень|дні|дзён}}.
Выдаленьне такіх старонак было забароненае, каб пазьбегнуць праблемаў у працы {{GRAMMAR:родны|{{SITENAME}}}}.',
'delete-warning-toobig' => 'Гэтая старонка мае доўгую гісторыю рэдагаваньняў, больш за $1 {{PLURAL:$1|вэрсію|вэрсіі|вэрсіяў}}.
Яе выдаленьне можа выклікаць праблемы ў працы базы зьвестак {{GRAMMAR:родны|{{SITENAME}}}}; будзьце асьцярожны.',
+'deleting-backlinks-warning' => "'''Увага:''' іншыя старонкі спасылаюцца на старонку, якую вы зьбіраецеся выдаліць.",
# Rollback
'rollback' => 'Адкаціць рэдагаваньні',
'mostinterwikis' => 'সবচেয়ে বেশী ইন্টারউইকি লিংক-সমৃদ্ধ নিবন্ধসমূহ',
'mostrevisions' => 'সবচেয়ে বেশী বার সম্পাদিত নিবন্ধসমূহ',
'prefixindex' => 'উপসর্গ সহ সমস্ত পাতা',
-'prefixindex-namespace' => 'পà§\8dরিফিà¦\95à§\8dস সমà§\8dপবলিত সকল পাতা ($1 নামস্থান)',
+'prefixindex-namespace' => 'à¦\89পসরà§\8dà¦\97 সহ সকল পাতা ($1 নামস্থান)',
'prefixindex-strip' => 'তালিকা থেকে প্রিফিক্স সরাও',
'shortpages' => 'সংক্ষিপ্ত পাতাসমূহ',
'longpages' => 'দীর্ঘ পাতাসমূহ',
'invalidtitle-unknownnamespace' => 'Titl direizh gant an niverenn esaouenn anv $1 hag an destenn "$2" dianav',
'exception-nologin' => "N'oc'h ket kevreet",
'exception-nologin-text' => "Ar bajenn-mañ pe an ober-mañ a c'houlenn e vefec'h kevreet er wiki-mañ.",
+'exception-nologin-text-manual' => "$1, mar plij, evit gallout mont d'ar bajenn-mañ pe ober an dra-mañ",
# Virus scanner
'virus-badscanner' => "Kefluniadur fall : skanner viruzoù dianav : ''$1''",
'createacct-emailoptional' => "Chomlec'h postel (direizh)",
'createacct-email-ph' => "Skrivit ho chomlec'h postel",
'createacct-another-email-ph' => "Ebarzhiñ ur chomlec'h postel",
-'createaccountmail' => 'Dre bostel',
+'createaccountmail' => "Implijout ur ger-tremen dibad ha kas anezhañ d'ar chomlec'h postel diferetDre bostel",
'createacct-realname' => 'Anv gwir (diret)',
'createaccountreason' => 'Abeg :',
'createacct-reason' => 'Abeg',
'passwordtooshort' => '{{PLURAL:$1|1 arouezenn|$1 arouezenn}} hir a rank bezañ ar gerioù-tremen da nebeutañ.',
'password-name-match' => "Rankout a ra ho ker-tremen bezañ disheñvel diouzh hoc'h anv implijer.",
'password-login-forbidden' => 'Berzet eo ober gant an anv-implijer hag ar ger-tremen-mañ.',
-'mailmypassword' => 'Kasit din ur ger-tremen nevez',
+'mailmypassword' => 'Adderaouekaat ar ger-tremen',
'passwordremindertitle' => 'Ho ker-tremen berrbad nevez evit {{SITENAME}}',
'passwordremindertext' => "Unan bennak (c'hwi moarvat gant ar chomlec'h IP \$1)
en deus goulennet ma vo kaset dezhañ ur ger-tremen nevez evit {{SITENAME}} (\$4).
'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 eo ment ar bajenn eus an niver-mañ a oktedoù',
-'recentchanges-legend-newpage' => '(gwelet ivez [[Dibar:PajennoùNevez|roll ar pajennoù nevez krouet]])',
+'recentchanges-legend-heading' => '"Alc\'hwez :"',
+'recentchanges-legend-newpage' => '(gwelet ivez [[Special:NewPages|roll ar pajennoù nevez]])',
'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.",
'rcshowhideminor' => "$1 ar c'hemmoù dister",
'ninterwikis' => ' {{PLURAL:$1|interwiki|interwikis}}',
'nlinks' => '$1 {{PLURAL:$1|liamm|liamm}}',
'nmembers' => '$1 {{PLURAL:$1|elfenn|elfenn}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|ezel}}',
'nrevisions' => '$1 {{PLURAL:$1|stumm|stumm}}',
'nviews' => '$1 {{PLURAL:$1|selladenn|selladenn}}',
'nimagelinks' => 'Implijet e $1 {{PLURAL:$1|pajenn|pajenn}}',
'protectedpages' => 'Pajennoù gwarezet',
'protectedpages-indef' => 'Gwarezoù da badout hepken',
'protectedpages-cascade' => 'Gwarez dre skalierad hepken',
+'protectedpages-noredirect' => 'Kuzhat an adkasoù',
'protectedpagesempty' => "N'eus pajenn gwarezet ebet gant an arventennoù-mañ evit poent.",
'protectedtitles' => 'Titloù gwarezet',
'protectedtitlesempty' => "N'eus bet gwarezet titl ebet dezhañ an arventennoù-se evit poent.",
'version-hook-subscribedby' => 'Termenet gant',
'version-version' => '($1)',
'version-license' => 'Aotre-implijout MediaWiki',
+'version-ext-license' => 'Aotre-implijout',
+'version-ext-colheader-name' => 'Astenn',
+'version-ext-colheader-version' => 'Stumm',
+'version-ext-colheader-license' => 'Aotre-implijout',
+'version-ext-colheader-description' => 'Deskrivadur',
+'version-ext-colheader-credits' => 'Aozerien',
+'version-license-title' => 'Aotre-implijout evit $1',
+'version-credits-title' => 'Kredoù evit $1',
'version-poweredby-credits' => "Mont a ra ar wiki-mañ en-dro a-drugarez da '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 're all',
'version-poweredby-translators' => 'troerien translatewiki.net',
'redirect-lookup' => 'Klask :',
'redirect-value' => 'Talvoud :',
'redirect-user' => 'ID an implijer',
+'redirect-page' => 'ID ar bajenn',
'redirect-revision' => 'Adwel ar bajenn',
'redirect-file' => 'Anv ar restr',
'redirect-not-exists' => "Talvoud n'eo ket bet kavet",
'duration-centuries' => "$1 {{PLURAL:$1|c'hantved|kantved}}",
'duration-millennia' => '$1 {{PLURAL:$1|milvloaz|milvoaz}}',
+# Image rotation
+'rotate-comment' => 'Skeudenn troet eus $1 {{PLURAL:$1|derez}} a-du gant an heol',
+
# Limit report
'limitreport-cputime' => 'Amzer implij ar CPU',
'limitreport-cputime-value' => '$1 {{PLURAL:$1|eiladenn}}',
'limitreport-postexpandincludesize-value' => '$1/$2 {{PLURAL:$2|okted}}',
'limitreport-templateargumentsize' => 'Ment arguzenn ar patrom',
'limitreport-templateargumentsize-value' => '$1/$2 {{PLURAL:$2|okted}}',
+'limitreport-expansiondepth' => 'Donder astenn brasañ',
# Special:ExpandTemplates
'expandtemplates' => 'Emled ar patromoù',
'expand_templates_remove_comments' => 'Lemel an notennoù kuit',
'expand_templates_remove_nowiki' => "Diverkañ a ra ar balizennoù <nowiki> en disoc'h",
'expand_templates_generate_xml' => 'Gwelet ar gwezennadur XML',
+'expand_templates_generate_rawhtml' => 'Diskouez an HTML kriz',
'expand_templates_preview' => 'Rakwelet',
);
'rclistfrom' => 'Prikaži nove izmjene počev od $1',
'rcshowhideminor' => '$1 male izmjene',
'rcshowhidebots' => '$1 botove',
-'rcshowhideliu' => '$1 prijavljene korisnike',
+'rcshowhideliu' => '$1 registrovanih korisnika',
'rcshowhideanons' => '$1 anonimne korisnike',
'rcshowhidepatr' => '$1 patrolirane izmjene',
'rcshowhidemine' => '$1 moje izmjene',
'svg-long-desc' => 'SVG fajl, dozvoljeno $1 × $2 piksela, veličina fajla: $3',
'svg-long-desc-animated' => 'Animirana SVG datoteka, nominalno: $1 × $2 piksela, veličina datoteke: $3',
'svg-long-error' => 'Nevaljana SVG datoteka: $1',
-'show-big-image' => 'Vidi sliku u punoj veličini (rezoluciji)',
+'show-big-image' => 'Izvorna datoteka',
'show-big-image-preview' => 'Veličina ovog prikaza: $1.',
'show-big-image-other' => '{{PLURAL:$2|Druga rezolucija|Ostale rezolucije}}: $1.',
'show-big-image-size' => '$1 × $2 piksela',
'upload-recreate-warning' => "'''Тегам бе: иштта цӀе йолу файл дӀаяьккхина я цӀе хийцина.'''
Лахахьа гойтуш ю хӀокху агӀона тептар:",
+'uploadtext' => "Лелайе хӀара агӀо сервер чу файлаш йохуш.
+Хьалхо чуйаьхна файлаш хьажа, [[Special:FileList|кхузахь]]. Кхин чуйаьхна файлаш дӀаязло [[Special:Log/upload|чуяхаран тептар чохь]], дӀаяьхна файлаш каро йиш ю [[Special:Log/delete|кхузахь]].
+
+Файл агӀона чуйилла лелабе лахара могӀанаш:
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></code>''' файла Файлан юьззина верси чуйиллуш;
+* '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|цунахь лаьцна хаам]]</nowiki></code>''' 200 пиксель барамехь файл чуйилар бухахь цунахь лаьцна могӀа а болуш;
+* '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></code>''' файлан тӀе хьажораг хӀотайо файл агӀонгахь ца гуш.",
'upload-permitted' => 'Магийна файлийн тайпанаш: $1.',
'uploadlogpage' => 'Чуяхаран тéптар',
'uploadlogpagetext' => 'Лахахьа гойтуш бу тӀаьххьара чуяхна файлийн могӀам.
'protect-expiring-local' => 'чекхйолу $1',
'protect-expiry-indefinite' => 'хан чаккхе йоцуш',
'protect-cascade' => 'Гlаролла йé агlонаш, хlокху агlонца хlоттайелларш (чахчарé гlаролла)',
-'protect-cantedit' => 'Хьéга хийцам цабало хlокху агlон гlаролли локхалан, хlуд аьлча хьан бакъо яц оцун рéдаккха.',
+'protect-cantedit' => 'Хьéга хийцам цабало хӀокху агӀон гlаролли локхалан, хӀуд аьлча хьан бакъо яц оцунна тадар дан.',
'protect-othertime' => 'Кхин хан:',
'protect-othertime-op' => 'кхин хан',
'protect-otherreason' => 'Кхин бахьна/тӀетохар:',
# Feedback
'feedback-cancel' => 'Цаоьшу',
+'feedback-close' => 'Кийчча ю',
# Search suggestions
'searchsuggest-search' => 'Лаха',
# Limit report
'limitreport-title' => 'АгӀона хӀоттам къасторан хаамаш:',
'limitreport-cputime' => 'Процессоран хан лелор',
+'limitreport-cputime-value' => '$1 {{PLURAL:$1|секунд}}',
'limitreport-walltime' => 'Йодуш йолу хенахь лелор',
+'limitreport-walltime-value' => '$1 {{PLURAL:$1|секунд}}',
'limitreport-ppvisitednodes' => 'Препроцессор хьаьжна шадин дукхалла',
'limitreport-ppgeneratednodes' => 'Препроцессорс сгенерировать бина шадин дукхалла',
'limitreport-postexpandincludesize' => 'Схьаяьстина юккъерчаран барам',
'userlogout' => 'بچۆ دەرەوە',
'notloggedin' => 'لە ژوورەوە نیت',
'userlogin-noaccount' => 'ھەژمارت نییە؟',
-'userlogin-joinproject' => 'ڕەگەڵ {{SITENAME}} کەوە',
+'userlogin-joinproject' => 'وێڕای {{SITENAME}} کەوە',
'nologin' => 'ھەژمارت نییە؟ $1.',
'nologinlink' => 'ھەژمارێک دروست بکە',
'createaccount' => 'ھەژمار دروست بکە',
'delete-warning-toobig' => 'ئەم لاپەڕە مێژوویەکی دەستکاری زۆر گەورەی هەیە، زیاتر لە $1 {{PLURAL:$1|پێداچوونەوە|پێداچوونەوە}}.
سڕینەوی ئەوە لە وانەیە کارەکانی بنکەدراوی {{SITENAME}} تووشی کێشە بکات؛
دوورنواڕانە جێبەجێی بکە.',
+'deleting-backlinks-warning' => "'''ھۆشدار:''' پەڕەی تر بەم پەڕەیەی دەتەوێ بیسڕییەوە بەستەر دراوە.",
# Rollback
'rollback' => 'گەڕاندنەوەی دەستکارییەکان',
Můžete si prohlédnout [[Special:BlockList|seznam zablokovaných uživatelů]].',
'ipb-blockingself' => 'Chystáte se zablokovat {{gender:|sám|sama|sami}} sebe! Jste si {{gender:|jist|jista|jisti}}, že to chcete udělat?',
'ipb-confirmhideuser' => 'Chystáte se zablokovat uživatele se zapnutou volbou „skrýt uživatelské jméno“. To způsobí, že jméno uživatele zmizí ze všech seznamů a protokolovacích záznamů. Jste si {{gender:|jist|jista|jisti}}, že to chcete udělat?',
+'ipb-confirmaction' => 'Pokud jste si {{GENDER:|jist|jista|jisti}}, že to chcete udělat, zaškrtněte pole „{{int:ipb-confirm}}“ dole.',
'ipb-edit-dropdown' => 'Editace seznamu důvodů zablokování',
'ipb-unblock-addr' => 'Odblokovat uživatele nebo IP $1',
'ipb-unblock' => 'Odblokovat uživatele nebo IP adresu',
'expand_templates_generate_rawhtml' => 'Zobrazit surové HTML',
'expand_templates_preview' => 'Náhled',
+# Unknown messages
+'uploadinvalidxml' => 'XML v načteném souboru nelze zpracovat.',
);
'badipaddress' => 'IP-adressen/brugernavnet er udformet forkert eller eksistere ikke.',
'blockipsuccesssub' => 'Blokeringen er gennemført.',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] er blevet blokeret.<br />
-Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.
-
-[[User:$1|$1]] ([[User talk:$1|diskussion]] | [[Special:Contributions/$1|bidrag]]) er blevet blokeret. <br />Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
+Se [[Special:BlockList|blokeringslisten]] for alle blokeringer.',
'ipb-blockingself' => 'Du er ved at blokere dig selv! Er du sikker på, du vil gøre det?',
'ipb-confirmhideuser' => 'Du er ved at blokere en bruger med "skjul bruger" aktiveret. Dette vil skjule brugerens navn på alle lister og logposter. Er du sikker på du vil gøre det?',
'ipb-edit-dropdown' => 'Rediger blokeringsbegrundelser',
'version-svn-revision' => '(Version $2)',
'version-license' => 'MediaWiki-Lizenz',
'version-ext-license' => 'Lizenz',
-'version-ext-colheader-name' => 'Erweiterung',
+'version-ext-colheader-name' => 'Bezeichnung',
'version-ext-colheader-version' => 'Version',
'version-ext-colheader-license' => 'Lizenz',
'version-ext-colheader-description' => 'Beschreibung',
'expand_templates_generate_rawhtml' => 'Rohes HTML anzeigen',
'expand_templates_preview' => 'Vorschau',
+# Unknown messages
+'uploadinvalidxml' => 'Das XML in der hochgeladenen Datei konnte nicht geparst werden.',
);
'tog-minordefault' => "Vurnayışanê xo pêrune ''vurnayışo qıckek'' nışan bıde",
'tog-previewontop' => 'Verqayti pela nuştışi ser de bımocne',
'tog-previewonfirst' => 'Vurnayışo verên de verqayti tım bımocne',
-'tog-enotifwatchlistpages' => 'Yew pele ya zi dosyaya ke lista mına seyrkerdışi de vurnayê mı rê e-poste bırışe',
+'tog-enotifwatchlistpages' => 'Jû pele ya ki dosyawa ke lista mına seyrkerdışi de vurnae, mı rê e-mail bırışe',
'tog-enotifusertalkpages' => 'Pela mına werênayışi ke vurnayê mı rê e-poste bırışe',
-'tog-enotifminoredits' => 'Vurnayışanê qıckekanê pelan u dosyeyan de zi mı rê e-poste bırışe',
+'tog-enotifminoredits' => 'Pelan de vurnayışanê qıckekan u dosyan de ki mı rê e-mail bırışe',
'tog-enotifrevealaddr' => 'Adresa e-posteyê mı posteyê xeberan de bımocne',
'tog-shownumberswatching' => 'Amarê karberanê seyrkerdoğan bımocne',
'tog-oldsig' => 'İmzaya mewcude:',
'editfont-style' => 'Cayê vurnayışi de terzê nuştışi:',
'editfont-default' => 'Cıgeyrayoğo hesabiyaye',
'editfont-monospace' => 'Terzê nusteyê sabıtcagırewtoği',
-'editfont-sansserif' => 'Babetê Sans-serifi',
-'editfont-serif' => 'Babetê serifi',
+'editfont-sansserif' => 'Fontê Sans-serifi',
+'editfont-serif' => 'Font (çêşıdê nuştey) Serif',
# Dates
-'sunday' => 'Bazar',
-'monday' => 'Berarek',
-'tuesday' => 'Telete',
+'sunday' => 'Kırê (Bazar)',
+'monday' => 'Dışeme',
+'tuesday' => 'Sêşeme',
'wednesday' => 'Çarşeme',
-'thursday' => 'Panşeme',
-'friday' => 'Éne',
-'saturday' => 'Bahdé éni',
-'sun' => 'Baz',
-'mon' => 'Bbz',
-'tue' => 'Tlt',
+'thursday' => 'Pancşeme',
+'friday' => 'Yene',
+'saturday' => 'Şeme',
+'sun' => 'Krê',
+'mon' => 'Dış',
+'tue' => 'Sêş',
'wed' => 'Çrş',
'thu' => 'Pşm',
-'fri' => 'Êne',
-'sat' => 'Bdé',
+'fri' => 'Yen',
+'sat' => 'Şem',
'january' => 'Çele',
-'february' => 'Zemherı',
-'march' => 'Adar',
+'february' => 'Sıbate',
+'march' => 'Adar (Mart)',
'april' => 'Nisane',
-'may_long' => 'Gúlan',
+'may_long' => 'Gulane',
'june' => 'Heziran',
-'july' => 'Temuz',
+'july' => 'Temuze',
'august' => 'Tebaxe',
'september' => 'Keşkelun',
'october' => 'Tışrino Verên',
'november' => 'Tışrino Peyên',
'december' => 'Kanun',
'january-gen' => 'Çele',
-'february-gen' => 'Zemherı',
-'march-gen' => 'Mert',
+'february-gen' => 'Sıbate',
+'march-gen' => 'Adar',
'april-gen' => 'Nisane',
-'may-gen' => 'Gúlan',
-'june-gen' => 'Heziran',
-'july-gen' => 'Temuz',
+'may-gen' => 'Gulane',
+'june-gen' => 'Hezirane',
+'july-gen' => 'Temuze',
'august-gen' => 'Tebaxe',
'september-gen' => 'Keşkelun',
'october-gen' => 'Tışrino Verên',
'nov' => 'Tşp',
'dec' => 'Kan',
'january-date' => 'Çele $1',
-'february-date' => 'Şıbate $1',
+'february-date' => 'Sıbate $1',
'march-date' => 'Adar $1',
'april-date' => 'Nisane $1',
'may-date' => 'Gulane $1',
'july-date' => 'Temuze $1',
'august-date' => 'Tebaxe $1',
'september-date' => 'Keşkelun $1',
-'october-date' => 'Cıtan $1',
-'november-date' => 'Qasım $1',
-'december-date' => '$1 Kanun',
+'october-date' => 'Tışrino Verên $1',
+'november-date' => 'Tışrino Peyên $1',
+'december-date' => 'Kanun $1',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kategori|Kategoriy}}',
+'pagecategories' => '{{PLURAL:$1|Kategoriye|Kategoriy}}',
'category_header' => 'Pelê ke kategoriya "$1" derê',
'subcategories' => 'Kategoriyê bınêni',
'category-media-header' => 'Dosyeyê ke kategoriya "$1" derê',
'nstab-mediawiki' => 'Mesac',
'nstab-template' => 'Şablon',
'nstab-help' => 'Pela peşti',
-'nstab-category' => 'Kategori',
+'nstab-category' => 'Kategoriye',
# Main script and global functions
'nosuchaction' => 'Fealiyeto wınasi çıniyo',
# Special:ChangeEmail
'changeemail' => 'E-posta adresa xo bıvurnê',
'changeemail-header' => 'E-posya adresta hesabdê xo bıvurnê',
-'changeemail-text' => 'Şıma qayılê ke e-postay xo bıvurnê se enê formi pırkerê. Qandê araşt kerdışi zi parolay xo şıma de bınusnê',
-'changeemail-no-info' => 'Resayışê ena pela rê Dekewtış icab keno.',
-'changeemail-oldemail' => 'E-postay şımaya newki:',
-'changeemail-newemail' => 'E-posta adresiyo newe:',
-'changeemail-none' => '(Çıno)',
-'changeemail-password' => 'Parolaya şımaya {{SITENAME}}i:',
-'changeemail-submit' => 'E-postay xo bıvurne',
+'changeemail-text' => 'Şıma ke qailê e-postay xo bıvırnê, enê formi pırr kerê. Raştkerdışi rê ki şıma gani parolay xo bınusnê',
+'changeemail-no-info' => 'Şıma gani bıkewê pele ke derdest bıresê na pele.',
+'changeemail-oldemail' => 'E-postay şımawa nıkaêne:',
+'changeemail-newemail' => 'E-postay şımawa newiye:',
+'changeemail-none' => '(Çıniyo)',
+'changeemail-password' => 'Parolay şımawa {{SITENAME}}i:',
+'changeemail-submit' => 'E-postay xo bıvırnên',
'changeemail-cancel' => 'Bıtexelne',
# Special:ResetTokens
-'resettokens' => 'Reset fi ye',
-'resettokens-no-tokens' => 'Ena reset nefina',
-'resettokens-legend' => 'Reset fi ye',
-'resettokens-tokens' => 'Beli kerdeni:',
-'resettokens-token-label' => '$1 (weziyeta newki: $2)',
-'resettokens-watchlist-token' => 'Qandé [[Special:Watchlist|Per vırnayışa lista da temaşan]] web wari kerdeni (Atom/RSS)',
-'resettokens-done' => 'Reset fi',
-'resettokens-resetbutton' => 'Reset fiyayış weçin',
+'resettokens' => 'Nışanan reset ke',
+'resettokens-no-tokens' => 'Nışanê reseti çıniyê',
+'resettokens-legend' => 'Nışanan reset ke',
+'resettokens-tokens' => 'Nışani:',
+'resettokens-token-label' => '$1 (weziyeto nıkaên: $2)',
+'resettokens-watchlist-token' => 'Web Feed rê nışan (Atom/RSS)ê [[Special:Watchlist|vêreno perranê lista şımawa seyrkerdışi]]',
+'resettokens-done' => 'Nışanan reset ke',
+'resettokens-resetbutton' => 'Nışananê weçıniteyan reset ke',
# Edit page toolbar
'bold_sample' => 'Metno qalın',
'bold_tip' => 'Metno qalın',
-'italic_sample' => 'Metno vırandere',
-'italic_tip' => 'Metno vırandere',
-'link_sample' => 'Namey gırê',
-'link_tip' => 'Gıreyê miyani',
-'extlink_sample' => 'http://www.example.com şınasiya adresi',
-'extlink_tip' => 'Greyê teberi (adresi vero http:// dekerê de)',
-'headline_sample' => 'nuştey xeta seri',
-'headline_tip' => '2.ki sewiye sername',
-'nowiki_sample' => 'Non-format nuşte itiya ra bıerz',
-'nowiki_tip' => 'Format kerdışê wiki bıterknê',
+'italic_sample' => 'Metno çewt',
+'italic_tip' => 'Metno çewt',
+'link_sample' => 'Namey gırey',
+'link_tip' => 'Gırey miyani',
+'extlink_sample' => 'http://www.misal.com sernamey gırey',
+'extlink_tip' => 'Gırey teberi (xo vira mekerên http:// prefix)',
+'headline_sample' => 'metnê sernamey',
+'headline_tip' => 'Sewiya 2ıne sername',
+'nowiki_sample' => 'metnê formatkerdey berze etıya',
+'nowiki_tip' => 'Goş formatê Wiki ra mekûwe',
'image_sample' => 'Misal resim.jpg',
-'image_tip' => 'Dosyaya gumın',
+'image_tip' => 'Dosya tewrkerdiye',
'media_sample' => 'misal.jpg',
-'media_tip' => 'Gıreyê dosya',
-'sig_tip' => 'İmza u wext',
-'hr_tip' => 'Çıxiza dimdayi (hend akar mefiye)',
+'media_tip' => 'Gırey dosya',
+'sig_tip' => 'İmzay şıma be morê zemani',
+'hr_tip' => 'Xeta verardiye (teserrufın bıgureyne/bıxebetne)',
# Edit pages
'summary' => "<font style=\"color:Blue\">'''Xulasa:'''</font>",
'savearticle' => 'Pele qeyd ke',
'preview' => 'Verqayt',
'showpreview' => 'Verqayti bımocne',
-'showlivepreview' => 'Verqayto cıwın',
+'showlivepreview' => 'Verqayto cınde (giyane)',
'showdiff' => 'Vurnayışan bımocne',
-'anoneditwarning' => 'Teme!: Şıma bı hesabê xo nıkewtê cı. Hurêndiya namey şıma dı IP-adresa şıma qeyd bena u asena.',
-'anonpreviewwarning' => "''Ti hama nicikewte. Qeyd kerdiş zerre tarixê pele de adresê IP yê tu keyd keno.''",
-'missingsummary' => "'''DİQET:''' Şıma kılmnuşte nıkerd.
-Eke şıma reyna butonê qaydker ser a ne pel bê kılmnuşte qayd beno.",
-'missingcommenttext' => 'Cêr de yew xulasa binuse.',
-'missingcommentheader' => "Vir ardoğ:''' Şıma qey na mesela sername nuşte nênuşt.
-Eke şıma reyna \"{{int:savearticle}}\" qayd ker bıtıkni pel bê sername qayd beno.",
-'summary-preview' => 'Verqeydê qıssa:',
-'subject-preview' => 'Mesela/Sername verqayd seyr kerdış:',
-'blockedtitle' => 'Karber (eza) blok biyo',
-'blockedtext' => '\'\'\'No name ya zi na IP adresê şıma ri musade çino.\'\'\'
-
-Oyo ke musade nêkeno: $1.<br />
-Sebebê musade nêdayiş: \'\'$2\'\'.
-
-* Dest pê kerdışê musade nêdayiş: $8
-* Qedyayişê musade nêdayiş: $6
-* Oyo ke cı rê musade nêdeyêno: $7
-
-Eke şıma sebebê musade nêdayiş ri itiraz keni, $1 de ya zi yewna [[{{MediaWiki:Grouppage-sysop}}|xızmetkar]] de şıma eşkeni na mesela de qıse bıkeri. [[Special:Preferences|Tercihê]] eke şıma na qısme de pey yew e-postayo raşt nêkewte cı, şıma xususiyetê "Karber ri e-posta bırışê" ra nêeşkeni istifade bıkeri, eke şıma tercihanê xo bıerz zerreyê e-postayê xo şıma hıni şenê ep-posta bırışê.
-<br />IP adresê şıma yo nıkayın $3, numreya musade nêdayiş #$5.
-<br />Eke şıma qayile yew xızmkar çiko bıpers, no malumatan not bıkere ney şıma rê lazım beni.',
+'anoneditwarning' => 'İqaz!: Şıma be hesabê xo nêkewtê cı.
+Adresê şımaê IP tarixê vırnayışê na pele de do qeyd bo.',
+'anonpreviewwarning' => '"Şıma be hesabê xo nêkewtê cı. Eke qeyd kerê, adresê şımaê IP tarixê vırnayışê na pele de do qeyd bo."',
+'missingsummary' => "'''DİQET:''' Şıma jû xulasa nênuşte.
+Eke şıma \"{{int:savearticle}}\" reyna bıtıknê, vırnayışê şıma bê xulasa qeyd beno.",
+'missingcommenttext' => 'Cêr de jû fıkır bınusên, şıma rê zehmet.',
+'missingcommentheader' => "'''Diqet:''' Şıma seba nê fıkrvaci yew mewzu/sernuşte nênuşt.
+Eke şıma reyna \"{{int:savearticle}}\" bıtıknê, vırnayışê şıa bê mewzu/sernuşte do qeyd bo.",
+'summary-preview' => 'Verqaytê xulasa:',
+'subject-preview' => 'Verqaytê mewzu/sernuştey:',
+'blockedtitle' => 'Karber blokekerdeo',
+'blockedtext' => '\'\'\'No namey karberi ya ki no adresê IP blokekerdeo.\'\'\'
+
+Vıraştoğê blokey: $1
+Sebebê blokey: \'\'$2\'\'.
+
+* Sıftekerdena blokey: $8
+* Qediyayışê blokey: $6
+* Blokebiyae: $7
+
+Şıma şenê $1 de ya ki yewna [[{{MediaWiki:Grouppage-sysop}}|administrator]]i de irtıbat kewê ke na mesela sero werênê, cemaet vırazê.
+Şıma nêşenê xısusiyetê "karberi rê e-posta bırışe" bıgureynê/bıxebetnê heta ke [[Special:Preferences|Tercihanê hesabi]] de jû e-postawa ke vêrena, beli biye u şıam gureynayışê cı ra mehrum nêbiyê.
+IP adresê şımao nıkaên $3o u numrey bloki #$5.
+Şıma rê zehmet, eke kewnê ra dıme, teferruatanê corênan not kerên.',
'autoblockedtext' => 'IP adresê şıma otomotikmen kerda kılit, çıkı $1 verniya nê hesabi grota.
Sebebê cı zi:
# Random page in category
'randomincategory' => 'Ğoseri pera kategoriya',
-'randomincategory-invalidcategory' => '"$1" namedı kategori çıniya',
+'randomincategory-invalidcategory' => '"$1" yew nameyê kategoriya vêrdiye niyo.',
'randomincategory-nopages' => 'Kategori da [[:Category:$1|$1]] de qet per çıniya.',
'randomincategory-selectcategory' => 'Pera ke cıra raşt ameye kategori do bıgéri yo: $1 $2.',
'randomincategory-selectcategory-submit' => 'Şo',
# Random redirect
-'randomredirect' => 'Xoseri hetenayış',
+'randomredirect' => 'Serçarnayışo rastameye',
'randomredirect-nopages' => 'Ena cayênameyê "$1"î de redereksiyonî çin o.',
# Statistics
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|bayt|bayti}}',
-'ncategories' => '$1 {{PLURAL:$1|Kategori|Kategoriy}}',
+'ncategories' => '$1 {{PLURAL:$1|Kategoriye|Kategoriy}}',
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwikiy}}',
'nlinks' => '$1 {{PLURAL:$1|link|linkî}}',
'nmembers' => '$1 {{PLURAL:$1|eza|ezayan}}',
# Special:Categories
'categories' => 'Kategoriy',
-'categoriespagetext' => '{{PLURAL:$1|kategoriyê|kategoriyê}} cêrıni de pel u media esto.
-[[Special:UnusedCategories|kategoriyê ke nê xebtênê]] tiya de nêmociyeni.
-hem zi bıewnê [[Special:WantedCategories|kategori yê ke waziyeni]].',
-'categoriesfrom' => 'kategori yê ke pê ninan destpêkeno ramocın:',
+'categoriespagetext' => '{{PLURAL:$1|Kategoriya cêrene|Kategoriyanê cêrênan}} de peli ya zi medya estê.
+[[Special:UnusedCategories|Kategoriyê ke nêxebetiyenê]] tiya de nêmocniyayê.
+[[Special:WantedCategories|Kategoriyanê waşteyeyan]] de zi bıvêne.',
+'categoriesfrom' => 'Kategoriyê ke be ninan dest pêkenê, bımocne:',
'special-categories-sort-count' => 'goreyê çendi rêz ker.',
'special-categories-sort-abc' => 'alfabetik rêz ker',
'tooltip-ca-nstab-mediawiki' => 'Mesacané sistemi bıvin',
'tooltip-ca-nstab-template' => 'Şabloni bıvin',
'tooltip-ca-nstab-help' => 'Pela peşti bıvêne',
-'tooltip-ca-nstab-category' => 'Pera kategori bıvin',
+'tooltip-ca-nstab-category' => 'Pela kategoriye bıvêne',
'tooltip-minoredit' => 'Nay vırnayışa werdi nışan bıkeré',
'tooltip-save' => 'Vurnayışa qeyd ke',
'tooltip-preview' => 'Vurnayışané ğo çımra ravyarné. Verdé qeyd kerdışi eneri bıkarné!',
'pageinfo-redirects-name' => 'Hetenayışê na perer',
'pageinfo-redirects-value' => '$1',
'pageinfo-subpages-name' => 'Bınpelê na pela',
-'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|hetenayış|hetenayışi}}; $3 {{PLURAL:$3|raykerdışt|raykerdışi}})',
+'pageinfo-subpages-value' => '$1 ($2 {{PLURAL:$2|serçarnayış|serçarnayışi}}; $3 {{PLURAL:$3|nêserçarnayış|nêserçarnayışi}})',
'pageinfo-firstuser' => 'Pela vıraşter',
'pageinfo-firsttime' => 'Demê pela vıraştışi',
'pageinfo-lastuser' => 'Vurnayoğo peyên',
'exif-writer' => 'Nuştekar',
'exif-languagecode' => 'Zıwan',
'exif-iimversion' => 'Verqaydê IIM',
-'exif-iimcategory' => 'Kategori',
+'exif-iimcategory' => 'Kategoriye',
'exif-iimsupplementalcategory' => 'Oleyê Kategoriyan',
'exif-datetimeexpires' => 'No peyra mekarênê',
'exif-datetimereleased' => 'Bıroşe',
'version-version' => '(Versiyon $1)',
'version-svn-revision' => '(r$2)',
'version-license' => 'Lisans',
+'version-ext-license' => 'Lisans',
'version-poweredby-credits' => "Ena wiki, dezginda '''[https://www.mediawiki.org/ MediaWiki]''' ya piya vıraziyaya, heqê telifi © 2001-$1 $2.",
'version-poweredby-others' => 'Zewmi',
'version-poweredby-translators' => "Açernere translatewiki.net'i",
'expand_templates_generate_rawhtml' => 'Gropny HTML pokazaś',
'expand_templates_preview' => 'Pśeglěd',
+# Unknown messages
+'uploadinvalidxml' => 'XML w nagratej dataji njedajo se parsowaś.',
);
$messages = array(
# User preference toggles
'tog-underline' => "Tîra 'na rîga sòta i colegamèint.",
+'tog-justify' => 'Mésa in ōrdin di carâter di peréiod.',
'tog-hideminor' => "Lōga 'l mudéfichi pió céchi int al j ûltmi mudéfichi.",
'tog-hidepatrolled' => "Lōga 'l mudéfichi verifichêdi int al j ûltmi mudéfichi",
'tog-newpageshidepatrolled' => "Lōga al pàgini verifichêdi da l'elèinch dal pàgini pió nōvi.",
# Font style option in Special:Preferences
'editfont-style' => "Stîl dal carâter int la caşèla 'd mudéfica:",
+'editfont-default' => 'Pre-stabilî dal navigadōr',
'editfont-monospace' => 'Carâter a larghésa fésa',
'editfont-sansserif' => 'Carâter sans-serif',
'editfont-serif' => 'Carâter serif',
'category-file-count' => "{{PLURAL:$2|In cla categoréia ché a gh'é sōl un file, sgnê ché.|In cla categoréia ché gh'é{{PLURAL:$1|un file sgnê ché| i file $1, sgnê}} ed sègvit, in un totêl ed $2.}}",
'category-file-count-limited' => "In cla categoréia ché a gh'é {{PLURAL:$1|al file nutê|i $1 file nutê}} ché 'd sègvit.",
'listingcontinuesabbrev' => 'cunt.',
+'index-category' => 'Pàgini gancêdi',
+'noindex-category' => 'Pàgini mìa gancêdi',
'broken-file-category' => "Pàgini cun dèinter di file ch' an gh'în mìa.",
'about' => 'Infumasiòun',
'databaseerror-text' => 'È sucès un erōr de dmânda insém al databêş.
A pré ânch èser un bug int al prugrâma.',
'databaseerror-textcl' => 'È sucès un erōr de dmânda insém al databêş.',
+'databaseerror-query' => 'Istrusiòun SQL: $1',
'databaseerror-function' => 'Funsiòun: $1',
'databaseerror-error' => 'Erōr: $1',
'laggedslavemode' => "'''Atèinti:''' la pàgina la pré avèir mìa al revisiòun pió nōv.",
'readonly' => "'Database' bluchê",
'enterlockreason' => "Scréver al mutîv dal blôch, precişêr quând a 's pèinsa che 'l vègna tôt via.",
+'readonlytext' => "In cól mumèint ché al databêş l'é bluchê e an 's pōlen fêr né zûnti né mudéfichi. Al blôch ed sôlit l'é lighê a 'na revişiòun normêla e quând la srà finîda al gnirà sbluchê.
+
+L'aminitradōr dal sistēma ch' al l'à bluchê l'à dê cla spiegasiòun ché: $1",
'missing-article' => "Al datebêş an n'à mìa catê al tèst ed 'na pàgina ch' l' aré duvû catêres sòt' al nòm \"\$1\" \$2. Ed sôlit còst a sucēd quând a vîn arciamê, a partîr da la stòria dal mudéfichi o dal cunfrûnt tra versiòun, un colegamèint a 'na pàgina scanşlêda, a un cunfrûnt tra versiòun che gh'în mìa o a un cunfrûnt tra versiòun cun la stòria dal mudéfichi scanşlêda. In chês cuntrâri, a s'é pubabilmèint catê un erōr int al prugrâma ed Media Wiki. A se dmânda al piaşèir ed comunichêr còl ch'é sucès a un [[Special:ListUsers/sysop|amministadōr]] e comunichêregh l'indirés (URL) in quistiòun.",
'missingarticle-rev' => '(nómer ed la versiòun: $1)',
'missingarticle-diff' => '(Diff: $1, $2)',
+'readonly_lag' => "Al databêş l'é stê bluchê in avtomàtich per permèter a i terminêl cun al databêş schiêv ed mètres in pâs cun al master",
'internalerror' => 'Erōr intêren',
'internalerror_info' => 'Erōr intêren: $1',
'fileappenderrorread' => 'An n\'é mìa stê pusébil lēşer "$1" mèinter es fêva la zûnta.',
'fileappenderror' => 'An n\'é mìa pusébil zuntêr "$1" a "$2".',
'filecopyerror' => 'An n\'é mìa pusébil cupiêr al file "$1" in "$2".',
'filerenameerror' => 'An n\'é mìa pusébil cambiêr al nòm ed "$1" in "$2".',
+'filedeleteerror' => 'An n\'é mìa pusébil scanşlêr al file "$1".',
'directorycreateerror' => 'An n\'é mìa pusébil fêr la directory "$1".',
'filenotfound' => 'An n\'é mìa pusébil catêr al file "$1".',
'fileexistserror' => 'An n\'é mìa pusébil scréver al file "$1": al file al gh\'é bèle.',
'cannotdelete' => 'An n\'é mìa stê pusébil scanşlêr la pàgina o al file "$1".
Al pré èser bèle stê scanşlê da quelchidûn êter.',
'cannotdelete-title' => 'Impusébil scanşlêr la pàgina "$1".',
+'delete-hook-aborted' => "L' hook an n'à mia permés la scanşladûra.
+An n'é mìa stê dê la spiegasiòun.",
+'no-null-revision' => 'An pōl èser fât \'na versiòun mìa vâlida per la pàgina "$1"',
'badtitle' => 'Tétol mìa curèt.',
'badtitletext' => "Al tétol ed la pàgina serchêda l'é vōd, şbaliê opór al deşvîn da 'n erōr int i colegamèint di côdis o int i colegamèint druvê in wiki. In pió al pré avèir ûn o pió carâter ch'an pōlen mìa èser druvê int i tétol.",
+'perfcached' => 'Al j infurmasiòun ché sòta vînen registrêdi int la "cache" dal databêş e an pōlen mìa èser arnuvê. Int la "cache" a gh\'é un mâsim ed {{PLURAL:$1|un rişultêt |$1 rişultêt}} ch\' es pōl/en druvêr.',
+'perfcachedts' => 'Al j infurmasiòun ché sòta vînen registrêdi int la "cache" dal databêş e l\'ûltma vôlta l\' è stê arnuvê al $ 1. Int la "cache" a gh\'é un mâsim ed {{PLURAL:$4|un rişultêt |$4 rişultêt}} ch\' es pōl/en druvêr.',
+'querypage-no-updates' => "J arnuvamèint ed la pàgina în p'r al mumèint fērom. Al j infurmasiòun dèinter a la pàgina a gnirân mia arnuvêdi.",
'viewsource' => 'Guêrda la surzéia',
'viewsource-title' => "Guêrda la surzéia 'd $1",
+'actionthrottled' => "L'asiòun la vîn tardêda.",
+'actionthrottledtext' => "Cme mişûra 'd sicurèsa cûnt'r al spam soquânti operasiòun a vînen limitêdi a 'n nómer mâsim ed vôlti in un precîş peréiod ed tèimp, in cól chêş ché a s'é bèle andê d'ed là 'd cól lémit. A se dmânda ed turnêr a pruvêr tra soquânt minût.",
+'protectedpagetext' => "Cla pàgina ché l'é stêda prutèta per impidîr la mudéfica o êtri operasiòun.",
+'viewsourcetext' => "L'é pusébil vèder e cupiêr al côdis surzéia ed cla pàgina ché.",
+'viewyourtext' => 'L\'é pusébil vèder e cupiêr al côdis surzéia dal "tō mudéfichi" ed cla pàgina ché:',
+'protectedinterface' => "Cla pàgina ché la gh'à 'n elemèint ch' al fa pêrt dal colegamèint tra utèint e al progrâma 'd cól sît ché e l'é prutèta per schivşêr pusébil abûş. Per zuntêr o mudufichêr tradusiòun per tót i sistēma wiki druvêr [//translatewiki.net/ translatewiki.net], al prugèt 'd adatamèint a ògni léngva 'd MediaWiki.",
+'editinginterface' => "'''Atèinti:'' Al tèst ed cla pàgina ché 'l fa pêrt dal colegamèint tra utèint e 'l progrâma dal sît. Tót' al modéfichi fâti a cla pàgina ché a gnîran spustêdi insém a i mesâg vést da tót j utèint ed cól wiki ché. Per zuntêr o mudufichêr tradusiòun vâlidi per tót i wiki, cunsîdra la pusibilitê 'd druvêr [/ / translatewiki.net / translatewiki.net], al prugèt 'd adatamèint a ògni léngva 'd MediaWiki.",
+'cascadeprotected' => "Insém a cla pàgina ché an n'é mìa pusébil fêr dal mudéfichi perchè l'é dèinter {{PLURAL:$1|int la pàgina sgnêda ché 'd sègvit, ch' l'é stêda prutèta|int al pàgini sgnêdi ché 'd sègvit, ch' în stêdi prutèti}} cun la prutesiòun ch' la 's arfà in cuntinvasiòun:
+$2",
+'namespaceprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr al pàgini dal spâsi di nòm '''$1'''.",
+'customcssprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina CSS ché, perchè la gh'à dèinter al j impustasiòun personêli 'd n' êter utèint.",
+'customjsprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina JavaScript ché, perchè la gh'à dèinter al j impustasiòun personêli 'd n' êter utèint.",
+'mycustomcssprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina CSS ché.",
+'mycustomjsprotected' => "An 's gh'à mìa i permès necesâri per mudifichêr cla pàgina JavaScript ché .",
+'myprivateinfoprotected' => "An 's gh'à mìa i permès necesâri per cambiê 'l j infurmasiòun personêli.",
+'mypreferencesprotected' => "An 's gh'à mìa i permès necesâri per cambiêr al preferèinsi personêli.",
+'ns-specialprotected' => "An n'é mìa pusébil mudifichêr al pàgini specêli.",
+'titleprotected' => 'Al tétol ed cla pagina ché l\'é stê bluchê da [[User:$1|$1]].
+Còst l\'é al mutîv:"$2".',
+'filereadonlyerror' => 'An n\'é mìa stê pusébil mudifichêr al file "$1" perchè al depôsit di file "$2" a \'s pōl sōl lēzer.
+
+L\'aministradōr ch\' al l\'à bluchê l\'à dê cla spiegasiòun ché:"$3".',
+'invalidtitle-knownnamespace' => 'Tétol mìa vâlid cme spâsi di nòm "$2" e tèst "$3"',
+'invalidtitle-unknownnamespace' => 'Tétol mìa vâlid cun spâsi di nòm mìa cgnusû "$1" e tèst "$2"',
+'exception-nologin' => "An t'é mìa gnû dèinter",
+'exception-nologin-text' => "Per andêr dèinter a cla pàgina ché o fêr còl ch'ét pèins ét gh'ê da [[Special:Userlogin|fêr l'ingrès]].",
+'exception-nologin-text-manual' => 'Per prèir andêr dèinter a cla pàgina ché o fêr còl ch\'ét peins ét gh\'ê da "$1".',
# Login and logout pages
'yourname' => 'Nòm utèint:',
'recentchanges-label-minor' => 'Αυτή είναι μια μικροαλλαγή',
'recentchanges-label-bot' => 'Αυτή η επεξεργασία έγινε από ένα ρομπότ',
'recentchanges-label-unpatrolled' => 'Αυτή η επεξεργασία δεν έχει ελεγχθεί ακόμα',
-'recentchanges-legend-newpage' => '$1 - νέα σελίδα',
+'recentchanges-label-plusminus' => 'Μεταβολή του μεγέθους της σελίδας σε bytes',
+'recentchanges-legend-heading' => "'''Υπόμνημα:'''",
+'recentchanges-legend-newpage' => '(δείτε [[Special:NewPages|Νέες σελίδες]])',
'rcnotefrom' => "Παρακάτω είναι οι αλλαγές από τις '''$2''' (εμφανίζονται μέχρι '''$1''').",
'rclistfrom' => 'Εμφάνιση νέων αλλαγών αρχίζοντας από $1',
'rcshowhideminor' => '$1 μικροεπεξεργασιών',
'php-uploaddisabledtext' => 'File uploads are disabled in PHP.
Please check the file_uploads setting.',
'uploadscripted' => 'This file contains HTML or script code that may be erroneously interpreted by a web browser.',
+'uploadinvalidxml' => 'The XML in the uploaded file could not be parsed.',
'uploadvirus' => 'The file contains a virus!
Details: $1',
'uploadjava' => 'The file is a ZIP file that contains a Java .class file.
'version-software' => 'Installed software',
'version-software-product' => 'Product',
'version-software-version' => 'Version',
+'version-db-mysql-url' => 'http://www.mysql.com/', # do not translate or duplicate this message to other languages
+'version-db-mariadb-url' => 'http://mariadb.org/', # do not translate or duplicate this message to other languages
+'version-db-percona-url' => 'http://www.percona.com/software/percona-server', # do not translate or duplicate this message to other languages
+'version-db-postgres-url' => 'http://www.postgresql.org/', # do not translate or duplicate this message to other languages
+'version-db-oracle-url' => 'http://www.oracle.com/database/', # do not translate or duplicate this message to other languages
+'version-db-sqlite-url' => 'http://www.sqlite.org/', # do not translate or duplicate this message to other languages
+'version-db-mssql-url' => 'http://www.microsoft.com/sql/', # do not translate or duplicate this message to other languages
'version-entrypoints' => 'Entry point URLs',
'version-entrypoints-header-entrypoint' => 'Entry point',
'version-entrypoints-header-url' => 'URL',
'tog-diffonly' => "No mostrar bajo las ''diferencias'' el contenido de la página",
'tog-showhiddencats' => 'Mostrar las categorías escondidas',
'tog-noconvertlink' => 'Desactivar la conversión de título de enlace',
-'tog-norollbackdiff' => "Omitir la ''diferencia'' después de revertir",
+'tog-norollbackdiff' => 'Omitir la diferencia después de revertir',
'tog-useeditwarning' => 'Advertirme cuando abandone una página editada con cambios sin grabar',
'tog-prefershttps' => 'Utiliza una conexión segura siempre que haya iniciado una sesión',
'wed' => 'mié',
'thu' => 'jue',
'fri' => 'vie',
-'sat' => 'sab',
+'sat' => 'sáb',
'january' => 'enero',
'february' => 'febrero',
'march' => 'marzo',
'redirectedfrom' => '(Redirigido desde «$1»)',
'redirectpagesub' => 'Página de redirección',
'lastmodifiedat' => 'Esta página fue modificada por última vez el $1, a las $2.',
-'viewcount' => 'Esta página ha sido visitada {{PLURAL:$1|una vez|$1 veces}}.',
+'viewcount' => 'Esta página se ha visitado {{PLURAL:$1|una vez|$1 veces}}.',
'protectedpage' => 'Página protegida',
'jumpto' => 'Saltar a:',
'jumptonavigation' => 'navegación',
Puede que ya haya sido borrado por alguien más.',
'cannotdelete-title' => 'No se puede borrar la página «$1»',
'delete-hook-aborted' => 'La modificación que intentaste hacer fue cancelada por un gancho de extensión. No hay explicación disponible.',
-'no-null-revision' => 'No se pudo crear la nueva revisión nula para la página "$1"',
+'no-null-revision' => 'No se pudo crear la revisión nula para la página «$1»',
'badtitle' => 'Título incorrecto',
'badtitletext' => 'El título de la página solicitada está vacío, no es válido, o es un enlace interidioma o interwiki incorrecto.
Puede que contenga uno o más caracteres que no se pueden usar en los títulos.',
# Virus scanner
'virus-badscanner' => "Error de configuración: Antivirus desconocido: ''$1''",
-'virus-scanfailed' => 'Escaneo fallido (código $1)',
+'virus-scanfailed' => 'falló el análisis (código $1)',
'virus-unknownscanner' => 'antivirus desconocido:',
# Login and logout pages
'yourname' => 'Nombre de usuario:',
'userlogin-yourname' => 'Usuario',
'userlogin-yourname-ph' => 'Escribe tu nombre de usuario',
-'createacct-another-username-ph' => 'Ingrese el nombre de usuario',
+'createacct-another-username-ph' => 'Escribe el nombre de usuario',
'yourpassword' => 'Contraseña:',
'userlogin-yourpassword' => 'Contraseña',
'userlogin-yourpassword-ph' => 'Escribe tu contraseña',
'login-abort-generic' => 'Tu inicio de sesión no fue exitoso - Cancelado',
'loginlanguagelabel' => 'Idioma: $1',
'suspicious-userlogout' => 'Tu solicitud de desconexión ha sido denegada, pues parece haber sido enviada desde un navegador defectuoso o un proxy caché.',
-'createacct-another-realname-tip' => 'El nombre Real es opcional.
-Si elige proporcionarlo, se usará para dar al usuario la atribución de su trabajo.',
+'createacct-another-realname-tip' => 'El nombre real es opcional.
+Si se proporciona, se usará para dar al usuario la atribución de su trabajo.',
# Email sending
'php-mail-error-unknown' => 'Error desconocido en la función mail() de PHP.',
# Change password dialog
'changepassword' => 'Cambiar contraseña',
'resetpass_announce' => 'Has iniciado sesión con una contraseña temporal que fue enviada por correo electrónico.
-Por favor, introduce una nueva contraseña aquí:',
+Establece una contraseña nueva aquí:',
'resetpass_text' => '<!-- Añada texto aquí -->',
'resetpass_header' => 'Cambiar la contraseña de la cuenta',
'oldpassword' => 'Contraseña antigua:',
'changeemail-header' => 'Cambiar la dirección de correo de la cuenta',
'changeemail-text' => 'Rellena este formulario para cambiar tu dirección de correo electrónico. Debes introducir la contraseña para confirmar este cambio.',
'changeemail-no-info' => 'Debes iniciar sesión para acceder directamente a esta página.',
-'changeemail-oldemail' => 'Dirección de correo electrónico actual:',
-'changeemail-newemail' => 'Nueva dirección de correo electrónico:',
+'changeemail-oldemail' => 'Dirección electrónica actual:',
+'changeemail-newemail' => 'Dirección electrónica nueva:',
'changeemail-none' => '(ninguna)',
'changeemail-password' => 'Tu contraseña en {{SITENAME}}:',
'changeemail-submit' => 'Cambiar correo electrónico',
'addwatch' => 'Añadir a la lista de seguimiento',
'addedwatchtext' => 'La página «[[:$1]]» ha sido añadida a tu [[Special:Watchlist|lista de seguimiento]]. Los cambios futuros en esta página y en su página de discusión asociada se indicarán ahí.',
'removewatch' => 'Quitar de la lista de seguimiento',
-'removedwatchtext' => 'La página «[[:$1]]» ha sido eliminada de tu [[Special:Watchlist|lista de seguimiento]].',
+'removedwatchtext' => 'Se ha eliminado la página «[[:$1]]» de tu [[Special:Watchlist|lista de seguimiento]].',
'watch' => 'Vigilar',
'watchthispage' => 'Vigilar esta página',
'unwatch' => 'Dejar de vigilar',
'file-exists-duplicate' => 'See fail on {{PLURAL:$1|järgneva faili|järgnevate failide}} duplikaat:',
'file-deleted-duplicate' => 'Selle failiga ([[:$1]]) identne fail on hiljuti kustutatud.
Vaata selle faili kustutamise ajalugu enne jätkamist.',
+'file-deleted-duplicate-notitle' => 'Selle failiga identne fail on varem kustutatud ja pealkiri on varjatud.
+Enne kui jätkad uuesti üleslaadimisega, peaksid paluma olukorda hinnata kellelgi, kes saab vaadata varjatud andmeid.',
'uploadwarning' => 'Üleslaadimise hoiatus',
'uploadwarning-text' => 'Muuda allpool olevat faili kirjeldust ning proovi uuesti.',
'savefile' => 'Salvesta fail',
'protectedpages' => 'Kaitstud leheküljed',
'protectedpages-indef' => 'Ainult määramata ajani kaitstud',
'protectedpages-cascade' => 'Ainult kaskaadkaitsega',
+'protectedpages-noredirect' => 'Peida ümbersuunamised',
'protectedpagesempty' => 'Selliste parameetritega ei ole praegu ühtegi lehekülge kaitstud.',
'protectedtitles' => 'Kaitstud pealkirjad',
'protectedtitlesempty' => 'Hetkel pole ükski pealkiri kaitstud.',
Selle kustutamine on keelatud, et ära hoida ekslikku {{GRAMMAR:genitive|{{SITENAME}}}} töö häirimist.',
'delete-warning-toobig' => 'See lehekülg on pika redigeerimislooga – üle {{PLURAL:$1|ühe muudatuse|$1 muudatuse}}.
Ettevaatust, selle kustutamine võib esile kutsuda häireid {{GRAMMAR:genitive|{{SITENAME}}}} andmebaasi töös.',
+'deleting-backlinks-warning' => "'''Hoiatus:''' Teised leheküljed viitavad leheküljele, mida oled kustutamas.",
# Rollback
'rollback' => 'Tühista muudatused',
'version-other' => 'Muu',
'version-mediahandlers' => 'Meediatöötlejad',
'version-hooks' => 'Haagid',
-'version-parser-extensiontags' => 'Parseri lisamärgendid',
+'version-parser-extensiontags' => 'Parseri lisasildid',
'version-parser-function-hooks' => 'Parserifunktsioonid',
'version-hook-name' => 'Haagi nimi',
'version-hook-subscribedby' => 'Tellijad',
'version-version' => '(Versioon $1)',
-'version-license' => 'Litsents',
+'version-license' => 'MediaWiki litsents',
+'version-ext-license' => 'Litsents',
+'version-ext-colheader-name' => 'Lisa',
+'version-ext-colheader-version' => 'Versioon',
+'version-ext-colheader-license' => 'Litsents',
+'version-ext-colheader-description' => 'Kirjeldus',
+'version-ext-colheader-credits' => 'Autorid',
+'version-license-title' => 'Tarkvaralisa $1 litsents',
+'version-license-not-found' => 'Selle lisa kohta ei leitud üksikasjalikku litsentsiteavet.',
+'version-credits-title' => 'Tarkvaralisa $1 tegijad',
+'version-credits-not-found' => 'Selle lisa tegijate kohta ei leitud üksikasjalikku teavet.',
'version-poweredby-credits' => "See viki kasutab '''[https://www.mediawiki.org/ MediaWiki]''' tarkvara. Autoriõigus © 2001–$1 $2.",
'version-poweredby-others' => 'teised',
'version-poweredby-translators' => 'translatewiki.net-i tõlkijad',
'api-error-overwrite' => 'Olemasolevate failide ülekirjutamine pole lubatud.',
'api-error-stashfailed' => 'Sisetõrge: Serveril ei õnnestunud ajutist faili talletada.',
'api-error-publishfailed' => 'Sisetõrge: Serveril ebaõnnestus ajutise faili avaldamine.',
+'api-error-stasherror' => 'Selle faili hoidlasse üleslaadimisel ilmnes tõrge.',
'api-error-timeout' => 'Server ei vastanud oodatud aja sees.',
'api-error-unclassified' => 'Ilmnes teadmata tõrge.',
'api-error-unknown-code' => 'Teadmata tõrge: "$1"',
*
* @author An13sa
* @author Bengoa
+ * @author Fitoschido
* @author Helix84
* @author Kaganer
* @author Kaustubh
'mergelogpagetext' => 'Jarraian dagoen zerrendak orrialde baten historiatik beste batera egindako azken bateratzeak erakusten ditu.',
# Diffs
-'history-title' => '"$1" orrialdearen historia berrikuspena',
+'history-title' => '«$1» orrialdearen historia berrikuspena',
'difference-title' => '«$1»: berrikuspenen arteko aldeak',
'difference-title-multipage' => '"$1" eta "$2" orrialdeen arteko ezberditasunak',
'difference-multipage' => '(Orrialdeen arteko ezberdintasunak)',
'import-error-invalid' => '"$1" orrialdea ez da inportatu izena ez delako baliagarria.',
'import-options-wrong' => 'Aukera {{PLURAL:$2|ez-egokia|ez-egokiak}}:<nowiki>$1</nowiki>',
'import-rootpage-invalid' => 'Emandako jatorri orrialdea izenburu ez-baliagarria da.',
-'import-rootpage-nosubpage' => 'Jatorri orrialdearen "$1" izen-tarteak ez du baimentzen azpi-orrialderik.',
+'import-rootpage-nosubpage' => 'Jatorri orrialdearen «$1» izen-tarteak ez du baimentzen azpi-orrialderik.',
# Import log
'importlogpage' => 'Inportazio erregistroa',
'expand_templates_generate_rawhtml' => 'نمایش اچتیامال خام',
'expand_templates_preview' => 'پیشنمایش',
+# Unknown messages
+'uploadinvalidxml' => 'XML در پروندهٔ بارگذاریشده نمیتواند تجزیه شود.',
);
'content-not-allowed-here' => 'Sivun [[$2]] sisältö ei voi olla tyyppiä $1.',
'editwarning-warning' => 'Tältä sivulta poistuminen saattaa aiheuttaa kaikkien tekemiesi muutosten katoamisen.
Jos olet kirjautuneena sisään, voit poistaa tämän varoituksen käytöstä asetuksissa osiossa "Muokkaus".',
+'editpage-notsupportedcontentformat-title' => 'Sisällön muotoa ei tueta',
# Content models
'content-model-wikitext' => 'wikiteksti',
'expand_templates_generate_rawhtml' => 'Afficher le HTML brut',
'expand_templates_preview' => 'Aperçu du rendu',
+# Unknown messages
+'uploadinvalidxml' => 'Le XML dans le fichier importé n’a pas pu être analysé.',
);
'action-createtalk' => 'diskusjuunssidjen maage',
'action-createaccount' => 'jüdeer brükerkonto mååge',
'action-minoredit' => 'detdiar feranrang üs letj kääntiakne',
-'action-move' => 'jüdeer sid ferschüwe',
-'action-move-subpages' => 'jüdeer sid än unerside ferschüwe',
+'action-move' => 'an fersküüw det diar sidj',
+'action-move-subpages' => 'an fersküüw detdiar sidj mä hör onersidjen',
'action-move-rootuserpages' => 'hood-brükersidj fersküüw',
-'action-movefile' => 'jüdeer sid ferschüwe',
+'action-movefile' => 'an fersküüw detdiar datei',
'action-upload' => 'Datein huuchschüür',
'action-reupload' => 'det datei auerskriiw',
'action-reupload-shared' => 'det datei auerskriiw, diar uun en gemiansoom archiif leit',
# Move page
'move-page' => 'Fersküüw $1',
-'move-page-legend' => 'Sid ferschüwe',
+'move-page-legend' => 'Sidj fersküüw',
'movepagetext' => "Mä detdiar formulaar könst dü en sidj mä aal sin werjuunen amnääm.
Di ual tiitel woort üüb di nei widjerfeerd.
Dü könst widjerfeerangen, diar üüb di ual tiitel wise, automaatisk üüb di nei tiitel widjerfeer läät.
'content-not-allowed-here' => 'O contido "$1" non está permitido na páxina "[[$2]]"',
'editwarning-warning' => 'Deixar esta páxina pode causar a perda de calquera cambio feito.
Se accedeu ao sistema, pode desactivar esta mensaxe de advertencia na sección "Edición" das súas preferencias.',
+'editpage-notsupportedcontentformat-title' => 'Formato de contido non admitido',
+'editpage-notsupportedcontentformat-text' => 'O formato de contido $1 non é compatible co modelo de contido $2.',
# Content models
'content-model-wikitext' => 'texto wiki',
'cantcreateaccount-text' => "A creación de contas desde este enderezo IP ('''$1''') foi bloqueada por [[User:$3|$3]].
A razón dada por $3 foi ''$2''",
-'cantcreateaccount-range-text' => "A creación de contas dende direccións IP no rango '''$1''', e que inclúe á súa dirección IP ('''$4'''), foi bloqueada polo usuario [[User:$3|$3]].
+'cantcreateaccount-range-text' => "O usuario [[User:$3|$3]] bloqueou a creación de contas desde enderezos IP no rango '''$1''', no que se inclúe o seu enderezo IP ('''$4''').
-A razón dada por $3 foi ''$2''.",
+A razón que deu $3 foi ''$2''.",
# History pages
'viewpagelogs' => 'Ver os rexistros desta páxina',
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Este ficheiro é un duplicado {{PLURAL:$1|do seguinte|dos seguintes}}:',
'file-deleted-duplicate' => 'Un ficheiro idéntico a este ("[[:$1]]") foi borrado previamente. Debería comprobar o historial de borrados do ficheiro antes de proceder a cargalo de novo.',
+'file-deleted-duplicate-notitle' => 'Un ficheiro idéntico a este foi borrado con anterioridade, e o título foi suprimido. Debería contactar con alguén capaz de ver os datos de ficheiros borrados para que revise esta situación antes de voltar a subilo de novo.',
'uploadwarning' => 'Advertencia ao cargar o ficheiro',
'uploadwarning-text' => 'Por favor, modifique a descrición do ficheiro e inténteo de novo.',
'savefile' => 'Gardar o ficheiro',
Olle a [[Special:BlockList|lista de bloqueos]] para revisalo.',
'ipb-blockingself' => 'Está a piques de se bloquear! Está seguro de querer facelo?',
'ipb-confirmhideuser' => 'Está a piques de bloquear un usuario coa opción "agochar o usuario" activada. Isto suprime o nome de usuario de todas as listas e entradas de rexistro. Está seguro de querer facelo?',
+'ipb-confirmaction' => 'Se está seguro de que quere facelo realmente, por favor marque o campo "{{int:ipb-confirm}}" abaixo.',
'ipb-edit-dropdown' => 'Editar os motivos de bloqueo',
'ipb-unblock-addr' => 'Desbloquear a $1',
'ipb-unblock' => 'Desbloquear un usuario ou enderezo IP',
'version-parser-function-hooks' => 'Asociadores da función do analizador',
'version-hook-name' => 'Nome do asociador',
'version-hook-subscribedby' => 'Subscrito por',
-'version-version' => '(Versión $1)',
-'version-license' => 'Licenza',
+'version-version' => '($1)',
+'version-license' => 'Licenza de MediaWiki',
+'version-ext-license' => 'Licenza',
+'version-ext-colheader-name' => 'Extensión',
+'version-ext-colheader-version' => 'Versión',
+'version-ext-colheader-license' => 'Licenza',
+'version-ext-colheader-description' => 'Descrición',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Licenza para $1',
+'version-license-not-found' => 'Non se atopou información detallada de licenza para esta extensión.',
+'version-credits-title' => 'Receñecemento para $1',
+'version-credits-not-found' => 'Non se atopou información detallada de recoñecemento para esta extensión.',
'version-poweredby-credits' => "Este wiki está desenvolvido por '''[https://www.mediawiki.org/wiki/MediaWiki/gl MediaWiki]''', dereitos de autoría © 2001-$1 $2.",
'version-poweredby-others' => 'outros',
'version-poweredby-translators' => 'os tradutores de translatewiki.net',
'expand_templates_generate_rawhtml' => 'Mostrar o HTML en bruto',
'expand_templates_preview' => 'Vista previa',
+# Unknown messages
+'uploadinvalidxml' => 'O XML do ficheiro cargado non pode ser interpretado.',
);
'actionthrottled' => 'הפעולה הוגבלה',
'actionthrottledtext' => 'כאמצעי נגד ספאם, אינכם מורשים לבצע פעולה זו פעמים רבות מדי בזמן קצר. אנא נסו שוב בעוד מספר דקות.',
'protectedpagetext' => 'דף זה מוגן כדי למנוע עריכה ופעולות אחרות.',
-'viewsourcetext' => '×\91×\90פשר×\95ת×\9b×\9d לצפות בטקסט המקור של הדף ולהעתיקו:',
+'viewsourcetext' => '×\91×\90פשר×\95ת×\9a לצפות בטקסט המקור של הדף ולהעתיקו:',
'viewyourtext' => "באפשרותכם לצפות בטקסט המקור של '''העריכות שלכם''' של הדף ולהעתיקו:",
'protectedinterface' => 'דף זה הוא אחד מסדרת דפים המספקים הודעות מערכת לתוכנה באתר ויקי זה, ומוגן כדי למנוע השחתות.
כדי להוסיף או לשנות תרגומים בכל אתרי הוויקי, אנא השתמשו ב־[//translatewiki.net/ translatewiki.net], פרויקט התרגום של מדיה־ויקי.',
'expand_templates_generate_rawhtml' => 'הצגת HTML גולמי',
'expand_templates_preview' => 'תצוגה מקדימה',
+# Unknown messages
+'uploadinvalidxml' => 'לא ניתן לפרש את ה־XML בקובץ שהועלה.',
);
'linkstoimage-redirect' => '$1 (preusmjeravanje datoteke) $2',
'duplicatesoffile' => '{{PLURAL:$1|Sljedeća datoteka je kopija|$1 sljedeće datoteke su kopije|$1 sljedećih datoteka su kopije}} ove datoteke ([[Special:FileDuplicateSearch/$2|više detalja]]):',
'sharedupload' => 'Ova je datoteka postavljena na $1 i mogu je koristiti ostali projekti.',
-'sharedupload-desc-there' => 'Ova datoteka je s $1 i mogu je koristiti drugi projekti. Pogledajte [$2 stranicu s opisom datoteke] za dodatne informacije.',
+'sharedupload-desc-there' => 'Ova datoteka je s projekta $1 i mogu je koristiti drugi projekti. Pogledajte [$2 stranicu s opisom datoteke] za dodatne informacije.',
'sharedupload-desc-here' => 'Ova datoteka je sa $1 i mogu je koristiti drugi projekti. Opis s njezine [$2 stranice s opisom datoteke] prikazan je ispod.',
'sharedupload-desc-edit' => 'Ova datoteka nalazi se na $1 i može se rabiti na drugim projektima.
Njen opis možete urediti na [$2 stranici opisa datoteke].',
'expand_templates_generate_rawhtml' => 'Hruby HTML pokazać',
'expand_templates_preview' => 'Přehlad',
+# Unknown messages
+'uploadinvalidxml' => 'XML w nahratej dataji njeda so parsować.',
);
'content-not-allowed-here' => 'Le contento "$1" non es permittite in le pagina [[$2]]',
'editwarning-warning' => 'Quitar iste pagina pote causar le perdita de omne modificationes que tu ha facite.
Si tu ha aperite un session, tu pote disactivar iste aviso in le section "Modification" de tu preferentias.',
+'editpage-notsupportedcontentformat-title' => 'Formato de contento non supportate',
+'editpage-notsupportedcontentformat-text' => 'Le formato de contento $1 non es supportate per le modello de contento $2.',
# Content models
'content-model-wikitext' => 'wikitexto',
'expand_templates_generate_rawhtml' => 'Monstrar HTML brute',
'expand_templates_preview' => 'Previsualisation',
+# Unknown messages
+'uploadinvalidxml' => 'Le codice XML in le file incargate non pote esser interpretate.',
);
* @author Remember the dot
* @author Rex
* @author Rv77ax
+ * @author StefanusRA
* @author Urhixidur
* @author William Surya Permana
* @author לערי ריינהארט
'rclistfrom' => 'Perlihatkan perubahan terbaru sejak $1',
'rcshowhideminor' => '$1 suntingan kecil',
'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 pengguna masuk log',
+'rcshowhideliu' => '$1 pengguna-pengguna terdaftar',
'rcshowhideanons' => '$1 pengguna anon',
'rcshowhidepatr' => '$1 suntingan terpatroli',
'rcshowhidemine' => '$1 suntingan saya',
'youhavenewmessages' => 'Þú hefur fengið $1 ($2).',
'youhavenewmessagesfromusers' => 'Þú hefur $1 frá {{PLURAL:$3|öðrum notanda|$3 notendum}} ($2)',
'youhavenewmessagesmanyusers' => 'Þú hefur $1 frá mörgum notendum ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|ein|}} ný skilaboð',
+'newmessageslinkplural' => '{{PLURAL:$1|ný}} skilaboð',
'newmessagesdifflinkplural' => '{{PLURAL:$1|síðasta breyting|síðustu breytingar}} spjallsíðunnar',
'youhavenewmessagesmulti' => 'Þín bíða ný skilaboð á $1',
'editsection' => 'breyta',
Engin skýring gefin.',
'badtitle' => 'Slæmur titill',
'badtitletext' => 'Umbeðin síðutitill er ógildur.',
-'perfcached' => 'Eftirfarandi er afrit af umbeðinni síðu og gæti því ekki verið nýjasta útgáfa hennar. Allt að {{PLURAL:$1|ein niðurstaða er aðgengileg|$1 niðurstöður eru aðgengilegar}} í skyndiminninu.',
-'perfcachedts' => 'Eftirfarandi gögn eru í skyndiminninu, og voru síðast uppfærð $1. Allt að {{PLURAL:$4|ein niðurstaða er aðgengileg|$4 niðurstöður eru aðgengilegar}} í skyndiminninu.',
+'perfcached' => 'Eftirfarandi er afrit af umbeðinni síðu og gæti því ekki verið nýjasta útgáfa hennar. Allt að $1 {{PLURAL:$1|niðurstaða er aðgengileg|niðurstöður eru aðgengilegar}} í skyndiminninu.',
+'perfcachedts' => 'Eftirfarandi gögn eru í skyndiminninu, og voru síðast uppfærð $1. Allt að $4 {{PLURAL:$4|niðurstaða er aðgengileg|niðurstöður eru aðgengilegar}} í skyndiminninu.',
'querypage-no-updates' => 'Lokað er fyrir uppfærslur af þessari síðu. Gögn sett hér munu ekki vistast.',
'viewsource' => 'Skoða efni',
'viewsource-title' => 'Skoða efni $1',
'login-userblocked' => 'Þessi notandi hefur verið settur í bann. Innskráning ekki leyfð.',
'wrongpassword' => 'Uppgefið lykilorð er rangt. Vinsamlegast reyndu aftur.',
'wrongpasswordempty' => 'Lykilorðsreiturinn var auður. Vinsamlegast reyndu aftur.',
-'passwordtooshort' => 'Lykilorð skal vera að minnsta kosti {{PLURAL:$1 |einn stafur|$1 stafir}}.',
+'passwordtooshort' => 'Lykilorð skal vera að minnsta kosti $1 {{PLURAL:$1|stafur|stafir}}.',
'password-name-match' => 'Þarf að lykilorð þitt sé öðruvísi notandanafni þínu',
'password-login-forbidden' => 'Notkun þessa notendanafns og lykilorðs er ekki leyfileg.',
'mailmypassword' => 'Endurstilla lykilorð',
'passwordremindertext' => 'Einhver (líklegast þú, á vistfanginu $1) hefur beðið um að fá nýtt
lykilorð fyrir {{SITENAME}} ($4). Tímabundið lykilorð fyrir notandann „$2“
hefur verið búið til og er núna „$3“. Ef þetta er það sem þú vildir, þarfu að skrá
-þig inn og velja nýtt lykilorð. Þetta tímabundna lykilorð rennur út eftir {{PLURAL:$5|einn dag|$5 daga}}.
+þig inn og velja nýtt lykilorð. Þetta tímabundna lykilorð rennur út eftir $5 {{PLURAL:$5|dag|daga}}.
Ef það var ekki þú sem fórst fram á þetta, eða ef þú mannst lykilorðið þitt,
-og vilt ekki lengur breyta því, skaltu hunsa þetta skilaboð og
+og vilt ekki lengur breyta því, skaltu hunsa þessi skilaboð og
halda áfram að nota gamla lykilorðið.',
'noemail' => 'Það er ekkert netfang skráð fyrir notandan "$1".',
'noemailcreate' => 'Þú verður að skrá gilt netfang',
$2
-Ef þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorð|Tímabundnu lykilorðin}} renna út eftir {{PLURAL:$5|einn dag|$5 daga}}.
+Ef þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorðið rennur|Tímabundnu lykilorðin renna}} út eftir $5 {{PLURAL:$5|dag|daga}}.
Ef það varst ekki þú sem fórst fram á þetta, eða ef þú mannst lykilorðið þitt, og villt ekki lengur breyta því, skaltu hunsa þessi skilaboð og halda áfram að nota gamla lykilorðið.',
'passwordreset-emailtext-user' => 'Notandinn $1 á {{SITENAME}} hefur beðið um endursetningu lykilorðsins þíns fyrir {{SITENAME}} ($4). Aðgangur eftirfarandi {{PLURAL:$3|notanda er|notendum eru}} tengd þessu netfangi:
$2
-Ef þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorð|Tímabundnu lykilorðin}} renna út eftir {{PLURAL:$5|einn dag|$5 daga}}.
+Ef þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorðið rennur|Tímabundnu lykilorðin renna}} út eftir $5 {{PLURAL:$5|dag|daga}}.
Ef það varst ekki þú sem fórst fram á þetta, eða ef þú mannst lykilorðið þitt, og villt ekki lengur breyta því, skaltu hunsa þessi skilaboð og halda áfram að nota gamla lykilorðið.',
'passwordreset-emailelement' => 'Notendanafn: $1
Ef þú vilt ekki að textanum verði breytt skaltu ekki senda hann inn hér.<br />
Þú lofar okkur einnig að þú hafir skrifað þetta sjálfur, að efnið sé í almannaeigu eða að það heyri undir frjálst leyfi. (sjá $1).
'''EKKI SENDA INN HÖFUNDARRÉTTARVARIÐ EFNI ÁN LEYFIS RÉTTHAFA!'''",
-'longpageerror' => "'''VILLA: Textinn sem þú sendir inn er {{PLURAL:$1|eitt kílóbæti|$1 kílóbæti}} að lengd, en hámarkið er {{PLURAL:$2|eitt kílóbæti|$2 kílóbæti}}. Ekki er hægt að vista textann.'''",
+'longpageerror' => "'''VILLA: Textinn sem þú sendir inn er $1 {{PLURAL:$1|kílóbæti|kílóbæti}} að lengd, en hámarkið er $2 {{PLURAL:$2|kílóbæti|kílóbæti}}. Ekki er hægt að vista textann.'''",
'readonlywarning' => "'''AÐVÖRUN: Gagnagrunninum hefur verið læst til að unnt sé að framkvæma viðhaldsaðgerðir, svo þú getur ekki vistað breytingar þínar núna.'''
Þú ættir að klippa og líma textann yfir í textaskjal til þess að geyma hann til seinni tíma.
# Parser/template warnings
'expensive-parserfunction-warning' => "'''Viðvörun:''' Þessi síða inniheldur of mörg vinnslufrek aðgerðar þáttunar köll.
-Hún ætti að innihalda minna en $2 {{PLURAL:$2|kall|köll}}, en {{PLURAL:$1|er nú eitt kall|eru nú $1 köll}}.",
+Hún ætti að innihalda minna en $2 {{PLURAL:$2|kall|köll}}, en {{PLURAL:$1|er nú $1 kall|eru nú $1 köll}}.",
'expensive-parserfunction-category' => 'Síður með of mörg vinnslufrek aðgerðar þáttunar köll',
'post-expand-template-inclusion-warning' => "'''Viðvörun:''' Sniðið tekur of mikið pláss.
Hluti sniðsins verður ekki með.",
'showhideselectedversions' => 'Sýna/fela valdar breytingar',
'editundo' => 'Taka aftur þessa breytingu',
'diff-empty' => '(Enginn munur)',
-'diff-multi' => '({{PLURAL:$1|Ein millibreyting ekki sýnd|$1 millibreytingar ekki sýndar}} frá {{PLURAL:$2|notanda|$2 notendum}}.)',
-'diff-multi-manyusers' => '({{PLURAL:$1|Ein millibreyting ekki sýnd|$1 millibreytingar ekki sýndar}} frá fleiri en {{PLURAL:$2|einum notanda|$2 notendum}}.)',
-'difference-missing-revision' => '{{PLURAL:$2|Ein útgáfa|$2 útgáfur}} samanburðarins ($1) {{PLURAL:$2|fannst|fundust}} ekki.
+'diff-multi' => '$1 ({{PLURAL:$1|millibreyting ekki sýnd|millibreytingar ekki sýndar}} frá $2 {{PLURAL:$2|notanda|notendum}}.)',
+'diff-multi-manyusers' => '($1 {{PLURAL:$1|millibreyting ekki sýnd|millibreytingar ekki sýndar}} frá fleiri en $2 {{PLURAL:$2|notanda|notendum}}.)',
+'difference-missing-revision' => '$2 {{PLURAL:$2|útgáfa|útgáfur}} samanburðarins ($1) {{PLURAL:$2|fannst|fundust}} ekki.
Þetta gerist oftast þegar úreldur samanburðartengill tengir á síðu sem hefur verið eytt.
Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} eyðingarskránni].',
'backend-fail-closetemp' => 'Mistókst að loka tímabundinni skrá.',
'backend-fail-read' => 'Mistókst að lesa skrá $1.',
'backend-fail-create' => 'Mistókst að skrifa skrá $1.',
-'backend-fail-maxsize' => 'Mistókst að skrifa skránna $1 því hún er stærri en {{PLURAL:$2|eitt bæti|$2 bæti}}.',
+'backend-fail-maxsize' => 'Mistókst að skrifa skránna „$1” því hún er stærri en $2 {{PLURAL:$2|bæti}}.',
'backend-fail-readonly' => 'Gagnabankann "$1" er engöngu hægt að lesa í augnablikinu. Ástæðan sem var gefin er: "\'\'$2\'\'"',
'backend-fail-synced' => 'Skráin $1 er í ósamkvæmu ástandi innan innri geymslubakenda',
'backend-fail-connect' => 'Mistókst að tengjast gagnabankanum "$1".',
'undeletecomment' => 'Ástæða:',
'undeletedrevisions' => '$1 {{PLURAL:$1|breyting endurvakin|breytingar endurvaktar}}',
'undeletedrevisions-files' => '$1 {{PLURAL:$1|breyting|breytingar}} og $2 {{PLURAL:$2|skrá|skrár}} endurvaktar',
-'undeletedfiles' => '{{PLURAL:$1|Ein skrá endurvakin|$1 skrár endurvaktar}}',
+'undeletedfiles' => '$1 {{PLURAL:$1|skrá endurvakin|skrár endurvaktar}}',
'cannotundelete' => 'Ekki var hægt að afturkalla eyðingu.
$1',
'undeletedpage' => "'''$1 var endurvakin'''
'watchlistedit-normal-explain' => 'Titlarnir á vaktlistanum þínum er sýndir fyrir neðan.
Til að fjarlægja titil hakaðu í kassann við hliðina á honum og smelltu á „{{int:Watchlistedit-normal-submit}}“. Þú getur einnig [[Special:EditWatchlist/raw|breytt honum opnum]].',
'watchlistedit-normal-submit' => 'Fjarlægja titla',
-'watchlistedit-normal-done' => '{{PLURAL:$1|Ein síða var fjarlægð|$1 síður voru fjarlægðar}} af vaktlistanum þínum:',
+'watchlistedit-normal-done' => '$1 {{PLURAL:$1|síða var fjarlægð|síður voru fjarlægðar}} af vaktlistanum þínum:',
'watchlistedit-raw-title' => 'Breyta opnum vaktlistanum',
'watchlistedit-raw-legend' => 'Breyta opnum vaktlistanum',
'watchlistedit-raw-explain' => 'Titlarnir á vaktlistanum þínum eru sýndir hér fyrir neðan og þeim er hægt að breyta með því að bæta við og taka út af honum;
'expand_templates_generate_rawhtml' => 'Mostra HTML',
'expand_templates_preview' => 'Anteprima',
+# Unknown messages
+'uploadinvalidxml' => 'Il codice XML nel file caricato non può essere elaborato.',
);
'expand_templates_generate_rawhtml' => 'HTML ソースを表示',
'expand_templates_preview' => 'プレビュー',
+# Unknown messages
+'uploadinvalidxml' => 'アップロードされたファイルに含まれる XML が構文解析できませんでした。',
);
'nstab-main' => 'Artikel',
'nstab-user' => 'Panganggo',
'nstab-media' => 'Media',
-'nstab-special' => 'Istiméwa',
+'nstab-special' => 'Astamiwa',
'nstab-project' => 'Proyek',
'nstab-image' => 'Gambar',
'nstab-mediawiki' => 'Pariwara',
'rc-old-title' => 'wigatiné digawé minangka "$1"',
# Recent changes linked
-'recentchangeslinked' => 'Pranala Pilihan',
-'recentchangeslinked-feed' => 'Pranala Pilihan',
-'recentchangeslinked-toolbox' => 'Pranala Pilihan',
+'recentchangeslinked' => 'Pangowahan sing terkait',
+'recentchangeslinked-feed' => 'Pangowahan sing terkait',
+'recentchangeslinked-toolbox' => 'Pangowahan sing terkait',
'recentchangeslinked-title' => 'Owah-owahan sing ana gandhèngané karo "$1"',
'recentchangeslinked-summary' => "Kaca astaméwa (kaca kusus) iki mènèhi daftar owah-owahan pungkasan ing kaca-kaca sing kagandhèng (utawa anggota sawijining kateogri). Kaca sing [[Special:Watchlist|panjenengan awasi]] ditandhani '''kandel'''.",
'recentchangeslinked-page' => 'Jeneng kaca:',
'fileduplicatesearch-noresults' => 'Ora ana berkas mawa jeneng "$1" ditemokaké.',
# Special:SpecialPages
-'specialpages' => 'Kaca istiméwa',
+'specialpages' => 'Kaca astamiwa',
'specialpages-note-top' => 'Katrangan',
'specialpages-note' => '* Kaca astamiwa biasa.
* <span class="mw-specialpagerestricted">Kaca astamiwa kawatesan.</span>',
'delete-warning-toobig' => 'ამ გვერდს ძალიან გრძელი ისტორია გააჩნია, $1 {{PLURAL:$1|ვერსიაზე|ვერსიიებზე|ვერსიებზე}} მეტი.
მისმა წაშლამ შესაძლოა გამოიწვიოს საიტის მონაცემთა ბაზის {{SITENAME}} არაკორექტული მუშაობა;
იმოქმედეთ სიფრთხილით.',
+'deleting-backlinks-warning' => "'''გაფრთხილება:''' რამდენიმე სხვა გვერდი დაკავშირებულია ამ წასაშლელ გვერდთან.",
# Rollback
'rollback' => 'ცვლილებების გაუქმება',
'tog-enotifrevealaddr' => 'Ssken e-mail inu asmi yettwazen email n talɣut',
'tog-shownumberswatching' => 'Ssken geddac yellan n yimseqdacen iɛessasen',
'tog-oldsig' => 'Azmul yellan :',
-'tog-fancysig' => 'ǧǧ azmul am yettili (war azday awurman)',
+'tog-fancysig' => 'Eǧǧ azmul am yettili (war azday awurman)',
'tog-uselivepreview' => 'Sseqdec askan arurad (Experimental)',
'tog-forceeditsummary' => 'Ini-iyi-d mi sskecmeɣ agzul amecluc',
'tog-watchlisthideown' => 'Ffer ibeddlen inu seg wumuɣ n uɛessi inu',
ur tezmireḍ ara ad tesɛuḍ awal n tbaḍnit i tettuḍ.',
'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}}.',
+'throttled-mailpassword' => 'Neceggɛed yakan tirawt n uwennez i awal-ik/im n uɛaddi deg {{PLURAL:$1|asrag agi aneggaru|$1 isragen agi ineggura}}. Awennez n uwal n uɛaddi yettwaceggaɛ tikelt kan deg {{PLURAL:$1|asrag|$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.',
-'emailauthenticated' => 'Tansa e-mail inek/inem tesesteb ass n $2 af $3.',
-'emailnotauthenticated' => 'Tansa e-mail inek mazal ur tettuɛqel. Ḥedd e-mail ur ttwazen i ulaḥedd n iḍaɣaren-agi.',
+'emailauthenticated' => 'Tansa e-mail inek/inem tesergeg ass n $2 af $3.',
+'emailnotauthenticated' => 'Tansa email inek mazal ur tettuɛqel. Ur d netceggaɛ ara email i yal tiseɣnin agi.',
'noemailprefs' => 'Efk tansa e-mail iwakken ad leḥḥun iḍaɣaren-nni.',
'emailconfirmlink' => 'Sentem tansa e-mail inek',
'invalidemailaddress' => 'Tansa e-mail-agi ur telhi, ur tesɛi ara taseddast n lɛali. Ssekcem tansa e-mail s taseddast n lɛali neɣ ur tefkiḍ acemma.',
'cannotchangeemail' => 'Ur t-zemreḍ ara ad beddeleḍ tansa e-mail deg uwiki agi.',
'emaildisabled' => 'Asmel agi ur yezmer ara ad i cegaɛ e-mail.',
'accountcreated' => 'Isem n wemseqdac yettwaxleq',
-'accountcreatedtext' => 'Isem n wemseqdac i $1 yettwaxleq.',
+'accountcreatedtext' => 'Amiḍan n umseqdac i [[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|amyannan]]) yexelqed.',
'createaccount-title' => 'Asnulfu n umiḍan i {{SITENAME}}',
'createaccount-text' => 'Albeɛḍ yesnulfu-d amiḍan i tansa e-amil inek/inem ɣef {{SITENAME}} ($4) s-isem n-useqdac « $2 », s awal n uɛaddi « $3 ».
Ilaq tura ad lldiḍ taɣimit dɣa ad beddeleḍ awal ik/im n uɛaddi.',
'usernamehasherror' => 'Isem n useqdac ur yezmer ara ad i sɛu isekkilen n ugeddeḥ',
'login-throttled' => 'Tɛerdeḍ ad qqeneḍ aṭas tiqwal deg dqiqat agi iɛddan.
-Ilaq ad rǧuḍ ciṭaḥ uqbel ad ɛerdeḍ tikkelt nniḍen.',
+Ilaq ad rǧuḍ $1 uqbel ad ɛerdeḍ tikkelt nniḍen.',
'login-abort-generic' => 'Taremt ik/im n tuqqna tebrir',
'loginlanguagelabel' => 'Tutlayt: $1',
'suspicious-userlogout' => 'Asuter n usenser yugwi acku yella ugur s iminig naɣ s tazarkatut n uqeddac proxy.',
+'createacct-another-realname-tip' => '* Isem n ṣṣeḥ d-axeṭran.
+Ma teɛzemeḍ a t-tefkeḍ, ad yettuseqdac iwakken ad snen medden anwa yuran tikkin inek.',
# Email sending
'php-mail-error-unknown' => 'anezri warisem deg tawuri mail() n PHP',
'user-mail-no-addy' => 'Ɛred ad icegaɛ e-mail war tansa e-mail',
+'user-mail-no-body' => 'Arram n uceggaɛ email s tafekka tilemt neɣ d-awezlan aṭas.',
# Change password dialog
'changepassword' => 'Beddel awal n tbaḍnit',
'newpassword' => 'Awal n tbaḍnit amaynut:',
'retypenew' => 'Ɛiwed ssekcem n tbaḍnit amaynut:',
'resetpass_submit' => 'Eg awal n tbaḍnit u kcem',
-'changepassword-success' => 'Awal n tbaḍnit yettubeddel! Qrib ad tkecmeḍ...',
+'changepassword-success' => 'Awal n uɛaddi yettubeddel s lerbaḥ !',
'resetpass_forbidden' => 'Ur zemreḍ ara ad beddeleḍ awalen n uɛaddi',
'resetpass-no-info' => 'Ilaq ad qqeneḍ iwakken ad ẓṛeḍ asebter agi.',
'resetpass-submit-loggedin' => 'Beddel awal n uɛaddi',
'resetpass-wrong-oldpass' => 'Awal n uɛaddi ur i seɣbel ara.
Ahat ilaq ad beddeleḍ awal ik/im n uɛaddi naɣ ad ssutereḍ awal n uɛaddi amaynut.',
'resetpass-temp-password' => 'Awal n uɛaddi amakud',
+'resetpass-abort-generic' => 'Asiɣzef yesemmewet abeddel n uwal n uɛaddi.',
# Special:PasswordReset
'passwordreset' => 'Awennez tikkelt nniḍen n awal uɛaddi',
+'passwordreset-text-one' => 'Ččur tiferkit agi iwakken ad wennezeḍ awal-ik/im n uɛaddi.',
+'passwordreset-text-many' => '{{PLURAL:$1|Čcur yiwet n tiɣwezza iwakken ad rmeseḍ awal n uɛaddi uɛḍil deg tirawt.}}',
'passwordreset-legend' => 'Awennez tikkelt nniḍen n awal uɛaddi',
'passwordreset-disabled' => 'Awennez n awal uɛaddi yensa deg uwiki agi.',
+'passwordreset-emaildisabled' => 'Tiseɣnin email nsant ɣef wiki agi.',
'passwordreset-username' => 'Isem n useqdac',
'passwordreset-domain' => 'Talɣut :',
'passwordreset-capture' => 'Ẓeṛ tirawt ?',
'passwordreset-capture-help' => 'Lukan ad tekkiḍ ɣef texxamt agi, tirawt (deg-es awal n uɛaddi akudan) att beqqeḍ dɣa ad tetwetceggaɛ i useqdac.',
'passwordreset-email' => 'Tansa e-mail :',
'passwordreset-emailtitle' => 'Tilɣa n umiḍan ɣef {{SITENAME}}',
-'passwordreset-emailtext-ip' => 'Yiwen (Ahat kečč/kem, seg tansa IP $1) yessutered asiwel n tilɣa n umiḍan inek/inem i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yedrew|imiḍanen n iseqdacen agi drewen}} s tansa e-mail agi :
+'passwordreset-emailtext-ip' => 'Yiwen (Ahat kečč/kem, seg tansa IP $1) yessutered awennez n awal n uɛaddi i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yeqqen|imiḍanen n iseqdacen agi qqenen}} s tansa e-mail agi :
$2
-{{PLURAL:$3|Awal n uɛaddi agi ad i aff tasewti-s|Awalen n uɛaddi agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
-'passwordreset-emailtext-user' => 'Aseqdac $1 ɣef {{SITENAME}} yessutered asiwel n tilɣa n umiḍan inek/inem i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yedrew|imiḍanen n iseqdacen agi drewen}} s tansa e-mail agi :
+{{PLURAL:$3|Awal n uɛaddi uɛḍil agi ad i aff tasewti-s|Awalen n uɛaddi uɛḍilen agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
+'passwordreset-emailtext-user' => 'Aseqdac $1 ɣef {{SITENAME}} yessutered awennez n awal n uɛaddi i {{SITENAME}} ($4). {{PLURAL:$3|Amiḍan n useqdac agi yeqqen|imiḍanen n iseqdacen agi qqenen}} s tansa e-mail agi :
$2
-{{PLURAL:$3|Awal n uɛaddi agi ad i aff tasewti-s|Awalen n uɛaddi agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
+{{PLURAL:$3|Awal n uɛaddi uɛḍil agi ad i aff tasewti-s|Awalen n uɛaddi uɛḍilen agi ad affen taseweti nsen}} deg {{PLURAL:$5|yiwen ass|$5 ussan}}. Ilaq tura ad qqeneḍ dɣa ad freneḍ awal n uɛaddi amaynut. Lukan mačči d kečč/kem i xedmen asuter agi, naɣ tecfiḍ tura i awal n uɛaddi inek/inem, tzemreḍ ad eǧǧeḍ izen agi.',
'passwordreset-emailelement' => 'Isem n useqdac : $1
Awal n uɛddi akudan : $2',
-'passwordreset-emailsent' => 'Tirawt n usmekti tetwazen.',
-'passwordreset-emailsent-capture' => 'Tirawt n usmekti tetwazen, ẓeṛ-itt ddaw agi.',
-'passwordreset-emailerror-capture' => 'Tirawt n usmekti t-arewed, ẓeṛ-itt ddaw agi, lamaɛna azen yefkad anezri (tirawt ur tru ara) : $1',
+'passwordreset-emailsent' => 'Tirawt n uwennez n awal n uɛaddi tetwaceggaɛ.',
+'passwordreset-emailsent-capture' => 'Tirawt n uwennez n awal n uɛaddi tetwaceggaɛ, ẓeṛ-itt ddaw agi.',
+'passwordreset-emailerror-capture' => 'Tirawt n uwennez n awal n uɛaddi t-arewed, ẓeṛ-itt ddaw agi, lamaɛna aceggaɛ i {{GENDER:$2|umseqdac}} yefkad anezri : $1',
# Special:ChangeEmail
'changeemail' => 'Beddel tansa n e-mail',
'changeemail-oldemail' => 'Tansa e-mail n tura :',
'changeemail-newemail' => 'Tansa e-mail tamaynut :',
'changeemail-none' => '(ulac)',
+'changeemail-password' => 'Awal-ik/im n uɛaddi ɣef {{SITENAME}} :',
'changeemail-submit' => 'Beddel tansa e-mail',
'changeemail-cancel' => 'Semmewet',
+# Special:ResetTokens
+'resettokens' => 'Wennez tiddas',
+'resettokens-text' => 'D-agi tzemreḍ ad twennezeḍ tiddas i ɛemmeden ad kecmeḍ ar isefka usligen i qqenen ar amiḍan inek/inem.
+
+Ilaq ad twennezeḍ tiddas ma tferqeḍ-ten s tuccḍa s umseqdac nniḍen neɣ ma amiḍan inek/inem yexṣer.',
+'resettokens-no-tokens' => 'Ulac tiddas an wennez.',
+'resettokens-legend' => 'Wennez tiddas',
+'resettokens-tokens' => 'Tiddas :',
+'resettokens-token-label' => '$1 (azal amiran : $2)',
+'resettokens-watchlist-token' => 'Tiddest i usuddem (Atom/RSS) web n [[Special:Watchlist|ibeddilen n isebtar n umuɣ inek/inem n uḍfar]]',
+'resettokens-done' => 'Tiddas i wennezen.',
+'resettokens-resetbutton' => 'Wennez tiddas i fernen',
+
# Edit page toolbar
'bold_sample' => 'Aḍris aberbuz',
'bold_tip' => 'Aḍris aberbuz',
'loginreqlink' => 'Kcem',
'loginreqpagetext' => 'Yessefk $1 iwakken ad teẓriḍ isebtar wiyaḍ.',
'accmailtitle' => 'Awal n tbaḍnit yettwazen.',
-'accmailtext' => "Awal n uɛaddi id yuran s ugacur i [[User talk:$1|$1]] yetwecgaɛ i $2.
-Awal n uɛaddi i umiḍan agi amaynut yezmer ad yetbeddel ɣef usebter n ''[[Special:ChangePassword|ubeddel n awal uɛddi]]'' sakin tuqqna.",
+'accmailtext' => 'Awal n uɛaddi id yuran s ugacur i [[User talk:$1|$1]] yetweceggaɛ i $2.
+Yezmer ad yetbeddel ɣef usebtar [[Special:ChangePassword|Abeddel n awal uɛddi]] sakin tuqqna.',
'newarticle' => '(Amaynut)',
'newarticletext' => 'Tḍefreḍ azday ɣer usebter mazal ur yettwaxleq ara.
Akken ad txelqeḍ asebter-nni, aru deg tenkult i tella deg ukessar
'''Cfut, ttagi d azar-timeẓriwt kan.'''
Ibeddlen mazal ur ttusmektin ara!",
-'continue-editing' => 'Kemmel abeddel',
+'continue-editing' => 'Ṛuḥ ar taɣzut n ubeddel',
'previewconflict' => 'Pre-timeẓriwt-agi tesskan aḍris i yellan deg usawen lemmer tebɣiḍ a tt-tesmektiḍ.',
'session_fail_preview' => "'''Suref-aɣ! ur nezmir ara a nesmekti abeddil inek axaṭer yella ugur.
G leɛnayek ɛreḍ tikelt nniḍen. Lukan mazal yella ugur, ffeɣ umbeɛd kcem.'''",
'nocreate-loggedin' => 'Ur tesɛiḍ ara turagt i usnulfu n isebtar imaynuten.',
'sectioneditnotsupported-title' => 'Abeddel n tigezmi agi ur yezmer ara',
'sectioneditnotsupported-text' => 'Abeddel n tigezmi ur yezmer ara deg usebtar agi n ubeddel.',
-'permissionserrors' => 'Anezri n turagt',
+'permissionserrors' => 'Agul n turagt',
'permissionserrorstext' => 'Ur tesɛiḍ ara turagt iwakken ad xedmeḍ wayagi i {{PLURAL:$1|taɣẓint|tiɣẓinin}} agi :',
'permissionserrorstext-withaction' => 'Ur sɛiḍ ara ttesriḥ af $2, i {{PLURAL:$1|taɣẓint|tiɣẓinin}} agi :',
'recreate-moveddeleted-warn' => "'''Ɣur-wet : asebter agi i tebɣam ad snulfum, yetwekkes uqbel.'''
Ahat yetwemḥa.',
'edit-conflict' => 'Amgirred n ubeddel.',
'edit-no-change' => 'Abeddel inek/inem ur yetwexdam ara acku ur di ban ara abeddel deg uḍris.',
+'postedit-confirmation' => 'Abeddel inek/inem yetwakles.',
'edit-already-exists' => 'Asebter amaynut ur d yesnufu ara.
Yella yakan.',
'defaultmessagetext' => 'Izen s lexṣas',
'content-failed-to-parse' => 'Tasleṭ n ugbur n $2 i talɣa $1 texseṛ : $3',
'invalid-content-data' => 'Isefka n ugbur ur ɣbelen ara',
'content-not-allowed-here' => 'Agbur "$1" ur yesɛa ara turagt ɣef usebter [[$2]]',
+'editwarning-warning' => 'Ma ad teffeɣeḍ deg usebtar agi, akkw ibeddilen id xeddemeḍ ad sṛuḥen.
+
+Ma teqqeneḍ, tzemreḍ ad senseḍ alɣu agi deg tigezmi « Abeddel » n ismenyifen inek/inem.',
+'editpage-notsupportedcontentformat-title' => 'Amasal n ugbur ur d-yetwarfed ara',
+'editpage-notsupportedcontentformat-text' => 'Amasal n ugbur $1 ur d-yetwarfed ara sɣur talɣa n ugbur $2.',
# Content models
'content-model-wikitext' => 'wikiaḍris',
'undo-failure' => 'Ur yezmir ara ad issefu abeddel axaṭer yella amennuɣ abusari deg ubeddel.',
'undo-norev' => 'Abeddel ur yezmer ara ad yetwekkes acku ulac-itt naɣ tetwekkes yakan',
'undo-summary' => 'Ssefsu tasiwelt $1 sɣur [[Special:Contributions/$2|$2]] ([[User talk:$2|Meslay]])',
+'undo-summary-username-hidden' => 'Semmewet tacaggart $1 sɣur amseqdac yeffren',
# Account creation failure
'cantcreateaccounttitle' => 'Ur yezmir ara ad yexleq isem n wemseqdac',
'cantcreateaccount-text' => "Asnulfu n umiḍan seg tansa IP (<b>$1</b>) tekyef sɣur [[User:$3|$3]].
Taɣẓint n $3 : ''$2''",
+'cantcreateaccount-range-text' => "Asnulfu n umiḍan seg tansiwin IP deg tagrumma '''$1''', i sseddan tansa inek/inem IP ('''$4'''), twawḥelen sɣur [[User:$3|$3]].
+
+Taɣẓint i-d yefka/tefka $3 : ''$2''",
# History pages
'viewpagelogs' => 'Ẓer aɣmis n usebter-agi',
(amgirred) = amgirred akk d tasiwelt ssabeq, M = abeddel afessas.',
'history-fieldset-title' => 'Inig deg umazray',
'history-show-deleted' => 'Ekkes kan',
-'histfirst' => 'Tikkin timezwura',
-'histlast' => 'Tikkin tineggura',
+'histfirst' => 'tiqdimin',
+'histlast' => 'timaynutin',
'historysize' => '({{PLURAL:$1|1 atamḍan|$1 itamḍanen}})',
'historyempty' => '(amecluc)',
'revdelete-text' => 'Ileqman d tidyanin yettumḥan ad qqimen deg umezruy n usebter dɣa deg iɣmisen, maca agbur nsen ur i sɛu ara tuffart i uzayez."
Inedbalen wiyaḍ deg {{SITENAME}} zemren ad ẓṛen imuren i yettwafren u zemren a ten-mḥan, ḥaca ma llan icekkilen.',
'revdelete-confirm' => 'Sergeg ma tebɣiḍ ad xedmeḍ tigawt agi, fehmeḍ inalkamen, dɣa temtawiḍ s [[{{MediaWiki:Policy-url}}|ilugan]].',
-'revdelete-suppress-text' => "Ilaq tukksa at illi kan deg tijṛa agi :
-* tilɣa n yiwen ur ezgan ara
-*: ''tansa, uṭṭun n tilifun, uṭṭun n taɣellist tamettit, …''",
+'revdelete-suppress-text' => "Ilaq tukksa att illi \"kan\" deg tijṛa agi :
+* Tilɣa ahat tinergamin
+* Tilɣa ur sɛant ara amkan d-agi
+*: ''tansa, uḍḍun n tilifun, uḍḍun n taɣellist tamettit, …''",
'revdelete-legend' => 'Sbebd akref n tamuɣli',
-'revdelete-hide-text' => 'Ffer aḍris n tsiwelt',
+'revdelete-hide-text' => 'Aḍris n tacaggart',
'revdelete-hide-image' => 'Ffer ayen yellan deg ufaylu',
'revdelete-hide-name' => 'Ffer tigawt d nnican',
-'revdelete-hide-comment' => 'Ffer abeddel n uwennit',
-'revdelete-hide-user' => 'Ffer Isem n wemseqdac/IP n umeskar',
+'revdelete-hide-comment' => 'Beddel agzul',
+'revdelete-hide-user' => 'Isem n umseqdac/Tansa IP n umaẓrag',
'revdelete-hide-restricted' => 'Mḥu isefka agi i inedbalen d yimdanen wiyaḍ',
'revdelete-radio-same' => '(ur beddel ara)',
-'revdelete-radio-set' => 'Ih',
-'revdelete-radio-unset' => 'Ala',
+'revdelete-radio-set' => 'Udrig',
+'revdelete-radio-unset' => 'Yeban',
'revdelete-suppress' => 'Kkes talɣut seg inedbalen d yimdanen wiyaḍ',
'revdelete-unsuppress' => 'Kkes icekkilen ɣef tisiwal i yuɣalen-d',
'revdelete-log' => 'Ayɣer',
'compareselectedversions' => 'Ẓer imgerraden ger tisiwal i textareḍ',
'showhideselectedversions' => 'Ssken/Ffer ileqman i xtiṛen',
'editundo' => 'ssefsu',
+'diff-empty' => '(Ulac amgerrad)',
'diff-multi' => '({{PLURAL:$1|Yiwet tasiwelt tabusarit|$1 n tisiwal tibusarin}} af {{PLURAL:$2|amseqdac|$2 imseqdacen}} {{PLURAL:$1|ur ttumlal ara|ur ttumlalent ara}})',
'diff-multi-manyusers' => '({{PLURAL:$1|Yiwen lqem agrawan|$1 ileqman igrawanen}} af {{PLURAL:$2|aseqdac|$2 iseqdacen}} {{PLURAL:$1|yeffer|ffren}})',
'difference-missing-revision' => '{{PLURAL:$1|Yiwet tacaggart|$1 ticaggartin}} n tameẓla agi ($1) {{PLURAL:$2|ur tella ara (ulac)|ur llant ara (ulac)}}.
'powersearch-togglenone' => 'Ulac',
'search-external' => 'Anadi yeffɣen',
'searchdisabled' => 'Anadi deg {{SITENAME}} yettwakkes. Tzemreḍ ad tnadiḍ s Google. Meɛna ur tettuḍ ara, tasmult n google taqdimt.',
+'search-error' => 'Tella tuccḍa deg unadi n : $1',
# Preferences page
'preferences' => 'Isemyifiyen',
-'mypreferences' => 'Isemyifiyen inu',
+'mypreferences' => 'Isemyifiyen',
'prefs-edits' => 'Amḍan n ibeddlilen :',
+'prefsnologintext2' => 'Ilaq ad $1 iwakken ad sbaduḍ ismenyifen inek/inem.',
'prefs-skin' => 'Aglim',
'skin-preview' => 'Pre-timeẓriwt',
'datedefault' => 'Ur sɛiɣ ara asemyifi',
'prefs-email' => 'Tixtiṛiyin n tira',
'prefs-rendering' => 'Tummant',
'saveprefs' => 'Smekti',
-'restoreprefs' => 'Err akkw azalen s lexṣas',
+'restoreprefs' => 'Err akkw iɣewwaren s lexṣas (deg akkw tigezmiwin)',
'prefs-editing' => 'Abedddil',
'rows' => 'Ijerriḍen:',
'columns' => 'Tigejda:',
'searchresultshead' => 'Anadi',
-'resultsperpage' => 'Geddac n tiririyin i mkul asebter:',
'stub-threshold' => 'Talast timinegt i <a href="#" class="stub">izdayen ɣer ibegzan</a> (itamḍanen) :',
'stub-threshold-disabled' => 'Yensa',
'recentchangesdays' => 'Amḍan n ussan an beqqeḍ deg ibeddilen ineggura.',
'recentchangesdays-max' => 'Afellay $1 {{PLURAL:$1|ass|ussan}}',
'recentchangescount' => 'Amḍan n ibeddilen i ubeqqeḍ s lexṣas :',
'prefs-help-recentchangescount' => 'Wagi yesɛa deg-es ibeddilen ineggura, isebtar n umezruy d iɣmisen.',
+'prefs-help-watchlist-token2' => 'Hattan tasarut tufurt n usuddem Web n umuɣ inek/inem n uḍfar.
+Akkw amḍan yesɛan tasarut agi, ad yezmer ad i ɣer umuɣ inek/inem n uḍfar, ur d-sselɣu ara tasarut agi ihi.
+[[Special:ResetTokens|Nqer d-agi ma tebɣiḍ ad wennezeḍ tasarut agi]].',
'savedprefs' => 'Isemyifiyen inek yettusmektan.',
'timezonelegend' => 'Iẓḍi n ukud :',
'localtime' => 'Asrag adigan :',
Wagi ur yezmer ara ad yetwekkes.',
'prefs-emailconfirm-label' => 'Aragag n tirawt :',
'youremail' => 'E-mail *:',
-'username' => 'Isem n wemseqdac:',
-'uid' => 'Amseqdac ID:',
-'prefs-memberingroups' => 'Aεeggal n {{PLURAL:$1|ugraw|igrawen}} :',
+'username' => '{{GENDER:$1|Isem n umseqdac|Isem n tamseqdact}} :',
+'uid' => 'Uḍḍun n {{GENDER:$1|umseqdac|tamseqdact}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Aεeggal|Taɛggalt}} n {{PLURAL:$1|ugraw|igrawen}} :',
'prefs-registration' => 'Azmez n tiggezt :',
'yourrealname' => 'Isem n ṣṣeḥ *:',
'yourlanguage' => 'Tutlayt:',
'badsig' => 'Azmul mačči d ṣaḥiḥ; Ssenqed tags n HTML.',
'badsiglength' => 'Azmul inek/inem, teɣwzi-s tameqqṛant aṭas.
Ur ilaq ara ad i sɛu ugar n $1 {{PLURAL:$1|asekkil|isekkilen}}.',
-'yourgender' => 'Tawsit :',
-'gender-unknown' => 'Ulac tumlin',
-'gender-male' => 'Amalay',
-'gender-female' => 'Untay',
-'prefs-help-gender' => 'Axetṛan : yetseqdec iwakken ad yefk tawsit i inzan n ugrudem. Talɣut agi at illi tazayert.',
+'yourgender' => 'Amek i tebɣiḍ ad n-ini fellak(m) ?',
+'gender-unknown' => 'Ur bɣiɣ ara ad iniɣ',
+'gender-male' => 'Yebeddel isebtar n wiki',
+'gender-female' => 'Tebeddel isebtar n wiki',
+'prefs-help-gender' => 'Sbadu asmenyif agi d-afrayan.
+Aseɣẓan agi yetseqdac azal-is iwakken ad yemeslay s kečč/kem dɣa ad yefk isem-ik/im i wiyaḍ nniḍen s useqdac n tawsit tajeṛṛumant.
+Talɣut agi attili d-tazayezt.',
'email' => 'E-mail',
'prefs-help-realname' => '* Isem n ṣṣeḥ (am tebɣiḍ): ma textareḍ a t-tefkeḍ, ad yettuseqdac iwakken ad snen medden anwa yura tikkin inek.',
'prefs-help-email' => '* E-mail (am tebɣiḍ): Teǧǧi imseqdacen wiyaḍ a k-aznen email mebla ma ẓren tansa email inek.',
'prefs-signature' => 'Azmul',
'prefs-dateformat' => 'Amasal n izemzan',
'prefs-timeoffset' => 'Asekḥer n usrag',
-'prefs-advancedediting' => 'Tixtiṛiyin timahlanin',
+'prefs-advancedediting' => 'Tixtiṛiyin timuta',
+'prefs-editor' => 'Amaẓrag',
+'prefs-preview' => 'Azarskan',
'prefs-advancedrc' => 'Tixtiṛiyin timahlanin',
'prefs-advancedrendering' => 'Tixtiṛiyin timahlanin',
'prefs-advancedsearchoptions' => 'Tixtiṛiyin timahlanin',
'prefs-displayrc' => 'Tixtiṛiyin n ubeqqeḍ',
'prefs-displaysearchoptions' => 'Tixtiṛiyin n ubeqqeḍ',
'prefs-displaywatchlist' => 'Tixtiṛiyin n ubeqqeḍ',
+'prefs-tokenwatchlist' => 'Tiddest',
'prefs-diffs' => 'Timeẓliwin',
+'prefs-help-prefershttps' => 'Asmenyif agi, ad yelḥu ar tuqqna ay d-yetteddun.',
+'prefs-tabs-navigation-hint' => 'Taxbalut : Tzemreḍ ad seqdeceḍ tineccabin n uzelmaḍ d uyeffus iwakken ad ssileleḍ gar iccaren.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'E-mail agi teɣbel',
'userrights-no-interwiki' => 'Ur tesɛiḍ ara turagt iwakken ad beddeleḍ izerfan n iseqdacen ɣef wiki nniḍen.',
'userrights-nodatabase' => 'Taffa n isefka « $1 » ulac itt naɣ mačči d tadigant.',
'userrights-nologin' => 'Ilaq ad [[Special:UserLogin|qqeneḍ]] s yiwen umiḍan anedbal iwakken ad beddeleḍ izerfan n useqdac.',
-'userrights-notallowed' => 'Amiḍan inek/inem ur yesɛa ara turagt iwakken ad beddeleḍ izerfan n useqdac.',
+'userrights-notallowed' => 'Ur tesɛiḍ ara turagt ad rnuḍ neɣ ad ekkeseḍ izerfan n umseqdac.',
'userrights-changeable-col' => 'Igrawen i tzemreḍ ad beddeleḍ',
'userrights-unchangeable-col' => 'Igrawen ur tzemreḍ ara ad beddeleḍ',
+'userrights-conflict' => 'Ccwal n ubeddel n izerfan n umseqdac ! Ilaq ad ɛzemeḍ tikelt nniḍen dɣa ad sergegeḍ ibeddilen.',
+'userrights-removed-self' => 'Tekkeseḍ s lerbaḥ izerfan inek/inem. Tura ur tzemreḍ ara ad kecmeḍ ar usebtar agi.',
# Groups
'group' => 'Adrum:',
'right-reupload-shared' => 'Ɛefes deg udigan afaylu yellan ɣef azadur azduklan',
'right-upload_by_url' => 'Kter afaylu seg tansa URL',
'right-purge' => 'Senger tazarkatut n isebtar war asuter n uragag',
-'right-autoconfirmed' => 'Beddel isebtar azinsegdelen',
+'right-autoconfirmed' => 'Ur i tilli ara yeswaɣ sɣur tilisa n uktum yeqqenen ar tansiwin IP',
'right-bot' => 'Ad yilli yesniret am ukala yeswurmen',
'right-nominornewtalk' => 'Ur ndeḥ ara tazmilt n inzan imaynuten ma neseqdac abeddel amectuḥ ɣef usebtar n umeslay n yiwen useqdac',
'right-apihighlimits' => 'Seqdec tilisa tid ɛlayen deg tuttriwin API',
'right-hideuser' => 'Kyef aseqdac s tuffra n isem-is ar udem n uzayez',
'right-ipblock-exempt' => 'Zizdew tansiwin IP yekyefen, ikyafen iwurmanen d ikyafen n tagrummiwin IP',
'right-proxyunbannable' => 'Zizdew ikyafen iwurmanen n iqeddacen proxy',
-'right-unblockself' => 'Ad ekkesen akyaf imanen nsen',
-'right-protect' => 'Beddel aswir n umesten n isebtar dɣa beddel isebtar i gdelen',
-'right-editprotected' => 'Beddel isebtar i gdelen (war asegdel s uceṛcuṛ)',
+'right-unblockself' => 'Ad yekkes akyaf iman-is',
+'right-protect' => 'Beddel iswiren n umesten dɣa beddel isebtar i gdelen s uceṛcuṛ',
+'right-editprotected' => 'Beddel isebtar i gdelen s « {{int:protect-level-sysop}} »',
+'right-editsemiprotected' => 'Beddel isebtar i gdelen s « {{int:protect-level-autoconfirmed}} »',
'right-editinterface' => 'Beddel agrudem n useqdac',
'right-editusercssjs' => 'Beddel ifuyla CSS d JavaScript n iseqdacen nniḍen',
'right-editusercss' => 'Beddel ifuyla CSS n iseqdacen nniḍen',
'right-edituserjs' => 'Beddel ifuyla JavaScript n iseqdacen nniḍen',
+'right-editmyusercss' => 'Beddel ifuyla CSS n umseqdac inek/inem',
+'right-editmyuserjs' => 'Beddel ifuyla Javascript n umseqdac inek/inem',
+'right-viewmywatchlist' => 'Zeṛ umuɣ inek/inem n uḍfar',
+'right-editmywatchlist' => 'Beddel umuɣ inek/inem n uḍfar. Ger tamawt af kra n tigawin ad rnunt isebtar nniḍen war azref agi.',
+'right-viewmyprivateinfo' => 'Zeṛ isefka udmawanen inek/inem (amedya : tansa email, isem n tiddet)',
+'right-editmyprivateinfo' => 'Beddel isefka udmawanen inek/inem (amedya : tansa email, isem n tiddet)',
+'right-editmyoptions' => 'Beddel ismenyifen inek/inem',
'right-rollback' => 'Ekkes s urured ibeddilen n umedraw aneggaru deg yiwen asebter',
'right-markbotedits' => 'Creḍ ibeddilen yetwekkesen am aken d aṛubut i tni beddelen.',
'right-noratelimit' => 'Ur i tilli ara yeswaɣ sɣur tilisa n utug',
'action-block' => 'Kyef deg tira aseqdac agi',
'action-protect' => 'beddel iswiren n umesten i usebter agi',
'action-rollback' => 'ekkes s urured ibeddilen n umedraw aneggaru yebeddelen yiwen usebter',
-'action-import' => 'Kter asebter agi seg wiki nniḍen',
-'action-importupload' => 'Kter asebter agi seg ufaylu n wezdam (upload)',
+'action-import' => 'kter isebtar agi seg wiki nniḍen',
+'action-importupload' => 'kter isebtar agi seg ufaylu n wezdam',
'action-patrol' => 'Creḍ abeddel n wiyaḍ nniḍen am aken tesɛa tacaggart',
'action-autopatrol' => 'ad sɛuḍ tacaggart i ubeddil ik',
'action-unwatchedpages' => 'Sken-d tabdart n isebtaren ur yettwalan ara.',
'action-userrights-interwiki' => 'Ẓreg izerfan n umseqdac deg wikis wiyaḍ',
'action-siteadmin' => 'sekkweṛ naɣ kkes aseḍru i taffa n isefka',
'action-sendemail' => 'Ceggaɛ tira',
+'action-editmywatchlist' => 'beddel umuɣ inek uḍfar',
+'action-viewmywatchlist' => 'zeṛ umuɣ inek/inem n uḍfar',
+'action-viewmyprivateinfo' => 'zeṛ tilɣa inek tusligin',
+'action-editmyprivateinfo' => 'beddel tilɣa inek tusligin',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|Abeddel|Ibeddlen}}',
+'enhancedrc-since-last-visit' => '$1 {{PLURAL:$1|seg tarzaft taneggarut}}',
+'enhancedrc-history' => 'amezruy',
'recentchanges' => 'Ibeddilen imaynuten',
'recentchanges-legend' => 'Tifranin n ibeddilen imaynuten',
'recentchanges-summary' => 'Ḍfer ibeddilen imaynuten n {{SITENAME}}.',
+'recentchanges-noresult' => 'Ulac abeddel yecban ayen i ttnadiḍ ɣef tallit id efkeḍ.',
'recentchanges-feed-description' => 'Ḍfer ibeddilen imaynuten n wiki-yagi deg usuddem-agi.',
'recentchanges-label-newpage' => 'Abeddel agi ad yesnulfu asebter amaynut',
'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-label-plusminus' => 'Tiddi n usebtar tetwebeddel s umḍan agi n itamḍanen.',
+'recentchanges-legend-heading' => "'''Aglam :'''",
+'recentchanges-legend-newpage' => '(zeṛ daɣen [[Special:NewPages|umuɣ n isebtar imaynuten]]).',
'recentchanges-legend-plusminus' => "(''± 123'')",
'rcnotefrom' => "Deg ukessar llan ibeddlen seg wasmi '''$2''' (ar '''$1''').",
'rclistfrom' => 'Ssken ibeddlen imaynuten seg $1',
'rcshowhideminor' => '$1 ibeddlen ifessasen',
'rcshowhidebots' => '$1 irubuten',
-'rcshowhideliu' => '$1 n yimseqdacen i ikecmen',
+'rcshowhideliu' => '$1 imseqdacen imseklesen',
'rcshowhideanons' => '$1 n yimseqdacen udrigen',
'rcshowhidepatr' => '$1 n yibeddlen yettwassenqden',
'rcshowhidemine' => '$1 ibeddlen inu',
'rc_categories_any' => 'Ulayɣer',
'rc-change-size-new' => '$1 {{PLURAL:$1|atamḍan|itamḍanen}} sakin abeddel',
'newsectionsummary' => '/* $1 */ tigezmi tamaynut',
-'rc-enhanced-expand' => 'Ẓeṛ tilɣa (yeḥwaǧ JavaScript)',
+'rc-enhanced-expand' => 'Ẓeṛ ttfaṣil',
'rc-enhanced-hide' => 'Ffer tilɣa',
'rc-old-title' => 'yesnulfad s uzwel « $1 »',
'reuploaddesc' => 'Semmewet dɣa uɣaled ar tiferkit n tuznin.',
'upload-tryagain' => 'Ceggaɛ aglam n ufaylu ibeddelen',
'uploadnologin' => 'Ur tekcimeḍ ara',
-'uploadnologintext' => 'Yessefk [[Special:UserLogin|ad tkecmeḍ]]
-iwakken ad tazneḍ afaylu.',
+'uploadnologintext' => 'Ilaq ad $1 iwakken ad ketreḍ ifuyla.',
'upload_directory_missing' => 'Akaram n taktert n ufaylu ($1) ulac-it dɣa ur d-yesnulfa ara sɣur aqeddac web.',
'upload_directory_read_only' => 'Weserver/serveur Web ur yezmir ara ad yaru deg ($1).',
'uploaderror' => 'Agul deg usekcam',
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Afaylu agi d-asleg n {{PLURAL:$1|ufaylu agi|ifuyla agi}} :',
'file-deleted-duplicate' => 'Afaylu am wagi ([[:$1]]) yetwekkes yakan. Ilaq ad selkeneḍ aɣmis n tukksiwin n ufaylu agi uqbel atid ktereḍ tikkelt nniḍen.',
+'file-deleted-duplicate-notitle' => 'Afaylu yesɛan isem am wagi yetwumḥa, ula d-azwel ines.
+Ilaq ad ssutereḍ i yiwen aterras ma yezmer ad yessenqed aɣmis n ufaylu agi yetwumḥan iwakken ad yessekyed addad uqbel at-id ktereḍ tikelt nniḍen.',
'uploadwarning' => 'Aɣtal deg wazan n ufayluwen',
'uploadwarning-text' => 'Beddel aglam n ufaylu dɣa ɛreḍ tikkelt nniḍen',
'savefile' => 'Smekti afaylu',
'backend-fail-notsame' => 'Afaylu imeẓli yella yakan i $1.',
'backend-fail-invalidpath' => '$1 mačči d abrid n uḥraz iɣbelen.',
'backend-fail-delete' => 'Ulamek an mḥu afaylu "$1".',
+'backend-fail-describe' => 'Ulamek an beddel adferisefka n ufaylu "$1".',
'backend-fail-alreadyexists' => 'Afaylu $1 yella yakan.',
'backend-fail-store' => 'Ulamek an ḥrez afaylu $1 deg $2.',
'backend-fail-copy' => 'Ulamek an nɣel afaylu $1 deg $2.',
'upload_source_file' => ' (afaylu deg uselkim inek)',
# Special:ListFiles
-'listfiles-summary' => 'Asebter agi uslig i εemmed ad yefk umu n akkw ifuyla i kteren.
-Ma aseqdac as yernu tastayt, ala ifuyla s lqem taneggarut id yekter aseqdac nni ad beqqeḍen.',
+'listfiles-summary' => 'Asebter agi uslig i εemmed ad yefk umu n akkw ifuyla i kteren.',
'listfiles_search_for' => 'Nadi ɣef yisem n tugna:',
'imgfile' => 'afaylu',
'listfiles' => 'Umuɣ n tugniwin',
'listfiles_size' => 'Tiddi (bytes/octets)',
'listfiles_description' => 'Aglam',
'listfiles_count' => 'Ileqman',
+'listfiles-show-all' => 'Sseddu ileqman iqdimen n tugniwin',
+'listfiles-latestversion' => 'Lqem amiran',
'listfiles-latestversion-yes' => 'Ih',
'listfiles-latestversion-no' => 'Ala',
'randompage-nopages' => 'Ulac isebtar deg {{PLURAL:$2|tallunt n isemawen|tallunin n isemawen}} : $1.',
# Random page in category
+'randomincategory' => 'Asebtar s ugacur deg taggayt',
+'randomincategory-invalidcategory' => '« $1 » mačči d-isem n taggayt yeɣblen.',
+'randomincategory-nopages' => 'Ulac asebtar deg [[:Category:$1]].',
+'randomincategory-selectcategory' => 'Ddem asebtar s ugacur deg taggayt : $1 $2.',
'randomincategory-selectcategory-submit' => 'Ruḥ',
# Random redirect
'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' => 'Isebtar s ayla n usebtar',
+'pageswithprop-legend' => 'Isebtar s ayla n usebtar',
+'pageswithprop-text' => 'Asebtar agi, yefked umuɣ n isebtar yeseqdacen ayla n usebtar amaẓlay',
+'pageswithprop-prop' => 'Isem n ayla :',
'pageswithprop-submit' => 'Ruḥ',
+'pageswithprop-prophidden-long' => 'azal n ayla n uḍris aɣezfan yeffren ($1)',
+'pageswithprop-prophidden-binary' => 'azal n ayla imisin yeffren ($1)',
'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.',
'protectedpages' => 'isebtar yettwaḥerzen',
'protectedpages-indef' => 'Imestenen imeɣlalen kan',
'protectedpages-cascade' => 'Imestenen s uceṛcuṛ kan',
+'protectedpages-noredirect' => 'Ffer isemmimḍen',
'protectedpagesempty' => 'isebtar-agi ttwaḥerzen s imsektayen -agi.',
'protectedtitles' => 'Izwal ugdilen',
'protectedtitlesempty' => 'Ulac azwel yesɛan asegdel s iɣewwaren agi.',
'listusers' => 'Umuɣ n yimseqdacen',
'listusers-editsonly' => 'Sekned kan iseqdacen yesɛan asekcem naɣ ugar',
'listusers-creationsort' => 'Fren s azmez n usnulfu',
+'listusers-desc' => 'Fren deg amizzwer amadar',
'usereditcount' => '$1 {{PLURAL:$1|abeddel|ibeddilen}}',
'usercreated' => '{{GENDER:$3|Yesnulfu-d}} ass n $1 ar $2',
'newpages' => 'isebtar imaynuten',
'linksearch-pat' => 'Anadi n tanfalit :',
'linksearch-ns' => 'Talluntin n isemawen :',
'linksearch-ok' => 'Nadi',
-'linksearch-text' => 'Tzemreḍ ad seqdeceḍ isekkilen imeẓliyen am « *.wikipedia.org ».
+'linksearch-text' => 'Isekkilen imeẓliyen am « *.wikipedia.org » zemren ad wetseqdecen.
Ilaq-asen deg udday taɣult n uswir imineg, am amedya « *.org ».<br />
-Ineggafen imazdayen : <code>$1</code> (ur d-renu acemma deg unadi inek/inem)',
+{{PLURAL:$2|Aneggaf yettwaɛqelen|Ineggafen yettwaɛqelen}}: <code>$1</code> (http:// s lexṣas ma ulac aneggaf).',
'linksearch-line' => '$1 yeqqen seg $2',
'linksearch-error' => 'Tzemreḍ ad seqdeceḍ isekkilen usligen ala deg tazzwara n taɣult uselkim.',
# Special:ActiveUsers
'activeusers' => 'Umuɣ n iseqdacen urmiden',
'activeusers-intro' => 'Wagi d umuɣ n iseqdacen yexedmen armud deg {{PLURAL:$1|ass agi aneggaru|$1 ussan agi ineggura}}.',
-'activeusers-count' => '$1 {{PLURAL:$1|abeddel n ussan agi ineggura|ibeddilen n ussan agi ineggura}} deg {{PLURAL:$3|ass aneggaru|$3 ussan ineggura}}',
+'activeusers-count' => '$1 {{PLURAL:$1|tigawt|tigawin}} deg {{PLURAL:$3|ass aneggaru|$3 ussan ineggura}}',
'activeusers-from' => 'Ssken iseqdacen seg :',
'activeusers-hidebots' => 'Ffer iṛubuten',
'activeusers-hidesysops' => 'Ffer inedbalen',
'emailuser-title-target' => 'Ceggaɛ tirawt i {{GENDER:$1|aseqdac agi|taseqdact agi}}',
'emailuser-title-notarget' => 'Ceggaɛ tirawt i useqdac',
'emailpage' => 'Ceggaɛ tirawt i useqdac',
-'emailpagetext' => 'Tzemreḍ ad seqdeceḍ tiferkit ddaw agi iwakken ad ceggɛeḍ tirawt i useqdac agi.
+'emailpagetext' => 'Tzemreḍ ad seqdeceḍ tiferkit ddaw agi iwakken ad ceggɛeḍ tirawt i {{GENDER:$1|umseqdac|tamseqdact}} agi.
Tansa e-mail id ekfeḍ deg [[Special:Preferences|iɣewwaren inek/inem]] ad tban deg urti "Amceggaɛ" n izen ; akka, anermas ad yezmer ak/akem yefk tiririt.',
'usermailererror' => 'Yella ugul deg uzwel n email:',
'defemailsubject' => '{{SITENAME}} tirawt n useqdac « $1 »',
'watchnologin' => 'Ur tekcimeḍ ara',
'watchnologintext' => 'Yessefk ad [[Special:UserLogin|tkecmeḍ]] iwakken ad tbeddleḍ umuɣ n uɛessi inek.',
'addwatch' => 'Rnu i umuɣ n uɛassi',
-'addedwatchtext' => "Asebter \"[[:\$1]]\" yettwarnu deg [[Special:Watchlist|wumuɣ n uɛessi]] inek.
-Ma llan ibeddlen deg usebter-nni neɣ deg usbtar umyennan ines, ad banen dagi,
-Deg [[Special:RecentChanges|wumuɣ n yibeddlen imaynuten]] ad banen s '''yisekkilen ibberbuzen''' (akken ad teẓriḍ).
-
-Ma tebɣiḍ ad tekkseḍ asebter seg wumuɣ n uɛessi inek, wekki ɣef \"Fakk aɛessi\".",
+'addedwatchtext' => 'Asebter "[[:$1]]" yettwarnu deg [[Special:Watchlist|wumuɣ n uḍfar]] inek/inem.
+Ibeddlen id-yetteddun deg usebter-agi neɣ deg usbtar umyennan ines, ad banen dagi.',
'removewatch' => 'Ekkes seg umuɣ n uɛassi',
'removedwatchtext' => '!!Asebter "[[:$1]]" yettwakkes seg [[Special:Watchlist|umuɣ n uɛessi]] inek.',
'watch' => 'Ɛass',
'notanarticle' => 'Mačči d amagrad',
'notvisiblerev' => 'Lqem tetwemḥa',
'watchlist-details' => 'ttɛassaɣ {{PLURAL:$1|$1 usebter|$1 n isebtaren}} mebla isebtaren "amyannan".',
-'wlheader-enotif' => 'Yeǧǧa Email n talɣut.',
-'wlheader-showupdated' => "Isebtar ttubeddlen segwasmi tkecmeḍ tikelt taneggarut ttbanen-d s '''uḍris aberbuz'''",
+'wlheader-enotif' => 'Talɣut s email yessermed.',
+'wlheader-showupdated' => "Isebtar ttubeddlen segwasmi tkecmeḍ tikelt taneggarut ttbanen-d s uḍris '''aberbuz'''.",
'watchmethod-recent' => 'yessenqed ibeddlen imaynuten n isebtar i ttɛasseɣ',
'watchmethod-list' => 'yessenqed isebtar i ttɛassaɣ i ibeddlen imaynuten',
'watchlistcontains' => 'Umuɣ n uɛessi inek ɣur-s $1 n {{PLURAL:$1|usebter|isebtar}}.',
'enotif_mailer' => 'Email n talɣut n {{SITENAME}}',
'enotif_reset' => 'Rcem akk isebtar mmeẓren',
'enotif_impersonal_salutation' => 'Amseqdac n {{SITENAME}}',
+'enotif_subject_deleted' => 'Asebtar $1 ɣef {{SITENAME}} yetwakkes sɣur {{GENDER:$2|$2}}',
+'enotif_subject_created' => 'Asebtar $1 ɣef {{SITENAME}} yetwaxleq sɣur {{GENDER:$2|$2}}',
+'enotif_subject_moved' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel isem sɣur {{GENDER:$2|$2}}',
+'enotif_subject_restored' => 'Asebtar $1 ɣef {{SITENAME}} yetwerr sɣur {{GENDER:$2|$2}}',
+'enotif_subject_changed' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel sɣur {{GENDER:$2|$2}}',
+'enotif_body_intro_deleted' => 'Asebtar $1 ɣef {{SITENAME}} yetwasfeḍ ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran',
+'enotif_body_intro_created' => 'Asebtar $1 ɣef {{SITENAME}} yetwaxleq ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
+'enotif_body_intro_moved' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel isem ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
+'enotif_body_intro_restored' => 'Asebtar $1 ɣef {{SITENAME}} yetwerr ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
+'enotif_body_intro_changed' => 'Asebtar $1 ɣef {{SITENAME}} yetwabeddel ass n $PAGEEDITDATE sɣur {{GENDER:$2|$2}}, zeṛ $3 i lqem amiran.',
'enotif_lastvisited' => 'Ẓer $1 i akk ibeddlen segwasmi tkecmeḍ tikelt taneggarut.',
'enotif_lastdiff' => 'Ẓer $1 akken ad tmuqleḍ abeddel.',
'enotif_anon_editor' => 'aseqdac ur i siggezen ara $1',
'enotif_body' => 'Ay $WATCHINGUSERNAME,
-Asebter « $PAGETITLE » n {{SITENAME}} $CHANGEDORCREATED ass n $PAGEEDITDATE sɣur « $PAGEEDITOR », ẓeṛ $PAGETITLE_URL iwakken ad ẓṛeḍ lqem n tura.
+$PAGEINTRO $NEWPAGE
-$NEWPAGE
+Agzul n umttekki : $PAGESUMMARY $PAGEMINOREDIT
-Abeddel n wegzul: $PAGESUMMARY $PAGEMINOREDIT
+Meslay s umttekki :
+e-mail : $PAGEEDITOR_EMAIL
+wiki : $PAGEEDITOR_WIKI
-Meslay s umbeddel:
-e-mail: $PAGEEDITOR_EMAIL
-wiki: $PAGEEDITOR_WIKI
+Ur yelli ara email n talɣut asmi ad illin ibeddlen deg usebter ala lukan tekcmeḍ deg usebtar-agi sakin teqqneḍ. Tzemreḍ ad wennezeḍ tikbabin n talɣut i akkw isebtar yellan deg umuɣ inek/inem n uḍfar.
-Ur yelli ara email n talɣut asmi llan ibeddlen deg usebter ala lukan teẓreḍ asebter-nni.
-Tzemreḍ ad awennezeḍ akkw isenǧaqen n talɣut i akkw isebtar yellan deg umuɣ inek/inem n uɛassi.
-
- Anagraw inek/inem n talɣut n {{SITENAME}}
+Anagraw inek/inem n talɣut n {{SITENAME}}
--
Iwakken ad beddeleḍ iɣewwaren n talɣut deg tirawt, ẓeṛ
{{canonicalurl:{{#special:Preferences}}}}
-Iwakken ad beddeleḍ iɣewwaren n umuɣ inek/inem n uɛassi, ẓeṛ
+Iwakken ad beddeleḍ iɣewwaren n umuɣ inek/inem n uḍfar, ẓeṛ
{{canonicalurl:{{#special:EditWatchlist}}}}
-Iwakken ad mḥuḍ asebter deg umuɣ inek/inem n uɛassi, ẓeṛ
+Iwakken ad mḥuḍ asebtar deg umuɣ inek/inem n uḍfar, ẓeṛ
$UNWATCHURL
Tuɣalin d tadhelt :
'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.',
+'delete-warning-toobig' => 'Asebtar agi yesɛa amezruy axatar n ibeddilen, ugaren $1 {{PLURAL:$1|lqem|ileqman}}.
+Tukksa-s tezmer ad terwi tiddit n taffa n isefka n {{SITENAME}} ;
+ilaq ad seqdeceḍ s-leɛqel.',
+'deleting-backlinks-warning' => "'''Ɣur-wet :''' Isebtar nniḍen sɛant azday ɣer asebtar i tebɣiḍ ad kkeseḍ.",
# Rollback
'rollback' => 'Semmet ibeddilen',
'rollbacklinkcount-morethan' => 'semmet ugar n $1 {{PLURAL:$1|abeddel|ibeddilen}}',
'rollbackfailed' => 'Asemmet yexseṛ',
'cantrollback' => 'Ur yezmir ara ad yessuɣal; yella yiwen kan amseqdac iwumi ibeddel/yexleq asebter-agi.',
+'alreadyrolled' => 'Ulamek an semmet abeddel aneggaru n usebtar « [[:$1]] » yetwaxeddemen sɣur [[User:$2|$2]] ([[User talk:$2|Mmeslay]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ;
+wayeḍ nniḍen yebeddel yakan neɣ yesemmet asebtar nni.
+
+Abeddel aneggaru n usebtar yetwaxeddemen sɣur [[User:$3|$3]] ([[User talk:$3|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
'editcomment' => "Agzul n ubeddel yella: \"''\$1''\".",
'revertpage' => 'Yessuɣal ibeddlen n [[Special:Contributions/$2|$2]] ([[User talk:$2|Meslay]]); yettubeddel ɣer tasiwelt taneggarut n [[User:$1|$1]]',
+'revertpage-nouser' => 'Tiririt n ibeddilen sur amseqdac yeffren ar lqem aneggaru sɣur {{GENDER:$1|[[User:$1|$1]]}}',
+'rollback-success' => 'Asemmet n ibeddilen yetwaxeddemen sɣur $1 ;
+tuqqla ar lqem aneggaru sɣur $2.',
# Edit tokens
'sessionfailure-title' => 'Anezri n tɣimit',
# Protect
'protectlogpage' => 'Aɣmis n wemḥay',
+'protectlogtext' => 'Atan umuɣ n ibeddilen n immestan n isebtar.
+Zeṛ [[Special:ProtectedPages|umuɣ n isebtar yettwaḥerzen]] i umuɣ n immestan timiranin.',
'protectedarticle' => '"[[$1]]" yettwaḥrez',
'modifiedarticleprotection' => 'yebeddel aswir n usegdel n « [[$1]] »',
'unprotectedarticle' => 'yekkes asegdel n « [[$1]] »',
'prot_1movedto2' => '[[$1]] yettusmimeḍ ar [[$2]]',
'protect-badnamespace-title' => 'Tallunt n isemawen ur nezmer ara an segdel',
'protect-badnamespace-text' => 'Isebtar deg tallunt agi n isemawen ur zemren ara ad sɛun asegdel.',
+'protect-norestrictiontypes-text' => 'Asebtar agi ur yezmer ara ad yettwaḥerzen acku ulac tawsit n usewḥel yestufan.',
+'protect-norestrictiontypes-title' => 'Asebtar ur yettwaḥerzen ara',
'protect-legend' => 'Sentem tiḥḥerzi',
'protectcomment' => 'Taɣẓint :',
'protectexpiry' => 'Azmez n tasewti :',
'protect_expiry_invalid' => 'Azmez n tasewti ur yeɣbel ara.',
'protect_expiry_old' => 'Azmez n tasewti i ɛedda.',
'protect-unchain-permissions' => 'Kkes aseḍru i aṭas n tixtiṛiyin n usegdel',
+'protect-text' => "Tzemreḍ ad zṛeḍ dɣa ad beddeleḍ aswir n ummesten n usebtar '''$1'''.",
+'protect-locked-blocked' => "Ur tzemreḍ ara ad beddeleḍ iswiren n ummesten skud tewḥeleḍ.
+Zeṛ iɣewwaren imiranen n usebtar '''$1''' :",
+'protect-locked-dblock' => "Aswir n ummesten ur yezmer ara ad yetbeddel acku taffa n isefka tesekkweṛ.
+Zeṛ iɣewwaren imiranen n usebtar '''$1''' :",
+'protect-locked-access' => "Ur tesɛiḍ ara izerfan iḍulliyen iwakken ad beddeleḍ iswiren n ummesten n isebtar.
+Zeṛ iɣewwaren imiranen n usebtar '''$1''' :",
+'protect-cascadeon' => 'Asebtar agi yettwaḥerz acku yessedda-d deg {{PLURAL:$1|usebtar uḍfiṛ, yettwaḥerzen|isebtar uḍfiṛ, yettwaḥerzen}} s taxtiṛit « ammesten s uceṛcuṛ » yessermeden. Tzemreḍ ad beddeleḍ aswir n ummesten n usebtar agi war ad yebeddel ammesten s uceṛcuṛ.',
'protect-default' => '(ameslugen)',
-'protect-fallback' => 'Yeḥweǧ atrug « $1 »',
+'protect-fallback' => 'Ssireg kan imseqdacen s uzref « $1 »',
+'protect-level-autoconfirmed' => 'Ssireg kan imseqdacen i sergegen iman-nsen',
'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',
'protect-expiry-indefinite' => 'ifeḍ',
+'protect-cascade' => 'Mmesten isebtar i sseddan deg ttagi (ammesten s uceṛcuṛ)',
+'protect-cantedit' => 'Ur tzemreḍ ara ad beddeleḍ iswiren n ummesten n usebtar agi acku ur tesɛiḍ ara turagt att beddeleḍ.',
'protect-othertime' => 'Azmez nniḍen n tasewti :',
'protect-othertime-op' => 'azmez nniḍen n tasewti',
'protect-existing-expiry' => 'Yella azmez n tasewti : $2 af $3',
'protect-otherreason' => 'Taɣẓint nniḍen / taɣzint tamarnant :',
'protect-otherreason-op' => 'Taɣẓint nniḍen',
+'protect-dropdown' => '* Tiɣẓinin n ummesten tunnimin
+** Axṣar s uzerray
+** Emails yerkan
+** Ccwal n ibeddilen yellan mgal-tiffursa
+** Asebtar s uɛeddi ameqran',
'protect-edit-reasonlist' => 'Beddel tiɣẓinin n usegdel',
'protect-expiry-options' => '1 asrag:1 hour,1 ass:1 day,1 imalas:1 week,2 imalasen:2 weeks,1 aggur:1 month,3 agguren:3 months,6 agguren:6 months,1 assegwas:1 year,adfi:infinite',
'restriction-type' => 'Turagt',
'undeletepage' => 'Ẓeṛ dɣa erred isebtar yetwekkesen',
'undeletepagetitle' => "'''Umuɣ agi yesɛa ileqman yetwekkesen n [[:$1|$1]]'''.",
'viewdeletedpage' => 'Ẓer isebtar yettumḥan',
+'undeletepagetext' => '{{PLURAL:$1|Asebtar agi uḍfiṛ yetwekkes, tura atan|Isebtar agi uḍfiṛen tetwekkesen, tura aten-id}} deg taffa n isefka n
+weɣbaṛ, anda {{PLURAL:$1|yezmer ad yesɛu tiririt|zemren ad sɛun tiririt}}.
+Aɣbaṛ yezmer ad yetssizedig s tallit.',
'undelete-fieldset-title' => 'Erred ileqman',
+'undeleteextrahelp' => "Iwakken ad erreḍ amezruy ummid n usebtar agi, ilaq ad eǧǧeḍ akkw tinkulin war amidag dɣa senned ɣef '''''Tiririt'''''.
+Iwakken ad xeddemeḍ tiririt i yiwen aḥric kan, rnud amidag deg tinkulin n ileqman i tebɣiḍ ad erreḍ, dɣa senned ɣef '''''Tiririt'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|lqem i ɣbeṛen|ileqman i ɣbeṛen}}',
+'undeletehistory' => 'Ma tebɣiḍ ad erreḍ asebtar, akkw ileqman ad erren deg umezruy.
+Ma asebtar amaynut yexelqed s isem am winna seg tukksa, ileqman yetwerran ad illin beqqeḍen deg umezruy uzwir dɣa lqem amiran ur d yetbeddel ara s uwurman.',
+'undeleterevdel' => 'Tiririt ur tezmer ara att illi ma, Deg tagara, lqem aneggaru n usebtar neɣ n ufaylu ad yeqqim yetwakkes s uzgen.
+Deg tajṛut am ttagi, ilaq ad ekkseḍ amidag deg tankult neɣ ad ekkseḍ tagelmust ileqman ineggura yetumḥan (deg uqerru n umuɣ).',
+'undeletehistorynoadmin' => 'Asebtar agi yetwekkes.
+Taɣzint n tukksa att affeḍ deg ugzul ddaw-agi, s ttfaṣil n imseqdacen i tbeddelen uqbel ad yetwekkes.
+Agbur n ileqman yetwekksen ad wettwadaf kan i inedbalen.',
+'undelete-revision' => 'Lqem yetwekksen n $1 (lqem n $4 af $5) sɣur $3 :',
+'undeleterevision-missing' => 'Lqem arameɣtu neɣ ulac-it.
+Ahat tesɛiḍ azday arameɣtu, neɣ lqem yetwerr neɣ yetwekkes seg aɣbaṛ.',
+'undelete-nodiff' => 'Ur d-n-uffa ara lqem aneggaru.',
'undeletebtn' => 'Err-it',
'undeletelink' => 'ẓeṛ/uɣaled',
'undeleteviewlink' => 'ẓeṛ',
'undeleteinvert' => 'Snegdam ayen textareḍ',
'undeletecomment' => 'Taɣẓint :',
+'undeletedrevisions' => '$1 {{PLURAL:$1|lqem yetwerren|ileqman yetwerren}}',
+'undeletedrevisions-files' => '$1 {{PLURAL:$1|lqem|ileqman}} d $2 {{PLURAL:$2|afaylu|ifuyla}} {{PLURAL:$2|yetwerr|twerren}}',
+'undeletedfiles' => '$1 {{PLURAL:$1|afaylu yetwerr|ifuyla twerren}}',
+'cannotundelete' => 'Abrir n tiririt :
+$1',
+'undeletedpage' => "'''Asebtar $1 yetwerr.'''
+
+Zeṛ [[Special:Log/delete|aɣmis n tukksiwin]] iwakken ad zṛeḍ umuɣ n tukksiwin d tiririyin timaynutin.",
'undelete-header' => 'Ẓer [[Special:Log/delete|aɣmis n umḥay]] i isebtar ttumḥan tura.',
'undelete-search-title' => 'Nadi ɣef isebtar yettumḥan',
'undelete-search-box' => 'Nadi ɣef isebtar yettumḥan',
'undelete-search-prefix' => 'Ssken isebtar i yebdan s:',
'undelete-search-submit' => 'Nadi',
'undelete-no-results' => 'Ur yufi ara ulaḥedd n wawalen i tnadiḍ ɣef isebtar deg iɣbaren.',
+'undelete-filename-mismatch' => 'Ulamek an err lqem n ufaylu n wass n $1 : isem n ufaylu ur yezga ara.',
+'undelete-bad-store-key' => 'Ulamek an err lqem n ufaylu n wass n $1 : afaylu ulac-it uqbel tukksa.',
+'undelete-cleanup-error' => 'Tuccḍa deg tukksa n ufaylu n weɣbaṛ ur yetseqdacen ara « $1 ».',
+'undelete-missing-filearchive' => 'Ulamek an err afaylu n weɣbaṛ s tamagit $1 acku ulac it deg taffa n isefka.
+Ahat yetwerr yakan.',
+'undelete-error' => 'Asebtar n tuccḍa n usemmet',
+'undelete-error-short' => 'Tuccḍa deg tiririt n ufaylu : $1',
+'undelete-error-long' => 'LLant tuccḍiwin deg tiririt n ufaylu:
+
+$1',
'undelete-show-file-confirm' => 'Tebɣriḍ ad ẓṛeḍ lqem yemḥan n ufaylu « <nowiki>$1</nowiki> » n $2 af $3 ?',
'undelete-show-file-submit' => 'Ih',
# Namespace form on various pages
'namespace' => 'Talluntin n isemawen :',
'invert' => 'Snegdam ayen textareḍ',
+'tooltip-invert' => 'Sekcem amidag deg tankult agi iwakken ad ffereḍ ibeddilen n isebtar deg tallunt n isemawen yettwafren (dɣa tallunt n isemawen yeqqnen ma yella amidag deg tankult)',
+'namespace_association' => 'Tallunt n isemawen yeqqenen',
+'tooltip-namespace_association' => 'Sekcem amidag deg tankult agi iwakken ad rnuḍ daɣen tallunt n isemawen n umyannan yeqqnen ar tallunt n isemawen yettwafren',
'blanknamespace' => '(Amenzawi)',
# Contributions
-'contributions' => 'Tikkin n wemseqdac',
+'contributions' => 'Ittekkiyen n {{GENDER:$1|umseqdac|tamseqdact}}',
'contributions-title' => 'Umuɣ n tikkin n umseqdac $1',
-'mycontris' => 'Tikkin inu',
-'contribsub2' => 'n $1 ($2)',
+'mycontris' => 'Ittekkiyen',
+'contribsub2' => 'I {{GENDER:$3|$1}} ($2)',
'nocontribs' => 'Ur yufi ara abddel i tebɣiḍ.',
-'uctop' => '(taneggarut)',
+'uctop' => '(amiran)',
'month' => 'Seg uggur (d wid uqbel) :',
'year' => 'Seg useggwas (d wid uqbel) :',
'sp-contributions-newbies' => 'Ssken tikkin n yimseqdacen imaynuten kan',
'sp-contributions-newbies-sub' => 'I yisem yimseqdacen imaynuten',
+'sp-contributions-newbies-title' => 'Ittekkiyen n imseqdacen gar imiḍanen imaynuten',
'sp-contributions-blocklog' => 'Aɣmis n uɛeṭṭil',
'sp-contributions-deleted' => 'isekcam yemḥan',
'sp-contributions-uploads' => 'izdamen',
'whatlinkshere-hideredirs' => '$1 aceggeε ɣer',
'whatlinkshere-hidetrans' => '$1 aseddu',
'whatlinkshere-hidelinks' => '$1 izdayen',
-'whatlinkshere-hideimages' => '$1 tugniwin i qqenen',
+'whatlinkshere-hideimages' => '$1 ifuyla iqqenen',
'whatlinkshere-filters' => 'Tistaytin',
# Block/unblock
+'autoblockid' => 'Asewḥel awurman #$1',
'block' => 'Ɛekkel aseqdac',
+'unblock' => 'Aksasewḥel n umseqdac',
'blockip' => 'Ɛekkel aseqdac',
'blockip-legend' => 'Ɛekkel aseqdac',
+'blockiptext' => 'Seqdec tiferkit ddaw-agi iwakken ad sewḥeleḍ ineɛruḍen n ubeddel seg yiwet tansa IP tulmist neɣ n yiwen isem umseqdac.
+Asket am wagi, ur ilaq ad yetwexddem kan iwakken ad yeεeggen axeṣṣar dɣa ilaq ad yemtawi s [[{{MediaWiki:Policy-url}}|ilugan igensanen]].
+Efked ddaw-agi taɣẓint tusdidt (amedya : efked isebtar yetwaxeṣṣren).',
'ipadressorusername' => 'Tansa IP neɣ isem n wemseqdac',
+'ipbexpiry' => 'Tanzagt uqbel aneffeṛ :',
'ipbreason' => 'Ayɣer',
+'ipbreason-dropdown' => '* Tiɣẓinin n ukyaf id ttuɣalen aṭas tikwal
+** Taguri n tilɣa n ukellax
+** Tukksa war assefhem n ugbur n isebtar
+** Taguri s uɛiwed n izdayen uffiɣen ɣer idellilen (abluleɣ)
+** Taguri n ugbur war anamek d tursaḍ deg isebtar
+** Aneɛruḍ n umsiged neɣ ubbezbax
+** Tafuli n useqdac n aṭas imiḍanen
+** Isem n umseqdac ur nezmer ara an qbel, d-anergam neɣ d-abucemmat',
+'ipb-hardblock' => 'Qareɛ imseqdacen yeqqnen ad beddelen s tansa IP agi',
+'ipbcreateaccount' => 'Qareɛ asnulfu n umiḍan',
+'ipbemailban' => 'Qareɛ amseqdac ad yecggaɛ e-mails',
+'ipbenableautoblock' => 'Sewḥel s-uwurman tansa IP taneggarut yetseqdacen sɣur amseqdac d akk IP ines nniḍen ay d-yetteddun',
'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',
+'ipb-disableusertalk' => 'Qareɛ amseqdac ad yebeddel asebtar-is n umyannan mi yella asewḥel',
+'ipb-change-block' => 'Sewḥel tikkelt nniḍen amseqdac agi s iɣewwaren agi',
+'ipb-confirm' => 'Sergeg asewḥel',
'badipaddress' => 'Tansa IP mačči d ṣaḥiḥ',
+'blockipsuccesssub' => 'Asewḥel yetwexddem',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] {{GENDER:$1|yetsewḥel|tetsewḥel|}}.<br />
+Zeṛ [[Special:BlockList|umuɣ n isewḥal]] iwakken ad zṛeḍ isewḥal.',
+'ipb-blockingself' => '{{GENDER:|Aqlak|Aqlakem}}-id ad sewḥeleḍ iman-{{GENDER:|ik|im}}',
+'ipb-confirmhideuser' => '{{GENDER:|Aqlak|Aqlakem}}-id ad sewḥeleḍ amseqdac s « ffer amseqdac » yessermed. Waya ad yekkes isem n umseqdac deg akkw umuɣen d isekcam n uɣmis. Tebɣiḍ ad xeddemeḍ aya ?',
+'ipb-confirmaction' => 'Ma teḥsiḍ tebɣiḍ at xeddemeḍ, ilaq ad rnuḍ amidag deg tankult « {{int:ipb-confirm}} » ddaw-agi.',
+'ipb-edit-dropdown' => 'Beddel tiɣẓinin n usewḥel s lexṣas',
+'ipb-unblock-addr' => 'Aksasewḥel $1',
+'ipb-unblock' => 'Aksasewḥel amiḍan n umseqdac neɣ tansa IP',
+'ipb-blocklist' => 'Zeṛ isewḥelen yellan',
+'ipb-blocklist-contribs' => 'Ittekkiyen i $1',
+'unblockip' => 'Ekkes asewḥel n umseqdac',
+'unblockiptext' => 'Seqdec tiferkit ddaw-agi iwakken ad erreḍ addaf i ibeddilen seg yiwet tansa IP neɣ yiwen isem n umseqdac.',
'ipusubmit' => 'Ekkes akyaf agi',
'unblocked' => 'Yetwekkes akyaf n [[User:$1|$1]]',
'unblocked-range' => 'Yetwekkes akyaf n $1',
'change-blocklink' => 'beddel asewḥel',
'contribslink' => 'tikkin',
'emaillink' => 'Ceggaɛ e-mail',
+'autoblocker' => 'Tetsewḥeleḍ s uwurman acku tansa IP inek/inem yeseqdac-itt « [[User:$1|$1]] ». Taɣzint id efkan i usewḥel agi d : « $2 ».',
'blocklogpage' => 'Aɣmis n isewḥelen',
+'blocklog-showlog' => 'Amseqdac agi, yetseweḥel uqbel. Ad affeḍ aɣmis n isewḥal ddaw-agi :',
+'blocklog-showsuppresslog' => 'Amseqdac agi, yetseweḥel dɣa yeweffer uqbel. Ad affeḍ aɣmis n tukksiwin ddaw-agi :',
'blocklogentry' => 'yesewḥel [[$1]] ; alama : $2 $3',
+'reblock-logentry' => 'yebeddel iɣewwaren n usewḥel n [[$1]] s tasewtit ar $2 $3',
+'unblocklogentry' => 'yekkes asewḥel n $1',
'block-log-flags-anononly' => 'Imseqdacen udrigen kan',
'block-log-flags-nocreate' => 'asnulfu n umiḍan yessegdel',
+'block-log-flags-noautoblock' => 'akyaf awurman yensa',
+'block-log-flags-noemail' => 'e-mail yekyef',
+'block-log-flags-nousertalk' => 'ur yezmer ara ad yebeddel asebter-is n umeslay',
+'block-log-flags-angry-autoblock' => 'manasewḥel yesselhan yesermed',
+'block-log-flags-hiddenname' => 'isem n umseqdac yeffer',
+'range_block_disabled' => 'Azref n unedbal i usnulfu n isewḥal n tagrummiwin IP yensa.',
+'ipb_expiry_invalid' => 'Tanzagt n tasewti ur teɣbel ara.',
+'ipb_expiry_temp' => 'Isewḥal n isemawen n imseqdacen yeffren ilaq ad illin d-imeɣlalen.',
+'ipb_hide_invalid' => 'Ulamek an ekkes amiḍan agi ; yesɛa aṭas ibeddilen.',
+'ipb_already_blocked' => '« $1 » yesewḥel yakan',
+'ipb-needreblock' => '« $1 » yesewḥel yakan. Tebɣiḍ ad beddeleḍ iɣewwaren ?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Asewḥel nniḍen|Isewḥelen nniḍen}}',
+'unblock-hideuser' => 'Ur tzemreḍ ara ad sewḥeleḍ amseqdac agi, acku isem-is n umseqdac yetweffer.',
+'ipb_cant_unblock' => 'Tuccḍa : ID n usewḥel $1 ulac-it.
+Ahat asewḥel yetwekkes yakan.',
+'ipb_blocked_as_range' => 'Tuccḍa : tansa IP $1 ur t-uwḥel ara srid dɣa ulamek an ekkes asewḥel.
+Lamaɛna tezga deg tagrumma $2 i nezmer an ekkes asewḥel.',
+'ip_range_invalid' => 'Tagrumma IP artameɣtut',
'proxyblockreason' => 'Tansa n IP inek teɛkel axaṭer nettat "open proxy". G leɛnayek, meslay akk d provider inek.',
'sorbsreason' => 'Tansa IP inek/inem tella deg yiwen umuɣ am "open proxy" deg DNSBL yettuseqdac deg {{SITENAME}}.',
'sorbs_create_account_reason' => 'Tansa IP inek/inem tella deg yiwen umuɣ am "open proxy" deg DNSBL yettuseqdac deg {{SITENAME}}.
Ur tezmireḍ ara ad snulfuḍ amiḍan.',
+'xffblockreason' => 'Yiwet tansa IP deg tasenṭit X-Forwarded-For header, tin inek/inem neɣ tin n uqeddac proxy i tseqeddeceḍ ,tesewḥel. Taɣzint n usewḥel amezrwaru : $1',
# Developer tools
'lockdb' => 'Sekker database',
+'unlockdb' => 'Kkes aseḍru n taffa n isefka',
+'lockdbtext' => 'Askaṛ n taffa n isefka ad yeqareɛ akkw imseqdacen ad beddelen isebtar, ad ḥerzen ismenyifen nsen, ad beddelen umuɣ nsen n uḍfar dɣa ad xeddmen akkw tigawin nniḍen yeḥwaǧen ibeddilen deg taffa n isefka.
+Ilaq ad sergegeḍ d-ayen yebɣiḍ ad xeddemeḍ dɣa ad ekkseḍ azekṛun deg taffa sakin tigawt inek/inem n ibeddi att fak.',
+'unlockdbtext' => 'Aksaskaṛ n taffa n isefka ad yeɛemmed i akkw imseqdacen ad beddelen isebtar, ad beddelen ismenyifen nsen, ad beddelen umuɣ nsen n uḍfar dɣa ad xeddmen akkw tigawin nniḍen yeḥwaǧen ibeddilen deg taffa n isefka.
+
+Ilaq ad sergegeḍ d-ayen yebɣiḍ ad xeddemeḍ.',
+'lockconfirm' => 'Ih, bɣiɣ ad sekṛeɣ taffa n isefka.',
+'unlockconfirm' => 'Ih, bɣiɣ ad ekkeseɣ aksskeṛeɣ taffa n isefka.',
+'lockbtn' => 'Sekker taffa n isefka',
+'unlockbtn' => 'Kkes aseḍru n taffa n isefka',
+'lockdbsuccesssub' => 'Askaṛ n taffa n isefka yetwexddem',
+'unlockdbsuccesssub' => 'Asewḥel n taffa n isefka yetwekkes',
+'unlockdbsuccesstext' => 'Askaṛ n taffa n isefka yetwekkes.',
+'lockfilenotwritable' => 'Ur tzemreḍ ara ad aruḍ deg ufaylu n uskaṛ n taffa n isefka.
+Ma tebɣiḍ ad sewḥeleḍ neɣ ad ekkseḍ asewḥel ɣef taffa n isefka, ilaq aqeddac web ad yezmer ad yaru deg ufaylu agi.',
+'lockedbyandtime' => '(sɣur $1 ass n $2 af $3)',
# Move page
'move-page' => 'Beddel isem n $1',
'movearticle' => 'Smimeḍ asebter',
'movenologintext' => 'Yessefk ad tesɛuḍ isem n wemseqdac u [[Special:UserLogin|tkecmeḍ]]
iwakken ad tesmimḍeḍ asebter.',
+'movenotallowed' => 'Ur tesɛiḍ ara turagt ad beddeleḍ isem n isebtar.',
+'cant-move-user-page' => 'Ur tesɛiḍ ara turagt ad beddeleḍ isem n isebtar igejdanen n imseqdacen',
'newtitle' => 'Ar azwel amaynut',
'move-watch' => 'Ɛass asebter-agi',
'movepagebtn' => 'Smimeḍ asebter',
isem ayen textareḍ mačči d ṣaḥiḥ.
Xtar yiwen nniḍen.',
'movetalk' => 'Smimeḍ asebter n umyannan (n umagrad-nni)',
+'move-subpages' => 'Beddel isem n adu-isebtar (alma d $1 {{PLURAL:$1|asebtar|isebtar}})',
+'move-talk-subpages' => 'Beddel adu-isebtar n usebtar n amyannan (alma d $1 isebtar)',
'movelogpage' => 'Aɣmis n usemmimeḍ',
'movelogpagetext' => 'Akessar yella wumuɣ n isebtar yettusmimeḍen.',
+'movesubpage' => '{{PLURAL:$1|Adu-asebtar|Adu-isebtar}}',
+'movesubpagetext' => 'Asebtar agi yesɛa $1 {{PLURAL:$1|adu-asebtar yebeqqeḍen|adu-isebtar yebeqqeḍen}} ddaw-agi.',
+'movenosubpage' => 'Asebtar agi ur yesɛ ara adu-asebtar',
'movereason' => 'Ayɣer',
'revertmove' => 'Uɣal ar tasiwelt ssabeq',
'delete_and_move' => 'Mḥu u smimeḍ',
'delete_and_move_confirm' => 'Ih, mḥu asebter',
'delete_and_move_reason' => 'Asebter yemḥa iwakken yeqqim-d wemkan i usmimeḍ seg "[[$1]]"',
'selfmove' => 'Izwal amezwaru d uneggaru kif-kif; ur yezmir ara ad yesmimeḍ asebter ɣur iman-is.',
+'immobile-target-namespace-iw' => 'Izdayen interwiki mačči d iswi ameɣtu i imussa.',
# Export
'export' => 'Ssufeɣ isebtar',
'thumbnail-more' => 'Ssemɣer',
'filemissing' => 'Afaylu ulac-it',
'thumbnail_error' => 'Agul asmi yexleq tugna tamecṭuḥt: $1',
+'thumbnail_error_remote' => 'Izen n tuccḍa n $1 :
+$2',
'djvu_page_error' => 'Asebter DjVu yeffeɣ seg tilisa',
# Special:Import
'import' => 'Ssekcem isebtar',
'importinterwiki' => 'Assekcem n transwiki',
+'import-interwiki-source' => 'Wiki d usebtar n taɣbalut',
'import-interwiki-history' => 'Xdem alsaru n akk tisiwal umezruy n usebter-agi',
'import-interwiki-submit' => 'Ssekcem',
'import-interwiki-namespace' => 'Azen isebtar ar isem n taɣult:',
'importhistoryconflict' => 'Amennuɣ ger tisiwal n umezruy (ahat asebter-agi yettwazen yagi)',
'importnosources' => 'Asekcam n transwiki ur yexdim ara u amezruy n usekcam yettwakkes.',
'importnofile' => 'ulaḥedd afaylu usekcam ur yettwazen.',
+'import-rootpage-invalid' => 'Asebtar aẓar id efkeḍ d-azwel ur ɣblen ara.',
+'import-rootpage-nosubpage' => 'Tallunt n isemawen « $1 » n usebtar aẓar ur yeqbel ara adu-isebtar.',
# Import log
'importlogpage' => 'Aɣmis n usekcam',
'import-logentry-interwiki' => '$1 s transwiki',
'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|lqem|ileqman}} seg $2',
+# JavaScriptTest
+'javascripttest' => 'Tarmit n JavaScript',
+'javascripttest-title' => 'Asselkem n tirmitin $1',
+'javascripttest-pagetext-noframework' => 'Asebtar agi yeḥeṛṛ i usselkem n tirmitin JavaScript.',
+'javascripttest-pagetext-unknownframework' => 'Tamṣuka « $1 » warisem.',
+'javascripttest-pagetext-frameworks' => 'Ilaq ad xetreḍ yiwet n timṣukyin n tarmit agi : $1',
+'javascripttest-pagetext-skins' => 'Xter agwlim s anwa ad xeddemeḍ tarmit :',
+'javascripttest-qunit-intro' => 'Zeṛ [$1 tumlin n tarmit] ɣef mediawiki.org.',
+'javascripttest-qunit-heading' => 'Azrar n tarmit QUnit n JavaScript ɣef MediaWiki',
+
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Asebter n umseqdac inu',
'tooltip-pt-anonuserpage' => 'Asebter n wemseqdac n IP wukud tekkiḍ',
'tooltip-ca-viewsource' => 'Asebter-agi yettwaḥrez. Tzemreḍ ad twaliḍ aɣbalu-ines.',
'tooltip-ca-history' => 'Tisiwal ssabeq n usebter-agi.',
'tooltip-ca-protect' => 'Ḥrez asebter-agi',
+'tooltip-ca-unprotect' => 'Beddel amesten n usebtar-agi',
'tooltip-ca-delete' => 'Mḥu asebter-agi',
'tooltip-ca-undelete' => 'Err akk ibeddlen n usebter-agi i yellan uqbel ad yettwamḥu usebter',
'tooltip-ca-move' => 'Smimeḍ asebter-agi',
'tooltip-diff' => 'Ssken ayen tbeddleḍ deg uḍris.',
'tooltip-compareselectedversions' => 'Ẓer amgirred ger snat tisiwlini (i textareḍ) n usebter-agi.',
'tooltip-watch' => 'Rnu asebter-agi i wumuɣ n uɛessi inu',
+'tooltip-watchlistedit-normal-submit' => 'Kkes izwal',
+'tooltip-watchlistedit-raw-submit' => 'Amucceḍ n umuɣ n uḍfar',
'tooltip-recreate' => 'Ɛiwed xleq asebter ɣas akken yettumḥu',
+'tooltip-upload' => 'Beddu taktert',
'tooltip-rollback' => '« Semmet » yesemmet s-yiwen asenned akk d-acu amseqdac aneggaru yebeddel deg usebter',
'tooltip-undo' => '« Ssefsu » yesemmet abeddel agi dɣa i ldi asfaylu n ubeddel deg uskar n azaraskan. I ɛemmed an uɣal ar lqem n uqbel dɣa an rnu taɣẓint deg tanaka n ugzul.',
+'tooltip-preferences-save' => 'Ḥrez isemyifiyen',
'tooltip-summary' => 'Sekcem agzul awezzlan',
+'interlanguage-link-title' => '$1 — $2',
+
+# Metadata
+'notacceptable' => 'Aqeddac wiki agi ur yezmer ara ad yefk isefka deg amasal ur yezmer ara ad yeɣar amsaɣ inek/inem.',
# Attribution
'anonymous' => '{{PLURAL:$1|Aseqdac udrig|Iseqdacen udrigen}} ɣef {{SITENAME}}',
'siteuser' => '{{SITENAME}} amseqdac $1',
+'anonuser' => 'amseqdac abnabak $1 n {{SITENAME}}',
'lastmodifiedatby' => 'Tikkelt taneggarut asmi yettubeddel asebter-agi $2, $1 sɣur $3.',
'othercontribs' => 'Tikkin ɣef umahil n $1.',
'others' => 'wiyaḍ',
'siteusers' => '{{PLURAL:$2|aseqdac|iseqdacen}} $1 n {{SITENAME}}',
+'anonusers' => '{{PLURAL:$2|amseqdac abnabak|imseqdacen amseqdac abnabak}} $1 n {{SITENAME}}',
'creditspage' => 'Win ixedmen asebter',
'nocredits' => 'Ulac talɣut ɣef wayen ixedmen asebter-agi.',
'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',
+'spam_deleting' => 'Akkw ileqman yesɛan izdayen ɣer $1, tukksa',
+'simpleantispam-label' => "Assefqed mgal e-mail yerkan.
+Ur-d t-aru '''ACEMMA''' d-agi !",
# Info page
'pageinfo-title' => 'Tilɣa i « $1 »',
+'pageinfo-not-current' => 'Ssurfet-aɣ, ulamek ad n-efk talɣut i ileqman iqdimen.',
'pageinfo-header-basic' => 'Tilɣa n udasil',
'pageinfo-header-edits' => 'Amezruy n ibeddilen',
'pageinfo-header-restrictions' => 'Amesten n usebter',
'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-language' => 'Tutlayt n ugbur n usebtar',
'pageinfo-content-model' => 'Talɣa n ugbur n usebtar',
'pageinfo-robot-policy' => 'Asbeddi sɣur iṛubuten',
'pageinfo-robot-index' => 'Tessireg',
'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-magic-words' => '{{PLURAL:$1|Awal n tiḥḥerga|Awalen n tiḥḥerga}} ($1)',
'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' => 'Ceggaɛ ɣer',
'pageinfo-redirectsto-info' => 'tiɣa',
+'pageinfo-contentpage' => 'Yetweḥseb am asebtar n ugbur',
'pageinfo-contentpage-yes' => 'Ih',
'pageinfo-protect-cascading-yes' => 'Ih',
'pageinfo-category-info' => 'Tilɣa ɣef taggayt',
# Image deletion
'deletedrevision' => 'Tasiwelt taqdimt $1 tettumḥa.',
+'filedeleteerror-short' => 'Tuccḍ deg tukksa n ufaylu : $1',
+'filedeleteerror-long' => 'Llant tuccḍiwin deg tukksa n ufaylu :
+
+$1',
+'filedelete-missing' => 'Afaylu « $1 » ur yezmer ara ad yetwekkes acku ulac-it.',
+'filedelete-old-unregistered' => 'Lqem n ufaylu « $1 » ulac-it deg taffa n isefka.',
+'filedelete-current-unregistered' => 'Afaylu « $1 » ulac-it deg taffa n isefka.',
# Browsing diffs
'previousdiff' => '← Amgirred ssabeq',
Lukan a t-tesseqdceḍ yezmer ad yexsser aselkim inek/inem.",
'imagemaxsize' => "Tiddi tafellayt n tugniwin :<br />''(i isebtar n weglam ufaylu)''",
'thumbsize' => 'Tiddi n tugna tamecṭuḥt:',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|asebtar|isebtar}}',
'file-info' => 'tiddi n ufaylu: $1, anaw n MIME: $2',
'file-info-size' => '$1 × $2 pixel, tiddi n ufaylu: $3, anaw n MIME: $4',
'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',
+'show-big-image' => 'Afaylu aneṣli',
+'file-info-gif-looped' => 'deg taglult',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|tugna|tugniwin}}',
'file-info-png-looped' => 'deg taglult',
'file-info-png-repeat' => 'yetwurar {{PLURAL:$1|tikelt|tikwal}}',
'file-info-png-frames' => '$1 {{PLURAL:$1|tugna|tugniwin}}',
'exif-filesource' => 'Aɣbal n ufaylu',
'exif-scenetype' => 'Tawsit n usayes',
'exif-customrendered' => 'Agmuḍ asagan',
+'exif-exposuremode' => 'askar n timzikent',
+'exif-whitebalance' => 'Tisistelt n imellalen',
+'exif-digitalzoomratio' => 'Afmiḍi n zoom umḍin',
+'exif-focallengthin35mmfilm' => 'Teɣzef n usaḍas i usaru 35 mm',
+'exif-scenecapturetype' => 'Tawsit n tuddma n usayes',
+'exif-gaincontrol' => 'Aḥkam n urrbeḥ',
+'exif-contrast' => 'Amyeẓli',
+'exif-devicesettingdescription' => 'Aglam n tawila n allal',
+'exif-subjectdistancerange' => 'Ameccaq n tamsalt',
+'exif-imageuniqueid' => 'Asulay asuf n tugna',
+'exif-gpsversionid' => 'Lqem n ticṛeṭ GPS',
+'exif-gpslatituderef' => 'Tamselɣut i tafeltirit',
+'exif-gpslatitude' => 'Tafeltirit',
+'exif-gpslongituderef' => 'Tamselɣut i tazegrart',
+'exif-gpslongitude' => 'Tazegrart',
+'exif-gpsaltituderef' => 'Tamselɣut n usawen (0=asawen, 1=talqayt)',
+'exif-gpsaltitude' => 'Talqayt',
+'exif-gpstimestamp' => 'Asrag GPS (tamasragt tabelkamit)',
+'exif-gpssatellites' => 'Igensaten yetseqdacen i akat',
+'exif-gpsstatus' => 'Addad n unermas',
+'exif-gpsmeasuremode' => 'askar n akat',
+'exif-gpsdop' => 'Tiseddi n akat',
+'exif-gpsspeedref' => 'Aferdis n tazzla n unermas GPS',
+'exif-gpsspeed' => 'Tazzla n unermas GPS',
+'exif-gpstrack' => 'Tanila n uwliwel',
+'exif-gpsimgdirection' => 'Tanila n tugna',
+'exif-gpsdestlatitude' => 'Turrut n userken',
+'exif-gpsdestlongitude' => 'Tazegrart n userken',
+'exif-gpsdestdistance' => 'Ameccaq ar userken',
+'exif-gpsareainformation' => 'Isem n taɣzut GPS',
+'exif-gpsdatestamp' => 'Azmez GPS',
'exif-worldregiondest' => 'Timnaḍin n umaḍal yebeqqeḍen',
'exif-countrydest' => 'Timura yebeqqeḍen',
'exif-countrycodedest' => 'Tangalt n tamurt yebeqqeḍen',
'exif-datetimereleased' => 'Tuffɣa ass n',
'exif-originaltransmissionref' => 'Tangalt n usideg n tuzzna tamezwarut',
'exif-identifier' => 'Asulay',
+'exif-label' => 'Aglam',
'exif-copyrighted-true' => 'Ddaw azref n umeskar',
-'exif-copyrighted-false' => 'Taɣuly tazayezt',
+'exif-copyrighted-false' => 'Addad n izerfan n umeskar ur yesbadu ara',
'exif-unknowndate' => 'Azmez warisem',
'watchlisttools-raw' => 'Beddel umuɣ n uɛessi (raw)',
# Core parser functions
+'unknown_extension_tag' => 'Ticṛeṭ n usiɣzef « $1 » warisem',
'duplicate-defaultsort' => 'Ɣur-wet : tasarut n ufran m-ulac « $2 » atsefεej tasarut n uqbel « $1 ».',
# Special:Version
'version-entrypoints-header-entrypoint' => 'Ired n wekcam',
'version-entrypoints-header-url' => 'Tansa URL',
+# Special:Redirect
+'redirect-submit' => 'Ruḥ',
+'redirect-lookup' => 'Anadi :',
+'redirect-value' => 'Azal :',
+'redirect-user' => 'ID n umseqdac',
+'redirect-revision' => 'Tacaggart n usebtar',
+'redirect-file' => 'Isem n ufaylu',
+'redirect-not-exists' => 'Azal ulac-it',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch' => 'Anadi n allusen',
+'fileduplicatesearch-legend' => 'Nadi allus',
+'fileduplicatesearch-filename' => 'Isem n ufaylu :',
+'fileduplicatesearch-submit' => 'Nadi',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Tiddi n ufaylu : $3<br />Anaw MIME : $4',
+'fileduplicatesearch-result-1' => 'Afaylu « $1 » ur yesɛa ara allus.',
+'fileduplicatesearch-result-n' => 'Afaylu « $1 » yesɛa {{PLURAL:$2|1 allus|$2 allusen}}.',
+'fileduplicatesearch-noresults' => 'Ulac afaylu s isem « $1 ».',
+
# Special:SpecialPages
'specialpages' => 'isebtar usligen',
+'specialpages-group-maintenance' => 'Iṛabulen n ibeddi',
+'specialpages-group-other' => 'Isebtar usligen nniḍen',
+'specialpages-group-login' => 'Asulu / assiggez',
+'specialpages-group-changes' => 'Ibeddilen imaynuten d iɣmisen',
+'specialpages-group-media' => 'Iṛabulen d taktert n ifuyla media',
+'specialpages-group-users' => 'Imseqdacen d izerfan yeqqnen',
+'specialpages-group-highuse' => 'Isebtar n usseqdec n waṭas',
+'specialpages-group-pages' => 'Umuɣen n isebtar',
+'specialpages-group-pagetools' => 'Ifecka i isebtar',
+'specialpages-group-wiki' => 'Isefka d ifecka',
+'specialpages-group-redirects' => 'Isebtar usligen yetsiwzelen',
+'specialpages-group-spam' => 'Ifecka mgal e-mail yerkan',
+
+# Special:BlankPage
+'blankpage' => 'Asebtar ilem',
+'intentionallyblankpage' => 'Asebtar agi, yetweǧǧ (qrib) d-ilem s lebɣi.',
# External image whitelist
'external_image_whitelist' => ' #Eǧǧ ajeṛṛiḍ agi aken yella.<pre>
#Ger akk tifersa n tinfaliyin timeɣẓanin nnig ajeṛṛiḍ agi. Eǧǧ ajeṛṛiḍ agi aken yella.</pre>',
# Special:Tags
+'tags' => 'Ticṛaḍ n ibeddilen sɣeblent',
'tag-filter' => 'Astay n [[Special:Tags|ticraḍ]] :',
+'tag-filter-submit' => 'Sti',
+'tag-list-wrapper' => '([[Special:Tags|{{PLURAL:$1|Ticṛeṭ|Ticraḍ}}]] : $2)',
+'tags-title' => 'Ticraḍ',
+'tags-intro' => 'Asebtar agi yettaked umuɣ n ticraḍ ay aseɣẓan yezmer ad yeseqdec iwakken ad yecreḍ abeddel d anamek i yal abeddel.',
+'tags-tag' => 'Isem n ticṛeṭ',
+'tags-display-header' => 'Tummant deg umuɣen n ibeddilen',
+'tags-description-header' => 'Aglam ummid n ticṛeṭ',
+'tags-active-header' => 'Urmid ?',
+'tags-hitcount-header' => 'Ibeddilen yesɛan ticraḍ',
+'tags-active-yes' => 'Ih',
+'tags-active-no' => 'Ala',
+'tags-edit' => 'beddel',
+'tags-hitcount' => '$1 {{PLURAL:$1|abeddel|ibeddlen}}',
+
+# Special:ComparePages
+'comparepages' => 'Qaren isebtar',
+'compare-page1' => 'Asebtar 1',
+'compare-page2' => 'Asebtar 2',
+'compare-rev1' => 'Lqem 1',
+'compare-rev2' => 'Lqem 2',
+'compare-submit' => 'Qaren',
+'compare-invalid-title' => 'Azwel id efkiḍ ur yeɣbel ara.',
+'compare-title-not-exists' => 'Azwel id efkiḍ ulac-it.',
+'compare-revision-not-exists' => 'Lqem id efkiḍ ulac-it.',
+
+# Database error messages
+'dberr-header' => 'Wiki agi yesɛa ugur',
+'dberr-problems' => 'Ssurfet-aɣ ! Asmel agi yemliled ilɣiten itikniten.',
+'dberr-again' => 'Ɛreḍ ad arǧuḍ kra n tisdidin dɣa sismeḍ.',
+'dberr-info' => '(Ulamek an qqen ar uqeddac n taffa n isefka : $1)',
+'dberr-info-hidden' => '(Ulamek an qqen ar uqeddac n taffa n isefka)',
+
+# HTML forms
+'htmlform-submit' => 'Ssumer',
+'htmlform-reset' => 'Ekkes ibeddilen',
+'htmlform-selectorother-other' => 'Nniḍen',
+'htmlform-no' => 'Ala',
+'htmlform-yes' => 'Ih',
+'htmlform-chosen-placeholder' => 'Fren taxtiṛit',
# New logging system
+'logentry-delete-delete' => '$1 {{GENDER:$2|yemḥa}} asebtar $3',
+'logentry-delete-restore' => '$1 {{GENDER:$2|yerred|terred}} asebtar $3',
+'logentry-delete-event' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabanit {{PLURAL:$5|n tadyant n uɣmis|n $5 tidyanin n uɣmis}} ɣef $3: $4',
+'logentry-delete-revision' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabani {{PLURAL:$5|n lqem|n $5 ileqman}} ɣef usebtar $3: $4',
+'logentry-delete-event-legacy' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabanit n tidyanin n uɣmis ɣef $3',
+'logentry-delete-revision-legacy' => '$1 {{GENDER:$2|yebeddel|tebeddel}} tabanit n ileqman ɣef usebtar $3',
+'logentry-suppress-delete' => '$1 {{GENDER:$2|yemḥa|temḥa}} asebtar $3',
+'logentry-suppress-event' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabanit {{PLURAL:$5|n tadyant n uɣmis|n $5 tidyanin n uɣmis}} ɣef $3: $4',
+'logentry-suppress-revision' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabani {{PLURAL:$5|n lqem|n $5 ileqman}} ɣef usebtar $3: $4',
+'logentry-suppress-event-legacy' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabanit n tidyanin n uɣmis ɣef $3',
+'logentry-suppress-revision-legacy' => '$1 {{GENDER:$2|yebeddel s lbaḍna|tebeddel s lbaḍna}} tabanit n ileqman ɣef usebtar $3',
+'revdelete-content-hid' => 'agbur yeffren',
+'revdelete-summary-hid' => 'agzul n ubeddil yeffren',
+'revdelete-uname-hid' => 'isem n umseqdac yeffren',
+'revdelete-content-unhid' => 'agbur yebeqqeḍen',
+'revdelete-summary-unhid' => 'agzul n ubeddil yebeqqeḍen',
+'revdelete-uname-unhid' => 'isem n umseqdac yebeqqeḍen',
+'logentry-move-move' => '$1 {{GENDER:$2|yebeddel isem|tebeddel isem}} n usebtar seg $3 ar $4',
+'logentry-move-move-noredirect' => '$1 {{GENDER:$2|yebeddel isem|tebeddel isem}} n usebtar seg $3 ar $4 war anegzum',
'rightsnone' => '(ulaḥedd)',
# Feedback
'feedback-cancel' => 'Semmewet',
'feedback-submit' => 'Ceggaɛ iwenniten',
'feedback-adding' => 'Rnud iwenniten inek/inem ar usebter...',
+'feedback-error1' => 'Tuccḍa : Agmuḍ n API ur yetwaɛqel ara',
+'feedback-error3' => 'Tuccḍa : Ulac tamrarut n API',
+
+# API errors
+'api-error-badtoken' => 'Tuccḍa tagensit : yir « tiddest ».',
+'api-error-fetchfileerror' => 'Tuccḍa tagensit : Yella kra ur yaɛeddan ara s luwqem deg tiririt n ufaylu.',
+'api-error-http' => 'Tuccḍa tagensit : ur yezmer ara ad yeqqen ar uqeddac.',
+'api-error-ok-but-empty' => 'Tuccḍa tagensit : Ulac tamrarut seg uqeddac.',
+'api-error-stashfailed' => 'Tuccḍa tagensit : aqeddac ur yezmer ara ad yekles afaylu uɛḍil.',
+'api-error-unclassified' => 'Yefkad anezri warisem.',
+'api-error-unknown-code' => 'Tuccḍa warisem : « $1 »',
+'api-error-unknown-warning' => 'Alɣu warisem : "$1".',
+'api-error-unknownerror' => 'Tuccḍa warisem : « $1 »',
# Durations
'duration-seconds' => '$1 {{PLURAL:$1|tasint|tisinin}}',
'duration-centuries' => '$1 {{PLURAL:$1|timiḍi|timiḍa}}',
'duration-millennia' => '$1 {{PLURAL:$1|agimseggwas|agimseggwasen}}',
+# Unknown messages
+'uploadinvalidxml' => 'XML deg ufaylu yekteren ur d-yetwesleḍ ara.',
);
# Special:PasswordReset
'passwordreset' => 'កំណត់ពាក្យសម្ងាត់សាឡើងវិញ',
'passwordreset-text-one' => 'បំពេញសំណុំបែបបទនេះដើម្បីស្ដារពាក្យសម្ងាត់របស់អ្នក។',
-'passwordreset-text-many' => '{{PLURAL:$1|á\9e\9fá\9e¼á\9e\98á\9e\94á\9f\86á\9e\96á\9f\81á\9e\89á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\98á\9e½á\9e\99á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\85á\9f\86á\9e\8eá\9f\84á\9e\98á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89។}}',
+'passwordreset-text-many' => '{{PLURAL:$1|á\9e\9fá\9e¼á\9e\98á\9e\94á\9f\86á\9e\96á\9f\81á\9e\89á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\98á\9e½á\9e\99á\9e\80á\9f\92á\9e\93á\9e»á\9e\84á\9e\85á\9f\86á\9e\8eá\9f\84á\9e\98á\9e\94á\9f\92á\9e\9aá\9e¢á\9e\94á\9f\8bá\9e\81á\9e¶á\9e\84á\9e\80á\9f\92á\9e\9aá\9f\84á\9e\98á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\91á\9e\91á\9e½á\9e\9bá\9e\96á\9e¶á\9e\80á\9f\92á\9e\99á\9e\9fá\9e\98á\9f\92á\9e\84á\9e¶á\9e\8fá\9f\8bá\9e\94á\9e\8eá\9f\92á\9e\8aá\9f\84á\9f\87á\9e¢á\9e¶á\9e\9fá\9e\93á\9f\92á\9e\93á\9e\98á\9e½á\9e\99á\9e\8fá\9e¶á\9e\98á\9e\9aá\9e\99á\9f\88á\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9b។}}',
'passwordreset-legend' => 'កំណត់ពាក្យសម្ងាត់សាឡើងវិញ',
'passwordreset-disabled' => 'មុខងារប្ដូរទៅពាក្យសម្ងាត់ដើមត្រូវបានបិទមិនអោយប្រើនៅលើវិគីនេះ។',
'passwordreset-emaildisabled' => 'មុខងារអ៊ីមែលត្រូវបានបិទមិនអោយប្រើនៅលើវិគីនេះ។',
'revdelete-selected' => "'''{{PLURAL:$2|កំណែប្រែដែលបានជ្រើសយក}}របស់[[:$1]]:'''",
'logdelete-selected' => "'''{{PLURAL:$1|ព្រឹត្តិការណ៍កំណត់ហេតុដែលបានជ្រើសយក}}:'''",
'revdelete-suppress-text' => "ការហាមឃាត់គួរត្រូវបានអនុវត្តិលើករណីដូចខាងក្រោមនេះប៉ុណ្ណោះ៖
-* ព័ត៌មានផ្ទាល់ខ្លួន ឯកជនមិនសមរម្យ
-*: ''អាសយដ្ឋាននៃគេហដ្ឋាន លេខទូរស័ព្ទ និងលេខសន្តិសុខសង្គមជាដើម''",
+* ព័ត៌មានបង្ខូចកេរ្ដិ៍ឈ្មោះធ្ងន់ធ្ងរ
+* ព័ត៌មានផ្ទាល់ខ្លួនមិនសមរម្យ
+*: ''អាសយដ្ឋាននៃគេហដ្ឋាន លេខទូរស័ព្ទ និងលេខអត្តសញ្ញាណប័ណ្ឌជាដើម''",
'revdelete-legend' => 'ដាក់កំហិតគំហើញ',
'revdelete-hide-text' => 'បិទបាំងអត្ថបទកំណែប្រែ',
'revdelete-hide-image' => 'បិទបាំងខ្លឹមសារនៃឯកសារ',
'right-reupload-own' => 'សរសេរលុបពីលើឯកសារមានស្រាប់ដែលត្រូវបានផ្ទុកឡើងដោយម្ចាស់ដើម',
'right-reupload-shared' => 'សរសេរលុបពីលើឯកសារនៅក្នុងថតមេឌារួមរបស់វិគីនេះ',
'right-upload_by_url' => 'ផ្ទុកឡើងឯកសារមួយពីអាសយដ្ឋាន URL មួយ',
-'right-autoconfirmed' => 'á\9e\80á\9f\82á\9e\94á\9f\92á\9e\9aá\9f\82á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\96á\9e¶á\9e\80á\9f\8bá\9e\80á\9e\8eá\9f\92á\9e\8aá\9e¶á\9e\9bá\9e\80á\9e¶á\9e\9aá\9e\96á\9e¶á\9e\9aá\9e\93á\9e¶á\9e\93á\9e¶',
+'right-autoconfirmed' => 'á\9e\98á\9e·á\9e\93á\9e\91á\9e\91á\9e½á\9e\9bá\9e\9aá\9e\84á\9e¥á\9e\91á\9f\92á\9e\92á\9e·á\9e\96á\9e\9bá\9e\96á\9e¸á\9e\80á\9e¶á\9e\9aá\9e\8aá\9e¶á\9e\80á\9f\8bá\9e\80á\9f\86á\9e á\9e·á\9e\8fá\9e\9bá\9f\92á\9e\94á\9e¿á\9e\93á\9e\8fá\9e¶á\9e\98IP',
'right-bot' => 'ទុកជាដំណើរការស្វ័យប្រវត្តិមួយ',
'right-nominornewtalk' => 'មិនបង្ហាញសាររំលឹក ពេលធ្វើកំនែតិចតួចនៅលើទំព័រពិភាក្សានានា',
'right-writeapi' => 'ការប្រើប្រាស់ API សម្រាប់សរសេរ',
'recentchanges-label-minor' => 'នេះជាការកែប្រែតិចតួចមួយប៉ុណ្ណោះ',
'recentchanges-label-bot' => 'ការកែប្រែនេះត្រូវបានធ្វើឡើងដោយរូបយន្ត',
'recentchanges-label-unpatrolled' => 'ការកែប្រែនេះមិនទាន់ត្រូវបានល្បាតទេ',
+'recentchanges-label-plusminus' => 'ទំហំទំព័រត្រូវបានផ្លាស់ប្ដូរគិតជាចំនួនបៃ',
+'recentchanges-legend-heading' => "''កំណត់សម្គាល់៖'''",
'recentchanges-legend-newpage' => '(មើលផងដែរនូវ [[Special:NewPages|បញ្ជីទំព័រថ្មី]])',
'rcnotefrom' => "ខាងក្រោមនេះជាបន្លាស់ប្ដូរនានាគិតចាប់តាំងពី '''$2''' (បង្ហាញអតិបរមាចំនួន '''$1''')។",
'rclistfrom' => 'បង្ហាញបន្លាស់ប្ដូរថ្មីៗចាប់តាំងពី $1',
អ៊ីមែល៖ $PAGEEDITOR_EMAIL
វិគី៖ $PAGEEDITOR_WIKI
-នឹងមិនមានការផ្ដល់ដំណឹងជាលាយលក្សណ៍អក្សរផ្សេងទៀតពេលមានសកម្មភាពលើសពីនេះទេ លើកលែងតែអ្នកចូលមើលទំព័រនេះរួចសិន។ អ្នកក៏អាចកំណត់ឡើងវិញអំពីការផ្ដល់ដំណឹងសម្រាប់ទំព័រដែលអ្នកកំពុងតាមដានផងដែរ។
+á\9e\93á\9e¹á\9e\84á\9e\98á\9e·á\9e\93á\9e\98á\9e¶á\9e\93â\80\8bá\9e\80á\9e¶á\9e\9aá\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e\8aá\9f\86á\9e\8eá\9e¹á\9e\84â\80\8bá\9e\87á\9e¶á\9e\9bá\9e¶á\9e\99á\9e\9bá\9e\80á\9f\92á\9e\9fá\9e\8eá\9f\8dá\9e¢á\9e\80á\9f\92á\9e\9fá\9e\9aâ\80\8bá\9e\95á\9f\92á\9e\9fá\9f\81á\9e\84á\9e\91á\9f\80á\9e\8fá\9e\96á\9f\81á\9e\9bá\9e\98á\9e¶á\9e\93á\9e\9fá\9e\80á\9e\98á\9f\92á\9e\98á\9e\97á\9e¶á\9e\96á\9e\9bá\9e¾á\9e\9fá\9e\96á\9e¸á\9e\93á\9f\81á\9f\87á\9e\91á\9f\81 á\9e\9bá\9e¾á\9e\80á\9e\9bá\9f\82á\9e\84á\9e\8fá\9f\82â\80\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\85á\9e¼á\9e\9bá\9e\98á\9e¾á\9e\9bâ\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\93á\9f\81á\9f\87á\9e\8aá\9f\84á\9e\99á\9e\80á\9e\8fá\9f\8bá\9e\88á\9f\92á\9e\98á\9f\84á\9f\87á\9e\85á\9e¼á\9e\9bá\9e\9aá\9e½á\9e\85á\9e\9fá\9e·á\9e\93á\9f\94 á\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9f\8fá\9e¢á\9e¶á\9e\85á\9e\80á\9f\86á\9e\8eá\9e\8fá\9f\8bá\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89á\9e¢á\9f\86á\9e\96á\9e¸á\9e\80á\9e¶á\9e\9aá\9e\95á\9f\92á\9e\8aá\9e\9bá\9f\8bá\9e\8aá\9f\86á\9e\8eá\9e¹á\9e\84á\9e\9fá\9e\98á\9f\92á\9e\9aá\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\8aá\9f\82á\9e\9bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\80á\9f\86á\9e\96á\9e»á\9e\84á\9e\8fá\9e¶á\9e\98á\9e\8aá\9e¶á\9e\93á\9e\95á\9e\84á\9e\8aá\9f\82á\9e\9aá\9f\94
ពីប្រព័ន្ធផ្តល់ដំណឹង {{SITENAME}}
'deletecomment' => 'មូលហេតុ៖',
'deleteotherreason' => 'មូលហេតុបន្ថែមផ្សេងទៀត៖',
'deletereasonotherlist' => 'មូលហេតុផ្សេងទៀត',
-'deletereason-dropdown' => '*ហេតុផលទូទៅ
-** សំណើរបស់អ្នកនិពន្ធ
+'deletereason-dropdown' => '* មូលហេតុលុបចោលទូទៅ
+** ស្ប៉ាម
+** អំពើបំផ្លាញទ្រព្យសម្បត្តិឯកជនឬសាធារណៈ
** បំពានកម្មសិទ្ធិបញ្ញា
-** អំពើបំផ្លាញទ្រព្យសម្បត្តិឯកជនឬសាធារណៈ',
+** សំណើរបស់អ្នកនិពន្ធ
+** ការបញ្ជូនបន្តដែលខូច',
'delete-edit-reasonlist' => 'ពិនិត្យផ្ទៀងផ្ទាត់ហេតុផលនៃការលុប',
'delete-toobig' => 'ទំព័រនេះមានប្រវត្តិកែប្រែធំលើសពី $1 {{PLURAL:$1|កំណែ|កំណែ}}។
# Move page
'move-page' => 'ប្តូរទីតាំង $1',
'move-page-legend' => 'ប្តូរទីតាំងទំព័រ',
-'movepagetext' => "ការប្រើប្រាស់ទម្រង់ខាងក្រោមនឹងប្តូរឈ្មោះទំព័រ ប្តូរទីតាំងគ្រប់ប្រវត្តិរបស់វាទៅឈ្មោះថ្មី។
-á\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84â\80\8bá\9e\85á\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\93á\9e¹á\9e\84â\80\8bá\9e\80á\9f\92á\9e\9bá\9e¶á\9e\99á\9e\87á\9e¶â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9fទៅចំណងជើងថ្មី។
-á\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bâ\80\8bá\9e\91á\9f\85â\80\8bá\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84 á\9e\93á\9f\83â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\85á\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\93á\9e¹á\9e\84â\80\8bá\9e\98á\9e·á\9e\93â\80\8bá\9e\94á\9e¶á\9e\93â\80\8bá\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9câ\80\8bá\9e\95á\9f\92á\9e\9bá\9e¶á\9e\9fá\9f\8bá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9a; á\9e\9fá\9e¼á\9e\98â\80\8bá\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99á\9e\98á\9e¾á\9e\9b á\9e\80á\9e¶á\9e\9aá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9f á\9e\98á\9e·á\9e\93á\9e\94á\9e¶á\9e\93á\9e\94á\9e\84á\9f\92á\9e\80á\9e¾á\9e\8f á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9fá\9e\91á\9f\92á\9e\9cá\9f\81 á\9e¬ á\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\94á\9f\92á\9e\8fá\9e¼á\9e\9aá\9e\91á\9e·á\9e\9fá\9e\94á\9e¶á\9e\80á\9f\8b á\9f\94
-á\9e¢á\9f\92á\9e\93á\9e\80á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9cá\9e\8fá\9f\82á\9e\92á\9e¶á\9e\93á\9e¶á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\80á\9e\8a á\9e\90á\9e¶â\80\8bá\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bá\9e\91á\9e¶á\9f\86á\9e\84á\9e\93á\9f\84á\9f\87 á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\9fá\9f\86á\9e\8aá\9f\85â\80\8bá\9e\91á\9f\85â\80\8bá\9e\82á\9f\84á\9e\9bá\9e\8aá\9f\85á\9e\94á\9e¶á\9e\93á\9e\9fá\9e\93á\9f\92á\9e\98á\9e\8f។
+'movepagetext' => "ការប្រើប្រាស់សំណុំបែបបទខាងក្រោមនឹងប្តូរឈ្មោះទំព័រ និងប្តូរទីតាំងប្រវត្តិទាំងអស់របស់វាទៅឈ្មោះថ្មីនោះ។
+á\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84â\80\8bá\9e\85á\9e¶á\9e\9fá\9f\8bâ\80\8bá\9e\93á\9e¹á\9e\84â\80\8bá\9e\80á\9f\92á\9e\9bá\9e¶á\9e\99á\9e\87á\9e¶â\80\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aâ\80\8bá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fទៅចំណងជើងថ្មី។
+á\9e¢á\9f\92á\9e\93á\9e\80á\9e¢á\9e¶á\9e\85á\9e\94á\9e\93á\9f\92á\9e\91á\9e¶á\9e\93á\9f\8bá\9e\9fá\9e\98á\9f\90á\9e\99á\9e\80á\9e¶á\9e\9aá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\8aá\9f\82á\9e\9bá\9e\9fá\9f\86á\9e\8aá\9f\85á\9e\91á\9f\85á\9e\9aá\9e\80á\9e\85á\9f\86á\9e\8eá\9e\84á\9e\87á\9e¾á\9e\84á\9e\85á\9e¶á\9e\9fá\9f\8bá\9e\8aá\9f\84á\9e\99á\9e\9fá\9f\92á\9e\9cá\9f\90á\9e\99á\9e\94á\9f\92á\9e\9aá\9e\9cá\9e\8fá\9f\92á\9e\8fá\9e·á\9f\94 á\9e\94á\9e¾á\9e\9fá\9e·á\9e\93á\9e\87á\9e¶á\9e¢á\9f\92á\9e\93á\9e\80á\9e\87á\9f\92á\9e\9aá\9e¾á\9e\9fá\9e\9aá\9e¾á\9e\9fá\9e\98á\9e·á\9e\93á\9e\92á\9f\92á\9e\9cá\9e¾á\9e\94á\9f\82á\9e\94á\9e\93á\9f\81á\9f\87 á\9e\9fá\9e¼á\9e\98á\9e\80á\9e»á\9f\86á\9e\97á\9f\92á\9e\9bá\9f\81á\9e\85á\9e\96á\9e·á\9e\93á\9e·á\9e\8fá\9f\92á\9e\99 [[Special:DoubleRedirects|á\9e\80á\9e¶á\9e\9aá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\91á\9f\92á\9e\9cá\9f\81á\9e\8aá\9e\84]] á\9e\93á\9e·á\9e\84[[Special:BrokenRedirects|á\9e\80á\9e¶á\9e\9aá\9e\94á\9e\89á\9f\92á\9e\87á\9e¼á\9e\93á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\8aá\9f\82á\9e\9bá\9e\8aá\9e¶á\9e\85á\9f\8b]]á\9f\94
+á\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9e¶á\9e\93á\9e\97á\9e¶á\9e\9aá\9f\88á\9e\92á\9f\92á\9e\9cá\9e¾á\9e¢á\9f\84á\9e\99á\9e\94á\9f\92á\9e\9aá\9e¶á\9e\80á\9e\8aá\9e\90á\9e¶á\9e\8fá\9f\86á\9e\8eá\9e\97á\9f\92á\9e\87á\9e¶á\9e\94á\9f\8bá\9e\91á\9e¶á\9f\86á\9e\84á\9e\93á\9f\84á\9f\87á\9e\93á\9f\85á\9e\8fá\9f\82á\9e\94á\9e\93á\9f\92á\9e\8fá\9e\9fá\9f\86á\9e\8aá\9f\85â\80\8bá\9e\91á\9f\85â\80\8bá\9e\80á\9e¶á\9e\93á\9f\8bá\9e\91á\9f\86á\9e\96á\9f\90á\9e\9aá\9e\82á\9f\84á\9e\9bá\9e\8aá\9f\85á\9e\8fá\9f\92á\9e\9aá\9e¹á\9e\98á\9e\8fá\9f\92á\9e\9aá\9e¼á\9e\9c។
-ទំព័រចាស់ នឹង'''មិន'''ត្រូវ បានប្តូរទីតាំង កាលបើមានទំព័រក្នុងចំណងជើងថ្មី។ បើគ្មានទំព័រក្នុងចំណងជើងថ្មី, ទំព័ចាស់នឹងទទេ ឬ ជាទំព័រប្តូរទិស និងគ្មានប្រវត្តិកំណែប្រែ។ វាមានន័យថា អ្នកអាចប្តូរឈ្មោះទំព័រទៅទីតាំងដើម ករណីអ្នកបានធ្វើកំហុស, និង ដែលអ្នកមិនអាច សរសេរជាន់ពីលើ ទំព័រមានស្រាប់។
+ទំព័រចាស់នឹង'''មិន'''ត្រូវ បានប្តូរទីតាំង កាលបើមានទំព័រក្នុងចំណងជើងថ្មីរួចហើយ លើកលែងតែក្នុងករណីទំព័រក្នុងចំណងជើងថ្មីជាទំព័របញ្ជូនបន្តហើយគ្មានប្រវត្តិកែប្រែពីមុន។ វាមានន័យថា អ្នកអាចប្តូរឈ្មោះទំព័រទៅទីតាំងដើម ករណីអ្នកបានធ្វើខុសដោយអចេនតនា ហើយអ្នកមិនអាចសរសេរជាន់ពីលើ ទំព័រមានស្រាប់។
'''ប្រយ័ត្ន!'''
-វាអាចជា បំលាស់ប្តូរដល់ឫសគល់ និងមិននឹកស្មានជាមុន ចំពោះទំព័រប្រជាប្រិយ។ អ្នកត្រូវតែដឹងប្រាកដអំពីផលវិបាកទាំងអស់ មុននឹងបន្តទង្វើនេះ។",
+វាអាចជាបន្លស់ប្តូរដល់ឫសគល់និងមិននឹកស្មានជាមុន សម្រាប់ទំព័រប្រជាប្រិយ។ អ្នកត្រូវតែដឹងប្រាកដអំពីផលវិបាកទាំងអស់ មុននឹងបន្តទង្វើនេះ។",
'movepagetalktext' => "ទំព័រសហពិភាក្សាបើមាន នឹងត្រូវបានប្តូរទៅឈ្មោះថ្មីជាមួយគ្នាដោយស្វ័យប្រវត្តិ '''លើកលែងតែ៖'''
*ទំព័រពិភាក្សាមិនទទេនិងមានរួចរាល់ក្រោមឈ្មោះថ្មី ឬ
*អ្នកដោះប្រអប់ធីកខាងក្រោម។
'confirmemail_body_set' => 'នរណាម្នាក់ ប្រហែលជាខ្លួនអ្នកផ្ទាល់ មកពីអាស័យដ្ឋានIP $1,
បានដាក់ភ្ជាប់អាស័យដ្ឋានអ៊ីមែលរបស់គណនី "$2" ជាមួយនឹងអាស័យដ្ឋានអ៊ីមែលនេះនៅលើ{{SITENAME}}។
-á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\90á\9e¶á\9e\93á\9f\81á\9f\87á\9e\96á\9e·á\9e\8fá\9e\87á\9e¶á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\95á\9f\92á\9e\91á\9e¶á\9e\9bá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9f\82á\9e\93 á\9e\93á\9e·á\9e\84á\9e\8aá\9f\86á\9e\8eá\9e¾á\9e\9aá\9e\80á\9e¶á\9e\9aá\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84{{SITENAME}}á\9e¡á\9e¾á\9e\84á\9e\9cá\9e·á\9e\89
+á\9e\8aá\9e¾á\9e\98á\9f\92á\9e\94á\9e¸á\9e\94á\9e\89á\9f\92á\9e\87á\9e¶á\9e\80á\9f\8bá\9e\90á\9e¶á\9e\93á\9f\81á\9f\87á\9e\96á\9e·á\9e\8fá\9e\87á\9e¶á\9e\82á\9e\8eá\9e\93á\9e¸á\9e\95á\9f\92á\9e\91á\9e¶á\9e\9bá\9f\8bá\9e\9aá\9e\94á\9e\9fá\9f\8bá\9e¢á\9f\92á\9e\93á\9e\80á\9e\98á\9f\82á\9e\93 á\9e\93á\9e·á\9e\84á\9e\94á\9e¾á\9e\80á\9e\8aá\9f\86á\9e\8eá\9e¾á\9e\9aá\9e\80á\9e¶á\9e\9aá\9e\98á\9e»á\9e\81á\9e\84á\9e¶á\9e\9aá\9e¢á\9f\8aá\9e¸á\9e\98á\9f\82á\9e\9bá\9e\80á\9f\92á\9e\93á\9e»á\9e\84{{SITENAME}}
សូមបើកតំណភ្ជាប់ខាងក្រោមនេះក្នុងកម្មវិធីរាយរកអ៊ីនធើណិតរបស់អ្នក៖
$3
# Special:SpecialPages
'specialpages' => 'ទំព័រពិសេសៗ',
'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' => 'កត់ឈ្មោះចូល / បង្កើតគណនី',
* @author Klutzy
* @author Kwj2772
* @author LFM
+ * @author Leehoy
* @author Mintz0223
* @author Pi.C.Noizecehx
* @author Priviet
'tog-editondblclick' => '더블 클릭으로 문서 편집하기',
'tog-editsection' => '[편집] 링크로 부분 편집하기',
'tog-editsectiononrightclick' => '제목을 오른쪽 클릭해서 문단 편집하기 활성화',
-'tog-showtoc' => '문서의 차례 보여주기 (머릿글이 4개 이상인 경우)',
+'tog-showtoc' => '문서의 목차 보여주기 (머릿글이 4개 이상인 경우)',
'tog-rememberpassword' => '이 브라우저에서 로그인 상태를 저장하기 (최대 $1{{PLURAL:$1|일}})',
'tog-watchcreations' => '내가 만드는 문서와 내가 올린 파일을 주시문서 목록에 추가',
'tog-watchdefault' => '내가 편집하는 문서와 파일을 주시문서 목록에 추가',
'italic_sample' => '기울인 글씨',
'italic_tip' => '기울인 글씨',
'link_sample' => '링크 제목',
-'link_tip' => 'ì\95\88쪽 ë§\81í\81¬',
+'link_tip' => 'ë\82´ë¶\80 ê³ ë¦¬',
'extlink_sample' => 'http://www.example.com 사이트 이름',
'extlink_tip' => '바깥 링크 (주소 앞에 http://가 있어야 합니다)',
'headline_sample' => '제목',
# Edit pages
'summary' => '요약:',
'subject' => '주제/제목:',
-'minoredit' => '사소한 편집',
+'minoredit' => '사소한 편집입니다',
'watchthis' => '이 문서 주시하기',
'savearticle' => '저장',
'preview' => '미리 보기',
'content-not-allowed-here' => '"$1" 내용은 [[$2]] 문서예 허용하지 않습니다',
'editwarning-warning' => '이 페이지에서 벗어나면 저장하지 않은 바뀜이 모두 사라집니다.
로그인을 했다면, 환경 설정의 "편집 상자"에서 이 경고를 띄우지 않도록 설정할 수 있습니다.',
+'editpage-notsupportedcontentformat-title' => '지원하지 않는 컨텐츠 형식',
+'editpage-notsupportedcontentformat-text' => '컨텐츠 모델 $2 에서는 컨텐츠형식 $1을 지원하지 않습니다.',
# Content models
'content-model-wikitext' => '위키텍스트',
'post-expand-template-inclusion-warning' => "'''경고:''' 틀 포함 크기가 너무 큽니다.
일부 틀은 포함되지 않을 수 있습니다.",
'post-expand-template-inclusion-category' => '사용한 틀의 크기가 지나치게 큰 문서의 목록',
-'post-expand-template-argument-warning' => "'''경고:''' 이 문서는 전개하면 크기가 너무 큰 틀 변수가 하나 이상 포함되어 있습니다.
-이 변수는 생략했습니다.",
+'post-expand-template-argument-warning' => "'''경고:''' 이 문서는 전개하면 크기가 너무 큰 틀 인수가 하나 이상 포함되어 있습니다.
+이 인수는 생략했습니다.",
'post-expand-template-argument-category' => '생략된 틀 변수를 포함한 문서',
'parser-template-loop-warning' => '재귀적인 틀이 발견되었습니다: [[$1]]',
'parser-template-recursion-depth-warning' => '틀 반복 횟수 제한을 초과함($1)',
'searchprofile-articles-tooltip' => '$1에서 검색',
'searchprofile-project-tooltip' => '$1에서 검색',
'searchprofile-images-tooltip' => '파일 검색',
-'searchprofile-everything-tooltip' => '토론 문서를 포함한 모든 문서 검색',
+'searchprofile-everything-tooltip' => '모든 문서 검색(토론 문서를 포함)',
'searchprofile-advanced-tooltip' => '다음 설정한 이름공간에서 검색',
'search-result-size' => '$1 ({{PLURAL:$2|1 단어|$2 단어}})',
'search-result-category-size' => '{{PLURAL:$1|문서 1개|문서 $1개}}, {{PLURAL:$2|하위 분류 1개|하위 분류 $2개}}, {{PLURAL:$3|파일 1개|파일 $3개}}',
'recentchanges-label-newpage' => '새 문서',
'recentchanges-label-minor' => '사소한 편집',
'recentchanges-label-bot' => '봇의 편집',
-'recentchanges-label-unpatrolled' => '아직 검토하지 않은 편집',
+'recentchanges-label-unpatrolled' => '아직 순찰하지 않은 편집',
'recentchanges-label-plusminus' => '바이트로 표기된 바뀐 문서 크기',
'recentchanges-legend-heading' => "'''범례:'''",
'recentchanges-legend-newpage' => '([[Special:NewPages|새 문서 목록]]도 보세요)',
'rcshowhidebots' => '봇을 $1',
'rcshowhideliu' => '등록된 사용자를 $1',
'rcshowhideanons' => '익명 사용자를 $1',
-'rcshowhidepatr' => '검토된 편집을 $1',
+'rcshowhidepatr' => '순찰된 편집을 $1',
'rcshowhidemine' => '내 편집을 $1',
'rclinks' => '최근 $2일간의 $1개 바뀐 문서 보기<br />$3',
'diff' => '비교',
'recentchangeslinked-summary' => "여기를 가리키는 문서(분류일 경우 이 분류에 포함된 문서)에 대한 최근 바뀜이 나와 있습니다.
[[Special:Watchlist|주시하는 문서]]는 '''굵은''' 글씨로 나타납니다.",
'recentchangeslinked-page' => '문서 이름:',
-'recentchangeslinked-to' => '해당 문서를 링크한 문서의 바뀜 보기',
+'recentchangeslinked-to' => '해당 문서를 가리키는 문서의 바뀜 보기',
# Upload
'upload' => '파일 올리기',
'filehist-current' => '현재',
'filehist-datetime' => '날짜/시간',
'filehist-thumb' => '섬네일',
-'filehist-thumbtext' => '$1 판의 파일',
+'filehist-thumbtext' => '$1 판의 섬네일',
'filehist-nothumb' => '섬네일 없음',
'filehist-user' => '사용자',
'filehist-dimensions' => '크기',
'nolinkshere' => "'''[[:$1]]''' 문서를 가리키는 문서가 없습니다.",
'nolinkshere-ns' => "선택한 이름공간에는 '''[[:$1]]''' 문서를 가리키는 문서가 없습니다.",
'isredirect' => '넘겨주기 문서',
-'istemplate' => '포함',
+'istemplate' => '끼워넣기',
'isimage' => '파일 사용 중',
'whatlinkshere-prev' => '{{PLURAL:$1|이전|이전 $1개}}',
'whatlinkshere-next' => '{{PLURAL:$1|다음|다음 $1개}}',
차단된 사용자 목록은 [[Special:BlockList|여기]]에서 볼 수 있습니다.',
'ipb-blockingself' => '자기 자신을 차단하려고 합니다! 정말로 실행할까요?',
'ipb-confirmhideuser' => '사용자를 차단하면서 "사용자 숨기기" 설정을 선택했습니다. 모든 기록에서 이 사용자의 사용자 이름을 숨기게 됩니다. 정말로 계정을 숨기시겠습니까?',
+'ipb-confirmaction' => '그것을 정말로 하기 원한다면 아래에 있는 "{{int:ipb-confirm}}" 부분에 체크하세요',
'ipb-edit-dropdown' => '차단 이유 목록 편집하기',
'ipb-unblock-addr' => '$1 차단 해제하기',
'ipb-unblock' => '사용자 또는 IP 주소 차단 해제하기',
'tooltip-n-portal' => '프로젝트에 대해 여러분이 할 수 있고, 정보를 찾을 수 있는 곳',
'tooltip-n-currentevents' => '최근의 소식 알아 보기',
'tooltip-n-recentchanges' => '위키의 최근 바뀜 목록',
-'tooltip-n-randompage' => '임의 문서 읽기',
+'tooltip-n-randompage' => '임의 문서 불러오기',
'tooltip-n-help' => '도움말',
-'tooltip-t-whatlinkshere' => '여기를 링크한 모든 위키 문서의 목록',
+'tooltip-t-whatlinkshere' => '여기를 가리키는 모든 위키 문서의 목록',
'tooltip-t-recentchangeslinked' => '이 문서에서 링크한 문서의 최근 바뀜',
'tooltip-feed-rss' => '이 문서의 RSS 피드',
'tooltip-feed-atom' => '이 문서의 Atom 피드',
'tooltip-save' => '바뀐 내용 저장하기',
'tooltip-preview' => '바뀜을 미리 봅니다. 저장하기 전에 미리 보기를 해주세요!',
'tooltip-diff' => '자신이 바꾼 내용 보기',
-'tooltip-compareselectedversions' => '이 문서에서 선택한 두 판간의 차이를 비교',
+'tooltip-compareselectedversions' => '이 문서에서 선택한 두 판 간의 차이를 비교',
'tooltip-watch' => '이 문서를 주시문서 목록에 추가',
'tooltip-watchlistedit-normal-submit' => '항목 제거하기',
'tooltip-watchlistedit-raw-submit' => '주시문서 목록 새로 고침',
'markaspatrolleddiff' => '검토한 문서로 표시',
'markaspatrolledtext' => '이 문서를 검토한 것으로 표시',
'markedaspatrolled' => '검토한 문서로 표시',
-'markedaspatrolledtext' => '[[:$1]] 문서의 선택한 판을 검토한 것으로 표시하였습니다.',
+'markedaspatrolledtext' => '[[:$1]] 문서의 선택한 판을 순찰한 것으로 표시하였습니다.',
'rcpatroldisabled' => '최근 바뀜 검토 기능 비활성화됨',
'rcpatroldisabledtext' => '최근 바뀜 검토 기능은 현재 비활성화되어 있습니다.',
'markedaspatrollederror' => '검토한 것으로 표시할 수 없습니다.',
# Metadata
'metadata' => '메타데이터',
-'metadata-help' => '이 파일은 그 파일을 만들거나 디지털화하는 데 사용되는 카메라나 스캐너에서 기록한 부가 정보를 가지고 있습니다.
-í\94\84ë¡\9cê·¸ë\9e¨ì\97\90ì\84\9c í\8c\8cì\9d¼ì\9d\84 í\8e¸ì§\91í\95 경우, 새로 저장한 파일에 일부 부가 정보가 빠질 수 있습니다.',
+'metadata-help' => '이 파일은 카메라나 스캐너가 파일을 만들거나 디지털화하는 데 사용하기위해 기록한 부가 정보를 포함하고 있습니다.
+í\94\84ë¡\9cê·¸ë\9e¨ì\97\90ì\84\9c í\8c\8cì\9d¼ì\9d\84 í\8e¸ì§\91í\95\9c 경우, 새로 저장한 파일에 일부 부가 정보가 빠질 수 있습니다.',
'metadata-expand' => '자세한 정보 보이기',
'metadata-collapse' => '자세한 정보 숨기기',
'metadata-fields' => '파일 메타데이터 표가 접혀 있을 때, 이 메시지에 올라와 있는 다음 속성값만이 기본적으로 보이게 됩니다.
'version-ext-colheader-license' => '라이선스',
'version-ext-colheader-description' => '설명',
'version-ext-colheader-credits' => '저자',
+'version-license-title' => '$1 사용을 위한 라이센스',
'version-license-not-found' => '이 확장기능에 대한 라이선스 세부 정보가 없습니다.',
+'version-credits-title' => '$1의 작성자',
'version-credits-not-found' => '이 확장기능에 대한 크레딧 세부 정보가 없습니다.',
'version-poweredby-credits' => "이 위키는 '''[https://www.mediawiki.org/ MediaWiki]'''(미디어위키)를 기반으로 작동합니다. Copyright © 2001-$1 $2.",
'version-poweredby-others' => '그 외 다른 개발자',
'api-error-overwrite' => '이미 있는 파일을 덮어쓸 수 없습니다.',
'api-error-stashfailed' => '내부 오류: 서버가 임시 파일을 저장하지 못했습니다.',
'api-error-publishfailed' => '내부 오류: 서버가 임시 파일을 게시하지 못했습니다.',
+'api-error-stasherror' => '파일을 안전한 곳으로 업로드 하는 동안 오류가 발생했습니다.',
'api-error-timeout' => '서버가 제 시간 내에 응답하지 않았습니다.',
'api-error-unclassified' => '알 수 없는 오류가 발생했습니다.',
'api-error-unknown-code' => '알 수 없는 오류: "$1"',
'expand_templates_generate_rawhtml' => '원본 HTML 보이기',
'expand_templates_preview' => '미리 보기',
+# Unknown messages
+'uploadinvalidxml' => '이 업로드 된 파일의 XML 구문은 분석할 수 없습니다.',
);
'recentchanges-label-minor' => 'Бу гитче тюрлениудю',
'recentchanges-label-bot' => 'Бу тюрлендириуню бот этгенди',
'recentchanges-label-unpatrolled' => 'Бу тюрлендириу алкъын патруль этилинмегенди',
-'recentchanges-legend-newpage' => '$1 — джангы бет',
+'recentchanges-label-plusminus' => 'Бетни ёлчеми быллай бир байтха тюрленнгенди',
+'recentchanges-legend-newpage' => '(къарагъыз: [[Special:NewPages|джангы бетлени тизмеси]])',
'rcnotefrom' => 'Тюбюрекде <strong>$2</strong> башлаб (<strong>$1</strong> дери) тюрлендириуле кёрюнедиле',
'rclistfrom' => '$1 башлаб джангы тюрлениулени кёргюз',
'rcshowhideminor' => 'гитче тюрлендириулени $1',
'rc-old-title' => 'биринчи «$1» деб къуралгъан',
# Recent changes linked
-'recentchangeslinked' => 'Байлам тюрлениуле',
+'recentchangeslinked' => 'Байламлы тюрлениуле',
'recentchangeslinked-feed' => 'Байламлы тюрлениуле',
-'recentchangeslinked-toolbox' => 'Байламлы тюрлендириуле',
+'recentchangeslinked-toolbox' => 'Байлам тюрлениуле',
'recentchangeslinked-title' => '$1 бет бла байламлы тюрлендириуле',
'recentchangeslinked-summary' => "Белгиленнген бет (неда белгиленнген категориягъа киргенле) джиберген бетледе джангы тюрлениулени тизмеси.
[[Special:Watchlist|Кёзде тургъан тизмеге]] кирген бетле '''чертилибдиле'''.",
'december-date' => 'Disiembre $1',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Kateggoría|Kateggorías}}',
-'category_header' => 'Artíkolos en la kateggoría "$1"',
-'subcategories' => 'Sòkategoriyas',
-'category-media-header' => 'Arxivos de multimedya en la kateggoría "$1"',
-'category-empty' => "''Esta katēggoría oy día, no contiene ni artícůlos ni arxivos de multimedya''",
-'hidden-categories' => '{{PLURAL:$1|Kateggoría escondida|Kateggorías escondidas}}',
+'pagecategories' => '{{PLURAL:$1|Kategoría|Kategorías}}',
+'category_header' => 'Artíkolos en la kategoría "$1"',
+'subcategories' => 'Sòkategorías',
+'category-media-header' => 'Dosyas de multimedya en la kategoría "$1"',
+'category-empty' => "''Esta kategoría oy día, no contiene ni hojas ni dosyas de multimedya''",
+'hidden-categories' => '{{PLURAL:$1|Kategoría escondida|Kategorías escondidas}}',
'hidden-category-category' => 'Katēggorías escondidas',
'category-subcat-count' => '{{PLURAL:$2|Esta katēggoría contiene sólo una baxo-katēggoría:|Esta katēggoría contiene {{PLURAL:$1|esta baxo-katēggoría aquí abaxo|$1 baxo-katēggorías aquí abaxo}}, de un total de $2 baxo-katēggorías:}}',
'category-subcat-count-limited' => 'Esta katēggoría contiene {{PLURAL:$1|la baxo-katēggoría venidera|$1 baxo-katēggorías venideras}}.',
'mypage' => 'Hoja',
'mytalk' => 'Mi diskusyon',
'anontalk' => 'Diskusyón para este adresso de IP',
-'navigation' => 'Navigasyon',
+'navigation' => 'Navigación',
'and' => ' i',
# Cologne Blue skin
'vector-action-addsection' => 'Ajustar sujeto',
'vector-action-delete' => 'Efassar',
'vector-action-move' => 'Taşirear',
-'vector-action-protect' => 'Guardar',
+'vector-action-protect' => 'Guadrar',
'vector-action-undelete' => 'Traer atrás',
'vector-action-unprotect' => 'Trocar proteksyon',
'vector-simplesearch-preference' => 'Aktivar barra de buskida simplifikada (solamente kon aspekto Vector)',
-'vector-view-create' => 'Krear',
+'vector-view-create' => 'Criar',
'vector-view-edit' => 'Trocar',
'vector-view-history' => 'Ver la istoria',
'vector-view-view' => 'Meldar',
'tagline' => 'De {{SITENAME}}',
'help' => 'Ayudo',
'search' => 'Buxcar',
-'searchbutton' => 'Bushkar',
+'searchbutton' => 'Buxcar',
'go' => 'Ir',
'searcharticle' => 'Ir',
'history' => 'La istoria de la hoja',
'print' => 'Imprimir',
'view' => 'Ver',
'edit' => 'Trocar',
-'create' => 'Krear',
+'create' => 'Criar',
'editthispage' => 'Trocar esta hoja',
'create-this-page' => 'Criar esta hoja',
-'delete' => 'Efasar',
+'delete' => 'Efaçar',
'deletethispage' => 'Efassar esta hoja',
'undeletethispage' => 'Restorar esta pajina',
'undelete_short' => 'Traer atrás $1 {{PLURAL:$1|trocamientos|trocamientos}}',
'viewdeleted_short' => 'Ver {{PLURAL:$1|un trocamiento efassado|$1 trocamientos efassados}}',
-'protect' => 'Guardar',
+'protect' => 'Guadrar',
'protect_change' => 'trocar el guardadijo',
'protectthispage' => 'Guardar esta hoja',
'unprotect' => 'Trocar guardadijo',
'viewcount' => 'Este pajina fue vijitado {{PLURAL:$1|una vez|$1 vezes}}.',
'protectedpage' => 'Hoja guardada',
'jumpto' => 'Saltar a:',
-'jumptonavigation' => 'navigasyon',
-'jumptosearch' => 'bushkar',
+'jumptonavigation' => 'navigación',
+'jumptosearch' => 'buxcar',
'view-pool-error' => 'Diskulpe, los servidores estan sovrekargado en est momento.
Ay demaziado usuarios estan aprovando a ver esta pajina.
Aspera un momento antes de aprovar esta pajina de muevo.
'copyrightpage' => '{{ns:project}}:Derechos de autor',
'currentevents' => 'Novedades',
'currentevents-url' => 'Project:Novedades',
-'disclaimers' => 'Refuso de responsabilitá',
+'disclaimers' => 'Refuzo de responsabilitá',
'disclaimerpage' => 'Project:Refuso de responsabilitá jeneral',
'edithelp' => '¿Cómo se la troca?',
'helppage' => 'Help:Contènidos',
'policy-url' => 'Project:Politikas',
'portal' => 'Portal de la komunitá',
'portal-url' => 'Project:Portal de la komunitá',
-'privacy' => 'Principio de particòlaridad',
+'privacy' => 'Prencipio de partikolaridad',
'privacypage' => 'Project:Principio de particòlaridad',
'badaccess' => 'Yerro de permissión',
'newmessageslinkplural' => '{{PLURAL:$1|un muevo mesaje|999=mesajes muevos}}',
'newmessagesdifflinkplural' => '{{PLURAL:$1|ulitmo kambio|999=ultimos kambios}}',
'youhavenewmessagesmulti' => 'Tienes messajes nuevos en $1',
-'editsection' => 'troca',
+'editsection' => 'trocar',
'editold' => 'trocar',
'viewsourceold' => 'Ver su manadero',
'editlink' => 'trocar',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Hoja',
-'nstab-user' => 'Pajina de usuario',
+'nstab-user' => 'Hoja de kullaneador',
'nstab-media' => 'Hoja de Meddia',
'nstab-special' => 'Hoja especial',
'nstab-project' => 'Hoja del proyecto',
-'nstab-image' => 'Archivo',
+'nstab-image' => 'Dosya',
'nstab-mediawiki' => 'Messaj',
'nstab-template' => 'Şablón',
'nstab-help' => 'Ayudo',
-'nstab-category' => 'Kategoriya',
+'nstab-category' => 'Kategoría',
# Main script and global functions
'nosuchaction' => 'No egziste esa aksyon',
'readonlytext' => 'La base de datos esta blokeada a muevas entradas i otras modifikasyones,probablemente para mantenemento rutinas, Kuando akava se enkontra dispozible.
El administrador ke blokeo dio esta esplikasyon: $1',
-'missing-article' => 'La base de datos no topó el teksto de una pajina ke se debe topar, llamada "$1" $2.
+'missing-article' => 'La basa de dados no topó el teksto de la hoja llamada "$1" $2.
-Jeneralmente, esto se cavsa de un "dif" anakróniko o de una enlase de la istoria de una pajina que se efaso.
+En lo mas muncho, esto se cavsa de un "dif" anakróniko u de un atamiento de la istoria de una hoja que se efaçó.
-Si esto no es el cavso, puede ser que topates un yerro en la programa.
-Si puede avisar [[Special:ListUsers/sysop|administrador]], anotando la URL.',
+Si esto no es el cavso, puede ser que topates una chincha en el lojikal.
+Alora, avisa un [[Special:ListUsers/sysop|administrador]] si puede ser, también escriviéndolo la URL.',
'missingarticle-rev' => '(nº. de revisión: $1)',
'missingarticle-diff' => '(Dif.: $1, $2)',
'readonly_lag' => 'La base de datos se a blokeado mientres los servidores se sinkronizan',
# Login and logout pages
'welcomeuser' => 'Bienvinidos, $1',
-'yourname' => 'Nombre de usuario:',
+'yourname' => 'Nombre de kullaneador:',
'userlogin-yourname' => 'Nombre de usuario',
'userlogin-yourname-ph' => 'Eskrive tu nombre de usuario',
'createacct-another-username-ph' => 'Eskrive el nombre de usuario',
-'yourpassword' => 'Kontrasenya:',
+'yourpassword' => 'Kóddiche:',
'userlogin-yourpassword' => 'Kontrasenya',
'userlogin-yourpassword-ph' => 'Eskriva tu kontrasenya',
'createacct-yourpassword-ph' => 'Eskriva una kontrasenya',
-'yourpasswordagain' => 'Entra de muevo la kontrasenya',
+'yourpasswordagain' => 'Entra de muevo el kóddiche:',
'createacct-yourpasswordagain' => 'Konfirme contrasenya',
'createacct-yourpasswordagain-ph' => 'Eskrive la kontrasenya de muevo',
-'remembermypassword' => 'Acórdate de mi entrada de usador en este bilgisayar/orddênador (por un maksimum de {{PLURAL:$1|día|días}})',
+'remembermypassword' => 'Acódrate de mi entrada de kullaneador en este navigador (por un maksimum de {{PLURAL:$1|día|días}})',
'yourdomainname' => 'Tu dominyo:',
'password-change-forbidden' => 'No se puede kambiar contrasenyas en este viki.',
'login' => 'Entrar',
-'nav-login-createaccount' => 'Entrar / krear un kuento',
+'nav-login-createaccount' => 'Entrar / criar un kuento',
'loginprompt' => 'Kale tener "cookies" aktivadas enel navegador para enrejistrarse en {{SITENAME}}',
-'userlogin' => 'Entrar / Registrarse',
+'userlogin' => 'Entrar / Criar cuento',
'logout' => 'Salir',
'userlogout' => 'Salir',
'userlogin-noaccount' => 'No tiene un kuento?',
'userlogin-joinproject' => 'Abonar {{SITENAME}}',
'nologin' => "¿No tienes un cuento? '''$1'''.",
-'nologinlink' => 'Krear un kuento',
-'createaccount' => 'Krear un kuento',
+'nologinlink' => 'Criar un kuento',
+'createaccount' => 'Criar un cuento',
'gotaccount' => "¿Ya tienes un cuento? '''$1'''.",
'gotaccountlink' => 'Entrar',
'userlogin-resetlink' => 'Olvidates tus detalyos de akseso?',
'createacct-error' => 'Yerro de kreasyon de kuento',
'createaccounterror' => 'No se pudo crear el cuento: $1',
'password-name-match' => 'Tu contrasenya kale ser diferente de tu usuario.',
-'mailmypassword' => 'Restableser kontrasenya',
+'mailmypassword' => 'Restableser kóddiche',
'mailerror' => 'Falta al embiar korreo: $1',
'emailconfirmlink' => 'Confirma su adderesso de letra electrónica',
'accountcreated' => 'Cuento creado',
'bold_tip' => 'Teksto reforçado',
'italic_sample' => 'Teksto aladado',
'italic_tip' => 'Teksto aladado',
-'link_sample' => 'Título del enlase',
+'link_sample' => 'Títolo del atamiento',
'link_tip' => 'Link interno',
'extlink_sample' => 'http://www.example.com Títolo del atamiento',
'extlink_tip' => 'Link eksterno (acόrdate de ajustar el prefiks http://)',
'nowiki_sample' => 'Escribid aquí texto sin formato',
'nowiki_tip' => 'Iñorar el formato wiki',
'image_tip' => 'Imagen incorporada',
-'media_tip' => 'Enlase de archivo',
+'media_tip' => 'Atamiento de la dosya',
'sig_tip' => 'Firma, data i ora',
'hr_tip' => 'Liña orizontala (úsala de vez en cuando)',
'templatesused' => '{{PLURAL:$1|El şablón usado|Los şablones usados}} en esta hoja:',
'templatesusedpreview' => '{{PLURAL:$1|El xabblón usado|Los xabblones usados}} en esta vista:',
'template-protected' => '(guadrada)',
-'template-semiprotected' => '(media guardada)',
-'hiddencategories' => 'Esta hoja es un miembro de {{PLURAL:$1|1 kateggoría escondida|$1 kateggorías escondidas}}:',
+'template-semiprotected' => '(media guadrada)',
+'hiddencategories' => 'Esta hoja es un miembro de {{PLURAL:$1|1 kategoría escondida|$1 kategorías escondidas}}:',
'nocreate-loggedin' => 'No tienes el permisso de creas hojas nuevas.',
'permissionserrorstext-withaction' => 'No tienes el permiso para $2, por las {{PLURAL:$1|razón|razones}} venideras:',
'recreate-moveddeleted-warn' => "'''Aviso: Estas kriando una oja la kuala fue efassada antes.'''
'revisionasof' => 'Enderechamiento a las $1',
'revision-info' => 'Revision en data $1 por $2',
'previousrevision' => '← Enderechamiento de antes',
-'nextrevision' => 'Rêvisión venidera →',
+'nextrevision' => 'Revizión venidera →',
'currentrevisionlink' => 'Revisión actual',
'cur' => 'act',
'next' => 'venidero',
(prev) = diferencias con la versión previa, M = edición menor",
'history-fieldset-title' => 'Navegar en la istoria',
'history-show-deleted' => 'Sólamente efassado',
-'histfirst' => 'Lo mas antiko',
+'histfirst' => 'Lo mas viejo',
'histlast' => 'Lo mas muevo',
'historysize' => '({{PLURAL:$1|1 byte|$1 bytes}})',
'historyempty' => '(vazío)',
'revdelete-radio-set' => 'Eskondido',
'revdelete-radio-unset' => 'Visible',
'revdelete-log' => 'Razon:',
-'revdel-restore' => 'troca la visibilitá',
+'revdel-restore' => 'troca la vizibilitá',
'pagehist' => 'La storia de la hoja',
'revdelete-otherreason' => 'Otro razon/razon adisiyonal',
'revdelete-reasonotherlist' => 'Otra razón',
# Diffs
'history-title' => 'Istorya de trokamientos para «$1»',
'lineno' => 'Liña $1:',
-'compareselectedversions' => 'Comparar versiones escogidas',
+'compareselectedversions' => 'Comparar versiones escojidas',
'editundo' => 'des-hazer',
'diff-multi' => '(No {{PLURAL:$1|es amostrado un trokamiento intermedio echo|son amostrados $1 trokamientos intermedios echos}} por {{PLURAL:$2|un usador|$2 usadores}})',
# Search results
-'searchresults' => 'Resultados de la bushkida',
-'searchresults-title' => 'Resultados de la bushkida de «$1»',
+'searchresults' => 'Resultados de la búxquida',
+'searchresults-title' => 'Resultados de la búxquida de «$1»',
'notextmatches' => 'No se pudo topar en dinguna hoja.',
'prevn' => '{{PLURAL:$1|$1}} de antes',
'nextn' => '{{PLURAL:$1|$1}} venideras',
'shown-title' => 'Amostrar $1 {{PLURAL:$1|resultado|resultados}} por hoja',
'viewprevnext' => 'Ver ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => 'Egziste una oja yamada "[[:$1]]" en esta viki',
-'searchmenu-new' => "'''Krear la pajina «[[:$1]]» en esta viki!'''{{PLURAL:$2|0=|Tambien ver la pajina topado kon tu bushkida.|Tambier ver la resulta de tu bushkida.}}",
-'searchprofile-articles' => 'Pajinas de kontenido',
+'searchmenu-new' => "'''Criar la hoja «[[:$1]]» en esta viki!'''{{PLURAL:$2|0=|También ver la hoja topado kon tu búxquida.|Tambier ver la resulta de tu búxquida.}}",
+'searchprofile-articles' => 'Hojas de contènido',
'searchprofile-project' => 'Hojas de ayudo y hojas de projeto',
'searchprofile-images' => 'Multimedya',
'searchprofile-everything' => 'Todo',
'searchprofile-advanced' => 'Adelantado',
-'searchprofile-articles-tooltip' => 'Bushkar en $1',
-'searchprofile-project-tooltip' => 'Bushkar en $1',
-'searchprofile-images-tooltip' => 'Bushkar archivos',
+'searchprofile-articles-tooltip' => 'Buxcar en $1',
+'searchprofile-project-tooltip' => 'Buxcar en $1',
+'searchprofile-images-tooltip' => 'Buxcar dosyas',
'searchprofile-everything-tooltip' => 'Bushkar en todo el kontenido (i mismo en las hojas de diskusyón)',
-'searchprofile-advanced-tooltip' => 'Buscar en espacios de nombres particůlares',
+'searchprofile-advanced-tooltip' => 'Buxcar en espacios de nombres particòlares',
'search-result-size' => '$1 ({{PLURAL:$2|1 biervo|$2 biervos}})',
'search-result-category-size' => '{{PLURAL:$1|1 miembro|$1 miembros}} ({{PLURAL:$2|1 basho-kateggoria|$2 basho-kateggoria}}, {{PLURAL:$3|1 dossia|$3 dossias}})',
'search-redirect' => '(direksión desde $1)',
'searchrelated' => 'lisionado',
'searchall' => 'todos',
'showingresultsheader' => "{{PLURAL:$5|Resultado '''$1''' de '''$3'''|Resultados '''$1-$2''' de '''$3'''}} para '''$4'''",
-'search-nonefound' => 'No ay resultados que acumplan los criterios de la búsqueda.',
+'search-nonefound' => 'No ay resultados que acumplan los criterios de la búxquida.',
'powersearch-legend' => 'Búsqueda adelantada',
'powersearch-ns' => 'Busca en los espacios de nombres:',
'powersearch-redir' => 'Mostra las redirecciones',
# Preferences page
'preferences' => 'Preferencias',
-'mypreferences' => 'Las mis preferensias',
+'mypreferences' => 'Preferencias',
'prefs-edits' => 'Numero de edisyones:',
'prefs-skin' => 'Vista',
'skin-preview' => 'Previstear',
'timezoneregion-pacific' => 'Oseano Pasifiko',
'prefs-searchoptions' => 'Bushkar',
'prefs-files' => 'Dosyas',
-'youremail' => 'Korreo elektroniko:',
+'youremail' => 'Letral:',
'username' => '{{GENDER:$1|Nombre de usuario}}:',
'yourrealname' => 'Nombre verdadero:',
'yourlanguage' => 'Lengua:',
'recentchanges-legend' => 'Opciones encima de los trocamientos frescos',
'recentchanges-summary' => 'Perseguid en esta hoja, los trocamientos de alcabo realizados en la Viki.',
'recentchanges-feed-description' => 'Perseguir los trocamientos más nuevos en el viki en este feed.',
-'recentchanges-label-newpage' => 'Este trokamiento krio una mueva ója',
+'recentchanges-label-newpage' => 'Este trocamiento crió una mueva hoja',
'recentchanges-label-minor' => 'Esta es un trocamiento chiquitico',
'recentchanges-label-bot' => 'Este trokamiento fue echo por un bot',
'recentchanges-label-unpatrolled' => 'Este trocamiento no está akavidado',
'rcshowhidebots' => '$1 bots',
'rcshowhideliu' => '$1 kullaneadores enrezhistrados',
'rcshowhideanons' => '$1 kullaneadores anonimes',
-'rcshowhidepatr' => '$1 trokamientos akavidados',
+'rcshowhidepatr' => '$1 trocamientos akavidados',
'rcshowhidemine' => '$1 mis ediciones',
'rclinks' => 'Ver los dal cavo $1 trocamientos en los dal cavo $2 días.<br />$3',
'diff' => 'dif',
'hist' => 'ist',
-'hide' => 'Eskonder',
+'hide' => 'Esconder',
'show' => 'Amostrar',
'minoreditletter' => 'ch',
'newpageletter' => 'N',
'recentchangeslinked-feed' => 'Trocamientos conectados',
'recentchangeslinked-toolbox' => 'Trocamientos relatados',
'recentchangeslinked-title' => 'Los trocamientos relacionados con "$1"',
-'recentchangeslinked-summary' => "Esto es la lista de los trocamientos de alcavo de las hojas que relatan a una hoja particòlar (o de los miembros de la kategoriya particòlar).
+'recentchangeslinked-summary' => "Esto es la lista de los trocamientos dalcavo de las hojas que relatan a una hoja particòlar (o de los miembros de la kategoría particòlar).
Las hojas en tu [[Special:Watchlist|lista de akavidamiento]] son '''reforçadas'''.",
'recentchangeslinked-page' => 'Nombre de la hoja',
'recentchangeslinked-to' => 'Amostra los trocamientos freskos en lugar de la hoja indicada',
# Upload
-'upload' => 'Suvir un archivo',
+'upload' => 'Suvir una dosya',
'uploadlogpage' => 'Subidas de arxivos',
'filename' => 'Nombre de archivo',
'filedesc' => 'Somario',
'filesource' => 'Fuente:',
'filename-tooshort' => 'El nombre del archivo es muy kurto.',
'savefile' => 'Guardar archivo',
-'uploadedimage' => 'subió «[[$1]]»',
+'uploadedimage' => 'suvió «[[$1]]»',
# File backend
'backend-fail-notexists' => 'El archivo $1 no egziste.',
# img_auth script messages
'img-auth-nofile' => 'El archivo "$1" no egziste.',
-'license' => 'Lesensia:',
+'license' => 'Lecencia:',
'license-header' => 'Lesensiamyénto',
# Special:ListFiles
'listfiles-latestversion-no' => 'No',
# File description page
-'file-anchor-link' => 'Archivo',
+'file-anchor-link' => 'Dosya',
'filehist' => 'La istoria de la dosya',
'filehist-help' => 'Klika encima de una data/ora para vel la dosya desta data.',
'filehist-revert' => 'aboltar',
'filehist-thumb' => 'Minyatura',
'filehist-thumbtext' => 'Minyatura de la versión á las $1',
'filehist-nothumb' => 'Sin minyatura',
-'filehist-user' => 'Usuario',
+'filehist-user' => 'Kullaneador',
'filehist-dimensions' => 'Dimensiones',
'filehist-filesize' => 'El boy de la dosya',
'filehist-comment' => 'Comentario',
# Special:LinkSearch
'linksearch' => 'Bushkida de enlases eksternos',
'linksearch-ok' => 'Bushkar',
-'linksearch-line' => 'Atamiento para $1 en la ója $2',
+'linksearch-line' => 'Atamiento para $1 en la hoja $2',
# Special:ListUsers
'listusers-submit' => 'Amostrar',
Si puede ser, confirma que de verdad queres hazer esto, que estás entendiendo las
resultados, i que lo estás haziendo de acorddo con las [[{{MediaWiki:Policy-url}}|Políticas]].',
'actioncomplete' => 'Aksion kompleta',
-'actionfailed' => 'Aksiyon sin reushitá',
+'actionfailed' => 'Aksión sin reuşitá',
'deletedtext' => '"$1" fue efassado.
Mira $2 para un registro de los efassados nuevos.',
'dellogpage' => 'Registro de efassados',
'blanknamespace' => '(Principal)',
# Contributions
-'contributions' => 'Ajustamientos {{GENDER:$1|del usador|de la usadora}}',
+'contributions' => 'Ajustamientos {{GENDER:$1|del kullaneador|de la kullaneadera}}',
'contributions-title' => 'Ajustamientos {{GENDER:$1|del usuario|de la usuaria}} $1',
-'mycontris' => 'Mis dados',
+'mycontris' => 'Mis donos',
'contribsub2' => 'Para {{GENDER:$3|$1}}($2)',
'uctop' => '(korriente)',
'month' => 'Desde el mes (i antes):',
'sp-contributions-uploads' => 'suvidas',
'sp-contributions-logs' => 'enrejistros',
'sp-contributions-talk' => 'Diskusyón',
-'sp-contributions-search' => 'Buscar ajustamientos',
+'sp-contributions-search' => 'Buxcar ajustamientos',
'sp-contributions-username' => 'Adreso de IP o nombre de usuario:',
'sp-contributions-toponly' => "Amostrar solo revisiones d'alkavo",
-'sp-contributions-submit' => 'Bushkar',
+'sp-contributions-submit' => 'Buxcar',
# What links here
-'whatlinkshere' => 'Atamientos a esta hoja',
+'whatlinkshere' => 'Hojas atadas',
'whatlinkshere-title' => 'Hojas que dan link a "$1"',
'whatlinkshere-page' => 'Hoja:',
'linkshere' => "Las hojas venideras dan link a '''[[:$1]]''':",
'nolinkshere' => "Dinguna ója tiene atamientos kon '''[[:$1]]'''",
'isredirect' => 'Hoja redirigida',
'istemplate' => 'inclusión',
-'isimage' => 'enlase de archivo',
+'isimage' => 'atamiento de la dosya',
'whatlinkshere-prev' => '{{PLURAL:$1|de antes|de antes $1}}',
'whatlinkshere-next' => '{{PLURAL:$1|venidera|venideras $1}}',
-'whatlinkshere-links' => '← enlases',
+'whatlinkshere-links' => '← atamientos',
'whatlinkshere-hideredirs' => '$1 redirecciones',
'whatlinkshere-hidetrans' => '$1 inclusiones',
-'whatlinkshere-hidelinks' => '$1 enlases',
-'whatlinkshere-hideimages' => '$1 atamientos a imejes',
+'whatlinkshere-hidelinks' => '$1 atamientos',
+'whatlinkshere-hideimages' => '$1 atamientos a dosyas',
'whatlinkshere-filters' => 'Filtres',
# Block/unblock
'blockip' => 'Bloquear usuario',
'ipadressorusername' => 'Adreso de IP o nombre de usuario:',
'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',
+'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',
'badipaddress' => 'Adreso de IP invalido',
'ipblocklist' => 'Usuarios blokeados',
'blocklist-reason' => 'Razon',
'blocklink' => 'blokar',
'unblocklink' => 'quitar el bloko',
'change-blocklink' => 'trocar el bloko',
-'contribslink' => 'donos',
+'contribslink' => 'kontribüsyones',
'emaillink' => 'embiar korreo elektroniko',
-'blocklogpage' => 'Bloqueos de usuarios',
-'blocklogentry' => 'bloqueó a [[$1]] $3 durante un tiempo de $2',
+'blocklogpage' => 'Blokos de kullaneadores',
+'blocklogentry' => 'blokó a [[$1]] $3 durante un tiempo de $2',
'unblocklogentry' => 'desbloqueó a "$1"',
'block-log-flags-nocreate' => 'desactivada la kreasyon de kuentos',
'block-log-flags-hiddenname' => 'nombre de usuario eskondido',
'importnopages' => 'No ay pajinas para importar.',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Tu pajina de usuario',
+'tooltip-pt-userpage' => 'Tu hoja de kullaneador',
'tooltip-pt-mytalk' => 'Tu hoja de diskusyón',
'tooltip-pt-preferences' => 'Mis preferencias',
'tooltip-pt-watchlist' => 'La lista de los trocamientos acontècidos en las hojas akavidadas.',
-'tooltip-pt-mycontris' => 'La lista de tus àjustamientos',
+'tooltip-pt-mycontris' => 'La lista de tus donos',
'tooltip-pt-login' => 'Te encorajamos de entrar ma no estás obligado',
-'tooltip-pt-logout' => 'Sal de tu cuento.',
+'tooltip-pt-logout' => 'Sal de tu cuento',
'tooltip-ca-talk' => 'Diskusyón encima del artíkolo',
'tooltip-ca-edit' => 'Puedes trocar esta hoja. Te rogamos, antes de enrejistrarla, echa una ojada en kullaneando el botón de previsteo',
-'tooltip-ca-addsection' => 'Empeça una nueva sección',
-'tooltip-ca-viewsource' => 'Esta hoja está guardada.
+'tooltip-ca-addsection' => 'Empeça a un muevo kapítolo',
+'tooltip-ca-viewsource' => 'Esta hoja está guadrada.
Puedes ver su manadero',
'tooltip-ca-history' => 'Enderechamientos passados de esta hoja',
'tooltip-ca-protect' => 'Guardar esta hoja',
'tooltip-ca-delete' => 'Efassar esta hoja',
'tooltip-ca-move' => 'Taxirea (renombra) esta hoja',
'tooltip-ca-watch' => 'Ajustar esta hoja a tu lista de akavidamientos',
-'tooltip-ca-unwatch' => 'Kita esta pajina de tu lista de escogidos',
-'tooltip-search' => 'Bushka en {{SITENAME}}',
-'tooltip-search-go' => 'Ir a la pajina con este nombre egzakto, si egziste.',
+'tooltip-ca-unwatch' => 'Quita esta hoja de tu lista de escojidos',
+'tooltip-search' => 'Buxca en {{SITENAME}}',
+'tooltip-search-go' => 'Ir a la hoja con este nombre egzakto, si egziste.',
'tooltip-search-fulltext' => 'Buxca este teksto en las hojas',
-'tooltip-p-logo' => 'Vate a la primera hoja',
-'tooltip-n-mainpage' => 'Vijitar a la primera hoja',
-'tooltip-n-mainpage-description' => 'Vijitar a la primera hoja',
-'tooltip-n-portal' => 'Encima del projeto, lo que puedes hazer y ánde topar todo',
+'tooltip-p-logo' => 'Vijita la primera hoja',
+'tooltip-n-mainpage' => 'Vijitar la primera hoja',
+'tooltip-n-mainpage-description' => 'Vijitar la primera hoja',
+'tooltip-n-portal' => 'Encima del projeto, lo que puedes hazer y ande topar todo',
'tooltip-n-currentevents' => 'Jhaberes y acontècimientos de oy día',
-'tooltip-n-recentchanges' => 'Lista de los trocamientos muevos en el viki',
+'tooltip-n-recentchanges' => 'Lista de los trocamientos dalcavo en el viki',
'tooltip-n-randompage' => 'Carga una hoja por azardo',
-'tooltip-n-help' => 'Para saver mas',
-'tooltip-t-whatlinkshere' => 'La lista de todas las hojas del viki que se atan con esta hoja',
+'tooltip-n-help' => 'Ambézate y topa ayudo',
+'tooltip-t-whatlinkshere' => 'Una lista de todas las hojas del viki que tienen atamientos a esta hoja',
'tooltip-t-recentchangeslinked' => 'Los trocamientos muevos en las hojas atadas con esta hoja',
'tooltip-feed-rss' => 'Sindicación RSS de esta hoja',
'tooltip-feed-atom' => "Fuente de Atom d'esta hoja",
'tooltip-t-contributions' => 'Ver la lista de ajustamientos de este usuario',
'tooltip-t-emailuser' => 'A este usuario, mándale una letra electrόnica (ímey)',
-'tooltip-t-upload' => 'Suvir un archivo',
+'tooltip-t-upload' => 'Suve dosyas',
'tooltip-t-specialpages' => 'Lista de todas las hojas especiales',
'tooltip-t-print' => 'Forma apropiada para imprimir esta hoja',
'tooltip-t-permalink' => 'Atamiento permanente a este enderechamiento de la hoja',
'tooltip-ca-nstab-template' => 'Ve el şablón',
'tooltip-ca-nstab-category' => 'Ve la hoja de categoría',
'tooltip-minoredit' => 'Márcalo como un trocamiento chiquitico',
-'tooltip-save' => 'Guardar los trocamientos',
+'tooltip-save' => 'Guadrar los trocamientos',
'tooltip-preview' => 'Que previzualize sus trocamientos, ¡si puede ser, que use esto antes de enregistrar!',
'tooltip-diff' => 'Mostra los trocamientos que él/ella hizo en el texhto.',
'tooltip-compareselectedversions' => 'Ve las diferencias entre las dos versiones escogidas de esta hoja.',
-'tooltip-watch' => 'Ajusta esta hoja a tu lista de escogidas',
-'tooltip-rollback' => '«Abolta» abolta todas los trocamientos del usador de alcavo, sólo en klikando una vez.',
+'tooltip-watch' => 'Ajusta esta hoja a tu lista de escojidas',
+'tooltip-rollback' => '«Abolta» abolta todos los trocamientos del kullaneador dalcavo, sólo en klikando una vez.',
'tooltip-undo' => '«Des-hazer» abolta este trocamiento y la avre en el modo de previsteo. Permete ajustar una razón en el somario.',
'tooltip-summary' => 'Entrar un somaryo kurto',
'bad_image_list' => 'El formato es ansina:
Sólo elementos de lista (liñas empeçando con *) se toman en konsidherasyón.
-El primer atamiento de cada liña deve de atarse con una dosya negra (la dosya que se quere blokar).
-Los atamientos venideros que están en la misma liña se konsidheran como eksepsiones (yaani hojas ande la dosya puede aparecer encaxada en la liña)',
+El primer atamiento de cada liña se deve de atar a una dosya negra (la dosya que se quere blokar).
+Los atamientos venideros que están en la misma liña se konsidheran como eksepsiones (hojas, ande la dosya puede aparecer en la liña, ande se puede kullânear la dosya).',
# Metadata
'metadata' => 'Metadatos',
'version-ext-colheader-description' => 'Beschreiwung',
'version-ext-colheader-credits' => 'Auteuren',
'version-license-title' => 'Lizenz fir $1',
+'version-credits-title' => 'E spezielle Merci fir $1',
'version-poweredby-credits' => "Dës Wiki funktionéiert mat '''[https://www.mediawiki.org/ MediaWiki]''', Copyright © 2001-$1 $2.",
'version-poweredby-others' => 'anerer',
'version-poweredby-translators' => 'translatewiki.net Iwwersetzer',
'categories' => 'Категорияр',
# Special:LinkSearch
-'linksearch' => 'КЪецепатан элячIунар жугъурун',
+'linksearch' => 'Къецепатан элячӀунар жугъурун',
'linksearch-ns' => 'Тlварарин генгвал:',
'linksearch-ok' => 'Ахтармишун',
'linksearch-line' => '$2-ай $1-аз элячlун',
'viewsource' => 'سرچشمه نه بوينيت',
'viewsource-title' => 'سرچشمه $1 بوينيت',
'actionthrottled' => 'عمل جلوگئری بیه',
+'protectedpagetext' => 'دای بلگه نبوئه ویرایشت یا کاریا هنی بکید',
'viewsourcetext' => 'شما تونیت سرچشمه ای بلگه نه بوینیت و دش ورداریت:',
'viewyourtext' => 'شما تونیت سرچشمه ویرایشتیا تونه ای د بلگه بوینیت و دشو ورداریت',
'mycustomcssprotected' => 'شما حق ناریت ای بلگه سی اس اس نه ویرایشت بکید',
'createacct-emailoptional' => 'نشونی ايميل',
'createacct-email-ph' => 'نوم نشون ايميلتونه وارد بكيت',
'createacct-another-email-ph' => 'يه گل ايميل وارد بكيت',
+'createaccountmail' => 'د یه گل پاسورد موقتیه بختکی استفاده بکید و ونه سی یه گل نشونی ایمیل ویجه بفرسنیت',
'createacct-realname' => 'نوم راستكی(مژبوری نيئ)',
'createaccountreason' => 'دليل',
'createacct-reason' => 'دليل',
'nocookiesnew' => 'حساو کاروری راس بی،اما شما وامئن نیامایئته.{{نوم مالگه}} د کوکیا سی اومائن د سیستم کاروریا استفاده می که.کوکیا شما د کار افتائه.لطفن وا کارشو بونیت، اوسه وا نوم کاروری تازه و پسورد هنی بیایت وا مئن.',
'nocookieslogin' => '{{نوم مالگه}} د کوکیا سی وامئن اومائن کاروریا استفاده می که. کوکیا شما د کار افتائه.
لطف بکید د کارشو بونیت و دوواره تلاش بکید.',
+'nocookiesfornew' => 'حساو کاروری راس نبیه، سی یه ایما نتونیم سرچشمه ونه مئکم بکیم.
+مطمئن بوئیت که کوکیا فعال بینه، ای بلگه نه د نو سوار بکید و د نو تلاش بکید.',
'noname' => 'شما یه گل نوم کاروری خو ناریت',
'loginsuccesstitle' => 'اومائن د سيستم موفق بی',
'loginsuccess' => 'شما ایسه وارد بیته {{SITENAME}} د دعنوان "$1".\'',
+'nosuchuser' => 'چنی کاروری و نوم "$1" نئیش.
+نوم کاروری وه حرفیا حساس هئ.
+روشت نیسنن تونه وارسی بکید،یا [[ویجه:وامین اومائن کارور/ثوت نام کردن|یه گل حساو تازه راس بکید]].',
'nosuchusershort' => 'چنو کاروری وا ای نوم $1 نی ئیش.
نیسنن تونه دوواره نئری بکیتو',
'nouserspecified' => 'شما باید یه نوم کارور اختصاص بئیتو',
'accountcreated' => 'حساو راس بی',
'createaccount-title' => 'حساو راس کرده سی {{SITENAME}}',
'usernamehasherror' => 'نوم کاربری نتونه شومل نیسه یا هش بوئه',
+'login-throttled' => 'شما ایسنی فره سی وامین اومائن تلاش کردیته.
+$1 لطفن سی تلاش هنی صبر بکید',
'login-abort-generic' => 'اومائن وامین تو شکست حرد-شکست حرده',
'loginlanguagelabel' => 'زون:$1',
وه هئیش.',
'defaultmessagetext' => 'متن پیغوم پیش فرض',
'content-failed-to-parse' => 'د یک تیچیسن چیا مئن $2 د مدل $1:$3',
+'invalid-content-data' => 'دنسمنی مینونه نامعتور',
+'content-not-allowed-here' => ' مینونه"$1" سی بلگه [[$2]] اجازه نه دئه بیه',
+'editpage-notsupportedcontentformat-title' => 'شلک مینونه دماگری نبیه',
# Content models
'content-model-wikitext' => 'ويكی متن',
'rev-deleted-user-contribs' => '[نوم کاروری یا نشونی آی پی جا وه جا بیه - چیا قام بیه د ور هوم یاریانه ویرایشت بکید]',
'rev-delundel' => 'آلشت وضئيت ديئن',
'rev-showdeleted' => 'نشو دائن',
+'revdelete-no-file' => 'فایل مشقص بیه وجود ناره.',
'revdelete-show-file-submit' => 'هری',
+'revdelete-selected' => "'''{{جمی:$2|وانیری انتخاو بیه|وانیریا انتخاو بیه}} د[[:$1]]:'''",
'revdelete-hide-text' => 'متن دوواره دیئن',
'revdelete-hide-image' => 'چی یا مئن فایل قام کو',
'revdelete-hide-name' => 'آرمون و انجوم گر نه قام بکید',
'revdelete-radio-same' => 'آلشت نکید',
'revdelete-radio-set' => 'قام بیه',
'revdelete-radio-unset' => 'دیینی',
+'revdelete-unsuppress' => 'محدودیتیانه د وانیریا امباربیه جا وه جا بکید',
'revdelete-log' => 'دلیل:',
+'revdelete-submit' => 'سی {{جمی:$1|وانیری|وانیریا}} انتخاو بیه وه کار بوریتو',
+'revdelete-success' => "'''دیئن وانیری وه خوئی وه هنگوم بی.'''",
+'revdelete-failure' => "'''دیئن وانیری وه خوئی وه هنگوم نبی:'''$1",
'revdel-restore' => 'آلشت وضئيت ديئن',
'pagehist' => 'ويرگار بلگه',
'deletedhist' => 'ویرگار پاک بیه',
'revdelete-otherreason' => 'دلیل هنی:',
'revdelete-reasonotherlist' => 'دلیل هنی',
'revdelete-edit-reasonlist' => 'دلیلیا پاک کردنه نه ویرایشت بکید',
+'revdelete-offender' => 'نیسنه وانیری:',
# History merging
'mergehistory' => 'ویرگاریا بلگه نه یکی بکید',
+'mergehistory-header' => 'ای بلگه وه شما اجازه می ئه که وانیریانه ویرگار سرچشمه بلگه نه د یه گل بلگه تازه سریک سازی بکید.
+مطمئن بویت که ای آلشت د لحاظ ویرگاری د مین بلگه موندگار هئ.',
+'mergehistory-box' => 'دوواره دیئن دوبلگه ای نه سر یک سازی کو:',
'mergehistory-from' => 'بلگه سرچشمه:',
'mergehistory-into' => 'بلگه مقصد:',
+'mergehistory-list' => 'ویرگار ویرایشت سر یک سازی بیئنی',
+'mergehistory-go' => 'ویرایشتیایی که سریک سازی بوئن نشو بیئه',
+'mergehistory-submit' => 'سر یک سازی دوواره دیئنیا',
+'mergehistory-empty' => 'هیپ دوواره دیئنی نبوئه یکی سازی بوئه.',
+'mergehistory-success' => '$3 {{جمی:$3|وانیری|وانیریا}} د [[:$1]] وه خوئی د [[:$2]] سریک سازی بی.',
+'mergehistory-fail' => 'سریک سازی ویرگار انجوم نبوئه، لطفن پینیاریا زمون و بلگه نه د نو وارسی بکید.',
'mergehistory-no-source' => 'سرچشمه بلگه $1 وجود ناره.',
+'mergehistory-no-destination' => 'بلگه مقصد $1 وجود ناره.',
+'mergehistory-invalid-source' => 'نوم ون بلگه سرچشمه با معتور بوئه.',
+'mergehistory-invalid-destination' => 'نوم ون بلگه سرچشمه با معتور بوئه.',
'mergehistory-autocomment' => ' [[:$1]]وا[[:$2]] یکی بیه',
'mergehistory-comment' => ' [[:$1]]وا[[:$2]] یکی بیه:$3',
+'mergehistory-same-destination' => 'سرچشمه و بلگه یا مقصد نبوئه یکی بوئن',
'mergehistory-reason' => 'دليل:',
# Merge log
+'pagemerge-logentry' => ' [[$1]] وا [[$2]] سریک سازی بی (وانیریا که د $3 فره تر هئن)',
'revertmerge' => 'بی لوئه',
# Diffs
'history-title' => 'دوواره دیئن ویرگار$1',
+'difference-title' => 'فرخ مینجا وانیریا "$1"',
+'difference-title-multipage' => 'فرخ مینجا بلگه یا "$1" و "$2"',
'difference-multipage' => '(فرخ مینجا بلگه یا)',
'lineno' => 'خط $1:',
'compareselectedversions' => 'دوبار دیئنیایی که انتخاو بینه مقایسه بکیتو',
+'showhideselectedversions' => 'شلک دیئن وانیریا انتخاو بیه نه آلشت بکید',
'editundo' => 'رد كردن',
'diff-empty' => '(بی فرق)',
'diff-multi' => '({{جمی:$1|یه گل دوواره دیئن مینجایی|$1مینجا دوواره دیئنیا}} وا {{جمی:$2|یه کارور|$2 کاروریا}} نشو دئه نی)',
+'diff-multi-manyusers' => '({{جمی:$1|یه گل وانیری مینجاگرته|$1وانیریا مینجا گرته}} بیشتر د $2 {{جمی:$2|کارور|کاروریا}} نشو دئه نبیه)',
# Search results
'searchresults' => 'نتيجه يا پی جوری',
'saveusergroups' => 'ذخیره کرد گرویا کاروری',
'userrights-groupsmember' => 'اندوم:',
'userrights-reason' => 'دليل:',
+'userrights-nodatabase' => 'پاگا دونسمنی $1 یا نیئش یا د ولاتنشین نئ.',
'userrights-changeable-col' => 'گرویایی که شما تونیت ویرایشت بکید',
'userrights-unchangeable-col' => 'گرویایی که شما نتونیت ویرایشت بکید',
'right-move-rootuserpages' => 'بلگه یا ریشه ای کارور نه جا وه جا کو',
'right-movefile' => 'فایلیا نه جا وه جا کو',
'right-upload' => 'سوار کردن فايلا',
+'right-upload_by_url' => 'سوار کرد فایلیا د یو آر ال',
+'right-writeapi' => 'د نیسنن ای پی آی استفاده بکید',
'right-delete' => 'بلگیا نه پاک کو',
'right-browsearchive' => 'بلگه یا پاک بیه نه پی جوری کو',
'right-undelete' => 'ای بلگه نه حذف نكيد',
+'right-unblockself' => 'خوشه قلف نکید',
'right-editinterface' => 'راوط کارور نه ویرایشت کو',
'right-editusercssjs' => 'فایلیا جاوا اسکریپت و سی اس اس کاروریا هنی نه ویرایشت کو',
'right-editusercss' => 'فایلیا سی اس اس کاروریا هنی نه ویرایشت کو',
'filename' => 'نوم فایل',
'filedesc' => 'چكسته',
'fileuploadsummary' => 'چکسه',
+'filereuploadsummary' => 'آلشتیا فایل:',
'filesource' => 'سرچشمه:',
'uploadedfiles' => 'فایلیا سواربیه',
+'empty-file' => 'فایلی که دئی ته حالی بیه.',
+'file-too-large' => 'فایلی که دئی ته فره گپ بی.',
+'filename-tooshort' => 'نوم فایل فره کؤچکه.',
+'illegal-filename' => 'نوم فایل اجاره ندئه بیه.',
'unknown-error' => 'یه گل خطا ناشناس ری ون کرده.',
'savefile' => 'فایل نه ذخیره کو',
'uploadedimage' => 'سوارکرد"[[$1]]"',
+'uploaddisabled' => 'سوار کردن د کار نئ.',
+'copyuploaddisabled' => 'سوار کردن وا یو آر ال د کار نئ.',
+'uploadfromurl-queued' => 'سوارکرد تو ها د گئ.',
+'uploaddisabledtext' => 'سوار کرد فایلیا د کار نئ.',
'upload-source' => 'سرچشمه فایل',
'sourcefilename' => 'سرچشمه نوم فایل:',
'sourceurl' => 'سرچشمه يو آر ال:',
+'destfilename' => 'نوم فایل مقصد:',
'watchthisupload' => 'ای فایل بوینیت',
'upload-success-subj' => 'سوار کرد خوش سرانجوم',
'upload-failure-subj' => 'مشگل د سوارکردن',
+'upload-proto-error' => 'پروتکل نادروس',
'upload-file-error' => 'خطا داخلی',
+'upload-misc-error' => 'خطا سوار کرد ناشناخته',
'upload-unknown-size' => 'انازه نادیار',
+# File backend
+'backend-fail-notexists' => 'فایل $1 وجود ناره.',
+
# img_auth script messages
'img-auth-accessdenied' => 'دسرسی منع بی',
'img-auth-nofile' => 'فایل $1 وجود ناره.',
'license' => 'ليانس دار بيئن',
'license-header' => 'د شكل ليسانس دار بيئن',
+'nolicense' => 'هیچی انتخاو نبیه',
+'license-nopreview' => '(پیش سیل د دسرس نئ)',
+'upload_source_file' => '(یه گل فایل د انجومیار تو)',
# Special:ListFiles
+'listfiles_search_for' => 'پی جوری سی نوم رسانه:',
'imgfile' => 'فايل',
+'listfiles' => 'نوم گه فایل',
'listfiles_thumb' => 'بن کلکی',
'listfiles_date' => 'تاريخ',
'listfiles_name' => 'نوم',
'filehist-datetime' => 'ويرگار/وخت',
'filehist-thumb' => 'عسگ كؤچك بيه',
'filehist-thumbtext' => 'كؤچك كردن سی نسقه چی $1',
+'filehist-nothumb' => 'هیچ بن کلیکی نئ',
'filehist-user' => 'كارور',
'filehist-dimensions' => 'بعديا',
'filehist-filesize' => 'انازه فایل',
'imagelinks' => 'استفاده د فايل',
'linkstoimage' => 'دمال بيه {{PLURAL:$1|ديس ونيا بلگه|$1 ديس ون بلگيا}} دای فایل:',
'nolinkstoimage' => 'ایچه هیژ بلگه ای سی هوم پیوند بیئن وا ای فایل نی',
+'morelinkstoimage' => ' [[ویجه:چه هوم پیوندی ها ایچه/$1|هوم پیوندیا هنی]]سی ای فایل بونیت.',
'sharedupload-desc-here' => 'فایلی که د $1 شایت د مئن پروجیا هنی استفاده بیه.
توضی دباره[$2 file description page] د هار نشو دئئه بیه',
+'filepage-nofile' => 'چنو فایلی وا ای نوم نئ.',
'shared-repo-from' => 'د $1',
# File reversion
'filerevert-submit' => 'ورگنین',
# File deletion
+'filedelete' => '$1 پاک کو',
+'filedelete-legend' => 'فایل نه پاک کو',
'filedelete-comment' => 'دليل:',
'filedelete-submit' => 'پاك كردن',
+'filedelete-success' => '$1 پاک بیه.',
'filedelete-nofile' => "'''$1''' وجود ناره.",
+'filedelete-otherreason' => 'دلیل هنی:',
'filedelete-reason-otherlist' => 'دليل هنی',
'filedelete-edit-reasonlist' => 'دلیلیا پاک کردنه نه ویرایشت بکید',
+'filedelete-maintenance-title' => 'نبوئه ای فایل پاک بوئه',
# MIME search
+'mimesearch' => 'پی جوری ام آی ام ای',
'download' => 'گرتن',
+# Unwatched pages
+'unwatchedpages' => 'بلگه یا ندئیه بیه',
+
# Unused templates
+'unusedtemplates' => 'قالویا وه کار نبرده بیه.',
'unusedtemplateswlh' => 'هوم پیوندیا هنی',
# Random page
'randompage' => 'بلگه بختكی',
# Random page in category
+'randomincategory' => 'بلگه بختی د ای دسه',
+'randomincategory-invalidcategory' => '"$1" نوم دسه معتوری نئ.',
+'randomincategory-nopages' => 'هیچ بلگه ای د ای [[:دسه نئ:$1|$1]] دسه.',
'randomincategory-selectcategory-submit' => 'رو',
# Statistics
'statistics-header-pages' => 'بلگه آماریا',
'statistics-header-edits' => 'آماریا نه ویرایشت بکید',
'statistics-header-views' => 'آماریا نه بوینیت',
+'statistics-header-users' => 'آماریا کارور',
+'statistics-header-hooks' => 'آماریا هنی',
+'statistics-articles' => 'بلگه یا مینونه',
'statistics-pages' => 'بلگیا',
+'statistics-views-total' => 'همه نه بوینیت',
+'statistics-views-peredit' => 'هر ویرایشت نه بوینیت',
'statistics-users-active' => 'کاروریا کارکو',
+'statistics-mostpopular' => 'بلگه یایی که بیشتر دیئه بینه',
'pageswithprop-submit' => 'رو',
'brokenredirects-edit' => 'ویرایشت',
'brokenredirects-delete' => 'پاك كردن',
+'withoutinterwiki' => 'بلگه یایی که هوم پیوند زون نارن',
'withoutinterwiki-legend' => 'پیشون',
'withoutinterwiki-submit' => 'نشون دائن',
# Miscellaneous special pages
'nbytes' => '$1{{جمی:$1|كلی|بايت|بايت}}',
+'ncategories' => '{{جمی:$1|دسه|دسه يا}}',
+'ninterwikis' => '$1 {{جمی:$1|مئن ویکی|مئن ویکیا}}',
'nlinks' => '$1 {{جمی:$1|هوم پیوند|هوم پیوندیا}}',
'nmembers' => '$1 {{PLURAL:$1|اندوم|اندوميا}}',
+'nmemberschanged' => '$1 → $2 {{جمی:$2|اندوم|اندومیا}}',
+'nviews' => '$1 {{جمی:$1|دیئن|دیئنیا}}',
+'nimagelinks' => '$1 {{جمی:$1|بلگه|بلگيا}} استفاده بیه',
+'ntransclusions' => '$1 {{جمی:$1|بلگه|بلگيا}} استفاده بیه',
+'lonelypages' => 'بلگه یا تک منه',
+'uncategorizedpages' => 'بلگه یا دسه بنی نبیه',
+'uncategorizedcategories' => 'دسه یا دسه بنی نبیه',
+'uncategorizedimages' => 'فایلیا دسه بنی نبیه',
+'uncategorizedtemplates' => 'قالویا دسه بنی نبیه',
+'unusedcategories' => 'دسه یا استفاده نبیه',
+'unusedimages' => 'فایلیا استفاده نبیه',
+'popularpages' => 'بلگه یا حاستنی',
+'wantedcategories' => 'بلگه یا حاستنی',
+'wantedpages' => 'بلگه یا حاستنی',
+'wantedfiles' => 'فایلیا حاستنی',
+'wantedtemplates' => 'قالویا حاستنی',
+'mostlinked' => 'بلگه یا که بیشتر هوم پیوند بینه',
+'mostlinkedcategories' => 'دسه یایی که بیشتر هوم پیوند بیه',
+'mostlinkedtemplates' => 'قالویایی که بیشتر هوم پیوند بینه',
+'mostcategories' => 'بلگه یا که بیشتر دسه بنی بینه',
+'mostimages' => 'فایلیایی که بیشتر هوم پیوند بینه',
'prefixindex' => 'همه بلگيا وا پيشون',
+'shortpages' => 'بلگه یا کؤچک',
+'longpages' => 'بلگه یا گپ',
+'protectedpages' => 'بلگه یا حفاظت بيه',
'usercreated' => '{{جنسیت:$3|راس بیه}}د $1 at $2',
'newpages' => 'بلگيا نو',
'move' => 'جاوه جا بوئيت',
'content-not-allowed-here' => '"$1" saturs nav atļauts lapā [[$2]]',
'editwarning-warning' => 'Atstājot šo lapu tu zaudēsi izdarītās izmaiņas.
Ja esi pieteicies, jūs vari atspējot šo brīdinājumu savās izvēlēs sadaļā "rediģēšana"',
+'editpage-notsupportedcontentformat-title' => 'Satura formāts nav atbalstīts',
# Content models
'content-model-wikitext' => 'vikiteksts',
'delete-edit-reasonlist' => 'Izmainīt dzēšanas iemeslus',
'delete-toobig' => 'Šai lapai ir liela izmaiņu hronoloģija, vairāk nekā $1 {{PLURAL:$1|versija|versijas}}.
Šādu lapu dzēšana ir atslēgta, lai novērstu nejaušus traucējumus {{grammar:lokatīvs|{{SITENAME}}}}.',
+'deleting-backlinks-warning' => "'''Brīdinājums:''' uz lapu, ko grasies izdzēst, ved saites no citām lapām.",
# Rollback
'rollback' => 'Novērst labojumus',
'createacct-another-submit' => 'Gawe akun liyane',
'createacct-benefit-heading' => '{{SITENAME}} kuwe digawe nang wong kaya Rika.',
'createacct-benefit-body1' => '{{PLURAL:$1|suntingan|suntingan}}',
-'createacct-benefit-body2' => '{{PLURAL:$1|kaca|kaca}}',
-'createacct-benefit-body3' => '{{PLURAL:$1|kontributor|kontributor}} anyaran',
+'createacct-benefit-body2' => '{{PLURAL:$1|kaca}}',
+'createacct-benefit-body3' => '{{PLURAL:$1|kontributor}} anyaran',
'badretype' => 'Tembung sandhi sing Rika lebokna ora gathuk.',
'userexists' => 'Jeneng panganggo sing dilebokna uwis ana sing nganggo.
Monggo pilih jeneng liyane.',
'passwordtooshort' => 'Tembung sandhi kuwe paling ora cacahe {{PLURAL:$1|1 karakter|$1 karakter}}.',
'password-name-match' => 'Tembung sandhi Rika kudu sejen karo jeneng panganggone Rika.',
'password-login-forbidden' => 'Jeneng panganggo lan tembung sandhi kiye ora olih dienggo.',
-'mailmypassword' => 'Imelna tembung sandhi anyar',
+'mailmypassword' => 'Tembung sandhi di-reset',
'passwordremindertitle' => 'Tembung sandi anyar temporer kanggo {{SITENAME}}',
'passwordremindertext' => 'Ana wong (ndeyane Rika dhewek, sekang alamat IP $1) sing njaluk
tembung sandhi anyar kanggo {{SITENAME}} ($4). Tembung sandhi sawetara nggo panganggo
Monggoo mlebu log maning seuwise Rika nampa imel kuwe.',
'blocked-mailpassword' => "Alamat IP-ne Rika diblokir sekang panyuntingan, mulane kuwe Rika ora olih nganggo fungsi pèngetan tembung sandhi kanggo ''mencegah penyalahgunaan''.",
'eauthentsent' => 'Pesen imel konfirmasi wis dikirim maring alamat imele Rika.
-Rika kudu ngetutna instruksi nang imel kuwe mau nggo mastekna nek alamat kuwe pancen imele Rika dhewek. {{SITENAME}} ora bakal ngaktifna fitur imel angger langkah kiye durung dilakokna.',
+Sedurunge imel liyane teyeng dikirim maring akun kuwe, Rika kudu ngetutna instruksi nang imel kuwe, nggo mastekna nek alamat kuwe pancen imele Rika dhewek.',
'throttled-mailpassword' => 'Sawijining imel kanggo mbalekna tembung sandhi wis dikirim, jroning {{PLURAL:$1|jam|$1 jam}} pungkasan kiye.
Kanggo nyegah salah-guna, mung siji imel tembung sandi thok sing teyeng dikirim saben {{PLURAL:$1|jam|$1 jam}}.',
'mailerror' => 'Kasalahan dong ngirim imel: $1',
'accmailtitle' => 'Tembung sandhi wis dikirim.',
'accmailtext' => "Tembung sandhi acak kanggo [[User talk:$1|$1]] wis digawe lan dikirim maring $2.
-Tembung sandhi kanggo akun anyarkiye teyeng diganti nang kaca ''[[Special:ChangePassword|ganti tembung sandhi]]'' seuwise mlebu log.",
+Tembung sandhi kanggo akun anyar kiye teyeng diganti nang kaca ''[[Special:ChangePassword|ganti tembung sandhi]]'' seuwise mlebu log.",
'newarticle' => '(Anyar)',
'newarticletext' => "Rika ngetutna pranala maring kaca sing durung ana.
Kanggo nggawe kaca kuwe,molai baen ngetik nang kotak nang ngisor kiye (deleng [[{{MediaWiki:Helppage}}|kaca pitulung]] kanggo informasi lewih detil).
'revdelete-no-file' => 'Berkas sing dituju ora ana.',
'revdelete-show-file-confirm' => 'Apa rika wis mantep arep ndeleng revisi sing wis dibusek nggone berkas "<nowiki>$1</nowiki>" sekang tanggal $2 jam $3?',
'revdelete-show-file-submit' => 'Ya',
-'revdelete-selected' => "'''{{PLURAL:$2|Revisi kepilih|Revisi kepilih}} sekang '''$1''''''",
+'revdelete-selected' => "'''{{PLURAL:$2|Revisi kepilih}} sekang [[:$1]]:'''",
'logdelete-selected' => "'''{{PLURAL:$1|Log kepilih|Log kepilih}} kanggo:'''",
'revdelete-legend' => 'Atur watesan',
-'revdelete-hide-text' => 'Umpetna tèks revisi',
+'revdelete-hide-text' => 'Tèks revisi',
'revdelete-hide-image' => 'Umpetna isi berkas',
'revdelete-hide-name' => 'Umpetna tindakan lan target',
-'revdelete-hide-comment' => 'Umpetna ringkesan suntingan',
-'revdelete-hide-user' => 'Umpetna jeneng panganggo/alamat IP penyunting',
+'revdelete-hide-comment' => 'ringkesan suntingan',
+'revdelete-hide-user' => 'Jeneng panganggo/alamat IP penyunting',
'revdelete-hide-restricted' => 'Uga umpetna data sekang pangurus lan panganggo liyané',
'revdelete-radio-same' => '(aja diowahi)',
-'revdelete-radio-set' => 'Ya',
-'revdelete-radio-unset' => 'Ora',
+'revdelete-radio-set' => 'Umpetna',
+'revdelete-radio-unset' => 'Keton',
'revdelete-suppress' => 'Uga umpetna data sekang pangurus lan panganggo liyané',
'revdelete-unsuppress' => 'Busak watesan nang revisi sing dibalèkna',
'revdelete-log' => 'Alesan:',
'prefs-email' => 'Opsi imel',
'prefs-rendering' => 'Tampilan',
'saveprefs' => 'Simpen',
-'restoreprefs' => 'Balekna kabeh setelan gawane',
+'restoreprefs' => 'Balekna kabeh setelan gawane (nang kabeh bagiyan)',
'prefs-editing' => 'Panyuntingan',
'rows' => 'Baris:',
'searchresultshead' => 'Goleti',
-'resultsperpage' => 'Hasil saben kaca:',
'stub-threshold' => 'Ambang wates kanggo format <a href="#" class="stub">pranala rintisan</a> (bita):',
'stub-threshold-disabled' => 'Dinonaktifna',
'recentchangesdays' => 'Jumlah dina sing ditidokna nang Owahan anyar:',
'timezoneregion-indian' => 'Samodra Hindia',
'timezoneregion-pacific' => 'Samodra Pasifik',
'allowemail' => 'Aktifna fitur nggo nampa imel sekang pangganggo liyane',
-'prefs-searchoptions' => 'Pilihan panggoletan',
+'prefs-searchoptions' => 'Goleti',
'prefs-namespaces' => 'Bilik jeneng',
'defaultns' => 'Utawa goleti nang bilik jeneng kiye:',
'default' => 'baku',
Pambalikan kiye ora teyeng dibatalna.',
'prefs-emailconfirm-label' => 'Konfirmasi imel:',
'youremail' => 'Imel:',
-'username' => 'Jeneng panganggo:',
-'uid' => 'ID panganggo:',
-'prefs-memberingroups' => 'Anggota {{PLURAL:$1|klompok|klompok-klompok}}:',
+'username' => '{{GENDER:$1|Jeneng panganggo}}:',
+'uid' => '{{GENDER:$1|ID panganggo}}:',
+'prefs-memberingroups' => '{{GENDER:$2|Anggota}}
+{{PLURAL:$1|klompok|klompok-klompok}}:',
'prefs-registration' => 'Wektu régistrasi:',
'yourrealname' => 'Jeneng asli:',
'yourlanguage' => 'Basa:',
# User preference toggles
'tog-underline' => 'Hanipika ny rohy:',
'tog-justify' => 'Hanitsy ny andiany',
-'tog-hideminor' => "Hanitsika ny fanovana madinika ao amin'ny fanovana farany",
-'tog-hidepatrolled' => "Hanitrika ny fanovana voaara-maso ao amin'ny fanovana farany",
+'tog-hideminor' => "Hanitsika ny fiovana madinika ao amin'ny fanovana farany",
+'tog-hidepatrolled' => "Hanitrika ny fiovana voaara-maso ao amin'ny fiovana farany",
'tog-newpageshidepatrolled' => "Hanitsika ny pejy voaara-maso ao amin'ny pejy vaovao",
'tog-extendwatchlist' => 'Hanitatra ny lisitra fanaraham-pejy mba haneho ny fanovana rehetra fa tsy ny vaovao indrindra fotsiny',
-'tog-usenewrc' => "Hamondrona ny fanovana araky ny pejy ao amin'ny fanovana farany ary ao amin'ny lisitry ny pejy arahana",
+'tog-usenewrc' => "Hampivondrona ny fiovana araky ny pejy ao amin'ny fiovana farany ary ao amin'ny lisitry ny pejy arahana",
'tog-numberheadings' => 'Asio laharany ny lohateny',
'tog-showtoolbar' => 'Haneho ny toolbar fanovana',
'tog-editondblclick' => "Hanova pejy amin'ny alalan'ny tsindrim-boalavo roa misesy",
'youhavenewmessagesfromusers' => "Manana $1 avy amin'ny mpikambana {{PLURAL:$3|hafa|$3}} ($2).",
'youhavenewmessagesmanyusers' => "Manana $1 avy amin'ny mpikambana maro ($2).",
'newmessageslinkplural' => '{{PLURAL:$1|hafatra iray|hafatra maro}}',
-'newmessagesdifflinkplural' => 'fanovana farany{{PLURAL:$1}}',
+'newmessagesdifflinkplural' => 'fiovana {{PLURAL:$1|farany|999=farany}}',
'youhavenewmessagesmulti' => "Manana hafatra vaovao ianao eo amin'ny $1.",
'editsection' => 'hanova',
'editold' => 'hanova',
'last' => 'farany',
'page_first' => 'voalohany',
'page_last' => 'farany',
-'histlegend' => "
-Fifidianana ny votoatiny hampitahaina: mariho eo anilan'ny versions hampitahaina dia tsindrio ny bokotra Entrée na ny bokotra etsy ambany.<br />
-Tadidio: (ank) = fampitahana amin'ny votoatin'ny pejy ankehitriny,
-(farany) = fampitahana amin'ny version talohan'ity, M = fanovana madinika",
+'histlegend' => "Fisafidianana ny votoatiny hohampitahaina: Mario ny bokotra radiôn'ny fiovana hampitahazay ary tsintrio ny bokotra fanekena amin'ny faram-pejy<br />
+Maribolana: '''(ank)''' = fampitahana amin'ny votoatin'ny pejy ankehitriny,
+'''(farany)''' = fampitahana amin'ny version talohan'ity, M = fanovana madinika",
'history-fieldset-title' => 'Karohy ny tantara',
'history-show-deleted' => 'Voafafa ihany',
'histfirst' => 'antitra indrindra',
'recentchangesdays' => "Isa ny andro ho ampiseho eo amin'ny fanovàna farany",
'recentchangesdays-max' => '($1 andro{{PLURAL:$1||}} fara-faha betsany)',
'recentchangescount' => "Isan'ny fanovana haseho (tsipalotra) :",
-'prefs-help-recentchangescount' => 'Misy ny fanovana farany, ny tantaram-pejy ary ny laogy',
+'prefs-help-recentchangescount' => 'Misy ny fiovana farany, ny tantaram-pejy ary ny laogy',
'savedprefs' => 'Voatahiry ny mombamomba anao.',
'timezonelegend' => "Faritr'ora :",
'localtime' => 'Ora an-toerana',
'right-importupload' => 'mampiditra na manafatra pejy avy amina rakitra iray',
'right-patrol' => "Manamarina ny fanovan'ny hafa",
'right-autopatrol' => 'Manamarika ny fanovany efa nomarihana',
-'right-patrolmarks' => "Mijery ny mariky ny fanamarihana any amin'ny fanovana farany",
+'right-patrolmarks' => "Mijery ny mariky ny fanamarihana any amin'ny fiovana farany",
'right-unwatchedpages' => 'Mijery ny lisitry ny pejy tsy arahina',
'right-mergehistory' => 'Manatsonika ny tantaram-pejy',
'right-userrights' => "Manova ny fahefan'ny mpikambana",
'nchanges' => '{{PLURAL:$1|fanovana|fanovana}} $1',
'enhancedrc-since-last-visit' => '$1 ({{PLURAL:$1|hatry ny famangiana farany}})',
'enhancedrc-history' => 'tantara',
-'recentchanges' => 'Fanovana farany',
+'recentchanges' => 'Fiovana farany',
'recentchanges-legend' => 'Safidy ny fanovàna farany',
'recentchanges-summary' => "Jereo eto amin'ity pejy ity izay vao niova vao haingana teto amin'ity wiki ity.",
'recentchanges-noresult' => "Tsy misy fanovana miady amin'ny fepe-potoana napetraka.",
'watchlist-details' => "Pejy $1{{PLURAL:}} ao amin'ny lisitry ny pejy arahanao, tsy isaina ny pejin-dresaka.",
'wlheader-enotif' => "Alefa ny fampilazana amin'ny mailaka.",
'wlheader-showupdated' => "Aseho '''sorabaventy''' ny pejy niova taorian'ny famangianao azy farany.",
-'watchmethod-recent' => 'fanamarinana ny fanovana farany hahitana pejy arahana',
-'watchmethod-list' => 'fanamarinana ny pejy arahana ahitana fanovana farany',
+'watchmethod-recent' => 'fanamarinana ny fiovana farany hahitana pejy arahana',
+'watchmethod-list' => 'fanamarinana ny pejy arahana hahitana fiovana vao haingana',
'watchlistcontains' => "Ao amin'ny pejy arahanao dia ahitana pejy $1{{PLURAL:}}.",
'iteminvalidname' => "Olana amin'ny zavatra « $1 » : tsy ara-dalàna ny anarana...",
-'wlnote' => "Eo ambany dia ahitana ny {{PLURAL:$1|fanovana farany indrindra|ny fanovana ''$1'' farany}} natao tanatin'ny adin'ny {{PLURAL:$2|iray|'''$2'''}}, nanomboka ny $3, $4.",
+'wlnote' => "Eo ambany dia ahitana ny {{PLURAL:$1|fiovana farany indrindra|ny fiovana ''$1'' farany}} natao tanatin'ny adin'ny {{PLURAL:$2|iray|'''$2'''}}, nanomboka ny $3, $4.",
'wlshowlast' => 'Haneho ny $1 ora farany, ny $2 andro farany na $3',
'watchlist-options' => 'Safidy ny lisitry ny pejy arahana',
'rollbacklink' => 'foano',
'rollbacklinkcount' => 'hamoana fanovana{{PLURAL:$1}} $1',
'rollbackfailed' => "Tsy voaverina amin'ny teo aloha",
-'cantrollback' => "Tsy afaka iverenana ny fanovana; ny mpanova farany ihany no tompon'ny pejy.",
-'alreadyrolled' => "Tsy afaka foanana ny fanovana ny pejy « [[:$1]] » nataon'i [[User:$2|$2]] ([[User talk:$2|Dinika]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])
+'cantrollback' => "Tsy afaka iverenana ny fiovana; ny mpanova farany ihany no tompon'ny pejy.",
+'alreadyrolled' => "Tsy afaka foanana ny fiovan'ny pejy « [[:$1]] » nataon'i [[User:$2|$2]] ([[User talk:$2|Dinika]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]])
-Efa nataon'i [[User:$3|$3]] ([[User talk:$3|dinika]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ny fanovana farany.",
+Efa nataon'i [[User:$3|$3]] ([[User talk:$3|dinika]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) ny fiovana farany.",
'editcomment' => "Toy izao no fanamarihana momba io fanovana io: \"''\$1''\".",
'revertpage' => "Voafafa ny fanovana ny [[Special:Contributions/$2|$2]] ([[User talk:$2|Dinika]]); voaverina amin'ny votoatiny teo aloha nataon'i [[User:$1|$1]]",
'revertpage-nouser' => "Manala ny fanovana (nataom-pikambana voaafina), miverina any amin'ny filaza faran'i [[User:$1|$1]]",
-'rollback-success' => "Fanalàna ny fanovana nataon'i $1 ;
-miverina any amin'ny santiôna farany nataon'i $2.",
+'rollback-success' => "Fanesorana ny fiovana nataon'i $1 ;
+fiverenana amin'ny fiovana farany nataon'i $2.",
# Edit tokens
'sessionfailure-title' => 'Tsi-fetezaka mikasika ny kaonty idirana',
Aseho eo ambany ny iditra farany ao amin'ny laogim-panakanana mba hampahalala :",
'sp-contributions-search' => "Hikaroka fandraisan'anjara",
'sp-contributions-username' => 'Adiresy IP na anaram-pikambana :',
-'sp-contributions-toponly' => 'Fanovana izay farany eo ihany no aseho',
+'sp-contributions-toponly' => 'Fiovana izay farany ihany no aseho',
'sp-contributions-submit' => 'Hikaroka',
# What links here
# Export
'export' => 'Hamoaka pejy',
-'exporttext' => "Afaka manondrana ny lahatsoratra miaraka amin'ny tantaram-panovana ny pejy na vondrom-pejy maromaro ianao.
-Aoriana dia mety hafaran'ny wiki iray mandeha amin'ny rindrankajy MediaWiki izany, na dia mbola tsy afaka
-atao aza izany amin'izao fotoana izao.
+'exporttext' => "Afaka mamoaka lahatsoratra ary tantaram-piovana amin'ny pejy tokana, na vondrom-pejy mifonona anaty XML ianao.
+Azo ampidirina amy wiki hafa izany amin'ny alalan'ny [[Special:Import|pejy fanafarana]].
-Ny fomba fanondranana pejy dia, manomeza lohateny izay na maromaro eto amin'ny boaty ety ambany eto, lohateny iray isaky ny andalana,
-ary safidio na ny votoatiny ankehitriny ihany no ilainao na miaraka amin'ny endriky ny pejy rehetra taloha, sy hoe ny votoatiny ankehitriny
-miampy fampahalalana momba ny fanovana farany fotsiny ve sa miaraka amin'ny tantaran'ny fanovana rehetra.
+Raha hamoaka pejy iray dia atso tsohy eo amin'ny boaty eo ambany ny lohatenin'ny pejinao, andalana iray isaky ny pejy, ary ataovy ny safidy: maka ny tantaram-piovany, na ny fiovana farany ihany.
-Etsy amin'ny toerana farany dia afaka mampiasa rohy ihany koa ianao, ohatra [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] ho an'ny [[{{MediaWiki:Mainpage}}]].",
+Ho an'ny tranga voalaza farany, dia azonao ampaisaina ny rohy, ohatra [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] ho an'ny pejy \"[[{{MediaWiki:Mainpage}}]]\".",
'exportall' => 'Hamoaka ny pejy rehetra',
'exportcuronly' => "Ny votoatiny ankehitriny ihany no haondrana fa tsy miaraka amin'ny tantarany iray manontolo",
'exportnohistory' => "
'pageinfo-firstuser' => 'Mpamorona ilay pejy',
'pageinfo-firsttime' => 'Daty namoronana ilay pejy',
'pageinfo-lastuser' => 'Mpanova farany',
-'pageinfo-lasttime' => "Datin'ny fanovana farany",
+'pageinfo-lasttime' => 'Daty niovàna farany',
'pageinfo-edits' => "Isa manontolon'ny fanovana",
'pageinfo-authors' => "Isa manontolon'ny mpandray anjara",
'pageinfo-recent-edits' => "Fanovana vao haingana (natao tanatin'ny $1)",
'markaspatrolledtext' => 'Marihana ho hita sy voatsara',
'markedaspatrolled' => 'Voamarina',
'markedaspatrolledtext' => "Ny santiôna voafidy an'ny [[:$1]] dia voamarika ho voamarina.",
-'rcpatroldisabled' => "Tsy nalefa ny fanamarinana ao amin'ny fanovana farany.",
+'rcpatroldisabled' => "Tsy nalefa ny fanamarinana ao amin'ny fiovana farany.",
'rcpatroldisabledtext' => 'Tsy atao ankehitriny ny fanamarinana ny pejy novaina farany.',
'markedaspatrollederror' => 'Tsy afaka marihana ho voamarina',
'markedaspatrollederrortext' => 'Tsy maintsy misafidy santiôna iray ianao mba hahafahanao manamarika azy ho voamarina.',
'specialpages-group-maintenance' => 'laogy hikojakojana',
'specialpages-group-other' => 'Pejy manokana hafa',
'specialpages-group-login' => 'Hiditra / hisoratra anarana',
-'specialpages-group-changes' => 'Fanovana farany sy laogy',
+'specialpages-group-changes' => 'Fiovana farany sy laogy',
'specialpages-group-media' => 'Laogy sy fampidirana rakitra media.',
'specialpages-group-users' => 'Mpikambana sy satany',
'specialpages-group-highuse' => 'Pejy ampiasaina mafy',
'expand_templates_generate_rawhtml' => 'Прикажувај сиров HTML',
'expand_templates_preview' => 'Преглед',
+# Unknown messages
+'uploadinvalidxml' => 'Не можев да го парсирам XML-от што се наоѓа во подигнатата податотека.',
);
'showdiff' => 'बदल दाखवा',
'anoneditwarning' => "'''इशारा:''' तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंकपत्ता (आयपी) नोंदला जाईल.",
'anonpreviewwarning' => "\"'''सावधान:''' तुम्ही विकिपीडियाचे सदस्य म्हणून सनोंद-प्रवेश (लॉग-इन) केलेला नाही. या पानाच्या संपादन इतिहासात तुमचा अंकपत्ता (आय.पी. ॲड्रेस) नोंदला जाईल.\"",
-'missingsummary' => "'''à¤\86ठवण:''' तà¥\81मà¥\8dहà¥\80 सà¤\82पादन साराà¤\82श पà¥\81रवलà¥\87ला नाहà¥\80.à¤\86पण 'à¤\9cतन à¤\95रा' वर पà¥\81नà¥\8dहा à¤\9fिà¤\9aà¤\95à¥\80 मारलà¥\80 तर तà¥\87 तà¥\8dयाशिवाय जतन होईल.",
+'missingsummary' => "'''à¤\86ठवण:''' à¤\86पण सà¤\82पादन साराà¤\82श पà¥\81रवलà¥\87ला नाहà¥\80.à¤\86पण 'à¤\9cतन à¤\95रा' वर पà¥\81नà¥\8dहा à¤\9fिà¤\9aà¤\95à¥\80 मारलà¥\80 तर, तà¥\87 तà¥\8dयाशिवायà¤\9a जतन होईल.",
'missingcommenttext' => 'कृपया खाली प्रतिक्रिया भरा.',
'missingcommentheader' => "'''आठवण:''' आपण या लेखनाकरिता विषय किंवा मथळा दिलेला नाही. आपण पुन्हा \"{{int:savearticle}}\" वर टिचकले तर, तुमचे संपादन त्याशिवायच जतन होईल.",
'summary-preview' => 'आढाव्याची झलक:',
# Upload
'upload' => 'संचिका चढवा',
-'uploadbtn' => 'सà¤\82à¤\9aिà¤\95ा à¤\9aढवा',
+'uploadbtn' => 'सà¤\82à¤\9aिà¤\95à¥\87à¤\9aà¥\87 à¤\85पà¤à¤¾à¤°à¤£ à¤\95रा',
'reuploaddesc' => 'अपभारण रद्द करुन ,अपभारणाच्या अर्जाकडे परत जा',
'upload-tryagain' => 'बदललेले संचिका वर्णन पाठवा',
'uploadnologin' => 'सनोंद-प्रवेशित नाही',
'filename-tooshort' => 'संचिकानाम खूपच छोटे आहे',
'filetype-banned' => 'याप्रकारची संचिका प्रतिबंधित आहे.',
'verification-error' => 'संचिका पडताळणीत ही संचिका अनुत्तीर्ण झाली.',
-'hookaborted' => 'तà¥\81मà¥\8dहà¥\80 à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bिणारà¥\87 सà¤\82पादन बाहà¥\8dय हà¥\81à¤\95 दà¥\8dवारà¥\87 थंबवण्यात आले.',
+'hookaborted' => 'तà¥\81मà¥\8dहà¥\80 à¤\95रà¥\82 à¤\87à¤\9aà¥\8dà¤\9bिणारà¥\87 बदल विसà¥\8dतारà¤\95ादà¥\8dवारà¥\87 थांबवण्यात आले.',
'illegal-filename' => 'या संचिकानामास परवानगी नाही.',
'overwrite' => 'अस्तित्वात असलेल्या संचिकेवर पुनर्लेखन प्रतिबंधित आहे.',
'unknown-error' => 'एक अज्ञात चूक उद्भवली.',
'tmp-create-error' => 'तात्पुरती संचिका बनवता आली नाही.',
'tmp-write-error' => 'तात्पुरती संचिका लिहीतांना चूकी',
'large-file' => 'संचिका $1 पेक्षा कमी आकाराची असण्याची अपेक्षा आहे, ही संचिका $2 एवढी आहे.',
-'largefileserver' => 'सेवा संगणकावर (सर्वर) निर्धारित केलेल्या आकारापेक्षा या संचिकेचा आकार मोठा आहे.',
+'largefileserver' => 'सà¥\87वा सà¤\82à¤\97णà¤\95ावर (सरà¥\8dवà¥\8dहर) निरà¥\8dधारित à¤\95à¥\87लà¥\87लà¥\8dया à¤\86à¤\95ारापà¥\87à¤\95à¥\8dषा या सà¤\82à¤\9aिà¤\95à¥\87à¤\9aा à¤\86à¤\95ार मà¥\8bठा à¤\86हà¥\87.',
'emptyfile' => 'चढवलेली संचिका रिकामी आहे.असे संचिकानाम चुकीचे लिहिल्याने होउ शकते. कृपया तुम्हाला हीच संचिका चढवायची आहे का ते तपासा.',
'windows-nonascii-filename' => 'या विकिवर विशेष वर्ण असलेल्या संचिकानामाचा आधार घेता येणार नाही.',
'fileexists' => 'या नावाची संचिका आधीच अस्तित्वात आहे, कृपया ही संचिका बदलण्याबद्दल तुम्ही साशंक असाल तर <strong>[[:$1]]</strong> तपासा.
कृपया <strong>[[:$1]]</strong> ही संचिका तपासा.
जर तपासलेली संचिका ही याच आकाराची असेल तर नवीन प्रतिकृती चढविण्याची गरज नाही.",
'file-thumbnail-no' => 'या संचिकेचे नाव <strong>$1</strong> पासून सुरू होत आहे. ही कदाचित झलक असू शकते.
-जर तुमच्या कडे पूर्ण रिझोल्यूशनची संचिका असेल तर चढवा अथवा संचिकेचे नाव बदला.',
-'fileexists-forbidden' => 'या नावाà¤\9aà¥\80 सà¤\82à¤\9aिà¤\95ा à¤\85à¤\97à¥\8bदरà¤\9a à¤\85सà¥\8dतितà¥\8dतà¥\8dवात à¤\86हà¥\87; à¤\95à¥\83पया पà¥\81नà¥\8dहा माà¤\97à¥\87 जाऊन ही संचिका नवीन नावाने चढवा.
+जर तुमच्याकडे पूर्ण रिझोल्यूशनची संचिका असेल तर चढवा अथवा संचिकेचे नाव बदला.',
+'fileexists-forbidden' => 'या नावाà¤\9aà¥\80 सà¤\82à¤\9aिà¤\95ा à¤\85à¤\97à¥\8bदरà¤\9a à¤\85सà¥\8dतितà¥\8dतà¥\8dवात à¤\86हà¥\87; à¤\95à¥\83पया पà¥\81नà¥\8dहा परत जाऊन ही संचिका नवीन नावाने चढवा.
[[File:$1|thumb|center|$1]]',
'fileexists-shared-forbidden' => 'हे नाव असलेली एक संचिका शेअर्ड संचिका कोशात आधी पासून आहे; कृपया परत मागे जा आणि नवीन, वेगळ्या नावाने ही संचिका पुन्हा चढवा. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'ही संचिका खालील {{PLURAL:$1|संचिकेची|संचिकांची}} प्रत आहे:',
'watchthisupload' => 'या पानावर बदलांसाठी लक्ष ठेवा.',
'filewasdeleted' => 'या नावाची संचिका या पूर्वी एकदा चढवून नंतर वगळली होती.तुम्ही ती पुन्हा चढवण्या अगोदर $1 तपासा.',
'filename-bad-prefix' => "तुम्ही चढवत असलेल्या संचिकेचे नाव '''\"\$1\"''' पासून सुरू होते, जे की अंकीय छाउ (कॅमेरा) ने दिलेले अवर्णनात्मक नाव आहे.कृपया तुमच्या संचिकेकरिता अधिक वर्णनात्मक नाव निवडा.",
-'upload-success-subj' => 'यशसà¥\8dवà¥\80रà¥\80तà¥\8dया à¤\9aढवले',
-'upload-success-msg' => 'तुमचे [$2] येथून्ब चढवणे यशस्वी ठरले. ते येथे उपलब्ध आहे: [[:{{ns:file}}:$1]]',
+'upload-success-subj' => 'यशसà¥\8dवà¥\80रà¥\80तà¥\8dया à¤\85पà¤à¤¾à¤°à¤¿à¤¤ à¤\95à¥\87ले',
+'upload-success-msg' => 'तुमचे [$2] येथून अपभारण यशस्वी ठरले. ते येथे उपलब्ध आहे: [[:{{ns:file}}:$1]]',
'upload-failure-subj' => 'चढवण्यातील त्रूटि:',
'upload-failure-msg' => '[$2] येथून तुमच्या चढवण्यात चूक झाली:
'backend-fail-stream' => '$1 या संचिकेचा स्त्रोत शोधता आला नाही.',
'backend-fail-backup' => '$1 या संचिकेची आधारप्रत बनविता आली नाही.',
'backend-fail-notexists' => '$1 ही संचिका अस्तित्वात नाही.',
-'backend-fail-hashes' => 'तà¥\81लना à¤\95रणà¥\8dयासाठà¥\80 फाà¤\87ल हाशेस मिळाले नाही',
+'backend-fail-hashes' => 'तà¥\81लना à¤\95रणà¥\8dयासाठà¥\80 फाà¤\87ल हà¥\85शेस मिळाले नाही',
'backend-fail-notsame' => ' $1 येथे यापेक्षा विभिन्न असलेली संचिका पूर्वीच विद्यमान आहे',
'backend-fail-invalidpath' => '$1 हा वैध संग्राहक-पथ नाही.',
'backend-fail-delete' => '$1 ही संचिका (फाईल) बनवता आली नाही.',
'backend-fail-closetemp' => 'तात्पुरती संचिका बंद करणे जमले नाही.',
'backend-fail-read' => '$1 ही संचिका वाचता आली नाही.',
'backend-fail-create' => '$1 ही संचिका लिहिता आली नाही.',
-'backend-fail-maxsize' => '$1 ही संचिका लिहिता आली नाही कारण ती {{PLURAL:$2|one byte|$2 bytes}} पेक्षा मोठी आहे.',
+'backend-fail-maxsize' => '$1 ही संचिका लिहिता आली नाही कारण ती {{PLURAL:$2|एक बाइट|$2 बाइट्स}} पेक्षा मोठी आहे.',
'backend-fail-readonly' => 'पार्श्वभौमीक साठवण "$1" “फक्त वाचा” असे आहे. दिलेले कारण "$2" आहे.',
'backend-fail-synced' => 'अंतर्गत पार्श्वभौमीक साठवणीतील फाईल "$1" विसंगत आहे.',
'backend-fail-connect' => 'पार्श्वभौमीक साठा "$1"शी संबंध जोडू शकत नाही.',
'backend-fail-internal' => 'पार्श्वभौमीक साठा "$1" यात अज्ञात चूक झाली आहे.',
'backend-fail-contenttype' => '"$1" मध्ये ठेवलेल्या फाईलचा महितीचा प्रकार कळत नाही',
-'backend-fail-batchsize' => 'पार्श्वभौमीक साठयातील बॅच $1 फाईल{{PLURAL:$1|operation|operations}}; मधे मर्यादित कस्त $२ {{PLURAL:$2|operation|operations}} असू शकते',
+'backend-fail-batchsize' => 'पार्श्वभौमीक साठयातील बॅच $1 फाईल{{PLURAL:$1|क्रियेत|क्रियांमध्ये}}; मर्यादित कस्त $२ {{PLURAL:$2|क्रिया}} असू शकते',
'backend-fail-usable' => 'अपुऱ्या परवानगीमुळे किंवा निर्देशिकेच्या/धारिकेच्या(डिरेक्टरीज/कंटेनर्स) अभावामुळे "$1" संचिका वाचु अथवा लिहू शकत नाही.',
# File journal errors
'lockmanager-fail-acquirelock' => '"$1" साठी लॉक फाइल मिळवू शकत नाही',
'lockmanager-fail-openlock' => '"$1" साठी लॉक फाइल उघडू शकत नाही',
'lockmanager-fail-releaselock' => '"$1" साठी लॉक उघडू शकत नाही',
-'lockmanager-fail-db-bucket' => '$1 बासà¥\8dà¤\95à¥\87à¤\9f मधà¥\80ल à¤\95à¥\81लà¥\82प बà¤\82द डà¥\87à¤\9fाबà¥\87सशà¥\80 पà¥\81रà¥\87सा सà¤\82परà¥\8dà¤\95 हà¥\8bवà¥\82 शà¤\95त नाहà¥\80',
+'lockmanager-fail-db-bucket' => '$1 बà¤\95à¥\87à¤\9f मधà¥\80ल à¤\95à¥\81लà¥\82प बà¤\82द डà¥\87à¤\9fाबà¥\87सशà¥\80 पà¥\81रà¥\87सा सà¤\82परà¥\8dà¤\95 हà¥\8bवà¥\82 शà¤\95त नाहà¥\80.',
'lockmanager-fail-db-release' => '"$1" डाटाबेस वरील लॉक उघडू शकत नाही',
'lockmanager-fail-svr-acquire' => 'सर्व्हर "$1" वरील कुलूप उघडू शकत नाही',
'lockmanager-fail-svr-release' => 'सर्व्हर "$1" वरील् लॉक उघडू शकत नाही',
'zip-wrong-format' => 'ही संचिका "झिप" प्रकारची नाही.',
'zip-bad' => 'ही संचिका दूषित किंवा न वाचता येणारी झिप संचिका आहे.
ती सुरक्षिततेसाठी नीट तपासता आली नाही.',
-'zip-unsupported' => 'हि सà¤\82à¤\9aिà¤\95ा à¤\8fà¤\95 ZIP सà¤\82à¤\9aिà¤\95ा à¤\86हà¥\87 à¤\9cà¥\80 मिडà¥\80याविà¤\95à¥\80 दà¥\8dवरे (support) न केलेले ZIP वैशिष्ट्ये (features) वापरते.
-या संचिकेची सुरक्षा पडताळणीसाठी व्यवस्थितरीत्या होऊ शकत नाही.',
+'zip-unsupported' => 'हà¥\80 सà¤\82à¤\9aिà¤\95ा à¤\8fà¤\95 ZIP सà¤\82à¤\9aिà¤\95ा à¤\86हà¥\87 à¤\9cà¥\80 मिडà¥\80याविà¤\95à¥\80 दà¥\8dवारे (support) न केलेले ZIP वैशिष्ट्ये (features) वापरते.
+या संचिकेची सुरक्षा पडताळणी व्यवस्थितरीत्या होऊ शकत नाही.',
# Special:UploadStash
'uploadstash' => 'चढवणे लपवा',
'uploadstash-summary' => 'या पानावर अश्या संचिका पहावयास् मिळतात ज्या चढवल्या आहेत (अथवा चढवल्या जात आहेत) परंतु अजून विकी वर प्रकाशित केल्या नाहित. या संचिका फक्त त्या सदस्यास् दिसतील ज्याने त्या चढवल्या आहेत, इतर सदस्यांस् त्या दिसणार नाहीत.',
'uploadstash-clear' => 'लपवलेल्या संचिका काढा',
'uploadstash-nofiles' => 'तुमच्याकडे लपवलेल्या संचिका नाहीत.',
-'uploadstash-badtoken' => 'हि कृती अयशस्वी होती. कदाचित आपल्या संपादन अधिकारपत्राची (editing credentials) मुदत संपली.',
+'uploadstash-badtoken' => 'हà¥\80 कृती अयशस्वी होती. कदाचित आपल्या संपादन अधिकारपत्राची (editing credentials) मुदत संपली.',
'uploadstash-errclear' => 'संचिका स्वच्छ करणे अयशस्वी.',
'uploadstash-refresh' => 'संचिकांची यादी ताजीतवानी करा',
'invalid-chunk-offset' => 'अग्राह्य चंक ऑफसेट',
# img_auth script messages
-'img-auth-accessdenied' => 'परवानà¤\97à¥\80 नाहà¥\80',
+'img-auth-accessdenied' => 'पà¥\8bहà¥\8bà¤\9a नाà¤\95ारलà¥\8dया à¤\97à¥\87लà¥\80.',
'img-auth-nopathinfo' => 'मार्ग माहिती आढळली नाही.
आपला सर्व्हर ही माहिती पोचवू शकत नाही.
तो सीजीआय-आधारित व इमेज_ऑथला समर्थन न देऊ शकणारा असू शकतो.
फक्त संचिका वापरण्याची परवानगी आहे.',
'img-auth-streaming' => 'स्ट्रीमिंग "$1".',
'img-auth-public' => 'img_auth.php हे वैयक्तिक विकीमधून माहिती प्रदान करण्याचे कार्य करते.
-हा विकि सार्वजनिक विकि म्हणून सब्चित करण्यात आला आ.े.
-à¤\89à¤\9aित सà¥\81रà¤\95à¥\8dषा à¤\95à¥\87 लिà¤\8f img_auth.php à¤\95à¥\8b निषà¥\8dà¤\95à¥\83य à¤\95िया हà¥\81à¤\86 हà¥\88।',
+हा विकि सार्वजनिक विकि म्हणून सब्चित करण्यात आला आहे.
+à¤\95िमान सà¥\81रà¤\95à¥\8dषà¥\87साठà¥\80 img_auth.php ला à¤\85à¤\95à¥\8dषम à¤\95à¥\87लà¥\87 à¤\86हà¥\87.',
'img-auth-noread' => 'तुम्हाला "$1" वाचण्याची परवानगी नाही',
'img-auth-bad-query-string' => 'या दुव्यामध्ये (URL) अवैध query string आहे.',
'listfiles_search_for' => 'चित्र नावाने शोध:',
'imgfile' => 'संचिका',
'listfiles' => 'चित्र यादी',
-'listfiles_thumb' => 'पà¥\8dरारà¥\81प',
+'listfiles_thumb' => 'नà¤\96à¥\81लà¥\87',
'listfiles_date' => 'दिनांक',
'listfiles_name' => 'नाव',
'listfiles_user' => 'सदस्य',
'filehist-datetime' => 'दिनांक/वेळ',
'filehist-thumb' => 'नखुले',
'filehist-thumbtext' => '$1 च्या आवृत्तीचे नखुले',
-'filehist-nothumb' => 'पà¥\8dरारà¥\81प नाही',
+'filehist-nothumb' => 'नà¤\96à¥\81लà¥\87à¤\9aितà¥\8dर नाही',
'filehist-user' => 'सदस्य',
'filehist-dimensions' => 'आकार',
'filehist-filesize' => 'संचिकेचा आकार (बाईट्स)',
'sharedupload-desc-edit' => "संचिका $1 मधील आहे व ती इतर प्रकल्पांमध्ये वापरली जाऊ शकते.आपणास हवे असल्यास,या पानाच्या[$2 'संचिका वर्णन पान'] येथे,त्याची माहिती संपादु शकता.",
'sharedupload-desc-create' => "संचिका $1 मधील आहे व ती इतर प्रकल्पांमध्ये वापरली जात असल्याची शक्यता आहे.आपणास हवे असल्यास,या पानाच्या[$2 'संचिका वर्णन पान'] येथे,त्याची माहिती संपादु शकता",
'filepage-nofile' => 'या नावाची संचिका अस्तित्वात नाही.',
-'filepage-nofile-link' => 'या नावाà¤\9aà¥\80 सà¤\82à¤\9aिà¤\95ा à¤\85सà¥\8dतितà¥\8dयà¥\8dवात नाहà¥\80, पण तà¥\81मà¥\8dहà¥\80 तà¥\80 [$1 à¤\9aढवà¥\82 शà¤\95ता].',
+'filepage-nofile-link' => 'या नावाची संचिका अस्तित्वात नाही, पण तुम्ही ती [$1 चढवू शकता].',
'uploadnewversion-linktext' => 'या संचिकेची नवीन आवृत्ती चढवा',
'shared-repo-from' => '$1 पासून',
'shared-repo' => 'एक मुक्त कोश',
'filedelete-success-old' => '<span class="plainlinks">$3, $2 वेळी \'\'\'[[Media:$1|$1]]\'\'\' चे आवर्तन वगळण्यात आले आहे .</span>',
'filedelete-nofile' => "'''$1''' अस्तित्वात नाही.",
'filedelete-nofile-old' => "सांगितलेल्या गुणधर्मानुसार '''$1'''चे कोणतेही विदा आवर्तन संचित नाही.",
-'filedelete-otherreason' => 'à¤\87तर/शिवाय à¤\85धिà¤\95 कारण:',
+'filedelete-otherreason' => 'दà¥\81सरà¥\87/à¤\85तिरिà¤\95à¥\8dत कारण:',
'filedelete-reason-otherlist' => 'इतर कारण',
'filedelete-reason-dropdown' => '*वगळण्याची सामान्य कारणे
** प्रताधिकार उल्लंघन
** जुळी संचिका',
'filedelete-edit-reasonlist' => 'वगळण्याची कारणे संपादित करा',
-'filedelete-maintenance' => 'फाà¤\88ल वà¤\97ळनà¥\87 à¤\86णि पà¥\81नà¥\8d:सà¥\8dथापित à¤\95रणà¥\8d',
+'filedelete-maintenance' => 'दà¥\87à¤\96à¤à¤¾à¤²à¥\80दरमà¥\8dयान, सà¤\82à¤\9aिà¤\95ा वà¤\97ळणà¥\87 व पà¥\81नरà¥\8dसà¥\8dथापित à¤\95रणà¥\87 तातà¥\8dपà¥\81रतà¥\87 à¤\85à¤\95à¥\8dषम à¤\95à¥\87लà¥\8dया à¤\97à¥\87लà¥\87 à¤\86हà¥\87.',
'filedelete-maintenance-title' => 'संचिका (फाईल) वगळू शकत नाही.',
# MIME search
'mimesearch-summary' => 'हे पान विविधामाप (माईम)-प्रकारांकरिता संचिकांची चाळणी करण्याची सुविधा पुरवते:
Input:contenttype/subtype, e.g. <code>image/jpeg</code>.',
'mimetype' => 'विविधामाप (माईम) प्रकार:',
-'download' => 'à¤\89तरवा',
+'download' => 'à¤\85धिà¤à¤¾à¤°à¤£ à¤\95रा',
# Unwatched pages
-'unwatchedpages' => 'लà¤\95à¥\8dष नसलेली पाने',
+'unwatchedpages' => 'दà¥\87à¤\96रà¥\87à¤\96 नसलेली पाने',
# List redirects
-'listredirects' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शनà¥\87 दाà¤\96वा',
+'listredirects' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शनाà¤\82à¤\9aà¥\80 यादà¥\80',
# Unused templates
'unusedtemplates' => 'न वापरलेले साचे',
'statistics-header-views' => 'सांख्यिकी पहा',
'statistics-header-users' => 'सदस्य सांख्यिकी',
'statistics-header-hooks' => 'इतर सांख्यिकी',
-'statistics-articles' => 'सà¤\82बà¤\82धित पाने',
+'statistics-articles' => 'à¤\86शय पाने',
'statistics-pages' => 'पाने',
'statistics-pages-desc' => 'विकीमधील सर्व पाने, पुनर्निर्देशने, चर्चापानांसहित.',
-'statistics-files' => 'à¤\9aढवलà¥\87लà¥\8dया संचिका',
+'statistics-files' => 'à¤\85पà¤à¤¾à¤°à¥\80त संचिका',
'statistics-edits' => '{{SITENAME}} च्या सुरुवातीपासूनची पानांची संपादने',
'statistics-edits-average' => 'प्रतिपान सरासरी संपादने',
'statistics-views-total' => 'सर्व दाखवते',
-'statistics-views-total-desc' => 'à¤\9cà¥\87 पानà¥\87 यामधà¥\8dदà¥\87 नाहà¥\80त तà¥\87 पाहा à¤\86नि à¤\96ास पानà¥\87 सामिला à¤\95रà¥\82 नà¤\95ा.',
+'statistics-views-total-desc' => 'à¤\85सà¥\8dतितà¥\8dवात नसलà¥\87लà¥\80 पानà¥\87 व विशà¥\87ष पानà¥\87 याà¤\82à¤\9aà¥\80 दà¥\83षà¥\8dयता यात à¤\85à¤\82तरà¥\8dà¤à¥\82त नाहà¥\80',
'statistics-views-peredit' => 'प्रति संपादनामागे पाहणे',
'statistics-users' => 'नोंदणीकृत [[Special:ListUsers|सदस्य]]',
'statistics-users-active' => 'कार्यरत सदस्य',
'pageswithprop-prophidden-binary' => 'बायनरी गुणधर्माची किंमत लपविलेली आहे ($1)',
'doubleredirects' => 'दुहेरी-पुनर्निर्देशने',
-'doubleredirectstext' => 'हे पान अशा पानांची सूची पुरवते की जी पुर्ननिर्देशीत पाने दुसऱ्या पुर्ननिर्देशीत पानाकडे निर्देशित झाली आहेत.प्रत्येक ओळीत पहिल्या आणि दुसऱ्या पुर्ननिर्देशनास दुवा दिला आहे सोबतच दुसरे पुर्ननिर्देशन ज्या पानाकडे पोहचते ते पण दिले आहे, जे की बरोबर असण्याची शक्यता आहे ,ते वस्तुतः पहिल्या पानापासूनचेही पुर्ननिर्देशन असावयास हवे.',
+'doubleredirectstext' => 'हे पान, अशा पानांची यादी पुरवते की जी पाने, दुसऱ्या पुर्ननिर्देशीत पानाकडे पुर्ननिर्देशीत झाली आहेत.प्रत्येक ओळीत पहिल्या आणि दुसऱ्या पुर्ननिर्देशनाचा दुवा दिला आहे,तसेच, दुसऱ्या पुर्ननिर्देशनाचे लक्ष्य पान पण दिले आहे,जे मुळात ते
+लक्ष्यपान आहे ज्याकडे, पहिले पुनर्निर्देशन असावयास हवे.
+
+<del>खोडलेल्या प्रविष्टी</del>समायोजित करण्यात आलेल्या आहेत.',
'double-redirect-fixed-move' => '[[$1]] हलवले गेले आहे.
-ते [[$2]] येथे निर्देशित होते.',
-'double-redirect-fixed-maintenance' => '[[$1]] तà¥\87 [[$2]] हà¥\87 à¤\9aà¥\81à¤\95à¥\80à¤\9aà¥\87 पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन नà¥\80à¤\9f केले.',
-'double-redirect-fixer' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन नà¥\80à¤\9f करणारा',
+ते आता [[$2]] येथे निर्देशित होते.',
+'double-redirect-fixed-maintenance' => '[[$1]] तà¥\87 [[$2]] हà¥\87 à¤\9aà¥\81à¤\95à¥\80à¤\9aà¥\87 पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन ठिà¤\95ठाà¤\95 केले.',
+'double-redirect-fixer' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन ठिà¤\95ठाà¤\95 करणारा',
-'brokenredirects' => 'मà¥\8bडà¤\95à¥\87 पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन',
+'brokenredirects' => 'मà¥\8bडà¤\95à¥\80 पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शनà¥\87',
'brokenredirectstext' => 'खालील पुनर्निर्देशने अस्तित्वात नसलेली पाने जोडतात:',
'brokenredirects-edit' => 'संपादन',
'brokenredirects-delete' => 'वगळा',
'protectedpages' => 'सुरक्षित पाने',
'protectedpages-indef' => 'फक्त अनंत काळासाठी सुरक्षित केलेले',
'protectedpages-cascade' => 'केवळ एकामेकांवर अवलंबून कास्केडींग सुरक्षा (सुरक्षा शिडी)',
+'protectedpages-noredirect' => 'पुनर्निर्देशने लपवा',
'protectedpagesempty' => 'सध्या या नियमावलीने कोणतीही पाने सुरक्षित केलेली नाहीत.',
'protectedtitles' => 'सुरक्षीत शीर्षके',
'protectedtitlesempty' => 'या नियमावलीने सध्या कोणतीही शीर्षके सुरक्षित केलेली नाहीत.',
'listgrouprights-rights' => 'अधिकार',
'listgrouprights-helppage' => 'Help:गट अधिकार',
'listgrouprights-members' => '(सदस्यांची यादी)',
-'listgrouprights-addgroup' => '{{PLURAL:$2|गट|गट}} वाढवा: $1',
-'listgrouprights-removegroup' => '{{PLURAL:$2|गट|गट}} वगळा: $1',
+'listgrouprights-addgroup' => '{{PLURAL:$2|गट}} वाढवा: $1',
+'listgrouprights-removegroup' => '{{PLURAL:$2|गट}} वगळा: $1',
'listgrouprights-addgroup-all' => 'सर्व गट वाढवा',
-'listgrouprights-removegroup-all' => 'सरà¥\8dव समà¥\82ह काढून टाका',
-'listgrouprights-addgroup-self' => 'स्वतःच्या खात्यात हे {{PLURAL:$2|गट|गट}} मिळवा: $1',
-'listgrouprights-removegroup-self' => 'स्वतःच्या खात्यातून हे {{PLURAL:$2|गट|गट}} वगळा: $1',
-'listgrouprights-addgroup-self-all' => 'सरà¥\8dव समà¥\82ह सà¥\8dवतà¤\83à¤\9aà¥\8dया à¤\96ातà¥\8dयात मिळवा',
-'listgrouprights-removegroup-self-all' => 'सरà¥\8dव समà¥\82ह स्वतःच्या खात्यातून काढून टाका',
+'listgrouprights-removegroup-all' => 'सरà¥\8dव à¤\97à¤\9f काढून टाका',
+'listgrouprights-addgroup-self' => 'स्वतःच्या खात्यात हे {{PLURAL:$2|गट}} मिळवा: $1',
+'listgrouprights-removegroup-self' => 'स्वतःच्या खात्यातून हे {{PLURAL:$2|गट}} वगळा: $1',
+'listgrouprights-addgroup-self-all' => 'सरà¥\8dव à¤\97à¤\9f सà¥\8dवतà¤\83à¤\9aà¥\8dया à¤\96ातà¥\8dयात à¤\9cà¥\8bडा',
+'listgrouprights-removegroup-self-all' => 'सरà¥\8dव à¤\97à¤\9f स्वतःच्या खात्यातून काढून टाका',
# Email user
'mailnologin' => 'पाठविण्याचा पत्ता नाही',
'noemailtitle' => 'विपत्र पत्ता नाही',
'noemailtext' => 'या सदस्याने वैध विपत्र पत्ता नमूद केलेला नाही.',
'nowikiemailtitle' => 'विपत्र प्रतिबंधित',
-'nowikiemailtext' => 'हा पà¥\8dरयà¥\8bà¤\95à¥\8dता à¤\85नà¥\8dय पà¥\8dरयà¥\8bà¤\95à¥\8dता à¤\95डà¥\82न à¤\88-मà¥\87ल à¤\98à¥\87à¤\8a à¤\87à¤\9aà¥\8dà¤\9bित नाहà¥\80.',
-'emailnotarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dता à¤\95रà¥\80ता à¤\85सà¥\8dतितà¥\8dवात नसलà¥\87लà¥\87 à¤\95िà¤\82वा à¤\85वà¥\88ध सदसà¥\8dय',
-'emailtarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dता पà¥\8dरयà¥\8bà¤\95à¥\8dताà¤\9aà¥\87 नाà¤\82व à¤\9fाà¤\95ा.',
+'nowikiemailtext' => 'या सदसà¥\8dयानà¥\87 à¤\85नà¥\8dय सदसà¥\8dयाà¤\82à¤\95डà¥\82न à¤\88-मà¥\87ल यà¥\87à¤\8a न दà¥\87णà¥\8dयाà¤\9aà¥\87 (à¤\90à¤\9aà¥\8dà¤\9bिà¤\95) निवडलà¥\87 à¤\86हà¥\87.',
+'emailnotarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dतà¥\8dयाà¤\9aà¥\87 à¤\85सà¥\8dतितà¥\8dवात नसलà¥\87लà¥\87 à¤\95िà¤\82वा à¤\85वà¥\88ध सदसà¥\8dयनाम.',
+'emailtarget' => 'पà¥\8dरापà¥\8dतà¤\95रà¥\8dतà¥\8dयाà¤\9aà¥\87 सदसà¥\8dयनाम à¤\9fाà¤\95ा',
'emailusername' => 'सदस्यनाम:',
'emailusernamesubmit' => 'पाठवा',
-'email-legend' => 'à¤\88मà¥\87ल à¤\85नà¥\8dय सदसà¥\8dयाला पाठवा',
-'emailfrom' => 'प्रेषक',
+'email-legend' => 'à¤\85नà¥\8dय {{SITENAME}} वरà¥\80ल सदसà¥\8dयाला à¤\88मà¥\87ल पाठवा',
+'emailfrom' => 'प्रेषक:',
'emailto' => 'प्रति:',
'emailsubject' => 'विषय:',
'emailmessage' => 'संदेश:',
'emailsend' => 'पाठवा',
-'emailccme' => 'माà¤\9dà¥\8dया सà¤\82दà¥\87शाà¤\9aà¥\80 मला विपतà¥\8dर पà¥\8dरत पाठवा.',
-'emailccsubject' => 'तुमच्या विपत्राची प्रत कडे $1: $2',
+'emailccme' => 'माà¤\9dà¥\8dया सà¤\82दà¥\87शाà¤\9aà¥\80 पà¥\8dरत मला विपतà¥\8dरादà¥\8dवारà¥\87 पाठवा.',
+'emailccsubject' => '$1 ला पाठविलेल्या आपल्या विपत्राची प्रत: $2',
'emailsent' => 'विपत्र पाठवले',
'emailsenttext' => 'तुमचा विपत्र संदेश पाठवण्यात आला आहे.',
-'emailuserfooter' => 'हे विपत्र $1 ने $2 ला {{SITENAME}} वरील "सदस्यास विपत्र पाठवा" वापरुन पाठवले आहे.',
+'emailuserfooter' => '$1 ने $2 ला हे विपत्र, {{SITENAME}} वरील, "सदस्यास विपत्र पाठवा" ही प्रक्रिया वापरुन पाठवले आहे.',
# User Messenger
'usermessage-summary' => 'प्रणाली संदेश देत आहे.',
'watchlistfor2' => '$1 $2 साठी',
'nowatchlist' => 'तुमची पहाऱ्याची सूची रिकामी आहे.',
'watchlistanontext' => 'तुमच्या पहाऱ्याच्या सूचीमधील बाबी पाहण्याकरता किंवा संपादित करण्याकरता, कृपया $1.',
-'watchnologin' => 'पà¥\8dरवà¥\87श à¤\95à¥\87लà¥\87ला नाही',
-'watchnologintext' => 'तà¥\81मà¤\9aà¥\80 पहाऱà¥\8dयाà¤\9aà¥\80 सà¥\82à¤\9aà¥\80 बदलायà¤\9aà¥\80 à¤\85सà¥\87ल तर तà¥\81मà¥\8dहà¥\80 [[Special:UserLogin|पà¥\8dरवà¥\87श à¤\95à¥\87लà¥\87ला]] à¤\85सलाà¤\9a पाहà¥\80à¤\9cà¥\87.',
+'watchnologin' => 'सनà¥\8bà¤\82द-पà¥\8dरवà¥\87शित नाही',
+'watchnologintext' => 'à¤\86पलà¥\80 पहाऱà¥\8dयाà¤\9aà¥\80 सà¥\82à¤\9aà¥\80 बदलवायà¤\9aà¥\80 à¤\85सà¥\87ल तर à¤\86पणास [[Special:UserLogin|सनà¥\8bà¤\82द-पà¥\8dरवà¥\87शित]] à¤\85सावà¥\87 लाà¤\97à¥\87ल.',
'addwatch' => 'पहाऱ्याच्या सूचीमध्ये टाका',
'addedwatchtext' => '"[[:$1]]" हे पान तुमच्या [[Special:Watchlist|\'माझी निरीक्षणसूची\']]मध्ये टाकले आहे. या पानावरील तसेच त्याच्या चर्चा पानावरील भविष्यातील बदल तेथे दाखवले जातील',
'removewatch' => 'पहाऱ्याच्या सूचीतून वगळा',
'watchthispage' => 'या पानावर बदलांसाठी लक्ष ठेवा.',
'unwatch' => 'पहारा काढा',
'unwatchthispage' => 'पहारा काढून टाका',
-'notanarticle' => 'मà¤\9cà¤\95à¥\81र विरहित पान',
+'notanarticle' => 'हà¥\87 à¤\86शयपान नाहà¥\80',
'notvisiblerev' => 'आवृत्ती वगळण्यात आलेली आहे',
'watchlist-details' => 'पहाऱ्याच्या सूचीमधील {{PLURAL:$1|$1 पान|$1 पाने}}, यात चर्चा पाने मोजलेली नाहीत.',
'wlheader-enotif' => 'विपत्र अधिसूचना सुविधा शक्य केली.',
'watchmethod-recent' => 'पहाऱ्यातील पानांकरिता अलीकडील बदलांचा तपास',
'watchmethod-list' => 'अलीकडील बदलांकरिता पहाऱ्यातील पानांचा तपास',
'watchlistcontains' => 'तुमचा $1 {{PLURAL:$1|पानावर|पानांवर}} पहारा आहे.',
-'iteminvalidname' => "'$1'बाबà¥\80स समसà¥\8dया, à¤\85मानà¥\8dय नाव...",
+'iteminvalidname' => "'$1'या बाबà¥\80साठà¥\80 समसà¥\8dया, à¤\85वà¥\88ध नाव...",
'wlnote' => "खाली $3, $4 पर्यंतचे गेल्या {{PLURAL:$2| '''१''' तासातील|'''$2''' तासातील}} {{PLURAL:$1|शेवटचा बदल दिला आहे|शेवटाचे '''$1'''बदल दिले आहेत}}.",
'wlshowlast' => 'मागील $1 तास $2 दिवस $3 पहा',
'watchlist-options' => 'पहाऱ्याच्या सूचीचे पर्याय',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'पाहताहे...',
+'watching' => 'पहारा दà¥\87त à¤\86हे...',
'unwatching' => 'पहारा काढत आहे...',
'watcherrortext' => '$1 साठीच्या तुमच्या पहाऱ्याच्या सूचीमधील मांडणीत (watchlist settings) बदल करताना त्रुटी आली.',
-'enotif_mailer' => '{{SITENAME}} सूचना विपत्र',
+'enotif_mailer' => '{{SITENAME}} à¤\85धिसà¥\82à¤\9aना विपतà¥\8dर',
'enotif_reset' => 'सर्व पानास भेट दिल्याचे नमूद करा',
'enotif_impersonal_salutation' => '{{SITENAME}} सदस्य',
'enotif_subject_deleted' => '{{SITENAME}} पानाला $1 {{gender:$2|$2}} ने वगळले',
'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' => 'तà¥\81मà¤\9aà¥\8dया शà¥\87वà¤\9fà¤\9aà¥\8dया à¤à¥\87à¤\9fà¥\80नà¤\82तरà¤\9aà¥\87 बदल बà¤\98णयासाठà¥\80 पहा - $1.',
+'enotif_lastvisited' => 'तà¥\81मà¤\9aà¥\8dया शà¥\87वà¤\9fà¤\9aà¥\8dया à¤à¥\87à¤\9fà¥\80नà¤\82तरà¤\9aà¥\87 बदल बà¤\98णà¥\8dयासाठà¥\80 $1 पहा.',
'enotif_lastdiff' => 'हा बदल पहाण्याकरिता $1 पहा.',
-'enotif_anon_editor' => 'à¤\85नामिà¤\95 à¤\89पयà¥\8bà¤\97à¤\95रà¥\8dता $1',
+'enotif_anon_editor' => 'à¤\85नामिà¤\95 सदसà¥\8dय $1',
'enotif_body' => 'प्रिय $WATCHINGUSERNAME,
{{SITENAME}}या लेखनावाचे $PAGETITLE (या मथळ्याचे) पान $PAGEEDITOR ने $PAGEEDITDATE ( या तारखेस) $CHANGEDORCREATED तयार केले किंवा बदलले आहे. सध्याची आवृत्ती पाहण्यासाठी खालील दुव्यावर टिचकी मारा.
'delete-confirm' => '"$1" वगळा',
'delete-legend' => 'वगळा',
'historywarning' => 'सूचना: तुम्ही वगळत असलेल्या पानाला $1 {{PLURAL:$1|आवर्तनाचा|आवर्तनांचा}} इतिहास आहे:',
-'confirmdeletetext' => 'तुम्ही एक लेख त्याच्या सर्व इतिहासासोबत वगळण्याच्या तयारीत आहात.
-कृपया तुम्ही करत असलेली कृती ही मीडियाविकीच्या [[{{MediaWiki:Policy-url}}|नीतीनुसार]] आहे ह्याची खात्री करा. तसेच तुम्ही करित असलेल्या कृतीचे परिणाम कृती करण्यापूर्वी जाणून घ्या.',
+'confirmdeletetext' => 'तुम्ही एक लेखपान त्याच्या सर्व इतिहासासोबत वगळण्याच्या तयारीत आहात.
+कृपया, तुम्ही करीत असलेली कृती ही मीडियाविकीच्या [[{{MediaWiki:Policy-url}}|नीतीनुसार]] आहे ह्याची खात्री करा. तसेच, तुम्ही करीत असलेल्या कृतीचे परिणाम, कृती करण्यापूर्वी जाणून घ्या.',
'actioncomplete' => 'काम पूर्ण',
'actionfailed' => 'कृती अयशस्वी झाली',
'deletedtext' => '"$1" हा लेख वगळला. अलीकडे वगळलेले लेख पाहण्यासाठी $2 पहा.',
** लेखकाची(लेखिकेची) विनंती
** तुटकी पुनर्निर्देशने',
'delete-edit-reasonlist' => 'वगळण्याची कारणे संपादित करा',
-'delete-toobig' => 'या पानाला खूप मोठी इतिहास यादी आहे, तसेच हे पान $1 {{PLURAL:$1|पेक्षा|पेक्षा}}पेक्षा जास्त वेळा बदलण्यात आलेले आहे. अशी पाने वगळणे हे {{SITENAME}} ला धोकादायक ठरू नये म्हणून शक्य केलेले नाही.',
-'delete-warning-toobig' => 'या पानाला खूप मोठी इतिहास यादी आहे, तसेच हे पान $1 {{PLURAL:$1|पेक्षा|पेक्षा}} पेक्षा जास्त वेळा बदलण्यात आलेले आहे.
-अशी पाने वगळणे हे {{SITENAME}} ला धोकादायक ठरू शकते;
-कृपया काळजीपूर्वक हे पान वगळा.',
+'delete-toobig' => 'या पानाला, $1 {{PLURAL:$1|आवृत्ती|आवृत्त्यां}}मुळे तयार झालेला खूप मोठा संपादन इतिहास आहे. {{SITENAME}} वर आकस्मिक होणारी उलथापालथ वाचविण्यासाठी, अश्या पानांचे वगळणे प्रतिबंधित केल्या गेले आहे.',
+'delete-warning-toobig' => 'या पानाला, $1 {{PLURAL:$1|आवृत्ती|आवृत्त्यां}}मुळे तयार झालेला खूप मोठा संपादन इतिहास आहे.त्याचे वगळण्याने {{SITENAME}} वर डाटाबेसच्या क्रियांची उलथापालथ होऊ शकते; सावधगिरीने पुढे जा.',
+'deleting-backlinks-warning' => "'''ईशारा:'''आपण वगळत असणाऱ्या पानास इतर पानांचे दुवे आहेत.",
# Rollback
'rollback' => 'बदल वेगात माघारी न्या',
'rollback_short' => 'द्रुतमाघार',
'rollbacklink' => 'द्रुतमाघार',
'rollbacklinkcount' => 'उलटवा $1 {{PLURAL:$1|संपादन|संपादने}}',
-'rollbacklinkcount-morethan' => '$1 पेक्षा अधिक उलटवा {{PLURAL:$1|संपादन|संपादने}}',
+'rollbacklinkcount-morethan' => '$1 पेक्षा अधिक {{PLURAL:$1|संपादन|संपादने}} उलटवा',
'rollbackfailed' => 'द्रूतमाघार फसली',
'cantrollback' => 'जुन्या आवृत्तीकडे परतवता येत नाही; शेवटचा संपादक या पानाचा एकमात्र लेखक आहे.',
'alreadyrolled' => '[[User:$2|$2]] ([[User talk:$2|Talk]] [[Special:Contributions/$2|{{int:contribslink}}]])चे शेवटाचे [[:$1]]वे संपादन माघारी परतवता येत नाही; पान आधीच कुणी माघारी परतवले आहे किंवा संपादित केले आहे.
# Edit tokens
'sessionfailure-title' => 'सत्र त्रुटी',
-'sessionfailure' => 'तुमच्या दाखल सत्रात काही समस्या दिसते;सत्र अपहारणा पासून काळजी घेण्याच्या दृष्टीने ही कृती रद्द केली गेली आहे.कपया आपल्या विचरकाच्या "back" कळीवर टिचकी मारा आणि तुम्ही ज्या पानावरून आला ते पुन्हा चढवा,आणि प्रत प्रयत्न करा.',
+'sessionfailure' => 'तुमच्या दाखल सत्रात काही समस्या दिसते;सत्र अपहारणापासून
+वाचविण्याचे दृष्टीने ही कृती रद्द केल्या गेली आहे.कृपया आपल्या विचरकाच्या "back" कळीवर टिचकी मारा आणि तुम्ही ज्या पानावरून आला ते पुन्हा चढवा,आणि परत प्रयत्न करा.',
# Protect
'protectlogpage' => 'सुरक्षा नोंदी',
'protect-level-sysop' => 'केवळ प्रचालकांना परवानगी आहे',
'protect-summary-cascade' => 'शिडी',
'protect-expiring' => '$1 (UTC) ला संपेल',
-'protect-expiring-local' => '$1 ला समà¥\8dपते',
+'protect-expiring-local' => '$1 ला सà¤\82पते',
'protect-expiry-indefinite' => 'अनंत',
'protect-cascade' => 'या पानात असलेली पाने सुरक्षित करा (सुरक्षा शिडी)',
'protect-cantedit' => 'तुम्ही या पानाची सुरक्षा पातळी बदलू शकत नाही कारण तुम्हाला तसे करण्याची परवानगी नाही.',
'undeletepage' => 'वगळलेली पाने पहा आणि पुनर्स्थापित करा',
'undeletepagetitle' => "'''खाली [[:$1]] च्या वगळलेल्या आवृत्त्या समाविष्ट केलेल्या आहेत'''.",
'viewdeletedpage' => 'काढून टाकलेले लेख पहा',
-'undeletepagetext' => 'à¤\96ालà¥\80ल {{PLURAL:$1|पान वà¤\97ळलà¥\87 à¤\86हà¥\87 तरà¥\80सà¥\81दà¥\8dधा विदाà¤\97ारात à¤\9cतन à¤\86हà¥\87 à¤\86णि पà¥\81रà¥\8dनà¥\8dसà¥\8dथापित à¤\95रणà¥\87 शà¤\95à¥\8dय à¤\86हà¥\87|$1 पानà¥\87 वà¤\97ळलà¥\80 à¤\86हà¥\87त तरà¥\80 सà¥\81दà¥\8dधा विदाà¤\97ारात à¤\9cतन à¤\86हà¥\87त à¤\86णि पà¥\81रà¥\8dन्स्थापित करणे शक्य आहेत}}. विदागारातील साठवण ठरावीक कालावधीने स्वच्छ करता येते.',
+'undeletepagetext' => 'à¤\96ालà¥\80ल {{PLURAL:$1|पान वà¤\97ळलà¥\87 à¤\86हà¥\87 तरà¥\80सà¥\81दà¥\8dधा विदाà¤\97ारात à¤\9cतन à¤\86हà¥\87 à¤\86णि पà¥\81नरà¥\8dसà¥\8dथापित à¤\95रणà¥\87 शà¤\95à¥\8dय à¤\86हà¥\87|$1 पानà¥\87 वà¤\97ळलà¥\80 à¤\86हà¥\87त तरà¥\80 सà¥\81दà¥\8dधा विदाà¤\97ारात à¤\9cतन à¤\86हà¥\87त à¤\86णि पà¥\81नर्स्थापित करणे शक्य आहेत}}. विदागारातील साठवण ठरावीक कालावधीने स्वच्छ करता येते.',
'undelete-fieldset-title' => 'आवर्तने पुनर्स्थापित करा',
-'undeleteextrahelp' => "संपूर्ण पान पुनर्स्थापित करण्याकरिता,सारे रकाने रिकामे ठेवा आणि '''''पुनर्स्थापन'''''वर टिचकी मारा. निवडक पुनर्स्थापन करण्याकरिता, ज्या आवर्तनांचे पुनर्स्थापन करावयाचे त्यांचे रकाने निवडा , आणि '''''पुनर्स्थापन'''''वर टिचकी मारा. '''''पुनर्योजन ''''' वर टिचकी मारल्यास सारे रकाने आणि प्रतिक्रिया खिडकी रिकामी होईल.",
+'undeleteextrahelp' => "पानाचा संपूर्ण इतिहास पुनर्स्थापित करण्यासाठी,साऱ्या चौकटपेट्या (चेकबॉक्सेस) रिकाम्या ठेवा
+आणि '''''{{int:undeletebtn}}''''' वर टिचकी मारा. निवडक पुनर्स्थापन करण्याकरिता, ज्या आवर्तनांचे पुनर्स्थापन करावयाचे त्यांचेशी सुसंगत चौकटपेट्या (चेकबॉक्सेस) निवडा , आणि '''''{{int:undeletebtn}}''''' वर टिचकी मारा.",
'undeleterevisions' => '$1 {{PLURAL:$1|आवर्तन|आवर्तने}}विदागारात संचीत',
'undeletehistory' => 'जर तुम्ही पान पुनर्स्थापित केले तर ,सारी आवर्तने इतिहासात पुनर्स्थापित होतील.
वगळल्या पासून त्याच नावाचे नवे पान तयार केले गेले असेले तर, पुनर्स्थापित आवर्तने पाठीमागील इतिहासात दिसतील. पुनर्स्थापना नंतर संचिकांच्या आवर्तनांवरील बंधने गळून पडतील याची नोंद घ्या.',
'undeleterevdel' => 'पृष्ठ पानाचे आवर्तन अर्धवट वगळले जाणार असेल तर पुनर्स्थापनाची कृती केली जाणार नाही.
अशा प्रसंगी, तुम्ही अगदी अलीकडील वगळलेली आवर्तने अनचेक किंवा अनहाईड केलीच पाहिजे.',
-'undeletehistorynoadmin' => 'हà¥\87 पान वà¤\97ळलà¥\87 à¤\97à¥\87लà¥\87 à¤\86हà¥\87.वà¤\97ळणà¥\8dयाà¤\9aà¥\87 à¤\95ारण à¤\96ालà¥\80ल à¤\86ढावà¥\8dयात,वà¤\97ळणà¥\8dयापà¥\82रà¥\8dवà¥\80 सà¤\82पादित à¤\95रणाऱà¥\8dया सà¤\82पादà¤\95ाà¤\82à¤\9aà¥\8dया माहितà¥\80 सà¥\8bबत,दाà¤\96वलà¥\87 à¤\86हà¥\87. वà¤\97ळलà¥\87लà¥\8dया à¤\86वरà¥\8dतà¥\8dनाà¤\82à¤\9aा नà¥\87मà¤\95ा मà¤\9cà¤\95à¥\82र à¤\95à¥\87वळ पà¥\8dरà¤\9aालà¤\95ाà¤\82ना à¤\89पलबà¥\8dध à¤\85सà¥\87ल.',
+'undeletehistorynoadmin' => 'हे पान वगळले गेले आहे.वगळण्याचे कारण खालील आढाव्यात,वगळण्यापूर्वी संपादित करणाऱ्या संपादकांच्या माहिती सोबत,दाखवले आहे. वगळलेल्या आवर्तनांचा नेमका मजकूर केवळ प्रचालकांना उपलब्ध असेल.',
'undelete-revision' => '$1चे($4चे, $5 येथील) आवर्तन $3 ने वगळले:',
-'undeleterevision-missing' => 'अयोग्य अथवा नसापडणारे आवर्तन. तुमचा दुवा कदाचित चुकीचा असेल, किंवा आवर्तन पुनर्स्थापित केले गेले असेल किंवा विदागारातून वगळले असेल.',
+'undeleterevision-missing' => 'अयोग्य अथवा न सापडणारे आवर्तन. तुमचा दुवा कदाचित चुकीचा असेल, किंवा आवर्तन पुनर्स्थापित केले गेले असेल किंवा विदागारातून वगळले गेले असेल.',
'undelete-nodiff' => 'पूर्वीचे कोणतेही आवर्तन आढळले नाही.',
'undeletebtn' => 'वगळण्याची क्रिया रद्द करा',
'undeletelink' => 'पहा/पुनर्स्थापित करा',
'undelete-bad-store-key' => '$1 वेळ दिलेली संचिका आवर्तन पुनर्स्थापित करता येत नाही:संचिका वगळण्यापूर्वी पासून मिळाली नव्हती.',
'undelete-cleanup-error' => 'न वापरलेली विदा संचिका "$1" वगळताना त्रुटी दाखवते.',
'undelete-missing-filearchive' => 'संचिका विदास्मृती ID $1 पुनर्स्थापित करू शकत नाही कारण ती विदागारात उपलब्ध नाही. ती आधीच पुनर्स्थापित केली असण्याची शक्यता सुद्धा असू शकते.',
-'undelete-error' => 'à¤\9cर पाना à¤\95ाढà¥\82न नाहà¥\80 à¤\9fाà¤\95लà¥\87 तर पान शà¥\80रà¥\8dषà¤\95',
+'undelete-error' => 'पान पà¥\81नरà¥\8dसà¥\8dथापनात तà¥\8dरà¥\82à¤\9fà¥\80',
'undelete-error-short' => 'संचिकेचे वगळणे उलटवताना त्रूटी: $1',
'undelete-error-long' => 'संचिकेचे वगळणे उलटवताना त्रुटींचा अडथळा आला:
# Namespace form on various pages
'namespace' => 'नामविश्व:',
'invert' => 'निवडीचा क्रम उलटा करा',
-'tooltip-invert' => 'निवडलेल्या नामविश्वातील (आणि तसे निवडल्यास संबंधित नामविश्वातील) पानांचे बदल अदृष्य करण्या साटी टिचकी मारा',
+'tooltip-invert' => 'निवडलेल्या नामविश्वातील (आणि तसे निवडल्यास संबंधित नामविश्वातील) पानांचे बदल अदृष्य करण्यासाठी टिचकी मारा',
'namespace_association' => 'सहभागी नामविश्वे',
'tooltip-namespace_association' => 'निवडलेल्या नामविश्वासंबधीत विषय अथवा चर्चा नामविश्वसुद्धा आंतर्भूत करण्याकरिता हा बॉक्स टिचकवून चिह्नित करा',
'blanknamespace' => '(मुख्य)',
'whatlinkshere-filters' => 'गाळण्या',
# Block/unblock
-'autoblockid' => '#$1ला स्वयंचलितपणे प्रतिबंधित करा',
+'autoblockid' => 'स्वयंचलितपणे #$1ला प्रतिबंधित करा',
'block' => 'सदस्यास प्रतिबंध करा',
-'unblock' => 'सदस्य सोडवा',
+'unblock' => 'सदस्यप्रतिबंध काढा',
'blockip' => 'हा अंकपत्ता अडवा',
'blockip-legend' => 'सदस्यास प्रतिबंध करा',
'blockiptext' => 'एखाद्या विशिष्ट अंकपत्त्याची किंवा सदस्याची लिहिण्याची क्षमता प्रतिबंधित करण्याकरिता खालील सारणी वापरा.
'ipbwatchuser' => 'या सदस्याच्या सदस्य तसेच चर्चा पानावर पहारा ठेवा',
'ipb-disableusertalk' => 'सदस्यास स्वत:चे चर्चापान संपादण्यापासून प्रतिबंधित करा',
'ipb-change-block' => 'या सेटींग्जसह सदस्यास पुन्हा प्रतिबंधित करा.',
-'ipb-confirm' => 'à¤\85डथाळा सुनिश्चित करा.',
+'ipb-confirm' => 'पà¥\8dरतिबà¤\82ध सुनिश्चित करा.',
'badipaddress' => 'अंकपत्ता बरोबर नाही.',
'blockipsuccesssub' => 'अडवणूक यशस्वी झाली',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]ला प्रतिबंधित केले.<br />
'change-blocklink' => 'रोध बदला',
'contribslink' => 'योगदान',
'emaillink' => 'ई-मेल पाठवा.',
-'autoblocker' => 'स्वयंचलितप्रतिबंधन केले गेले कारण तुमचा अंकपत्ता अलीकडे "[[User:$1|$1]]"ने वापरला होता. $1 च्या प्रतिबंधनाकरिता दिलेले कारण: "$2" आहे.',
+'autoblocker' => 'स्वयंचलित प्रतिबंधन केले गेले कारण तुमचा अंकपत्ता अलीकडे "[[User:$1|$1]]"ने वापरला होता. $1 च्या प्रतिबंधनाकरिता दिलेले कारण: "$2" आहे.',
'blocklogpage' => 'रोध नोंदी',
'blocklog-showlog' => 'हा सदस्य पूर्वी प्रतिबंधित अथवा लपविल्या गेला होता.
लपविलेल्या नोंदी संदर्भाकरिता खाली उपलब्ध आहेत.',
'range_block_disabled' => 'प्रचालकांची पल्ला बंधने घालण्याची क्षमता अनुपलब्ध केली आहे.',
'ipb_expiry_invalid' => 'अयोग्य समाप्ती काळ.',
'ipb_expiry_temp' => 'लपविलेले सदस्यनाम प्रतिबंधन कायमस्वरूपी असले पाहिजे.',
-'ipb_hide_invalid' => 'हà¥\87 à¤\96ात दाबनà¥\8dयासाथि à¤\85समरà¥\8dथ: तà¥\87 सà¥\81धà¥\8dदा बदल à¤\95रनà¥\8dयाà¤\9aि सकतात.',
+'ipb_hide_invalid' => 'हà¥\87 à¤\96ात दाबणà¥\8dयासाठà¥\80 à¤\85समरà¥\8dथ; तà¥\8dयानà¥\87 à¤\85नà¥\87à¤\95 सà¤\82पादनà¥\87 à¤\95à¥\87लà¥\87लà¥\80 à¤\85सà¥\82 शकतात.',
'ipb_already_blocked' => '"$1" आधीच अवरूद्ध केलेले आहे.',
'ipb-needreblock' => '$1 आधीच प्रतिबंधित आहे . तुम्हाला त्याची सेटींग्स बदलण्याची इच्छा आहे का ?',
'ipb-otherblocks-header' => '{{PLURAL:$1|दुसरे प्रतिबंधन|इतर प्रतिबंधने}}',
'ipb_cant_unblock' => 'त्रूटी: प्रतिबंधन क्र.$1 मिळाला नाही. त्यावरील प्रतिबंधन कदाचित आधीच उठवले असेल.',
'ipb_blocked_as_range' => 'त्रूटी:अंकपत्ता IP $1 हा प्रत्यक्षपणे प्रतिबंधित केलेला नाही आणि अप्रतिबंधीत करता येत नाही.तो,अर्थात,$2पल्ल्याचा भाग म्हाणून तो प्रतिबंधित केलेला आहे,जो की अप्रतिबंधीत करता येत नाही.',
'ip_range_invalid' => 'अंकपत्ता अयोग्य टप्प्यात.',
-'ip_range_toolarge' => '/$1 पेक्षा मोठ्या Range प्रतिबंधनाची परवानगी नाह् are not allowed.',
-'proxyblocker' => 'प्रातिनिधी(प्रॉक्झी)प्रतिबंधक',
-'proxyblockreason' => 'तुमचा अंकपत्ता प्रतिबंधित केला आहे कारण तो उघड-उघड प्रतिनिधी आहे.कृपया तुमच्या आंतरजाल सेवा दात्यास किंवा तंत्रज्ञास पाचारण संपर्क करा आणि त्यांचे या गंभीर सुरक्षाप्रश्ना कडे लक्ष वेधा.',
+'ip_range_toolarge' => '/$1 पेक्षा मोठ्या रेंज प्रतिबंधनाची परवानगी नाही.',
+'proxyblocker' => 'प्रातिनिधीक(प्रॉक्झी)प्रतिबंधक',
+'proxyblockreason' => 'तुमचा अंकपत्ता प्रतिबंधित केला आहे कारण तो उघड-उघड प्रतिनिधी आहे.कृपया तुमच्या आंतरजाल सेवा दात्यास किंवा तंत्रज्ञास पाचारण संपर्क करा आणि त्यांचे या गंभीर सुरक्षाप्रश्नाकडे लक्ष वेधा.',
'sorbsreason' => '{{SITENAME}}ने वापरलेल्या DNSBL मध्ये तुमच्या अंकपत्त्याची नोंद उघड-उघड प्रतिनिधी म्हणून सूचित केली आहे.',
'sorbs_create_account_reason' => '{{SITENAME}}च्या DNSBLने तुमचा अंकपत्ता उघड-उघड प्रतिनिधी म्हणून सूचित केला आहे.तुम्ही खाते उघडू शकत नाही',
'xffblockreason' => '(X-Forwarded-For header) मधील अंकपत्ता,आपला किंवा आपण वापरत असलेल्या सर्व्हरचा,प्रतिबंधित केल्या गेला आहे.प्रतिबंधित करण्याचे मुळ कारण होते:$1',
-'cant-see-hidden-user' => 'तà¥\81मà¥\8dहà¥\80 पà¥\8dरतिबà¥\8dà¤\82धकरण्याचा प्रयत्न करत असलेले सदस्य खाते आधीपासूनच प्रतिबंधित आणि लपविले गेले आहे.
-तुमच्याकडे सदस्य लपविण्याचे अधिकार नसल्यामुळे , तुम्ही सदस्य प्रतिबंधन पाहू अथवा संपादित करू शकत नाही',
+'cant-see-hidden-user' => 'तà¥\81मà¥\8dहà¥\80 पà¥\8dरतिबà¤\82ध करण्याचा प्रयत्न करत असलेले सदस्य खाते आधीपासूनच प्रतिबंधित आणि लपविले गेले आहे.
+तुमच्याकडे सदस्य लपविण्याचे अधिकार नसल्यामुळे , तुम्ही सदस्य प्रतिबंधन पाहू अथवा संपादित करू शकत नाही.',
'ipbblocked' => 'तुमचे स्वत:चेच खाते प्रतिबंधित असल्यामुळे तुम्ही इतर सदस्यांना प्रतिबंधित किंवा अप्रतिबंधीत करू शकत नाही',
-'ipbnounblockself' => 'तुम्ही स्वतः अप्रतिबंधित करू शकत नाही',
+'ipbnounblockself' => 'तुम्ही स्वतःस अप्रतिबंधित करू शकत नाही',
# Developer tools
'lockdb' => 'विदागारास ताळे ठोका',
'unlockdb' => 'विदागाराचे ताळे उघडा',
'lockdbtext' => 'विदागारास ताळे ठोकल्याने सर्व सदस्यांची संपादन क्षमता, त्यांच्या सदस्य पसंती बदलणे,त्यांच्या पहाऱ्याच्या सूची संपादित करणे,आणि विदेत बदल घडवणाऱ्या इतर गोष्टी संस्थगित होतील.
-à¤\95à¥\83पया तà¥\81मà¥\8dहाला हà¥\87à¤\9a à¤\95रावयाà¤\9aà¥\87 à¤\86हà¥\87 à¤\86णि à¤à¤°à¤£-पà¥\8bषणा नà¤\82तर विदागाराचे ताळे उघडावयाचे आहे हे निश्चित करा.',
+à¤\95à¥\83पया तà¥\81मà¥\8dहाला हà¥\87à¤\9a à¤\95रावयाà¤\9aà¥\87 à¤\86हà¥\87 à¤\86णि à¤\85नà¥\81रà¤\95à¥\8dषणानà¤\82तर (मà¥\87à¤\82à¤\9fà¥\87ननà¥\8dस)विदागाराचे ताळे उघडावयाचे आहे हे निश्चित करा.',
'unlockdbtext' => 'विदागाराचे ताळे उघडल्याने सर्व सदस्यांची संपादन क्षमता, त्यांच्या सदस्य पसंती बदलणे,त्यांच्या पहाऱ्याच्या सूची संपादित करणे,आणि विदेत बदल घडवणाऱ्या इतर गोष्टीची क्षमता पुन्हा उपलब्ध होईल.
कृपया तुम्हाला हेच करावयाचे आहे हे निश्चित करा.',
-'lockconfirm' => 'होय,मला खरेच विदागारास ताळे ठोकायच आहे.',
+'lockconfirm' => 'होय,मला खरेच विदागारास ताळे ठोकायचे आहे.',
'unlockconfirm' => 'होय,मला खरेच विदागाराचे ताळे उघडवयाचे आहे.',
'lockbtn' => 'विदागारास ताळे ठोका',
'unlockbtn' => 'विदागारचे ताळे काढा',
'lockdbsuccesssub' => 'विदागरास ताळे यशस्वी',
'unlockdbsuccesssub' => 'विदागाराचे ताळे काढले',
'lockdbsuccesstext' => 'विदागारास ताळे ठोकण्यात आले आहे.<br />
-तà¥\81मà¤\9aà¥\8dयाà¤\95डà¥\82न à¤à¤°à¤£-पà¥\8bषण पà¥\82रà¥\8dण à¤\9dालà¥\8dया नंतर [[Special:UnlockDB|ताळे उघडण्याचे]] लक्षात ठेवा.',
+तà¥\81मà¤\9aà¥\8dयाà¤\95डà¥\82न à¤\85नà¥\81रà¤\95à¥\8dषण पà¥\82रà¥\8dण à¤\9dालà¥\8dयानंतर [[Special:UnlockDB|ताळे उघडण्याचे]] लक्षात ठेवा.',
'unlockdbsuccesstext' => 'विदागाराचे ताळे उघडण्यात आले आहे.',
'lockfilenotwritable' => 'विदा ताळे संचिका लेखनीय नाही.विदेस ताळे लावण्याकरिता किंवा उघडण्याकरिता, ती आंतरजाल विदादात्याकडून लेखनीय असावयास हवी.',
'databasenotlocked' => 'विदागारास ताळे नही',
'movepagetalktext' => "संबंधित चर्चा पृष्ठ याबरोबर स्थानांतरीत होणार नाही '''जर:'''
* तुम्ही पृष्ठ दुसऱ्या नामविश्वात स्थानांतरीत करत असाल
* या नावाचे चर्चा पान अगोदरच अस्तित्वात असेल तर, किंवा
-* à¤\96ालà¥\80ल à¤\9aà¥\87à¤\95बà¥\89à¤\95à¥\8dस तà¥\81मà¥\8dहà¥\80 à¤\95ाढà¥\82न à¤\9fाà¤\95ला तर.
+* à¤\96ालà¥\80ल à¤\9aà¥\8cà¤\95à¤\9fपà¥\87à¤\9fà¥\80 (à¤\9aà¥\87à¤\95बà¥\89à¤\95à¥\8dस) रिà¤\95ामà¥\80 ठà¥\87वलà¥\80 तर.
या बाबतीत तुम्हाला स्वतःला ही पाने एकत्र करावी लागतील.",
'movearticle' => 'पृष्ठाचे स्थानांतरण',
-'moveuserpage-warning' => "'''सावधान:''' आपण एक सदस्य पान स्थलांतरित करत आहात. कृपया लक्षात घ्या की, फक्त हे पान स्थलांतरित होइल, सदस्य नाम बदलले जणार नाही.",
-'movenologintext' => 'पान सà¥\8dथानाà¤\82तरित à¤\95रणà¥\8dयासाठà¥\80 तà¥\81मà¥\8dहाला [[Special:UserLogin|प्रवेश]] करावा लागेल.',
-'movenotallowed' => '{{SITENAME}}वरà¥\80ल पानà¥\87 सà¥\8dथानाà¤\82तरà¥\80त à¤\95रणà¥\8dयाà¤\9aà¥\80 à¤\86पलà¥\8dयापाशà¥\80 परवानगी नाही.',
-'movenotallowedfile' => 'तà¥\81मà¥\8dहाला दसà¥\8dतावà¥\88à¤\9c स्थानांतरीत करण्याची परवानगी नाही.',
-'cant-move-user-page' => 'तà¥\81मà¥\8dहाला सदसà¥\8dयाà¤\9aà¥\87 दसà¥\8dतावà¥\88à¤\9c सà¥\8dथानाà¤\82तरà¥\80त à¤\95रणà¥\8dयाà¤\9aà¥\80 परवानà¤\97à¥\80 नाहà¥\80.',
+'moveuserpage-warning' => "'''सावधान:''' à¤\86पण à¤\8fà¤\95 सदसà¥\8dय पान सà¥\8dथलाà¤\82तरित à¤\95रत à¤\86हात. à¤\95à¥\83पया लà¤\95à¥\8dषात à¤\98à¥\8dया à¤\95à¥\80, फà¤\95à¥\8dत हà¥\87 पान सà¥\8dथलाà¤\82तरित हà¥\8bà¤\87ल, सदसà¥\8dय नाम बदललà¥\87 à¤\9cाणार नाहà¥\80.",
+'movenologintext' => 'पान सà¥\8dथानाà¤\82तरित à¤\95रणà¥\8dयासाठà¥\80 तà¥\81मà¥\8dहà¥\80 नà¥\8bà¤\82दà¥\80à¤\95à¥\83त सदसà¥\8dय हवà¥\87 व तà¥\81मà¥\8dहाला [[Special:UserLogin|सनà¥\8bà¤\82द-प्रवेश]] करावा लागेल.',
+'movenotallowed' => '{{SITENAME}}वरà¥\80ल पानà¥\87 सà¥\8dथानाà¤\82तरà¥\80त à¤\95रणà¥\8dयाà¤\9aà¥\80 à¤\86पलà¥\8dयास परवानगी नाही.',
+'movenotallowedfile' => 'तà¥\81मà¥\8dहाला सà¤\82à¤\9aिà¤\95ा स्थानांतरीत करण्याची परवानगी नाही.',
+'cant-move-user-page' => 'तà¥\81मà¥\8dहाला सदसà¥\8dयपान सà¥\8dथानाà¤\82तरà¥\80त à¤\95रणà¥\8dयाà¤\9aà¥\80 परवानà¤\97à¥\80 नाहà¥\80.(à¤\89पपानावà¥\8dयतिरिà¤\95à¥\8dत)',
'cant-move-to-user-page' => 'तुम्हाला एखाद्या पानास सदस्य पानांवर (सदस्य उप-पाने सोडून) घेऊन जाण्यास परवानगी नाही.',
'newtitle' => 'नवीन शीर्षकाकडे:',
'move-watch' => 'स्रोत पान व लक्ष पानांवर निगराणी ठेवा',
'pagemovedsub' => 'स्थानांतरण यशस्वी',
'movepage-moved' => '\'\'\'"$1" ला "$2" मथळ्याखाली स्थानांतरीत केले\'\'\'',
'movepage-moved-redirect' => 'एक पुनर्निर्देशन तयार केले आहे.',
-'movepage-moved-noredirect' => 'पà¥\81नà¤\83निरà¥\8dदà¥\87शà¥\80त पान तयार à¤\95à¥\87लà¥\87लà¥\87 नाहà¥\80',
-'articleexists' => 'त्या नावाचे पृष्ठ अगोदरच अस्तित्वात आहे, किंवा तुम्ही निवडलेले
-नाव योग्य नाही आहे.
+'movepage-moved-noredirect' => 'पà¥\81नरà¥\8dनिरà¥\8dदà¥\87शन तयार à¤\95रणà¥\87 दडपणà¥\8dयात à¤\86लà¥\87 à¤\86हà¥\87.',
+'articleexists' => 'त्या नावाचे पृष्ठ अगोदरच अस्तित्वात आहे, किंवा तुम्ही निवडलेले नाव योग्य नाही.
+
कृपया दुसरे नाव शोधा.',
'cantmove-titleprotected' => 'नवे शीर्षक निर्मित करण्या पासून सुरक्षित केलेले असल्यामुळे,तुम्ही या जागी एखादे पान स्थानांतरीत करू शकत नाही.',
-'movetalk' => 'शà¤\95à¥\8dय à¤\85सलà¥\8dयास "à¤\9aरà¥\8dà¤\9aा पà¥\83षà¥\8dठ" स्थानांतरीत करा',
+'movetalk' => 'सà¤\82लà¤\97à¥\8dन "à¤\9aरà¥\8dà¤\9aा पान" स्थानांतरीत करा',
'move-subpages' => 'उपपाने स्थानांतरीत करा (जास्तीतजास्त $1)',
'move-talk-subpages' => 'चर्चा पानाची सर्व उपपाने स्थानांतरीत करा (जास्तीतजास्त $1)',
'movepage-page-exists' => '$1 पान अगोदरच अस्तित्त्वात आहे व त्याच्यावर आपोआप पुनर्लेखन करता येणार नाही.',
'movereason' => 'कारण:',
'revertmove' => 'पूर्वपदास न्या',
'delete_and_move' => 'वगळा आणि स्थानांतरित करा',
-'delete_and_move_text' => '==वगळण्याची आवशकता==
+'delete_and_move_text' => '==वà¤\97ळणà¥\8dयाà¤\9aà¥\80 à¤\86वशà¥\8dयà¤\95ता==
-लक्ष्यपान "[[:$1]]" आधीच अस्तित्वात आहे.स्थानांतराचा मार्ग मोकळाकरण्या करिता तुम्हाला ते वगळावयाचे आहे काय?',
+लक्ष्यपान "[[:$1]]" आधीच अस्तित्वात आहे.स्थानांतराचा मार्ग मोकळा करण्याकरिता तुम्हाला ते वगळावयाचे आहे काय?',
'delete_and_move_confirm' => 'होय, पान वगळा',
'delete_and_move_reason' => '"[[$1]]" पासून वगळून स्थानांतर केले.',
'selfmove' => 'स्रोत आणि लक्ष्य पाने समान आहेत; एखादे पान स्वत:च्याच जागी स्थानांतरीत करता येत नाही.',
'immobile-source-namespace' => 'नामविश्व "$1" मधील पाने हलवता आली नाहीत.',
'immobile-target-namespace' => 'नामविश्व "$1" मध्ये पाने हलवता आली नाहीत.',
-'immobile-target-namespace-iw' => 'पà¥\81ढà¥\87 à¤\9aाल à¤\95रणà¥\8dयासाठà¥\80 हा विà¤\95िà¤\85à¤\82तरà¥\8dà¤\97त दà¥\81वा यà¥\8bà¤\97à¥\8dय लà¤\95à¥\8dष नाहà¥\80',
+'immobile-target-namespace-iw' => 'पान सà¥\8dथानाà¤\82तरासाठà¥\80, हा विà¤\95िà¤\9aा à¤\85à¤\82तरà¥\8dà¤\97त दà¥\81वा यà¥\8bà¤\97à¥\8dय लà¤\95à¥\8dषà¥\8dय नाहà¥\80.',
'immobile-source-page' => 'हे पान हलवता येत नाही',
'immobile-target-page' => 'लक्ष्य मथळा हलवता येत नाही.',
'bad-target-model' => 'तुमचे ईच्छित स्थानक हे वेगळे आशय नमुना (कंटेंट मॉडेल) वापरते. $1 चे $2 मध्ये रुपांतर करु शकत नाही.',
'exif-lightsource-255' => 'इतर प्रकाश स्रोत',
# Flash modes
-'exif-flash-fired-0' => 'Flash did not fire
-फ्लॅशदिवा प्रज्ज्वलित झाला नाही',
+'exif-flash-fired-0' => 'फ्लॅशदिवा प्रज्ज्वलित झाला नाही',
'exif-flash-fired-1' => 'क्षणदीप(फ्लेशदिवा)प्रज्ज्वलित झाला',
'exif-flash-return-0' => 'लखलखाट (फ्लॅश) - प्रकाश परावर्तन नोंदणीची सुविधा अनुपलब्ध',
'exif-flash-return-2' => 'लखलखाटाच्या (फ्लॅश) परावर्तन प्रकाशाची नोंद झाली नाही',
'exif-filesource-3' => 'स्थिरचित्र अंकीय छाउ (डिजीटल स्टील कॅमेरा)',
-'exif-scenetype-1' => 'डायरà¥\87à¤\95à¥\8dà¤\9fलà¥\80 छायाचित्रीत चित्र',
+'exif-scenetype-1' => 'थà¥\87à¤\9f छायाचित्रीत चित्र',
'exif-customrendered-0' => 'नियमीत प्रक्रीया',
-'exif-customrendered-1' => 'à¤\86वडà¥\80नà¥\81सार प्रक्रीया',
+'exif-customrendered-1' => 'पारà¤\82पारिà¤\95 प्रक्रीया',
-'exif-exposuremode-0' => 'सà¥\8dवयà¤\82à¤\9aलित à¤\9bायाà¤\82à¤\95न',
+'exif-exposuremode-0' => 'सà¥\8dवयà¤\82à¤\9aलित à¤\85नावरण',
'exif-exposuremode-1' => 'अस्वयंचलित छायांकन',
'exif-exposuremode-2' => 'स्वयंसिद्ध कंस',
'exif-whitebalance-0' => 'ऍटो व्हाईट बॅलेन्स',
'exif-whitebalance-1' => 'मॅन्यूअल व्हाईट बॅलेन्स',
-'exif-scenecapturetype-0' => 'दरà¥\8dà¤\9cा',
+'exif-scenecapturetype-0' => 'दरà¥\8dà¤\9cà¥\87दार',
'exif-scenecapturetype-1' => 'आडवे',
'exif-scenecapturetype-2' => 'उभे',
'exif-scenecapturetype-3' => 'रात्रीचे दृश्य',
'exif-contrast-2' => 'कठीण',
'exif-saturation-0' => 'सर्व साधारण',
-'exif-saturation-1' => 'à¤\95मà¥\80 सà¥\85à¤\9aà¥\82रà¥\87शन',
-'exif-saturation-2' => 'à¤\9cासà¥\8dत सà¥\85à¤\9aà¥\82रà¥\87शन',
+'exif-saturation-1' => 'निमà¥\8dन सà¤\82तà¥\83पà¥\8dति',
+'exif-saturation-2' => 'à¤\89à¤\9aà¥\8dà¤\9a सà¤\82तà¥\83पà¥\8dति',
'exif-sharpness-0' => 'सर्वसाधारण',
'exif-sharpness-1' => 'मृदू',
'exif-gpslongitude-w' => 'पश्चिम रेखांश',
# Pseudotags used for GPSAltitudeRef
-'exif-gpsaltitude-above-sealevel' => 'समुद्रपातळीच्यावर $1 {{PLURAL:$1|मीटर|मीटर}}',
+'exif-gpsaltitude-above-sealevel' => 'समुद्रपातळीच्यावर $1 {{PLURAL:$1|मीटर}}',
'exif-gpsaltitude-below-sealevel' => 'समुद्रपातळीच्याखाली $1 {{PLURAL:$1|मीटर|मीटर}}',
'exif-gpsstatus-a' => 'मोजणी काम चालू आहे',
# action=watch/unwatch
'confirm-watch-button' => 'ठीक आहे',
'confirm-watch-top' => 'हे पान तुमच्या पहारा सूचीमध्ये टाकायचे?',
-'confirm-unwatch-button' => 'ठà¥\80à¤\95',
+'confirm-unwatch-button' => 'ठिà¤\95 à¤\86हà¥\87',
'confirm-unwatch-top' => 'हे पान तुमच्या नित्य पहाण्याच्या सूचीतून काढायचे?',
# Multipage image navigation
'version-hook-subscribedby' => 'वर्गणीदार',
'version-version' => '($1)',
'version-license' => 'मिडियाविकि परवाना',
+'version-ext-license' => 'परवाना',
+'version-ext-colheader-name' => 'विस्तारक',
+'version-ext-colheader-version' => 'आवृत्ती',
+'version-ext-colheader-license' => 'परवाना',
+'version-ext-colheader-description' => 'वर्णन',
'version-poweredby-credits' => "हा विकी '''[https://www.mediawiki.org/ मीडियाविकी]'''द्वारे संचालित आहे, प्रताधिकारित © २००१-$1 $2.",
'version-poweredby-others' => 'इतर',
'version-poweredby-translators' => 'ट्रांसलेटविकि.नेट वरील भाषांतरकार',
'expand_templates_generate_xml' => 'XML चा पार्स (parse) वृक्ष दाखवा',
'expand_templates_preview' => 'झलक',
+# Unknown messages
+'uploadinvalidxml' => 'अपभारीत संचिकेतील XML पार्स करता आले नाही.',
);
'tog-hidepatrolled' => 'Motlàtìs tlapîpialli tlayèktlàlilistli ìpan welok tlapảtlalistli',
'tog-newpageshidepatrolled' => 'Mokintlàtis tlapîpialtlaìxtlapaltìn ìwikpa ìtlapòpòwaltekpànal in yâyankuik tlaìxtlapaltìn',
'tog-extendwatchlist' => 'Mìxmảnas in tlapòpòwaltekpàntlachialli ìka mỏtas nochi in tlapảtlalistli, âmò in san okachi yankuik.',
-'tog-usenewrc' => 'Quimolōloāz in tlapatlaliztli yancuīc tlapatlaliztli āmapan īhuān in tlachiyaliztli tlapōhualāmapan (monequi JavaScript)',
+'tog-usenewrc' => 'Molōloāzqueh in tlapatlaliztli in yancuīc tlapatlaliztli āmapan īhuān in tlachiyaliztli tlapōhualāmapan (monequi JavaScript)',
'tog-showtoolbar' => 'Motlaīxtlatīz in tlachihchīhualōni pāntli',
-'tog-editondblclick' => 'Tiquimpatlāz in zāzaniltin intlā ōme tiquimpachoa',
+'tog-editondblclick' => 'Tiquimpatlāz in zāzanilli intlā ōme tiquimpachoa',
'tog-showtoc' => 'Tiquittāz in tlein cah zāzotlahcuilōlco',
'tog-rememberpassword' => 'Ticpiyāz moMotlatequitiltilīltōca īhuān motlahtōlichtacāyo inīn chīuhpōhualhuazco (īxquich {{PLURAL:$1|tōnalli}})',
'tog-watchcreations' => 'Moaquiāz in āmatl mā niquinyōcoya īhuān in tlahcuilōlli mā niquinquetza īpan notlachiyaliz',
'createaccount' => 'Ticchīhuāz cē cuentah',
'gotaccount' => "¿Ye ticpiya cē cuentah? '''$1'''.",
'gotaccountlink' => 'Ximocalaqui',
-'createaccountmail' => 'Ticnemītīz ahmo cemihcac zāzoichtacātlahtōlli nō in tiquēhualtīz in maltzinteyōtl nonetitlanizyeyān',
+'createaccountmail' => 'Ticnemītīz ahmo cemihcac zāzoichtacātlahtōlli nō in tiquēhualtīz in maltzinteyōtl monetitlanizyeyān',
'createaccountreason' => 'Tlèka:',
'badretype' => 'Ahneneuhqui motlahtōlichtacāyo.',
'userexists' => 'In tlatequitiltilīltōcāitl in ōquipehpen ye ia.
'newpassword' => 'Yancuīc motlahtōlichtacayo:',
'retypenew' => 'Occeppa xiquihcuiloa yancuīc motlahtōlichtacayo:',
'resetpass_submit' => 'Xicpatlāz motlahtōlichtacāyo auh xicalaquīz',
-'changepassword-success' => 'In ichtacātlahtōlli cualli ōtlapatlalo',
+'changepassword-success' => 'Mochtacātlahtōl cualli ōtlapatlalo.',
'resetpass_forbidden' => 'Tlahtōlichtacayōtl ahmo mohuelītih mopatlah',
'resetpass-submit-loggedin' => 'Ticpatlāz motlahtōlichtacāyo',
'resetpass-submit-cancel' => 'Ticcuepāz',
'contributions-title' => 'Tlatequitiltilīlli $1 ītlahcuilōl',
'mycontris' => 'Notlahcuilōl',
'contribsub2' => '$1 ($2)',
-'uctop' => '(ahco)',
+'uctop' => '(āxcān tlapatlaliztli)',
'month' => 'Īhuīcpa mētztli (auh achtopa):',
'year' => 'Xiuhhuīcpa (auh achtopa):',
'version' => 'Machiyōtzin',
'version-specialpages' => 'Nònkuâkìskàtlaìxtlapaltìn',
'version-other' => 'Occē',
-'version-version' => '(Machiyōtzin $1)',
+'version-version' => '($1)',
'version-software-version' => 'Machiyōtzin',
# Special:FileDuplicateSearch
# General errors
'error' => 'Chhò-gō·',
'databaseerror' => 'Chu-liāu-khò· chhò-gō·',
+'databaseerror-query' => '揣:',
+'databaseerror-function' => '功能:',
+'laggedslavemode' => "'''提醒:'''頁內容可能毋是上新的。",
'readonly' => 'Chu-liāu-khò· só tiâu leh',
'enterlockreason' => 'Phah beh hong-só ê lí-iû, pau-koah ko͘-kè siáⁿ-mi̍h sî-chūn ē kái-tû hong-só.',
'readonlytext' => 'Chu-liāu-khò· hiān-chú-sî só tiâu leh, bô khai-hòng hō· lâng siu-kái. Che tāi-khài sī in-ūi teh pān î-siu khang-khòe, oân-sêng liáu-āu èng-tong tō ē hôe-ho̍k chèng-siông. Hū-chek ê hêng-chèng jîn-oân lâu chit-ê soat-bêng: $1',
Che it-poaⁿ sī in-ūi koè-sî ê cheng-chha ia̍h sī le̍k-sú liân-kiat ê ia̍h í-keng hông thâi tiàu.
Nā m̄-sī hit chióng chêng-hêng, lí khó-lêng tú tio̍h nńg-thé ê chhò-ngō͘. Chhiáⁿ pò hō͘ chi̍t ūi [[Special:ListUsers/sysop|koán-lí-goân]], ūi liân-kiat hiâ khì lâu thong-ti .',
+'missingarticle-rev' => '(修訂版本#:$1)',
+'missingarticle-diff' => '(精差:$1,$2)',
+'readonly_lag' => '佇附屬的資料庫更新到主要資料庫資料的時陣,資料庫會自動鎖定。',
'internalerror' => 'Loē-pō͘ ê chhò-ngō͘',
'internalerror_info' => 'Loē-pō͘ ê chhò-ngō͘: $1',
'fileappenderrorread' => 'Ka-ji̍p(append) ê sî bô-hoat-tō͘ thak "$1".',
'unexpected' => 'Koài-koài ê pió-tat: "$1"="$2"。',
'formerror' => 'Chhò-gō·: bô-hoat-tō· kā pió sàng chhut khì.',
'badarticleerror' => 'Bē-tàng tiàm chit ia̍h chip-hêng chit ê tōng-chok.',
-'cannotdelete' => 'Bô-hoat-tō· kā hit ê ia̍h a̍h-sī iáⁿ-siōng thâi tiāu. (Khó-lêng pa̍t-lâng í-keng kā thâi tiāu ah.)',
+'cannotdelete' => 'Bô-hoat-tō· kā hit ê ia̍h a̍h-sī iáⁿ-siōng 「$1」 thâi tiāu. (Khó-lêng pa̍t-lâng í-keng kā thâi tiāu ah.)',
+'cannotdelete-title' => '無法度共"$1"這頁刣掉。',
'badtitle' => 'M̄-chiâⁿ piau-tê',
'badtitletext' => 'Iau-kiû ê piau-tê sī bô-hāu ê, khang ê, a̍h-sī liân-kiat chhò-gō· ê inter-language/inter-wiki piau-tê.',
'perfcached' => 'Ē-kha ê chu-liāu tùi lâi--ê, só·-í bī-pit oân-choân hoán-èng siōng sin ê chōng-hóng. A maximum of {{PLURAL:$1|one result is|$1 results are}} available in the cache.',
'rows' => 'Chōa:',
'columns' => 'Nôa',
'searchresultshead' => 'Chhiau-chhōe kiat-kó ê siat-tēng',
-'resultsperpage' => '1 ia̍h hián-sī kúi kiāⁿ:',
'recentchangesdays' => 'Hián-sī kúi ji̍t chòe-kīn ê kái-piàn:',
'recentchangesdays-max' => 'siōng-choē $1 {{PLURAL:$1|kang|kang}}',
'recentchangescount' => 'Hián-sī kúi tiâu chòe-kīn ê kái-piàn:',
'recentchanges-label-plusminus' => 'Sidestørrelsen kan endres med dette antallet bytes',
'recentchanges-legend-heading' => "'''Tegnforklaring:'''",
'recentchanges-legend-newpage' => '(se også [[Special:NewPages|liste av nye sider]])',
+'recentchanges-legend-plusminus' => '«(±123)»',
'rcnotefrom' => "Nedenfor er endringene siden '''$2''' (opp til '''$1''' vises).",
'rclistfrom' => 'Vis nye endringer med start fra $1',
'rcshowhideminor' => '$1 mindre endringer',
'expand_templates_generate_rawhtml' => 'Vis ubehandlet HTML',
'expand_templates_preview' => 'Forhåndsvisning',
+# Unknown messages
+'uploadinvalidxml' => 'XML-en i den opplastede filen kunne ikke tolkes.',
);
* @author Ganesh Paudel
* @author Indiver
* @author Kaganer
+ * @author Krish Dulal
* @author Lkhatiwada
* @author RajeshPandey
* @author Reedy
'tog-justify' => 'अनुच्छेद जस्टिफाइ(justify) गर्ने',
'tog-hideminor' => 'भर्खरका मामूली सम्पादनहरुलाई लुकाउने',
'tog-hidepatrolled' => 'गस्ती(patrolled)सम्पादनहरु हालका परिवर्तनहरुमा लुकाउने',
-'tog-newpageshidepatrolled' => 'गस्ती(patrolled) पृष्ठहरु नयाँ पृष्ठ सूचीबाट लुकाउने',
+'tog-newpageshidepatrolled' => 'गस्ती गरिएका पृष्ठहरू नयाँ पृष्ठ सूचीबाट लुकाउने',
'tog-extendwatchlist' => 'निगरानी सूचीलाई सबै परिवर्तनहरू देखाउने गरी बढाउने , हालैको बाहेक',
'tog-usenewrc' => 'पृष्ठका भर्खरका परिवर्तन र अवलोकन सूचीको आधारमा सामूहिक परिवर्तनहरु ( जाभास्क्रिप्ट चाहिन्छ)',
'tog-numberheadings' => 'शीर्षकहरुलाई स्वत:अङ्कित गर्नुहोस्',
'tog-rememberpassword' => 'यस ब्राउजरमा मेरो प्रवेशलाई सम्झनुहोस् (अधिकतम $1 {{PLURAL:$1|दिन|दिनहरु}} सम्म)',
'tog-watchcreations' => 'मेरो निगरानी सूचीमा मैले सृजना गरेको पृष्ठ र अपलोड जोड्ने',
'tog-watchdefault' => 'मैले सम्पादन गरेको पृष्ठ र फाइल निगरानी सूचीमा थप्ने',
-'tog-watchmoves' => 'मà¥\88लà¥\87 सारà¥\87à¤\95à¥\8b पà¥\83षà¥\8dठहरà¥\81 र फाà¤\87लहरà¥\81लाई निगरानी सूचीमा थप्ने',
-'tog-watchdeletion' => 'मà¥\88लà¥\87 हà¤\9fाà¤\8fà¤\95à¥\8b पà¥\83षà¥\8dठहरà¥\81 र फाà¤\87लहरà¥\81लाई निगरानी सूचीमा थप्ने',
+'tog-watchmoves' => 'मà¥\88लà¥\87 सारà¥\87à¤\95ा पà¥\83षà¥\8dठहरà¥\82 र फाà¤\87लहरà¥\82लाई निगरानी सूचीमा थप्ने',
+'tog-watchdeletion' => 'मà¥\88लà¥\87 हà¤\9fाà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82 र फाà¤\87लहरà¥\82लाई निगरानी सूचीमा थप्ने',
'tog-minordefault' => 'सबै सम्पादनहरुलाई पूर्वनिर्धारित रुपमा सामान्य चिनो लगाउने',
'tog-previewontop' => 'सम्पादन सन्दुक अगि पूर्वरुप देखाउने',
'tog-previewonfirst' => 'पहिलो सम्पादनमा पूर्वरुप देखाउने',
'tog-enotifwatchlistpages' => 'मेरो निगरानी सूचीमा रहेका पृष्ठ अथवा फाइलहरु परिवर्तन गरिए मलाई ई-मेल गरियोस्',
'tog-enotifusertalkpages' => 'मेरो प्रयोगकर्ता वार्ता पृष्ठ परिवर्तन गरिए मलाई ई-मेल गर्ने',
-'tog-enotifminoredits' => 'पà¥\83षà¥\8dठहरà¥\81 र फाà¤\87लहरà¥\81à¤\95à¥\8b सामान्य सम्पादन भएमा पनि मलाई ई-मेल गरियोस्',
+'tog-enotifminoredits' => 'पà¥\83षà¥\8dठहरà¥\82 र फाà¤\87लहरà¥\82मा सामान्य सम्पादन भएमा पनि मलाई ई-मेल गरियोस्',
'tog-enotifrevealaddr' => 'जानकारी इ-मेलहरुमा मेरो इ-मेल खुलाउने',
'tog-shownumberswatching' => 'निगरानी गरिरहेका प्रयोगकर्ताहरुको संख्या देखाउने',
'tog-oldsig' => 'वर्तमान हस्ताक्षर:',
'december-date' => 'डिसेम्बर $1',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|शà¥\8dरà¥\87णà¥\80|शà¥\8dरà¥\87णà¥\80हरà¥\81}}',
+'pagecategories' => '{{PLURAL:$1|शà¥\8dरà¥\87णà¥\80|शà¥\8dरà¥\87णà¥\80हरà¥\82}}',
'category_header' => '"$1" श्रेणीमा भएका लेखहरू',
'subcategories' => 'उपश्रेणीहरु',
'category-media-header' => '"$1" श्रेणीमा रहेका मिडियाहरू',
'category-empty' => "''यो श्रेणीमा हाल कुनै पृष्ठ या मिडियाहरु रहेका छैनन् ।''",
-'hidden-categories' => '{{PLURAL:$1|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b शà¥\8dरà¥\87णà¥\80|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81}}',
-'hidden-category-category' => 'लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81',
-'category-subcat-count' => '{{PLURAL:$2|यà¥\8b शà¥\8dरà¥\87णà¥\80मा निमà¥\8dन à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\81 मातà¥\8dर à¤\9bनà¥\8d।|यà¥\8b शà¥\8dरà¥\87णà¥\80à¤\95à¥\8b निमà¥\8dन {{PLURAL:$1|à¤\89पशà¥\8dरà¥\87णà¥\80|$1 à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\81}}, $2 à¤\95à¥\81ल मधà¥\8dयà¥\87 शà¥\8dरà¥\87णà¥\80हरà¥\81 छन् ।}}',
+'hidden-categories' => '{{PLURAL:$1|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b शà¥\8dरà¥\87णà¥\80|लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82}}',
+'hidden-category-category' => 'लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82',
+'category-subcat-count' => '{{PLURAL:$2|यà¥\8b शà¥\8dरà¥\87णà¥\80मा निमà¥\8dन à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\82 मातà¥\8dर à¤\9bनà¥\8d।|यà¥\8b शà¥\8dरà¥\87णà¥\80à¤\95à¥\8b निमà¥\8dन {{PLURAL:$1|à¤\89पशà¥\8dरà¥\87णà¥\80|$1 à¤\89पशà¥\8dरà¥\87णà¥\80हरà¥\82}}, $2 à¤\95à¥\81ल मधà¥\8dयà¥\87 शà¥\8dरà¥\87णà¥\80हरà¥\82 छन् ।}}',
'category-subcat-count-limited' => 'यो श्रेणीको निम्न {{PLURAL:$1|उपश्रेणी|$1 उपश्रेणीहरु}} छ।',
-'category-article-count' => '{{PLURAL:$2|यà¥\8b शà¥\8dरà¥\87णà¥\80मा à¤\8fà¤\95 मातà¥\8dर पà¥\83षà¥\8dठरहà¥\87à¤\95à¥\8b à¤\9b।|à¤\95à¥\81ल $2 मधà¥\8dयà¥\87 यà¥\8b शà¥\8dरà¥\87णà¥\80मा {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 पà¥\83षà¥\8dठहरà¥\81}} रहेका छन् । }}',
-'category-article-count-limited' => 'निमà¥\8dन {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 पà¥\83षà¥\8dठहरà¥\81}} यस श्रेणीमा रहेको ।',
+'category-article-count' => '{{PLURAL:$2|यà¥\8b शà¥\8dरà¥\87णà¥\80मा à¤\8fà¤\95 मातà¥\8dर पà¥\83षà¥\8dठरहà¥\87à¤\95à¥\8b à¤\9b।|à¤\95à¥\81ल $2 मधà¥\8dयà¥\87 यà¥\8b शà¥\8dरà¥\87णà¥\80मा {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 पà¥\83षà¥\8dठहरà¥\82}} रहेका छन् । }}',
+'category-article-count-limited' => 'निमà¥\8dन {{PLURAL:$1|पà¥\83षà¥\8dठ|$1 पà¥\83षà¥\8dठहरà¥\82}} यस श्रेणीमा रहेको ।',
'category-file-count' => '{{PLURAL:$2|यो श्रेणीमा निम्न फाइल मात्र छ ।|निम्न श्रेणीमा {{PLURAL:$1|फाइल|$1 फाइलहरु}} , कुल $2 मध्ये रहेको ।}}',
'category-file-count-limited' => 'निम्न {{PLURAL:$1|फाइल|$1 फाइलहरु}} यस श्रेणीमा रहेको ।',
'listingcontinuesabbrev' => 'निरन्तरता...',
'aboutpage' => 'Project:बारेमा',
'copyright' => 'सामाग्री $1 अनुसार उपलब्ध छ, खुलाइएको अवस्था बाहेकको हकमा ।',
'copyrightpage' => '{{ns:project}}:प्रतिलिपी अधिकारहरु',
-'currentevents' => 'हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\81',
-'currentevents-url' => 'Project:हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\81',
+'currentevents' => 'हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\82',
+'currentevents-url' => 'Project:हालà¥\88à¤\95ा à¤\98à¤\9fनाहरà¥\82',
'disclaimers' => 'अस्विकारोक्तिहरु',
'disclaimerpage' => 'Project:सामान्य अस्वीकारोक्ति',
'edithelp' => 'सम्पादन सहायता',
'youhavenewmessages' => 'तपाईंको लागि ($2) मा $1 छ ।',
'youhavenewmessagesfromusers' => 'तपाईंको लागि {{PLURAL:$3|प्रयोगकर्ता|$3 प्रयोगकर्ताहरु}} ($2) बाट $1',
'youhavenewmessagesmanyusers' => 'तपाईँलाई धेरै प्रयोगकर्ताहरू($2) बाट $1 छ ।',
-'newmessageslinkplural' => '{{PLURAL:$1|नयाà¤\81 सनà¥\8dदà¥\87श|नयाँ सन्देशहरू}}',
+'newmessageslinkplural' => '{{PLURAL:$1|à¤\8fà¤\89à¤\9fा नयाà¤\81 सनà¥\8dदà¥\87श|999=नयाँ सन्देशहरू}}',
'newmessagesdifflinkplural' => 'अन्तिम {{PLURAL:$1|सम्पादन|सम्पादनहरू}}',
'youhavenewmessagesmulti' => 'तपाईंको लागि $1 मा नयाँ सन्देशहरू छन्',
'editsection' => 'सम्पादन',
'userlogin' => 'प्रवेश गर्ने / नयाँ खाता बनाउने',
'userloginnocreate' => 'लग इन',
'logout' => 'निर्गमन',
-'userlogout' => 'निरà¥\8dà¤\97मन (लà¤\97 à¤\86à¤\89à¤\89)',
+'userlogout' => 'निरà¥\8dà¤\97मन (लà¤\97 à¤\86à¤\89à¤\9f)',
'notloggedin' => 'प्रवेश (लग ईन) नगरिएको',
'userlogin-noaccount' => 'के खाता छैन ?',
'userlogin-joinproject' => '{{SITENAME}} मा खाता खोल्नुहोस् ।',
'semiprotectedpagewarning' => "'''सूचना:''' यो पृष्ठलाई सुरक्षित गरिएको हुँदा दर्ता भएका प्रयोगकर्ताहरुले मात्र यसलाई सम्पादन गर्न सक्छन्। संदर्भको लागि नविनतम लग प्रविष्टि तल दिइएको छ:",
'cascadeprotectedwarning' => "'''चेतावनी:''' यस पृष्ठलाई सुरक्षित गरिएको छ यसकारण संशोधन प्रबन्धनको विशेषाधिकार प्राप्त प्रयोगकर्ताले मात्र सम्पादन गर्न सक्नेछन् किन भनें यो {{PLURAL:$1|पृष्ठ|पृष्ठहरु}}को सुरक्षित निम्न सुचिमा सुरक्षित छ :",
'titleprotectedwarning' => "'''चेतावनी:''' यो पृष्ठलाई सुरक्षित गरिएकोछ र यसलाई सृजना गर्न [[Special:ListGroupRights|विशेषाधिकार]] चाहिन्छ । संदर्भको लागि नवीनतम लग प्रविष्टि तल दिइएको छ:",
-'templatesused' => 'यस पà¥\83षà¥\8dठमा पà¥\8dरयà¥\8bà¤\97 à¤à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(नमà¥\82ना)हरà¥\81}} :',
-'templatesusedpreview' => 'यस पà¥\83षà¥\8dठमा पà¥\8dरयà¥\8bà¤\97 à¤à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(नमà¥\82ना)हरà¥\81}} :',
+'templatesused' => 'यस पà¥\83षà¥\8dठमा पà¥\8dरयà¥\8bà¤\97 à¤à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(ढाà¤\81à¤\9aा)हरà¥\82}} :',
+'templatesusedpreview' => 'यस पà¥\83षà¥\8dठमा पà¥\8dरयà¥\8bà¤\97 à¤à¤\8fà¤\95ा {{PLURAL:$1|Template|à¤\9fà¥\87मà¥\8dपà¥\8dलà¥\87à¤\9f(ढाà¤\81à¤\9aा)हरà¥\82}} :',
'templatesusedsection' => '{{PLURAL:$1|ढाँचा प्रयोग गरिएकोछ|ढाँचाहरु प्रयोग गरिएकाछन्}} यस खण्डमा:',
'template-protected' => '(सुरक्षित)',
'template-semiprotected' => '(अर्ध-सुरक्षित)',
-'hiddencategories' => 'यà¥\8b पà¥\83षà¥\8dठनिमà¥\8dन {{PLURAL:$1|1 लà¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b शà¥\8dरà¥\87णà¥\80|$1 लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81}}को सदस्य हो :',
+'hiddencategories' => 'यà¥\8b पà¥\83षà¥\8dठनिमà¥\8dन {{PLURAL:$1|1 लà¥\81à¤\95ाà¤\87à¤\8fà¤\95à¥\8b शà¥\8dरà¥\87णà¥\80|$1 लà¥\81à¤\95ाà¤\87à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82}}को सदस्य हो :',
'edittools' => '<!-- Text here will be shown below edit and upload forms. -->',
'edittools-upload' => '-',
'nocreatetext' => '{{SITENAME}} ले नयाँ पृष्ठ सृजना गर्न सक्ने क्षमतामा रोक लगाएको छ।
# Parser/template warnings
'expensive-parserfunction-warning' => "'''चेतावनी:''' यस पृष्टका अति धेरै संख्याका महँगा पार्सर फंक्सन कल्स (expensive parser function calls) छन्।
यसमा $2 भन्दा कम {{PLURAL:$2|कल|कल्स}} हुनुपर्छ, यहाँ {{PLURAL:$1|अहिले $1 कल छ|अहिले $1 कल्स छ्न्}}.",
-'expensive-parserfunction-category' => "à¤\85ति धà¥\87रà¥\87 मà¥\87हनत परà¥\8dनà¥\87 '''पारà¥\8dसर फà¤\99à¥\8dसन à¤\95ल'''हरà¥\81 à¤à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81",
+'expensive-parserfunction-category' => "à¤\85ति धà¥\87रà¥\88 मà¥\87हनत परà¥\8dनà¥\87 '''पारà¥\8dसर फà¤\99à¥\8dसन à¤\95ल'''हरà¥\82 à¤à¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82",
'post-expand-template-inclusion-warning' => "'''चेतावनी:''' समेट्नुपर्ने टेम्प्लेट(नमुना) आकार अति ठूलो छ।
केही टेम्प्लेटहरु(नमुनाहरु) समेटिने छैनन् ।",
'post-expand-template-inclusion-category' => 'पृष्ठहरु जहाँ समेटिएको टेम्पलेट आकार हुनुपर्ने भन्दा बढि छ ।',
'viewprevnext' => 'हेर्नुहोस् ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "''' \"[[:\$1]]\" नाम गरेको पृष्ठ यो विकीमा रहेको छ'''",
'searchmenu-new' => "'''यस विकिमा \"[[:\$1]]\" शीर्षक भएको पृष्ठ बनाउनुहोस् !'''",
-'searchprofile-articles' => 'सामà¤\97à¥\8dरà¥\80 पà¥\83षà¥\8dठहरà¥\81',
+'searchprofile-articles' => 'सामà¤\97à¥\8dरà¥\80 पà¥\83षà¥\8dठहरà¥\82',
'searchprofile-project' => 'सहायता र आयोजना पृष्ठहरु',
'searchprofile-images' => 'मल्टिमिडिया(श्रव्य दृश्य)',
'searchprofile-everything' => 'सब थोक',
'prefs-labs' => 'प्रयोगशाला गुणहरु',
'prefs-user-pages' => 'प्रयोगकर्ता पृष्ठहरू',
'prefs-personal' => 'प्रयोगकर्ताको विवरण',
-'prefs-rc' => 'नयाà¤\81 परिवरà¥\8dतनहरà¥\81',
+'prefs-rc' => 'नयाà¤\81 परिवरà¥\8dतनहरà¥\82',
'prefs-watchlist' => 'अवलोकन पृष्ठ',
'prefs-watchlist-days' => 'निगरानी सूचीमा देखाउन दिनहरु:',
'prefs-watchlist-days-max' => 'धेरैमा $1 {{PLURAL:$1|दिन|दिन}}',
# Recent changes
'nchanges' => '$1 {{PLURAL:$1|परिवर्तन|परिवर्तनहरु}}',
'enhancedrc-history' => 'इतिहास',
-'recentchanges' => 'नयाà¤\81 परिवरà¥\8dतनहरà¥\81',
+'recentchanges' => 'नयाà¤\81 परिवरà¥\8dतनहरà¥\82',
'recentchanges-legend' => 'हालैको परिवर्तन विकल्पहरु',
'recentchanges-summary' => 'विकिका भर्खरका परिवर्तनहरुलाई यस पृष्ठमा पहिल्याउने',
'recentchanges-feed-description' => 'यो फिडमा रहेको विकीको सवैभन्दा अन्तिम परिवर्तनहरुको जानकारी राख्नुहोस्',
'statistics-header-views' => 'तथ्याङ्क देखाउनुहोस्',
'statistics-header-users' => 'प्रयोगकर्ता तथ्याङ्कहरु',
'statistics-header-hooks' => 'अन्य तथ्याङ्कहरु',
-'statistics-articles' => 'सामà¤\97à¥\8dरà¥\80 पà¥\83षà¥\8dठहरà¥\81',
+'statistics-articles' => 'सामà¤\97à¥\8dरà¥\80 पà¥\83षà¥\8dठहरà¥\82',
'statistics-pages' => 'पृष्ठहरु',
'statistics-pages-desc' => 'विकिका सबै पृष्ठहरु , वार्तापका पृष्ठहरु समेत , रिडाइरेक्ट , इत्यादि ।',
'statistics-files' => 'उर्ध्वभरण गरिएका फाइलहरु',
'nimagelinks' => '$1 {{PLURAL:$1|पृष्ठ|पृष्ठहरु}}माथि प्रयोग गरिएको',
'ntransclusions' => '$1 {{PLURAL:$1पृष्ठमा प्रयोग गरिएको|पृष्ठहरुमा प्रयोग गरिएका}}',
'specialpage-empty' => 'यो पृष्ठ खाली छ।',
-'lonelypages' => 'à¤\85नाथ पà¥\83षà¥\8dठहरà¥\81',
+'lonelypages' => 'à¤\85नाथ पà¥\83षà¥\8dठहरà¥\82',
'uncategorizedpages' => 'श्रेणीकरण नभएका पृष्ठहरु',
-'uncategorizedcategories' => 'शà¥\8dरà¥\87णà¥\80à¤\95रण नà¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81',
+'uncategorizedcategories' => 'शà¥\8dरà¥\87णà¥\80à¤\95रण नà¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82',
'uncategorizedimages' => 'श्रेणीकरण नभएका फाइलहरु',
'uncategorizedtemplates' => 'श्रेणीकरण नभएका टेम्प्लेटहरु',
-'unusedcategories' => 'पà¥\8dरयà¥\8bà¤\97 नà¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81',
+'unusedcategories' => 'पà¥\8dरयà¥\8bà¤\97 नà¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82',
'unusedimages' => 'प्रयोग नभएका फाइलहरु',
'popularpages' => 'धेरै रूचाईएका पृष्ठहरू',
-'wantedcategories' => 'माà¤\97 à¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\81',
-'wantedpages' => 'à¤\96à¥\8bà¤\9cिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\81',
+'wantedcategories' => 'माà¤\97 à¤à¤\8fà¤\95ा शà¥\8dरà¥\87णà¥\80हरà¥\82',
+'wantedpages' => 'à¤\96à¥\8bà¤\9cिà¤\8fà¤\95ा पà¥\83षà¥\8dठहरà¥\82',
'wantedpages-badtitle' => 'नतिजा सूचीमा अमान्य शीर्षक:$1',
'wantedfiles' => 'माग भएका फाइलहरु',
'wantedtemplates' => 'माग भएका टेम्प्लेटहरु',
'mostlinked' => 'सबैभन्दा बढि लिंक भएको पृष्ठ',
-'mostlinkedcategories' => 'सबै भन्दा बढी जोडिएको श्रेणीहरु',
+'mostlinkedcategories' => 'सबैभन्दा बढी लिंक भएका श्रेणीहरू',
'mostlinkedtemplates' => 'ढाँचाहरुसित सबैभन्दा बढि लिंक भएको',
'mostcategories' => 'सबैभन्दा धेरै श्रेणीहरू भएका लेखहरू',
'mostimages' => 'सबैभन्दा बढि लिंक भएको चित्र',
'mostrevisions' => 'सबैभन्दा बढी संशोधित लेखहरू',
'prefixindex' => 'प्रिफिक्स सहितका पृष्ठहरु',
-'shortpages' => 'à¤\9bà¥\8bà¤\9fा पà¥\83षà¥\8dठहरà¥\81',
+'shortpages' => 'à¤\9bà¥\8bà¤\9fा पà¥\83षà¥\8dठहरà¥\82',
'longpages' => 'लामो पृष्ठहरु',
'deadendpages' => 'हदै-अन्तकि पृष्ठहरु',
'deadendpagestext' => 'निम्न पृष्ठहरु {{SITENAME}}मा रहेका अरु पृष्ठहरुसँग जोडिदैनन् ।',
-'protectedpages' => 'सà¤\82रà¤\95à¥\8dषित पà¥\83षà¥\8dठहरà¥\81',
+'protectedpages' => 'सà¤\82रà¤\95à¥\8dषित पà¥\83षà¥\8dठहरà¥\82',
'protectedpages-indef' => 'नखुलेको सुरक्षा मात्र',
'protectedpages-cascade' => 'लामबद्ध सुरक्षाहरु मात्रा',
'protectedpagesempty' => 'दिइएको प्यारामिटर प्रयोग गरि सुरक्षा गरिएका पृष्ठहरु छैनन् ।',
'usercreated' => ' $1को $2 मा {{GENDER:$3|सृजना}} गरिएको',
'newpages' => 'नयाँ पृष्ठहरू',
'newpages-username' => 'प्रयोगकर्ता नाम:',
-'ancientpages' => 'सबà¥\88à¤à¤¨à¥\8dदा पà¥\81राना पà¥\83षà¥\8dठहरà¥\81',
+'ancientpages' => 'सबà¥\88à¤à¤¨à¥\8dदा पà¥\81राना पà¥\83षà¥\8dठहरà¥\82',
'move' => 'सार्ने',
'movethispage' => 'यो पृष्ठ सार्नुहोस्',
'notargettitle' => 'कुनैपनि निसाना(टारगेट) छैन',
'log-title-wildcard' => 'पाठबाट सुरुहुने शीर्षकहरु खोज्नुहोस्',
# Special:AllPages
-'allpages' => 'सबà¥\88 पà¥\83षà¥\8dठहरà¥\81',
+'allpages' => 'सबà¥\88 पà¥\83षà¥\8dठहरà¥\82',
'alphaindexline' => '$1 लाई $2 मा',
'nextpage' => 'अर्को पृष्ठ ($1)',
'prevpage' => 'पहिलो पृष्ठ ($1)',
-'allpagesfrom' => 'यहाà¤\81दà¥\87à¤\96ि शà¥\81रà¥\81 हà¥\81नà¥\87 पà¥\83षà¥\8dठहरà¥\81 देखाउनुहोस्:',
+'allpagesfrom' => 'यहाà¤\81दà¥\87à¤\96ि शà¥\81रà¥\81 हà¥\81नà¥\87 पà¥\83षà¥\8dठहरà¥\82 देखाउनुहोस्:',
'allpagesto' => 'निम्नमा अन्तहुने पृष्ठहरु देखाउने:',
'allarticles' => 'सबै लेखहरु',
'allinnamespace' => 'सबै पृष्ठहरु ($1 नेमस्पेस)',
# Special:Categories
'categories' => 'श्रेणीहरू',
-'categoriesfrom' => 'शà¥\8dरà¥\87णà¥\80हरà¥\81 देखाउन शुरु हुने यहाँ:',
+'categoriesfrom' => 'शà¥\8dरà¥\87णà¥\80हरà¥\82 देखाउन शुरु हुने यहाँ:',
'special-categories-sort-count' => 'गणना क्रममा राख्नुहोस्',
'special-categories-sort-abc' => 'वर्णानुक्रम अनुसार मिलाउने',
'watchnologintext' => 'आफ्नो अवलोकनलाइ परिवर्तन गर्नको लागि त तपाइ यसमा [[Special:UserLogin|प्रवेश(लगइन)]] गर्नुपर्छ।',
'addwatch' => 'निगरानी सुचीमा थप्ने',
'addedwatchtext' => '"[[:$1]]" पृष्ठ [[Special:Watchlist|अवलोकनसूची]]मा थपियो
-यो पृष्ठ र यससित सम्बद्ध वार्तालाप पृष्ठमा भविष्यमा हुने परिवर्तन सूचिबद्ध गरिनेछ र यो पृष्ठ [[Special:RecentChanges|नयाँ परिवर्तनहरु]]मा छान्न सजिलोकोलागि गाढा अक्षरमा देखा पर्नेछ।',
+यो पृष्ठ र यससित सम्बद्ध वार्तालाप पृष्ठमा भविष्यमा हुने परिवर्तन सूचिबद्ध गरिनेछ र यो पृष्ठ [[Special:RecentChanges|नयाँ परिवर्तनहरू]]मा छान्न सजिलोकोलागि गाढा अक्षरमा देखा पर्नेछ।',
'removewatch' => 'निगरानी सुचीबाट हटाउने',
'removedwatchtext' => 'पृष्ठ "[[:$1]]" [[Special:Watchlist|तपाईको निगरानी सूची]]बाट हटाइएको छ।',
'watch' => 'अवलोकन',
'movepage-max-pages' => 'अधिकतम $1 {{PLURAL:$1|पृष्ठ|पृष्ठहरु}} सारिसकिएको छ र अरु स्वत: सारिने छैन ।',
'movelogpage' => 'लग सार्ने',
'movelogpagetext' => 'सबै सारिएका पृष्ठहरुको सूची तल दिइएकोछ।',
-'movesubpage' => '{{PLURAL:$1|à¤\89पपà¥\83षà¥\8dठ|à¤\89पपà¥\83षà¥\8dठहरà¥\81}}',
+'movesubpage' => '{{PLURAL:$1|à¤\89पपà¥\83षà¥\8dठ|à¤\89पपà¥\83षà¥\8dठहरà¥\82}}',
'movesubpagetext' => 'यस पृष्ठको $1 {{PLURAL:$1|सह-पृष्ठ|सह-पृष्ठहरु}} तल देखाइएको :',
'movenosubpage' => 'यस पृष्ठका उप पृष्ठहरु छैनन्।',
'movereason' => 'कारण :',
'thumbnail_image-missing' => 'फाइल हराएको भान भइरहेछ: $1',
# Special:Import
-'import' => 'पà¥\83षà¥\8dठहरà¥\81 आयात गर्नुहोस्',
+'import' => 'पà¥\83षà¥\8dठहरà¥\82 आयात गर्नुहोस्',
'importinterwiki' => 'Transwiki आयात',
'import-interwiki-source' => 'स्रोत विकि/ पृष्ठ :',
'import-interwiki-history' => 'यो पृष्ठकोलागि सबै इतिहास संशोधनहरु प्रतिलिपि गर्ने',
'tooltip-ca-unwatch' => 'यो पृष्ठलाई तपाईँको अवलोकनसूचीबाट हटाउनुहोस्',
'tooltip-search' => '{{SITENAME}} मा खोज्नुहोस्',
'tooltip-search-go' => 'यदि यो नामको पृष्ठ रहेको छ भने त्यसमा जाने',
-'tooltip-search-fulltext' => 'यà¥\8b पाठà¤\95à¥\8b लाà¤\97ि पà¥\83षà¥\8dठहरà¥\81 खोज्नुहोस्',
+'tooltip-search-fulltext' => 'यà¥\8b पाठà¤\95à¥\8b लाà¤\97ि पà¥\83षà¥\8dठहरà¥\82 खोज्नुहोस्',
'tooltip-p-logo' => 'मुख्य पृष्ठ',
'tooltip-n-mainpage' => 'मुख्य पृष्ठमा जाने',
'tooltip-n-mainpage-description' => 'मुख्य पृष्ठमा जानुहो्स्',
'tooltip-watchlistedit-raw-submit' => 'निगरानी सूची अध्यावधि गर्ने',
'tooltip-recreate' => 'मेटिएको भए ता पनि यो पृष्ट पुन:निर्माण गर्नुहोस् ।',
'tooltip-upload' => 'उर्ध्वभरण(upload) सुरुगर्ने',
-'tooltip-rollback' => '"पà¥\82रà¥\8dवरà¥\81प" लà¥\87 यà¥\8b पà¥\83षà¥\8dठà¤\95à¥\8b समà¥\8dपादन(हरà¥\81) à¤\96ारà¥\87à¤\9c à¤\97रà¥\80 पà¥\83षà¥\8dठलाà¤\88 पà¤\9bिलà¥\8dलà¥\8b समà¥\8dपादनमा à¤\8fà¤\95 à¤\95à¥\8dलिà¤\95मा पà¥\81रà¥\8dâ\80\8dयाà¤\87 दिन्छ',
+'tooltip-rollback' => '"पà¥\82रà¥\8dवरà¥\81प" लà¥\87 यà¥\8b पà¥\83षà¥\8dठà¤\95à¥\8b समà¥\8dपादन(हरà¥\82) à¤\96ारà¥\87à¤\9c à¤\97रà¥\80 पà¥\83षà¥\8dठलाà¤\88 à¤\8fà¤\95 à¤\95à¥\8dलिà¤\95मा पà¤\9bिलà¥\8dलà¥\8b समà¥\8dपादनमा पà¥\81रà¥\8dâ\80\8dयाà¤\87दिन्छ',
'tooltip-undo' => '"रद्द"ले पछिल्लो सम्पादन खारेज गरी पूर्वावलोकनमा देखाउँछ ।
यसले सारांशमा कारण राख्न दिनेछ।',
'tooltip-preferences-save' => 'अभिरुचिहरु संग्रह गर्नुहोस्',
'exif-exposureprogram-1' => 'स्वयं',
'exif-exposureprogram-2' => 'साधारण कार्यक्रम',
'exif-exposureprogram-3' => 'एपर्चर प्राथमिकता',
-'exif-exposureprogram-4' => 'शटर प्राथमिकता',
+'exif-exposureprogram-4' => 'सटर प्राथमिकता',
'exif-exposureprogram-5' => 'शृजनात्मक कार्यक्रम(गहिराइसँग बाझिएको)',
'exif-exposureprogram-6' => 'क्रिया कार्यक्रम (तेज शटर गतितर्फ झु्केको)',
* @author Mwpnl
* @author Naudefj
* @author Niels
+ * @author Niknetniko
* @author Paul B
* @author Romaine
* @author SPQRobin
'content-not-allowed-here' => 'De inhoud "$1" is niet toegestaan op pagina [[$2]].',
'editwarning-warning' => 'Als u deze pagina verlaat verliest u mogelijk wijzigingen die u hebt gemaakt.
Als u bent aangemeld, kunt u deze waarschuwing uitschakelen in het tabblad "{{int:prefs-editing}}" in uw voorkeuren.',
+'editpage-notsupportedcontentformat-title' => 'Inhoudsformaat niet ondersteund',
+'editpage-notsupportedcontentformat-text' => 'Het inhoudsformaat $1 wordt niet ondersteund door het inhoudsmodel $2.',
# Content models
'content-model-wikitext' => 'wikitekst',
'file-exists-duplicate' => 'Ten plik jest kopią {{PLURAL:$1|pliku|następujących plików:}}',
'file-deleted-duplicate' => 'Identyczny do tego plik ([[:$1]]) został wcześniej usunięty.
Sprawdź historię usunięć tamtego pliku zanim prześlesz go ponownie.',
+'file-deleted-duplicate-notitle' => 'Plik jest identyczny z plikiem, który został wcześniej usunięty, a jego nazwa została ukryta. Należy poprosić kogoś z możliwością przeglądania ukrytych danych, aby przeanalizował sytuację przed przystąpieniem do jego ponownego przesłania.',
'uploadwarning' => 'Ostrzeżenie o przesyłaniu',
'uploadwarning-text' => 'Zmień poniższy opis pliku i spróbuj ponownie.',
'savefile' => 'Zapisz plik',
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|interwiki|interwiki}}',
'nlinks' => '$1 {{PLURAL:$1|link|linki|linków}}',
'nmembers' => '$1 {{PLURAL:$1|element|elementy|elementów}}',
-'nmemberschanged' => '$1 → $2 {{PLURAL:$1|element|elementy|elementów}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|element|elementy|elementów}}',
'nrevisions' => '$1 {{PLURAL:$1|wersja|wersje|wersji}}',
'nviews' => 'odwiedzono $1 {{PLURAL:$1|raz|razy}}',
'nimagelinks' => 'Używane na $1 {{PLURAL:$1|stronie|stronach}}',
'content-not-allowed-here' => "Ël contnù «$1» a l'é nen autorisà an sla pàgina [[$2]]",
'editwarning-warning' => "Chité sta pàgina-sì a peul feje perde tute le modìfiche ch'a l'ha fàit.
S'a l'é rintrà ant ël sistema, a peul disabilité st'avis ant la session «Modìfica» dij sò gust.",
+'editpage-notsupportedcontentformat-title' => 'Formà ëd contnù nen mantnù',
+'editpage-notsupportedcontentformat-text' => "Ël formà ëd contnù $1 a l'é nen mantnù dal model Ëd contnù $2.",
# Content models
'content-model-wikitext' => 'test wiki',
'expand_templates_generate_rawhtml' => "Smon-e l'HTML sempi",
'expand_templates_preview' => 'Preuva',
+# Unknown messages
+'uploadinvalidxml' => "L'XML ant l'archivi carià a l'ha nen podù esse analisà.",
);
'content-not-allowed-here' => 'Conteúdo do tipo "$1" não é permitido na página [[$2]]',
'editwarning-warning' => 'Abandonar esta página pode fazer com que você perca todas as alterações que fez.
Se você estiver autenticado, você pode desabilitar este aviso na seção "Edição" de suas preferências.',
+'editpage-notsupportedcontentformat-title' => 'Formato do conteúdo não suportado',
+'editpage-notsupportedcontentformat-text' => 'O formato de conteúdo $1 não é suportando pelo modelo de conteúdo $2.',
# Content models
'content-model-wikitext' => 'wikitexto',
'prefs-tokenwatchlist' => 'Senha',
'prefs-diffs' => 'Diferenças',
'prefs-help-prefershttps' => 'Esta preferência terá efeito no seu próximo início de sessão.',
+'prefs-tabs-navigation-hint' => 'Dica: Você pode usar as teclas de seta esquerda e direita para navegar entre as abas da lista de abas.',
# User preference: email validation using jQuery
'email-address-validity-valid' => 'Parece válido',
'withoutinterwiki-legend' => 'Prefixo',
'withoutinterwiki-submit' => 'Exibir',
-'fewestrevisions' => 'Páginas de conteúdo com menos edições',
+'fewestrevisions' => 'Páginas com menos edições',
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|byte|bytes}}',
'ninterwikis' => '$1 {{PLURAL:$1|interwiki|Interwikis}}',
'nlinks' => '$1 {{PLURAL:$1|link|links}}',
'nmembers' => '$1 {{PLURAL:$1|membro|membros}}',
-'nmemberschanged' => '$2{{PLURAL:$2|membro|membros}}',
+'nmemberschanged' => '$1 → $2 {{PLURAL:$2|membro|membros}}',
'nrevisions' => '$1 {{PLURAL:$1|revisão|revisões}}',
'nviews' => '$1 {{PLURAL:$1|visita|visitas}}',
'nimagelinks' => 'Utilizada em $1 {{PLURAL:$1|página|páginas}}',
'protectedpages' => 'Páginas protegidas',
'protectedpages-indef' => 'Proteções infinitas apenas',
'protectedpages-cascade' => 'Apenas proteções progressivas',
+'protectedpages-noredirect' => 'Ocultar redirecionamentos',
'protectedpagesempty' => 'Neste momento, nenhuma das páginas está protegida com estes parâmetros.',
'protectedtitles' => 'Títulos protegidos',
'protectedtitlesempty' => 'Neste momento, nenhum dos títulos está protegido com estes parâmetros.',
'delete-warning-toobig' => 'Esta página possui um longo histórico de edições, com mais de $1 {{PLURAL:$1|edição|edições}}.
Eliminá-la poderá causar problemas na base de dados de {{SITENAME}};
prossiga com cuidado.',
+'deleting-backlinks-warning' => "'''Cuidado:''' Outras páginas redirecionam para a página que você está prestes a deletar.",
# Rollback
'rollback' => 'Reverter edições',
Consulte a [[Special:BlockList|lista de bloqueios]].',
'ipb-blockingself' => 'Você está prestes a bloquear-se a si próprio. Você tem a certeza de que pretende fazê-lo?',
'ipb-confirmhideuser' => 'Você está prestes a bloquear um utilizador com "Ocultar nome de utilizador/IP" ativado. Isto irá suprimir o nome do usuário de todas as listas e entradas dos registos. Tem a certeza de que pretende fazê-lo?',
+'ipb-confirmaction' => 'Se você tem certeza que realmente quer fazer isto, por favor verifique o campo "{{int:ipb-confirm}}" no final.',
'ipb-edit-dropdown' => 'Editar motivos de bloqueio',
'ipb-unblock-addr' => 'Desbloquear $1',
'ipb-unblock' => 'Desbloquear um usuário ou endereço de IP',
# Language selector for translatable SVGs
'img-lang-default' => '(Idioma padrão)',
-'img-lang-info' => 'Renderizar essa imagem em $1 $2',
+'img-lang-info' => 'Renderizar essa imagem em $1. $2',
'img-lang-go' => 'Ir',
# Table pager
'version-hook-name' => 'Nome do hook',
'version-hook-subscribedby' => 'Subscrito por',
'version-version' => '(Versão $1)',
-'version-license' => 'Licença',
+'version-license' => 'Licença do MediaWiki',
+'version-ext-license' => 'Licença',
+'version-ext-colheader-name' => 'Extensão',
+'version-ext-colheader-version' => 'Versão',
+'version-ext-colheader-license' => 'Licença',
+'version-ext-colheader-description' => 'Descrição',
+'version-ext-colheader-credits' => 'Autores',
+'version-license-title' => 'Licença para $1',
+'version-license-not-found' => 'Nenhuma informação detalhada dessa licença foi encontrada para esta extensão.',
+'version-credits-title' => 'Créditos para $1',
+'version-credits-not-found' => 'Nenhuma informação detalhada de crédito foi encontrada para esta extensão.',
'version-poweredby-credits' => "Este é um wiki '''[https://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'outros',
'version-poweredby-translators' => 'tradutores da translatewiki.net',
# Special:Redirect
'redirect' => 'Redirecionar por arquivo, usuário ou ID de revisão',
'redirect-legend' => 'Redirecionar para um arquivo ou página',
-'redirect-summary' => 'Esta página especial redireciona a um arquivo (dado o nome do arquivo), a uma página (dado um ID de revisão) ou a uma página de usuário (dado o ID do usuário). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/revision/328429]], ou [[{{#Special:Redirect}}/user/101]].',
+'redirect-summary' => 'Esta página especial redireciona a um arquivo (dado o nome do arquivo), a uma página (dado um ID de revisão ou ID da página) ou a uma página de usuário (dado o ID do usuário). Uso: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].',
'redirect-submit' => 'Ir',
'redirect-lookup' => 'Buscar',
'redirect-value' => 'Valor:',
'redirect-user' => 'ID do usuário',
+'redirect-page' => 'ID da página',
'redirect-revision' => 'Revisão da página',
'redirect-file' => 'Nome do arquivo',
'redirect-not-exists' => 'Valor não encontrado',
'api-error-overwrite' => 'Não é permitido sobrescrever um arquivo já existente.',
'api-error-stashfailed' => 'Erro interno: o servidor não conseguiu armazenar o arquivo temporário.',
'api-error-publishfailed' => 'Erro interno: O servidor falhou ao publicar o arquivo temporário.',
+'api-error-stasherror' => 'Houve um erro durante o upload do arquivo para a pilha.',
'api-error-timeout' => 'O servidor não respondeu dentro do tempo esperado.',
'api-error-unclassified' => 'Ocorreu um erro desconhecido',
'api-error-unknown-code' => 'Erro desconhecido: "$1"',
'expand_templates_input' => 'Texto de entrada:',
'expand_templates_output' => 'Resultado',
'expand_templates_xml_output' => 'Resultado XML',
+'expand_templates_html_output' => 'Saída HTML puro',
'expand_templates_ok' => 'Expandir',
'expand_templates_remove_comments' => 'Remover comentários',
'expand_templates_remove_nowiki' => 'Suprima marcações <nowiki> no resultado',
'expand_templates_generate_xml' => 'Mostrar árvore de análise (parse) do XML',
+'expand_templates_generate_rawhtml' => 'Mostrar HTML puro',
'expand_templates_preview' => 'Pré-visualização',
+# Unknown messages
+'uploadinvalidxml' => 'O XML no arquivo enviado não pôde ser analisado.',
);
'expand_templates_generate_rawhtml' => 'Used as checkbox label.',
'expand_templates_preview' => '{{Identical|Preview}}',
+# Unknown messages
+'uploadinvalidxml' => 'Error message displayed when the uploaded file contains XML that cannot be properly parsed and checked.',
);
'expand_templates_generate_rawhtml' => 'Arată HTML brut',
'expand_templates_preview' => 'Previzualizare',
+# Unknown messages
+'uploadinvalidxml' => 'Nu s-a putut analiza conținutul XML din fișierul încărcat.',
);
'formerror' => 'Ошибка: невозможно передать данные формы',
'badarticleerror' => 'Это действие не может быть выполнено на данной странице.',
'cannotdelete' => 'Невозможно удалить или переименовать страницу или файл «$1».
-Ð\92озможно, Ñ\81Ñ\82Ñ\80аниÑ\86а Ñ\83же бÑ\8bла Ñ\83далена.',
+Ð\92озможно, Ñ\83же бÑ\8bло пÑ\80оизведено Ñ\83даление.',
'cannotdelete-title' => 'Нельзя удалить страницу «$1»',
'delete-hook-aborted' => 'Правка отменена процедурой-перехватчиком.
Дополнительных пояснений не приведено.',
'createacct-imgcaptcha-ph' => 'Введите текст, который вы видите выше',
'createacct-submit' => 'Создать учётную запись',
'createacct-another-submit' => 'Создать ещё одну учётную запись',
-'createacct-benefit-heading' => '{{SITENAME}} создают такие же люди, как вы.',
+'createacct-benefit-heading' => '{{SITENAME}} — совместный труд таких же людей, как вы.',
'createacct-benefit-body1' => '{{PLURAL:$1|правка|правок|правки}}',
'createacct-benefit-body2' => '{{PLURAL:$1|статья|статей|статьи}}',
'createacct-benefit-body3' => '{{PLURAL:$1|участник|участников|участника}} за последнее время',
'content-not-allowed-here' => 'Содержимое "$1" недопустимо на странице [[$2]]',
'editwarning-warning' => 'Переход на другую страницу может привести к потере сделанных вами изменений.
Если вы зарегистрированы в системе, то вы можете отключить это предупреждение в разделе «Редактирование» ваших настроек.',
+'editpage-notsupportedcontentformat-title' => 'Формат содержимого не поддерживается',
+'editpage-notsupportedcontentformat-text' => 'Формат содержимого $1 не поддерживается моделью содержимого $2.',
# Content models
'content-model-wikitext' => 'вики-текст',
Если вы всё-таки хотите загрузить этот файл, пожалуйста, вернитесь назад и измените имя файла. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Этот файл является дубликатом {{PLURAL:$1|1=следующего файла|следующих файлов}}:',
'file-deleted-duplicate' => 'Подобный файл ([[:$1]]) уже удалялся. Пожалуйста, ознакомьтесь с историей удаления файла, прежде чем загружать его снова.',
+'file-deleted-duplicate-notitle' => 'Файл, идентичный этому файлу, был ранее удалён, а имя файла было запрещено.
+Вам следует попросить кого-нибудь с правами просмотра данных по запрещённым файлам, чтобы он проанализировал ситуацию перед тем, как загружать файл снова.',
'uploadwarning' => 'Предупреждение',
'uploadwarning-text' => 'Пожалуйста, измените представленное ниже описание файла и попробуйте ещё раз.',
'savefile' => 'Записать файл',
'expand_templates_generate_rawhtml' => 'Показать HTML',
'expand_templates_preview' => 'Предпросмотр',
+# Unknown messages
+'uploadinvalidxml' => 'XML в загруженном файле не может быть проанализирован.',
);
'createacct-emailrequired' => 'වි-තැපෑල ලිපිනය',
'createacct-emailoptional' => 'වි-තැපෑල ලිපිනය (විකල්ප)',
'createacct-email-ph' => 'ඔබගේ වි-තැපෑල ලිපිනය ඇතුළු කරන්න',
-'createaccountmail' => 'තාවකාලික අහුඹු මුර පදයක් භාවිතා කර එය පහත දක්වා ඇති වි-තැපැල් ලිපිනයට යවන්න',
+'createacct-another-email-ph' => 'ඊ මේල් ලිපිනය ඇතුළත් කරන්න.',
+'createaccountmail' => 'තාවකාලික අහුඹු මුර පදයක් භාවිතා කර එය පහත දක්වා ඇති විද්යුත් තැපැල් ලිපිනයට යවන්න',
'createacct-realname' => 'නියම නම (වෛකල්පීය)',
'createaccountreason' => 'හේතුව:',
'createacct-reason' => 'හේතුව',
'createacct-reason-ph' => 'ඔබ තවත් ගිණුමක් තනන්නේ කුමක් නිසාද',
'createacct-captcha' => 'ආරක්ෂක පරික්ෂාව',
+'createacct-imgcaptcha-ph' => 'ඉහතින් දැක්වෙන වචනය ඇතුළත් කරන්න',
+'createacct-submit' => 'ඔබේ ගිණුම තනන්න',
+'createacct-another-submit' => 'තවත් ගිණුමක් ආරම්භ කරන්න',
+'createacct-benefit-heading' => '{{වෙබ් අඩවි නම}} ඔබ වැනි අයෙක් විසින් නිමවා ඇත',
'createacct-benefit-body1' => '{{PLURAL:$1|සංස්කරණය|සංස්කරණ}}',
'createacct-benefit-body2' => '{{PLURAL:$1|පිටුව|පිටු}}',
'createacct-benefit-body3' => 'මෑත{{PLURAL:$1|දායකයා|දායකයෝ}}',
'passwordsent' => ' "$1" වෙනුවෙන් ලේඛනගත කර ඇති විද්යුත් තැපැල් ලිපිනයට නව මුර පදයක් යවා ඇත.
ඔබට එය ලැබුනු පසු නැවත ප්රවිෂ්ට වන්න.',
'blocked-mailpassword' => 'ඔබගේ අන්තර්ජාල ලිපිනය භාවිතා කරමින් සංස්කරණයෙහි යෙදීම වාරණය කොට ඇති අතර, අපයෙදුම වළකනු වස්, මුර-පදය පුනරුත්ථාන කෘත්යය භාවිත කිරීමට අවසරයද අහිමි කොට ඇත.',
-'eauthentsent' => 'නම් කර ඇති විද්යුත්-ලිපි ලිපිනය වෙත, තහවුරු කිරීම් විද්යුත්-ලිපියක් යවා ඇත.
-ගිණුම වෙත වෙනත් විද්යුත්-ලිපියක් යැවීමට පෙර, ගිණුම සත්ය වශයෙන්ම ඔබගේම බව තහවුරු කරනු වස්, විද්යුත්-ලිපියෙහි අඩංගු උපදෙස් පිළිපදින්න.',
+'eauthentsent' => 'නම් කර ඇති විද්යුත් තැපැල් ලිපිනය වෙත තහවුරු කිරීම් විද්යුත්-ලිපියක් යවා ඇත.
+ගිණුම වෙත වෙනත් විද්යුත් තැපෑලක් යැවීමට පෙර, ගිණුම සත්ය වශයෙන්ම ඔබගේම බව තහවුරු කරනු පිණිස විද්යුත්-ලිපියෙහි අඩංගු උපදෙස් පිළිපදින්න.',
'throttled-mailpassword' => 'අවසන් {{PLURAL:$1|පැය|පැය $1}} තුල, මුරපද යළි සැකසුම් ඊ-ලිපියක් යවාඇත.
අපයෙදුම වළකනු වස්, {{PLURAL:$1|එක් පැයක|පැය $1 ක}}ට වරක් එක් මුරපද යළි සැකසුම් ඊ-ලිපියක් පමණක් යවනු ලැබේ.',
'mailerror' => 'තැපෑල යැවීමේදී වූ දෝෂය: $1',
'acct_creation_throttle_hit' => 'ඔබගේ අන්තර්ජාල ලිපිනය භාවිතා කල මෙම විකියට අමුත්තන් විසින් {{PLURAL:$1|එක් ගිණුමක්|ගිණුම් $1 ක්}} පසුගිය දිනය තුලදී තනා ඇති අතර, එය මෙම කාල පරිච්ඡේදය තුලදී ඉඩ දෙනු ලබන උපරිමය වෙයි.
මේ හේතුවෙන්, මෙම අන්තර්ජාල ලිපිනය භාවිතා කරන අමුත්තන් විසින් මෙම අවස්ථාවෙහිදී තවත් ගිණුම් තැනීම සිදු කල නොහැකිව ඇත.',
-'emailauthenticated' => '$2 දින $3 වේලාවෙහිදී ඔබගේ විද්යුත්-තැපැල් ලිපිනය සත්යවත් කරන ලදි.',
-'emailnotauthenticated' => 'ඔබගේ විද්යුත්-තැපැල් ලිපිනය තවමත් සත්යවත් කර නොමැත.
+'emailauthenticated' => '$2 දින $3 වේලාවෙහිදී ඔබගේ විද්යුත්-තැපැල් ලිපිනයෙහි සත්යතාව තහවුරු කරන ලදි.',
+'emailnotauthenticated' => 'ඔබගේ විද්යුත්-තැපැල් ලිපිනයෙහි නිවැරදිබව තවමත් තගහවුරු කර නොමැත.
පහත හැකියාවන් කිසිවක් ඉටුකරනු වස් විද්යුත්-තැපෑල යවනු නොලැබේ.',
'noemailprefs' => 'පහත හැකියාවන් ඉටුකිරීමට ඉඩ සලසනු වස් විද්යුත්-තැපැල් ලිපිනයක් හුවා දක්වන්න.',
'emailconfirmlink' => 'ඔබගේ විද්යුත් තැපැල් ලිපිනය තහවුරු කරන්න',
මෙම ගිණුම තැනී ඇත්තේ වැරදීමකින් නම්, මෙම පණිවුඩය නොසලකා හැරිය හැක.',
'usernamehasherror' => 'පරිශීලක නාමයේ පූරක අනුලකුණු අඩංගු විය නොහැකිය',
'login-throttled' => 'ඔබ විසින් මෑතදී පමණට වඩා වාර ගණනක් පිවිසීමෙහි උත්සාහයන් දරා ඇත.
-යළි උත්සාහ කිරීමට පෙර මඳ වේලාවක් රැඳී සිටින්න.',
+යළි උත්සාහ කිරීමට පෙර $1 වේලාවක් රැඳී සිටින්න.',
'login-abort-generic' => 'ඔබගේ පිවිසීම අසාර්ථකයි - අතහැර දමනලදී',
'loginlanguagelabel' => 'භාෂාව: $1',
'suspicious-userlogout' => 'නිෂ්ක්රමණය සඳහා ඔබගේ අයැදුම නිෂ්ප්රභා කෙරුනේ එය යොමු කොට ඇත්තේ භින්න(කැඩුනු) බ්රවුසරයකින් හෝ නිවේෂණය කෙරෙමින් පවතින ප්රොක්සියක් වෙතින් යැයි බැලූ බැල්මට පෙනෙන බැවිනි.',
'newpassword' => 'නව මුර-පදය:',
'retypenew' => 'නව මුර-පදය නැවත ඇතුළු කරන්න:',
'resetpass_submit' => 'මුර-පදය පූරණය කොට ඉන් පසු ප්රවිෂ්ට වන්න',
-'changepassword-success' => 'à¶\94බà¶\9cà·\9a මà·\94ර-පදය à·\83à·\8fරà·\8aථà¶\9a ලà·\99à·\83 à·\80à·\99නà·\83à·\8a à¶\9aරන ලදà·\92! දà·\90නà·\8a à¶\94බà·\80 පà·\8aâ\80\8dරà·\80à·\92à·\82à·\8aට à¶\9aරà¶\9cනà·\92මà·\92නà·\8a...',
+'changepassword-success' => 'à¶\94බà¶\9cà·\9a මà·\94ර-පදය à·\83à·\8fරà·\8aථà¶\9a ලà·\99à·\83 à·\80à·\99නà·\83à·\8a à¶\9aරන ලදà·\93!',
'resetpass_forbidden' => 'මුර-පදයන් වෙනස් කිරීම සිදු කල නොහැක',
'resetpass-no-info' => 'මෙම පිටුව සෘජු ලෙස පරිශීලනය කෙරුමට ඔබ පළමු ප්රවිෂ්ට විය යුතුය.',
'resetpass-submit-loggedin' => 'මුර-පදය වෙනස්කරන්න',
# Special:PasswordReset
'passwordreset' => 'මුරපදය වෙනස් කරන්න',
+'passwordreset-text-one' => 'තාවකාලික මුර-පදයක් විද්යුත් තැපෑළ මගින් ලබා ගැනීම සඳහා මෙම පෝරමය සම්පූර්ණ කරන්න.',
'passwordreset-legend' => 'මුරපදය යළි පිහිටුවන්න',
'passwordreset-disabled' => 'මෙම විකියෙහි මුර පද ප්රත්යාරම්භ කිරීම් අක්රීය කොට ඇත.',
+'passwordreset-emaildisabled' => 'විද්යුත් තැපැල් පහසුකම මෙම විකි ය සඳහා අවලංගු කොට ඇත.',
'passwordreset-username' => 'පරිශීලක නාමය:',
'passwordreset-domain' => 'වසම:',
'passwordreset-capture' => 'ප්රතිපලදායක විද්යුත් තැපෑල නරඹනවාද?',
ඔබ දැන් ප්රවිෂ්ට වී නව මුරපදයක් තෝරාගත යුතුයි. වෙන යම් අයෙක් මෙම ඉල්ලීම කර ඇත්නම් හෝ, ඔබගේ මුල් මුරපදය ඔබගේ මතකයට පැමිණ ඇති නම් හා, එය වෙනස් කිරීමට ඔබ හට තවදුරටත් අවශ්ය නොවේ නම්, ඔබ විසින් මෙම පණිවුඩය නොසලකා හැර පැරණි මුරපදය තවදුරටත් පාවිච්චි කළ හැක.',
'passwordreset-emailelement' => 'පරිශීලක නාමය: $1
තාවකාලික මුරපදය: $2',
-'passwordreset-emailsent' => 'à·\80à·\92දà·\8aâ\80\8dයà·\94à¶à·\8a à¶à·\90පà·\90ලà·\8a මà¶à¶\9aà·\8aà¶\9aà·\92රà·\93මක් යවන ලදී.',
-'passwordreset-emailsent-capture' => 'මà¶à¶\9aà·\8a à¶\9aà·\92රà·\93මà·\9a à·\80à·\92දà·\8aâ\80\8dයà·\94à¶à·\8a à¶à·\90පà·\90ලà·\8a පණà·\92à·\80à·\94ඩය යවන ලදී, එය පහත දැක්වේ.',
+'passwordreset-emailsent' => 'මà·\94ර-පදය නà·\90à·\80චà·\83à¶\9aà·\83à·\8a à¶\9aà·\92රà·\93ම පà·\92à·\85à·\92බඳà·\80 à·\80à·\92දà·\8aâ\80\8dයà·\94à¶à·\8a à¶à·\90පà·\91ලක් යවන ලදී.',
+'passwordreset-emailsent-capture' => 'මà·\94ර-පදය à·\80à·\99නà·\83à·\8a à¶\9aà·\92රà·\93ම පà·\92à·\85à·\92බඳà·\80 à·\80à·\92දà·\8aâ\80\8dයà·\94à¶à·\8a à¶à·\90පà·\91ලà¶\9aà·\8a යවන ලදී, එය පහත දැක්වේ.',
'passwordreset-emailerror-capture' => 'සිහිකැඳවුම් ඊ-තැපෑල ජනිත කරනු ලැබූ අතර, එය පහත දැක්වේ, නමුත් එය පරිශීලකයාට යැවීම අසාර්ථක වුනි: $1',
# Special:ChangeEmail
'december-date' => '$1 децембар',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|1=Категорија|Категорије}}',
+'pagecategories' => '{{PLURAL:$1|Категорија|Категорије}}',
'category_header' => 'Странице у категорији „$1“',
'subcategories' => 'Поткатегорије',
'category-media-header' => 'Датотеке у категорији „$1“',
'category-empty' => "<div style=\"margin:2em 1em 0 1em; padding:0.5em; border:1px solid #AAA; text-align:center;\">''Ова категорија тренутно не садржи странице или датотеке.''</div>",
-'hidden-categories' => '{{PLURAL:$1|1=Сакривена категорија|Сакривене категорије}}',
+'hidden-categories' => '{{PLURAL:$1|Сакривена категорија|Сакривене категорије}}',
'hidden-category-category' => 'Сакривене категорије',
'category-subcat-count' => '{{PLURAL:$2|Ова категорија садржи само следећу поткатегорију.|Ова категорија има {{PLURAL:$1|следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}, од укупно $2.}}',
'category-subcat-count-limited' => 'Ова категорија садржи {{PLURAL:$1|следећу поткатегорију|следеће $1 поткатегорије|следећих $1 поткатегорија}}.',
'badaccess' => 'Грешке у овлашћењима',
'badaccess-group0' => 'Није вам дозвољено да извршите захтевану радњу.',
-'badaccess-groups' => 'Радња је доступна само корисницима у {{PLURAL:$2|1=следећој групи|следећим групама}}: $1.',
+'badaccess-groups' => 'Радња коју сте захтевали је ограничена само корисницима у {{PLURAL:$2|следећој групи|следећим групама}}: $1.',
'versionrequired' => 'Потребно је издање $1 Медијавикија',
'versionrequiredtext' => 'Потребно је издање $1 Медијавикија да бисте користили ову страницу.
'youhavenewmessages' => 'Имате $1 ($2).',
'youhavenewmessagesfromusers' => 'Имате $1 од {{PLURAL:$3|другог корисника|$3 корисника|$3 корисника}} ($2).',
'youhavenewmessagesmanyusers' => 'Имате $1 од много корисника ($2).',
-'newmessageslinkplural' => '{{PLURAL:$1|1=нову поруку|999=нове поруке}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|1=последњу измену|999=последње измене}}',
+'newmessageslinkplural' => '{{PLURAL:$1|нову поруку|999=нове поруке}}',
+'newmessagesdifflinkplural' => '{{PLURAL:$1|последњу измену|999=последње измене}}',
'youhavenewmessagesmulti' => 'Имате нових порука на $1',
'editsection' => 'уреди',
'editold' => 'уреди',
'badtitletext' => 'Наслов странице је неисправан, празан или је међујезички или међувики наслов погрешно повезан.
Можда садржи знакове који се не могу користити у насловима.',
'perfcached' => 'Следећи подаци су кеширани и могу бити застарели. Кеш садржи највише {{PLURAL:$1|један резултат|$1 резултата|$1 резултата}}.',
-'perfcachedts' => 'Следећи подаци су кеширании и последњи пут су ажурирани $2 у $3. Кеш садржи највише {{PLURAL:$4|1=један резултат|$4 резултата}}.',
+'perfcachedts' => 'Следећи подаци су кеширани и последњи пут су ажурирани $2 у $3. У кешу {{PLURAL:$4|је доступан највише један резултат|су доступна највише $4 резултата|је доступно највише $4 резултата}}.',
'querypage-no-updates' => 'Ажурирање ове странице је тренутно онемогућено.
Подаци који се овде налазе могу бити застарели.',
'viewsource' => 'Изворни код',
'editinginterface' => "'''Упозорење:''' уређујете страницу која се користи за приказивање текста корисничког окружења.
Измене на овој страници ће утицати на све кориснике овог викија.
Да бисте додали или изменили преводе свих викија, посетите [//translatewiki.net/wiki/Main_Page?setlang=sr_ec Транслејтвики], пројекат за локализацију Медијавикија.",
-'cascadeprotected' => 'Ова страница је закључана јер садржи {{PLURAL:$1|1=следећу страницу која је заштићена|следеће странице које су заштићене}} „преносивом“ заштитом:
+'cascadeprotected' => 'Ова страница је закључана јер садржи {{PLURAL:$1|следећу страницу која је заштићена|следеће странице које су заштићене}} „преносивом“ заштитом:
$2',
'namespaceprotected' => "Немате дозволу да уређујете странице у именском простору '''$1'''.",
'customcssprotected' => 'Немате дозволу да мењате ову CSS страницу јер садржи личне поставке другог корисника.',
'invalidtitle-knownnamespace' => 'Неисправан наслов с именским простором „$2“ и текстом „$3“',
'invalidtitle-unknownnamespace' => 'Неисправан наслов с именским простором бр. $1 и текстом „$2“',
'exception-nologin' => 'Нисте пријављени',
-'exception-nologin-text' => 'Ова страница или радња захтева да будете пријављени на вики.',
+'exception-nologin-text' => '[[Special:Userlogin|Пријавите се]] да бисте приступили овој страници или радњи.',
# Virus scanner
'virus-badscanner' => "Неисправна поставка: непознати скенер за вирусе: ''$1''",
'yourpasswordagain' => 'Потврда лозинке:',
'createacct-yourpasswordagain' => 'Потврдите лозинку',
'createacct-yourpasswordagain-ph' => 'Унесите лозинку још једном',
-'remembermypassword' => 'Ð\97апамÑ\82и моÑ\98Ñ\83 лозинкÑ\83 на овом пÑ\80егледаÑ\87Ñ\83 (наÑ\98дÑ\83же $1 {{PLURAL:$1|1=дан|дана}})',
+'remembermypassword' => 'Ð\97апамÑ\82и ме на овом пÑ\80егледаÑ\87Ñ\83 (наÑ\98дÑ\83же $1 {{PLURAL:$1|дан|дана|дана}})',
'userlogin-remembermypassword' => 'Остави ме пријављеног/у',
'userlogin-signwithsecure' => 'Користите сигурну конекцију',
'yourdomainname' => 'Домен:',
'blocked-mailpassword' => 'Вашој ИП адреси је онемогућено уређивање страница, као и могућност захтевања нове лозинке.',
'eauthentsent' => 'На наведену е-адресу је послат потврдни код.
Пре него што пошаљемо даљње поруке, пратите упутства с е-поште да бисте потврдили да сте ви отворили налог.',
-'throttled-mailpassword' => 'Подсетник за лозинку је послат {{PLURAL:$1|пре сат времена|у последња $1 сата|у последњих $1 сати}}.
-Ð\94а биÑ\81мо Ñ\81пÑ\80еÑ\87или злоÑ\83поÑ\82Ñ\80ебÑ\83, подÑ\81еÑ\82ник Ñ\88аÑ\99емо Ñ\81амо Ñ\98едном Ñ\83 Ñ\80окÑ\83 од {{PLURAL:$1|Ñ\98едног Ñ\81аÑ\82а|$1 сата|$1 сати}}.',
+'throttled-mailpassword' => 'Порука за промену лозинке је послата у {{PLURAL:$1|последњих сат времена|последња $1 сата|последњих $1 сати}}.
+Ð\94а биÑ\81мо Ñ\81пÑ\80еÑ\87или злоÑ\83поÑ\82Ñ\80ебÑ\83, подÑ\81еÑ\82ник Ñ\88аÑ\99емо Ñ\81амо Ñ\98едном Ñ\83 Ñ\80окÑ\83 од {{PLURAL:$1|Ñ\81аÑ\82 вÑ\80емена|$1 сата|$1 сати}}.',
'mailerror' => 'Грешка при слању поруке: $1',
'acct_creation_throttle_hit' => 'Посетиоци овог викија који користе вашу ИП адресу су већ отворили {{PLURAL:$1|један налог|$1 налога|$1 налога}} претходни дан, што је највећи дозвољени број у том временском периоду.
Због тога посетиоци с ове ИП адресе тренутно не могу отворити више налога.',
'emailauthenticated' => 'Ваша е-адреса је потврђена $2 у $3.',
'emailnotauthenticated' => 'Ваша е-адреса још није потврђена.
-Поруке неће бити послате ни за једну од следећих могућности.',
+Поруке неће бити послате ни у једном од следећих случајева.',
'noemailprefs' => 'Унесите е-адресу како би ове могућности радиле.',
'emailconfirmlink' => 'Потврдите своју е-адресу',
'invalidemailaddress' => 'Е-адреса не може бити прихваћена јер је неисправног облика.
'filename-toolong' => 'Називи датотека могу имати највише 240 бајтова.',
'badfilename' => 'Назив датотеке је промењен у „$1“.',
'filetype-mime-mismatch' => 'Екстензија „.$1“ не одговара препознатој врсти MIME датотеке ($2).',
-'filetype-badmime' => 'Датотеке MIME врсте „$1“ није дозвољено слати.',
+'filetype-badmime' => 'Датотеке MIME типа „$1“ није дозвољено слати.',
'filetype-bad-ie-mime' => 'Ова датотека се не може послати зато што би је Интернет експлорер уочио као „$1“, а то је забрањена и опасна врста датотеке.',
'filetype-unwanted-type' => '„.$1“ је непожељна врста датотеке.
{{PLURAL:$3|1=Пожељна врста датотеке је|Пожељне врсте датотека су}} $2.',
'december-date' => '$1. decembar',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|1=Kategorija|Kategorije}}',
+'pagecategories' => '{{PLURAL:$1|Kategorija|Kategorije}}',
'category_header' => 'Stranice u kategoriji „$1“',
'subcategories' => 'Potkategorije',
'category-media-header' => 'Datoteke u kategoriji „$1“',
'category-empty' => "<div style=\"margin:2em 1em 0 1em; padding:0.5em; border:1px solid #AAA; text-align:center;\">''Ova kategorija trenutno ne sadrži stranice ili datoteke.''</div>",
-'hidden-categories' => '{{PLURAL:$1|1=Sakrivena kategorija|Sakrivene kategorije}}',
+'hidden-categories' => '{{PLURAL:$1|Sakrivena kategorija|Sakrivene kategorije}}',
'hidden-category-category' => 'Sakrivene kategorije',
'category-subcat-count' => '{{PLURAL:$2|Ova kategorija sadrži samo sledeću potkategoriju.|Ova kategorija ima {{PLURAL:$1|sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}, od ukupno $2.}}',
'category-subcat-count-limited' => 'Ova kategorija sadrži {{PLURAL:$1|sledeću potkategoriju|sledeće $1 potkategorije|sledećih $1 potkategorija}}.',
'badaccess' => 'Greške u ovlašćenjima',
'badaccess-group0' => 'Nije vam dozvoljeno da izvršite zahtevanu radnju.',
-'badaccess-groups' => 'Radnja je dostupna samo korisnicima u {{PLURAL:$2|1=sledećoj grupi|sledećim grupama}}: $1.',
+'badaccess-groups' => 'Radnja koju ste zahtevali je ograničena samo korisnicima u {{PLURAL:$2|sledećoj grupi|sledećim grupama}}: $1.',
'versionrequired' => 'Potrebno je izdanje $1 Medijavikija',
'versionrequiredtext' => 'Potrebno je izdanje $1 Medijavikija da biste koristili ovu stranicu.
'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|1=novu poruku|999=nove poruke}}',
-'newmessagesdifflinkplural' => '{{PLURAL:$1|1=poslednju izmenu|999=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',
'badtitletext' => 'Naslov stranice je neispravan, prazan ili je međujezički ili međuviki naslov pogrešno povezan.
Možda sadrži znakove koji se ne mogu koristiti u naslovima.',
'perfcached' => 'Sledeći podaci su keširani i mogu biti zastareli. Keš sadrži najviše {{PLURAL:$1|jedan rezultat|$1 rezultata|$1 rezultata}}.',
-'perfcachedts' => 'Sledeći podaci su keširani i poslednji put su ažurirani $2 u $3. Keš sadrži najviše {{PLURAL:$4|1=jedan rezultat|$4 rezultata}}.',
+'perfcachedts' => 'Sledeći podaci su keširani i poslednji put su ažurirani $2 u $3. U kešu {{PLURAL:$4|je dostupan najviše jedan rezultat|su dostupna najviše $4 rezultata|je dostupno najviše $4 rezultata}}.',
'querypage-no-updates' => 'Ažuriranje ove stranice je trenutno onemogućeno.
Podaci koji se ovde nalaze mogu biti zastareli.',
'viewsource' => 'Izvorni kod',
'editinginterface' => "'''Upozorenje:''' uređujete stranicu koja se koristi za prikazivanje teksta korisničkog okruženja.
Izmene na ovoj stranici će uticati na sve korisnike ovog vikija.
Da biste dodali ili izmenili prevode svih vikija, posetite [//translatewiki.net/wiki/Main_Page?setlang=sr_ec Translejtviki], projekat za lokalizaciju Medijavikija.",
-'cascadeprotected' => 'Ova stranica je zaključana jer sadrži {{PLURAL:$1|1=sledeću stranicu koja je zaštićena|sledeće stranice koje su zaštićene}} „prenosivom“ zaštitom:
+'cascadeprotected' => 'Ova stranica je zaključana jer sadrži {{PLURAL:$1|sledeću stranicu koja je zaštićena|sledeće stranice koje su zaštićene}} „prenosivom“ zaštitom:
$2',
'namespaceprotected' => "Nemate dozvolu da uređujete stranice u imenskom prostoru '''$1'''.",
'customcssprotected' => 'Nemate dozvolu da menjate ovu CSS stranicu jer sadrži lične postavke drugog korisnika.',
'invalidtitle-knownnamespace' => 'Neispravan naslov s imenskim prostorom „$2“ i tekstom „$3“',
'invalidtitle-unknownnamespace' => 'Neispravan naslov s imenskim prostorom br. $1 i tekstom „$2“',
'exception-nologin' => 'Niste prijavljeni',
-'exception-nologin-text' => 'Ova stranica ili radnja zahteva da budete prijavljeni na viki.',
+'exception-nologin-text' => '[[Special:Userlogin|Prijavite se]] da biste pristupili ovoj stranici ili radnji.',
# Virus scanner
'virus-badscanner' => "Neispravna postavka: nepoznati skener za viruse: ''$1''",
'blocked-mailpassword' => 'Vašoj IP adresi je onemogućeno uređivanje stranica, kao i mogućnost zahtevanja nove lozinke.',
'eauthentsent' => 'Na navedenu e-adresu je poslat potvrdni kod.
Pre nego što pošaljemo daljnje poruke, pratite uputstva s e-pošte da biste potvrdili da ste vi otvorili nalog.',
-'throttled-mailpassword' => 'Podsetnik za lozinku je poslat {{PLURAL:$1|pre sat vremena|u poslednja $1 sata|u poslednjih $1 sati}}.
-Da bismo sprečili zloupotrebu, posednik šaljemo samo jednom u roku od {{PLURAL:$1|jednog sata|$1 sata|$1 sati}}.',
+'throttled-mailpassword' => 'Poruka za promenu lozinke je poslata u {{PLURAL:$1|poslednjih sat vremena|poslednja $1 sata|poslednjih $1 sati}}.
+Da bismo sprečili zloupotrebu, podsetnik šaljemo samo jednom u roku od {{PLURAL:$1|sat vremena|$1 sata|$1 sati}}.',
'mailerror' => 'Greška pri slanju poruke: $1',
'acct_creation_throttle_hit' => 'Posetioci ovog vikija koji koriste vašu IP adresu su već otvorili {{PLURAL:$1|jedan nalog|$1 naloga|$1 naloga}} prethodni dan, što je najveći dozvoljeni broj u tom vremenskom periodu.
Zbog toga posetioci s ove IP adrese trenutno ne mogu otvoriti više naloga.',
'emailauthenticated' => 'Vaša e-adresa je potvrđena $2 u $3.',
'emailnotauthenticated' => 'Vaša e-adresa još nije potvrđena.
-Poruke neće biti poslate ni za jednu od sledećih mogućnosti.',
+Poruke neće biti poslate ni u jednom od sledećih slučajeva.',
'noemailprefs' => 'Unesite e-adresu kako bi ove mogućnosti radile.',
'emailconfirmlink' => 'Potvrdite svoju e-adresu',
'invalidemailaddress' => 'E-adresa ne može biti prihvaćena jer je neispravnog oblika.
'filename-toolong' => 'Nazivi datoteka mogu imati najviše 240 bajtova.',
'badfilename' => 'Naziv datoteke je promenjen u „$1“.',
'filetype-mime-mismatch' => 'Ekstenzija „.$1“ ne odgovara prepoznatoj vrsti MIME datoteke ($2).',
-'filetype-badmime' => 'Datoteke MIME vrste „$1“ nije dozvoljeno slati.',
+'filetype-badmime' => 'Datoteke MIME tipa „$1“ nije dozvoljeno slati.',
'filetype-bad-ie-mime' => 'Ova datoteka se ne može poslati zato što bi je Internet eksplorer uočio kao „$1“, a to je zabranjena i opasna vrsta datoteke.',
'filetype-unwanted-type' => '„.$1“ je nepoželjna vrsta datoteke.
{{PLURAL:$3|1=Poželjna vrsta datoteke je|Poželjne vrste datoteka su}} $2.',
'site-atom-feed' => '$1 ఆటమ్ ఫీడు',
'page-rss-feed' => '"$1" ఆరెసెస్సు(RSS) ఫీడు',
'page-atom-feed' => '"$1" ఆటమ్ ఫీడు',
+'feed-atom' => 'యాటమ్',
'red-link-title' => '$1 (పుట లేదు)',
'sort-descending' => 'అవరోహణ క్రమంలో అమర్చు',
'sort-ascending' => 'ఆరోహణ క్రమంలో అమర్చు',
'recentchanges-label-minor' => 'ఇది ఒక చిన్న మార్పు',
'recentchanges-label-bot' => 'ఈ మార్పును ఒక బాటు చేసింది',
'recentchanges-label-unpatrolled' => 'ఈ దిద్దుబాటు మీద నిఘా లేదు',
+'recentchanges-label-plusminus' => 'ఈ పేజి పరిమాణంలో జరిగిన మార్పుల బైట్ల సంఖ్య',
+'recentchanges-legend-heading' => "'''సూచిక :'''",
'recentchanges-legend-newpage' => '([[Special:NewPages|కొత్త పేజీల జాబితా]]ను కూడా చూడండి)',
'rcnotefrom' => '<b>$2</b> నుండి జరిగిన మార్పులు (<b>$1</b> వరకు చూపబడ్డాయి).',
'rclistfrom' => '$1 నుండి జరిగిన మార్పులను చూపించు',
'listgrouprights' => 'వాడుకరి గుంపుల హక్కులు',
'listgrouprights-summary' => 'కింది జాబితాలో ఈ వికీలో నిర్వచించిన వాడుకరి గుంపులు, వాటికి సంబంధించిన హక్కులు ఉన్నాయి.
విడివిడిగా హక్కులకు సంబంధించిన మరింత సమాచారం [[{{MediaWiki:Listgrouprights-helppage}}]] వద్ద లభించవచ్చు.',
-'listgrouprights-key' => '* <span class="listgrouprights-granted">ప్రసాదించిన హక్కు</span>
+'listgrouprights-key' => 'సూచిక:
+* <span class="listgrouprights-granted">ప్రసాదించిన హక్కు</span>
* <span class="listgrouprights-revoked">వెనక్కి తీసుకున్న హక్కు</span>',
'listgrouprights-group' => 'గుంపు',
'listgrouprights-rights' => 'హక్కులు',
# Special:SpecialPages
'specialpages' => 'ప్రత్యేక పేజీలు',
+'specialpages-note-top' => 'సూచిక',
'specialpages-note' => '* మామూలు ప్రత్యేక పుటలు.
* <strong class="mw-specialpagerestricted">నియంత్రిత ప్రత్యేక పుటలు.</strong>
* <span class="mw-specialpagecached">Cached ప్రత్యేక పుటలు (పాతబడి ఉండొచ్చు).</span>',
'content-not-allowed-here' => '"$1" içeriğine, [[$2]] sayfasında izin verilmemekte.',
'editwarning-warning' => 'Bu sayfadan ayrılmak yaptığınız herhangi bir değişikliği kaybetmenize sebep olabilir.
Eğer giriş yaptıysanız, bu uyarıyı, tercihlerinizin "Sayfa yazma alanı" bölümünde devre dışı bırakabilirsiniz.',
+'editpage-notsupportedcontentformat-title' => 'İçerik biçimi desteklenmiyor',
+'editpage-notsupportedcontentformat-text' => '$1 içerik biçimi $2 içerik modeli tarafından desteklenmiyor.',
# Content models
'content-model-wikitext' => 'vikimetin',
Dosyanızı yinede yüklemek istiyorsanız, lütfen geri gidip yeni bir isim kullanın. [[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Bu dosya aşağıdaki {{PLURAL:$1|dosyanın|dosyaların}} kopyasıdır:',
'file-deleted-duplicate' => 'Bu dosyanın özdeşi olan başka bir dosya ([[:$1]]) daha önceden silindi. Bu dosyayı yeniden yüklemeden önce diğer dosyanın silme kayıtlarını kontrol etmelisiniz.',
+'file-deleted-duplicate-notitle' => 'Bu dosyaya eş bir dosya daha önceden silinmiş, ve başlık bastırılmış.
+Dosyayı tekrar yüklemeye devam etmeden önce, bastırılmış dosya verisini görme yetkisine sahip birisine durumu gözden geçirmesini istemelisiniz.',
'uploadwarning' => 'Yükleme uyarısı',
'uploadwarning-text' => 'Lütfen aşağıdaki dosya açıklamasını değiştirin ve tekrar deneyin.',
'savefile' => 'Dosyayı kaydet',
Engellemeleri gözden geçirmek için [[Special:BlockList|engel listesine]] bakınız.',
'ipb-blockingself' => 'Kendinizi engellemek üzeresiniz! Bunu yapmak istediğinizden emin misiniz?',
'ipb-confirmhideuser' => '"Kullanıcıyı gizle" seçiliyken bir kullanıcı engellemek üzeresiniz. Bu, kullanıcının adını tüm listeler ile günlük girişlerinde bastıracaktır. Bunu yapmak istediğinizden emin misiniz?',
+'ipb-confirmaction' => 'Bunu gerçekten yapmak istediğinize eminseniz, lütfen en alttaki "{{int:ipb-confirm}}" alanını işaretleyin.',
'ipb-edit-dropdown' => 'Engelleme nedenleri düzenle',
'ipb-unblock-addr' => '$1 için engellemeyi kaldır',
'ipb-unblock' => 'Engellemeyi kaldır',
'version-ext-colheader-credits' => 'Yazarlar',
'version-license-title' => '$1 için Lisans',
'version-license-not-found' => 'Bu uzantı için detaylı lisans bilgisi bulunamadı.',
+'version-credits-title' => '$1 için Krediler',
+'version-credits-not-found' => 'Bu eklenti için detaylı kredi bilgisi bulunamadı.',
'version-poweredby-credits' => "Bu wiki '''[https://www.mediawiki.org/ MediaWiki]''' programı kullanılarak oluşturulmuştur, telif © 2001-$1 $2.",
'version-poweredby-others' => 'diğerleri',
'version-poweredby-translators' => 'translatewiki.net çevirmenleri',
'api-error-overwrite' => 'Varolan dosyanın üzerine yazmaya izin verilmiyor.',
'api-error-stashfailed' => 'İç hata: Sunucu, geçici dosyaları kaybetti.',
'api-error-publishfailed' => 'İç hata: Sunucu geçici dosyayı yayınlarken başarısız oldu.',
+'api-error-stasherror' => 'Dosya zulaya yüklenirken hata oluştu.',
'api-error-timeout' => 'Sunucu beklenen süre içinde yanıt vermedi.',
'api-error-unclassified' => 'Bilinmeyen bir hata oluştu.',
'api-error-unknown-code' => 'Bilinmeyen hata: "$1"',
'expand_templates_generate_rawhtml' => 'Ham HTML göster',
'expand_templates_preview' => 'Önizleme',
+# Unknown messages
+'uploadinvalidxml' => 'Yüklenen dosyadaki XML işlenemedi.',
);
* @file
*
* @author Ariyo
+ * @author Arjunaraoc
*/
$messages = array(
Перевірте коректність HTML-тегів.',
'badsiglength' => 'Ваш підпис дуже довгий.
Повинно бути не більше $1 {{PLURAL:$1|символу|символів|символів}}.',
-'yourgender' => 'Як ви волÑ\96Ñ\94Ñ\82е бÑ\83Ñ\82и опиÑ\81аним?',
+'yourgender' => 'СÑ\82аÑ\82Ñ\8c:',
'gender-unknown' => 'Не визначена',
'gender-male' => 'Чоловіча',
'gender-female' => 'Жіноча',
'expand_templates_generate_rawhtml' => 'Показати сирий HTML',
'expand_templates_preview' => 'Попередній перегляд',
+# Unknown messages
+'uploadinvalidxml' => 'Не вдалося проаналізувати XML у завантаженому файлі.',
);
'userlogin-yourname' => 'Foydalanuvchi nomi',
'userlogin-yourname-ph' => 'Foydalanuvchi nomingizni kiriting',
'yourpassword' => 'Maxfiy soʻz:',
+'userlogin-yourpassword' => 'Maxfiy soʻz',
'userlogin-yourpassword-ph' => 'Maxfiy soʻzni kiriting',
'createacct-yourpassword-ph' => 'Maxfiy soʻzni kiriting',
'yourpasswordagain' => 'Maxfiy so‘zni qayta kiriting:',
'createacct-yourpasswordagain' => 'Maxfiy soʻzni tasdiqlang',
'createacct-yourpasswordagain-ph' => 'Maxfiy soʻzni yana bir bor kiriting',
'remembermypassword' => 'Hisob ma’lumotlarim ushbu brauzerda eslab qolinsin (ko‘pi bilan $1 {{PLURAL:$1|kunga|kunga}})',
-'userlogin-remembermypassword' => 'Esda saqla',
+'userlogin-remembermypassword' => 'Kirgan deb esda saqla',
'userlogin-signwithsecure' => 'Himoyalangan holda kirish',
'yourdomainname' => 'Sizning domeningiz:',
'password-change-forbidden' => 'Siz bu vikida maxfiy soʻzni oʻzgartira olmaysiz.',
'gotaccount' => "Hisobingiz bormi? '''$1'''.",
'gotaccountlink' => 'Kirish',
'userlogin-resetlink' => 'Kirish maʻlumotlaringiz esdan chiqdimi?',
-'userlogin-resetpassword-link' => 'Maxfiy soʻzni yangilash',
+'userlogin-resetpassword-link' => 'Unutib qoʻydingizmi?',
'userlogin-helplink' => '[[{{MediaWiki:helplogin-url}}|Kirish uchun yordam]]',
'createacct-join' => 'Maʼlumotlaringizni quyiga yozing',
'createacct-emailoptional' => 'Elektron pochta manzili (majburiy emas)',
'createacct-email-ph' => 'Elektron pochtangiz manzilini kiriting',
-'createaccountmail' => "E-mail orqali maxfiy so'zni jo'natish",
+'createaccountmail' => 'Vaqtinchalik maxfiy soʻzni koʻrsatilgan elektron pochta manzilimga joʻnatish',
'createaccountreason' => 'Sabab:',
'createacct-captcha' => 'Xavfsizlik tekshiruvi',
'createacct-imgcaptcha-ph' => 'Yuqoridagi yozuvni bu yerga kiriting',
'newpassword' => "Yangi mahfiy so'z:",
'retypenew' => 'Yangi mahfiy soʻzni qayta tering:',
'resetpass_submit' => "Maxfiy so'zni o'rnatish va kirish",
+'changepassword-success' => 'Maxfiy soʻzni oʻzgartirish muvaffaqiyatli oʻtdi!',
'resetpass_forbidden' => "Maxfiy so'z o'zgartirilishi mumkin emas",
'resetpass-submit-loggedin' => 'Maxfiy soʻzni oʻzgartirish',
'resetpass-submit-cancel' => 'Bekor',
'histlegend' => "Farqlarni tanlash: solishtirish uchun kerakli radiobokslarni belgilang va '''{{int:compare-submit}}''' tugmasini bosing.<br />
Bu yerda: '''({{int:cur}})''' = hozirgi koʻrinish bilan farqi, '''({{int:last}})''' = avvalgi koʻrinish bilan farqi, '''{{int:minoreditletter}}''' = kichkina tahrir.",
'history-fieldset-title' => 'Tarixni koʻrish',
-'history-show-deleted' => 'Faqat o‘chirilganlari',
+'history-show-deleted' => 'Faqat yoʻqotilganlari',
'histfirst' => 'Eng avvalgi',
'histlast' => 'Eng soʻnggi',
'historysize' => '({{PLURAL:$1|1 bayt|$1 bayt}})',
'showingresultsheader' => "$4 uchun {{PLURAL:$5|'''$3'''dan '''$1''' natija|'''$3'''dan '''$1 - $2''' natijalar}}",
'search-nonefound' => 'Talabga javob beradigan natija topilmadi.',
'powersearch-legend' => 'Kengaytirilgan qidiruv',
-'powersearch-ns' => 'Bu nom-fazolarda izla:',
+'powersearch-ns' => 'Quyidagi nomfazolardan qidir:',
'powersearch-redir' => 'Qayta yoʻnaltirishlarni koʻrsatish',
'powersearch-togglelabel' => 'Belgilash:',
'powersearch-toggleall' => 'Hammasini',
# User rights log
'rightslog' => 'Foydalanuvchi huquqlari koʻrsatilgan qaydlar',
+'rightslogtext' => 'Foydalanuvchi huquqlarini oʻzgartirish qaydlari.',
# Associated actions - in the sentence "You do not have permission to X"
'action-edit' => 'ushbu sahifani tahrirlash',
'recentchanges-label-minor' => 'Bu tahrir kichik deb belgilangan',
'recentchanges-label-bot' => 'Bu tahrirni bot bajargan',
'recentchanges-label-unpatrolled' => 'Bu tahrir hali tekshirilmagan',
-'recentchanges-label-plusminus' => 'sahifa vazni baytlarda qanchaga oʻzgargani',
+'recentchanges-label-plusminus' => 'vazni qanchaga oʻzgargani (bayt)',
'recentchanges-legend-heading' => "'''Izoh:'''",
-'recentchanges-legend-newpage' => '(shuningdek qarang: [[Special:NewPages|yangi sahifalar roʻyxati]])',
+'recentchanges-legend-newpage' => '([[Special:NewPages|alohida roʻyxat]])',
'rcnotefrom' => "Quyida <strong>$2</strong> dan (<strong>$1</strong> gacha) bo'lgan o'zgarishlar keltirilgan.",
'rclistfrom' => '$1 dan boshlab yangi oʻzgarishlarni koʻrsat.',
'rcshowhideminor' => 'Kichik tahrirlarni $1',
'license-header' => 'Litsenziyalash',
# Special:ListFiles
+'listfiles-summary' => 'Ushbu maxsus sahifada barcha yuklangan fayllar koʻrsatilgan.',
'imgfile' => 'fayl',
'listfiles' => 'Fayllar roʻyxati',
'listfiles_thumb' => 'Miniatura',
# Special:Log
'specialloguserlabel' => 'Ijrochi:',
-'speciallogtitlelabel' => 'Moʻljal (nom yoki foydalanuvchi):',
+'speciallogtitlelabel' => 'Moʻljal (foydalanuvchi yoki sahifa nomi):',
'log' => 'Qaydlar',
'all-logs-page' => 'Barcha ochiq qaydlar',
-'logempty' => 'Qaydnomada mos keladigan yozuvlar mavjud emas.',
+'alllogstext' => "{{SITENAME}}dagi barcha jurnallar roʻyxati.
+Natijalarni jurnal nomi, foydalanuvchi nomi (harflar katta-kichikligi inobatga olinadi) yoki sahifa nomi boʻyicha saralashingiz mumkin.
+* Biror foydalanuvchi ''amalga oshirgan qaydni'', uning foydalanuvchi nomini \"Ijrochi\" oynasiga kiritib qidirish mumkin.
+* Biror foydalanuvchi yoki sahifaga ''nisbatan'' amalga oshirilgan qaydni, ularning nomini \"Moʻljal\" oynasiga kiritib qidirish mumkin.",
+'logempty' => 'Talabga mos yozuvlar mavjud emas.',
'log-title-wildcard' => 'Shu matndan boshlanuvchi sarlavhalarni izlash',
# Special:AllPages
'contributions-title' => '{{GENDER:$1|Foydalanuvchi}} $1 hissasi',
'mycontris' => 'Hissam',
'contribsub2' => '$1 uchun ($2)',
-'nocontribs' => 'Belgilangan shartlarga muvofiq oʻzgarishlar topilmadi',
+'nocontribs' => 'Belgilangan shartlarga muvofiq oʻzgarishlar topilmadi.',
'uctop' => '(joriy)',
'month' => 'Oydan (va avvalroq)',
'year' => 'Yildan (va avvalroq)',
'sp-contributions-newbies-sub' => 'Yangi hisob yozuvlaridan',
'sp-contributions-newbies-title' => 'Yangi hisob yozuvlarining hissalari',
'sp-contributions-blocklog' => 'chetlatishlar',
-'sp-contributions-deleted' => "o'chirilgan tahrirlar",
+'sp-contributions-deleted' => 'yoʻqotilgan tahrirlar',
'sp-contributions-uploads' => 'yuklamalar',
'sp-contributions-logs' => 'qaydlar',
'sp-contributions-talk' => 'munozara',
'sp-contributions-userrights' => 'foydalanuvchining huquqlarini boshqarish',
+'sp-contributions-blocked-notice' => 'Ushbu foydalanuvchi hozirda tahrirlashdan chetlatilgan. Quyida chetlatish qaydlaridan soʻnggi yozuv keltirilgan:',
'sp-contributions-search' => 'Hissalarni qidirish',
'sp-contributions-username' => 'IP-manzil yoki foydalanuvchi nomi:',
'sp-contributions-toponly' => 'Faqat oxirgi deb hisoblangan tahrirlarni koʻrsat',
'ipadressorusername' => 'IP-manzil yoki foydalanuvchi nomi:',
'ipbexpiry' => 'Tugaydi:',
'ipbreason' => 'Sabab:',
-'ipbreason-dropdown' => "* Chetlashtirishning andazaviy sabablari
-** Yolg'on axborot kiritish
-** Sahifa matnini o'chirish
-** Tashqi saytlarga spam-yo'llanmalar
-** Ma'nosiz matn/axlat qo'shish
-** Tahdid, ishtirokchilarni ta'qib qilish
-** Bir necha hisob yozuvlaridan o'z manfaatlarida foydalanish
-** Ishtirokchining nomaqbul ismi",
+'ipbreason-dropdown' => '* Chetlashtirishning odatiy sabablari
+** Yolgʻon maʼlumot kiritish
+** Sahifa matnini toʻliq oʻchirish
+** Tashqi saytlarga spam-havolalar
+** Maʼnosiz matn/axlat qoʻshish
+** Foydalanuvchilarga tahdid qilish, ularni taʼqib qilish
+** Bir nechta hisob yozuvlaridan oʻz manfaatlarida foydalanish
+** Nomaqbul foydalanuvchi nomi',
'ipbsubmit' => 'Ushbu foydalanuvchini chetlashtirish',
'ipbother' => 'Boshqa vaqt:',
'ipboptions' => '2 soat:2 hours,1 kun:1 day,3 kun:3 days,1 hafta:1 week,2 hafta:2 weeks,1 oy:1 month,3 oy:3 months,6 oy:6 months,1 yil:1 year,cheksiz:infinite',
'table_pager_prev' => 'Oldingi sahifa',
'table_pager_first' => 'Birinchi sahifa',
'table_pager_last' => 'Oxirgi sahifa',
+'table_pager_limit_label' => 'Bir sahifadagi yozuvlar soni:',
# Auto-summaries
'autosumm-blank' => 'Sahifa tozalandi',
'logentry-patrol-patrol-auto' => '$1 $3 sahifasining $4 versiyasini avtomatik patrulladi',
'logentry-newusers-newusers' => '$1 hisob yozuvi yaratildi',
'logentry-newusers-create' => '$1 hisob yozuvi yaratildi',
+'logentry-newusers-autocreate' => '$1 hisob yozuvi avtomatik ravishda {{GENDER:$2|yaratilgan}}',
+'logentry-rights-rights' => '$1 $3ning guruhlardagi aʼzoligini $4dan $5ga {{GENDER:$2|oʻzgartirdi}}',
+'logentry-rights-rights-legacy' => '$1 $3ning guruhlardagi aʼzoligini oʻzgartirdi',
# Feedback
'feedback-close' => 'Bajarildi',
'timezoneregion-indian' => 'Indijan valdmeri',
'timezoneregion-pacific' => "Tün' valdmeri",
'allowemail' => 'Laskkat toižile kävutajile oigeta teile e-počtad',
-'prefs-searchoptions' => 'Ecindan järgendused',
+'prefs-searchoptions' => 'Ectä',
'prefs-namespaces' => 'Nimiavarused',
'defaultns' => 'Toižiš statjoiš ectä neniš nimiavarusiš:',
'default' => 'augotižjärgendusen mödhe',
'content-not-allowed-here' => 'Không cho phép đưa nội dung “$1” vào trang [[$2]]',
'editwarning-warning' => 'Rời khỏi trang này sẽ khiến bạn mất các sửa đổi đã thực hiện.
Nếu đã đăng nhập, bạn có thể tắt cảnh báo này tại mục “Sửa đổi” trong tùy chọn cá nhân.',
+'editpage-notsupportedcontentformat-title' => 'Không hỗ trợ định dạng nội dung',
+'editpage-notsupportedcontentformat-text' => 'Mô hình nội dung $2 không hỗ trợ định dạng nội dung $1.',
# Content models
'content-model-wikitext' => 'mã wiki',
'expand_templates_generate_rawhtml' => 'Hiển thị HTML thô',
'expand_templates_preview' => 'Xem trước',
+# Unknown messages
+'uploadinvalidxml' => 'Không thể phân tích mã XML trong tập tin tải lên.',
);
'content-not-allowed-here' => '"$1" אינהאלט נישט דערלויבט אויף בלאט [[$2]]',
'editwarning-warning' => 'איבערלאזן דעם בלאט קען גורם זײַן פֿארלירן אײַערע ענדערונגען.
אויב איר זענט ארײַנלאגירט, קענט איר מבטל זײַן די דאזיגע ווארענונג אין דער "באארבעטן" אפטיילונג פון אײַערע פרעפערענצן.',
+'editpage-notsupportedcontentformat-title' => 'אינהאלט־פארמאט נישט געשטיצט',
+'editpage-notsupportedcontentformat-text' => 'דער אינהאלט־פארמאט $1 ווערט ניט געשטיצט דורכן אינהאלט־מאדעל $2.',
# Content models
'content-model-wikitext' => 'וויקיטעקסט',
'expand_templates_generate_rawhtml' => '显示原始HTML',
'expand_templates_preview' => '预览',
+# Unknown messages
+'uploadinvalidxml' => '上传文件中的XML无法解析。',
);
'expand_templates_generate_rawhtml' => '顯示原始HTML',
'expand_templates_preview' => '預覽',
+# Unknown messages
+'uploadinvalidxml' => '上載檔案中的XML無法解析。',
);
Editor
Education
Egrave
-Ehcache
Elig
Email
Empty
edituserjs
edoe
egrave
-ehcache
ei
eich
eiinvalidparammix
+# Custom tags for JSDuck 4.x
# See also:
# - https://github.com/senchalabs/jsduck/wiki/Tags
# - https://github.com/senchalabs/jsduck/wiki/Custom-tags
+# - https://github.com/senchalabs/jsduck/wiki/Custom-tags/7f5c32e568eab9edc8e3365e935bcb836cb11f1d
require 'jsduck/meta_tag'
class SourceTag < JsDuck::MetaTag
end
end
end
+
+# As of JSDuck 5 this is in core
+class FiresTag < JsDuck::MetaTag
+ def initialize
+ @name = 'fires'
+ @multiline = true
+ end
+
+ # @param tags All matches of this tag on one class.
+ def to_html(tags)
+ doc = []
+ doc << '<h3 class="pa">Fires</h3>'
+ doc << [
+ '<ul>',
+ tags.map {|tag| render_long_event(tag) },
+ '</ul>',
+ ]
+ doc
+ end
+
+ def render_long_event(tag)
+ if tag =~ /\A(\w+)( .*)?\Z/m
+ name = $1
+ doc = $2 ? ': ' + $2 : ''
+ return [
+ '<li>',
+ format("{@link #event-#{name}} #{doc}"),
+ '</li>'
+ ]
+ end
+ end
+end
"name": "General",
"classes": [
"mw.Title",
+ "mw.Uri",
"mw.inspect",
"mw.inspect.reports",
"mw.notification",
{
"name": "API",
"classes": ["mw.Api*"]
+ },
+ {
+ "name": "Language",
+ "classes": [
+ "mw.language*",
+ "mw.cldr"
+ ]
}
]
},
{
"name": "Upstream",
"groups": [
+ {
+ "name": "OOJS",
+ "classes": ["OO", "OO.*"]
+ },
{
"name": "jQuery",
"classes": ["jQuery", "jQuery.Event", "jQuery.Callbacks", "jQuery.Promise", "jQuery.Deferred", "jQuery.jqXHR", "QUnit"]
"../../resources/mediawiki/mediawiki.log.js",
"../../resources/mediawiki/mediawiki.util.js",
"../../resources/mediawiki/mediawiki.Title.js",
+ "../../resources/mediawiki/mediawiki.Uri.js",
"../../resources/mediawiki/mediawiki.inspect.js",
"../../resources/mediawiki/mediawiki.notify.js",
"../../resources/mediawiki/mediawiki.notification.js",
"../../resources/mediawiki.action/mediawiki.action.view.postEdit.js",
"../../resources/mediawiki.page/mediawiki.page.startup.js",
"../../resources/mediawiki.api",
+ "../../resources/mediawiki.language",
"../../resources/jquery/jquery.localize.js",
- "../../resources/jquery/jquery.spinner.js"
+ "../../resources/jquery/jquery.spinner.js",
+ "../../resources/oojs"
]
}
+++ /dev/null
-<?php
-/**
- * Generates normalizer data files for Arabic and Malayalam.
- *
- * 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 MaintenanceLanguage
- */
-
-require_once __DIR__ . '/../../includes/normal/UtfNormalUtil.php';
-
-require_once __DIR__ . '/../Maintenance.php';
-
-/**
- * Generates normalizer data files for Arabic and Malayalam.
- * For NFC see includes/normal.
- *
- * @ingroup MaintenanceLanguage
- */
-class GenerateNormalizerData extends Maintenance {
- public $dataFile;
-
- public function __construct() {
- parent::__construct();
- $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
- 'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
- }
-
- public function execute() {
- if ( !$this->hasOption( 'unicode-data-file' ) ) {
- $this->dataFile = 'UnicodeData.txt';
- if ( !file_exists( $this->dataFile ) ) {
- $this->error( "Unable to find UnicodeData.txt. Please specify " .
- "its location with --unicode-data-file=<FILE>" );
- exit( 1 );
- }
- } else {
- $this->dataFile = $this->getOption( 'unicode-data-file' );
- if ( !file_exists( $this->dataFile ) ) {
- $this->error( 'Unable to find the specified data file.' );
- exit( 1 );
- }
- }
-
- $this->generateArabic();
- $this->generateMalayalam();
- }
-
- function generateArabic() {
- $file = fopen( $this->dataFile, 'r' );
- if ( !$file ) {
- $this->error( 'Unable to open the data file.' );
- exit( 1 );
- }
-
- // For the file format, see http://www.unicode.org/reports/tr44/
- $fieldNames = array(
- 'Code',
- 'Name',
- 'General_Category',
- 'Canonical_Combining_Class',
- 'Bidi_Class',
- 'Decomposition_Type_Mapping',
- 'Numeric_Type_Value',
- 'Bidi_Mirrored',
- 'Unicode_1_Name',
- 'ISO_Comment',
- 'Simple_Uppercase_Mapping',
- 'Simple_Lowercase_Mapping',
- 'Simple_Titlecase_Mapping'
- );
-
- $pairs = array();
-
- $lineNum = 0;
- while ( false !== ( $line = fgets( $file ) ) ) {
- ++$lineNum;
-
- # Strip comments
- $line = trim( substr( $line, 0, strcspn( $line, '#' ) ) );
- if ( $line === '' ) {
- continue;
- }
-
- # Split fields
- $numberedData = explode( ';', $line );
- $data = array();
- foreach ( $fieldNames as $number => $name ) {
- $data[$name] = $numberedData[$number];
- }
-
- $code = base_convert( $data['Code'], 16, 10 );
- if ( ( $code >= 0xFB50 && $code <= 0xFDFF ) # Arabic presentation forms A
- || ( $code >= 0xFE70 && $code <= 0xFEFF ) # Arabic presentation forms B
- ) {
- if ( $data['Decomposition_Type_Mapping'] === '' ) {
- // No decomposition
- continue;
- }
- if ( !preg_match( '/^ *(<\w*>) +([0-9A-F ]*)$/',
- $data['Decomposition_Type_Mapping'], $m )
- ) {
- $this->error( "Can't parse Decomposition_Type/Mapping on line $lineNum" );
- $this->error( $line );
- continue;
- }
-
- $source = hexSequenceToUtf8( $data['Code'] );
- $dest = hexSequenceToUtf8( $m[2] );
- $pairs[$source] = $dest;
- }
- }
-
- global $IP;
- file_put_contents( "$IP/serialized/normalize-ar.ser", serialize( $pairs ) );
- echo "ar: " . count( $pairs ) . " pairs written.\n";
- }
-
- function generateMalayalam() {
- $hexPairs = array(
- # From http://unicode.org/versions/Unicode5.1.0/#Malayalam_Chillu_Characters
- '0D23 0D4D 200D' => '0D7A',
- '0D28 0D4D 200D' => '0D7B',
- '0D30 0D4D 200D' => '0D7C',
- '0D32 0D4D 200D' => '0D7D',
- '0D33 0D4D 200D' => '0D7E',
-
- # From http://permalink.gmane.org/gmane.science.linguistics.wikipedia.technical/46413
- '0D15 0D4D 200D' => '0D7F',
- );
-
- $pairs = array();
- foreach ( $hexPairs as $hexSource => $hexDest ) {
- $source = hexSequenceToUtf8( $hexSource );
- $dest = hexSequenceToUtf8( $hexDest );
- $pairs[$source] = $dest;
- }
-
- global $IP;
- file_put_contents( "$IP/serialized/normalize-ml.ser", serialize( $pairs ) );
- echo "ml: " . count( $pairs ) . " pairs written.\n";
- }
-}
-
-$maintClass = 'GenerateNormalizerData';
-require_once RUN_MAINTENANCE_IF_MAIN;
--- /dev/null
+<?php
+/**
+ * Generates the normalizer data file for Arabic.
+ *
+ * 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 MaintenanceLanguage
+ */
+
+require_once __DIR__ . '/../Maintenance.php';
+
+/**
+ * Generates the normalizer data file for Arabic.
+ * For NFC see includes/normal.
+ *
+ * @ingroup MaintenanceLanguage
+ */
+class GenerateNormalizerDataAr extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Generate the normalizer data file for Arabic';
+ $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
+ 'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_NONE;
+ }
+
+ public function execute() {
+ if ( !$this->hasOption( 'unicode-data-file' ) ) {
+ $dataFile = 'UnicodeData.txt';
+ if ( !file_exists( $dataFile ) ) {
+ $this->error( "Unable to find UnicodeData.txt. Please specify " .
+ "its location with --unicode-data-file=<FILE>" );
+ exit( 1 );
+ }
+ } else {
+ $dataFile = $this->getOption( 'unicode-data-file' );
+ if ( !file_exists( $dataFile ) ) {
+ $this->error( 'Unable to find the specified data file.' );
+ exit( 1 );
+ }
+ }
+
+ $file = fopen( $dataFile, 'r' );
+ if ( !$file ) {
+ $this->error( 'Unable to open the data file.' );
+ exit( 1 );
+ }
+
+ // For the file format, see http://www.unicode.org/reports/tr44/
+ $fieldNames = array(
+ 'Code',
+ 'Name',
+ 'General_Category',
+ 'Canonical_Combining_Class',
+ 'Bidi_Class',
+ 'Decomposition_Type_Mapping',
+ 'Numeric_Type_Value_6',
+ 'Numeric_Type_Value_7',
+ 'Numeric_Type_Value_8',
+ 'Bidi_Mirrored',
+ 'Unicode_1_Name',
+ 'ISO_Comment',
+ 'Simple_Uppercase_Mapping',
+ 'Simple_Lowercase_Mapping',
+ 'Simple_Titlecase_Mapping'
+ );
+
+ $pairs = array();
+
+ $lineNum = 0;
+ while ( false !== ( $line = fgets( $file ) ) ) {
+ ++$lineNum;
+
+ # Strip comments
+ $line = trim( substr( $line, 0, strcspn( $line, '#' ) ) );
+ if ( $line === '' ) {
+ continue;
+ }
+
+ # Split fields
+ $numberedData = explode( ';', $line );
+ $data = array();
+ foreach ( $fieldNames as $number => $name ) {
+ $data[$name] = $numberedData[$number];
+ }
+
+ $code = base_convert( $data['Code'], 16, 10 );
+ if ( ( $code >= 0xFB50 && $code <= 0xFDFF ) # Arabic presentation forms A
+ || ( $code >= 0xFE70 && $code <= 0xFEFF ) # Arabic presentation forms B
+ ) {
+ if ( $data['Decomposition_Type_Mapping'] === '' ) {
+ // No decomposition
+ continue;
+ }
+ if ( !preg_match( '/^ *(<\w*>) +([0-9A-F ]*)$/',
+ $data['Decomposition_Type_Mapping'], $m )
+ ) {
+ $this->error( "Can't parse Decomposition_Type/Mapping on line $lineNum" );
+ $this->error( $line );
+ continue;
+ }
+
+ $source = hexSequenceToUtf8( $data['Code'] );
+ $dest = hexSequenceToUtf8( $m[2] );
+ $pairs[$source] = $dest;
+ }
+ }
+
+ global $IP;
+ file_put_contents( "$IP/serialized/normalize-ar.ser", serialize( $pairs ) );
+ echo "ar: " . count( $pairs ) . " pairs written.\n";
+ }
+}
+
+$maintClass = 'GenerateNormalizerDataAr';
+require_once RUN_MAINTENANCE_IF_MAIN;
--- /dev/null
+<?php
+/**
+ * Generates the normalizer data file for Malayalam.
+ *
+ * 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 MaintenanceLanguage
+ */
+
+require_once __DIR__ . '/../Maintenance.php';
+
+/**
+ * Generates the normalizer data file for Malayalam.
+ * For NFC see includes/normal.
+ *
+ * @ingroup MaintenanceLanguage
+ */
+class GenerateNormalizerDataMl extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Generate the normalizer data file for Malayalam';
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_NONE;
+ }
+
+ public function execute() {
+ $hexPairs = array(
+ # From http://unicode.org/versions/Unicode5.1.0/#Malayalam_Chillu_Characters
+ '0D23 0D4D 200D' => '0D7A',
+ '0D28 0D4D 200D' => '0D7B',
+ '0D30 0D4D 200D' => '0D7C',
+ '0D32 0D4D 200D' => '0D7D',
+ '0D33 0D4D 200D' => '0D7E',
+
+ # From http://permalink.gmane.org/gmane.science.linguistics.wikipedia.technical/46413
+ '0D15 0D4D 200D' => '0D7F',
+ );
+
+ $pairs = array();
+ foreach ( $hexPairs as $hexSource => $hexDest ) {
+ $source = hexSequenceToUtf8( $hexSource );
+ $dest = hexSequenceToUtf8( $hexDest );
+ $pairs[$source] = $dest;
+ }
+
+ global $IP;
+ file_put_contents( "$IP/serialized/normalize-ml.ser", serialize( $pairs ) );
+ echo "ml: " . count( $pairs ) . " pairs written.\n";
+ }
+}
+
+$maintClass = 'GenerateNormalizerDataMl';
+require_once RUN_MAINTENANCE_IF_MAIN;
--- /dev/null
+<?php
+/**
+ * Generates Utf8Case.ser from the Unicode Character Database and
+ * supplementary files.
+ *
+ * Copyright © 2004, 2008 Brion Vibber <brion@pobox.com>
+ * http://www.mediawiki.org/
+ *
+ * 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 MaintenanceLanguage
+ */
+
+require_once __DIR__ . '/../Maintenance.php';
+
+/**
+ * Generates Utf8Case.ser from the Unicode Character Database and
+ * supplementary files.
+ *
+ * @ingroup MaintenanceLanguage
+ */
+class GenerateUtf8Case extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Generate Utf8Case.ser from the Unicode Character Database ' .
+ 'and supplementary files';
+ $this->addOption( 'unicode-data-file', 'The local location of the data file ' .
+ 'from http://unicode.org/Public/UNIDATA/UnicodeData.txt', false, true );
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_NONE;
+ }
+
+ public function execute() {
+ if ( !$this->hasOption( 'unicode-data-file' ) ) {
+ $dataFile = 'UnicodeData.txt';
+ if ( !file_exists( $dataFile ) ) {
+ $this->error( "Unable to find UnicodeData.txt. Please specify " .
+ "its location with --unicode-data-file=<FILE>" );
+ exit( 1 );
+ }
+ } else {
+ $dataFile = $this->getOption( 'unicode-data-file' );
+ if ( !file_exists( $dataFile ) ) {
+ $this->error( 'Unable to find the specified data file.' );
+ exit( 1 );
+ }
+ }
+
+ $file = fopen( $dataFile, 'r' );
+ if ( !$file ) {
+ $this->error( 'Unable to open the data file.' );
+ exit( 1 );
+ }
+
+ // For the file format, see http://www.unicode.org/reports/tr44/
+ $fieldNames = array(
+ 'Code',
+ 'Name',
+ 'General_Category',
+ 'Canonical_Combining_Class',
+ 'Bidi_Class',
+ 'Decomposition_Type_Mapping',
+ 'Numeric_Type_Value_6',
+ 'Numeric_Type_Value_7',
+ 'Numeric_Type_Value_8',
+ 'Bidi_Mirrored',
+ 'Unicode_1_Name',
+ 'ISO_Comment',
+ 'Simple_Uppercase_Mapping',
+ 'Simple_Lowercase_Mapping',
+ 'Simple_Titlecase_Mapping'
+ );
+
+ $upper = array();
+ $lower = array();
+
+ $lineNum = 0;
+ while ( false !== ( $line = fgets( $file ) ) ) {
+ ++$lineNum;
+
+ # Strip comments
+ $line = trim( substr( $line, 0, strcspn( $line, '#' ) ) );
+ if ( $line === '' ) {
+ continue;
+ }
+
+ # Split fields
+ $numberedData = explode( ';', $line );
+ $data = array();
+ foreach ( $fieldNames as $number => $name ) {
+ $data[$name] = $numberedData[$number];
+ }
+
+ $source = hexSequenceToUtf8( $data['Code'] );
+ if ( $data['Simple_Uppercase_Mapping'] ) {
+ $upper[$source] = hexSequenceToUtf8( $data['Simple_Uppercase_Mapping'] );
+ }
+ if ( $data['Simple_Lowercase_Mapping'] ) {
+ $lower[$source] = hexSequenceToUtf8( $data['Simple_Lowercase_Mapping'] );
+ }
+ }
+
+ global $IP;
+ file_put_contents( "$IP/serialized/Utf8Case.ser", serialize( array(
+ 'wikiUpperChars' => $upper,
+ 'wikiLowerChars' => $lower,
+ ) ) );
+ }
+}
+
+$maintClass = 'GenerateUtf8Case';
+require_once RUN_MAINTENANCE_IF_MAIN;
'tags-summary',
'comparepages-summary',
'resettokens-summary',
+ 'version-db-mysql-url',
+ 'version-db-mariadb-url',
+ 'version-db-percona-url',
+ 'version-db-postgres-url',
+ 'version-db-oracle-url',
+ 'version-db-sqlite-url',
+ 'version-db-mssql-url',
'version-entrypoints-index-php',
'version-entrypoints-api-php',
'version-entrypoints-load-php',
'version-software',
'version-software-product',
'version-software-version',
+ 'version-db-mysql-url',
+ 'version-db-mariadb-url',
+ 'version-db-percona-url',
+ 'version-db-postgres-url',
+ 'version-db-oracle-url',
+ 'version-db-sqlite-url',
+ 'version-db-mssql-url',
'version-entrypoints',
'version-entrypoints-header-entrypoint',
'version-entrypoints-header-url',
'rc_last_oldid' => $lastOldId,
'rc_new' => $new,
'rc_type' => $new,
+ 'rc_source' => $new === 1 ? RecentChange::SRC_NEW : RecentChange::SRC_EDIT,
'rc_old_len' => $lastSize,
'rc_new_len' => $size,
), array(
'rc_this_oldid' => 0,
'rc_last_oldid' => 0,
'rc_type' => RC_LOG,
+ 'rc_source' => $dbw->addQuotes( RecentChange::SRC_LOG ),
'rc_cur_id' => $dbw->cascadingDeletes() ? 'page_id' : 'COALESCE(page_id, 0)',
'rc_log_type' => 'log_type',
'rc_log_action' => 'log_action',
-/**
+/*!
* Bosnian (bosanski) language functions
*/
-/**
+/*!
* Lower Sorbian (Dolnoserbski) language functions
*/
-/**
- * Finnish (Suomi) language functions
- * @author Santhosh Thottingal
+/*!
+ * Finnish (Suomi) language functions
+ * @author Santhosh Thottingal
*/
mediaWiki.language.convertGrammar = function ( word, form ) {
-/**
+/*!
* Irish (Gaeilge) language functions
*/
-/**
+/*!
* Hebrew (עברית) language functions
*/
-/**
+/*!
* Upper Sorbian (Hornjoserbsce) language functions
*/
-/**
- * Hungarian language functions
- * @author Santhosh Thottingal
+/*!
+ * Hungarian language functions
+ * @author Santhosh Thottingal
*/
mediaWiki.language.convertGrammar = function ( word, form ) {
-/**
+/*!
* Armenian (Հայերեն) language functions
*/
-/**
+/*!
* Latin (lingua Latina) language functions
* @author Santhosh Thottingal
*/
-/**
+/*!
* Ossetian (Ирон) language functions
* @author Santhosh Thottingal
*/
-
mediaWiki.language.convertGrammar = function ( word, form ) {
var grammarForms = mediaWiki.language.getData( 'os', 'grammarForms' ),
// Ending for allative case
-/**
+/*!
* Russian (Русский) language functions
*/
-/**
+/*!
* Slovenian (Slovenščina) language functions
*/
-/**
+/*!
* Ukrainian (Українська) language functions
*/
-/**
- * CLDR related utility methods.
- */
( function ( mw ) {
'use strict';
- var cldr = {
+ /**
+ * Namespace for CLDR-related utility methods.
+ *
+ * @class
+ * @singleton
+ */
+ mw.cldr = {
/**
- * For the number, get the plural for index
- * In case none of the rules passed, we return pluralRules.length
- * That means it is the "other" form.
- * @param number
+ * Get the plural form index for the number.
+ *
+ * In case none of the rules passed, we return `pluralRules.length` -
+ * that means it is the "other" form.
+ *
+ * @param {number} number
* @param {Array} pluralRules
* @return {number} plural form index
*/
}
};
- mw.cldr = cldr;
-
}( mediaWiki ) );
-/**
- * Base language object with methods for storing and getting
- * language data.
- */
( function ( mw ) {
-
- var language = {
+ /**
+ * Base language object with methods related to language support, attempting to mirror some of the
+ * functionality of the Language class in MediaWiki:
+ *
+ * - storing and retrieving language data
+ * - transforming message syntax (`{{PLURAL:}}`, `{{GRAMMAR:}}`, `{{GENDER:}}`)
+ * - formatting numbers
+ *
+ * @class
+ * @singleton
+ */
+ mw.language = {
/**
- * @var data {Object} Language related data (keyed by language,
- * contains instances of mw.Map).
- * @example Set data
- * <code>
+ * Language-related data (keyed by language, contains instances of mw.Map). Loaded dynamically
+ * (see ResourceLoaderLanguageDataModule in PHP docs, aka mediawiki.language.data module).
+ *
+ * To set data:
+ *
* // Override, extend or create the language data object of 'nl'
* mw.language.setData( 'nl', 'myKey', 'My value' );
*
* // Set multiple values at once
- * mw.language.setData( 'nl', { 'foo': 'X', 'bar': 'Y' } );
- * </code>
- * @example Get GrammarForms data for language 'nl':
- * <code>
+ * mw.language.setData( 'nl', { foo: 'X', bar: 'Y' } );
+ *
+ * To get GrammarForms data for language 'nl':
+ *
* var grammarForms = mw.language.getData( 'nl', 'grammarForms' );
- * </code>
+ *
+ * Possible data keys:
+ *
+ * - `digitTransformTable`
+ * - `separatorTransformTable`
+ * - `grammarForms`
+ * - `pluralRules`
+ * - `digitGroupingPattern`
+ *
+ * @property
*/
data: {},
/**
- * Convenience method for retreiving language data by language code and data key,
- * covering for the potential inexistance of a data object for this langiage.
- * @param langCode {String}
- * @param dataKey {String}
- * @return {mixed} Value stored in the mw.Map (or undefined if there is no map for
- the specified langCode).
+ * Convenience method for retrieving language data.
+ *
+ * Structured by language code and data key, covering for the potential inexistence of a
+ * data object for this language.
+ *
+ * @param {string} langCode
+ * @param {string} dataKey
+ * @return {Mixed} Value stored in the mw.Map (or `undefined` if there is no map for the specified
+ * langCode).
*/
getData: function ( langCode, dataKey ) {
- var langData = language.data;
+ var langData = mw.language.data;
if ( langData && langData[langCode] instanceof mw.Map ) {
return langData[langCode].get( dataKey );
}
},
/**
- * Convenience method for setting language data by language code and data key.
+ * Convenience method for setting language data.
+ *
* Creates the data mw.Map if there isn't one for the specified language already.
*
- * @param langCode {String}
- * @param dataKey {String|Object} Key or object of key/values.
- * @param value {mixed} Value for dataKey, ignored if dataKey is an object.
+ * @param {string} langCode
+ * @param {string|Object} dataKey Key or object of key/values.
+ * @param {Mixed} value Value for dataKey, ignored if dataKey is an object.
*/
setData: function ( langCode, dataKey, value ) {
- var langData = language.data;
+ var langData = mw.language.data;
if ( !( langData[langCode] instanceof mw.Map ) ) {
langData[langCode] = new mw.Map();
}
}
};
- mw.language = language;
-
}( mediaWiki ) );
-/**
- * Localized Language support attempts to mirror some of the functionality of
- * Language.php in MediaWiki.
- * This adds methods for transforming message text.
+/*
+ * Methods for transforming message syntax.
*/
( function ( mw, $ ) {
-var language = {
+/**
+ * @class mw.language
+ */
+$.extend( mw.language, {
/**
* Process the PLURAL template substitution
*
- * @param {object} template Template object
- * @format template
- * {
- * 'title': [title of template],
- * 'parameters': [template parameters]
- * }
- * @example {{Template:title|params}}
+ * @private
+ * @param {Object} template Template object
+ * @param {string} template.title
+ * @param {Array} template.parameters
+ * @return {string}
*/
procPLURAL: function ( template ) {
if ( template.title && template.parameters && mw.language.convertPlural ) {
/**
* Plural form transformations, needed for some languages.
*
- * @param count integer Non-localized quantifier
- * @param forms array List of plural forms
- * @return string Correct form for quantifier in this language
+ * @param {number} count Non-localized quantifier
+ * @param {Array} forms List of plural forms
+ * @return {string} Correct form for quantifier in this language
*/
convertPlural: function ( count, forms ) {
var pluralRules,
/**
* Pads an array to a specific length by copying the last one element.
*
- * @param forms array Number of forms given to convertPlural
- * @param count integer Number of forms required
- * @return array Padded array of forms
+ * @private
+ * @param {Array} forms Number of forms given to convertPlural
+ * @param {number} count Number of forms required
+ * @return {Array} Padded array of forms
*/
preConvertPlural: function ( forms, count ) {
while ( forms.length < count ) {
/**
* Provides an alternative text depending on specified gender.
- * Usage {{gender:[gender|user object]|masculine|feminine|neutral}}.
+ *
+ * Usage in message text: `{{gender:[gender|user object]|masculine|feminine|neutral}}`.
* If second or third parameter are not specified, masculine is used.
*
* These details may be overriden per language.
*
- * @param gender string male, female, or anything else for neutral.
- * @param forms array List of gender forms
- *
+ * @param {string} gender 'male', 'female', or anything else for neutral.
+ * @param {Array} forms List of gender forms
* @return string
*/
gender: function ( gender, forms ) {
/**
* Grammatical transformations, needed for inflected languages.
- * Invoked by putting {{grammar:form|word}} in a message.
- * The rules can be defined in $wgGrammarForms global or grammar
- * forms can be computed dynamically by overriding this method per language
+ * Invoked by putting `{{grammar:form|word}}` in a message.
+ *
+ * The rules can be defined in $wgGrammarForms global or computed
+ * dynamically by overriding this method per language.
*
- * @param word {String}
- * @param form {String}
- * @return {String}
+ * @param {string} word
+ * @param {string} form
+ * @return {string}
*/
convertGrammar: function ( word, form ) {
var grammarForms = mw.language.getData( mw.config.get( 'wgUserLanguage' ), 'grammarForms' );
return word;
}
-};
-
-$.extend( mw.language, language );
+} );
}( mediaWiki, jQuery ) );
-/**
+/*
* Transfer of month names from messages into mw.language.
*
* Loading this module also ensures the availability of appropriate messages via mw.msg.
* Information about month names in current UI language.
*
* Object keys:
+ *
* - `names`: array of month names (in nominative case in languages which have the distinction),
* zero-indexed
* - `genitive`: array of month names in genitive case, zero-indexed
* for appropriate messages which can be passed to mw.msg.
*
* @property
+ * @member mw.language
*/
mw.language.months = {
keys: {
/*
- * Number related utilities for mediawiki.language
+ * Number-related utilities for mediawiki.language.
*/
( function ( mw, $ ) {
+ /**
+ * @class mw.language
+ */
/**
* Pad a string to guarantee that it is at least `size` length by
* filling with the character `ch` at either the start or end of the
* string. Pads at the start, by default.
- * example:
- * Fill the string to length 10 with '+' characters on the right. Yields 'blah++++++'.
- * pad('blah', 10, '+', true);
*
+ * Example: Fill the string to length 10 with '+' characters on the right.
+ *
+ * pad('blah', 10, '+', true); // => 'blah++++++'
+ *
+ * @private
* @param {string} text The string to pad
- * @param {Number} size To provide padding
- * @param {string} ch Character to pad, defaults to '0'
- * @param {Boolean} end Adds padding at the end if true, otherwise pads at start
+ * @param {number} size The length to pad to
+ * @param {string} [ch='0'] Character to pad with
+ * @param {boolean} [end=false] Adds padding at the end if true, otherwise pads at start
* @return {string}
*/
- function pad ( text, size, ch, end ) {
+ function pad( text, size, ch, end ) {
if ( !ch ) {
ch = '0';
}
}
/**
- * Efficiently replicate a string n times.
+ * Efficiently replicate a string `n` times.
*
+ * @private
* @param {string} str The string to replicate
- * @param {Number} num Number of times to replicate the string
+ * @param {number} num Number of times to replicate the string
* @return {string}
*/
- function replicate ( str, num ) {
+ function replicate( str, num ) {
if ( num <= 0 || !str ) {
return '';
}
* Adapted from dojo/number library with thanks
* http://dojotoolkit.org/reference-guide/1.8/dojo/number.html
*
- * @param {Number} value the number to be formatted, ignores sign
+ * @private
+ * @param {number} value the number to be formatted, ignores sign
* @param {string} pattern the number portion of a pattern (e.g. `#,##0.00`)
- * @param {string} options.decimalThe decimal separator
- * @param {string} options.group The group separator
- *
+ * @param {Object} [options] If provided, both option keys must be present:
+ * @param {string} options.decimal The decimal separator. Defaults to: `'.'`.
+ * @param {string} options.group The group separator. Defaults to: `','`.
* @return {string}
*/
function commafyNumber( value, pattern, options ) {
$.extend( mw.language, {
/**
- * Converts a number using digitTransformTable.
+ * Converts a number using #getDigitTransformTable.
*
- * @param {Number} num Value to be converted
- * @param {boolean} integer Convert the return value to an integer
- * @return {Number|string} Formatted number
+ * @param {number} num Value to be converted
+ * @param {boolean} [integer=false] Whether to convert the return value to an integer
+ * @return {number|string} Formatted number
*/
convertNumber: function ( num, integer ) {
var i, tmp, transformTable, numberString, convertedNumber, pattern;
return integer ? parseInt( convertedNumber, 10 ) : convertedNumber;
},
+ /**
+ * Get the digit transform table for current UI language.
+ * @return {Object|Array}
+ */
getDigitTransformTable: function () {
return mw.language.getData( mw.config.get( 'wgUserLanguage' ),
'digitTransformTable' ) || [];
},
+ /**
+ * Get the separator transform table for current UI language.
+ * @return {Object|Array}
+ */
getSeparatorTransformTable: function () {
return mw.language.getData( mw.config.get( 'wgUserLanguage' ),
'separatorTransformTable' ) || [];
},
/**
- * Apply pattern to format value as a string using as per
- * unicode.org TR35 - http://www.unicode.org/reports/tr35/#Number_Format_Patterns.
+ * Apply pattern to format value as a string.
+ *
+ * Using patterns from [Unicode TR35](http://www.unicode.org/reports/tr35/#Number_Format_Patterns).
*
- * @param {Number} value
+ * @param {number} value
* @param {string} pattern Pattern string as described by Unicode TR35
- * @throws Error
- * @returns {String}
+ * @throws {Error} If unable to find a number expression in `pattern`.
+ * @return {string}
*/
commafy: function ( value, pattern ) {
var numberPattern,
.mw-changeslist-legend dt {
float: left;
+ margin-right: 0.5em;
}
.mw-changeslist-legend dd {
margin-left: 1.5em;
line-height: 1.3em;
}
-
-.mw-changeslist-legend dd.mw-changeslist-legend-plusminus {
- margin-left: 3.5em;
-}
/**
- * Library for simple URI parsing and manipulation. Requires jQuery.
+ * Library for simple URI parsing and manipulation. Dependencies: mw, jQuery.
*
- * Do not expect full RFC 3986 compliance. Intended to be minimal, but featureful.
- * The use cases we have in mind are constructing 'next page' or 'previous page' URLs,
- * detecting whether we need to use cross-domain proxies for an API, constructing
- * simple URL-based API calls, etc.
+ * Intended to be minimal, but featureful; do not expect full RFC 3986 compliance. The use cases we
+ * have in mind are constructing 'next page' or 'previous page' URLs, detecting whether we need to
+ * use cross-domain proxies for an API, constructing simple URL-based API calls, etc. Parsing here
+ * is regex-based, so may not work on all URIs, but is good enough for most.
*
- * Intended to compress very well if you use a JS-parsing minifier.
- *
- * Dependencies: mw, jQuery
- *
- * Example:
+ * You can modify the properties directly, then use the #toString method to extract the full URI
+ * string again. Example:
*
* var uri = new mw.Uri( 'http://example.com/mysite/mypage.php?quux=2' );
*
* // anchor with id 'id2' now links to http://foo.example.com/mysite/mypage.php?bar=3&quux=2&pif=paf
* }
*
- * Parsing here is regex based, so may not work on all URIs, but is good enough for most.
- *
* Given a URI like
- * 'http://usr:pwd@www.example.com:81/dir/dir.2/index.htm?q1=0&&test1&test2=&test3=value+%28escaped%29&r=1&r=2#top':
- * The returned object will have the following properties:
+ * `http://usr:pwd@www.example.com:81/dir/dir.2/index.htm?q1=0&&test1&test2=&test3=value+%28escaped%29&r=1&r=2#top`
+ * the returned object will have the following properties:
*
- * protocol 'http'
- * user 'usr'
- * password 'pwd'
- * host 'www.example.com'
- * port '81'
- * path '/dir/dir.2/index.htm'
- * query {
- * q1: 0,
- * test1: null,
- * test2: '',
- * test3: 'value (escaped)'
- * r: [1, 2]
- * }
- * fragment 'top'
+ * protocol 'http'
+ * user 'usr'
+ * password 'pwd'
+ * host 'www.example.com'
+ * port '81'
+ * path '/dir/dir.2/index.htm'
+ * query {
+ * q1: '0',
+ * test1: null,
+ * test2: '',
+ * test3: 'value (escaped)'
+ * r: ['1', '2']
+ * }
+ * fragment 'top'
*
- * n.b. 'password' is not technically allowed for HTTP URIs, but it is possible with other
- * sorts of URIs.
- * You can modify the properties directly. Then use the toString() method to extract the
- * full URI string again.
+ * (N.b., 'password' is technically not allowed for HTTP URIs, but it is possible with other kinds
+ * of URIs.)
*
- * Parsing based on parseUri 1.2.2 (c) Steven Levithan <stevenlevithan.com> MIT License
+ * Parsing based on parseUri 1.2.2 (c) Steven Levithan <stevenlevithan.com>, MIT License.
* http://stevenlevithan.com/demo/parseuri/js/
*
+ * @class mw.Uri
*/
( function ( mw, $ ) {
-
/**
- * Function that's useful when constructing the URI string -- we frequently encounter the pattern of
- * having to add something to the URI as we go, but only if it's present, and to include a character before or after if so.
- * @param {string|undefined} pre To prepend.
- * @param {string} val To include.
- * @param {string} post To append.
- * @param {boolean} raw If true, val will not be encoded.
- * @return {string} Result.
+ * Function that's useful when constructing the URI string -- we frequently encounter the pattern
+ * of having to add something to the URI as we go, but only if it's present, and to include a
+ * character before or after if so.
+ *
+ * @private
+ * @static
+ * @param {string|undefined} pre To prepend
+ * @param {string} val To include
+ * @param {string} post To append
+ * @param {boolean} raw If true, val will not be encoded
+ * @return {string} Result
*/
function cat( pre, val, post, raw ) {
if ( val === undefined || val === null || val === '' ) {
return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
}
- // Regular expressions to parse many common URIs.
+ /**
+ * Regular expressions to parse many common URIs.
+ *
+ * @private
+ * @static
+ * @property {Object} parser
+ */
var parser = {
strict: /^(?:([^:\/?#]+):)?(?:\/\/(?:(?:([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?([^:\/?#]*)(?::(\d*))?)?((?:[^?#\/]*\/)*[^?#]*)(?:\?([^#]*))?(?:#(.*))?/,
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?(?:(?:([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?([^:\/?#]*)(?::(\d*))?((?:\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?[^?#\/]*)(?:\?([^#]*))?(?:#(.*))?/
},
- // The order here matches the order of captured matches in the above parser regexes.
+ /**
+ * The order here matches the order of captured matches in the `parser` property regexes.
+ *
+ * @private
+ * @static
+ * @property {Array} properties
+ */
properties = [
- 'protocol', // http
- 'user', // usr
- 'password', // pwd
- 'host', // www.example.com
- 'port', // 81
- 'path', // /dir/dir.2/index.htm
- 'query', // q1=0&&test1&test2=value (will become { q1: '0', test1: '', test2: 'value' } )
- 'fragment' // top
+ 'protocol',
+ 'user',
+ 'password',
+ 'host',
+ 'port',
+ 'path',
+ 'query',
+ 'fragment'
];
+ /**
+ * @property {string} protocol For example `http` (always present)
+ */
+ /**
+ * @property {string|undefined} user For example `usr`
+ */
+ /**
+ * @property {string|undefined} password For example `pwd`
+ */
+ /**
+ * @property {string} host For example `www.example.com` (always present)
+ */
+ /**
+ * @property {string|undefined} port For example `81`
+ */
+ /**
+ * @property {string} path For example `/dir/dir.2/index.htm` (always present)
+ */
+ /**
+ * @property {Object} query For example `{ a: '0', b: '', c: 'value' }` (always present)
+ */
+ /**
+ * @property {string|undefined} fragment For example `top`
+ */
/**
- * We use a factory to inject a document location, for relative URLs, including protocol-relative URLs.
- * so the library is still testable & purely functional.
+ * A factory method to create a variation of mw.Uri with a different default location (for
+ * relative URLs, including protocol-relative URLs). Used so the library is still testable &
+ * purely functional.
+ *
+ * @method
+ * @member mw
*/
mw.UriRelative = function ( documentLocation ) {
var defaultUri;
/**
- * Constructs URI object. Throws error if arguments are illegal/impossible, or otherwise don't parse.
+ * @class mw.Uri
* @constructor
- * @param {Object|string} uri URI string, or an Object with appropriate properties (especially another URI object to clone).
- * Object must have non-blank 'protocol', 'host', and 'path' properties.
- * This parameter is optional. If omitted (or set to undefined, null or empty string), then an object will be created
- * for the default uri of this constructor (e.g. document.location for mw.Uri in MediaWiki core).
- * @param {Object|boolean} Object with options, or (backwards compatibility) a boolean for strictMode
- * - {boolean} strictMode Trigger strict mode parsing of the url. Default: false
- * - {boolean} overrideKeys Wether to let duplicate query parameters override eachother (true) or automagically
- * convert to an array (false, default).
+ *
+ * Construct a new URI object. Throws error if arguments are illegal/impossible, or
+ * otherwise don't parse.
+ *
+ * @param {Object|string} [uri] URI string, or an Object with appropriate properties (especially
+ * another URI object to clone). Object must have non-blank `protocol`, `host`, and `path`
+ * properties. If omitted (or set to `undefined`, `null` or empty string), then an object
+ * will be created for the default `uri` of this constructor (`document.location` for
+ * mw.Uri, other values for other instances -- see mw.UriRelative for details).
+ * @param {Object|boolean} [options] Object with options, or (backwards compatibility) a boolean
+ * for strictMode
+ * @param {boolean} [options.strictMode=false] Trigger strict mode parsing of the url.
+ * @param {boolean} [options.overrideKeys=false] Whether to let duplicate query parameters
+ * override each other (`true`) or automagically convert them to an array (`false`).
*/
function Uri( uri, options ) {
options = typeof options === 'object' ? options : { strictMode: !!options };
}
/**
- * Standard encodeURIComponent, with extra stuff to make all browsers work similarly and more compliant with RFC 3986
- * Similar to rawurlencode from PHP and our JS library mw.util.rawurlencode, but we also replace space with a +
- * @param {string} s String to encode.
- * @return {string} Encoded string for URI.
+ * Encode a value for inclusion in a url.
+ *
+ * Standard encodeURIComponent, with extra stuff to make all browsers work similarly and more
+ * compliant with RFC 3986. Similar to rawurlencode from PHP and our JS library
+ * mw.util.rawurlencode, except this also replaces spaces with `+`.
+ *
+ * @static
+ * @param {string} s String to encode
+ * @return {string} Encoded string for URI
*/
Uri.encode = function ( s ) {
return encodeURIComponent( s )
};
/**
- * Standard decodeURIComponent, with '+' to space.
- * @param {string} s String encoded for URI.
- * @return {string} Decoded string.
+ * Decode a url encoded value.
+ *
+ * Reversed #encode. Standard decodeURIComponent, with addition of replacing
+ * `+` with a space.
+ *
+ * @static
+ * @param {string} s String to decode
+ * @return {string} Decoded string
*/
Uri.decode = function ( s ) {
return decodeURIComponent( s.replace( /\+/g, '%20' ) );
/**
* Parse a string and set our properties accordingly.
- * @param {string} str URI
- * @param {Object} options
- * @return {boolean} Success.
+ *
+ * @private
+ * @param {string} str URI, see constructor.
+ * @param {Object} options See constructor.
*/
parse: function ( str, options ) {
- var q,
- uri = this,
- matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
+ var q, matches,
+ uri = this;
+
+ // Apply parser regex and set all properties based on the result
+ matches = parser[ options.strictMode ? 'strict' : 'loose' ].exec( str );
$.each( properties, function ( i, property ) {
uri[ property ] = matches[ i + 1 ];
} );
}
} );
}
- this.query = q;
+ uri.query = q;
},
/**
- * Returns user and password portion of a URI.
+ * Get user and password section of a URI.
+ *
* @return {string}
*/
getUserInfo: function () {
},
/**
- * Gets host and port portion of a URI.
+ * Get host and port section of a URI.
+ *
* @return {string}
*/
getHostPort: function () {
},
/**
- * Returns the userInfo and host and port portion of the URI.
- * In most real-world URLs, this is simply the hostname, but it is more general.
+ * Get the userInfo, host and port section of the URI.
+ *
+ * In most real-world URLs this is simply the hostname, but the definition of 'authority' section is more general.
+ *
* @return {string}
*/
getAuthority: function () {
},
/**
- * Returns the query arguments of the URL, encoded into a string
- * Does not preserve the order of arguments passed into the URI. Does handle escaping.
+ * Get the query arguments of the URL, encoded into a string.
+ *
+ * Does not preserve the original order of arguments passed in the URI. Does handle escaping.
+ *
* @return {string}
*/
getQueryString: function () {
},
/**
- * Returns everything after the authority section of the URI
+ * Get everything after the authority section of the URI.
+ *
* @return {string}
*/
getRelativePath: function () {
},
/**
- * Gets the entire URI string. May not be precisely the same as input due to order of query arguments.
- * @return {string} The URI string.
+ * Get the entire URI string.
+ *
+ * May not be precisely the same as input due to order of query arguments.
+ *
+ * @return {string} The URI string
*/
toString: function () {
return this.protocol + '://' + this.getAuthority() + this.getRelativePath();
/**
* Clone this URI
- * @return {Object} new URI object with same properties
+ *
+ * @return {Object} New URI object with same properties
*/
clone: function () {
return new Uri( this );
},
/**
- * Extend the query -- supply query parameters to override or add to ours
- * @param {Object} query parameters in key-val form to override or add
- * @return {Object} this URI object
+ * Extend the query section of the URI with new parameters.
+ *
+ * @param {Object} parameters Query parameters to add to ours (or to override ours with) as an
+ * object
+ * @return {Object} This URI object
*/
extend: function ( parameters ) {
$.extend( this.query, parameters );
return Uri;
};
- // if we are running in a browser, inject the current document location, for relative URLs
+ // If we are running in a browser, inject the current document location (for relative URLs).
if ( document && document.location && document.location.href ) {
mw.Uri = mw.UriRelative( document.location.href );
}
/**
* Base library for MediaWiki.
*
+ * Exposed as globally as `mediaWiki` with `mw` as shortcut.
+ *
* @class mw
* @alternateClassName mediaWiki
* @singleton
*
* Format defaults to 'text'.
*
+ * @example
+ *
+ * var obj, str;
+ * mw.messages.set( {
+ * 'hello': 'Hello world',
+ * 'hello-user': 'Hello, $1!',
+ * 'welcome-user': 'Welcome back to $2, $1! Last visit by $1: $3'
+ * } );
+ *
+ * obj = new mw.Message( mw.messages, 'hello' );
+ * mw.log( obj.text() );
+ * // Hello world
+ *
+ * obj = new mw.Message( mw.messages, 'hello-user', [ 'John Doe' ] );
+ * mw.log( obj.text() );
+ * // Hello, John Doe!
+ *
+ * obj = new mw.Message( mw.messages, 'welcome-user', [ 'John Doe', 'Wikipedia', '2 hours ago' ] );
+ * mw.log( obj.text() );
+ * // Welcome back to Wikipedia, John Doe! Last visit by John Doe: 2 hours ago
+ *
+ * // Using mw.message shortcut
+ * obj = mw.message( 'hello-user', 'John Doe' );
+ * mw.log( obj.text() );
+ * // Hello, John Doe!
+ *
+ * // Using mw.msg shortcut
+ * str = mw.msg( 'hello-user', 'John Doe' );
+ * mw.log( str );
+ * // Hello, John Doe!
+ *
+ * // Different formats
+ * obj = new mw.Message( mw.messages, 'hello-user', [ 'John "Wiki" <3 Doe' ] );
+ *
+ * obj.format = 'text';
+ * str = obj.toString();
+ * // Same as:
+ * str = obj.text();
+ *
+ * mw.log( str );
+ * // Hello, John "Wiki" <3 Doe!
+ *
+ * mw.log( obj.escaped() );
+ * // Hello, John "Wiki" <3 Doe!
+ *
* @class mw.Message
*
* @constructor
* Map of configuration values
*
* Check out [the complete list of configuration values](https://www.mediawiki.org/wiki/Manual:Interface/JavaScript#mw.config)
- * on MediaWiki.org.
+ * on mediawiki.org.
*
- * If `$wgLegacyJavaScriptGlobals` is true, this Map will put its values in the
- * global window object.
+ * If `$wgLegacyJavaScriptGlobals` is true, this Map will add its values to the
+ * global `window` object.
*
* @property {mw.Map} config
*/
- // Dummy placeholder. Re-assigned in ResourceLoaderStartupModule with an instance of `mw.Map`.
+ // Dummy placeholder. Re-assigned in ResourceLoaderStartupModule to an instance of `mw.Map`.
config: null,
/**
* This was reserved for future use but never ended up being used.
*
* @deprecated since 1.22: Let deprecated identifiers keep their original name
- * and use mw.log#deprecate to create an access container for tracking.
+ * and use mw.log#deprecate to create an access container for tracking.
* @property
*/
legacy: {},
/**
* Get a message object.
*
- * Similar to wfMessage() in MediaWiki PHP.
+ * Shorcut for `new mw.Message( mw.messages, key, parameters )`.
*
+ * @see mw.Message
* @param {string} key Key of message to get
* @param {Mixed...} parameters Parameters for the $N replacements in messages.
* @return {mw.Message}
},
/**
- * Get a message string using 'text' format.
+ * Get a message string using the (default) 'text' format.
*
- * Similar to wfMsg() in MediaWiki PHP.
+ * Shortcut for `mw.message( key, parameters... ).text()`.
*
* @see mw.Message
* @param {string} key Key of message to get
/**
* Register a source.
*
- * @param {string} id Short lowercase a-Z string representing a source, only used internally.
- * @param {Object} props Object containing only the loadScript property which is a url to
- * the load.php location of the source.
+ * The #work method will use this information to split up requests by source.
+ *
+ * mw.loader.addSource( 'mediawikiwiki', { loadScript: '//www.mediawiki.org/w/load.php' } );
+ *
+ * @param {string} id Short string representing a source wiki, used internally for
+ * registered modules to indicate where they should be loaded from (usually lowercase a-z).
+ * @param {Object} props
+ * @param {string} props.loadScript Url to the load.php entry point of the source wiki.
* @return {boolean}
*/
addSource: function ( id, props ) {
/**
* Execute a function as soon as one or more required modules are ready.
*
+ * Example of inline dependency on OOjs:
+ *
+ * mw.loader.using( 'oojs', function () {
+ * OO.compare( [ 1 ], [ 1 ] );
+ * } );
+ *
* @param {string|Array} dependencies Module name or array of modules names the callback
* dependends on to be ready before executing
* @param {Function} [ready] callback to execute when all dependencies are ready
* Get the version of a module.
*
* @param {string} module Name of module to get version for
+ * @return {string|null} The version, or null if the module (or its version) is not
+ * in the registry.
*/
getVersion: function ( module ) {
if ( registry[module] !== undefined && registry[module].version !== undefined ) {
},
/**
- * Get names of all registered modules.
+ * Get the names of all registered modules.
*
* @return {Array}
*/
* pages are loaded with different module sets, the possibility exists that
* modules saved by one page will be clobbered by another. But the impact would
* be minor and the problem would be corrected by subsequent page views.
+ *
+ * @method
*/
update: ( function () {
var timer;
return {
/**
* Escape a string for HTML. Converts special characters to HTML entities.
+ *
+ * mw.html.escape( '< > \' & "' );
+ * // Returns < > ' & "
+ *
* @param {string} s The string to escape
*/
escape: function ( s ) {
map = {
// SimpleSearch is broken in Opera < 9.6
opera: [['>=', 9.6]],
+ // Older Konquerors are unable to position the suggestions correctly (bug 50805)
+ konqueror: [['>=', '4.11']],
docomo: false,
blackberry: false,
ipod: false,
--- /dev/null
+/UnicodeData.txt
+/allkeys.txt
+/ucd.all.grouped.xml
+/ucd.all.grouped.zip
-
-SPECIAL_TARGETS=Utf8Case.ser
+SPECIAL_TARGETS=Utf8Case.ser normalize-ar.ser normalize-ml.ser first-letters-root.ser
ALL_TARGETS=$(SPECIAL_TARGETS)
DIST_TARGETS=$(SPECIAL_TARGETS)
+UNICODE_VERSION=6.0.0
.PHONY: all dist clean
clean:
rm -f $(ALL_TARGETS)
-Utf8Case.ser : ../includes/normal/Utf8Case.php
- php serialize.php -o $@ $<
+Utf8Case.ser: UnicodeData.txt
+ php ../maintenance/language/generateUtf8Case.php
+
+normalize-ar.ser: UnicodeData.txt
+ php ../maintenance/language/generateNormalizerDataAr.php
+
+normalize-ml.ser:
+ php ../maintenance/language/generateNormalizerDataMl.php
+
+first-letters-root.ser: allkeys.txt ucd.all.grouped.xml
+ php ../maintenance/language/generateCollationData.php
+
+UnicodeData.txt:
+ wget http://www.unicode.org/Public/$(UNICODE_VERSION)/ucd/UnicodeData.txt
+
+allkeys.txt:
+ wget http://www.unicode.org/Public/UCA/$(UNICODE_VERSION)/allkeys.txt
+
+ucd.all.grouped.xml: ucd.all.grouped.zip
+ unzip ucd.all.grouped.zip ucd.all.grouped.xml
+ucd.all.grouped.zip:
+ wget http://www.unicode.org/Public/$(UNICODE_VERSION)/ucdxml/ucd.all.grouped.zip
+++ /dev/null
-<?php
-/**
- * Serialize variables found in input file and store the result in the
- * specified file.
- *
- * 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
- */
-
-if ( !defined( 'MEDIAWIKI' ) ) {
- $wgNoDBParam = true;
- $optionsWithArgs = array( 'o' );
- require_once __DIR__ .'/../maintenance/commandLine.inc';
-
- $stderr = fopen( 'php://stderr', 'w' );
- if ( !isset( $args[0] ) ) {
- fwrite( $stderr, "No input file specified\n" );
- exit( 1 );
- }
- if ( wfIsWindows() ) {
- $files = array();
- foreach ( $args as $arg ) {
- $files = array_merge( $files, glob( $arg ) );
- }
- if ( !$files ) {
- fwrite( $stderr, "No files found\n" );
- }
- } else {
- $files = $args;
- }
-
- if ( isset( $options['o'] ) ) {
- $out = fopen( $options['o'], 'wb' );
- if ( !$out ) {
- fwrite( $stderr, "Unable to open file \"{$options['o']}\" for output\n" );
- exit( 1 );
- }
- } else {
- $out = fopen( 'php://stdout', 'wb' );
- }
-
- $vars = array();
- foreach ( $files as $inputFile ) {
- $vars = array_merge( $vars, getVars( $inputFile ) );
- }
- fwrite( $out, serialize( $vars ) );
- fclose( $out );
- exit( 0 );
-}
-
-//----------------------------------------------------------------------------
-
-function getVars( $_gv_filename ) {
- require $_gv_filename;
- $vars = get_defined_vars();
- unset( $vars['_gv_filename'] );
-
- # Clean up line endings
- if ( wfIsWindows() ) {
- $vars = unixLineEndings( $vars );
- }
- return $vars;
-}
-
-function unixLineEndings( $var ) {
- static $recursionLevel = 0;
- if ( $recursionLevel > 50 ) {
- global $stderr;
- fwrite( $stderr, "Error: Recursion limit exceeded. Possible circular reference in array variable.\n" );
- exit( 2 );
- }
-
- if ( is_array( $var ) ) {
- ++$recursionLevel;
- $var = array_map( 'unixLineEndings', $var );
- --$recursionLevel;
- } elseif ( is_string( $var ) ) {
- $var = str_replace( "\r\n", "\n", $var );
- }
- return $var;
-}
!! end
!! test
-CSS safety test: vertical tab
+CSS safety test (all browsers): vertical tab (bug 55332 / CVE-2013-4567)
!! input
<p style="font-size: 100px; background-image:url\b(https://www.google.com/images/srpr/logo6w.png)">A</p>
!! result
!! end
!! test
-MSIE CSS safety test: Fullwidth
+MSIE 6 CSS safety test: Fullwidth (bug 55332)
!! input
<p style="font-size: 100px; color: expression((title='XSSed'),'red')">A</p>
<div style="top:EXPRESSION(alert())">B</div>
!! end
!! test
-MSIE CSS safety test: IPA extensions
+MSIE 6 CSS safety test: IPA extensions (bug 55332)
!! input
<div style="background-image:uʀʟ(javascript:alert())">A</div>
<p style="font-size: 100px; color: expʀessɪoɴ((title='XSSed'),'red')">B</p>
!! end
!! test
-MSIE CSS safety test: sup/sub script
+MSIE 6 CSS safety test: sup/sub script (bug 55332)
!! input
<div style="background-image:url⁽javascript:alert())">A</div>
<div style="background-image:url₍javascript:alert())">B</div>
!! end
!! test
-MSIE CSS safety test: Repetition markers
+Opera -o-link CSS
+!! input
+<div
+title="data:text/html,<img src=1 onerror=alert(1)>"
+style="-o-link:attr(title);-o-link-source:current">X</div>
+!! result
+<div title="data:text/html,<img src=1 onerror=alert(1)>" style="/* insecure input */">X</div>
+
+!! end
+
+!! test
+MSIE 6 CSS safety test: Repetition markers (bug 55332)
!! input
<p style="font-size: 100px; color: expres〱ion((title='XSSed'),'red')">A</p>
<p style="font-size: 100px; color: expresゝion((title='XSSed'),'red')">B</p>
</p>
!! end
+!! test
+Wrong option for formatNum (bug 56199)
+!! input
+{{formatnum:1,234.56|Random}}
+{{formatnum:1,234.56|EVERYTHING}}
+{{formatnum:1234.56|any argument that has the string 'NOSEP'}}
+!! result
+<p>1,234.56
+1,234.56
+1,234.56
+</p>
+!! end
+
!! test
Strip marker in grammar
!! options
$this->assertInstanceOf( $expected, $pokemons, $message );
}
+
+ /**
+ * Asserts that the given string is a valid HTML snippet.
+ * Wraps the given string in the required top level tags and
+ * then calls assertValidHtmlDocument().
+ * The snippet is expected to be HTML 5.
+ *
+ * @note: Will mark the test as skipped if the "tidy" module is not installed.
+ * @note: This ignores $wgUseTidy, so we can check for valid HTML even (and especially)
+ * when automatic tidying is disabled.
+ *
+ * @param string $html An HTML snippet (treated as the contents of the body tag).
+ */
+ protected function assertValidHtmlSnippet( $html ) {
+ $html = '<!DOCTYPE html><html><head><title>test</title></head><body>' . $html . '</body></html>';
+ $this->assertValidHtmlDocument( $html );
+ }
+
+ /**
+ * Asserts that the given string is valid HTML document.
+ *
+ * @note: Will mark the test as skipped if the "tidy" module is not installed.
+ * @note: This ignores $wgUseTidy, so we can check for valid HTML even (and especially)
+ * when automatic tidying is disabled.
+ *
+ * @param string $html A complete HTML document
+ */
+ protected function assertValidHtmlDocument( $html ) {
+ // Note: we only validate if the tidy PHP extension is available.
+ // In case wgTidyInternal is false, MWTidy would fall back to the command line version
+ // of tidy. In that case however, we can not reliably detect whether a failing validation
+ // is due to malformed HTML, or caused by tidy not being installed as a command line tool.
+ // That would cause all HTML assertions to fail on a system that has no tidy installed.
+ if ( !$GLOBALS['wgTidyInternal'] ) {
+ $this->markTestSkipped( 'Tidy extension not installed' );
+ }
+
+ $ok = MWTidy::checkErrors( $html, $errors );
+ $this->assertTrue( $ok, 'HTML validation errors: ' . $errors );
+ }
}
+++ /dev/null
-<?php
-
-class TestAutoloadedAliasedClassNew {
-}
}
$formatter->filterContent();
$html = $formatter->getText();
+
+ $this->assertValidHtmlSnippet( $html );
$this->assertEquals( self::normalize( $expected ), self::normalize( $html ) );
}
$cases[] = array(
array( "$base/unittest-cont1/e/a/x.txt", "$base/unittest-cont1/e/a/y.txt",
"$base/unittest-cont1/e/a/z.txt" ),
- array( "contents xx", "contents xy", "contents xz" )
+ array( "contents xx $", "contents xy 111", "contents xz" )
);
return $cases;
$cases[] = array(
array( "$base/unittest-cont1/e/a/x.txt", "$base/unittest-cont1/e/a/y.txt",
"$base/unittest-cont1/e/a/z.txt" ),
- array( "contents xx", "contents xy", "contents xz" )
+ array( "contents xx 1111", "contents xy %", "contents xz $" )
);
return $cases;
array( 16909060, '1.2.3.4' ),
array( 2130706433, '127.0.0.1' ),
array( '2147483648', '128.0.0.0' ),
+ array( 2130706440, '127.0.0.08' ),
+ array( 2130706441, '127.0.0.09' ),
array( '3735931646', '222.173.202.254' ),
array( pow( 2, 32 ) - 1, '255.255.255.255' ),
array( false, 'IN.VA.LI.D' ),
'TestAutoloadedLocalClass' => __DIR__ . '/../data/autoloader/TestAutoloadedLocalClass.php',
'TestAutoloadedCamlClass' => __DIR__ . '/../data/autoloader/TestAutoloadedCamlClass.php',
'TestAutoloadedSerializedClass' => __DIR__ . '/../data/autoloader/TestAutoloadedSerializedClass.php',
- 'TestAutoloadedAliasedClass' => 'alias:TestAutoloadedAliasedClassNew',
- 'TestAutoloadedAliasedClassDeprecated' => 'alias:TestAutoloadedAliasedClassNew?v=1.1',
- 'TestAutoloadedAliasedClassNew' => __DIR__ . '/../data/autoloader/TestAutoloadedAliasedClassNew.php',
);
$this->setMwGlobals( 'wgAutoloadLocalClasses', $this->testLocalClasses + $wgAutoloadLocalClasses );
AutoLoader::resetAutoloadLocalClassesLower();
$expected = $wgAutoloadLocalClasses + $wgAutoloadClasses;
$actual = array();
- // Check aliases
- foreach ( $expected as $class => $file ) {
- if ( substr( $file, 0, 6 ) !== 'alias:' ) {
- // Not an alias, so should be an actual file
- $files[] = $file;
- } else {
- $newClass = substr( $file, 6, strcspn( $file, '?', 6 ) );
- if ( isset( $expected[$newClass] ) ) {
- if ( substr( $expected[$newClass], 0, 6 ) !== 'alias:' ) {
- // Alias pointing to an existing MediaWiki class
- $actual[$class] = $file;
- }
- }
- }
- }
-
- $files = array_unique( $files );
+ $files = array_unique( $expected );
foreach ( $files as $file ) {
// Only prefix $IP if it doesn't have it already.
$this->assertFalse( $uncerealized instanceof __PHP_Incomplete_Class,
"unserialize() can load classes case-insensitively." );
}
-
- function testAliasedClass() {
- $this->assertSame( 'TestAutoloadedAliasedClassNew',
- get_class( new TestAutoloadedAliasedClass ) );
- }
-
- function testAliasedClassDeprecated() {
- wfSuppressWarnings();
- $this->assertSame( 'TestAutoloadedAliasedClassNew',
- get_class( new TestAutoloadedAliasedClassDeprecated ) );
- wfRestoreWarnings();
- }
}
QUnit.module( 'mediawiki.jqueryMsg', QUnit.newMwEnvironment( {
setup: function () {
- this.orgMwLangauge = mw.language;
- mw.language = $.extend( true, {}, this.orgMwLangauge );
+ this.originalMwLanguage = mw.language;
// Messages that are reused in multiple tests
mw.messages.set( {
} );
},
teardown: function () {
- mw.language = this.orgMwLangauge;
+ mw.language = this.originalMwLanguage;
}
} ) );