* (bug 69789) Title::getContentModel() now loads from the database when
necessary instead of incorrectly returning the default content model.
* (bug 69249) wfBaseConvert() now works around PHP Bug #50175 when using GMP.
+* (bug 57909) URLs in the externallinks table will no longer have certain
+ characters decoded in the query string.
=== Action API changes in 1.24 ===
* action=parse API now supports prop=modules, which provides the list of
&$titleArray: set this to an object to override the default object returned
$res: database result used to create the object
+'TitleExists': Called when determining whether a page exists at a given title.
+$title: The title being tested.
+&$exists: Whether the title exists.
+
'TitleQuickPermissions': Called from Title::checkQuickPermissions to add to
or override the quick permissions check.
$title: The Title object being accessed
// Do this in its own transaction to reduce contention...
$dbw = wfGetDB( DB_MASTER );
$dbw->onTransactionIdle( function () use ( $dbw, $title, $watch, $wgUser, $fname ) {
- $dbw->begin( $fname );
WatchAction::doWatchOrUnwatch( $watch, $title, $wgUser );
- $dbw->commit( $fname );
} );
}
}
*
* This function replaces all old wfMsg* functions.
*
- * @param string $key Message key
+ * @param string|string[] $key Message key, or array of keys
* @param mixed $params,... Normal message parameters
* @return Message
*
* @param User $user
* @param string $reason
* @param bool $createRedirect
- * @return array|bool True on success, getUserPermissionsErrors()-like array on failure
+ * @return Status
*/
public function move( User $user, $reason, $createRedirect ) {
global $wgCategoryCollation;
if ( $file->exists() ) {
$status = $file->move( $this->newTitle );
if ( !$status->isOk() ) {
- return $status->getErrorsArray();
+ return $status;
}
}
// Clear RepoGroup process cache
$dbw->commit( __METHOD__ );
wfRunHooks( 'TitleMoveComplete', array( &$this->oldTitle, &$this->newTitle, &$user, $pageid, $redirid, $reason ) );
- return true;
+ return Status::newGood();
}
* @return string
*/
function getButtons() {
+ global $wgUseMediaWikiUIEverywhere;
+ $attrs = $wgUseMediaWikiUIEverywhere ? array( 'class' => 'mw-ui-button mw-ui-quiet' ) : array();
+
if ( !$this->getModifiedUser()->isAllowedAny( 'editmyprivateinfo', 'editmyoptions' ) ) {
return '';
}
if ( $this->getModifiedUser()->isAllowed( 'editmyoptions' ) ) {
$t = SpecialPage::getTitleFor( 'Preferences', 'reset' );
- $html .= "\n" . Linker::link( $t, $this->msg( 'restoreprefs' )->escaped() );
+ $html .= "\n" . Linker::link( $t, $this->msg( 'restoreprefs' )->escaped(),
+ $attrs );
$html = Xml::tags( 'div', array( 'class' => 'mw-prefs-buttons' ), $html );
}
wfRunHooks( 'TitleMove', array( $this, $nt, $wgUser ) );
$mp = new MovePage( $this, $nt );
- return $mp->move( $wgUser, $reason, $createRedirect );
+ $status = $mp->move( $wgUser, $reason, $createRedirect );
+ if ( $status->isOK() ) {
+ return true;
+ } else {
+ return $status->getErrorsArray();
+ }
}
/**
* @return bool
*/
public function exists() {
- return $this->getArticleID() != 0;
+ $exists = $this->getArticleID() != 0;
+ wfRunHooks( 'TitleExists', array( $this, &$exists ) );
+ return $exists;
}
/**
*/
/**
- * Bloom filter implented using Redis
+ * Bloom filter implemented using Redis
*
* The Redis server must be >= 2.6 and should have volatile-lru or volatile-ttl
* if there is any eviction policy. It should not be allkeys-* in any case. Also,
- * this can be used in a simple master/slave setup or with Redis Sentinal preferably.
+ * this can be used in a simple master/slave setup or with Redis Sentinel preferably.
*
* Some bits are based on https://github.com/ErikDubbelboer/redis-lua-scaling-bloom-filter
* but are simplified to use a single filter instead of up to 32 filters.
protected $mFieldTree;
protected $mShowReset = false;
protected $mShowSubmit = true;
+ protected $mSubmitModifierClass = 'mw-ui-constructive';
protected $mSubmitCallback;
protected $mValidationErrorMessage;
$attribs['class'] = array( 'mw-htmlform-submit' );
if ( $this->isVForm() || $useMediaWikiUIEverywhere ) {
- array_push( $attribs['class'], 'mw-ui-button', 'mw-ui-constructive' );
+ array_push( $attribs['class'], 'mw-ui-button', $this->mSubmitModifierClass );
}
if ( $this->isVForm() ) {
return $this;
}
+ /**
+ * Identify that the submit button in the form has a destructive action
+ *
+ */
+ public function setSubmitDestructive() {
+ $this->mSubmitModifierClass = 'mw-ui-destructive';
+ }
+
/**
* Set the text for the submit button to a message
* @since 1.19
{
- "@metadata": [],
+ "@metadata": {
+ "authors": [
+ "Чаховіч Уладзіслаў"
+ ]
+ },
+ "config-desc": "Інсталятар MediaWiki",
+ "config-information": "Інфармацыя",
+ "config-localsettings-key": "Ключ абнаўлення:",
+ "config-your-language": "Ваша мова:",
+ "config-wiki-language": "Мова Вікі:",
+ "config-back": "← Назад",
+ "config-page-language": "Мова",
+ "config-page-welcome": "Сардэчна запрашаем у MediaWiki!",
+ "config-page-name": "Назва",
+ "config-page-options": "Настройкі",
+ "config-upload-settings": "Загрузка выяў і файлаў",
"mainpagetext": "'''MediaWiki паспяхова ўсталяваная.'''",
"mainpagedocfooter": "Гл. [//meta.wikimedia.org/wiki/Help:Contents Дапаможнік карыстальніка (англ.)] па далейшыя звесткі аб карыстанні вікі-праграмамі.\n\n== З чаго пачаць ==\n\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:Configuration_settings Пералік параметраў канфігурацыі (англ.)]\n* [//www.mediawiki.org/wiki/Special:MyLanguage/Manual:FAQ ЧАПЫ MediaWiki (англ.)]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Ліставанне аб выпусках MediaWiki (англ.)]"
}
# Determine scaler type
$scaler = $this->getScalerType( $dstPath );
+ if ( is_array( $scaler ) ) {
+ $scalerName = get_class( $scaler[0] );
+ } else {
+ $scalerName = $scaler;
+ }
+
wfDebug( __METHOD__ . ": creating {$scalerParams['physicalDimensions']} " .
- "thumbnail at $dstPath using scaler $scaler\n" );
+ "thumbnail at $dstPath using scaler $scalerName\n" );
if ( !$image->mustRender() &&
$scalerParams['physicalWidth'] == $scalerParams['srcWidth']
*/
public function rotate( $file, $params ) {
return new MediaTransformError( 'thumbnail_error', 0, 0,
- "$scaler rotation not implemented" );
+ get_class( $this ) . ' rotation not implemented' );
}
/**
$this->getExternalLinkAttribs( $url ) );
# Register it in the output object...
# Replace unnecessary URL escape codes with their equivalent characters
- $pasteurized = self::replaceUnusualEscapes( $url );
+ $pasteurized = self::normalizeLinkUrl( $url );
$this->mOutput->addExternalLink( $pasteurized );
}
wfProfileOut( __METHOD__ );
# Register link in the output object.
# Replace unnecessary URL escape codes with the referenced character
# This prevents spammers from hiding links from the filters
- $pasteurized = self::replaceUnusualEscapes( $url );
+ $pasteurized = self::normalizeLinkUrl( $url );
$this->mOutput->addExternalLink( $pasteurized );
}
}
/**
- * Replace unusual URL escape codes with their equivalent characters
+ * Replace unusual escape codes in a URL with their equivalent characters
*
+ * @deprecated since 1.24, use normalizeLinkUrl
* @param string $url
* @return string
- *
- * @todo This can merge genuinely required bits in the path or query string,
- * breaking legit URLs. A proper fix would treat the various parts of
- * the URL differently; as a workaround, just use the output for
- * statistical records, not for actual linking/output.
*/
public static function replaceUnusualEscapes( $url ) {
- return preg_replace_callback( '/%[0-9A-Fa-f]{2}/',
- array( __CLASS__, 'replaceUnusualEscapesCallback' ), $url );
+ wfDeprecated( __METHOD__, '1.24' );
+ return self::normalizeLinkUrl( $url );
}
/**
- * Callback function used in replaceUnusualEscapes().
- * Replaces unusual URL escape codes with their equivalent character
+ * Replace unusual escape codes in a URL with their equivalent characters
*
- * @param array $matches
+ * This generally follows the syntax defined in RFC 3986, with special
+ * consideration for HTTP query strings.
*
+ * @param string $url
* @return string
*/
- private static function replaceUnusualEscapesCallback( $matches ) {
- $char = urldecode( $matches[0] );
- $ord = ord( $char );
- # Is it an unsafe or HTTP reserved character according to RFC 1738?
- if ( $ord > 32 && $ord < 127 && strpos( '<>"#{}|\^~[]`;/?', $char ) === false ) {
- # No, shouldn't be escaped
- return $char;
- } else {
- # Yes, leave it escaped
- return $matches[0];
+ public static function normalizeLinkUrl( $url ) {
+ # First, make sure unsafe characters are encoded
+ $url = preg_replace_callback( '/[\x00-\x20"<>\[\\\\\]^`{|}\x7F-\xFF]/',
+ function ( $m ) {
+ return rawurlencode( $m[0] );
+ },
+ $url
+ );
+
+ $ret = '';
+ $end = strlen( $url );
+
+ # Fragment part - 'fragment'
+ $start = strpos( $url, '#' );
+ if ( $start !== false && $start < $end ) {
+ $ret = self::normalizeUrlComponent(
+ substr( $url, $start, $end - $start ), '"#%<>[\]^`{|}' ) . $ret;
+ $end = $start;
+ }
+
+ # Query part - 'query' minus &=+;
+ $start = strpos( $url, '?' );
+ if ( $start !== false && $start < $end ) {
+ $ret = self::normalizeUrlComponent(
+ substr( $url, $start, $end - $start ), '"#%<>[\]^`{|}&=+;' ) . $ret;
+ $end = $start;
}
+
+ # Scheme and path part - 'pchar'
+ # (we assume no userinfo or encoded colons in the host)
+ $ret = self::normalizeUrlComponent(
+ substr( $url, 0, $end ), '"#%<>[\]^`{|}/?' ) . $ret;
+
+ return $ret;
+ }
+
+ private static function normalizeUrlComponent( $component, $unsafe ) {
+ $callback = function ( $matches ) use ( $unsafe ) {
+ $char = urldecode( $matches[0] );
+ $ord = ord( $char );
+ if ( $ord > 32 && $ord < 127 && strpos( $unsafe, $char ) === false ) {
+ # Unescape it
+ return $char;
+ } else {
+ # Leave it escaped, but use uppercase for a-f
+ return strtoupper( $matches[0] );
+ }
+ };
+ return preg_replace_callback( '/%[0-9A-Fa-f]{2}/', $callback, $component );
}
/**
$dbw = wfGetDB( DB_MASTER );
$useTrx = ( $dbw->getType() === 'sqlite' ); // much faster
if ( $useTrx ) {
- $dbw->begin();
+ $dbw->startAtomic( __METHOD__ );
}
foreach ( $this->mCollated as $name => $data ) {
$eventCount = $data['count'];
// "pf_time=pf_time + VALUES(pf_time)";
}
if ( $useTrx ) {
- $dbw->commit();
+ $dbw->endAtomic( __METHOD__ );
}
} catch ( DBError $e ) {
}
$dbw = $this->sitesTable->getWriteDbConnection();
- $trx = $dbw->trxLevel();
-
- if ( $trx == 0 ) {
- $dbw->begin( __METHOD__ );
- }
+ $dbw->startAtomic( __METHOD__ );
$success = true;
);
}
- if ( $trx == 0 ) {
- $dbw->commit( __METHOD__ );
- }
+ $dbw->endAtomic( __METHOD__ );
// purge cache
$this->reset();
wfProfileIn( __METHOD__ );
$dbw = $this->sitesTable->getWriteDbConnection();
- $trx = $dbw->trxLevel();
-
- if ( $trx == 0 ) {
- $dbw->begin( __METHOD__ );
- }
-
+ $dbw->startAtomic( __METHOD__ );
$ok = $dbw->delete( 'sites', '*', __METHOD__ );
$ok = $dbw->delete( 'site_identifiers', '*', __METHOD__ ) && $ok;
-
- if ( $trx == 0 ) {
- $dbw->commit( __METHOD__ );
- }
+ $dbw->endAtomic( __METHOD__);
$this->reset();
$htmlForm = new HTMLForm( array(), $context, 'prefs-restore' );
$htmlForm->setSubmitTextMsg( 'restoreprefs' );
+ $htmlForm->setSubmitDestructive();
$htmlForm->setSubmitCallback( array( $this, 'submitReset' ) );
$htmlForm->suppressReset();
"otherlanguages": "На іншых мовах",
"redirectedfrom": "(Пасля перасылкі з $1)",
"redirectpagesub": "Старонка-перасылка",
+ "redirectto": "Перасылае да",
"lastmodifiedat": "Апошняе змяненне старонкі адбылося $2, $1.",
"viewcount": "Гэту старонку адкрывалі {{PLURAL:$1|адзін раз|$1 разы|$1 разоў}}.",
"protectedpage": "Старонка пад аховай",
"searchall": "усе",
"showingresults": "Ніжэй паказаны да {{PLURAL:$1|'''$1''' выніку|'''$1''' вынікаў}}, пачынаючы з нумару '''$2'''.",
"showingresultsinrange": "Ніжэй паказаны да {{PLURAL:$1|<strong>1</strong> выніку|<strong>$1</strong> вынікаў}} у дыяпазоне ад #<strong>$2</strong> да #<strong>$3</strong>.",
- "showingresultsheader": "{{PLURAL:$5|Вынік '''$1''' из '''$3'''|Вынікі '''$1 — $2''' из '''$3'''}} для '''$4'''",
"search-nonefound": "Нічога не было знойдзена.",
"powersearch-legend": "Падрабязны пошук",
"powersearch-ns": "Шукаць у прасторах назваў:",
"viewtalkpage": "Хьажа дийцаре",
"otherlanguages": "Кхечу маттахь дерш",
"redirectedfrom": "(ДӀасахьажийна кху $1)",
- "redirectpagesub": "Ð\90гÓ\80о-дÓ\80аÑ\81аÑ\85Ñ\8cажайаÑ\80",
+ "redirectpagesub": "Ð\90гÓ\80о-дÓ\80аÑ\81аÑ\85Ñ\8cажоÑ\80г",
"redirectto": "ДӀасахьажор тӀе:",
"lastmodifiedat": "ХӀокху агӀон тӀаьххьаралера хийцам: $2, $1.",
"viewcount": "ХӀокху агӀонг хьовсийна $1 {{PLURAL:$1|за}}.",
"right-createtalk": "Дийцаре агӀонаш кхоллар",
"right-createaccount": "декъашхошна керла дӀаяздарш кхоллар",
"right-minoredit": "«къезиг хийцам» аьлла билгало хӀоттор",
- "right-move": "Ð\90гÓ\80онаÑ\88ан цӀераш хийцар",
+ "right-move": "Ð\90гÓ\80онийн цӀераш хийцар",
"right-move-subpages": "АгӀонашан цӀераш хийцар цера бухара агӀонашцан",
"right-move-rootuserpages": "декъашхочун ораман агӀонийн цӀераш хийцар",
"right-move-categorypages": "Категорийн агӀонийн цӀераш хийцар",
"right-movefile": "Файлийн цӀе хийцар",
- "right-suppressredirect": "агÓ\80она Ñ\86Ó\80е Ñ\85Ñ\83Ñ\8cйÑ\86Ñ\83Ñ\88 Ñ\88иÑ\80Ñ\87Ñ\83 Ñ\86Ó\80аÑ\80аÑ\85 ма кÑ\85олла дÓ\80аÑ\81аÑ\85Ñ\8cажаÑ\8fÑ\80",
+ "right-suppressredirect": "агÓ\80она Ñ\86Ó\80е Ñ\85Ñ\83Ñ\8cйÑ\86Ñ\83Ñ\88 Ñ\88иÑ\80Ñ\87Ñ\83 Ñ\86Ó\80аÑ\80аÑ\85 ма кÑ\85олла дÓ\80аÑ\81аÑ\85Ñ\8cажоÑ\80г",
"right-upload": "Файлаш чуйаьхар",
"right-reupload": "йолуш йолу чера тӀехула файлаш дӀаязъяр",
"right-reupload-own": "тохарлеррачу декъашхочо файлаш юху дӀаязъяр",
"deletecomment": "Бахьна:",
"deleteotherreason": "Кхин бахьна/тӀетохар:",
"deletereasonotherlist": "Кхин бахьна",
- "deletereason-dropdown": "* Даржина долу дӀаяккхаран баьхьанаш \n** зулма \n** авторан лаамца\n** авторан бакъонаш талхор",
+ "deletereason-dropdown": "* Даржина долу дӀаяккхаран баьхьанаш \n** спам\n** зулма \n** авторан лаамца\n** авторан бакъонаш талхор\n** болх цабо дӀасхьажорг",
"delete-edit-reasonlist": "Бахьанин могӀам нисбар",
"deleting-backlinks-warning": "'''ДӀахьедар:''' Ахьа дӀайоккхуш йолчун тӀе товжийна [[Special:WhatLinksHere/{{FULLPAGENAME}}|кхин агӀонаш]] ю.",
"rollback": "Юхабаккха хийцам",
"linkshere": "ТӀаьхьайогӀу агӀонаш оцу '''[[:$1]]''': хьажорагца ю",
"nolinkshere": "ХӀокху '''[[:$1]]''' агӀона тӀе кхечу агӀонашкахь хьажоргаш яц.",
"nolinkshere-ns": "Хаьржинчу анахь яц '''[[:$1]]''' цӀе йолу агӀонаш",
- "isredirect": "агÓ\80о-дÓ\80аÑ\81аÑ\85Ñ\8cажайаÑ\80",
+ "isredirect": "агÓ\80о-дÓ\80аÑ\81аÑ\85Ñ\8cажоÑ\80г",
"istemplate": "юкъаялийнарш",
"isimage": "Файлан хьажораг",
"whatlinkshere-prev": "{{PLURAL:$1|1=хьалхайодарг|хьалхайодарш}} $1",
"movepagetext": "Бухахь йолу форманца агӀон цӀе хийцало. Цул совнах цуьна хийцаман тептар кхоьчу метте доккха. Хьалхалера цӀарахь хиръю керла кхоьллина агӀонан хьажораг.\n\nХьовсалаш [[Special:DoubleRedirects|шалха]] а [[Special:BrokenRedirects|йохна хьажоргаш]] юй техь аьлла.\n\nШу жоьпехь ду хьажоргаш нийса некъ гойтуш хиларан.\n\nТидам бе хьалхалера агӀон цӀе ‘’’хийцалур яц’’’ иштта цӀе йолу агӀо йолуш елахь. Юкъардаккхар: йолуш йолу агӀо кхоьчухьа хьажораг елахь, я еса елахь а, цуьна хийцаме истори яцахь а.\n\nИ бохург ду шун агӀонан цӀе юха а хьалха хилларгчунтӀе хийца йиш ю, амма йолуш йолу агӀо дӀаяккха йиш яц.\n\n'''ДӀАХЬЕДАР!'''\n\nЦӀе хийцар бахьнехь гӀаръяьлла агӀонашна дукха дагахь боцу хийцамаш хила тарло. Цундела цӀе хийцале шеш хила тарлучу тӀехьонашах кхета аьлла тешна хила.",
"movepagetext-noredirectfixer": "Бухахь йолу форманца агӀон цӀе хийцало. Цул совнах цуьна хийцаман тептар кхоьчу метте доккха. Хьалхалера цӀарахь хиръю керла кхоьллина агӀонан хьажораг.\n\nХьовсалаш [[Special:DoubleRedirects|шалха]] а [[Special:BrokenRedirects|йохна хьажоргаш]] юй техь аьлла.\n\nШу жоьпехь ду хьажоргаш нийса некъ гойтуш хиларан.\n\nТидам бе хьалхалера агӀон цӀе ‘’’хийцалур яц’’’ иштта цӀе йолу агӀо йолуш елахь. Юкъардаккхар: йолуш йолу агӀо кхоьчухьа хьажораг елахь, я еса елахь а, цуьна хийцаме истори яцахь а.\n\nИ бохург ду шун агӀонан цӀе юха а хьалха хилларгчунтӀе хийца йиш ю, амма йолуш йолу агӀо дӀаяккха йиш яц.\n\n'''ДӀАХЬЕДАР!'''\n\nЦӀе хийцар бахьнехь гӀаръяьлла агӀонашна дукха дагахь боцу хийцамаш хила тарло. Цундела цӀе хийцале шеш хила тарлучу тӀехьонашах кхета аьлла тешна хила.",
"movepagetalktext": "ТӀе хӀоьттина йолу дийцаре агӀо ишта цӀе хийцина хира ю, '''цхьа йолу ханчохь, маца:'''\n\n*Йаьсса йоцу дийцаре агӀо йолуш ю оцу цӀарца йа\n*Ахьа къастаман харжам цабиняхь а къастам хӀотточехь.\n\nИшта чу ханчохь, ахьа дехьа яккха йезар ю йа куьйга хӀоттайар, нагахь иза хьашт йалахь.",
- "movearticle": "Цle хийца хlокху агlон",
+ "movearticle": "ЦӀе хийца хӀокху агӀон",
"moveuserpage-warning": "'''Тергам бе.''' Хьо декъашхочун агӀона цӀе хийца гӀерта. Дехар до, тергам бе, декъашхочун агӀона цӀе бен хийца лур яц, декъашхочун дӀаяздаран цӀе хийца лур яц.",
"movecategorypage-warning": "<strong>ДӀахьедар:</strong> Хьо категорин агӀон цӀе хийца гӀерта. Дехар до, терго йе, хӀокху агӀона бен цӀе хуьйцур яц, шира чу категори чура массо агӀонаш керла категори чу йохур <em>яц</em>.",
"movenologintext": "АгӀона цӀе хийца [[Special:UserLogin|системин чугӀо]].",
"movepage-moved-noredirect": "ДӀасхьажорг кхоллар дохина.",
"articleexists": "ХӀарасанна цӀе йолу агӀо йолуш ю йа ахьа гойтуш йолу цӀе магош яц.\nДехар до, харжа кхин цӀе.",
"movetalk": "Цуьнца йогӀуш йолу дийцаре агӀон цӀе хийцар",
- "move-subpages": "ЦӀeрш хийцае бухара агӀонаши ($1 кхаччалц)",
+ "move-subpages": "ЦӀераш хийца бухара агӀонийн ($1 кхаччалц)",
"move-talk-subpages": "ЦӀе хийца бухара агӀонаши а агӀонашан дийцаре а ($1 кхаччалц)",
"movepage-page-exists": "Агӏо $1 йолуш ю цундела и ша юху дӏаязъян йиш яц.",
"movepage-page-moved": "АгӀона $1 цӀе хийцина → $2.",
"resetpass-submit-cancel": "ھەڵوەشاندنەوە",
"resetpass-wrong-oldpass": "تێپەڕوشەی ھەنووکەیی یان تێپەڕوشەی کاتی ھەڵەیە.\nوا دیارە تێپەڕوشەکەت بە سەرکەوتوویی گۆڕدراوە یان داوای تێپەڕوشەیەکی نوێت کردووە.",
"resetpass-temp-password": "تێپەڕوشەی کاتی:",
- "passwordreset": "دووبارە ڕێکخستنەوەی تێپەڕوشە",
+ "passwordreset": "ڕێکخستنەوەی تێپەڕوشە",
"passwordreset-legend": "دووبارە ڕێکخستنەوەی تێپەڕوشە",
"passwordreset-username": "ناوی بەکارھێنەری:",
"passwordreset-domain": "پاوان:",
"passwordreset-emailsent": "ئیمەیلێکی ڕیسێتکردنەوەی تێپەڕوشە نێردرا.",
"passwordreset-emailsent-capture": "ئیمەیلێکی ڕیسێتکردنەوەی تێپەڕوشە نێردرا، کە لە ژێرەوە نیشان دراوە.",
"passwordreset-emailerror-capture": "ئیمەیلێکی ڕیسێتکردنەوەی تێپەڕوشە نێردرا، کە لە ژێرەوە نیشان دراوە، بەڵام ناردنەکەی بۆ {{GENDER:$2|بەکارھێنەر}} سەرکەوتوو نەبوو: $1",
- "changeemail": "ناونیشانی ئیمەیل بگۆڕە",
+ "changeemail": "گۆڕینی ناونیشانی ئیمەیل",
"changeemail-header": "ناونیشانی ئیمەیلی ھەژمار بگۆڕە",
"changeemail-no-info": "بۆ گەیشتنی راستەوخۆ بەم پەڕە دەبێت بچیتە ژوورەوە.",
"changeemail-oldemail": "ئەدرەسی ئیمەیڵی ئێستا:",
"mimesearch-summary": "ئەم لاپەڕە پاڵێوتنی هەیە بۆ جۆرەکانی MIME.\nناودراو: جۆرەی ناوەڕۆک\\ژێرجۆرە، وەک <code>image/jpeg</code>.",
"mimetype": "جۆرەی MIME:",
"download": "داگرتن",
- "unwatchedpages": "پەڕە چاودێرینەکراوەکان",
+ "unwatchedpages": "پەڕە چاودێری نەکراوەکان",
"listredirects": "پێرستی ڕەوانەکەرەکان",
- "unusedtemplates": "داڕێژە بەکارنەھێنراوەکان",
+ "unusedtemplates": "داڕێژە بەکارنەھاتووەکان",
"unusedtemplatestext": "ئەم پەڕە هەموو پەڕەکانی بۆشاییی ناوی {{ns:template}} بە لیست دەکات کە لە پەڕەی تردا بەکارنەھێنراون.\nلە بیری نەکەی پێش سڕینەوەیان پشکنینی بەستەرەکانی تر بۆ داڕێژەکان بکەی.",
"unusedtemplateswlh": "بەستەرەکانی تر",
"randompage": "پەڕەی ھەڕەمەکی",
"withoutinterwiki-summary": "ئەم پەڕانە بەستەریان بۆ وەشانەکانی زمانەکانی تر نیە.",
"withoutinterwiki-legend": "پێشگر",
"withoutinterwiki-submit": "پیشاندان",
- "fewestrevisions": "پەڕەکان بە کەمترین پێداچوونەوەکان",
+ "fewestrevisions": "پەڕەکان بە کەمترین پێداچوونەوە",
"nbytes": "$1 {{PLURAL:$1|بایت|بایت}}",
"ncategories": "$1 {{PLURAL:$1|ھاوپۆل|ھاوپۆل}}",
"ninterwikis": "$1 {{PLURAL:$1|نێوانویکی}}",
"uncategorizedimages": "پەڕگە پۆلێن نەکراوەکان",
"uncategorizedtemplates": "داڕێژە پۆلێن نەکراوەکان",
"unusedcategories": "پۆلە بەکارنەھێنراوەکان",
- "unusedimages": "پەڕگە بەکارنەھێنراوەکان",
+ "unusedimages": "پەڕگە بەکارنەھاتووەکان",
"popularpages": "پەڕە مەحبووبەکان",
"wantedcategories": "پۆلە داواکراوەکان",
"wantedpages": "پەڕە داواکراوەکان",
"protectedpages-page": "پەڕە",
"protectedpages-params": "پارامەترەکانی پاراستن",
"protectedpages-reason": "ھۆکار",
- "protectedtitles": "سەرناوە پارێزراوەکان",
+ "protectedtitles": "سەردێڕە پارێزراوەکان",
"protectedtitlesempty": "ھیچ سەرناوێک بەم سنوورانەوە ئێستا نەپارێزراوە.",
"listusers": "پێرستی بەکارھێنەران",
"listusers-editsonly": "تەنیا ئەو بەکارھێنەرانە نیشان بدە کە دەستکارییان کردووە",
"listusers-submit": "نیشانیبدە",
"listusers-noresult": "ھیچ بەکارھێنەرێک نەدۆزرایەوە.",
"listusers-blocked": "(بەربەست کراوە)",
- "activeusers": "پێرستی بەکارھێنەرە چالاکەکان",
+ "activeusers": "پێرستی بەکارھێنەرانی چالاک",
"activeusers-intro": "ئەمە لیستێکی ئەو بەکارھێنەرانەیە کە لە $1 {{PLURAL:$1|ڕۆژ|ڕۆژ}}ی ڕابردوودا بە جۆرێک چالاکییەکیان ھەبووە.",
"activeusers-count": "$1 {{PLURAL:$1|کردەوە}} لە دوایین {{PLURAL:$3|ڕۆژ|$3 ڕۆژ}}دا",
"activeusers-from": "نیشاندانی بەکارھێنەران بە دەستپێکردن لە:",
"listgrouprights-namespaceprotection-header": "سنوورداریی بۆشایی ناو",
"listgrouprights-namespaceprotection-namespace": "بۆشایی ناو",
"listgrouprights-namespaceprotection-restrictedto": "مافی رێپێدراوی بەکارھێنەر بۆ دەستکاری",
+ "trackingcategories": "پۆلەکانی شوێنکەوتن",
"trackingcategories-name": "ناوی پەیام",
"mailnologin": "ناونیشان بۆ ناردن نییه",
"mailnologintext": "دهبێ له [[Special:UserLogin|ژوورهوه]] بیت و ناونیشانێکی بڕواپێکراوی ئیمهیلت له ناو [[Special:Preferences|ههڵبژاردهکان]] دیاری کردبێت تا بتوانی ئیمهیل بنێریت بۆ بهکارهێنهرانی دیکه.",
"whatlinkshere-hidelinks": "$1 بەستەر",
"whatlinkshere-hideimages": "$1 بەستەرەکانی پەڕگە",
"whatlinkshere-filters": "پاڵێوکەکان",
- "block": "بەربەستکردنی بەکارھێنەر",
+ "block": "بەربەستنی بەکارھێنەر",
"unblock": "لە بەربەستدەرهێنانی بەکارهێنەر",
"blockip": "بەربەستنی بەکارھێنەر",
"blockip-legend": "بەربەستکردنی بەکارهێنەر",
"ipusubmit": "لابردنی ئەم بەربەستە",
"unblocked": "[[User:$1|$1]] لە بەربەست دەرهێنرا",
"unblocked-id": "بەربەستی $1 لابرا",
- "blocklist": "بەکارھێنەر بەربەستکراوەکان",
+ "blocklist": "بەکارھێنەرانی بەربەسراو",
"ipblocklist": "بەکارھێنەرە بەربەستکراوەکان",
"ipblocklist-legend": "دۆزینەوەی بەکارهێنەرێکی بەربەستکراو",
"blocklist-userblocks": "ھەژمارە بەربەستکراوەکان بشارەوە",
"version-software-version": "وەشان",
"version-entrypoints-header-url": "ناونیشانی ئینتەرنێتی",
"redirect": "ڕەوانەکەر بە پێی پەڕگە، بەکارھێنەر، پەڕە یان پێناسەی پێداچوونەوە",
+ "redirect-legend": "ڕەوانەکەر بۆ پەڕگە یان پەڕەیەک",
+ "redirect-summary": "ئەم پەڕە تایبەتە ڕەوانە دەکرێ بۆ پەڕگەیەک (ناوی پەڕگەکە)، پەڕەیەک (پێناسەی پێداچوونەوەیەک یان پێناسەی پەڕە) یان پەڕەیەکی بەکارھێنەر (پێناسەیەکی ژمارەیی بەکارھێنەر). بەکارھێنان: [[{{#Special:Redirect}}/file/Example.jpg]]، [[{{#Special:Redirect}}/page/64308]]، [[{{#Special:Redirect}}/revision/328429]] یان [[{{#Special:Redirect}}/user/101]].",
"redirect-submit": "بڕۆ",
+ "redirect-lookup": "گەڕان لە:",
+ "redirect-value": "نرخ:",
+ "redirect-user": "پێناسەی بەکارھێنەر",
+ "redirect-page": "پێناسەی پەڕە",
+ "redirect-revision": "پێداچوونەوەی پەڕە",
+ "redirect-file": "ناوی پەڕگە",
"fileduplicatesearch": "گەڕان بۆ پەڕگە دووپات کراوەکان",
"fileduplicatesearch-summary": "گەڕان بۆ پەڕگە دووبارەکراوەکان لەسەر بنەمای نرخی hash.",
"fileduplicatesearch-legend": "گەڕان بۆ دووبارەکردنێک",
"fileduplicatesearch-noresults": "پەڕگەیەک بە ناوی «$1» نەدۆزرایەوە.",
"specialpages": "پەڕە تایبەتەکان",
"specialpages-note": "* پەڕە تایبەتە ئاسایییەکان.\n* <span class=\"mw-specialpagerestricted\">پەڕە تایبەتە بەرگریلێکراوەکان.</span>",
- "specialpages-group-maintenance": "Ú\95اپÛ\86رتÛ\95کاÙ\86Û\8c Ú\86اکسازÛ\8c",
+ "specialpages-group-maintenance": "Ú\95اپÛ\86رتÛ\95کاÙ\86Û\8c Ú\95اگرتÙ\86",
"specialpages-group-other": "پەڕە تایبەتەکانی دیکە",
"specialpages-group-login": "چوونەژوورەوە / دروستکردنی ھەژمار",
"specialpages-group-changes": "دوایین گۆڕانکارییەکان و لۆگەکان",
"blankpage": "پەڕەی واڵا",
"intentionallyblankpage": "ئەم پەڕەیە لەقەست واڵا ھێڵراوەتەوە.",
"external_image_whitelist": " #ئەم دێڕ ھەر بەم جۆرە کە ھەیە بەجێبێڵە<pre>\n#کەرتەکانی regular expression (تەنیا ئە بەشە کە لە نێوان // دا دێت) لە خوارەوە دابنێ\n#These will be matched with the URLs of external (hotlinked) images\n#Those that match will be displayed as images, otherwise only a link to the image will be shown\n#ئەو دێڕانە بە # دەست پێدەکەن وەک شرۆڤە (comments) مامەڵەیان لەگەڵ دەکرێ\n#بە گەورە و بچووکی پیتەکان ھەستیارە (case-insensitive)\n\n#گشت کەرتەکانی regex لە سەرەوەی ئەم دێرەدا دابنێ. ئەم دێڕ ھەر بەم جۆرە کە ھەیە بەجێبێڵە</pre>",
- "tags": "گۆڕانکاری گونجاوی تاگەکان",
+ "tags": "تاگەکانی گۆڕانکاریی گونجاو",
"tag-filter": "پاڵێوی [[Special:Tags|تاگ]]:",
"tag-filter-submit": "پاڵاوتن",
"tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|تاگ|تاگەکان}}]]: $2)",
"feedback-message": "پەیام:",
"feedback-cancel": "ھەڵیوەشێنەوە",
"feedback-submit": "تێبینییەکان بنێرە",
- "feedback-close": "ئەنجام درا",
+ "feedback-close": "کرا",
"searchsuggest-search": "گەڕان",
"searchsuggest-containing": "بە لەبەرگرتنەوەی ...",
"api-error-empty-file": "ئەو پەڕگەیە کە ناردووتە واڵا بوو.",
"tooltip-pt-anonuserpage": "Uživatelská stránka pro IP adresu, ze které editujete",
"tooltip-pt-mytalk": "Vaše diskusní stránka",
"tooltip-pt-anontalk": "Diskuse o editacích provedených z této IP adresy",
- "tooltip-pt-preferences": "Moje nastavení",
- "tooltip-pt-watchlist": "Seznam stránek, jejichž změny sleduji",
+ "tooltip-pt-preferences": "Vaše nastavení",
+ "tooltip-pt-watchlist": "Seznam stránek, jejichž změny sledujete",
"tooltip-pt-mycontris": "Seznam vašich příspěvků",
"tooltip-pt-login": "Doporučujeme vám přihlásit se, ovšem není to povinné.",
"tooltip-pt-logout": "Odhlásit se",
"prefs-help-email-others": "Ét pō ânca sernîr ed lasêr che chiêter a 's mèten in cuntât tēgh cun la pôsta eletrônica cun al colegamèint da la tó pàgina utèint o da còla 'd discusiòun. Al tó indirés al vîn mìa fât savèir a quî ch'ét 's mèten in cuntât tēgh.",
"prefs-help-email-required": "L'indirés ed pôsta eletrônica l'é ubligatôri.",
"prefs-info": "Infurmasiòun necesâri",
+ "prefs-i18n": "Internalişasiòun",
"prefs-signature": "Fîrma",
"prefs-dateformat": "Fōrma 'd la dâta",
"prefs-timeoffset": "Ōri 'd diferèinsa",
"saveusergroups": "Sêlva gróp utèint",
"userrights-groupsmember": "Al fà pêrt {{PLURAL:$1|al gróp|ai gróp}}:",
"userrights-groupsmember-auto": "Al fà pêrt ed sicûr a:",
+ "userrights-groups-help": "L'é pusébil mudifichêr i gróp in dó fà pêrt l'utèint. \n*'Na caşèla sernîda la sègna a che gróp al fà pêrt l'utèint. \n*'Na caşèla mìa serrnîda la sègna che l'utèin al fà mìa pêrt al gróp. \n*Al sègn * al sègna ch' an n'é m'a pusébil scanşlêr che l'utèin al fà pêrt al gróp dōp avèirel sgnê (o invicivêrsa).",
"userrights-reason": "Mutîv:",
+ "userrights-no-interwiki": "An es gh'à mìa i permès necesâri per cambiêr i dirét ed j utèint in sém a êter sît.",
+ "userrights-nodatabase": "Al databēş $1 al gh'é mìa o an n' mìa un databêş lochêl.",
+ "userrights-nologin": "Per dêr i dirét a j utèint l'é necesâri [[Special:UserLogin|fêr l'ingrès]] cme aministardōr.",
+ "userrights-notallowed": "An 't gh'ê mìa al permès per zuntêr o tōr via i permès utèint.",
+ "userrights-changeable-col": "Gróp ch'es pōlen mudifichêr.",
+ "userrights-unchangeable-col": "Gróp ch'an 's pōlen mìa mudifichêr.",
+ "userrights-conflict": "Cuntrâst ed mudéfica di dirét utèint! Cuntròla e cunfērma al tó mudéfichi.",
+ "userrights-removed-self": "T'é tôt via cun sucès i tō dirét. E dòunca, an 't prê pió andêr dèinter a cla pàgina ché.",
"group": "Gróp:",
"group-user": "Utèint",
"group-autoconfirmed": "Utèint cunvalidê da per ló",
"grouppage-suppress": "{{ns:project}}:Oversight",
"right-read": "Al lēş al pàgini",
"right-edit": "Mudéfica pàgini",
+ "right-createpage": "Ét pō fêr al pàgini (fōra che 'l pàgini 'd discusiòun).",
+ "right-createtalk": "Fà 'l pàgini 'd discusiòun.",
+ "right-createaccount": "Fà dal j utèinsi nōvi.",
+ "right-minoredit": "Sègna 'l mudéfichi cme céchi.",
+ "right-move": "Spôsta 'l pàgini",
+ "right-move-subpages": "Spôsta 'l pàgini insèm al relatîvi sòt pàgini",
+ "right-move-rootuserpages": "Spôsta 'l pàgini principêli 'd j utèint",
+ "right-move-categorypages": "Spôsta 'l categoréi",
+ "right-movefile": "Spôsta i file",
+ "right-suppressredirect": "An fà mìa un indirés nōv in atvomâtich quând a se spôsta 'na pàgina",
+ "right-upload": "Cârga un file",
+ "right-reupload": "Al scré in sém a 'n file ch' al gh'é bèle",
+ "right-reupload-own": "Al scré in sém a 'n file ch' al gh'é bèle carghê da l'istès utèint",
"newuserlogpage": "Utèint nōv",
"action-read": "lēzer cla pàgina ché",
"action-edit": "Mudifichêr cla pàgina ché",
"preferences-summary": "",
"mypreferences": "Preferences",
"prefs-edits": "Number of edits:",
- "prefsnologintext2": "Please login to change your preferences.",
+ "prefsnologintext2": "Please log in to change your preferences.",
"prefs-skin": "Skin",
"skin-preview": "Preview",
"datedefault": "No preference",
"mywatchlist": "Watchlist",
"watchlistfor2": "For $1 $2",
"nowatchlist": "You have no items on your watchlist.",
- "watchlistanontext": "Please login to view or edit items on your watchlist.",
+ "watchlistanontext": "Please log in to view or edit items on your watchlist.",
"watchnologin": "Not logged in",
"addwatch": "Add to watchlist",
"addedwatchtext": "The page \"[[:$1]]\" has been added to your [[Special:Watchlist|watchlist]].\nFuture changes to this page and its associated talk page will be listed there.",
"category-file-count": "{{PLURAL:$2|Selles kategoorias on ainult järgmine fail.|{{PLURAL:$1|Järgmine fail |Järgmised $1 faili}} on selles kategoorias (kokku $2).}}",
"category-file-count-limited": "{{PLURAL:$1|Järgmine fail|Järgmised $1 faili}} on selles kategoorias.",
"listingcontinuesabbrev": "jätk",
- "index-category": "Indeksiga leheküljed",
+ "index-category": "Indekseeritud leheküljed",
"noindex-category": "Indekseerimata leheküljed",
"broken-file-category": "Katkiste pildilinkidega leheküljed",
"about": "Tiitelandmed",
"searchall": "kõik",
"showingresults": "Allpool näidatakse '''{{PLURAL:$1|ühte|$1}}''' tulemust alates '''$2'''. tulemusest.",
"showingresultsinrange": "Allpool näidatakse {{PLURAL:$1|<strong>üht</strong>|<strong>$1</strong>}} tulemust vahemikus <strong>$2</strong>–<strong>$3</strong>.",
+ "search-showingresults": "{{PLURAL:$4|<strong>$1</strong>. tulemus <strong>$3</strong>-st|Tulemused <strong>$1–$2</strong> <strong>$3</strong>-st}}",
"search-nonefound": "Päringule ei leitud vasteid.",
"powersearch-legend": "Täpsem otsing",
"powersearch-ns": "Otsing nimeruumidest:",
"unblocked": "Kasutaja [[User:$1|$1]] blokeering on eemaldatud",
"unblocked-range": "Vahemiku $1 blokeering on eemaldatud",
"unblocked-id": "Blokeerimine $1 on lõpetatud",
+ "unblocked-ip": "IP-aadressi [[Special:Contributions/$1|$1]] blokeering on eemaldatud.",
"blocklist": "Blokeeritud kasutajad",
"ipblocklist": "Blokeeritud kasutajad",
"ipblocklist-legend": "Leia blokeeritud kasutaja",
"log-name-pagelang": "Keele muutmise logi",
"log-description-pagelang": "Siia on logitud lehekülgede keele muutmised.",
"logentry-pagelang-pagelang": "$1 {{GENDER:$2|muutis}} lehekülje \"$3\" keelt: $4 → $5.",
- "default-skin-not-found": "Oih! Sinu viki vaikekujundus (<code>$wgDefaultSkin</code>) <code>$1</code> pole saadaval.\n\nPaistab, et sinu install sisaldab järgmisi kujundusi. Vaata [https://www.mediawiki.org/wiki/Manual:Skin_configuration kujunduste häälestusjuhendist], kuidas neid lubada ja kuidas valida vaikekujundus.\n\n$2\n\n; Kui oled MediaWiki just paigaldanud:\n: Paigaldasid tarkvara ilmselt Giti kaudu või otse lähtekoodist või mõnel muul viisil. See on ootuspärane. Proovi [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org-i kujunduste kataloogist] mõni kujundus paigaldada. Selleks saad:\n:* laadida alla [https://www.mediawiki.org/wiki/Download lintarhiivi paigaldaja], mis sisaldab mitut kujundust ja tarkvaralisa. Saad sealt kleepimiseks kopeerida kausta <code>skins/</code>;\n:* kopeerida Giti kaudu ühe hoidla (<code>mediawiki/skins/*</code>) oma MediaWiki installi kausta <code>skins/</code>.\n: Selle tegemine ei tohiks häirida Giti hoidlat, kui oled MediaWiki arendaja.\n\n; Kui oled MediaWikit just täiendanud:\n: MediaWiki 1.24-s ja uuemates versioonides pole paigaldatud kujundused enam automaatselt lubatud (vaata juhendist [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery kujunduste automaatse leidmise] kohta). Saad kleepida järgmised read leheküljele <code>LocalSettings.php</code>, et lubada kõik praegu paigaldatud kujundused:\n\n<pre>$3</pre>\n\n; Kui oled lehekülge <code>LocalSettings.php</code> just muutnud:\n: Kontrolli üle, ega kujunduste nimedes pole trükivigu.",
- "default-skin-not-found-no-skins": "Oih! Sinu viki vaikekujundus (<code>$wgDefaultSkin</code>) <code>$1</code> pole saadaval.\n\nÜhtegi kujundust pole paigaldatud.\n\n; Kui oled MediaWiki just paigaldanud või täiendasid seda:\n: Paigaldasid tarkvara ilmselt Giti kaudu või otse lähtekoodist või mõnel muul viisil. See on ootuspärane. MediaWiki 1.24 ja uuemad versioonid ei sisalda peahoidlas ühtegi kujundust. Proovi [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org-i kujunduste kataloogist] mõni kujundus paigaldada. Selleks saad:\n:* laadida alla [https://www.mediawiki.org/wiki/Download lintarhiivi paigaldaja], mis sisaldab mitut kujundust ja tarkvaralisa. Saad sealt kleepimiseks kopeerida kausta <code>skins/</code>;\n:* kopeerida Giti kaudu ühe hoidla (<code>mediawiki/skins/*</code>) oma MediaWiki installi kausta <code>skins/</code>.\n: Selle tegemine ei tohiks häirida Giti hoidlat, kui oled MediaWiki arendaja. Vaata [https://www.mediawiki.org/wiki/Manual:Skin_configuration kujunduste häälestusjuhendist], kuidas kujundusi lubada ja kuidas valida vaikekujundus.",
+ "default-skin-not-found": "Oih! Sinu viki vaikekujundus, milleks muutuja <code dir=\"ltr\">$wgDefaultSkin</code> järgi on <code>$1</code>, pole saadaval.\n\nPaistab, et sinu install sisaldab järgmisi kujundusi. Vaata [https://www.mediawiki.org/wiki/Manual:Skin_configuration kujunduste häälestusjuhendist], kuidas neid lubada ja kuidas valida vaikekujundus.\n\n$2\n\n; Kui oled MediaWiki just paigaldanud:\n: Paigaldasid tarkvara ilmselt Giti kaudu või otse lähtekoodist või mõnel muul viisil. See on ootuspärane. Proovi [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org-i kujunduste kataloogist] mõni kujundus paigaldada. Selleks saad:\n:* laadida alla [https://www.mediawiki.org/wiki/Download lintarhiivi paigaldaja], mis sisaldab mitut kujundust ja tarkvaralisa. Saad sealt kleepimiseks kopeerida kausta <code dir=\"ltr\">skins/</code>;\n:* kopeerida Giti kaudu ühe hoidla (<code>mediawiki/skins/*</code>) oma MediaWiki installi kausta <code>skins/</code>.\n: Selle tegemine ei tohiks häirida Giti hoidlat, kui oled MediaWiki arendaja.\n\n; Kui oled MediaWikit just täiendanud:\n: MediaWiki 1.24-s ja uuemates versioonides pole paigaldatud kujundused enam automaatselt lubatud (vaata juhendist [https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery kujunduste automaatse leidmise] kohta). Saad kleepida järgmised read leheküljele <code>LocalSettings.php</code>, et lubada kõik praegu paigaldatud kujundused:\n\n<pre dir=\"ltr\">$3</pre>\n\n; Kui oled lehekülge <code>LocalSettings.php</code> just muutnud:\n: Kontrolli üle, ega kujunduste nimedes pole trükivigu.",
+ "default-skin-not-found-no-skins": "Oih! Sinu viki vaikekujundus, milleks muutuja <code dir=\"ltr\">$wgDefaultSkin</code> järgi on <code>$1</code>, pole saadaval.\n\nÜhtegi kujundust pole paigaldatud.\n\n; Kui oled MediaWiki just paigaldanud või täiendasid seda:\n: Paigaldasid tarkvara ilmselt Giti kaudu või otse lähtekoodist või mõnel muul viisil. See on ootuspärane. MediaWiki 1.24 ja uuemad versioonid ei sisalda peahoidlas ühtegi kujundust. Proovi [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org-i kujunduste kataloogist] mõni kujundus paigaldada. Selleks saad:\n:* laadida alla [https://www.mediawiki.org/wiki/Download lintarhiivi paigaldaja], mis sisaldab mitut kujundust ja tarkvaralisa. Saad sealt kleepimiseks kopeerida kausta <code dir=\"ltr\">skins/</code>;\n:* kopeerida Giti kaudu ühe hoidla (<code>mediawiki/skins/*</code>) oma MediaWiki installi kausta <code>skins/</code>.\n: Selle tegemine ei tohiks häirida Giti hoidlat, kui oled MediaWiki arendaja. Vaata [https://www.mediawiki.org/wiki/Manual:Skin_configuration kujunduste häälestusjuhendist], kuidas kujundusi lubada ja kuidas valida vaikekujundus.",
"default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (lubatud)",
"default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''keelatud''')"
}
"hidetoc": "sakrij",
"collapsible-collapse": "sklopi stablo",
"collapsible-expand": "raširi stablo",
+ "confirmable-confirm": "Jeste li sigurni?",
+ "confirmable-yes": "Da",
+ "confirmable-no": "Ne",
"thisisdeleted": "Vidi ili vrati $1?",
"viewdeleted": "Vidi $1?",
"restorelink": "{{PLURAL:$1|$1 pobrisanu izmjenu|$1 pobrisane izmjene|$1 pobrisanih izmjena}}",
"otherlanguages": "ഇതരഭാഷകളിൽ",
"redirectedfrom": "($1 എന്ന താളിൽ നിന്നും തിരിച്ചുവിട്ടതു പ്രകാരം)",
"redirectpagesub": "തിരിച്ചുവിടൽ താൾ",
+ "redirectto": "തിരിച്ചുവിടുന്നു:",
"lastmodifiedat": "ഈ താൾ അവസാനം തിരുത്തപ്പെട്ടത്: $2, $1.",
"viewcount": "ഈ താൾ {{PLURAL:$1|ഒരു തവണ|$1 തവണ}} സന്ദർശിക്കപ്പെട്ടിട്ടുണ്ട്.",
"protectedpage": "സംരക്ഷിത താൾ",
"createaccount-text": "{{SITENAME}} സംരംഭത്തിൽ ($4) താങ്കളുടെ ഇമെയിൽ വിലാസത്തിൽ ആരോ ഒരു അംഗത്വം \"$2\" എന്ന ഉപയോക്തൃനാമത്തിൽ ഉണ്ടാക്കിയിരിക്കുന്നു (രഹസ്യവാക്ക്: \"$3\"). താങ്കൾ ഇപ്പോൾ ലോഗിൻ ചെയ്തു രഹസ്യവാക്ക് മാറ്റേണ്ടതാകുന്നു.\n\nഅംഗത്വം അബദ്ധവശാൽ ഉണ്ടാക്കിയതാണെങ്കിൽ താങ്കൾക്ക് ഈ സന്ദേശം നിരാകരിക്കാവുന്നതാണ്.",
"login-throttled": "താങ്കൾ നിരവധി പ്രാവശ്യം ലോഗിൻ ചെയ്യാൻ ശ്രമിച്ചിരിക്കുന്നു.\nപുതിയതായി ശ്രമിക്കുന്നതിനു മുമ്പ് $1 ദയവായി കാത്തിരിക്കുക.",
"login-abort-generic": "താങ്കളുടെ പ്രവേശിക്കൽ പരാജയപ്പെട്ടു - റദ്ദാക്കപ്പെട്ടിരിക്കുന്നു",
+ "login-migrated-generic": "താങ്കളുടെ അംഗത്വം പ്രവാസത്തിലാണ്, ഉപയോക്തൃനാമം ഈ വിക്കിയിൽ നിലവിലില്ല.",
"loginlanguagelabel": "ഭാഷ: $1",
"suspicious-userlogout": "ലോഗൗട്ട് ചെയ്യാനുള്ള താങ്കളുടെ അഭ്യർത്ഥന നിരസിച്ചിരിക്കുന്നു, കാരണം അത് കേടായ ബ്രൗസറിൽ നിന്നോ കാഷിങ് പ്രോക്സിയിൽ നിന്നോ ഉണ്ടായതുപോലെ അനുഭവപ്പെടുന്നു.",
"createacct-another-realname-tip": "താങ്കളുടെ യഥാർത്ഥ പേര് നൽകണമെന്നു നിർബന്ധമില്ല.\n\nഎങ്കിലും അങ്ങനെ ചെയ്താൽ, ഉപയോക്താക്കൾക്ക് അവരരവരുടെ പേരിൽ തന്നെ തങ്ങളുടെ സൃഷ്ടിക്ക് കടപ്പാട് ലഭിക്കുന്നതാണ്.",
"searchall": "എല്ലാം",
"showingresults": "'''$2''' മുതലുള്ള {{PLURAL:$1|'''ഒരു''' ഫലം|'''$1''' ഫലങ്ങൾ}} താഴെ പ്രദർശിപ്പിക്കുന്നു.",
"showingresultsinrange": "#<strong>$2</strong> മുതൽ #<strong>$3</strong> വരെയുള്ള പരിധിയിലെ {{PLURAL:$1|<strong>ഒരു</strong> ഫലം|<strong>$1</strong> ഫലങ്ങൾ}} താഴെ പ്രദർശിപിക്കുന്നു.",
- "showingresultsheader": "'''$4''' എന്ന പദത്തിനു ആകെ ലഭിച്ച {{PLURAL:$5| '''$3''' ഫലത്തിൽ '''$1''' എണ്ണം|'''$3''' ഫലത്തിൽ '''$1 മുതൽ $2''' വരെയുള്ളവ}}",
+ "search-showingresults": "{{PLURAL:$4|<strong>$3</strong> ഫലത്തിൽ<strong>$1</strong>|<strong>$3</strong> ഫലത്തിൽ <strong>$1 മുതൽ $2</strong> വരെയുള്ളവ}}",
"search-nonefound": "താങ്കൾ തിരഞ്ഞ പദത്തിനു യോജിച്ച ഫലങ്ങളൊന്നും ലഭിച്ചില്ല.",
"powersearch-legend": "വിപുലീകൃത തിരച്ചിൽ",
"powersearch-ns": "തിരയേണ്ട നാമമേഖലകൾ",
"unblockiptext": "മുൻപ് തടയപ്പെട്ട ഐ.പി.യുടേയും ഉപയോക്താവിന്റേയും തിരുത്തൽ അവകാശം പുനഃസ്ഥാപിക്കാൻ താഴെയുള്ള ഫോം ഉപയോഗിക്കുക.",
"ipusubmit": "ഈ വിലക്ക് ഒഴിവാക്കുക",
"unblocked": "[[User:$1|$1]] എന്ന ഉപയോക്താവിനുണ്ടായിരുന്ന തടയൽ നീക്കിയിരിക്കുന്നു",
- "unblocked-range": "$1 എന്ന പരിധിയുടെ തടയൽ നീക്കപ്പെട്ടിരിക്കുന്നു",
- "unblocked-id": "$1 എന്ന തടയൽ നീക്കം ചെയ്തിരിക്കുന്നു",
+ "unblocked-range": "$1 എന്ന പരിധിയുടെ തടയൽ നീക്കിയിരിക്കുന്നു.",
+ "unblocked-id": "$1 എന്ന തടയൽ നീക്കിയിരിക്കുന്നു.",
+ "unblocked-ip": "[[Special:Contributions/$1|$1]] എന്ന വിലാസത്തിനുണ്ടായിരുന്ന തടയൽ നീക്കിയിരിക്കുന്നു.",
"blocklist": "തടയപ്പെട്ട ഉപയോക്താക്കൾ",
"ipblocklist": "തടയപ്പെട്ട ഉപയോക്താക്കൾ",
"ipblocklist-legend": "തടഞ്ഞ ഒരു ഉപയോക്താവിനെ തിരയുക",
"log-name-pagelang": "ഭാഷ മാറ്റലിന്റെ രേഖ",
"log-description-pagelang": "താളുകളുടെ ഭാഷകൾ മാറ്റിയതിന്റെ രേഖകൾ ഇവിടെക്കാണാം.",
"logentry-pagelang-pagelang": "$3 എന്ന താളിന്റെ ഭാഷയായിരുന്ന $4, $1 $5 ആയി {{GENDER:$2|മാറ്റി}}.",
- "default-skin-not-found": "അയ്യോ! താങ്കളുടെ വിക്കിയുടെ സ്വതേയുള്ള ദൃശ്യരൂപമായ (<code>$wgDefaultSkin</code>), <code>$1</code>, ലഭ്യമല്ല.\n\nതാങ്കളുടെ ഇൻസ്റ്റലേഷനിൽ താഴെക്കൊടുക്കുന്ന ദൃശ്യരൂപങ്ങൾ ഉണ്ടാകേണ്ടതാണ്. അവ എങ്ങനെ ക്രമീകരിക്കാം എന്നും സ്വതേ വേണ്ടത് എങ്ങനെ സജ്ജമാക്കാം എന്നും [https://www.mediawiki.org/wiki/Manual:Skin_configuration ദൃശ്യരൂപം സജ്ജമാക്കൽ സഹായിയിൽ] കാണുക.\n\n$2\n\n; താങ്കൾ മീഡിയവിക്കി ഇൻസ്റ്റോൾ ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: ഗിറ്റിൽ നിന്ന് അല്ലെങ്കിൽ മറ്റെങ്കിലും മാർഗ്ഗം ഉപയോഗിച്ച് സോഴ്സ് കോഡ് നേരിട്ട് ഉപയോഗിക്കുകയായിരിന്നെങ്കിൽ ഇത് സംഭവിച്ചേക്കാം. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's ദൃശ്യരൂപ ഡയറക്ടറിയിൽ നിന്ന്], ഇനിക്കൊടുക്കുന്ന മാർഗ്ഗങ്ങൾ ഉപയോഗിച്ച് ഏതാനം ദൃശ്യരൂപങ്ങൾ ഇൻസ്റ്റോൾ ചെയ്യാൻ നോക്കുക:\n:* [https://www.mediawiki.org/wiki/Download ടാർബോൾ ഇൻസ്റ്റോളർ] ഡൗൺലോഡ് ചെയ്യുക, അതിൽ നിരവധി ദൃശ്യരൂപങ്ങളും അനുബന്ധങ്ങളും ഉൾപ്പെടുത്തിയിരിക്കുന്നു. അതിൽ നിന്നും താങ്കൾക്ക് <code>skins/</code> ഡയറക്ടറി പകർത്താവുന്നതാണ്.\n:* താങ്കളുടെ മീഡിയവിക്കി ഇൻസ്റ്റലേഷന്റെ <code>skins/</code> ഡയറക്ടറിയിലേക്ക് ഗിറ്റ് ഉപയോഗിച്ച് <code>mediawiki/skins/*</code> റെപ്പോസിറ്ററികളിലൊന്ന് ക്ലോൺ ചെയ്യുക.\n: താങ്കളൊരു മീഡിയവിക്കി ഡവലപ്പറാണെങ്കിൽ ഇത് താങ്കളുടെ ഗിറ്റ് ഡെപ്പോസിറ്ററിയെ ബാധിക്കുന്നതല്ല.\n\n; മീഡിയവിക്കി താങ്കൾ അപ്ഗ്രേഡ് ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: മീഡിയവിക്കി 1.24 ഒപ്പം അതിനു ശേഷമുള്ളവയും ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള ദൃശ്യരൂപങ്ങൾ സ്വതേ സജ്ജമാക്കുന്നില്ല ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery ദൃശ്യരൂപം ഓട്ടോഡിസ്കവറി സഹായം] കാണുക). ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള ദൃശ്യരൂപങ്ങൾ സജ്ജമാക്കുന്നതിനായി ഇനിക്കൊടുക്കുന്ന വരികൾ <code>LocalSettings.php</code> എന്നതിലോട്ട് പകർത്തുക:\n\n<pre>$3</pre>\n\n; <code>LocalSettings.php</code> താളിൽ മാറ്റം വരുത്തിയതേയുള്ളുവെങ്കിൽ:\n: ദൃശ്യരൂപങ്ങളുടെ പേരിൽ അക്ഷരപിശകുകളുണ്ടോയെന്ന് ആവർത്തിച്ച് പരിശോധിക്കുക.",
- "default-skin-not-found-no-skins": "അയ്യോ! താങ്കളുടെ വിക്കിയുടെ സ്വതേയുള്ള ദൃശ്യരൂപമായ (<code>$wgDefaultSkin</code>), <code>$1</code>, ലഭ്യമല്ല.\n\nതാങ്കൾ ദൃശ്യരൂപങ്ങളൊന്നും ഇൻസ്റ്റോൾ ചെയ്തിട്ടില്ല.\n\n; താങ്കൾ മീഡിയവിക്കി ഇൻസ്റ്റോൾ ചെയ്തതേ അല്ലെങ്കിൽ അപ്ഗ്രേഡ് ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: ഗിറ്റിൽ നിന്ന് അല്ലെങ്കിൽ മറ്റെങ്കിലും മാർഗ്ഗം ഉപയോഗിച്ച് സോഴ്സ് കോഡ് നേരിട്ട് ഉപയോഗിക്കുകയായിരിന്നെങ്കിൽ ഇത് സംഭവിച്ചേക്കാം. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's ദൃശ്യരൂപ ഡയറക്ടറിയിൽ നിന്ന്], ഇനിക്കൊടുക്കുന്ന മാർഗ്ഗങ്ങൾ ഉപയോഗിച്ച് ഏതാനം ദൃശ്യരൂപങ്ങൾ ഇൻസ്റ്റോൾ ചെയ്യാൻ നോക്കുക:\n:* [https://www.mediawiki.org/wiki/Download ടാർബോൾ ഇൻസ്റ്റോളർ] ഡൗൺലോഡ് ചെയ്യുക, അതിൽ നിരവധി ദൃശ്യരൂപങ്ങളും അനുബന്ധങ്ങളും ഉൾപ്പെടുത്തിയിരിക്കുന്നു. അതിൽ നിന്നും താങ്കൾക്ക് <code>skins/</code> ഡയറക്ടറി പകർത്താവുന്നതാണ്.\n:* താങ്കളുടെ മീഡിയവിക്കി ഇൻസ്റ്റലേഷന്റെ <code>skins/</code> ഡയറക്ടറിയിലേക്ക് ഗിറ്റ് ഉപയോഗിച്ച് <code>mediawiki/skins/*</code> റെപ്പോസിറ്ററികളിലൊന്ന് ക്ലോൺ ചെയ്യുക.\n: താങ്കളൊരു മീഡിയവിക്കി ഡവലപ്പറാണെങ്കിൽ ഇത് താങ്കളുടെ ഗിറ്റ് ഡെപ്പോസിറ്ററിയെ ബാധിക്കുന്നതല്ല. ദൃശ്യരൂപങ്ങൾ എങ്ങനെ ക്രമീകരിക്കാം എന്നും സ്വതേ വേണ്ടത് എങ്ങനെ സജ്ജമാക്കാം എന്നും [https://www.mediawiki.org/wiki/Manual:Skin_configuration ദൃശ്യരൂപം സജ്ജമാക്കൽ സഹായിയിൽ] കാണുക.",
+ "default-skin-not-found": "അയ്യോ! <code dir=\"ltr\"> $wgDefaultSkin</code> നിർവചിക്കപ്പെട്ടതുപ്രകാരമുള്ള താങ്കളുടെ വിക്കിയുടെ സ്വതേയുള്ള ദൃശ്യരൂപമായ <code>$1</code>, ലഭ്യമല്ല.\n\nതാങ്കളുടെ ഇൻസ്റ്റലേഷനിൽ താഴെക്കൊടുക്കുന്ന ദൃശ്യരൂപങ്ങൾ ഉണ്ടാകേണ്ടതാണ്. അവ എങ്ങനെ ക്രമീകരിക്കാം എന്നും സ്വതേ വേണ്ടത് എങ്ങനെ സജ്ജമാക്കാം എന്നും [https://www.mediawiki.org/wiki/Manual:Skin_configuration ദൃശ്യരൂപം സജ്ജമാക്കൽ സഹായിയിൽ] കാണുക.\n\n$2\n\n; താങ്കൾ മീഡിയവിക്കി ഇൻസ്റ്റോൾ ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: ഗിറ്റിൽ നിന്ന് അല്ലെങ്കിൽ മറ്റെങ്കിലും മാർഗ്ഗം ഉപയോഗിച്ച് സോഴ്സ് കോഡ് നേരിട്ട് ഉപയോഗിക്കുകയായിരിന്നെങ്കിൽ ഇത് സംഭവിച്ചേക്കാം. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's ദൃശ്യരൂപ ഡയറക്ടറിയിൽ നിന്ന്], ഇനിക്കൊടുക്കുന്ന മാർഗ്ഗങ്ങൾ ഉപയോഗിച്ച് ഏതാനം ദൃശ്യരൂപങ്ങൾ ഇൻസ്റ്റോൾ ചെയ്യാൻ നോക്കുക:\n:* [https://www.mediawiki.org/wiki/Download ടാർബോൾ ഇൻസ്റ്റോളർ] ഡൗൺലോഡ് ചെയ്യുക, അതിൽ നിരവധി ദൃശ്യരൂപങ്ങളും അനുബന്ധങ്ങളും ഉൾപ്പെടുത്തിയിരിക്കുന്നു. അതിൽ നിന്നും താങ്കൾക്ക് <code>skins/</code> ഡയറക്ടറി പകർത്താവുന്നതാണ്.\n:* താങ്കളുടെ മീഡിയവിക്കി ഇൻസ്റ്റലേഷന്റെ <code dir=\"ltr\">skins/</code> ഡയറക്ടറിയിലേക്ക് ഗിറ്റ് ഉപയോഗിച്ച് <code>mediawiki/skins/*</code> റെപ്പോസിറ്ററികളിലൊന്ന് ക്ലോൺ ചെയ്യുക.\n: താങ്കളൊരു മീഡിയവിക്കി ഡവലപ്പറാണെങ്കിൽ ഇത് താങ്കളുടെ ഗിറ്റ് ഡെപ്പോസിറ്ററിയെ ബാധിക്കുന്നതല്ല.\n\n; മീഡിയവിക്കി താങ്കൾ അപ്ഗ്രേഡ് ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: മീഡിയവിക്കി 1.24 ഒപ്പം അതിനു ശേഷമുള്ളവയും ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള ദൃശ്യരൂപങ്ങൾ സ്വതേ സജ്ജമാക്കുന്നില്ല ([https://www.mediawiki.org/wiki/Manual:Skin_autodiscovery ദൃശ്യരൂപം ഓട്ടോഡിസ്കവറി സഹായം] കാണുക). ഇൻസ്റ്റോൾ ചെയ്തിട്ടുള്ള ദൃശ്യരൂപങ്ങൾ സജ്ജമാക്കുന്നതിനായി ഇനിക്കൊടുക്കുന്ന വരികൾ <code>LocalSettings.php</code> എന്നതിലോട്ട് പകർത്തുക:\n\n<pre dir=\"ltr\">$3</pre>\n\n; <code>LocalSettings.php</code> താളിൽ മാറ്റം വരുത്തിയതേയുള്ളുവെങ്കിൽ:\n: ദൃശ്യരൂപങ്ങളുടെ പേരിൽ അക്ഷരപിശകുകളുണ്ടോയെന്ന് ആവർത്തിച്ച് പരിശോധിക്കുക.",
+ "default-skin-not-found-no-skins": "അയ്യോ! <code dir=\"ltr\"> $wgDefaultSkin</code> നിർവചിക്കപ്പെട്ടതുപ്രകാരമുള്ള താങ്കളുടെ വിക്കിയുടെ സ്വതേയുള്ള ദൃശ്യരൂപമായ <code>$1</code>, ലഭ്യമല്ല.\n\nതാങ്കൾ ദൃശ്യരൂപങ്ങളൊന്നും ഇൻസ്റ്റോൾ ചെയ്തിട്ടില്ല.\n\n; താങ്കൾ മീഡിയവിക്കി ഇൻസ്റ്റോൾ ചെയ്തതേ അല്ലെങ്കിൽ അപ്ഗ്രേഡ് ചെയ്തതേ ഉള്ളുവെങ്കിൽ:\n: ഗിറ്റിൽ നിന്ന് അല്ലെങ്കിൽ മറ്റെങ്കിലും മാർഗ്ഗം ഉപയോഗിച്ച് സോഴ്സ് കോഡ് നേരിട്ട് ഉപയോഗിക്കുകയായിരിന്നെങ്കിൽ ഇത് സംഭവിച്ചേക്കാം. [https://www.mediawiki.org/wiki/Category:All_skins mediawiki.org's ദൃശ്യരൂപ ഡയറക്ടറിയിൽ നിന്ന്], ഇനിക്കൊടുക്കുന്ന മാർഗ്ഗങ്ങൾ ഉപയോഗിച്ച് ഏതാനം ദൃശ്യരൂപങ്ങൾ ഇൻസ്റ്റോൾ ചെയ്യാൻ നോക്കുക:\n:* [https://www.mediawiki.org/wiki/Download ടാർബോൾ ഇൻസ്റ്റോളർ] ഡൗൺലോഡ് ചെയ്യുക, അതിൽ നിരവധി ദൃശ്യരൂപങ്ങളും അനുബന്ധങ്ങളും ഉൾപ്പെടുത്തിയിരിക്കുന്നു. അതിൽ നിന്നും താങ്കൾക്ക് <code>skins/</code> ഡയറക്ടറി പകർത്താവുന്നതാണ്.\n:* താങ്കളുടെ മീഡിയവിക്കി ഇൻസ്റ്റലേഷന്റെ <code dir=\"ltr\">skins/</code> ഡയറക്ടറിയിലേക്ക് ഗിറ്റ് ഉപയോഗിച്ച് <code>mediawiki/skins/*</code> റെപ്പോസിറ്ററികളിലൊന്ന് ക്ലോൺ ചെയ്യുക.\n: താങ്കളൊരു മീഡിയവിക്കി ഡവലപ്പറാണെങ്കിൽ ഇത് താങ്കളുടെ ഗിറ്റ് ഡെപ്പോസിറ്ററിയെ ബാധിക്കുന്നതല്ല. ദൃശ്യരൂപങ്ങൾ എങ്ങനെ ക്രമീകരിക്കാം എന്നും സ്വതേ വേണ്ടത് എങ്ങനെ സജ്ജമാക്കാം എന്നും [https://www.mediawiki.org/wiki/Manual:Skin_configuration ദൃശ്യരൂപം സജ്ജമാക്കൽ സഹായിയിൽ] കാണുക.",
"default-skin-not-found-row-enabled": "* <code>$1</code> / $2 (സജ്ജം)",
"default-skin-not-found-row-disabled": "* <code>$1</code> / $2 ('''സജ്ജമല്ല''')"
}
"movepagetalktext": "La pàgina ëd discussion tacà a costa pàgina d'artìcol, se a-i é, a sarà tramudà n'automatich ansema a l'artìcol, '''gavà costi cas-sì''':\n*quand as tramuda la pàgina tra diferent spassi nominaj,\n*quand na pàgina ëd discussion nen veujda a-i é già për ël nòm neuv, ò pura\n*a l'ha desselessionà ël quadrèt ëd conferma ambelessì-sota.\n\nAnt costi cas-sì, se a chërd dë felo, a-j farà da manca dë tramudesse la pàgina ëd discussion daspërchiel, a man.",
"movearticle": "Cangeje nòm a l'artìcol:",
"moveuserpage-warning": "'''Atension:''' A sta për tramudé na pàgina d'utent. Për piasì ch'a nòta che a sarà tramudà mach la pàgina e che l'utent a sarà ''pa'' arbatjà.",
+ "movecategorypage-warning": "<strong>Atension:</strong> A l'é a brus ëd tramudé na pàgina ëd categorìa. Për piasì, ch'a ten-a da ment che mach la pàgina a sarà tramudà e che tute le pàgine ant la veja categorìa a saran <em>nen</em> tramudà an cola neuva.",
"movenologintext": "A venta esse n'Utent registrà e esse [[Special:UserLogin|rintrà ant ël sistema]]\npër podèj tramudé na pàgina.",
"movenotallowed": "A l'ha pa ij përmess dont a fa da manca për tramudé le pàgine.",
"movenotallowedfile": "A l'ha pa ij përmess për tramudé j'archivi.",
"cant-move-user-page": "A l'ha pa ij përmess për tramudé le pàgine d'utent (gavà le sot-pàgine).",
"cant-move-to-user-page": "A l'ha pa ël përmess për tramudé na pàgina a na pàgina utent (gavà a na sot-pàgina utent).",
+ "cant-move-category-page": "A l'ha nen ël përmess ëd tramudé le pàgine ëd categorìa.",
+ "cant-move-to-category-page": "A l'ha nen ël përmess ëd tramudé na pàgina a na pàgina ëd categorìa.",
"newtitle": "Neuv tìtol ëd",
"move-watch": "Ten-e sot-euj la pàgina sorgiss e la pàgina selessionà",
"movepagebtn": "Tramudé la pàgina",
"import": "Amportassion ëd pàgine",
"importinterwiki": "Amportassion da wiki diferente",
"import-interwiki-text": "Che a selession-a na wiki e ël tìtol dla pàgina da amporté.\nDate dle revision e stranòm dj'editor a resteran piàjit sù 'cò lor.\nTute j'amportassion antra wiki diferente a resto marcà ant ël [[Special:Log/import|Registr dj'amportassion]].",
+ "import-interwiki-sourcewiki": "Wiki sorgiss:",
+ "import-interwiki-sourcepage": "Pàgina sorgiss:",
"import-interwiki-history": "Copié tute le revision ëd la stòria ëd costa pàgina",
"import-interwiki-templates": "Anserì tùit jë stamp",
"import-interwiki-submit": "Amporté",
"import-upload": "Cariament ëd dat XML",
"import-token-mismatch": "Pèrdita dij dat ëd session.\nPër piasì, ch'a preuva torna.",
"import-invalid-interwiki": "As peul pa amportesse da la wiki spessificà.",
- "import-error-edit": "La pàgina «$1» a l'é pa stàita amportà përchè chiel a peul pa modifichela.",
+ "import-error-edit": "La pàgina «$1» a l'era pa stàita amportà përchè chiel a peul pa modifichela.",
"import-error-create": "La pàgina «$1» a l'é pa stàita amportà përchè chiel a peul pa creela.",
"import-error-interwiki": "La pàgina «$1» a l'é pa amportà përchè sò nòm a l'é arzervà për na liura esterna (antërwiki).",
"import-error-special": "La pàgina «$1» a l'é pa amportà përchè a ponta a në spassi nominal ch'a përmët pa dle pàgine.",
"undeleteinvert": "Обрни избор",
"undeletecomment": "Разлог:",
"undeletedrevisions": "{{PLURAL:$1|Измена је враћена|$1 измене су враћене|$1 измена је враћено}}",
- "undeletedrevisions-files": "$1 {{PLURAL:$1|измена|измене|измена}} и $2 {{PLURAL:$2|датотека|датотеке|датотека}} је враћено",
+ "undeletedrevisions-files": "$1 {{PLURAL:$1|1 измена|измене|измена}} и $2 {{PLURAL:$2|1 датотека је враћена|датотеке су враћене|датотека је враћено}}",
"undeletedfiles": "{{PLURAL:$1|Датотека је враћена|$1 датотеке су враћене|$1 датотека је враћено}}",
"cannotundelete": "Враћање није успело:\n$1",
"undeletedpage": "'''Страница $1 је враћена'''\n\nПогледајте [[Special:Log/delete|историју брисања]] за записе о скорашњим брисањима и враћањима.",
"watchlistedit-clear-titles": "Наслови:",
"watchlistedit-clear-submit": "Испразни списак надгледања (Ово је трајно!)",
"watchlistedit-clear-done": "Ваш списак надгледања је испражњен.",
- "watchlistedit-clear-removed": "{{PLURAL:$1|1 наслов је уклоњен|$1 наслова је уклоњено}}:",
+ "watchlistedit-clear-removed": "{{PLURAL:$1|1 наÑ\81лов Ñ\98е Ñ\83клоÑ\9aен|$1 наÑ\81лова Ñ\81Ñ\83 Ñ\83клоÑ\9aена|$1 наÑ\81лова Ñ\98е Ñ\83клоÑ\9aено}}:",
"watchlistedit-too-many": "Има превише страница за приказ овде.",
"watchlisttools-clear": "испразни списак надгледања",
"watchlisttools-view": "прикажи сродне измене",
"undeleteinvert": "Obrni izbor",
"undeletecomment": "Razlog:",
"undeletedrevisions": "{{PLURAL:$1|Izmena je vraćena|$1 izmene su vraćene|$1 izmena je vraćeno}}",
- "undeletedrevisions-files": "$1 {{PLURAL:$1|izmena|izmene|izmena}} i $2 {{PLURAL:$2|datoteka|datoteke|datoteka}} je vraćeno",
+ "undeletedrevisions-files": "$1 {{PLURAL:$1|1 izmena|izmene|izmena}} i $2 {{PLURAL:$2|1 datoteka je vraćena|datoteke su vraćene|datoteka je vraćeno}}",
"undeletedfiles": "{{PLURAL:$1|Datoteka je vraćena|$1 datoteke su vraćene|$1 datoteka je vraćeno}}",
"cannotundelete": "Vraćanje nije uspelo:\n$1",
"undeletedpage": "'''Stranica $1 je vraćena'''\n\nPogledajte [[Special:Log/delete|istoriju brisanja]] za zapise o skorašnjim brisanjima i vraćanjima.",
"watchlistedit-clear-titles": "Naslovi:",
"watchlistedit-clear-submit": "Isprazni spisak nadgledanja (Ovo je trajno!)",
"watchlistedit-clear-done": "Vaš spisak nadgledanja je ispražnjen.",
- "watchlistedit-clear-removed": "{{PLURAL:$1|1 naslov je uklonjen|$1 naslova je uklonjeno}}:",
+ "watchlistedit-clear-removed": "{{PLURAL:$1|1 naslov je uklonjen|$1 naslova su uklonjena|$1 naslova je uklonjeno}}:",
"watchlisttools-clear": "isprazni spisak nadgledanja",
"watchlisttools-view": "prikaži srodne izmene",
"watchlisttools-edit": "prikaži i uredi spisak nadgledanja",
"searchall": "tất cả",
"showingresults": "Dưới đây là {{PLURAL:$1|'''1'''|'''$1'''}} kết quả bắt đầu từ #'''$2'''.",
"showingresultsinrange": "Dưới đây là cho tới <strong>$1</strong> kết quả từ #<strong>$2</strong> đến #<strong>$3</strong>.",
+ "search-showingresults": "{{PLURAL:$4|Kết quả thứ <strong>$1</strong> trong tổng số <strong>$3</strong>|Các kết quả <strong>$1–$2</strong> trong tổng số <strong>$3</strong>}}",
"search-nonefound": "Không có kết quả nào khớp với câu truy vấn.",
"powersearch-legend": "Tìm kiếm nâng cao",
"powersearch-ns": "Tìm trong không gian tên:",
"unblocked": "[[User:$1|$1]] đã hết bị cấm",
"unblocked-range": "$1 đã được bỏ cấm",
"unblocked-id": "$1 đã hết bị cấm",
+ "unblocked-ip": "[[Special:Contributions/$1|$1]] đã được bỏ cấm.",
"blocklist": "Người dùng bị cấm",
"ipblocklist": "Người dùng bị cấm",
"ipblocklist-legend": "Tìm một thành viên bị cấm",
]
},
"tog-underline": "連結顯示底線:",
- "tog-hideminor": "é\9a±è\97\8fæ\9c\80è¿\91è®\8aæ\9b´ä¸ç\9a\84å°\8fä¿®è¨\82",
+ "tog-hideminor": "é\9a±è\97\8fæ\9c\80è¿\91è®\8aæ\9b´ä»¥ä¾\86ç\9a\84å°\8f編輯",
"tog-hidepatrolled": "隱藏最近變更中巡查過的編輯",
"tog-newpageshidepatrolled": "隱藏新頁面清單中巡查過的頁面",
"tog-extendwatchlist": "展開監視清單顯示包含最近以外的所有變更",
"headline_tip": "第 2 層標題文字",
"nowiki_sample": "插入非格式化文字",
"nowiki_tip": "忽略 Wiki 格式化語法",
+ "image_sample": "範例.jpg",
"image_tip": "附加檔案",
"media_tip": "檔案連結",
"sig_tip": "您的簽名與日期時間",
"@metadata": {
"authors": [
"Vacio",
- "Xelgen"
+ "Xelgen",
+ "Դավիթ Սարոյան"
]
},
- "ooui-dialog-action-close": "Փակել",
"ooui-outline-control-move-down": "Իջեցնել կետը",
"ooui-outline-control-move-up": "Բարձրացնել կետը",
"ooui-outline-control-remove": "Հեռացնել տարրը",
- "ooui-toolbar-more": "Ավելին"
+ "ooui-toolbar-more": "Ավելին",
+ "ooui-dialog-message-accept": "Լավ",
+ "ooui-dialog-message-reject": "Չեղարկել",
+ "ooui-dialog-process-error": "Ինչ-որ սխալ է տեղի ունեցել",
+ "ooui-dialog-process-dismiss": "Փակել",
+ "ooui-dialog-process-retry": "Կրկին փորձել"
}
/*!
- * OOjs UI v0.1.0-pre (49b64bdba7)
+ * OOjs UI v0.1.0-pre (24ac83a472)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-09-15T22:18:37Z
+ * Date: 2014-09-17T18:23:50Z
*/
/*
* Blank theme mixins.
/*!
- * OOjs UI v0.1.0-pre (49b64bdba7)
+ * OOjs UI v0.1.0-pre (24ac83a472)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-09-15T22:18:37Z
+ * Date: 2014-09-17T18:23:50Z
*/
/*
* Blank theme mixins.
/*!
- * OOjs UI v0.1.0-pre (49b64bdba7)
+ * OOjs UI v0.1.0-pre (24ac83a472)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-09-15T22:18:37Z
+ * Date: 2014-09-17T18:23:50Z
*/
( function ( OO ) {
};
/**
- * Set the ideal size.
+ * Set the ideal size. These are the dimensions the element will have when it's not being clipped.
*
* @param {number|string} [width] Width as a number of pixels or CSS string with unit suffix
* @param {number|string} [height] Height as a number of pixels or CSS string with unit suffix
OO.ui.ClippableElement.prototype.setIdealSize = function ( width, height ) {
this.idealWidth = width;
this.idealHeight = height;
+
+ if ( !this.clipping ) {
+ // Update dimensions
+ this.$clippable.css( { width: width, height: height } );
+ }
+ // While clipping, idealWidth and idealHeight are not considered
};
/**
var change = visible !== this.isVisible();
- // Parent method
- OO.ui.TextInputMenuWidget.super.prototype.toggle.call( this, visible );
-
if ( change ) {
- if ( this.isVisible() ) {
+ if ( visible ) {
this.position();
this.$( this.getElementWindow() ).on( 'resize', this.onWindowResizeHandler );
} else {
this.$( this.getElementWindow() ).off( 'resize', this.onWindowResizeHandler );
}
}
- return this;
+
+ // Parent method
+ return OO.ui.TextInputMenuWidget.super.prototype.toggle.call( this, visible );
};
/**
/*!
- * OOjs UI v0.1.0-pre (49b64bdba7)
+ * OOjs UI v0.1.0-pre (24ac83a472)
* https://www.mediawiki.org/wiki/OOjs_UI
*
* Copyright 2011–2014 OOjs Team and other contributors.
* Released under the MIT license
* http://oojs.mit-license.org
*
- * Date: 2014-09-15T22:18:37Z
+ * Date: 2014-09-17T18:23:50Z
*/
/*
* Blank theme mixins.
@import "mediawiki.ui/variables";
@import "mediawiki.ui/mixins";
-// Buttons
-//
-// All buttons start with mw-ui-button class, modified by other classes.
-// It can be any element. Due to a lack of a CSS reset, the exact styling of
-// the button depends on what type of element is used.
-// There are two kinds of buttons, the default is a "Call to Action" with an obvious border
-// and there is a quiet kind without a border.
-//
-// Styleguide 2.
-
-@buttonBorderRadius: 3px;
-@transitionDuration: .1s;
-@transitionFunction: ease-in-out;
-
-// Neutral button styling
-//
-// Markup:
-// <button class="mw-ui-button">.mw-ui-button</button>
-// <button class="mw-ui-button" disabled>.mw-ui-button</button>
-//
-// Styleguide 2.1.
-.mw-ui-button {
- // Inherit the font rather than apply user agent stylesheet (bug 70072)
- font-family: inherit;
- font-size: 1em;
+/*
+Buttons
+
+<h3>Guidelines:</h3>
+
+- .mw-ui-button can **only** be used on **A, INPUT, and BUTTON tags**. There is support for some input types, but this doesn't work in older browsers.
+- .mw-ui-progressive, .mw-ui-constructive, and .mw-ui-destructive can be applied alone on A (see Styleguide 4.0), but can be applied in tandem with .mw-ui-button. *The class order is important:* **base type** (mw-ui-button) must come **first**, **mode** (mw-ui-quiet) **second**, and **context** (mw-ui-progressive) comes **last**.
+- A .mw-ui-quiet button may **never** be the first or only button in a form.
+- Semantically, the **first button in a form should always be the affirmative action** (eg. Submit). This is for accessibility purposes. Where it appears visually is not as important.
+
+<h3>Notes:</h3>
+
+- IE6 does not apply any .mw-ui-button styles at all on BUTTON.
+- IE6 only applies the base .mw-ui-CONTEXT color on A, and doesn't care if you are combining it (ie. .mw-ui-destructive.mw-ui-quiet = always red text).
+- IE7 and IE8 look slightly different from other browsers when rendering certain modes of these buttons.
+
+Markup:
+<button class="mw-ui-button {$modifiers}">Default</button>
+<button class="mw-ui-button mw-ui-progressive {$modifiers}">Progressive</button>
+<button class="mw-ui-button mw-ui-constructive {$modifiers}">Constructive</button>
+<button class="mw-ui-button mw-ui-destructive {$modifiers}">Destructive</button>
+<button class="mw-ui-button mw-ui-progressive {$modifiers}" disabled>Disabled Progressive</button>
+<a class="mw-ui-button {$modifiers}">Default Anchor</a>
+<a class="mw-ui-button mw-ui-progressive {$modifiers}">Progressive Anchor</a>
+<a class="mw-ui-button mw-ui-constructive {$modifiers}">Constructive Anchor</a>
+<a class="mw-ui-button mw-ui-destructive {$modifiers}">Destructive Anchor</a>
+
+.mw-ui-quiet - Quiet: A button that doesn't look like a button.
+.mw-ui-inline - Inline: An even smaller button (zero padding) which also inherits font weight.
+.mw-ui-big - Big: 1.3x font-size.
+
+Styleguide 2.
+*/
+
+// Helpers
+// Individual Button Contexts
+.mixin-mw-ui-button-context( @contextualColor ) {
+ @textShadowColor: spin( @colorTextLight, 180 );
+ @borderColor: mix( @contextualColor, #000, 75% );
+ @raisedColor: mix( @contextualColor, #fff, 92% );
+ @depressedColor: darken( @contextualColor, 8% );
+ @quietDepressedColor: darken( @contextualColor, 25% );
+
+ .mixin-mw-ui-button-disabled-state() {
+ &[disabled],
+ &[disabled]:hover,
+ &[disabled]:focus {
+ background: @colorGrayLight;
+ color: @colorWhite;
+ text-shadow: none;
+ .box-shadow( ~"none" );
+ }
+ }
+
+ .mixin-mw-ui-button-normal-mode() {
+ background: @contextualColor;
+ text-shadow: 0 1px fade( @textShadowColor, 10% );
+ &, &:visited {
+ color: @colorWhite;
+ }
+
+ .mixin-mw-ui-button-disabled-state();
+
+ &:hover,
+ &:focus {
+ background: @raisedColor;
+ text-shadow: 0 1px fade( @textShadowColor, 33% );
+ }
+
+ &:hover {
+ // Shadow under outer, 3D raising inner, edge shading inner
+ .box-shadow( ~"0 1px 0 0 rgba(0, 0, 0, .15), inset 0 -4px 0 0 @{borderColor}, inset 0 -1px 1px 0 rgba(0, 0, 0, .05)" );
+ }
+
+ &:focus {
+ // 3D raising inner, edge shading inner
+ .box-shadow( ~"inset 0 -4px 0 0 @{borderColor}, inset 0 -1px 1px 0 rgba(0, 0, 0, .05), inset 0 0 0 1px @{borderColor}" );
+ }
+
+ &:active {
+ background: @depressedColor;
+ // Slight 3D raising inner, deep edge shading inner
+ .box-shadow( ~"inset 0 -2px 0 0 @{depressedColor}, inset 0 2px 0 0 rgba(0, 0, 0, .25)" );
+ }
+ }
+
+ // Default mode (fully colored)
+ &:not(.mw-ui-quiet) {
+ .mixin-mw-ui-button-normal-mode();
+ }
+ .lte-ie8 & { // IE7 & IE8 do not support :not() selector
+ .mixin-mw-ui-button-normal-mode();
+ }
+
+ // Quiet mode (transparent bg, no border; text color on activity)
+ .lte-ie8 &.mw-ui-quiet,
+ &.mw-ui-quiet {
+ background: transparent;
+
+ &, &:visited {
+ color: @colorTextLight;
+ }
+
+ &:hover {
+ color: @contextualColor;
+ }
+
+ &:active {
+ color: @depressedColor;
+ }
+
+ &:focus {
+ color: @quietDepressedColor;
+ }
+
+ .mixin-mw-ui-button-disabled-state();
+ }
+}
+
+// Default button styles
+.mixin-mw-ui-button-default() {
+ background: @colorGrayLightest;
+
+ &, &:visited {
+ color: @colorTextLight;
+ }
+
+ @textShadowColor: spin( @colorTextLight, 180 );
+ @borderColor: mix( @colorGrayLightest, #000, 75% );
+ @raisedColor: mix( @colorGrayLightest, #fff, 92% );
+ @depressedColor: darken( @colorGrayLightest, 8% );
+ @quietDepressedColor: darken( @colorGrayLightest, 25% );
+
+ .mixin-mw-ui-button-normal-mode() {
+ &:hover,
+ &:focus {
+ background: @raisedColor;
+ text-shadow: 0 1px fade( @textShadowColor, 33% );
+ }
+
+ &:hover {
+ // Shadow under outer, 3D raising inner, edge shading inner
+ .box-shadow( ~"0 1px 0 0 rgba(0, 0, 0, .15), inset 0 -4px 0 0 @{borderColor}, inset 0 -1px 1px 0 rgba(0, 0, 0, .05)" );
+ }
+
+ &:focus {
+ // 3D raising inner, edge shading inner
+ .box-shadow( ~"inset 0 -4px 0 0 @{borderColor}, inset 0 -1px 1px 0 rgba(0, 0, 0, .05), inset 0 0 0 1px @{borderColor}" );
+ }
+
+ &:active {
+ background: @depressedColor;
+ // Slight 3D raising inner, deep edge shading inner
+ .box-shadow( ~"inset 0 -2px 0 0 @{depressedColor}, inset 0 2px 0 0 rgba(0, 0, 0, .25)" );
+ }
+ }
+
+ // Default mode (fully colored)
+ &:not(.mw-ui-quiet) {
+ .mixin-mw-ui-button-normal-mode();
+ }
+ .lte-ie8 & { // IE7 & IE8 do not support :not() selector
+ .mixin-mw-ui-button-normal-mode();
+ }
+
+ // Quiet mode (transparent bg, no border; text color on activity)
+ .lte-ie8 &.mw-ui-quiet,
+ &.mw-ui-quiet {
+ background: transparent;
+
+ &:hover,
+ &:focus,
+ &:active {
+ color: @colorText;
+ }
+ }
+}
+
+// Selector mixins, used for customization if needed
+.mixin-mw-ui-button() {
// Container layout
display: inline-block;
padding: .5em 1em;
margin: 0;
+ vertical-align: middle;
.box-sizing(border-box);
- // Disable weird iOS styling
- -webkit-appearance: none;
-
// IE6/IE7 hack
- // http://stackoverflow.com/a/5838575/365238
*display: inline;
zoom: 1;
- // Container styling
- .button-colors(#FFF);
- border-radius: @buttonBorderRadius;
-
- // Ensure that buttons and inputs are nicely aligned when they have differing heights
- vertical-align: middle;
+ // Disable weird iOS styling
+ -webkit-appearance: none;
- // Content styling
- text-align: center;
+ // Typography
+ font-family: inherit;
+ font-size: 1em;
font-weight: bold;
+ line-height: inherit;
+ &, &:hover {
+ text-decoration: none;
+ }
- // Interaction styling
+ // Design
+ border: 0px solid transparent;
+ border-radius: 3px;
cursor: pointer;
+ // Animation
+ .transition( ~"box-shadow .1s linear, background-color .1s linear, opacity .5s linear" );
+
+ // Disabled state (cursor fix)
&:disabled {
- text-shadow: none;
cursor: default;
}
+ // Focus/active state (outline fix)
+ &:focus, &:active {
+ outline: none;
+ }
- .transition(background @transitionDuration @transitionFunction, color @transitionDuration @transitionFunction, box-shadow @transitionDuration @transitionFunction;);
+ /*
+ * Button modes (continued in .mw-ui-button-context())
+ */
- // Styling for specific button types
- // -----------------------------------------
+ // Thin mode (no padding)
+ &.mw-ui-inline {
+ padding: 0;
+ font-weight: inherit;
+ vertical-align: inherit;
+ min-height: 0;
+ min-width: 0;
+ }
- // Big buttons
- //
- // Not all buttons are equal. You can emphasise certain actions over others
- // using the mw-ui-big class.
- //
- // Markup:
- // <button class="mw-ui-button mw-ui-big">.mw-ui-button</button>
- // <button class="mw-ui-button mw-ui-progressive mw-ui-big">.mw-ui-progressive</button>
- // <button class="mw-ui-button mw-ui-constructive mw-ui-big">.mw-ui-constructive</button>
- // <button class="mw-ui-button mw-ui-destructive mw-ui-big">.mw-ui-destructive</button>
- //
- // Styleguide 2.1.6.
+ // Big mode (1.3x font size)
&.mw-ui-big {
font-size: 1.3em;
}
- // Block buttons
- //
- // Some buttons might need to be stacked.
- //
- // Markup:
- // <button class="mw-ui-button mw-ui-block">.mw-ui-button</button>
- // <button class="mw-ui-button mw-ui-progressive mw-ui-block">.mw-ui-progressive</button>
- // <button class="mw-ui-button mw-ui-constructive mw-ui-block">.mw-ui-constructive</button>
- // <button class="mw-ui-button mw-ui-destructive mw-ui-block">.mw-ui-destructive</button>
- //
- // Styleguide 2.1.5.
- &.mw-ui-block {
- display: block;
- width: 100%;
- }
-
- // Progressive buttons
- //
- // Use progressive buttons for actions which lead to a next step in the process.
- // .mw-ui-primary is deprecated, kept for compatibility.
- //
- // Markup:
- // <button class="mw-ui-button mw-ui-progressive">.mw-ui-progressive</button>
- // <button class="mw-ui-button mw-ui-progressive" disabled>.mw-ui-progressive</button>
- //
- // Styleguide 2.1.1.
- &.mw-ui-progressive,
- &.mw-ui-primary {
- .button-colors(@colorProgressive);
-
- &.mw-ui-quiet {
- .button-colors-quiet(@colorProgressive);
- }
+ /*
+ * Default button styles
+ */
+
+ .mixin-mw-ui-button-default();
+
+ /*
+ * Contextual classes
+ */
+
+ // Progressive context
+ &.mw-ui-progressive {
+ .mixin-mw-ui-button-context( @colorProgressive );
}
- // Constructive buttons
- //
- // Use constructive buttons for actions which result in a final action in the process that results
- // in a change of state.
- // e.g. save changes button
- //
- // Markup:
- // <button class="mw-ui-button mw-ui-constructive">.mw-ui-constructive</button>
- // <button class="mw-ui-button mw-ui-constructive" disabled>.mw-ui-constructive</button>
- //
- // Styleguide 2.1.2.
+ // Constructive context
&.mw-ui-constructive {
- .button-colors(@colorConstructive);
-
- &.mw-ui-quiet {
- .button-colors-quiet(@colorConstructive);
- }
+ .mixin-mw-ui-button-context( @colorConstructive );
}
- // Destructive buttons
- //
- // Use destructive buttons for actions which result in the destruction of data.
- // e.g. deleting a page.
- // This should not be used for cancel buttons.
- //
- // Markup:
- // <button class="mw-ui-button mw-ui-destructive">.mw-ui-destructive</button>
- // <button class="mw-ui-button mw-ui-destructive" disabled>.mw-ui-destructive</button>
- //
- // Styleguide 2.1.3.
+ // Destructive context
&.mw-ui-destructive {
- .button-colors(@colorDestructive);
-
- &.mw-ui-quiet {
- .button-colors-quiet(@colorDestructive);
- }
+ .mixin-mw-ui-button-context( @colorDestructive );
}
+}
- // Quiet buttons
- //
- // Use quiet buttons when they are less important and alongisde other progressive/destructive/progressive buttons.
- //
- // Markup:
- // <button class="mw-ui-button mw-ui-quiet">.mw-ui-button</button>
- // <button class="mw-ui-button mw-ui-constructive mw-ui-quiet">.mw-ui-constructive</button>
- // <button class="mw-ui-button mw-ui-constructive mw-ui-quiet" disabled>.mw-ui-constructive</button>
- // <button class="mw-ui-button mw-ui-destructive mw-ui-quiet">.mw-ui-destructive</button>
- // <button class="mw-ui-button mw-ui-destructive mw-ui-quiet" disabled>.mw-ui-destructive</button>
- // <button class="mw-ui-button mw-ui-progressive mw-ui-quiet">.mw-ui-progressive</button>
- // <button class="mw-ui-button mw-ui-progressive mw-ui-quiet" disabled>.mw-ui-progressive</button>
- //
- // Styleguide 2.1.4.
- &.mw-ui-quiet {
- background: transparent;
- border: none;
- text-shadow: none;
- .button-colors-quiet(@colorButtonText);
+// Button selectors
+.mw-ui-button {
+ .mixin-mw-ui-button;
- &:hover,
- &:focus {
- box-shadow: none;
- }
+ // Default mw-ui-button implementation forces min dimensions for improved touch access
+ min-width: 48px;
+ min-height: 33px;
- &:active,
- &:disabled {
- background: transparent;
- }
+ // When these buttons are children of mw-ui-button-group, adjust accordingly
+ .mw-ui-button-group > & {
+ .mw-ui-button-group-child;
}
}
-a.mw-ui-button {
- text-decoration: none;
+/*
+Button groups
- // This overrides an underline declaration on a:hover and a:focus in
- // commonElements.css, which the class alone isn't specific enough to do.
- &:hover,
- &:focus {
- text-decoration: none;
+Group of buttons.
+
+Markup:
+<div class="mw-ui-button-group">
+ <a class="mw-ui-button" href=javascript:void(0)>A</a>
+ <a class="mw-ui-button" href=javascript:void(0)>B</a>
+ <a class="mw-ui-button" href=javascript:void(0)>C</a>
+ <a class="mw-ui-button" href=javascript:void(0)>D</a>
+</div>
+
+Styleguide 2.1.
+*/
+.mw-ui-button-group {
+ // Clearfix
+ zoom: 1;
+ &:after {
+ content: "";
+ display: table;
+ clear: both;
}
}
-// Button groups
-//
-// Group of buttons. Make sure you clear the floating after using a mw-ui-button-group.
-//
-// Markup:
-// <div class="mw-ui-button-group">
-// <div class="mw-ui-button">A</div>
-// <div class="mw-ui-button">B</div>
-// <div class="mw-ui-button">C</div>
-// <div class="mw-ui-button">D</div>
-// </div><div style="clear:both"></div>
-//
-// Styleguide 2.2.
-.mw-ui-button-group > * {
+// To be used within .mw-ui-button selector
+.mw-ui-button-group-child() {
border-radius: 0;
float: left;
&:first-child {
- border-top-left-radius: @buttonBorderRadius;
- border-bottom-left-radius: @buttonBorderRadius;
- }
-
- &:not(:first-child) {
- border-left: none;
+ border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
}
- &:last-child{
- border-top-right-radius: @buttonBorderRadius;
- border-bottom-right-radius: @buttonBorderRadius;
+ &:last-child {
+ border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
}
}
<?php
+/**
+ * @group Database
+ */
+
class LinkerTest extends MediaWikiLangTestCase {
/**
* @author Thiemo Mättig
*
* @group Action
+ * @group Database
*/
class ActionTest extends MediaWikiTestCase {
),
), $out->getSections(), 'getSections() with proper value when <h2> is used' );
}
+
+ /**
+ * @dataProvider provideNormalizeLinkUrl
+ * @covers Parser::normalizeLinkUrl
+ * @covers Parser::normalizeUrlComponent
+ */
+ public function testNormalizeLinkUrl( $explanation, $url, $expected ) {
+ $this->assertEquals( $expected, Parser::normalizeLinkUrl( $url ), $explanation );
+ }
+
+ public static function provideNormalizeLinkUrl() {
+ return array(
+ array(
+ 'Escaping of unsafe characters',
+ 'http://example.org/foo bar?param[]="value"¶m[]=valüe',
+ 'http://example.org/foo%20bar?param%5B%5D=%22value%22¶m%5B%5D=val%C3%BCe',
+ ),
+ array(
+ 'Case normalization of percent-encoded characters',
+ 'http://example.org/%ab%cD%Ef%FF',
+ 'http://example.org/%AB%CD%EF%FF',
+ ),
+ array(
+ 'Unescaping of safe characters',
+ 'http://example.org/%3C%66%6f%6F%3E?%3C%66%6f%6F%3E#%3C%66%6f%6F%3E',
+ 'http://example.org/%3Cfoo%3E?%3Cfoo%3E#%3Cfoo%3E',
+ ),
+ array(
+ 'Context-sensitive replacement of sometimes-safe characters',
+ 'http://example.org/%23%2F%3F%26%3D%2B%3B?%23%2F%3F%26%3D%2B%3B#%23%2F%3F%26%3D%2B%3B',
+ 'http://example.org/%23%2F%3F&=+;?%23/?%26%3D%2B%3B#%23/?&=+;',
+ ),
+ );
+ }
+
// @todo Add tests for cleanSig() / cleanSigInSig(), getSection(),
// replaceSection(), getPreloadText()
}
* Copyright © 2013, Siebrand Mazeland
* Copyright © 2013, Wikimedia Foundation Inc.
*
+ * @group Database
*/
class ImageListPagerTest extends MediaWikiTestCase {
<?php
+/**
+ * @group Database
+ */
+
class SpecialMIMESearchTest extends MediaWikiTestCase {
/** @var MIMESearchPage */
* @covers MediaWikiPageLinkRenderer
*
* @group Title
+ * @group Database
*/
class MediaWikiPageLinkRendererTest extends MediaWikiTestCase {