*.sh eol=lf
+*.icc binary
* The Block class constructor now takes an associative array of parameters
instead of many optional positional arguments. Calling the constructor the old
way will issue a deprecation warning.
+* The jquery.mwExtension module was deprecated.
== Compatibility ==
}
$batch = new LinkBatch( $titles );
-$batch->execute();
\ No newline at end of file
+$batch->execute();
** link: Generic URL template, often the document root.
** page_path: (for mediawiki sites) URL template for wiki pages (corresponds to the target wiki's $wgArticlePath setting)
** file_path: (for mediawiki sites) URL pattern for application entry points and resources (corresponds to the target wiki's $wgScriptPath setting).
-* forward: Whether using a prefix defined by a localid tag in the URL will cause the request to be redirected to the corresponding page on the target wiki (currently unused). E.g. whether http://wiki.acme.com/wiki/foo:Buzz should be forwarded to http://wiki.foo.com/read/Buzz. (CAVEAT: not yet implement, can be specified but has no effect)
\ No newline at end of file
+* forward: Whether using a prefix defined by a localid tag in the URL will cause the request to be redirected to the corresponding page on the target wiki (currently unused). E.g. whether http://wiki.acme.com/wiki/foo:Buzz should be forwarded to http://wiki.foo.com/read/Buzz. (CAVEAT: not yet implement, can be specified but has no effect)
*/
$wgSitename = 'MediaWiki';
+/**
+ * When the wiki is running behind a proxy and this is set to true, assumes that the proxy exposes
+ * the wiki on the standard ports (443 for https and 80 for http).
+ * @var bool
+ * @since 1.26
+ */
+$wgAssumeProxiesUseDefaultProtocolPorts = true;
+
/**
* URL of the server.
*
*/
$wgExiv2Command = '/usr/bin/exiv2';
+
+/**
+ * Path to exiftool binary. Used for lossless ICC profile swapping.
+ *
+ * @since 1.26
+ */
+$wgExiftool = '/usr/bin/exiftool';
+
/**
* Scalable Vector Graphics (SVG) may be uploaded as images.
* Since SVG support is not yet standard in browsers, it is
*/
$wgUploadThumbnailRenderHttpCustomDomain = false;
+/**
+ * When this variable is true and JPGs use the sRGB ICC profile, swaps it for the more lightweight
+ * (and free) TinyRGB profile when generating thumbnails.
+ *
+ * @since 1.26
+ */
+$wgUseTinyRGBForJPGThumbnails = false;
+
/**
* Default parameters for the "<gallery>" tag
*/
*/
const AS_PARSE_ERROR = 240;
+ /**
+ * Status: when changing the content model is disallowed due to
+ * $wgContentHandlerUseDB being false
+ */
+ const AS_CANNOT_USE_CUSTOM_MODEL = 241;
+
/**
* HTML id and name for the beginning of the edit form.
*/
case self::AS_HOOK_ERROR:
return false;
+ case self::AS_CANNOT_USE_CUSTOM_MODEL:
case self::AS_PARSE_ERROR:
$wgOut->addWikiText( '<div class="error">' . $status->getWikiText() . '</div>' );
return true;
*/
function internalAttemptSave( &$result, $bot = false ) {
global $wgUser, $wgRequest, $wgParser, $wgMaxArticleSize;
+ global $wgContentHandlerUseDB;
$status = Status::newGood();
}
}
- if ( $this->contentModel !== $this->mTitle->getContentModel()
- && !$wgUser->isAllowed( 'editcontentmodel' )
- ) {
- $status->setResult( false, self::AS_NO_CHANGE_CONTENT_MODEL );
- return $status;
+ if ( $this->contentModel !== $this->mTitle->getContentModel() ) {
+ if ( !$wgContentHandlerUseDB ) {
+ $status->fatal( 'editpage-cannot-use-custom-model' );
+ $status->value = self::AS_CANNOT_USE_CUSTOM_MODEL;
+ return $status;
+ } elseif ( !$wgUser->isAllowed( 'editcontentmodel' ) ) {
+ $status->setResult( false, self::AS_NO_CHANGE_CONTENT_MODEL );
+ return $status;
+ }
}
if ( $this->changeTags ) {
if ( $wgUser->isAllowed( 'editinterface' ) ) {
$title = wfMessage( 'filedelete-reason-dropdown' )->inContentLanguage()->getTitle();
- $link = Linker::link(
+ $link = Linker::linkKnown(
$title,
wfMessage( 'filedelete-edit-reasonlist' )->escaped(),
array(),
}
/**
- * Get a cache key
+ * Make a cache key for the local wiki.
*
* @param string $args,...
* @return string
}
/**
- * Get a cache key for a foreign DB
+ * Make a cache key for a foreign DB.
+ *
+ * Must match what wfMemcKey() would produce in context of the foreign wiki.
*
* @param string $db
* @param string $prefix
function wfForeignMemcKey( $db, $prefix /*...*/ ) {
$args = array_slice( func_get_args(), 2 );
if ( $prefix ) {
+ // Match wfWikiID() logic
$key = "$db-$prefix:" . implode( ':', $args );
} else {
$key = $db . ':' . implode( ':', $args );
return str_replace( ' ', '_', $key );
}
+/**
+ * Make a cache key with database-agnostic prefix.
+ *
+ * Doesn't have a wiki-specific namespace. Uses a generic 'global' prefix
+ * instead. Must have a prefix as otherwise keys that use a database name
+ * in the first segment will clash with wfMemcKey/wfForeignMemcKey.
+ *
+ * @since 1.26
+ * @param string $args,...
+ * @return string
+ */
+function wfGlobalCacheKey( /*...*/ ) {
+ $args = func_get_args();
+ $key = 'global:' . implode( ':', $args );
+ $key = str_replace( ' ', '_', $key );
+ return $key;
+}
+
/**
* Get an ASCII string identifying this wiki
* This is used as a prefix in memcached keys
}
throw new BadTitleError();
}
- // Redirect loops, no title in URL, $wgUsePathInfo URLs, and URLs with a variant
- } elseif ( $request->getVal( 'action', 'view' ) == 'view' && !$request->wasPosted()
- && ( $request->getVal( 'title' ) === null
- || $title->getPrefixedDBkey() != $request->getVal( 'title' ) )
- && !count( $request->getValueNames( array( 'action', 'title' ) ) )
- && Hooks::run( 'TestCanonicalRedirect', array( $request, $title, $output ) )
- ) {
- if ( $title->isSpecialPage() ) {
- list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
- if ( $name ) {
- $title = SpecialPage::getTitleFor( $name, $subpage );
- }
- }
- $targetUrl = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
- // Redirect to canonical url, make it a 301 to allow caching
- if ( $targetUrl == $request->getFullRequestURL() ) {
- $message = "Redirect loop detected!\n\n" .
- "This means the wiki got confused about what page was " .
- "requested; this sometimes happens when moving a wiki " .
- "to a new server or changing the server configuration.\n\n";
-
- if ( $this->config->get( 'UsePathInfo' ) ) {
- $message .= "The wiki is trying to interpret the page " .
- "title from the URL path portion (PATH_INFO), which " .
- "sometimes fails depending on the web server. Try " .
- "setting \"\$wgUsePathInfo = false;\" in your " .
- "LocalSettings.php, or check that \$wgArticlePath " .
- "is correct.";
+ // Handle any other redirects.
+ // Redirect loops, titleless URL, $wgUsePathInfo URLs, and URLs with a variant
+ } elseif ( !$this->tryNormaliseRedirect( $title ) ) {
+
+ // Special pages
+ if ( NS_SPECIAL == $title->getNamespace() ) {
+ // Actions that need to be made when we have a special pages
+ SpecialPageFactory::executePath( $title, $this->context );
+ } else {
+ // ...otherwise treat it as an article view. The article
+ // may still be a wikipage redirect to another article or URL.
+ $article = $this->initializeArticle();
+ if ( is_object( $article ) ) {
+ $this->performAction( $article, $requestTitle );
+ } elseif ( is_string( $article ) ) {
+ $output->redirect( $article );
} else {
- $message .= "Your web server was detected as possibly not " .
- "supporting URL path components (PATH_INFO) correctly; " .
- "check your LocalSettings.php for a customized " .
- "\$wgArticlePath setting and/or toggle \$wgUsePathInfo " .
- "to true.";
+ throw new MWException( "Shouldn't happen: MediaWiki::initializeArticle()"
+ . " returned neither an object nor a URL" );
}
- throw new HttpError( 500, $message );
- } else {
- $output->setSquidMaxage( 1200 );
- $output->redirect( $targetUrl, '301' );
}
- // Special pages
- } elseif ( NS_SPECIAL == $title->getNamespace() ) {
- // Actions that need to be made when we have a special pages
- SpecialPageFactory::executePath( $title, $this->context );
- } else {
- // ...otherwise treat it as an article view. The article
- // may be a redirect to another article or URL.
- $article = $this->initializeArticle();
- if ( is_object( $article ) ) {
- $this->performAction( $article, $requestTitle );
- } elseif ( is_string( $article ) ) {
- $output->redirect( $article );
+ }
+ }
+
+ /**
+ * Handle redirects for uncanonical title requests.
+ *
+ * Handles:
+ * - Redirect loops.
+ * - No title in URL.
+ * - $wgUsePathInfo URLs.
+ * - URLs with a variant.
+ * - Other non-standard URLs (as long as they have no extra query parameters).
+ *
+ * Behaviour:
+ * - Normalise title values:
+ * /wiki/Foo%20Bar -> /wiki/Foo_Bar
+ * - Normalise empty title:
+ * /wiki/ -> /wiki/Main
+ * /w/index.php?title= -> /wiki/Main
+ * - Don't redirect anything with query parameters other than 'title' or 'action=view'.
+ *
+ * @return bool True if a redirect was set.
+ */
+ private function tryNormaliseRedirect( $title ) {
+ $request = $this->context->getRequest();
+ $output = $this->context->getOutput();
+
+ if ( $request->getVal( 'action', 'view' ) != 'view'
+ || $request->wasPosted()
+ || ( $request->getVal( 'title' ) !== null
+ && $title->getPrefixedDBkey() == $request->getVal( 'title' ) )
+ || count( $request->getValueNames( array( 'action', 'title' ) ) )
+ || !Hooks::run( 'TestCanonicalRedirect', array( $request, $title, $output ) )
+ ) {
+ return false;
+ }
+
+ if ( $title->isSpecialPage() ) {
+ list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
+ if ( $name ) {
+ $title = SpecialPage::getTitleFor( $name, $subpage );
+ }
+ }
+ // Redirect to canonical url, make it a 301 to allow caching
+ $targetUrl = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
+ if ( $targetUrl == $request->getFullRequestURL() ) {
+ $message = "Redirect loop detected!\n\n" .
+ "This means the wiki got confused about what page was " .
+ "requested; this sometimes happens when moving a wiki " .
+ "to a new server or changing the server configuration.\n\n";
+
+ if ( $this->config->get( 'UsePathInfo' ) ) {
+ $message .= "The wiki is trying to interpret the page " .
+ "title from the URL path portion (PATH_INFO), which " .
+ "sometimes fails depending on the web server. Try " .
+ "setting \"\$wgUsePathInfo = false;\" in your " .
+ "LocalSettings.php, or check that \$wgArticlePath " .
+ "is correct.";
} else {
- throw new MWException( "Shouldn't happen: MediaWiki::initializeArticle()"
- . " returned neither an object nor a URL" );
+ $message .= "Your web server was detected as possibly not " .
+ "supporting URL path components (PATH_INFO) correctly; " .
+ "check your LocalSettings.php for a customized " .
+ "\$wgArticlePath setting and/or toggle \$wgUsePathInfo " .
+ "to true.";
}
+ throw new HttpError( 500, $message );
}
+ $output->setSquidMaxage( 1200 );
+ $output->redirect( $targetUrl, '301' );
+ return true;
}
/**
if ( $canonicalUrl !== false ) {
$canonicalUrl = wfExpandUrl( $canonicalUrl, PROTO_CANONICAL );
} else {
- $reqUrl = $this->getRequest()->getRequestURL();
- $canonicalUrl = wfExpandUrl( $reqUrl, PROTO_CANONICAL );
+ if ( $this->isArticleRelated() ) {
+ // This affects all requests where "setArticleRelated" is true. This is
+ // typically all requests that show content (query title, curid, oldid, diff),
+ // and all wikipage actions (edit, delete, purge, info, history etc.).
+ // It does not apply to File pages and Special pages.
+ // 'history' and 'info' actions address page metadata rather than the page
+ // content itself, so they may not be canonicalized to the view page url.
+ // TODO: this ought to be better encapsulated in the Action class.
+ $action = Action::getActionName( $this->getContext() );
+ if ( in_array( $action, array( 'history', 'info' ) ) ) {
+ $query = "action={$action}";
+ } else {
+ $query = '';
+ }
+ $canonicalUrl = $this->getTitle()->getCanonicalURL( $query );
+ } else {
+ $reqUrl = $this->getRequest()->getRequestURL();
+ $canonicalUrl = wfExpandUrl( $reqUrl, PROTO_CANONICAL );
+ }
}
}
if ( $canonicalUrl !== false ) {
$out .= Xml::closeElement( 'fieldset' );
if ( $user->isAllowed( 'editinterface' ) ) {
- $link = Linker::link(
+ $link = Linker::linkKnown(
$context->msg( 'protect-dropdown' )->inContentLanguage()->getTitle(),
$context->msg( 'protect-edit-reasonlist' )->escaped(),
array(),
* @return string
*/
public static function detectServer() {
+ global $wgAssumeProxiesUseDefaultProtocolPorts;
+
$proto = self::detectProtocol();
$stdPort = $proto === 'https' ? 443 : 80;
if ( !isset( $_SERVER[$varName] ) ) {
continue;
}
+
$parts = IP::splitHostAndPort( $_SERVER[$varName] );
if ( !$parts ) {
// Invalid, do not use
continue;
}
+
$host = $parts[0];
- if ( isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) {
+ if ( $wgAssumeProxiesUseDefaultProtocolPorts && isset( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) ) {
// Bug 70021: Assume that upstream proxy is running on the default
// port based on the protocol. We have no reliable way to determine
// the actual port in use upstream.
}
}
- ApiResult::setArrayType( $data, 'BCarray' );
+ ApiResult::setArrayType( $data, 'assoc' );
ApiResult::setIndexedTagName( $data, 'ns' );
return $this->getResult()->addValue( 'query', $property, $data );
"2nd-player",
"Los688",
"Whym",
- "Mfuji"
+ "Mfuji",
+ "Otokoume"
]
},
"apihelp-main-param-action": "実行する操作です。",
"apihelp-edit-param-tags": "この版に適用する変更タグ。",
"apihelp-edit-param-minor": "細部の編集",
"apihelp-edit-param-notminor": "細部の編集ではない。",
+ "apihelp-edit-param-bot": "この編集をボットとしてマークする。",
"apihelp-edit-param-basetimestamp": "編集前の版のタイムスタンプ。編集競合を検出するために使用されます。\n[[Special:ApiHelp/query+revisions|action=query&prop=revisions&rvprop=timestamp]] で取得できます。",
"apihelp-edit-param-starttimestamp": "編集作業を開始したときのタイムスタンプ。編集競合を検出するために使用されます。適切な値は <var>[[Special:ApiHelp/main|curtimestamp]]</var> を使用して編集作業を開始するとき (たとえば、編集するページの本文を読み込んだとき) に取得できます。",
"apihelp-edit-param-createonly": "すでにそのページが存在する場合は編集を行いません。",
"Eakarpov",
"Kaganer",
"Mariya",
- "Дмитрий"
+ "Дмитрий",
+ "WindEwriX"
]
},
"apihelp-main-description": "<div class=\"hlist plainlinks api-main-links\">\n* [[mw:API:Main_page|Документация]]\n* [[mw:API:FAQ|ЧаВО]]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api Почтовая рассылка]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce Новости API]\n* [https://phabricator.wikimedia.org/maniphest/query/GebfyV4uCaLd/#R Ошибки и запросы]\n</div>\n<strong>Статус:</strong> Все отображаемые на этой странице функции должны работать, однако API находится в статусе активной разработки, и может измениться в любой момент. Подпишитесь на [https://lists.wikimedia.org/pipermail/mediawiki-api-announce/ почтовую рассылку mediawiki-api-announce], чтобы быть в курсе обновлений.\n\n<strong>Ошибочные запросы:</strong> Если API получает запрос с ошибкой, вернётся заголовок HTTP с ключом \"MediaWiki-API-Error\", после чего значение заголовка и код ошибки будут отправлены обратно и установлены в то же значение. Более подробную информацию см. [[mw:API:Errors_and_warnings|API: Ошибки и предупреждения]].",
"apihelp-block-description": "Блокировка участника.",
"apihelp-block-param-user": "Имя участника, IP-адрес или диапазон IP-адресов, которые вы хотите заблокировать.",
"apihelp-block-param-reason": "Причина блокировки.",
+ "apihelp-block-param-anononly": "Блокировать только анонимных пользователей (т. е. запретить анонимные правки для этого IP-адреса).",
"apihelp-block-param-nocreate": "Запретить создание учётных записей.",
+ "apihelp-block-param-watchuser": "Следить за страницей пользователя или IP-участника и страницей обсуждения.",
"apihelp-checktoken-param-token": "токен для проверки",
"apihelp-checktoken-param-maxtokenage": "Максимально допустимый возраст токена (в секундах).",
"apihelp-checktoken-example-simple": "Проверить годность <kbd>csrf</kbd>-токена.",
"apihelp-delete-description": "Удалить страницу.",
"apihelp-delete-param-title": "Заголовок страницы удалить. Совместное использование с <var>$1страницы</var> невозможно.",
"apihelp-delete-param-watch": "Добавить страницу к текущему списку наблюдения пользователя.",
+ "apihelp-delete-param-unwatch": "Удалить страницу из списка наблюдения текущего пользователя.",
"apihelp-delete-example-simple": "удалить <kbd>Main Page</kbd>.",
"apihelp-delete-example-reason": "Удалить <kbd>Main Page</kbd> причина <kbd>Preparing for move</kbd>.",
"apihelp-disabled-description": "Этот модуль был отключен.",
"apihelp-edit-param-minor": "Незначительное изменение (малая правка).",
"apihelp-edit-param-notminor": "Значительное изменение (обычная, не «малая», правка).",
"apihelp-edit-param-bot": "Пометить правку как сделанную ботом.",
+ "apihelp-edit-param-createonly": "Не редактировать страницу, если она уже существует.",
"apihelp-edit-param-watch": "Добавить страницу к текущему списку наблюдения пользователя.",
+ "apihelp-edit-param-unwatch": "Удалить страницу из списка наблюдения текущего пользователя.",
"apihelp-edit-example-edit": "Редактировать страницу",
"apihelp-emailuser-description": "Письмо участнику",
+ "apihelp-emailuser-param-target": "Адресат электронного письма",
"apihelp-emailuser-param-subject": "Заголовок темы.",
"apihelp-emailuser-param-text": "Содержание письма",
"apihelp-emailuser-param-ccme": "Отправить копию этого сообщения мне.",
"apihelp-emailuser-example-email": "Отправить письмо пользователю <kbd>WikiSysop</kbd> с текстом <kbd>контентом</kbd>.",
"apihelp-expandtemplates-description": "Разворачивает все шаблоны в wikitext.",
"apihelp-expandtemplates-param-title": "Заголовок страницы.",
+ "apihelp-expandtemplates-paramvalue-prop-parsetree": "Дерево разбора XML входных данных.",
"apihelp-feedcontributions-param-year": "От года (и ранее).",
"apihelp-feedcontributions-param-month": "От месяца (и ранее).",
+ "apihelp-feedrecentchanges-param-hideminor": "Скрыть малые правки.",
+ "apihelp-feedrecentchanges-param-hidebots": "Скрыть правки ботов.",
+ "apihelp-feedrecentchanges-param-hidepatrolled": "Скрыть отпатруллированные правки.",
"apihelp-feedrecentchanges-param-tagfilter": "Фильтр по тегам.",
+ "apihelp-feedrecentchanges-example-simple": "Список последних изменений.",
+ "apihelp-feedrecentchanges-example-30days": "Показать последние изменения в течение 30 дней.",
"apihelp-filerevert-param-comment": "Загрузить комментарий.",
+ "apihelp-help-example-main": "Помощь по главному модулю.",
"apihelp-help-example-recursive": "Вся справка в одном разделе.",
"apihelp-import-param-summary": "Импорт итога",
"apihelp-import-param-xml": "Загруженный XML-файл.",
/**
* Returns true for content models that support caching using the
- * ParserCache mechanism. See WikiPage::isParserCacheUsed().
+ * ParserCache mechanism. See WikiPage::shouldCheckParserCache().
*
* @since 1.21
*
public function getElement( $element ) {
return $element . ' ' . $this->getInputHTML( '' );
}
-}
\ No newline at end of file
+}
public function getInputHTML( $value ) {
return $this->mClassWithButton->getElement( parent::getInputHTML( $value ) );
}
-}
\ No newline at end of file
+}
public function getInputHTML( $value ) {
return $this->mClassWithButton->getElement( parent::getInputHTML( $value ) );
}
-}
\ No newline at end of file
+}
// Revision ID must be passed to the parser output to get revision variables correct
$parserOutput = $content->getParserOutput(
$title, $revision->getId(), $parserOptions, false );
- $ellapsed = microtime( true ) - $start;
+ $elapsed = microtime( true ) - $start;
// If it took a long time to render, then save this back to the cache to avoid
// wasted CPU by other apaches or job runners. We don't want to always save to
// cache as this can cause high cache I/O and LRU churn when a template changes.
- if ( $ellapsed >= self::PARSE_THRESHOLD_SEC
- && $page->isParserCacheUsed( $parserOptions, $revision->getId() )
+ if ( $elapsed >= self::PARSE_THRESHOLD_SEC
+ && $page->shouldCheckParserCache( $parserOptions, $revision->getId() )
&& $parserOutput->isCacheable()
) {
$ctime = wfTimestamp( TS_MW, (int)$start ); // cache time
protected function transformImageMagick( $image, $params ) {
# use ImageMagick
global $wgSharpenReductionThreshold, $wgSharpenParameter, $wgMaxAnimatedGifArea,
- $wgImageMagickTempDir, $wgImageMagickConvertCommand;
+ $wgImageMagickTempDir, $wgImageMagickConvertCommand, $wgResourceBasePath,
+ $wgUseTinyRGBForJPGThumbnails;
$quality = array();
$sharpen = array();
class ExifBitmapHandler extends BitmapHandler {
const BROKEN_FILE = '-1'; // error extracting metadata
const OLD_BROKEN_FILE = '0'; // outdated error extracting metadata.
+ const SRGB_ICC_PROFILE_NAME = 'IEC 61966-2.1 Default RGB colour space - sRGB';
function convertMetadataVersion( $metadata, $version = 1 ) {
// basically flattens arrays.
return 0;
}
+
+ protected function transformImageMagick( $image, $params ) {
+ global $wgUseTinyRGBForJPGThumbnails;
+
+ $ret = parent::transformImageMagick( $image, $params );
+
+ if ( $ret ) {
+ return $ret;
+ }
+
+ if ( $params['mimeType'] === 'image/jpeg' && $wgUseTinyRGBForJPGThumbnails ) {
+ // T100976 If the profile embedded in the JPG is sRGB, swap it for the smaller
+ // (and free) TinyRGB
+
+ $this->swapICCProfile(
+ $params['dstPath'],
+ self::SRGB_ICC_PROFILE_NAME,
+ realpath( __DIR__ ) . '/tinyrgb.icc'
+ );
+ }
+
+ return false;
+ }
+
+ /**
+ * Swaps an embedded ICC profile for another, if found. Depends on exiftool, no-op if not installed.
+ * @param string $filepath File to be manipulated (will be overwritten)
+ * @param string $oldProfileString Exact name of color profile to look for (the one that will be replaced)
+ * @param string $profileFilepath ICC profile file to apply to the file
+ * @since 1.26
+ * @return bool
+ */
+ public function swapICCProfile( $filepath, $oldProfileString, $profileFilepath ) {
+ global $wgExiftool;
+
+ if ( !$wgExiftool || !is_executable( $wgExiftool ) ) {
+ return false;
+ }
+
+ $cmd = wfEscapeShellArg( $wgExiftool,
+ '-DeviceModelDesc',
+ '-S',
+ '-T',
+ $filepath
+ );
+
+ $output = wfShellExecWithStderr( $cmd, $retval );
+
+ if ( $retval !== 0 || strcasecmp( trim( $output ), $oldProfileString ) !== 0 ) {
+ // We can't establish that this file has the expected ICC profile, don't process it
+ return false;
+ }
+
+ $cmd = wfEscapeShellArg( $wgExiftool,
+ '-overwrite_original',
+ '-icc_profile<=' . $profileFilepath,
+ $filepath
+ );
+
+ $output = wfShellExecWithStderr( $cmd, $retval );
+
+ if ( $retval !== 0 ) {
+ $this->logErrorForExternalProcess( $retval, $output, $cmd );
+
+ return false;
+ }
+
+ return true;
+ }
}
$rotation = ( $params['rotation'] + $this->getRotation( $file ) ) % 360;
- if ( $wgJpegTran && is_file( $wgJpegTran ) ) {
+ if ( $wgJpegTran && is_executable( $wgJpegTran ) ) {
$cmd = wfEscapeShellArg( $wgJpegTran ) .
" -rotate " . wfEscapeShellArg( $rotation ) .
" -outfile " . wfEscapeShellArg( $params['dstPath'] ) .
/** @var array Map of (session ID => SHA-1 of the data) */
protected static $hashCache = array();
+ const TTL_REFRESH_WINDOW = 600; // refresh if expiring in 10 minutes
+
/**
* Install a session handler for the current web request
*/
}
/**
- * Shutdown function. See the comment inside ObjectCacheSessionHandler::install
- * for rationale.
+ * Shutdown function.
+ * See the comment inside ObjectCacheSessionHandler::install for rationale.
*/
static function handleShutdown() {
+ global $wgObjectCacheSessionExpiry;
+
+ $now = microtime( true );
+ // Session are only written in object stores when $_SESSION changes,
+ // which also renews the TTL ($wgObjectCacheSessionExpiry). If a user
+ // is active but not causing session data changes, it may suddenly
+ // as they view a form, blocking the first submission.
+ // Make a dummy change every so often to avoid this.
+ if ( !isset( $_SESSION['wsExpiresUnix'] )
+ || ( $now + self::TTL_REFRESH_WINDOW ) > isset( $_SESSION['wsExpiresUnix'] )
+ ) {
+ $_SESSION['wsExpiresUnix'] = $now + $wgObjectCacheSessionExpiry;
+ }
+
session_write_close();
}
}
}
# Should the parser cache be used?
- $useParserCache = $this->mPage->isParserCacheUsed( $parserOptions, $oldid );
+ $useParserCache = $this->mPage->shouldCheckParserCache( $parserOptions, $oldid );
wfDebug( 'Article::view using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" );
if ( $user->getStubThreshold() ) {
$this->getContext()->getStats()->increment( 'pcache_miss_stub' );
Xml::closeElement( 'form' );
if ( $user->isAllowed( 'editinterface' ) ) {
- $link = Linker::link(
+ $link = Linker::linkKnown(
$ctx->msg( 'deletereason-dropdown' )->inContentLanguage()->getTitle(),
wfMessage( 'delete-edit-reasonlist' )->escaped(),
array(),
$s = '';
$this->doQuery();
if ( count( $this->mHist ) ) {
+ if ( $this->mImg->isLocal() ) {
+ // Do a batch existence check for user pages and talkpages
+ $linkBatch = new LinkBatch();
+ for ( $i = $this->mRange[0]; $i <= $this->mRange[1]; $i++ ) {
+ $file = $this->mHist[$i];
+ $user = $file->getUser( 'text' );
+ $linkBatch->add( NS_USER, $user );
+ $linkBatch->add( NS_USER_TALK, $user );
+ }
+ $linkBatch->execute();
+ }
+
$list = new ImageHistoryList( $this->mImagePage );
# Generate prev/next links
$navLink = $this->getNavigationBar();
* Should the parser cache be used?
*
* @param ParserOptions $parserOptions ParserOptions to check
- * @param int $oldid
+ * @param int $oldId
* @return bool
*/
- public function isParserCacheUsed( ParserOptions $parserOptions, $oldid ) {
+ public function shouldCheckParserCache( ParserOptions $parserOptions, $oldId ) {
return $parserOptions->getStubThreshold() == 0
&& $this->exists()
- && ( $oldid === null || $oldid === 0 || $oldid === $this->getLatest() )
+ && ( $oldId === null || $oldId === 0 || $oldId === $this->getLatest() )
&& $this->getContentHandler()->isParserCacheSupported();
}
*/
public function getParserOutput( ParserOptions $parserOptions, $oldid = null ) {
- $useParserCache = $this->isParserCacheUsed( $parserOptions, $oldid );
+ $useParserCache = $this->shouldCheckParserCache( $parserOptions, $oldid );
wfDebug( __METHOD__ . ': using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" );
if ( $parserOptions->getStubThreshold() ) {
wfIncrStats( 'pcache.miss.stub' );
* @return array List of method entries arrays, each having:
* - name : method name
* - calls : the number of invoking calls
- * - real : real time ellapsed (ms)
+ * - real : real time elapsed (ms)
* - %real : percent real time
- * - cpu : CPU time ellapsed (ms)
+ * - cpu : CPU time elapsed (ms)
* - %cpu : percent CPU time
* - memory : memory used (bytes)
* - %memory : percent memory used
* @return array List of method entries arrays, each having:
* - name : method name
* - calls : the number of invoking calls
- * - real : real time ellapsed (ms)
+ * - real : real time elapsed (ms)
* - %real : percent real time
- * - cpu : real time ellapsed (ms)
+ * - cpu : real time elapsed (ms)
* - %cpu : percent real time
* - memory : memory used (bytes)
* - %memory : percent memory used
# Link to edit the block dropdown reasons, if applicable
if ( $user->isAllowed( 'editinterface' ) ) {
- $links[] = Linker::link(
+ $links[] = Linker::linkKnown(
$this->msg( 'ipbreason-dropdown' )->inContentLanguage()->getTitle(),
$this->msg( 'ipb-edit-dropdown' )->escaped(),
array(),
Xml::closeElement( 'form' ) . "\n";
// Show link to edit the dropdown reasons
if ( $this->getUser()->isAllowed( 'editinterface' ) ) {
- $link = Linker::link(
+ $link = Linker::linkKnown(
$this->msg( 'revdelete-reason-dropdown' )->inContentLanguage()->getTitle(),
$this->msg( 'revdelete-edit-reasonlist' )->escaped(),
array(),
$preText = $this->msg( 'tags-delete-explanation-initial', $tag )->parseAsBlock();
$tagUsage = ChangeTags::tagUsageStatistics();
- if ( $tagUsage[$tag] > 0 ) {
+ if ( isset( $tagUsage[$tag] ) && $tagUsage[$tag] > 0 ) {
$preText .= $this->msg( 'tags-delete-explanation-in-use', $tag,
$tagUsage[$tag] )->parseAsBlock();
}
# Add a link to edit MediaWik:Licenses
if ( $this->getUser()->isAllowed( 'editinterface' ) ) {
- $licensesLink = Linker::link(
+ $licensesLink = Linker::linkKnown(
$this->msg( 'licenses' )->inContentLanguage()->getTitle(),
$this->msg( 'licenses-edit' )->escaped(),
array(),
$noForeign = '';
if ( !$this->likelyToHaveFalsePositives() ) {
// Additional messages for grep:
- // wantedfiletext-cat-noforeign, wantedfiletext-nocat
+ // wantedfiletext-cat-noforeign, wantedfiletext-nocat-noforeign
$noForeign = '-noforeign';
}
"nmembers": "$1 {{PLURAL:$1|miembru|miembros}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|miembru|miembros}}",
"nrevisions": "$1 {{PLURAL:$1|revisión|revisiones}}",
- "nviews": "$1 {{PLURAL:$1|vista|vistes}}",
"nimagelinks": "Usao en $1 {{PLURAL:$1|páxina|páxines}}",
"ntransclusions": "usao en $1 {{PLURAL:$1|páxina|páxines}}",
"specialpage-empty": "Nun hai resultaos nestos momentos.",
"nmembers": "$1 {{PLURAL:$1|member|اعضا}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2| عضو|عضو}}",
"nrevisions": "$1 {{PLURAL:$1|بازبینی|بازبینی ان}}",
- "nviews": "$1 {{PLURAL:$1|دیستن|دیستن}}",
"nimagelinks": "$1 × $2, $3 {{PLURAL:$3|صفحه|صفحات}}",
"ntransclusions": "بی $1 {{PLURAL:$1|تاکدیم|تاکدیم}} استپاده بوته",
"specialpage-empty": "په ای گزارش هچ نتیجه ای نیست ان.",
"uploaded-setting-href-svg": "Выкарыстаньне тэгу «set» для дадаваньня атрыбуту «href» у бацькоўскі элемэнт заблякаванае.",
"uploaded-wrong-setting-svg": "Ужываньне тэгу «set» для дадаваньня ў якасьці мэты аддаленага адрасу/зьвестак/сцэнару для любога атрыбуту заблякаванае. У загружаным SVG-файле знойдзена <code><set to=\"$1\"></code>.",
"uploaded-setting-handler-svg": "SVG, які выстаўляе атрыбут «handler» з дапамогай аддаленага адрасу/зьвестак/скрыпту, блякуецца. У загружаным SVG-файле знойдзена <code>$1=\"$2\"</code>.",
+ "uploaded-remote-url-svg": "SVG, які выстаўляе любы атрыбут з дапамогай аддаленага URL-адрасу, блякуецца. У загружаным SVG-файле знойдзена <code>$1=\"$2\"</code>.",
+ "uploaded-image-filter-svg": "У загружаным SVG-файле знойдзены фільтар выяваў з URL-адрасам: <code><$1 $2=\"$3\"></code>.",
"uploadscriptednamespace": "Гэты SVG-файл утрымлівае няслушную прастору назваў «$1»",
"uploadinvalidxml": "Не атрымалася прааналізаваць XML у загружаным файле.",
"uploadvirus": "Файл утрымлівае вірус! Падрабязнасьці: $1",
"nmembers": "$1 {{PLURAL:$1|элемэнт|элемэнты|элемэнтаў}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|элемэнт|элемэнты|элемэнтаў}}",
"nrevisions": "$1 {{PLURAL:$1|вэрсія|вэрсіі|вэрсіяў}}",
- "nviews": "$1 {{PLURAL:$1|прагляд|прагляды|праглядаў}}",
"nimagelinks": "Выкарыстоўваецца на $1 {{PLURAL:$1|старонцы|старонках|старонках}}",
"ntransclusions": "выкарыстоўваецца на $1 {{PLURAL:$1|старонцы|старонках|старонках}}",
"specialpage-empty": "Гэтая старонка — пустая.",
"nmembers": "$1 {{PLURAL:$1|عضو|عضو}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2| عضو|عضو}}",
"nrevisions": "$1 {{PLURAL:$1|نخسه|نخسه}}",
- "nviews": "$1 {{PLURAL:$1|دیست|دیست}}",
"nimagelinks": "استفاده بوته بی $1 {{PLURAL:$1|تاکدیم|تاکدیم}} ئی تا",
"ntransclusions": "استفاده بوته بی $1 {{PLURAL:$1|تاکدیم|تاکدیم}} ئی تا",
"specialpage-empty": "نتیجه په راپور ئا موجود نه اینت.",
"nmembers": "$1টি {{PLURAL:$1|সদস্য}}",
"nmemberschanged": "$1 জন → $2 জন {{PLURAL:$2|সদস্য}}",
"nrevisions": "$1 {{PLURAL:$1|সংশোধন|সংশোধনসমূহ}}",
- "nviews": "$1 {{PLURAL:$1|বার দেখা হয়েছে|বার দেখা হয়েছে}}",
"nimagelinks": "$1 {{PLURAL:$1|টি পাতায়| টি পাতায়}} ব্যবহৃত",
"ntransclusions": "$1 {{PLURAL:$1|টি পাতায়| টি পাতায়}} ব্যবহৃত",
"specialpage-empty": "এই রিপোর্টের জন্য কোন ফলাফল নেই।",
"nlinks": "$1 {{PLURAL:$1|veza|veze}}",
"nmembers": "$1 {{PLURAL:$1|član|članova}}",
"nrevisions": "$1 {{PLURAL:$1|revizija|revizije|revizija}}",
- "nviews": "$1 {{PLURAL:$1|pregled|pregleda}}",
"nimagelinks": "Koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
"ntransclusions": "koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
"specialpage-empty": "Nepostoje rezultati za ovaj izvještaj.",
"nmembers": "$1 {{PLURAL:$1|element|elements}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|element|elements}}",
"nrevisions": "$1 {{PLURAL:$1|revisió|revisions}}",
- "nviews": "$1 {{PLURAL:$1|visita|visites}}",
"nimagelinks": "S'utilitza en {{PLURAL:$1|una pàgina|$1 pàgines}}",
"ntransclusions": "utilitzada en {{PLURAL:$1|una pàgina|$1 pàgines}}",
"specialpage-empty": "Aquesta pàgina és buida.",
"nmembers": "$1 {{PLURAL:$1|хӀума|хӀумнаш}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|хӀума|хӀумнаш}}",
"nrevisions": "$1 {{PLURAL:$1|верси|версеш}}",
- "nviews": "$1 {{PLURAL:$1|хьажар}}",
"nimagelinks": "Лелош ю $1 {{PLURAL:$1|агӀонгахь|агӀонашкахь}}",
"ntransclusions": "лелош ю $1 {{PLURAL:$1|агӀонгахь|агӀонашкахь}}",
"specialpage-empty": "Дехаро хӀумма ца елла.",
"nmembers": "$1 {{PLURAL:$1|položka|položky|položek}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|položka|položky|položek}}",
"nrevisions": "$1 {{PLURAL:$1|revize|revize|revizí}}",
- "nviews": "$1 {{PLURAL:$1|návšteva|návštevy|návštev}}",
"nimagelinks": "Použit na $1 {{PLURAL:$1|stránce|stránkách}}",
"ntransclusions": "použita na $1 {{PLURAL:$1|stránce|stránkách}}",
"specialpage-empty": "Tomuto požadavku neodpovídají žádné záznamy.",
"nmembers": "{{PLURAL:$1|1 Eintrag|$1 Einträge}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|Mitglied|Mitglieder}}",
"nrevisions": "{{PLURAL:$1|1 Bearbeitung|$1 Bearbeitungen}}",
- "nviews": "{{PLURAL:$1|1 Abfrage|$1 Abfragen}}",
"nimagelinks": "Verwendet auf {{PLURAL:$1|einer Seite|$1 Seiten}}",
"ntransclusions": "verwendet auf {{PLURAL:$1|einer Seite|$1 Seiten}}",
"specialpage-empty": "Es sind aktuell keine zutreffenden Einträge vorhanden.",
"copyrightwarning2": "Please note that all contributions to {{SITENAME}} may be edited, altered, or removed by other contributors.\nIf you do not want your writing to be edited mercilessly, then do not submit it here.<br />\nYou are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see $1 for details).\n<strong>Do not submit copyrighted work without permission!</strong>",
"editpage-head-copy-warn": "-",
"editpage-tos-summary": "-",
+ "editpage-cannot-use-custom-model": "The content model of this page cannot be changed.",
"longpage-hint": "-",
"longpageerror": "<strong>Error: The text you have submitted is {{PLURAL:$1|one kilobyte|$1 kilobytes}} long, which is longer than the maximum of {{PLURAL:$2|one kilobyte|$2 kilobytes}}.</strong>\nIt cannot be saved.",
"readonlywarning": "<strong>Warning: The database has been locked for maintenance, so you will not be able to save your edits right now.</strong>\nYou may wish to copy and paste your text into a text file and save it for later.\n\nThe administrator who locked it offered this explanation: $1",
"nmembers": "$1 {{PLURAL:$1|member|members}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|member|members}}",
"nrevisions": "$1 {{PLURAL:$1|revision|revisions}}",
- "nviews": "$1 {{PLURAL:$1|view|views}}",
"nimagelinks": "Used on $1 {{PLURAL:$1|page|pages}}",
"ntransclusions": "used on $1 {{PLURAL:$1|page|pages}}",
"specialpage-empty": "There are no results for this report.",
"nmembers": "$1 {{PLURAL:$1|artículo|artículos}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|miembro|miembros}}",
"nrevisions": "$1 {{PLURAL:$1|revisión|revisiones}}",
- "nviews": "$1 {{PLURAL:$1|vista|vistas}}",
"nimagelinks": "Usado en {{PLURAL:$1|una página|$1 páginas}}",
"ntransclusions": "usado en {{PLURAL:$1|una página|$1 páginas}}",
"specialpage-empty": "Esta página está vacía.",
"nmembers": "$1 {{PLURAL:$1|liige|liiget}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|liige|liiget}}",
"nrevisions": "$1 {{PLURAL:$1|redaktsioon|redaktsiooni}}",
- "nviews": "$1 {{PLURAL:$1|külastus|külastust}}",
"nimagelinks": "Kasutuses {{PLURAL:$1|ühel leheküljel|$1 leheküljel}}",
"ntransclusions": "kasutuses {{PLURAL:$1|ühel leheküljel|$1 leheküljel}}",
"specialpage-empty": "Vasteid ei leidu.",
"nmembers": "{{PLURAL:$1|partaide 1|$1 partaide}}",
"nmemberschanged": "$1 → {{PLURAL:$2|kide $2|$2 kide}}",
"nrevisions": "{{PLURAL:$1|berrikuspen 1|$1 berrikuspen}}",
- "nviews": "{{PLURAL:$1|ikusketa 1|$1 ikusketa}}",
"nimagelinks": "{{PLURAL:$1|Orrialde batean erabilia|$1 orrialdetan erabilia}}",
"ntransclusions": "{{PLURAL:$1|orrialde batean erabilia|$1 orrialdetan erabilia}}",
"specialpage-empty": "Ez dago emaitzarik bilaketa honetarako.",
"nmembers": "$1 membre{{PLURAL:$1||s}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|membre|membres}}",
"nrevisions": "$1 version{{PLURAL:$1||s}}",
- "nviews": "$1 consultation{{PLURAL:$1||s}}",
"nimagelinks": "Utilisé sur $1 {{PLURAL:$1|page|pages}}",
"ntransclusions": "Utilisé sur $1 {{PLURAL:$1|page|pages}}",
"specialpage-empty": "Il n'y a aucun résultat à afficher.",
"nmembers": "$1 {{PLURAL:$1|páxina|páxinas}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|membro|membros}}",
"nrevisions": "$1 {{PLURAL:$1|revisión|revisións}}",
- "nviews": "vista {{PLURAL:$1|unha vez|$1 veces}}",
"nimagelinks": "Empregada {{PLURAL:$1|nunha páxina|en $1 páxinas}}",
"ntransclusions": "empregado en $1 {{PLURAL:$1|páxina|páxinas}}",
"specialpage-empty": "Non hai resultados para o que solicitou.",
"nlinks": "$1 {{PLURAL:$1|કડી|કડીઓ}}",
"nmembers": "$1 {{PLURAL:$1|સદસ્ય|સદસ્યો}}",
"nrevisions": "$1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}",
- "nviews": "$1 {{PLURAL:$1|દેખાવ|દેખાવો}}",
"nimagelinks": "$1 {{PLURAL:$1|પાના|પાનાઓ}} પર વપરાયો",
"ntransclusions": "$1 {{PLURAL:$1|પાના|પાનાઓ}} પર વપરાયો",
"specialpage-empty": "આ પાનું ખાલી છે.",
"redirect-lookup": "જુઓ:",
"redirect-value": "કિંમત:",
"redirect-user": "સભ્ય નામ",
- "redirect-page": "પાનાàª\82 ઓળખ",
+ "redirect-page": "પà«\83ષà«\8dઠઓળખ",
"redirect-revision": "પાનાંની આવૃત્તિ",
"redirect-file": "ફાઇલ નામ",
"redirect-not-exists": "કિંમત મળી નહી",
"limitreport-walltime-value": "$1 {{PLURAL:$1|સેકંડ|સેકંડો}}",
"limitreport-postexpandincludesize-value": "$1/$2 {{PLURAL:$2|બાઇટ|બાઇટ્સ}}",
"limitreport-templateargumentsize-value": "$1/$2 {{PLURAL:$2|બાઇટ|બાઇટ્સ}}",
- "expand_templates_input": "àª\87નપà«\81àª\9f લàª\96ાણ:",
+ "expand_templates_input": "પાઠàª\89મà«\87રણ:",
"expand_templates_output": "પરિણામ:",
"expand_templates_xml_output": "XML આઉટપુટ",
"expand_templates_ok": "મંજૂર",
"nmembers": "{{PLURAL:$1|דף אחד|$1 דפים}}",
"nmemberschanged": "$1 ← {{PLURAL:$2|חבר אחד|$2 חברים}}",
"nrevisions": "{{PLURAL:$1|גרסה אחת|$1 גרסאות}}",
- "nviews": "{{PLURAL:$1|צפייה אחת|$1 צפיות}}",
"nimagelinks": "בשימוש {{PLURAL:$1|בדף אחד|ב־$1 דפים}}",
"ntransclusions": "בשימוש {{PLURAL:$1|בדף אחד|ב־$1 דפים}}",
"specialpage-empty": "אין תוצאות.",
"nmembers": "$1 {{PLURAL:$1|सदस्य}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|सदस्य}}",
"nrevisions": "$1 {{PLURAL:$1|अवतरण}}",
- "nviews": "{{PLURAL:$1|एक|$1}} बार देखा गया है",
"nimagelinks": "$1 {{PLURAL:$1|पृष्ठ|पृष्ठों}} पर प्रयुक्त",
"ntransclusions": "$1 {{PLURAL:$1|पृष्ठ|पृष्ठों}} पर प्रयुक्त",
"specialpage-empty": "इस ब्यौरे के लिये कोई परिणाम नहीं हैं।",
"nlinks": "$1 {{PLURAL:$1|poveznica|poveznice|poveznica}}",
"nmembers": "$1 {{PLURAL:$1|član|članova}}",
"nrevisions": "$1 {{PLURAL:$1|inačica|inačice|inačica}}",
- "nviews": "$1 {{PLURAL:$1|put pogledano|puta pogledano|puta pogledano}}",
"nimagelinks": "Koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
"ntransclusions": "koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
"specialpage-empty": "Nema rezultata za traženi izvještaj.",
"nmembers": "$1 {{PLURAL:$1|isi}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|anggota|anggota}}",
"nrevisions": "$1 {{PLURAL:$1|revisi|revisi}}",
- "nviews": "dilihat $1 {{PLURAL:$1|kali|kali}}",
"nimagelinks": "Digunakan pada $1 {{PLURAL:$1|halaman|halaman}}",
"ntransclusions": "digunakan pada $1 {{PLURAL:$1|halaman|halaman}}",
"specialpage-empty": "Tak ada yang perlu dilaporkan.",
"nmembers": "$1 a {{PLURAL:$1|kameng|kamkameng}}",
"nmemberschanged": "$1 → $2 a {{PLURAL:$2|kameng|kamkameng}}",
"nrevisions": "$1 {{PLURAL:$1|a rebison|kadagiti rebision}}",
- "nviews": "$1 {{PLURAL:$1|a panangkita|kadagiti panangkita}}",
"nimagelinks": "Inusar iti $1 a {{PLURAL:$1|panid|pampanid}}",
"ntransclusions": "inusar iti $1 a {{PLURAL:$1|panid|pampanid}}",
"specialpage-empty": "Awan dagiti nagbanagan daytoy a reporta.",
"disclaimers": "Fyrirvarar",
"disclaimerpage": "Project:Almennur fyrirvari",
"edithelp": "Breytingarhjálp",
+ "helppage-top-gethelp": "Hjálp",
"mainpage": "Forsíða",
"mainpage-description": "Forsíða",
"policy-url": "Project:Samþykktir",
"right-move": "Færa síður",
"right-move-subpages": "Færa síður með undirsíðum þeirra",
"right-move-rootuserpages": "Færa notandasíður",
+ "right-move-categorypages": "Færa flokkasíður",
"right-movefile": "Færa skrár",
"right-suppressredirect": "Ekki búa til tilvísun frá gamla nafninu þegar síða er færð",
"right-upload": "Hlaða inn skrám",
"action-createpage": "skapa síður",
"action-createtalk": "skapa spjallsíður",
"action-createaccount": "skapa þennan notandaaðgang",
+ "action-history": "skoða breytingarskrá þessarar síðu",
"action-minoredit": "merkja þessa breytingu sem minniháttar",
"action-move": "færa þessa síðu",
"action-move-subpages": "færa þessa síðu, og undirsíður hennar",
"action-move-rootuserpages": "Færa notandasíður",
+ "action-move-categorypages": "færa flokkasíður",
"action-movefile": "færa þessa skrá",
"action-upload": "hlaða inn þessari skrá",
"action-reupload": "yfirrita þessa skrá",
"nlinks": "$1 {{PLURAL:$1|tengill|tenglar}}",
"nmembers": "$1 {{PLURAL:$1|meðlimur|meðlimir}}",
"nrevisions": "$1 {{PLURAL:$1|breyting|breytingar}}",
- "nviews": "$1 {{PLURAL:$1|fletting|flettingar}}",
"nimagelinks": "Ítengd á $1 {{PLURAL:$1|síðu|síðum}}",
"ntransclusions": "Ítengd á $1 {{PLURAL:$1|síðu|síðum}}",
"specialpage-empty": "Þessi síða er tóm.",
"allmessages-prefix": "Sía með forskeyti:",
"allmessages-language": "Tungumál:",
"allmessages-filter-submit": "Áfram",
+ "allmessages-filter-translate": "Þýða",
"thumbnail-more": "Stækka",
"filemissing": "Skrá vantar",
"thumbnail_error": "Villa við gerð smámyndar: $1",
"exif-devicesettingdescription": "Lýsing stillinga tækisins",
"exif-subjectdistancerange": "Svið lengdar á viðfangsefni",
"exif-imageuniqueid": "Einstakt einkenni myndar",
- "exif-gpsversionid": "GPS tag útgáfa",
+ "exif-gpsversionid": "Útgáfa GPS-taggs",
"exif-gpslatituderef": "Norður- eða suður breiddargráða",
"exif-gpslatitude": "Breiddargráða",
"exif-gpslongituderef": "Austur- eða vestur lengdargráða",
"version-antispam": "Amapósts sía",
"version-other": "Aðrar",
"version-mediahandlers": "Rekill margmiðlunarskráa",
- "version-parser-extensiontags": "Þáttuð smáforrita tög",
+ "version-parser-extensiontags": "Þáttuð smáforritatögg",
"version-hook-subscribedby": "Í áskrift af",
"version-version": "($1)",
"version-license": "MediaWiki leyfi",
+ "version-ext-colheader-description": "Lýsing",
+ "version-license-title": "Leyfi fyrir $1",
"version-poweredby-credits": "Þessi wiki er knúin af '''[https://www.mediawiki.org/ MediaWiki]''', höfundaréttur © 2001-$1 $2.",
"version-poweredby-others": "aðrir",
"version-license-info": "MediaWiki er frjáls hugbúnaður; þú mátt endurútgefa hann og/eða breyta honum undir GNU General Public leyfi eins og það er gefið út af Free Software stofnuninni, annaðhvort útgáfu 2 eða (að þínu mati) hvaða nýrri útgáfa sem er.\n\nMediaWiki er útgefin í þeirri von að hann sé gagnlegur, en ÁN ALLRAR ÁBYRGÐAR; þar meðtalið er undanskilin ábyrgð við MARKAÐSETNINGU og að hugbúnaðurinn VIRKI Í ÁKVEÐNUM TILGANGI. Sjá GNU General Public leyfið fyrir frekari upplýsingar.\n\nÞú ættir að hafa fengið [{{SERVER}}{{SCRIPTPATH}}/COPYING afrit af GNU General Public leyfinu] með þessum hugbúnaði, en ef ekki, skrifaðu til Free Software stofnunarinnar, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, Bandaríkjunum eða [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lestu það á netinu]",
"version-software-product": "Vara",
"version-software-version": "Útgáfa",
"version-entrypoints-header-url": "vefslóð",
+ "version-libraries-version": "Útgáfa",
"redirect-submit": "Áfram",
"redirect-lookup": "Fletta upp:",
"redirect-value": "Gildi:",
"intentionallyblankpage": "Þessi síða er viljandi höfð tóm.",
"external_image_whitelist": "#Ekki breyta þessari línu<pre>\n#Settu brot úr reglulegum segðum (bara þann hluta sem er á milli //) hér fyrir neðan\n#Þær verða bornar saman við vefslóðir ytri mynda\n#Þær sem passa saman verða sýndar sem myndir, en hinar eingöngu sem tengill á myndina\n#Línur sem byrja á # verða sýndar sem athugasemdir\n#Þetta er hástafafrjálst\n\n#Settu allar reglulegar segðir fyrir ofan þessa línu. Ekki breyta þessari línu.</pre>",
"tags": "Breyta virkum tögum",
- "tag-filter": "[[Special:Tags|Tag]] sía:",
+ "tag-filter": "[[Special:Tags|Tagg]]sía:",
"tag-filter-submit": "Sía",
- "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tag|Tög}}]]: $2)",
+ "tag-list-wrapper": "([[Special:Tags|{{PLURAL:$1|Tagg|Tögg}}]]: $2)",
"tags-title": "Tög",
- "tags-intro": "Á þessari síðu er listi yfir þau tög sem hugbúnaðurinn gæti merkt breytingar með og merkingu þeirra.",
- "tags-tag": "Nafn tags",
+ "tags-intro": "Á þessari síðu er listi yfir þau tögg sem hugbúnaðurinn gæti merkt breytingar með og merkingu þeirra.",
+ "tags-tag": "Heiti taggs",
"tags-display-header": "Útlit í breytingarskrá",
"tags-description-header": "Tæmandi merkingarlýsing",
"tags-active-header": "Virkt?",
"tags-active-yes": "Já",
"tags-active-no": "Nei",
"tags-edit": "breyta",
+ "tags-delete": "eyða",
+ "tags-activate": "virkja",
+ "tags-deactivate": "afvirkja",
"tags-hitcount": "$1 {{PLURAL:$1|breyting|breytingar}}",
+ "tags-manage-no-permission": "Þú hefur ekki leyfi til að stjórna breytingartöggum.",
+ "tags-create-heading": "Stofna nýtt tagg",
+ "tags-create-submit": "Stofna",
+ "tags-create-no-name": "Þú verður að gefa upp heiti taggsins.",
+ "tags-create-invalid-title-chars": "Taggheiti eiga ekki að innihalda stafi sem má ekki nota í síðutitla.",
+ "tags-create-already-exists": "Taggið „$1“ er nú þegar til.",
+ "tags-delete-title": "Eyða taggi",
+ "tags-delete-reason": "Ástæða:",
+ "tags-delete-not-found": "Taggið „$1“ er ekki til.",
+ "tags-activate-title": "Virkja tagg",
+ "tags-activate-reason": "Ástæða:",
+ "tags-activate-not-found": "Taggið „$1“ er ekki til.",
+ "tags-activate-submit": "Virkja",
+ "tags-deactivate-title": "Afvirkja tagg",
+ "tags-deactivate-reason": "Ástæða:",
+ "tags-deactivate-submit": "Afvirkja",
+ "tags-edit-title": "Breyta töggum",
+ "tags-edit-manage-link": "Stjórna töggum",
"comparepages": "Bera saman síður",
"compare-page1": "Síða 1",
"compare-page2": "Síða 2",
"feedback-bugornote": "Ef þú ert reiðubúinn að lýsa tæknilegri villu í smáatriðum, vinsamlegast [$1 tilkynntu villu].\nEf ekki, þá getur þú notað einfalt eyðublað hér fyrir neðan. Athugasemdin þín verður bætt við síðuna \"[$3 $2]\" ásamt notendanafni og nafni vafrarans sem þú ert að nota.",
"feedback-cancel": "Hætta við",
"feedback-close": "Búið",
+ "feedback-error-title": "Villa",
"feedback-error1": "Villa: Óþekkt útkoma frá API",
"feedback-error2": "Villa: Breytingin mistókst",
"feedback-error3": "Villa: Ekkert svar frá API",
"feedback-subject": "Fyrirsögn:",
"feedback-submit": "Senda",
"feedback-thanks": "Takk! Ábendingu þinni hefur verið bætt við á síðuna \"[$2 $1]\".",
+ "feedback-thanks-title": "Takk!",
"searchsuggest-search": "Leita",
"searchsuggest-containing": "sem innihalda ...",
"api-error-badaccess-groups": "Þú hefur ekki leyfi til að hlaða inn skrám.",
"expand_templates_ok": "Í lagi",
"expand_templates_remove_comments": "Fjarlægja athugasemdir",
"expand_templates_preview": "Forskoða",
+ "pagelang-language": "Tungumál",
"mediastatistics": "Margmiðlunar tölfræði",
"mediastatistics-summary": "Tölfræði um upphaldar skráar gerðir. Hún inniheldur eingöngu nýjustu útgáfu skráarinnar. Gamlar eða eyddar skrár eru ekki teknar með.",
"mediastatistics-nbytes": "{{PLURAL:$1|$1 bæti}} ($2; $3%)",
"nmembers": "$1 {{PLURAL:$1|elemento|elementi}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|elemento|elementi}}",
"nrevisions": "$1 {{PLURAL:$1|versione|versioni}}",
- "nviews": "$1 {{PLURAL:$1|visita|visite}}",
"nimagelinks": "Utilizzato su $1 {{PLURAL:$1|pagina|pagine}}",
"ntransclusions": "usato in $1 {{PLURAL:$1|pagina|pagine}}",
"specialpage-empty": "Questa pagina speciale è attualmente vuota.",
"content-model-css": "CSS",
"content-json-empty-object": "空のオブジェクト",
"content-json-empty-array": "空の配列",
+ "duplicate-args-warning": "<strong>警告:</strong> [[:$1]]は「$3」パラメータの値が複数存在する[[:$2]]を呼び出しています。提供されている最後の値のみが使用されます。",
"duplicate-args-category": "テンプレート呼び出しで引数が重複しているページ",
"duplicate-args-category-desc": "引数が重複したテンプレート呼び出しを含むページ。例: <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code>、<code><nowiki>{{foo|bar|1=baz}}</nowiki></code>",
"expensive-parserfunction-warning": "<strong>警告:</strong> このページでは、高負荷なパーサー関数の呼び出し回数が多過ぎます。\n\n{{PLURAL:$2|呼び出しを $2 回}}未満にしてください ({{PLURAL:$1|現在は $1 回}})。",
"uploaddisabledtext": "ファイルのアップロードは、無効になっています。",
"php-uploaddisabledtext": "ファイルのアップロードがPHPで無効化されています。\nfile_uploadsの設定を確認してください。",
"uploadscripted": "このファイルは、ウェブブラウザーが誤って解釈してしまうおそれがあるHTMLまたはスクリプトコードを含んでいます。",
+ "uploaded-script-svg": "アップロードされたSVGファイルにスクリプト可能な要素「$1」が見つかりました。",
+ "uploaded-hostile-svg": "アップロードされたSVGファイルのスタイル要素に安全ではないCSSが見つかりました。",
"uploadscriptednamespace": "この SVG ファイルは無効な名前空間「$1」を含んでいます。",
"uploadinvalidxml": "アップロードされたファイルに含まれる XML が構文解析できませんでした。",
"uploadvirus": "このファイルはウイルスを含んでいます!\n詳細: $1",
"nmembers": "$1項目",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|項目}}",
"nrevisions": "$1版",
- "nviews": "$1回の閲覧",
"nimagelinks": "$1 {{PLURAL:$1|ページ}}で使用",
"ntransclusions": "$1 {{PLURAL:$1|ページ}}で使用",
"specialpage-empty": "該当するものはありません。",
"movedarticleprotection": "が保護の設定を「[[$2]]」から「[[$1]]」へ移動しました",
"protect-title": "「$1」の保護レベルを変更",
"protect-title-notallowed": "「$1」の保護レベルを表示",
- "prot_1movedto2": "[[$1]] を [[$2]] へ移動",
+ "prot_1movedto2": "[[$1]] を [[$2]] へ移動しました",
"protect-badnamespace-title": "保護不可能な名前空間",
"protect-badnamespace-text": "この名前空間のページは保護できません。",
"protect-norestrictiontypes-text": "利用できる制限の種類がないため、このページは保護できません。",
"import-interwiki-history": "このページのすべての版を複製する",
"import-interwiki-templates": "すべてのテンプレートを含める",
"import-interwiki-submit": "取り込み",
+ "import-mapping-default": "既定の場所へインポート",
+ "import-mapping-namespace": "名前空間へインポート:",
+ "import-mapping-subpage": "次のページの下位ページとしてインポート:",
"import-upload-filename": "ファイル名:",
"import-comment": "コメント:",
"importtext": "元のウィキで[[Special:Export|書き出し機能]]を使用してファイルに書き出してください。\nそれをコンピューターに保存した後、こちらへアップロードしてください。",
"tags-edit-existing-tags-none": "(なし)",
"tags-edit-new-tags": "新しいタグ:",
"tags-edit-remove-all-tags": "(すべてのタグを除去)",
+ "tags-edit-chosen-no-results": "一致するタグが見つかりません",
"tags-edit-reason": "理由:",
+ "tags-edit-success": "変更が正常に適用されました。",
"tags-edit-failure": "変更は適用できませんでした: $1",
"tags-edit-nooldid-title": "無効な対象版",
+ "tags-edit-none-selected": "追加または削除するには、少なくとも1つ以上のタグを選択してください。",
"comparepages": "ページの比較",
"compare-page1": "ページ 1",
"compare-page2": "ページ 2",
"feedback-error1": "エラー: 認識できない結果を API が返しました",
"feedback-error2": "エラー: 編集に失敗しました",
"feedback-error3": "エラー: API からの応答がありません",
+ "feedback-error4": "エラー: 指定されたフィードバックに投稿することができません",
"feedback-message": "メッセージ:",
"feedback-subject": "件名:",
"feedback-submit": "送信",
"nmembers": "$1 წევრი",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|წევრი|წევრი}}",
"nrevisions": "$1 რედაქტირება",
- "nviews": "$1 ჩვენება",
"nimagelinks": "გამოიყენება $1 {{PLURAL:$1|გვერდზე}}",
"ntransclusions": "გამოიყენება $1 {{PLURAL:$1|გვერდზე}}",
"specialpage-empty": "ეს გვერდი ცარიელია.",
"nmembers": "$1{{PLURAL:$1|សមាជិក|សមាជិក}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|សមាជិក|សមាជិក}}",
"nrevisions": "$1 {{PLURAL:$1|កំណែប្រែ}}",
- "nviews": "$1 {{PLURAL:$1|ការចូលមើល}}",
"nimagelinks": "ត្រូវបានប្រើនៅលើទំព័រចំនួន $1។",
"ntransclusions": "ត្រូវបានប្រើនៅលើទំព័រចំនួន $1",
"specialpage-empty": "គ្មានលទ្ធផលសម្រាប់របាយណ៍នេះទេ។",
"nmembers": "{{PLURAL:$1|문서}} $1개",
"nmemberschanged": "$1 → $2{{PLURAL:$2|개}}",
"nrevisions": "{{PLURAL:$1|판}} $1개",
- "nviews": "$1번 {{PLURAL:$1|읽음}}",
"nimagelinks": "{{PLURAL:$1|문서}} $1개에서 사용됨",
"ntransclusions": "{{PLURAL:$1|문서}} $1개에서 사용됨",
"specialpage-empty": "명령에 대한 결과가 없습니다.",
"nmembers": "met {{PLURAL:$1|ein Sigg|$1 Sigge}} dren",
"nmemberschanged": "met $1 → {{PLURAL:$2|eine Sigg|$2 Sigge|keine Sigg}}",
"nrevisions": "{{PLURAL:$1|Ein Änderong|$1 Änderonge|Keij Änderong}}",
- "nviews": "{{PLURAL:$1|Eine Avrof|$1 Avrofe|Keine Avrof}}",
"nimagelinks": "Weed op {{PLURAL:$1|eine Sigg|$1 Sigge|keine Sigg}} jebruch",
"ntransclusions": "weed op {{PLURAL:$1|eine Sigg|$1 Sigge|keine Sigg}} jebruch",
"specialpage-empty": "Heh en dä Leß es nix dren.",
"nmembers": "$1 {{PLURAL:$1|endam|endam}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|endam}}",
"nrevisions": "$1 {{PLURAL:$1|guherandin|guherandin}}",
- "nviews": "$1 {{PLURAL:$1|dîtin|dîtin}}",
"lonelypages": "Rûpelên sêwî",
"uncategorizedpages": "Rûpelên bêkategorî",
"uncategorizedcategories": "Kategoriyên bê kategorî",
"nlinks": "$1 {{PLURAL:$1|nexus|nexus}}",
"nmembers": "$1 {{PLURAL:$1|inest|insunt}}",
"nrevisions": "$1 {{PLURAL:$1|emendatio|emendationes}}",
- "nviews": "$1 {{PLURAL:$1|visa|visae}}",
"lonelypages": "Paginae non annexae",
"uncategorizedpages": "Paginae sine categoriis",
"uncategorizedcategories": "Categoriae sine categoriis",
"watchlisttools-view": "Mutationes paginarum observatarum inspicere",
"watchlisttools-edit": "Indicem paginarum observatarum inspicere vel recensere",
"watchlisttools-raw": "Indicem paginarum observatarum quasi textum recensere",
+ "hebrew-calendar-m2": "Hesuan",
"hebrew-calendar-m4": "Tebeth",
+ "hebrew-calendar-m5": "Sabat",
"hebrew-calendar-m8": "Iar",
"hebrew-calendar-m11": "Ab",
+ "hebrew-calendar-m2-gen": "Hesuan",
"hebrew-calendar-m4-gen": "Tebeth",
+ "hebrew-calendar-m5-gen": "Sabat",
"hebrew-calendar-m8-gen": "Iar",
"hebrew-calendar-m11-gen": "Ab",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|disputatio]])",
"Taichi",
"Universal Life",
"לערי ריינהארט",
- "아라"
+ "아라",
+ "StevenJ81"
]
},
"tog-underline": "Suliñar los atamientos:",
"watchlisttools-view": "Ver los trocamientos",
"watchlisttools-edit": "Ver i trocar tu lista de escogidas",
"watchlisttools-raw": "Troca tu lista de escogidas en crudo",
+ "hebrew-calendar-m1": "Tishre",
+ "hebrew-calendar-m2": "Heshvan",
+ "hebrew-calendar-m1-gen": "Tishre",
+ "hebrew-calendar-m2-gen": "Heshvan",
"duplicate-defaultsort": "'''Aviso:''' la klave primaria para ordenamiento \"$2\" anula la primera \"$1\"",
"version": "Versión",
"version-specialpages": "Pajinas espesiales",
"nmembers": "$1 {{PLURAL:$1|Member|Memberen}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|Member|Memberen}}",
"nrevisions": "$1 {{PLURAL:$1|Versioun|Versiounen}}",
- "nviews": "$1 {{PLURAL:$1|Offro|Offroen}}",
"nimagelinks": "Benotzt op {{PLURAL:$1|enger Säit|$1 Säiten}}",
"ntransclusions": "benotzt op {{PLURAL:$1|enger Säit|$1 Säiten}}",
"specialpage-empty": "Dës Säit ass eidel.",
"Mjbmr"
]
},
- "tog-underline": "هوم پیوند زیرخط دار:",
- "tog-hideminor": "قام كردن ويرايشتيا كؤچك مئن آلشتيا تازه",
- "tog-hidepatrolled": "قام كردن ويرايشتيا تیه دیار کرده مئن آلشتيا تازه",
- "tog-newpageshidepatrolled": "بلگیا تیه دیار کرده نه مئن نوم گه بلگیا تازه قام کو",
- "tog-extendwatchlist": "سیل برگه نه سی نشو دئن تمام آلشتیا واکو نه فقط سی بیشتر تازه باوا.",
- "tog-usenewrc": "دسÙ\87 بÙ\86Û\8c Ø¢Ù\84شتÛ\8cا Ù\88ا بÙ\84Ú¯Ù\87 د Ø¢Ù\84شتÛ\8cا تازÙ\87 Ù\88 سÛ\8cÙ\84 برگ",
- "tog-numberheadings": "سربÙ\84Ú¯Ù\87 Ø®Ù\88د Ø´Ù\85ارÙ\87 گر",
- "tog-showtoolbar": "نوار اوزار ويرايشت نشون بيه",
- "tog-editondblclick": "بلگيا نه وا دوبار پورنين ويرايشت بكيد",
+ "tog-underline": "هوم پئیڤأند زیرخأط دار:",
+ "tog-hideminor": "قام کئردئن ڤیرایشتیا کوچئک مین آلئشتیا تازە",
+ "tog-hidepatrolled": "قام کئردئن ڤیرایشتیا تیە دیار کئردە مین آلئشتیا تازە",
+ "tog-newpageshidepatrolled": "بألگە یا تیە دیار کئردە نە مئن نومگە بألگە یا تازە قام کو",
+ "tog-extendwatchlist": "سئیل بأرگە نە سی نئشوٙ دأئن تأموٙم آلئشتیا ڤا کو نە فأقأط سی بیشتئر تازە باڤیا.",
+ "tog-usenewrc": "دأسÛ\95 بأÙ\86Û\8c Ø¢Ù\84ئشتÛ\8cا ڤا بأÙ\84Ú¯Û\95 د Ø¢Ù\84ئشتÛ\8cا تازÛ\95 Ù\88 سئÛ\8cÙ\84 بأرگ",
+ "tog-numberheadings": "سأربأÙ\84Ú¯Û\95 Ø®Ù\88د Ø´Ù\85ارئشت Ú©Ù\88",
+ "tog-showtoolbar": "نأڤار أڤزار ڤیرایئشت نە نئشو بیە",
+ "tog-editondblclick": "بألگە یا نە ڤا د نۊ پوٙرنیئن ڤیرایئشت بأکیت",
"tog-editsectiononrightclick": "بهرجا ویرایشت نه وا راس پورنین د بهرجا داسونیا کنشتگر کو",
"tog-watchcreations": "بلگیایی که مه راس کمه و جانیایایی که مه سوار کمه اضاف کو د سیل برگه مه",
"tog-watchdefault": "بلگیا و جانیایی که مه ویرایشت کمه اضاف کو د سیل برگم",
"sat": "شمه",
"january": "جانڤیە",
"february": "فئڤریە",
- "march": "Ù\85ارش",
- "april": "آبريل",
- "may_long": "Ù\85ا",
- "june": "جوئن",
- "july": "جولای",
- "august": "اگوست",
- "september": "سپتامر",
- "october": "اÙ\83تور",
- "november": "نوامر",
- "december": "دسامر",
+ "march": "Ù\85ارس",
+ "april": "آڤریل",
+ "may_long": "Ù\85ئÛ\8c",
+ "june": "جوٙأن",
+ "july": "جÙ\88Ù\99Ù\84اÛ\8c",
+ "august": "Ø¢گوست",
+ "september": "سئپتامر",
+ "october": "ئÙ\88Ú©تور",
+ "november": "نوڤامر",
+ "december": "دئساÙ\85ر",
"january-gen": "جانويه",
"february-gen": "فوريه",
"march-gen": "مارش",
"october-gen": "اكتور",
"november-gen": "نوامر",
"december-gen": "دسامر",
- "jan": "جانویه",
+ "jan": "جانڤیە",
"feb": "فئڤریە",
- "mar": "Ù\85ارش",
- "apr": "آبريل",
- "may": "Ù\85ا",
- "jun": "جوئن",
- "jul": "جÙ\88Ù\84ا",
- "aug": "اÙ\88گوست",
- "sep": "سپتامر",
- "oct": "اÙ\83تÙ\88ر",
- "nov": "نوامر",
- "dec": "دسامر",
+ "mar": "Ù\85ارس",
+ "apr": "آڤریل",
+ "may": "Ù\85ئÛ\8c",
+ "jun": "جوٙأن",
+ "jul": "جÙ\88Ù\99Ù\84اÛ\8c",
+ "aug": "Ø¢گوست",
+ "sep": "سئپتامر",
+ "oct": "ئÙ\88کتÙ\88Ú¤ر",
+ "nov": "نوڤامر",
+ "dec": "دئساÙ\85ر",
"january-date": "جانويه $1",
"february-date": "فوريه $1",
"march-date": "مارس $1",
"tagline": "د {{SITENAME}}",
"help": "هومياری",
"search": "پئی جوٙری",
- "searchbutton": "پی جوری",
+ "searchbutton": "پئی جوٙری",
"go": "رو",
"searcharticle": "رو",
"history": "ويرگار بلگه",
"currentevents": "پيشومدل تازه باو",
"currentevents-url": "پروجه:پيشومدل تازه باو",
"disclaimers": "تیە پوٙشکاریا",
- "disclaimerpage": "پروجه:منكر بيئن کلی",
+ "disclaimerpage": "پوروجە: تیە پوٙشی کئردئن هأمە گئر",
"edithelp": "هومياری سی ويرايشت",
"helppage-top-gethelp": "هومياری",
"mainpage": "سأرآسوٙنە",
"portal": "درآسونه کومله یکی",
"portal-url": "پروجه:سرآسونه کومله یکی",
"privacy": "پوٙلتیک رازینە داری",
- "privacypage": "پروجه: خط مشی رازینه کاری کردن",
+ "privacypage": "پوروجە: رأگڤاری رازینە کاری کئردئن",
"badaccess": "خطا :صلاداری کو",
"badaccess-group0": "شما صلا انجوم کاری که حاستیت نارین",
"badaccess-groups": "ای کاری که شما هاستیته سی کاریاریا د {{PLURAL:$2|گرو|یکی د گرویا}}: $1 کم بیه",
"pagetitle": "$1 - {{SITENAME}}",
"pagetitle-view-mainpage": "{{SITENAME}}",
"backlinksubtitle": "← $1",
- "retrievedfrom": "د نو زنه بیه د\"$1\"",
+ "retrievedfrom": "د نۊ زئنە بیە د\"$1\"",
"youhavenewmessages": "شما داريت $1($2)",
"youhavenewmessagesfromusers": "{{PLURAL:$4|شما }} $1 د {{PLURAL:$3|کاریار هنی|$3 کاریاریا}}داریتو($2).",
"youhavenewmessagesmanyusers": "شما $1 د فره کاریار داريت ($2).",
"feed-invalid": "نوع مشترک بین هوال حون نامعتور",
"feed-unavailable": "هوال حونیا د دسرس نئین",
"site-rss-feed": "هوال حون RSS سی $1",
- "site-atom-feed": "هوال حون Atom سی $1",
+ "site-atom-feed": "هأڤال حوٙن Atom سی $1",
"page-rss-feed": "هوال حون RSS سی «$1»",
"page-atom-feed": "هوال حون Atom سی $1",
"feed-atom": "اتم",
"nmembers": "$1 {{PLURAL:$1|اندوم|اندوميا}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|اندوم|اندومیا}}",
"nrevisions": "$1 {{جمس:$1|وانئری|وانئریا}}",
- "nviews": "$1 {{PLURAL:$1|دیئن|دیئنیا}}",
"nimagelinks": "$1 {{PLURAL:$1|بلگه|بلگيا}} استفاده بیه",
"ntransclusions": "$1 {{PLURAL:$1|بلگه|بلگيا}} استفاده بیه",
"specialpage-empty": "نتیجه ای د ای گزارشت نئ.",
"note": "'''Piezīme: '''",
"previewnote": "'''Atceries, ka šis ir tikai pirmskats un teksts vēl nav saglabāts!'''",
"continue-editing": "Pāriet uz labošanas lauku",
- "session_fail_preview": "'''Neizdevās apstrādāt tavas izmaiņas, jo tika pazaudēti sesijas dati.\nLūdzu mēģini vēlreiz.\nJa tas joprojām nedarbojas, mēģini [[Special:UserLogout|izlogoties ārā]] un ielogoties no jauna.'''",
+ "session_fail_preview": "'''Neizdevās apstrādāt tavas izmaiņas, jo tika pazaudēti sesijas dati.\nLūdzu mēģini vēlreiz saglabāt izmaiņas.\nJa tas joprojām nedarbojas, mēģini [[Special:UserLogout|izlogoties ārā]] un ielogoties no jauna.'''",
"session_fail_preview_html": "'''Neizdevās apstrādāt tavas izmaiņas, jo tika pazaudēti sesijas dati.'''\n\n''Tā, kā {{grammar:ģenitīvs|{{SITENAME}}}} darbojas neapstrādāts HTML, pirmskats ir paslēpts, lai aizsargātos no JavaScripta uzbrukumiem.''\n\n'''Ja šis bija parasts rediģēšanas mēģinājums, mēģini vēlreiz.\nJa tas joprojām nedarbojas, mēģini [[Special:UserLogout|izlogoties ārā]] un ielogoties no jauna.'''",
"editing": "Labot $1",
"creating": "Izveido lapu $1",
"nlinks": "$1 {{PLURAL:$1|saites|saite|saites}}",
"nmembers": "$1 {{PLURAL:$1|lapas|lapa|lapas}}",
"nrevisions": "$1 {{PLURAL:$1|versijas|versija|versijas}}",
- "nviews": "skatīta $1 {{PLURAL:$1|reizes|reizi|reizes}}",
"nimagelinks": "Izmantots $1 {{PLURAL:$1|lapās|lapā|lapās}}",
"ntransclusions": "izmantots $1 {{PLURAL:$1|lapās|lapā|lapās}}",
"specialpage-empty": "Šim ziņojumam nav rezultātu.",
"action-undelete": "обнови ја страницава",
"action-suppressrevision": "прегледај ја и обнови ја оваа скриена преработка",
"action-suppressionlog": "преглед на овој li;en дневник",
- "action-block": "оневозможи го овој корисник да уредува",
+ "action-block": "оневозможување на уредувањето на корисников",
"action-protect": "измени го степенот на заштита на оваа страница",
"action-rollback": "брзо отповикување на измени направени од последниот уредник на страницата",
"action-import": "увоз на страници од друго вики",
"nmembers": "$1 {{PLURAL:$1|член|членови}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|член|членови}}",
"nrevisions": "$1 {{PLURAL:$1|измена|измени}}",
- "nviews": "$1 {{PLURAL:$1|преглед|прегледи}}",
"nimagelinks": "Се користи на $1 {{PLURAL:$1|страница|страници}}",
"ntransclusions": "се користи на $1 {{PLURAL:$1|страница|страници}}",
"specialpage-empty": "Нема резултати од пребарувањето на овој извештај.",
"ipbreason-dropdown": "*Вообичаени причини за блокирање\n** Вметнување лажни информации\n** Бришење на содржини од страниците\n** Спам-врски кон надворешни мрежни места\n** Вметнување глупости во страниците\n** Непристојно однесување\n** Навредување на други корисници\n** Неприфатливо корисничко име",
"ipb-hardblock": "Спречи ги најавените корисници да уредуваат од оваа IP-адреса",
"ipbcreateaccount": "Оневозможи создавање кориснички сметки",
- "ipbemailban": "Ð\9eневозможи го корисникот да праќа е-пошта",
+ "ipbemailban": "Ð\9eневозможи мÑ\83 на корисникот да праќа е-пошта",
"ipbenableautoblock": "Автоматски блокирај ја последната IP-адреса што ја користел корисникот и сите понатамошни адреси од кои ќе се обиде да уредува",
"ipbsubmit": "Блокирај го овој корисник",
"ipbother": "Друг рок:",
"nlinks": "$1 линк",
"nmembers": "$1 гишүүн",
"nrevisions": "$1 засвар",
- "nviews": "$1 удаа үзсэн",
"nimagelinks": "$1 {{PLURAL:$1|хуудсанд|хуудсанд}} ашигласан",
"specialpage-empty": "Энэ мэдүүлэгт үр дүн гарсангүй.",
"lonelypages": "Өнчин хуудсууд",
"nmembers": "$1 {{PLURAL:$1|elemento|elemente}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|membro|membre}}",
"nrevisions": "$1 {{PLURAL:$1|verzione|verziune}}",
- "nviews": "$1 {{PLURAL:$1|visita|visite}}",
"nimagelinks": "Ausate ncopp'a {{PLURAL:$1|na paggena|$1 paggene}}",
"ntransclusions": "ausate ncopp'a {{PLURAL:$1|na paggena|$1 paggene}}",
"specialpage-empty": "Nun ce stanno risultate pe' stu report.",
"nmembers": "$1 {{PLURAL:$1|medlem|medlemmer}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|medlem|medlemmer}}",
"nrevisions": "$1 {{PLURAL:$1|revisjon|revisjoner}}",
- "nviews": "$1 {{PLURAL:$1|visning|visninger}}",
"nimagelinks": "Brukt på $1 {{PLURAL:$1|side|sider}}",
"ntransclusions": "brukt på $1 {{PLURAL:$1|side|sider}}",
"specialpage-empty": "Denne siden er tom.",
"nmembers": "$1 {{PLURAL:$1|सदस्य|सदस्यहरू}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|सदस्य|सदस्यहरू}}",
"nrevisions": "$1 {{PLURAL:$1|पुनरावलोकन|पुनरावलोकनहरु}}",
- "nviews": "$1 {{PLURAL:$1|अवलोकन|अवलोकनहरु}}",
"nimagelinks": "$1 {{PLURAL:$1|पृष्ठ|पृष्ठहरु}}माथि प्रयोग गरिएको",
"ntransclusions": "$1 {{PLURAL:$1पृष्ठमा प्रयोग गरिएको|पृष्ठहरूमा प्रयोग गरिएका}}",
"specialpage-empty": "यो पृष्ठ खाली छ।",
"nlinks": "{{PLURAL:$1|Éi lenkje|$1 lenkjer}}",
"nmembers": "$1 {{PLURAL:$1|medlem|medlemmer}}",
"nrevisions": "{{PLURAL:$1|Éin versjon|$1 versjonar}}",
- "nviews": "{{PLURAL:$1|Éi vising|$1 visingar}}",
"nimagelinks": "Brukt på $1 {{PLURAL:$1|side|sider}}",
"ntransclusions": "brukt på $1 {{PLURAL:$1|side|sider}}",
"specialpage-empty": "Det er ingen resultat for denne rapporten.",
"Shisir 1945",
"ଶିତିକଣ୍ଠ ଦାଶ",
"아라",
- "Macofe"
+ "Macofe",
+ "Nistha.aslp"
]
},
"tog-underline": "ଲିଙ୍କତଳେଗାର ଟାଣିବା:",
"watchthis": "ଏହି ପୃଷ୍ଠାଟିକୁ ଦେଖିବେ",
"savearticle": "ସାଇତିବେ [Save]",
"preview": "ସାଇତିବା ଆଗରୁ ଦେଖନ୍ତୁ",
- "showpreview": "ଦେଖଣା [Preview]",
+ "showpreview": "ପà\82ରà\8dବଦà\87à¬\96ଣା [Preview]",
"showdiff": "ବଦଳଗୁଡ଼ିକ ଦେଖାଇବେ",
"blankarticle": "<strong>ଚେତାବନୀ:</strong> ଆପଣ ସମ୍ପାଦନା କରୁଥିବା ଏହି ପୃଷ୍ଠାଟି ଫାଙ୍କା ଅଛି ।\nଯଦି ଆପଣ \"{{int:savearticle}}\" ଉପରେ ଆଉଥରେ କ୍ଲିକ କରନ୍ତି, ପୃଷ୍ଠାଟି କୌଣସି ବିଷୟବସ୍ତୁ ନଥାଇ ତିଆରି ହୋଇଯିବ ।",
"anoneditwarning": "<strong>ସାବଧାନ:</strong> ଆପଣ ଲଗ-ଇନ କରିନାହାନ୍ତି । ଅଧିକ ସମ୍ପାଦନା କଲେ ଆପଣଙ୍କ IP Address ଟି ସମସ୍ତଙ୍କୁ ଦେଖାଯିବ । <strong>[$1ଲଗ ଇନ କଲେ]</strong> କିମ୍ବା <strong>[$2 ନୂଆ ଖାତାଟିଏ ତିଆରି କଲେ]</strong>, ଆପଣଙ୍କ ସମ୍ପାଦନାର ଶ୍ରେୟ ଅନ୍ୟାନ୍ୟ ସୁବିଧା ସହିତ ଆପଣଙ୍କ ଇଉଜର ନାମରେ ଦିଆହେବ ।",
"prefs-timeoffset": "ସମୟ ଆରମ୍ଭ",
"prefs-advancedediting": "ସାଧାରଣ ବିକଳ୍ପ",
"prefs-editor": "ସମ୍ପାଦକ",
- "prefs-preview": "ଦେଖଣା",
+ "prefs-preview": "ପà\82ରà\8dବଦà\87à¬\96ଣା",
"prefs-advancedrc": "ଉନ୍ନତ ବିକଳ୍ପସମୂହ",
"prefs-advancedrendering": "ଉନ୍ନତ ବିକଳ୍ପସମୂହ",
"prefs-advancedsearchoptions": "ଉନ୍ନତ ବିକଳ୍ପସମୂହ",
"nmembers": "$1 {{PLURAL:$1|member|ସଭ୍ୟ}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|ସଭ୍ୟ|ସଭ୍ୟଗଣ}}",
"nrevisions": "$1 ଗୋଟି {{PLURAL:$1|ସଂସ୍କରଣ|ସଂସ୍କରଣ}}",
- "nviews": "$1 ଟି {{PLURAL:$1|ଦେଖଣା|ଦେଖଣା}}",
"nimagelinks": "$1 ଟି {{PLURAL:$1|ପୃଷ୍ଠା|ପୃଷ୍ଠା}}ରେ ବ୍ୟବହାର କରାଯାଇଅଛି",
"ntransclusions": "$1ଟି {{PLURAL:$1|ପୃଷ୍ଠା|ପୃଷ୍ଠା}}ରେ ବ୍ୟବହାର କରାଯାଇଅଛି",
"specialpage-empty": "ଏହି ଅନୁରୋଧ ପାଇଁ କିଛି ଫଳାଫଳ ମିଳିଲା ନାହିଁ ।",
"expand_templates_remove_nowiki": "ଫଳାଫଳରେ <nowiki> ଟ୍ୟାଗମାନଙ୍କୁ ଦବାଇଦିଅନ୍ତୁ",
"expand_templates_generate_xml": "XML ପାର୍ସ ସଂରଚନା ଦେଖାନ୍ତୁ",
"expand_templates_generate_rawhtml": "କେବଳ HTML କୋଡ଼ ଦେଖାନ୍ତୁ",
- "expand_templates_preview": "ଦେଖଣା",
+ "expand_templates_preview": "ପà\82ରà\8dବଦà\87à¬\96ଣା",
"pagelanguage": "ପୃଷ୍ଠା ଭାଷା ବଛା",
"pagelang-name": "ପୃଷ୍ଠା",
"pagelang-language": "ଭାଷା",
"disclaimers": "ਦਾਅਵੇ",
"disclaimerpage": "Project:ਆਮ ਦਾਅਵੇ",
"edithelp": "ਸੋਧ ਸਬੰਧੀ ਮਦਦ",
+ "helppage-top-gethelp": "ਮਦਦ",
"mainpage": "ਮੁੱਖ ਸਫ਼ਾ",
"mainpage-description": "ਮੁੱਖ ਸਫ਼ਾ",
"policy-url": "Project:ਨੀਤੀ",
"wrongpassword": "ਗ਼ਲਤ ਪਾਸਵਰਡ ਦਿੱਤਾ ਹੈ। ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।",
"wrongpasswordempty": "ਖ਼ਾਲੀ ਪਾਸਵਰਡ ਦਿੱਤਾ ਹੈ। ਮੁੜ-ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।",
"passwordtooshort": "ਪਾਸਵਰਡ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਦਾ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ।",
+ "passwordtoolong": "ਪਾਸਵਰਡ {{PLURAL:$1|1 ਅੱਖਰ|$1 ਅੱਖਰਾਂ}} ਤੋਂ ਵੱਡਾ ਨਹੀਂ ਹੋ ਸਕਦਾ।",
"password-name-match": "ਤੁਹਾਡਾ ਪਛਾਣ-ਸ਼ਬਦ ਤੁਹਾਡੇ ਵਰਤੋਂਕਾਰ ਨਾਂ ਤੋਂ ਵੱਖਰਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।",
"password-login-forbidden": "ਇਹ ਯੂਜ਼ਰ-ਨਾਂ ਅਤੇ ਪਾਸਵਰਡ ਵਰਤਣ ਦੀ ਮਨਾਹੀ ਹੈ।",
"mailmypassword": "ਨਵਾਂ ਪਾਸਵਰਡ ਈ-ਮੇਲ ਕਰੋ",
"nlinks": "$1 {{PLURAL:$1|ਲਿੰਕ|ਲਿੰਕ}}",
"nmembers": "$1 {{PLURAL:$1|ਮੈਂਬਰ|ਮੈਂਬਰਾਂ}}",
"nrevisions": "$1 {{PLURAL:$1|ਰੀਵਿਜ਼ਨ|ਰੀਵਿਜ਼ਨਾਂ}}",
- "nviews": "$1 {{PLURAL:$1|ਫੇਰੀ|ਫੇਰੀਆਂ}}",
"nimagelinks": "$1 {{PLURAL:$1|ਸਫ਼ੇ|ਸਫ਼ਿਆਂ}} ’ਤੇ ਵਰਤਿਆ ਹੋਇਆ",
"ntransclusions": "$1 {{PLURAL:$1|ਸਫ਼ੇ|ਸਫ਼ਿਆਂ}} ’ਤੇ ਵਰਤਿਆ ਹੋਇਆ",
"specialpage-empty": "ਇਸ ਰਿਪੋਟ ਦਾ ਕੋਈ ਨਤੀਜਾ ਨਹੀਂ ਹੈ।",
"exif-artist": "ਲੇਖਕ",
"exif-copyright": "ਕਾਪੀਰਾਈਟ ਟਾਇਟਲ",
"exif-exifversion": "ਐਗਜ਼ਿਫ਼ ਦਾ ਰੂਪ",
+ "exif-colorspace": "ਰੰਗ ਸਪੇਸ",
"exif-pixelydimension": "ਤਸਵੀਰ ਦੀ ਚੌੜਾਈ",
"exif-pixelxdimension": "ਤਸਵੀਰ ਦੀ ਲੰਬਾਈ",
"exif-usercomment": "ਵਰਤੋਂਕਾਰ ਦੀਆਂ ਟਿੱਪਣੀਆਂ",
"nmembers": "$1 {{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}}",
"ntransclusions": "używany na $1 {{PLURAL:$1|stronie|stronach}}",
"specialpage-empty": "Ta strona raportu jest pusta.",
"nmembers": "$1 {{PLURAL:$1|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}}",
"ntransclusions": "usada {{PLURAL:$1|numa página|em $1 páginas}}",
"specialpage-empty": "Atualmente não há dados a serem exibidos nesta página.",
"nmembers": "$1 {{PLURAL:$1|membro|membros}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|membro|membros}}",
"nrevisions": "$1 {{PLURAL:$1|edição|edições}}",
- "nviews": "$1 {{PLURAL:$1|visita|visitas}}",
"nimagelinks": "Usada {{PLURAL:$1|numa página|em $1 páginas}}",
"ntransclusions": "usada {{PLURAL:$1|numa página|em $1 páginas}}",
"specialpage-empty": "Não existem dados para apresentar.",
"copyrightwarning2": "Copyright warning displayed under the edit box in editor\n*$1 - license name",
"editpage-head-copy-warn": "{{ignored}}Custom copyright warning in the header of an edit page.",
"editpage-tos-summary": "{{notranslate}}",
+ "editpage-cannot-use-custom-model": "Error message shown if the database does not support changing the content model of a page.",
"longpage-hint": "{{notranslate}}\n* <tt>$1</tt>: Size of the textbox formatted for output, using an appropriate unit ({{msg-mw|size-bytes}}, {{msg-mw|size-kilobytes}}, {{msg-mw|size-megabytes}}, {{msg-mw|size-gigabytes}})\n* <tt>$2</tt>: Size of the textbox in bytes, not formatnum",
"longpageerror": "Warning displayed when trying to save a text larger than the maximum size allowed.\n\nParameters:\n* $1 - submitted size (in kilobytes)\n* $2 - maximum size (in kilobytes)",
"readonlywarning": "Parameters:\n* $1 - reason",
"nmembers": "Appears in brackets after each category listed on the special page [[Special:WantedCategories]].\n\nParameters:\n* $1 - the number of members of the category\nSee also:\n* {{msg-mw|Nmemberschanged}}",
"nmemberschanged": "Appears in brackets after each category listed on the special page [[Special:WantedCategories]] if the number of pages in the category has changed since the list was last refreshed.\n\nParameters:\n* $1 - the original number of members of the category\n* $2 - the current one\nSee also:\n* {{msg-mw|Nmembers}}",
"nrevisions": "Used as link text in [[Special:FewestRevisions]].\n\nThe link points to the page history (action=history).\n\nParameters:\n* $1 - number of revisions",
- "nviews": "This message is used on [[Special:PopularPages]] to say how many times each page has been viewed.\n\nPreceded by the page title, like: Page title ($1 views)\n\nParameters:\n* $1 - the number of views",
"nimagelinks": "Used on [[Special:MostLinkedFiles]] to indicate how often a specific file is used.\n\nParameters:\n* $1 - number of pages\nSee also:\n* {{msg-mw|Ntransclusions}}",
"ntransclusions": "Used on [[Special:MostTranscludedPages]] to indicate how often a template is in use.\n\nParameters:\n* $1 - number of pages\nSee also:\n* {{msg-mw|Nimagelinks}}",
"specialpage-empty": "Used on a special page when there is no data. For example on [[Special:Unusedimages]] when all images are used.",
"nmembers": "$1 {{PLURAL:$1|membru|membri|de membri}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|membru|membri|de membri}}",
"nrevisions": "{{PLURAL:$1|o versiune|$1 versiuni|$1 de versiuni}}",
- "nviews": "{{PLURAL:$1|o accesare|$1 accesări|$1 de accesări}}",
"nimagelinks": "Utilizat pe $1 {{PLURAL:$1|pagină|pagini}}",
"ntransclusions": "utilizat pe $1 {{PLURAL:$1|pagină|pagini}}",
"specialpage-empty": "Această pagină este goală.",
"nmembers": "$1 {{PLURAL:$1|membre|membre}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|membre}}",
"nrevisions": "$1 {{PLURAL:$1|revisione|revisiune}}",
- "nviews": "$1 {{PLURAL:$1|visite|visite}}",
"nimagelinks": "Ausate sus a $1 {{PLURAL:$1|pàgene|pàggene}}",
"ntransclusions": "ausate sus a $1 {{PLURAL:$1|pàgene|pàggene}}",
"specialpage-empty": "Non ge stonne resultete pe stu report.",
"nmembers": "$1 {{PLURAL:$1|объект|объекта|объектов}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|объект|объекта|объектов}}",
"nrevisions": "$1 {{PLURAL:$1|версия|версии|версий}}",
- "nviews": "$1 {{PLURAL:$1|просмотр|просмотра|просмотров}}",
"nimagelinks": "Используется на $1 {{PLURAL:$1|странице|страницах}}",
"ntransclusions": "используется на $1 {{PLURAL:$1|странице|страницах}}",
"specialpage-empty": "Запрос не дал результатов.",
"nmembers": "$1 {{PLURAL:$1|योजकः|योजकाः}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|सदस्यः|सदस्याः}}",
"nrevisions": "$1 {{PLURAL:$1|पुनरावृत्तिः}}",
- "nviews": "$1 {{PLURAL:$1|परिसन्धिः|परिसन्धयः}}",
"nimagelinks": "$1 {{PLURAL:$1|पुटम्|पुटानि}} प्रयुक्तानि ।",
"ntransclusions": "$1 {{PLURAL:$1|पुटम्|पुटानि}} प्रयुक्तानि ।",
"specialpage-empty": "अस्य वृत्तस्य परिणामः नास्ति ।",
"nmembers": "$1 {{PLURAL:$1|кыттааччы|кыттааччылаах}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|эбийиэк|эбийиэктээх}}",
"nrevisions": "$1 {{PLURAL:$1|барыллаах|барыл баар}}",
- "nviews": "$1 көрүүлээх",
"nimagelinks": "$1 {{PLURAL:$1|сирэйгэ|ахсааннаах сирэйгэ}} туттуллар",
"ntransclusions": "$1 {{PLURAL:$1|сирэйгэ|ахсааннаах сирэйгэ}} туттуллар",
"specialpage-empty": "Көрдөөн тугу да булбата.",
--- /dev/null
+{
+ "@metadata": {
+ "authors": [
+ "Ashkan P.",
+ "Calak",
+ "Kurdbuddha",
+ "Mjbmr",
+ "Paraw2",
+ "아라"
+ ]
+ },
+ "tog-numberheadings": "ژمارەکردنی خۆدکاری سەرتیترەکان",
+ "underline-always": "هەمیشە",
+ "underline-never": "هیچ وەخت",
+ "sunday": "یەێشەمە",
+ "monday": "دوشەممە",
+ "tuesday": "سێشەمە",
+ "wednesday": "چوارشەمە",
+ "thursday": "پەنجشەمە",
+ "friday": "جومعە",
+ "saturday": "شەممە",
+ "sun": "یەێشەمە",
+ "mon": "دووشەمە",
+ "tue": "سێشەمە",
+ "wed": "چوارشەمە",
+ "thu": "پەنجشەمە",
+ "fri": "جومعە",
+ "sat": "شەممە",
+ "january": "ژانویە",
+ "february": "فڤریە",
+ "march": "مارس",
+ "april": "ئاڤریل",
+ "may_long": "مەی",
+ "june": "ژووەن",
+ "july": "ژووئیە",
+ "august": "ئووت",
+ "september": "سپتامبر",
+ "october": "ئۆکتۆبر",
+ "november": "نۆڤامبر",
+ "december": "دسامبر",
+ "january-gen": "ژانویە",
+ "february-gen": "فڤریە",
+ "march-gen": "مارس",
+ "april-gen": "ئاڤریل",
+ "may-gen": "مەی",
+ "june-gen": "ژووەن",
+ "july-gen": "ژووئیە",
+ "august-gen": "ئووت",
+ "september-gen": "سپتامبر",
+ "october-gen": "ئۆکتۆبر",
+ "november-gen": "نۆڤامبر",
+ "december-gen": "دسامبر",
+ "jan": "ژانویه",
+ "feb": "فڤریە",
+ "mar": "مارس",
+ "apr": "ئاڤریل",
+ "may": "مەی",
+ "jun": "ژووەن",
+ "jul": "ژووئیە",
+ "aug": "ئووت",
+ "sep": "سپتامبر",
+ "oct": "ئۆکتۆبر",
+ "nov": "نۆڤامبر",
+ "dec": "دسامبر",
+ "pagecategories": "{{PLURAL:$1|پۆل|پۆلەگان}}",
+ "category_header": "پەڕەگان پۆل «$1»",
+ "subcategories": "ژێرپۆلەگان",
+ "category-media-header": "پەڕگەگان پۆل «$1»",
+ "category-empty": "''ئەی پۆلە ئێرەنگە ھۊچ پەڕە یا پەڕگەێگ لە خوەیا نیەگرێت.''",
+ "hidden-categories": "{{PLURAL:$1|پۆل شاریاێ}}",
+ "category-subcat-count": "{{PLURAL:$2|ئەی پۆلە تەنیا ژێرپۆل خوارەو لەتێیە.| ئەی پۆلە ئەی {{PLURAL:$1|ژێرپۆل|$1 ژێرپۆلەیل}} خوارەو لەتێیە، لە سەرجەم $2 گلە.}}",
+ "category-article-count": "{{PLURAL:$2|ئەی پۆلە تەنیا ئەی پەڕە لەخوەیگرتیە.|{{PLURAL:$1|پەڕە|$1 پەڕە}} لە ئەی پۆلە، لە سەرجەم $2 پەڕە ھەس.}}",
+ "category-file-count": "{{PLURAL:$2|ئەی پۆلە تەنیا ئەی پەڕە لەخوەیگرتیە.|{{PLURAL:$1|پەڕە|$1 پەڕە}} لە ئەی پۆلە، لە سەرجەم $2 پەڕە ھەس.}}",
+ "listingcontinuesabbrev": "(دریژە)",
+ "noindex-category": "پەڕە پێرستنەکریاێەگان",
+ "about": "دەربارە",
+ "newwindow": "(لە پەڕەێگ نوو واز کریەێد)",
+ "cancel": "لاوردن",
+ "moredotdotdot": "بیشتر",
+ "morenotlisted": "ئی لیستە تەواو نییە",
+ "mypage": "پەڕە",
+ "mytalk": "وەتوویش",
+ "navigation": "ڕێدەرکردن",
+ "qbfind": "پیا بکە",
+ "qbbrowse": "بگەرد",
+ "qbedit": "وێراشتە",
+ "qbpageoptions": "ئێ لاپەڕەیە",
+ "qbmyoptions": "پەڕەگانم",
+ "faq": "پرسیار و جواو (FAQ)",
+ "faqpage": "پرۆژە:پرسیار و جواو",
+ "actions": "کردارەگان",
+ "namespaces": "شوونناوەگان",
+ "variants": "شێوەزارەگان",
+ "errorpagetitle": "غەڵەت",
+ "returnto": "بەورەو ئڕاێ $1.",
+ "help": "یارمەتی",
+ "search": "مینە",
+ "searchbutton": "مینە",
+ "go": "بچوو",
+ "searcharticle": "بچوو",
+ "history": "دیروک پەڕە",
+ "history_short": "دیروک پەڕە",
+ "printableversion": "نسخەێ ئامادەێ چاپ",
+ "permalink": "بەسیار ھەمیشەیی",
+ "view": "دۊنن",
+ "edit": "وێراشتە",
+ "create": "درسکردن",
+ "delete": "لاوردن",
+ "protect": "بپیەرێزەێ",
+ "protect_change": "گووڕیان",
+ "newpage": "پەڕەێ نوو",
+ "talkpagelinktext": "وەتوویش",
+ "specialpage": "پەڕەێ تایوەت",
+ "personaltools": "ئامڕازە تاقەکەسیەگان",
+ "talk": "وەتوویش",
+ "views": "دۊننەگان",
+ "toolbox": "ئامڕازەگان",
+ "otherlanguages": "وە زوانەیل ترەک",
+ "redirectedfrom": "(ڕەوانەکریاێ لە $1)",
+ "lastmodifiedat": "ئەی پەڕە دۊاجار لە $2ی $1 نوو کریاس.",
+ "protectedpage": "پەڕەێ پاڕێزریا",
+ "jumpto": "واز بووە ئڕاێ:",
+ "jumptonavigation": "ڕێدەرکردن",
+ "jumptosearch": "مینە",
+ "aboutsite": "سەبارەت وە {{SITENAME}}",
+ "copyrightpage": "{{ns:project}}:مافەیل لەوەرگرتن",
+ "currentevents": "ڕووداوەیل ئێرەنگەیی",
+ "currentevents-url": "Project:ڕووداوەیل ئێرەنگەیی",
+ "disclaimers": "رەێکردن",
+ "disclaimerpage": "Project:رەێکردن گشتی",
+ "edithelp": "ڕێنوانی وێراشتەکردن",
+ "helppage-top-gethelp": "کۆمەک",
+ "mainpage": "دەسپێک",
+ "mainpage-description": "دەسپێک",
+ "policy-url": "پرۆژە:سیاسەت",
+ "portal": "دەرانەێ ئەوکاربەرەیل",
+ "portal-url": "Project:دەرانەێ ئەوکاربەرەیل",
+ "privacy": "سیاسەت ھەشاریەتی",
+ "privacypage": "Project:پیەرێزانن زانیاریەگان",
+ "ok": "باشە",
+ "retrievedfrom": "وەرگیریاێ لە «$1»",
+ "youhavenewmessages": "$1 دێڕی ($2).",
+ "editsection": "وێراشتە",
+ "editold": "وێراشتە",
+ "viewsourceold": "سەرچاوەگەێ بۊن",
+ "editlink": "وێراشتە",
+ "viewsourcelink": "سەرچاوەگەێ بۊن",
+ "editsectionhint": "وێراشتە کردن بەش: $1",
+ "toc": "ناوەرۆک",
+ "showtoc": "نیشانی بیە",
+ "collapsible-collapse": "جەمیەو کە",
+ "confirmable-yes": "بەڵێ",
+ "confirmable-no": "نە",
+ "feedlinks": "خۆراک:",
+ "site-atom-feed": "خواردەمەنی ئەتۆم ئڕاێ $1",
+ "page-atom-feed": "خواردەمەنی ئەتۆم ئڕاێ «$1»",
+ "red-link-title": "$1 (پەڕە بوون نەیرێد)",
+ "nstab-main": "پەڕە",
+ "nstab-user": "پەڕەێ ئەوکاربەر",
+ "nstab-special": "پەڕەێ تایوەت",
+ "nstab-project": "پەڕەێ پرۆژە",
+ "nstab-image": "پەڕگە",
+ "nstab-mediawiki": "پەیام",
+ "nstab-help": "پەڕەێ کۆمەک",
+ "nstab-category": "پول",
+ "missing-article": "دەیتابەیسەگە نەتۊەنست دەق پەڕەێگ وە ناو «$1» $2 پێیابکەێد ک ئەشێ پێیابکردیاتاد.\n\nئیە فرەتر لە مدووێ وەدۊاچین بەستیارێگ جیاواز یادیرۆک کۆنەێ پەڕەێگ سڕیاێ ڕوو دەێد.\n\nئەگەر لەێوا نیە، ئەوە گەھا گرفتێگ لەێ نەرمامێرە پێیاکردیەسە.\nتکایە ئیە وە ئاماژەدان وە ناونیشان URLـەگەیەو وە [[Special:ListUsers/sysop|وەڕێوەوەرێگ]] ڕاپۆرت بدە.",
+ "missingarticle-rev": "(نسخە#: $1)",
+ "badtitle": "ناونیشان خراو",
+ "badtitletext": "سەرناو پەڕەێ داخوازیاێ بەتاڵە، چووڵە یا سەرناوێگ نێوان-زوانی یا نێوان-ویکیئیە ک وە شێوەێگ ھەڵە بەسیار پی دەریاس.\nگەھا یەک یا چەند کاراکتر لەتێ بوود ک نیەکریەێد لە سەرناوەگان ئەوکار بوەێد.",
+ "viewsource": "سەرچاوەگەێ بۊن",
+ "yourname": "ناو ئەوکاربەری",
+ "userlogin-yourname": "ناو ئەوکاربەری",
+ "userlogin-yourname-ph": "ناو ئەوکاربەریت بنۊس",
+ "createacct-another-username-ph": "ناو ئەوکاربەریت بنۊس",
+ "yourpassword": "تێپەڕوشە",
+ "userlogin-yourpassword": "تێپەڕوشە",
+ "userlogin-yourpassword-ph": "تێپەڕوشەگەت بنۊس",
+ "createacct-yourpassword-ph": "تێپەڕوشەێگ بنۊس",
+ "yourpasswordagain": "دیسان تێپەڕوشەگە بنۊسەو:",
+ "remembermypassword": "تێپەروشەگەم لەسەر ئەی کامپیوترە پاشدەس بکە (ئەو پەڕی $1 {{PLURAL:$1|ڕووژ}}ە)",
+ "login": "بچووە ناو",
+ "nav-login-createaccount": "بچووە ناو / ھەژمار درس بکە",
+ "userlogin": "بچووە ناو / ھەژمار درس بکە",
+ "userloginnocreate": "بچووە ناو",
+ "logout": "بچووە دەیشت",
+ "userlogout": "بچووە دەرەو",
+ "nologin": "ھەژمار نەێری؟ $1.",
+ "nologinlink": "ھەژمارێگ درس بکە",
+ "createaccount": "ھەژمار درس بکە",
+ "gotaccount": "لێرە ھەژمار دێرید؟ $1.",
+ "gotaccountlink": "بچووە ناو",
+ "userlogin-resetlink": "وردەکاریەیل ناوچینت لە ھۊرەو بردیتە؟",
+ "createacct-emailrequired": "ناونیشان ئیمەیل",
+ "createaccountreason": "هووکار:",
+ "createacct-reason": "هووکار",
+ "nouserspecified": "بایەد ناو ئەوکاربەری دابین بکەی.",
+ "login-userblocked": "ئەێ ئەوکاربەرە بلاک کریاێە. چۊنە ناو قەدەغەنە.",
+ "mailmypassword": "تێپەڕوشەێگ نوو بنارە ئڕاێ ئیمەیلەگەم",
+ "accountcreated": "هەژمار درس کریا",
+ "loginlanguagelabel": "زوان: $1",
+ "pt-login": "بچووە ناو",
+ "pt-login-button": "بچووە ناو",
+ "oldpassword": "تێپەڕوشەێ قەدیمی:",
+ "newpassword": "تێپەڕوشەێ نوو:",
+ "retypenew": "تێپەڕوشەێ نوو دوبارە بنۊسەو:",
+ "passwordreset-username": "ناو ئەوکاربەری:",
+ "changeemail-none": "(هۊچ)",
+ "bold_sample": "دەق پڕرەنگ",
+ "bold_tip": "دەق پڕرەنگ",
+ "italic_sample": "دەق کەژ",
+ "italic_tip": "دەق کەژ",
+ "link_sample": "سەردێڕ بەسیار",
+ "link_tip": "بەسیار ناوخوەێ",
+ "extlink_sample": "http://www.example.com سەردێڕ بەسیار",
+ "extlink_tip": "بەسیار دەرەکی (لەھۊرت بوود نۊسین پێشگر http:// )",
+ "headline_sample": "دەق سەردێڕ",
+ "headline_tip": "سەردێڕ ئاست ۲",
+ "nowiki_sample": "لە ئیرە دەق نەڕازانیاێ تێبخە",
+ "nowiki_tip": "لەوەرچاو نەگرتن داڕشانەگان ویکی",
+ "image_tip": "وێنەێ ناو دەق",
+ "media_tip": "بەسیار پەڕگە",
+ "sig_tip": "ئیمزاگەت وەرد مۆر ڕێکەفت",
+ "hr_tip": "هێڵ ئاسوویی (کەم ئەوکاری بوەین)",
+ "summary": "کورتەێ وێراشتە:",
+ "minoredit": "ئیە وێراشتەێگ بۊچگە",
+ "watchthis": "ئەی پەڕە بخە ژێر چاودێری",
+ "savearticle": "پەڕەگە پاشدەس بکە",
+ "preview": "پێشدۊنن",
+ "showpreview": "پێشدۊنن نیشان بدە",
+ "showdiff": "گووڕانکاریەگان نیشان بدە",
+ "anoneditwarning": "'''ھۆشیار بوو:''' نەچیتەسە ناو.\nناونیشان IP تۆ لە دیرۆک وێراشتەگان ئەی پەڕەیە تۆمار کریەێد.",
+ "newarticle": "(نوو)",
+ "newarticletext": "وە دۊاێ بەستیار پەڕەێگ کەفتیە کە ھێمان درس نەکریاس.\nئڕاێ درس کردن پەڕەگە، لە چوارچووەگەی خوارەو دەس بکە وە تایپ کردن. (ئڕاێ زانیاری فرەتر\n[$1 یارمەتی] بۊنە).\nئەگەر وە ھەڵە ھاتیدە ئێرە، لە سەر دوگمەێ '''back''' وێبگەڕەگەت کلیک بکە.",
+ "noarticletext": "ئێرەنگە ھۊچ دەقێگ لەی پەڕە نیە.\nتۊەنید ئڕاێ ئەی ناوە لە [[Special:Search/{{PAGENAME}}|پەڕەگان ترەک مینە بکەید]]، <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لە پێرستەگان مینە بکەید]، یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} ئەی پەڕەیە وێراشتە بکەید]</span>.",
+ "noarticletext-nopermission": "ئێرەنگە ھۊچ دەقێگ لە ئەی پەڕەیە نیە.\nتۊەنی لە پەڕەگان تر [[Special:Search/{{PAGENAME}}|ئەڕاێ ئەی ناوە بگەڕی]]، یا <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لە لۆگە پەیوەندیدارەگان بگەڕی]</span>، وەڵێم نیەتۊەنی ئەی پەڕەیە درس بکەی.",
+ "updated": "(وەڕووژکریا)",
+ "previewnote": "'''لە ھۊرت نەچوود ئیە تەنیا پێشدۊننە.'''\nگووڕانکاریەگانت ھێمان پاشدەس نەکریانە!",
+ "editing": "وێراشتەکردن $1",
+ "editingsection": "وێراشتەکردن: $1 (بەش)",
+ "yourdiff": "جیاوازیەیل",
+ "templatesused": "ئەو {{PLURAL:$1|داڕێژە ک لە ئەی پەڕە ئەوکاربریاێە|داڕێژەیلە ک لە ئەی پەڕە ئەوکاربریانە}}:",
+ "template-protected": "(پیەرێزیاێ)",
+ "template-semiprotected": "(نیوەپیەرێزیاێ)",
+ "hiddencategories": "ئەی پەڕە ئەندام {{PLURAL:$1|١ پۆل شاریاێە|$1 پۆل شاریاێە}}:",
+ "permissionserrorstext-withaction": "لەسەر ئەی {{PLURAL:$1|مدوو|مدووەیل}} خوارەو، دەسەڵات نەێرید ئەڕاێ $2:",
+ "recreate-moveddeleted-warn": "'''ھووشیار بوو: لەپسا پەڕەێگ درس کەید ک لە پێشەو سڕیاێە.'''\n\nئیە لەوەر چاو بگرە کە وێراشتەکردن ئەی پەڕە وەقازاشتە یا نە.\nپێرست سڕاندن و جیوەجیکردن ئەی پەڕە ئڕاێ ئاسانی لێرە ھاتیە:",
+ "moveddeleted-notice": "ئەی پەڕەیە سڕیاێە.\nپێرست سڕاندن و جیوەجیکردن ئڕاێ پەڕەگە لە ژێرەو نیشان دەریاس.",
+ "content-model-wikitext": "ویکیدەق",
+ "content-model-text": "دەق ساکار",
+ "content-model-javascript": "جاڤاسکریپت",
+ "post-expand-template-inclusion-warning": "'''ئاگاداری:''' قەوارەێ داڕێژەگە فرە گەورەس.\nپوورێد بڕێگ لە داڕێژەگان لەخوەیەو نەگرێتەو.",
+ "post-expand-template-inclusion-category": "ئەو لاپەڕەیلە ک قەوارەێ داڕێژەێەیل تێان لە ھەد تێپەڕۊە",
+ "post-expand-template-argument-warning": "'''ئاگاداری:''' ئەی پەڕە لانکەم یەک داڕێژە لەتێیە کە قەوارەێ فرە گەورەس.<br />\nئەی وەڵگە (argument) ئەوکار نەخریاێە.",
+ "post-expand-template-argument-category": "ئەو پەڕەیلێگ ک داڕێژەێ ئەوکارنەخریاێ لەتێیانە",
+ "viewpagelogs": "لۆگەگان ئەی پەڕەیە بۊن",
+ "currentrev-asof": "دۊایین نسخە $1",
+ "revisionasof": "وازخوەنی نسخەێ $1",
+ "revision-info": "نسخەێ $1 لە لایەن $2",
+ "previousrevision": "→نسخەێ کۆنەتر",
+ "nextrevision": "نسخەێ نووتر←",
+ "currentrevisionlink": "نسخەێ ئێرەنگە",
+ "cur": "ئێرەنگە",
+ "next": "پاش",
+ "last": "پێشین",
+ "page_first": "یەکمین",
+ "page_last": "دۊایین",
+ "histlegend": "ھەڵوژانن جیاوازی: نسخەگان ئڕاێ ھەڵسەنگانین دیاری بکە و ئینتر یا دوگمەگەێ خوارەو بکوتە.<br />\nڕێنوانی: '''({{int:cur}})''' = جیاوازی وەگەرد دۊایین نسخە، '''({{int:last}})''' = جیاوازی وەگەرد نسخەێ پێشین، '''{{int:minoreditletter}}''' = وێراشتەێ بۊچگ.",
+ "history-fieldset-title": "گەشت دیرۆک",
+ "history-show-deleted": "تەنیا سڕیاێەگان",
+ "histfirst": "کۆنەترین",
+ "histlast": "نووترین",
+ "historyempty": "(پووچ)",
+ "rev-delundel": "نیشان بدە/بشارەو",
+ "revdelete-show-file-submit": "بەڵێ",
+ "revdel-restore": "دیمەنەگەێ بگووڕنە",
+ "mergehistory-reason": "هووکار:",
+ "revertmerge": "لەیەک جیاکردن",
+ "history-title": "دیرۆک وازخوانیەگان «$1»",
+ "lineno": "ھێڵ $1:",
+ "compareselectedversions": "نسخە ھەڵوژیاێەگان ھەڵبسەنگنە",
+ "editundo": "بەتاڵکردن",
+ "searchresults": "ئاکامەگان مینە",
+ "searchresults-title": "ئاکامەگان مینە ئڕاێ «$1»",
+ "prevn": "{{PLURAL:$1|$1}}ی پێشین",
+ "nextn": "{{PLURAL:$1|$1}} دۊاتر",
+ "prevn-title": "$1 {{PLURAL:$1|ئەنجام}} پێشین",
+ "nextn-title": "$1 {{PLURAL:$1|ئەنجام}} دۊاتر",
+ "shown-title": "لە هەر پەڕەێگ $1 {{PLURAL:$1|ئەنجام}} نیشان بدە",
+ "viewprevnext": "($1 {{int:pipe-separator}} $2) ($3) بۊنە",
+ "searchmenu-exists": "'''پەڕەێگ وە ناو «[[:$1]]» لە ئەی ویکیە ھەس.'''",
+ "searchmenu-new": "'''لە ئەی ویکیە پەڕەێ « [[:$1]] » درس بکە!'''",
+ "searchprofile-articles": "پەڕەگان ناوەڕۆکی",
+ "searchprofile-images": "مالتیمیدیا",
+ "searchprofile-everything": "گشت چشت",
+ "searchprofile-advanced": "پێشکەفتێ",
+ "searchprofile-articles-tooltip": "مینە لە $1",
+ "searchprofile-images-tooltip": "مینە ئڕاێ پەڕگەگان",
+ "searchprofile-everything-tooltip": "لە گشت ناوەرۆکێگ مینە بکە (تەنانەت پەڕەگان وتوویشیش)",
+ "searchprofile-advanced-tooltip": "مینە لەناو شوونناوە دڵخوازەگان",
+ "search-redirect": "(ڕەوانەکەر $1)",
+ "search-section": "(بەش $1)",
+ "search-suggest": "ئایا مەبەستت ئیە بۊ: $1",
+ "search-interwiki-more": "(زوورم)",
+ "searchrelated": "پێوەس",
+ "searchall": "گشت",
+ "search-nonefound": "ھۊچ ئاکامێگ کە وە داواکاریەگەت بخوەێد پێیا نۊ.",
+ "powersearch-toggleall": "گشت",
+ "mypreferences": "ھەڵوژیاێەیل",
+ "prefs-skin": "پووستە",
+ "prefs-editing": "وێراشتەکردن",
+ "searchresultshead": "مینە",
+ "timezoneregion-africa": "ئافریقا",
+ "timezoneregion-america": "ئامریکا",
+ "timezoneregion-asia": "ئاسیا",
+ "timezoneregion-australia": "ئۆسترالیا",
+ "timezoneregion-europe": "ئورووپا",
+ "timezoneregion-indian": "ئوقیانووس هند",
+ "prefs-searchoptions": "جوورسن",
+ "youremail": "ئیمەیل",
+ "yourrealname": "ناو ڕاسەگانی:",
+ "yourlanguage": "زوان:",
+ "email": "ئیمەیل",
+ "prefs-help-email": "دانان ناونیشان ئیمەیل دڵخوازانەس، وەڵێم ئەگەر تێپەڕوشەگەت لە ھۊرتەو بچوود، ئەڕاێ نووکردن تێپەڕوشە ھەوەجە پی ھەس.",
+ "prefs-help-email-others": "ھەرلەێوا تۊەنی ھەڵوژانید ک ئەوکاربەرەیل تر، لە ڕێگەێ پەڕەێ ئەوکاربەریەگەت یا وەتوویشەگەت، بێ ئاشکراکردن کەسایەتیت، پێوەندی وەگەردت بگرن.\nئیمەیلەگەت تا کاتێگ ک کەسێگ وەگەردت پێوەندی بگرێد، ئاشکرا نیەود.",
+ "prefs-editor": "وێراشتەکەر",
+ "group-all": "(گشت)",
+ "right-read": "خوەنین پەڕەگان",
+ "right-edit": "وێراشتەکردن پەڕەگان",
+ "newuserlogpage": "پێرست درسکردن ئەوکاربەر",
+ "action-edit": "ئەی پەڕە وێراشتە بکە",
+ "nchanges": "$1 {{PLURAL:$1|گووڕانکاری}}",
+ "recentchanges": "دۊایین گووڕانکاریەیل",
+ "recentchanges-legend": "ھەڵوژیاێەگان دۊایین گووڕانکاریەگان",
+ "recentchanges-feed-description": "شوون دۊایین گووڕانکاریەگان ئەی ویکیە بگرە لە ئەی «خواردەمەنی»ەو.",
+ "recentchanges-label-newpage": "ئەی وێراشتەیە لاپەڕەێگ نوو درس کرد",
+ "recentchanges-label-minor": "ئییە وێراشتەێگ بۊچگە",
+ "recentchanges-label-bot": "ئەی وێراشتە لە لایەن بۆتێگ پێک هاتیە",
+ "recentchanges-label-unpatrolled": "ئەی وێراشتەیە ھێمان پاس نەدریاس",
+ "rcnotefrom": "لە خوارەو گووڕانکاریەگان لە '''$2'''ەو (تا '''$1''' نیشاندەریاس).",
+ "rclistfrom": "گووڕانکاریە نووەگان نیشان بدە وە دەسپێکردن لە $3 $2",
+ "rcshowhideminor": "وێراشتە بۊچگەیل $1",
+ "rcshowhidebots": "بۆتەگان $1",
+ "rcshowhideliu": "ئەوکاربەرە تۆمارکریاێەگان $1",
+ "rcshowhideanons": "ئەوکاربەرە نەناسیاوەگان $1",
+ "rcshowhidepatr": "وێراشتە نەگەردیاێەگان $1",
+ "rcshowhidemine": "وێراشتەگانم $1",
+ "rclinks": "دۊایین $1 گووڕانکاری $2 ڕووژ ویەردە نیشان بدە<br />$3",
+ "hist": "دیرۆک",
+ "hide": "بشارەو",
+ "minoreditletter": "بێجگە",
+ "rc-enhanced-expand": "وردەکاریەگان نیشان بدە",
+ "rc-enhanced-hide": "وردەکاریەگان بشارەو",
+ "recentchangeslinked": "گووڕانکاریە پەیوەندیدارەگان",
+ "recentchangeslinked-toolbox": "گووڕانکاری پەیوەندیدارەگان",
+ "recentchangeslinked-title": "گووڕانکاریە پەیوەندیدارەگان وە \"$1\" ـەو",
+ "recentchangeslinked-summary": "ئیە پێرستێگ لە گووڕانکاریەگان دۊایی لە ئەو پەڕەیلەسە ک بەسیار دێرن لە پەڕەێگ دیاریکریاێ (یا ئڕاێ ئەندامەگان پۆلێگ دیاریکریاێ)\nپەڕەگان [[Special:Watchlist|پێرست چاودێریەگەت]] '''پڕرەنگن'''.",
+ "recentchangeslinked-page": "ناو پەڕە:",
+ "recentchangeslinked-to": "وەجیگەێ ئەوە، گووڕانکاریەگان ئەو پەڕەیلە نیشان بدە ک بەسیار وە پەڕەی دیاریکریاێ دێرن.",
+ "upload": "پەڕگەێگ بار بکە",
+ "uploadlogpage": "پێرست بارکردن",
+ "filesource": "سەرچاوە:",
+ "license": "مۆڵەتناوە:",
+ "license-header": "مۆڵەتناوە",
+ "imgfile": "پەڕگە",
+ "listfiles": "پێرست پەڕگەیل",
+ "listfiles_name": "ناو",
+ "listfiles_user": "ئەوکاربەر",
+ "listfiles_count": "وەشانەیل",
+ "listfiles-latestversion-yes": "ئەرێ",
+ "listfiles-latestversion-no": "نە",
+ "file-anchor-link": "پەڕگە",
+ "filehist": "دیرۆک پەڕگە",
+ "filehist-help": "کرتە بکە لەسەر یەکێگ لە ڕێکەوت/کاتەگان ئڕاێ دۊنن پەڕگەگە وە ئەو شێوەێ لەو کاتە بۊە.",
+ "filehist-revert": "وەرۊپاش کردن",
+ "filehist-current": "دەق ئێرەنگەیی",
+ "filehist-datetime": "ڕێکەفت/سات",
+ "filehist-thumb": "بەن کلگی",
+ "filehist-thumbtext": "بەن کلگی ئڕاێ نسخەێ $1",
+ "filehist-user": "ئەوکاربەر",
+ "filehist-dimensions": "ئەنازە",
+ "filehist-comment": "شرۆڤە",
+ "imagelinks": "ئەوکاربردن پەڕگە",
+ "linkstoimage": "لە ئەی {{PLURAL:$1|پەڕەێ خوارەو بەسیار دریانە|$1 پەڕەێ خوارەو بەسیار دریانە}} ئڕاێ ئەی پەڕگە:",
+ "nolinkstoimage": "لاپەڕەێگ نیە ک بەسیار وە ئەی پەڕگە بیاشتاد.",
+ "sharedupload-desc-here": "ئەی پەڕگە لە $1ەوەسە و پووڕێد لە پرۆژەگان دیگەیش ئەوکار بیاتاد.\nپێناسەگەێ لەسەر [$2 پەڕەێ شیەوکردن پەڕگەگە] لە خوارەو نیشان دریاس.",
+ "randompage": "پەڕەێگ وەناکاو",
+ "statistics": "ئامارەگان",
+ "statistics-pages": "پەڕەیل",
+ "pageswithprop-submit": "بچوو",
+ "brokenredirects-edit": "وێراشتە",
+ "prefixindex": "گشت پەڕەگان وە پێشگرەو",
+ "protectedpages-page": "پەڕە",
+ "protectedpages-unknown-timestamp": "نەناسریاێ",
+ "protectedpages-unknown-performer": "ئەوکاربەر نەناسریاێ",
+ "listusers": "پێرست ئەوکاربەرەیل",
+ "usercreated": "لە $1، $2 {{GENDER:$3|درس کریاس}}",
+ "newpages": "پەڕە نووەگان",
+ "newpages-username": "ناو ئەوکاربەری:",
+ "move": "جیوەجیکردن",
+ "pager-newer-n": "{{PLURAL:$1|یەکێگ نووتر|$1 نووتر}}",
+ "pager-older-n": "{{PLURAL:$1|یەکێگ کۆنەتر|$1ی کۆنەتر}}",
+ "booksources": "سەرچاوەگان کتاو",
+ "booksources-search-legend": "مینەێ سەرچاوەێ کتاو بکە",
+ "booksources-search": "گەردین",
+ "log": "لۆگەگان",
+ "allpages": "گشت پەڕەگان",
+ "allarticles": "گشت پەڕەگان",
+ "allpagessubmit": "بچوو",
+ "categories": "پۆلەگان",
+ "linksearch-ok": "مینە",
+ "linksearch-line": "$1 بەسیارپێدەریاێە لە $2",
+ "listgrouprights-rights": "مافەیل",
+ "listgrouprights-members": "(پێرست ئەندامەگان)",
+ "trackingcategories-name": "ناو پەیام",
+ "emailuser": "ئیمەیل بنارە ئەڕاێ ئەی ئەوکاربەرە",
+ "emailusername": "ناو ئەوکاربەری:",
+ "emailmessage": "پەیام:",
+ "emailsend": "کل بکە",
+ "watchlist": "پێرست چاودێری",
+ "mywatchlist": "پێرست چاودێری",
+ "watchlistfor2": "ئڕاێ $1 $2",
+ "unwatch": "لاوردن چاودێری",
+ "watchlist-details": "بێجگە پەڕەگان وەتوویش، {{PLURAL:$1|$1 پەڕە}} لە پێرست چاودێریەگەتە.",
+ "wlshowlast": "دۊایین $1 دەمژمار $2 ڕووژ نیشان بدە",
+ "watchlist-options": "ھەڵوژیاێەگان پێرست چاودێری",
+ "actioncomplete": "کردارەگە وە ئەنجام رەسی",
+ "actionfailed": "کردارەگە سەرنەکەفت",
+ "dellogpage": "پێرست لاوردنەگان",
+ "rollbacklink": "گەڕانن",
+ "protectlogpage": "پێرست پیەرێزکردن",
+ "protectedarticle": "«[[$1]]» پیەرێزان",
+ "restriction-edit": "وێراشتە",
+ "undeletelink": "بۊنە/بارەوەێ",
+ "undeleteviewlink": "دۊنن",
+ "undelete-search-submit": "مینە",
+ "undelete-show-file-submit": "بەڵێ",
+ "namespace": "شوونناوەگان",
+ "invert": "ھەڵوژیاێەگان وەزێزەو بکە",
+ "contributions": "بەشدارییەگان {{GENDER:$1|ئەوکاربەر}}",
+ "contributions-title": "بەشداریەگان ئەوکاربەر $1",
+ "mycontris": "بەشداریەیل",
+ "contribsub2": "ئڕاێ {{GENDER:$3|$1}} ($2)",
+ "uctop": "(ئێرەنگە)",
+ "month": "لە مانگ (و پێشتر لەوە):",
+ "year": "لە ساڵ (و پێشتر لەوە):",
+ "sp-contributions-newbies": "تەنیا بەشداریەگان ئەوکاربەرە تازەگان نیشان بدە",
+ "sp-contributions-blocklog": "پێرست بەساێن",
+ "sp-contributions-uploads": "بارکردنەگان",
+ "sp-contributions-logs": "پێرستەگان",
+ "sp-contributions-talk": "وەتوویش",
+ "sp-contributions-search": "مینە کردن ئڕاێ بەشداریەگان",
+ "sp-contributions-username": "ناونیشان ئایپی (IP) یا ناو ئەوکاربەری:",
+ "sp-contributions-toponly": "تەنیا ئەو وێراشتەیلە نیشانبدە ک دۊایین نسخەن",
+ "sp-contributions-submit": "مینە بکە",
+ "whatlinkshere": "بەسیارەگان وە ئێرە",
+ "whatlinkshere-title": "ئەو پەڕەیلە ک وە «$1» بەسیار دێرن",
+ "whatlinkshere-page": "پەڕە:",
+ "linkshere": "ئەی پەڕەیلە بەستیار دێرن وە '''[[:$1]]''':",
+ "nolinkshere": "هۊچ لاپەڕەێگ بەسیار وە '''[[:$1]]''' نەێرێد .",
+ "isredirect": "پەڕەێ ڕەوانەکەر",
+ "istemplate": "ناوتەپیاێەگان (transclusions)",
+ "isimage": "بەسیار پەڕگە",
+ "whatlinkshere-prev": "{{PLURAL:$1|پێشتر|$1 پێشتر}}",
+ "whatlinkshere-next": "{{PLURAL:$1|دیگە|$1 تر}}",
+ "whatlinkshere-links": "← بەسیارەگان",
+ "whatlinkshere-hideredirs": "ڕەوانەکەرەگان $1",
+ "whatlinkshere-hidetrans": "$1 ناوتەپیاێەگان (transclusions)",
+ "whatlinkshere-hidelinks": "$1 بەسیار",
+ "whatlinkshere-hideimages": "$1 بەسیارەگان پەڕگە",
+ "whatlinkshere-filters": "پاڵووینکەرەگان",
+ "ipboptions": "٢ دەمژمار:2 hours,١ رووژ:1 day,٣ رووژ:3 days,١ ھەفتە:1 week,٢ ھەفتە:2 weeks,١ مانگ:1 month,٣ مانگ:3 months,٦ مانگ:6 months,١ ساڵ:1 year,بێسنوور:infinite",
+ "ipblocklist": "ئەوکاربەرە بەسریاێەگان",
+ "ipblocklist-submit": "مینە",
+ "blocklink": "بەسان",
+ "unblocklink": "بەسان لاوە",
+ "change-blocklink": "بەسان بگووڕنەو",
+ "contribslink": "بەشداریەیل",
+ "blocklogpage": "پێرست بەساێن",
+ "blocklogentry": "[[$1]] ئڕاێ ماوەێ $2 بەسان $3",
+ "block-log-flags-nocreate": "درسکردن ھەژمار ناچالاک کریا",
+ "movelogpage": "پێرست جیوەجیکردن",
+ "revertmove": "وەرۊپاش کردن",
+ "export": "ھەناردن پەڕەگان",
+ "allmessagesname": "ناو",
+ "allmessagesdefault": "دەق بنەڕەتی (Default)",
+ "allmessages-filter-all": "گشت",
+ "allmessages-language": "زوان",
+ "allmessages-filter-submit": "بچوو",
+ "allmessages-filter-translate": "ھەڵگەردانن",
+ "thumbnail-more": "گەورەکردن",
+ "thumbnail_error": "هەڵە لە کات درستکردن بەن کلگی: $1",
+ "tooltip-pt-userpage": "پەڕەێ ئەوکاربەریەگەت",
+ "tooltip-pt-mytalk": "پەڕەێ وەتوویشەگەت",
+ "tooltip-pt-preferences": "ھەڵوژیاێەیلت",
+ "tooltip-pt-watchlist": "پێرست ئەو پەڕەیل ک چاودێری لە گووڕانکاریەگانیان کەید",
+ "tooltip-pt-mycontris": "پێرست بەشداریەیلت",
+ "tooltip-pt-login": "پێشنیار ئەوپیت کریەێد بچیدە ناو؛ ھەرچەن زووری نیە",
+ "tooltip-pt-logout": "دەرچین",
+ "tooltip-ca-talk": "وەتوویش سەبارەت وە ناوەڕۆک پەڕە",
+ "tooltip-ca-edit": "تۊەنی وێراشتەێ ئەی پەڕەیە بکەید. تکایە وەر لە پاشدەسکردن دوگمەێ پێشدۊنن ئەوکاربوەێن.",
+ "tooltip-ca-addsection": "بەشێگ نوو دەس پی بکە",
+ "tooltip-ca-viewsource": "ئەی پەڕە پیەرێزیاێە.\nتۊەنی سەرچاوەگەێ بۊنید",
+ "tooltip-ca-history": "نسخەگان پێشین ئەی پەڕە",
+ "tooltip-ca-protect": "ئەی پەڕە بپارێزەو",
+ "tooltip-ca-delete": "ئەی پەڕەیە بسڕەو",
+ "tooltip-ca-move": "ئەی پەڕە جیوەجی بکە",
+ "tooltip-ca-watch": "ئەی پەڕە بخە سەر پێرست چاودێریت",
+ "tooltip-ca-unwatch": "ئەی پەڕە لە پێرست چاودێریەگەت لابدە",
+ "tooltip-search": "لە {{SITENAME}} مینە بکە",
+ "tooltip-search-go": "ئەگەر پووڕێد بچوو پەڕەێگ ک وە تەواوی ئەی ناوە بیاشتاد",
+ "tooltip-search-fulltext": "لە پەڕەگان مینە بکە ئڕا ئەی دەقە",
+ "tooltip-p-logo": "دۊنن پەڕەێ دەسپێک",
+ "tooltip-n-mainpage": "سەردان پەڕەێ سەرەکی بکە",
+ "tooltip-n-mainpage-description": "سەردان پەڕەێ سەرەکی بکە",
+ "tooltip-n-portal": "سەبارەت وە پڕۆژەگە، چە تۊەنی بکەید، لە کوورە چشتەگان پێیا بکەید",
+ "tooltip-n-currentevents": "سەبارەت وە ڕووداوەیل ئێرەنگەیی زانیاری پێشینە وەدەس بارین",
+ "tooltip-n-recentchanges": "پێرست دۊایین گووڕانکاریەیل لە ئەی ویکیە",
+ "tooltip-n-randompage": "پەڕەێ وەناکاوێگ نیشان بدە",
+ "tooltip-n-help": "جێگەێ ئەورەسین",
+ "tooltip-t-whatlinkshere": "پێرست گشت پەڕەگان ویکی ک بەسیار دریانە وە ئێرە",
+ "tooltip-t-recentchangeslinked": "دۊایین گووڕانکاریەگان لە ئەو پەڕەیلە ک ئەی پەڕە وەپیان بەسیار دێرد",
+ "tooltip-feed-atom": "خواردەمەنی ئەتۆم ئڕاێ ئەی پەڕە",
+ "tooltip-t-contributions": "پێرست بەشداریەگان ئەی ئەوکاربەر",
+ "tooltip-t-emailuser": "ئیمەیلێگ بنارە ئڕاێ ئەی ئەوکاربەرە",
+ "tooltip-t-specialpages": "پێرست گشت پەڕە تایوەتەگان",
+ "tooltip-t-print": "نسخەێ چاپی ئەی پەڕە",
+ "tooltip-t-permalink": "بەسیار ھەمیشەیی وە ئەی وەشان لە ئەی پەڕە",
+ "tooltip-ca-nstab-main": "دۊنن پەڕەێ ناوەڕۆک",
+ "tooltip-ca-nstab-user": "پەڕەێ ئەوکاربەر تەماشا بکە",
+ "tooltip-ca-nstab-special": "ئیە پەڕەێگ تایبەتە، نیەتۊەنی خوەێ ئەی پەڕە وێراشتە بکەید",
+ "tooltip-ca-nstab-project": "دۊنن پەڕەێ پرۆژە",
+ "tooltip-ca-nstab-image": "دۊنن پەڕەێ پەڕگە",
+ "tooltip-ca-nstab-template": "دۊنن قاڵبەگە",
+ "tooltip-ca-nstab-category": "پەڕەێ پۆلەگە بۊن",
+ "tooltip-minoredit": "ئیە وەک گووڕانکاریەێگ بۊچگ دیاریەو بکە",
+ "tooltip-save": "گووڕانکاریەگان خوەت پاشدەس بکە",
+ "tooltip-preview": "پێشدۊنن گووڕانکاریەگان، تکایە پێش لە پاشدەس کردن، ئیە ئەوکار بوەین.",
+ "tooltip-diff": "نیشاندان گووڕانکارییەگانت لە دەقەگە",
+ "tooltip-compareselectedversions": "جیاوازیەگان دو دەق دیاریکریاێەگەێ ئەی پەڕە بۊنە.",
+ "tooltip-watch": "ئەی پەڕە بخە سەر پێرست چاودێریت",
+ "tooltip-upload": "دەسکردن وە بارکردن",
+ "tooltip-rollback": "«گەڕانن» گووڕانکاری/گووڕانکاریەگان ئەی پەڕە وە یەک کرتە گەڕانێدەو ئڕاێ دۊایین بەشداریکەر",
+ "tooltip-undo": "«بەتاڵکردن» ئەی گووڕانکاریە گووڕنێدەو و فۆرم وێراشتەکردن لە شێوەی پێشدۊنن وازەو کەێد. ئەی جوورە پووڕێد مدووێگ لە کورتەێ وێراشتە بنۊسریەێد.",
+ "tooltip-summary": "کۆرتەێگ لە لی بنۊسە",
+ "pageinfo-redirectsto-info": "زانیاری",
+ "pageinfo-contentpage-yes": "بەڵێ",
+ "pageinfo-protect-cascading-yes": "بەڵێ",
+ "previousdiff": "→ گووڕانکاری کۆنەتر",
+ "nextdiff": "گووڕانکاری نووتر ←",
+ "file-info-size": "$1 × $2 پیکسێل، قەوارەێ پەڕگە: $3، جوور MIME: $4",
+ "file-nohires": "رەزۆلوشن سەرتر لەیە لە وەردەستەو نیە.",
+ "svg-long-desc": "پەڕگەێ SVG، وە ناو $1 × $2 پیکسڵ، قەوارەێ پەڕگە: $3",
+ "show-big-image": "پەڕگەێ رەسەن",
+ "ilsubmit": "مینە",
+ "bad_image_list": "فۆرمەت وە شێوەێ خوارەسە:\n\nتەنیا ئەو باوەتەیلە ک پێرست کریانە (واتە ئەو ھێڵەیلە ک وە * دەس پێ کەن) لە وەر چاون.\nیەکەم بەسیار لە سەر ھەر ھێڵێگ، ئەشێ بەسیار فایلێگ خراو بوود.\nگشت بەسیارەگان دۊاێ ئەوە لە ئەو ھێڵە، چۊ نائاسایی(ئستسنا) تیەنە ئەژمار.",
+ "metadata": "متادەیتا",
+ "metadata-help": "ئەی پەڕگە زانیاری فرەێگ لەتێیە، ک گەھا دۊردۊن (camera) یا ئسکەنێر (scanner) خستۊە سەری. ئەگەر پەڕگەگە لە حاڵەتە سەرەتاییەگەیەو دەسکاری کریاۊد، گاھەس بڕێگ لە وردەکاریەیل، زانیارەگان وێنە گووڕیاێەگە وە تەواوی نیشان نەدەن.",
+ "metadata-fields": "کاڵگەگان (fields) میتادەیتاێ وێنە ک لە ئەی پەیامە وەڕزارەو کریانە، کاتێگ جەدوەل میتادەیتا کووکریاێ بوود لە پەڕەی وێنە نیشان دەریەن.\nکاڵگەگان تر لە حاڵەتی بنەڕەتی شاریاێن.\n* make\n* model\n* datetimeoriginal\n* exposuretime\n* fnumber\n* isospeedratings\n* focallength\n* artist\n* copyright\n* imagedescription\n* gpslatitude\n* gpslongitude\n* gpsaltitude",
+ "exif-imagedescription": "ناونیشان وێنە",
+ "exif-pixelxdimension": "بەرزی وێنە",
+ "exif-flash": "فلەش",
+ "exif-keywords": "کلیلوشەیل",
+ "exif-writer": "نۊسەر",
+ "exif-languagecode": "زوان",
+ "exif-nickname": "ناو غەیرڕەسمی وێنەگە",
+ "exif-lightsource-0": "نەناسریاێ",
+ "exif-lightsource-4": "فلەش",
+ "exif-focalplaneresolutionunit-2": "ئینچ",
+ "exif-contrast-1": "نەرم",
+ "exif-contrast-2": "ڕەق",
+ "exif-sharpness-1": "نەرم",
+ "exif-sharpness-2": "ڕەق",
+ "exif-subjectdistancerange-0": "نەناسریاێ",
+ "exif-gpsdestdistance-m": "مایل",
+ "exif-dc-rights": "مافەیل",
+ "exif-iimcategory-hth": "تەندروسی",
+ "exif-iimcategory-lab": "کارگەری",
+ "exif-iimcategory-pol": "ڕامیاری",
+ "exif-iimcategory-rel": "دین و باوەڕ",
+ "exif-iimcategory-sci": "زانست و تێکنۆلۆژی",
+ "exif-iimcategory-spo": "وەرزش",
+ "exif-iimcategory-wea": "ئاو و هەوا",
+ "namespacesall": "گشت",
+ "monthsall": "گشت",
+ "confirm_purge_button": "باشە",
+ "confirm-watch-button": "باشە",
+ "confirm-unwatch-button": "باشە",
+ "semicolon-separator": "؛ ",
+ "imgmultigo": "بچوو!",
+ "img-lang-go": "بچوو",
+ "table_pager_limit_submit": "بچوو",
+ "watchlisttools-view": "گووڕانکاریە پەیوەندیدارەگان بۊنە",
+ "watchlisttools-edit": "پێرست چاودێری بۊنە و وێراشتەێ بکە",
+ "watchlisttools-raw": "پێرست خام چاودێریەگان وێراشتە بکە",
+ "duplicate-defaultsort": "'''ئاگاداری''' کلیل بنەڕەتی \"$2''، کلیل بنەڕەتی \"$1\" بەتاڵ کەێد.",
+ "version": "وەشان",
+ "version-skin-colheader-name": "پووستە",
+ "version-ext-colheader-credits": "نۊسەرەیل",
+ "version-software-version": "وەشان",
+ "fileduplicatesearch-submit": "مینەکردن",
+ "specialpages": "پەڕە تایوەتەگان",
+ "external_image_whitelist": " #ئەی ھێڵە ھەر وە ئەی جوورە ک ھەس، وەر بدەین<pre>\n#رستە وەنەزمەگان (regular expression) (تەنیا ئەو بەشە کە لە نێوان // جێ گرێد) لە خوارەو بنەین\n#ئیانە وەرد نیشانی ئینترنتی وێنەیل دەرەکی بەسیار دریای (hotlinked) چەترگیەن (تەتبیق دریەن).\n#ئەوانە ک چەترگیانە، چۊ وێنە نیشان دریەن؛ وەگەرنە تەنیا بەسیارێگ وە وێنە نیشان دەریەێد.\n#ئەو ھێڵەیلە وە # دەس پێ کەن، جوور شرۆڤە (comments) گیریەنە وەر چەو\n#ئەی ھێڵەیلە وە گەورە و بۊچگی پیتەگان ھەستیارە (case-insensitive)\n\n#گشت رستە وەنەزمەگان (regex) لە ژۊەر ئەی ھێڵە بنەین. ئەی ھێڵ ھەر وە ئەی جوورە کە ھەس، وەر بدەین</pre>",
+ "tag-filter": "پاڵووین [[Special:Tags|تاگ]]:",
+ "tags-active-yes": "بەڵێ",
+ "tags-active-no": "نە",
+ "tags-edit": "وێراشتە",
+ "htmlform-no": "نە",
+ "htmlform-yes": "بەڵێ",
+ "feedback-message": "پەیام:",
+ "searchsuggest-search": "مینە",
+ "expand_templates_ok": "باشە",
+ "pagelang-name": "پەڕە",
+ "pagelang-language": "زوان",
+ "special-characters-group-latin": "لاتین",
+ "special-characters-group-greek": "یوونانی",
+ "special-characters-group-cyrillic": "سیریلیک",
+ "special-characters-group-arabic": "عەرەبی",
+ "special-characters-group-persian": "پارسی",
+ "special-characters-group-hebrew": "عبری",
+ "special-characters-group-bangla": "بەنگالی",
+ "special-characters-group-tamil": "تامیل",
+ "special-characters-group-telugu": "تێلوگو",
+ "special-characters-group-sinhala": "سینھالا",
+ "special-characters-group-gujarati": "گوجەراتی",
+ "special-characters-group-devanagari": "دێڤاناگاری",
+ "special-characters-group-thai": "تایلەندی",
+ "special-characters-group-lao": "لائۆ",
+ "special-characters-group-khmer": "کمێر"
+}
"nmembers": "$1 {{PLURAL:$1|člen|členovia|členov}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|člen|členovia|členov}}",
"nrevisions": "$1 {{PLURAL:$1|revízia|revízie|revízií}}",
- "nviews": "$1 {{PLURAL:$1|návšteva|návštevy|návštev}}",
"nimagelinks": "Použité na $1 {{PLURAL:$1|stránke|stránkach}}",
"ntransclusions": "použité na $1 {{PLURAL:$1|stránke|stránkach}}",
"specialpage-empty": "Táto správa neobsahuje žiadne položky.",
"nmembers": "$1 {{PLURAL:$1|element|elementa|elementi|elementov|elementov}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|element|elementa|elementi|elementov}}",
"nrevisions": "$1 {{PLURAL:$1|redakcija|redakciji|redakcije|redakcij|redakcij}}",
- "nviews": "$1 {{PLURAL:$1|ogled|ogleda|ogledi|ogledov|ogledov}}",
"nimagelinks": "Uporabljeno na $1 {{PLURAL:$1|strani|straneh}}",
"ntransclusions": "uporabljeno na $1 {{PLURAL:$1|strani|straneh}}",
"specialpage-empty": "Za to poročilo ni rezultatov.",
"nmembers": "$1 {{PLURAL:$1|члан|члана|чланова}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|члан|члана|чланова}}",
"nrevisions": "$1 {{PLURAL:$1|измена|измене|измена}}",
- "nviews": "$1 {{PLURAL:$1|преглед|прегледа|прегледа}}",
"nimagelinks": "Користи се на $1 {{PLURAL:$1|страници|странице|страница}}",
"ntransclusions": "користи се на $1 {{PLURAL:$1|страници|странице|страница}}",
"specialpage-empty": "Нема резултата за овај извештај.",
"nmembers": "$1 {{PLURAL:$1|član|člana|članova}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|član|člana|članova}}",
"nrevisions": "$1 {{PLURAL:$1|izmena|izmene|izmena}}",
- "nviews": "$1 {{PLURAL:$1|pregled|pregleda|pregleda}}",
"nimagelinks": "Koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
"ntransclusions": "koristi se na $1 {{PLURAL:$1|stranici|stranice|stranica}}",
"specialpage-empty": "Nema rezultata za ovaj izveštaj.",
"content-model-css": "CSS",
"content-json-empty-object": "Tomt objekt",
"content-json-empty-array": "Tomt fält",
+ "duplicate-args-warning": "<strong>Varning:</strong> [[:$1]] anropar [[:$2]] med mer än ett värde för \"$3\"-parametern. Endast det sista värdet kommer att användas.",
"duplicate-args-category": "Sidor som använder upprepade argument i mallanrop",
"duplicate-args-category-desc": "Sidan innehåller mallanrop som använder repeterade argument, så som <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> eller <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
"expensive-parserfunction-warning": "Varning: Denna sida innehåller för många anrop av resurskrävande parserfunktioner.\n\nAntalet anrop får vara högst $2, nu görs {{PLURAL:$1|$1 anrop}}",
"badsig": "Det är något fel med råsignaturen, kontrollera HTML-koden.",
"badsiglength": "Din signatur är för lång.\nDen får inte vara längre än $1 {{PLURAL:$1|tecken|tecken}}.",
"yourgender": "Hur vill du att andra refererar till dig?",
- "gender-unknown": "Jag föredrar att inte uppge det",
+ "gender-unknown": "När jag omnämns ska mjukvaran använda könsneutrala ord närhelst det är möjligt",
"gender-male": "Han redigerar wikisidor",
"gender-female": "Hon redigerar wikisidor",
"prefs-help-gender": "Denna inställning är valfri.\nProgramvaran använder detta värde för att adressera dig till andra med rätt genus. Denna information kommer att vara offentlig.",
"uploaded-hostile-svg": "Hittade osäker CSS i den uppladdade filens stilelement.",
"uploaded-href-unsafe-target-svg": "Hittade href till ett osäkert mål <code><$1 $2=\"$3\"></code> i den uppladdade SVG-filen.",
"uploaded-animate-svg": "Hittades taggen \"animate\" som kan ändra href med hjälp av attributen \"from\" <code><$1 $2=\"$3\"></code> i den uppladdade SVG-filen.",
+ "uploaded-setting-href-svg": "Användning av taggen \"set\" för att lägga till attributen \"href\" till överordnade element blockeras.",
"uploaded-image-filter-svg": "Hittade bildfilter med URL: <code><$1 $2=\"$3\"></code> i den uppladdade SVG-filen.",
"uploadscriptednamespace": "Denna SVG-fil innehåller den ogiltiga namnrymden \"$1\".",
"uploadinvalidxml": "XML-koden i den uppladdade filen kunde inte tolkas.",
"nmembers": "$1 {{PLURAL:$1|medlem|medlemmar}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|medlem|medlemmar}}",
"nrevisions": "$1 {{PLURAL:$1|version|versioner}}",
- "nviews": "$1 {{PLURAL:$1|visning|visningar}}",
"nimagelinks": "Används på $1 {{PLURAL:$1|sida|sidor}}",
"ntransclusions": "används på $1 {{PLURAL:$1|sida|sidor}}",
"specialpage-empty": "Det finns inga resultat för denna rapport.",
"nmembers": "{{PLURAL:$1|üye|üye}}",
"nmemberschanged": "$1 → $2 {{PLURAL:$2|üye|üye}}",
"nrevisions": "{{PLURAL:$1|değişiklik|değişiklikler}}",
- "nviews": "$1 {{PLURAL:$1|görünüm|görünüm}}",
"nimagelinks": "$1 {{PLURAL:$1|sayfada|sayfada}} kullanılıyor",
"ntransclusions": "$1 {{PLURAL:$1|sayfada|sayfada}} kullanılıyor",
"specialpage-empty": "Bu rapor için hiç sonuç yok.",
"prefs-displayrc": "Tasvirlash moslamalari",
"prefs-displaywatchlist": "Tasvirlash moslamalari",
"prefs-diffs": "Versiyalar farqi",
- "userrights": "Foydalanuvchining huquqlarini boshqarish",
+ "userrights": "Foydalanuvchi huquqlarini oʻzgartirish",
"userrights-user-editname": "Foydalanuvchi nomi:",
"editusergroup": "Guruhlardagi aʼzoligini oʻzgartirish",
"userrights-groupsmember": "Aʼzolik:",
"rcshowhidebots": "Botlarni $1",
"rcshowhidebots-show": "koʻrsat",
"rcshowhidebots-hide": "yashir",
- "rcshowhideliu": "Roʻyxatdan oʻtgan foydalanuvchilarni $1",
+ "rcshowhideliu": "Roʻyxatdan oʻtganlarni $1",
"rcshowhideliu-show": "koʻrsat",
"rcshowhideliu-hide": "yashir",
- "rcshowhideanons": "Anonim foydalanuvchilarni $1",
+ "rcshowhideanons": "Anonimlarni $1",
"rcshowhideanons-show": "koʻrsat",
"rcshowhideanons-hide": "yashir",
"rcshowhidepatr": "Tekshirilgan tahrirlarni $1",
"filedelete-intro": "Siz ushbu faylni — <strong>[[Media:$1|$1]]</strong> va uning tarixini butunlay oʻchirib tashlamoqchi boʻlyapsiz.",
"filedelete-comment": "Sabab:",
"filedelete-submit": "O‘chirish",
+ "filedelete-success": "<strong>$1</strong> oʻchirildi.",
"filedelete-reason-dropdown": "* Umumiy sabablar\n** mualliflik huquqlari buzilyapti\n** mavjud faylning nusxasi",
"mimetype": "MIME-tur:",
"download": "yuklash",
"sp-contributions-uploads": "yuklamalar",
"sp-contributions-logs": "qaydlar",
"sp-contributions-talk": "munozara",
- "sp-contributions-userrights": "foydalanuvchining huquqlarini boshqarish",
+ "sp-contributions-userrights": "huquqlarini oʻzgartirish",
"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:",
"nmembers": "$1个成员",
"nmemberschanged": "$1 → $2个成员",
"nrevisions": "$1个版本",
- "nviews": "$1次浏览",
"nimagelinks": "用于$1个页面中",
"ntransclusions": "用于$1个页面中",
"specialpage-empty": "此报告无结果。",
"nmembers": "$1 個成員",
"nmemberschanged": "$1 → $2 個成員",
"nrevisions": "$1 次修訂",
- "nviews": "$1 次檢視",
"nimagelinks": "被 $1 個頁面使用",
"ntransclusions": "被 $1 個頁面使用",
"specialpage-empty": "此報表無查無任何結果。",
'PageLanguage' => array( 'PageLanguage' ),
'PasswordReset' => array( 'PasswordReset' ),
'PermanentLink' => array( 'PermanentLink', 'PermaLink' ),
- 'Popularpages' => array( 'PopularPages' ),
'Preferences' => array( 'Preferences' ),
'Prefixindex' => array( 'PrefixIndex' ),
'Protectedpages' => array( 'ProtectedPages' ),
}
$t_start = microtime( true );
$fsFiles = $src->getLocalReferenceMulti( array( 'srcs' => $srcPaths, 'latest' => 1 ) );
- $ellapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
- $this->output( "\n\tDownloaded these file(s) [{$ellapsed_ms}ms]:\n\t" .
+ $elapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
+ $this->output( "\n\tDownloaded these file(s) [{$elapsed_ms}ms]:\n\t" .
implode( "\n\t", $srcPaths ) . "\n\n" );
}
sleep( 10 ); // wait and retry copy again
$status = $dst->doQuickOperations( $ops, array( 'bypassReadOnly' => 1 ) );
}
- $ellapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
+ $elapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
if ( !$status->isOK() ) {
$this->error( print_r( $status->getErrorsArray(), true ) );
$this->error( "$wikiId: Could not copy file batch.", 1 ); // die
} elseif ( count( $copiedRel ) ) {
- $this->output( "\n\tCopied these file(s) [{$ellapsed_ms}ms]:\n\t" .
+ $this->output( "\n\tCopied these file(s) [{$elapsed_ms}ms]:\n\t" .
implode( "\n\t", $copiedRel ) . "\n\n" );
}
}
sleep( 10 ); // wait and retry copy again
$status = $dst->doQuickOperations( $ops, array( 'bypassReadOnly' => 1 ) );
}
- $ellapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
+ $elapsed_ms = floor( ( microtime( true ) - $t_start ) * 1000 );
if ( !$status->isOK() ) {
$this->error( print_r( $status->getErrorsArray(), true ) );
$this->error( "$wikiId: Could not delete file batch.", 1 ); // die
} elseif ( count( $deletedRel ) ) {
- $this->output( "\n\tDeleted these file(s) [{$ellapsed_ms}ms]:\n\t" .
+ $this->output( "\n\tDeleted these file(s) [{$elapsed_ms}ms]:\n\t" .
implode( "\n\t", $deletedRel ) . "\n\n" );
}
}
excludeuser
executables
exempt
+exiftool
existingwiki
exists
exiv
pointsize
poolcounter
popts
-popularpages
portlet
portlets
posplus
"classes": [
"mw.Title",
"mw.Uri",
+ "mw.RegExp",
"mw.messagePoster.*",
"mw.notification",
"mw.Notification_",
'scripts' => 'resources/src/jquery/jquery.accessKeyLabel.js',
'dependencies' => array(
'jquery.client',
- 'jquery.mwExtension',
+ 'mediawiki.RegExp',
),
'messages' => array( 'brackets', 'word-separator' ),
'targets' => array( 'mobile', 'desktop' ),
),
'jquery.highlightText' => array(
'scripts' => 'resources/src/jquery/jquery.highlightText.js',
- 'dependencies' => 'jquery.mwExtension',
+ 'dependencies' => 'mediawiki.RegExp',
'targets' => array( 'desktop', 'mobile' ),
),
'jquery.hoverIntent' => array(
'styles' => 'resources/src/jquery/jquery.tablesorter.css',
'messages' => array( 'sort-descending', 'sort-ascending' ),
'dependencies' => array(
- 'jquery.mwExtension',
+ 'mediawiki.RegExp',
'mediawiki.language.months',
),
),
'mediawiki.htmlform' => array(
'scripts' => 'resources/src/mediawiki/mediawiki.htmlform.js',
'dependencies' => array(
- 'jquery.mwExtension',
+ 'mediawiki.RegExp',
'jquery.byteLimit',
),
'messages' => array(
'scripts' => 'resources/src/mediawiki/mediawiki.inspect.js',
'dependencies' => array(
'jquery.byteLength',
+ 'mediawiki.RegExp',
'json',
),
'targets' => array( 'desktop', 'mobile' ),
'scripts' => 'resources/src/mediawiki/mediawiki.notify.js',
'targets' => array( 'desktop', 'mobile' ),
),
+ 'mediawiki.RegExp' => array(
+ 'scripts' => 'resources/src/mediawiki/mediawiki.RegExp.js',
+ 'targets' => array( 'desktop', 'mobile' ),
+ ),
'mediawiki.pager.tablePager' => array(
'styles' => 'resources/src/mediawiki/mediawiki.pager.tablePager.less',
'position' => 'top',
'scripts' => 'resources/src/mediawiki/mediawiki.util.js',
'dependencies' => array(
'jquery.accessKeyLabel',
- 'jquery.mwExtension',
+ 'mediawiki.RegExp',
'mediawiki.notify',
),
'position' => 'top', // For $wgPreloadJavaScriptMwUtil
'mediawiki.page.startup',
'mediawiki.util',
'jquery.accessKeyLabel',
- 'jquery.mwExtension',
+ 'mediawiki.RegExp',
),
'messages' => array(
'watch',
*/
function updateTooltipOnElement( element, titleElement ) {
var array = ( mw.msg( 'word-separator' ) + mw.msg( 'brackets' ) ).split( '$1' ),
- regexp = new RegExp( $.map( array, $.escapeRE ).join( '.*?' ) + '$' ),
+ regexp = new RegExp( $.map( array, mw.RegExp.escape ).join( '.*?' ) + '$' ),
oldTitle = titleElement.title,
rawTitle = oldTitle.replace( regexp, '' ),
newTitle = rawTitle,
* TODO: Add a function for restoring the previous text.
* TODO: Accept mappings for converting shortcuts like WP: to Wikipedia:.
*/
-( function ( $ ) {
+( function ( $, mw ) {
$.highlightText = {
// non latin characters can make regex think a new word has begun: do not use \b
// http://stackoverflow.com/questions/3787072/regex-wordwrap-with-utf8-characters-in-js
// look for an occurrence of our pattern and store the starting position
- match = node.data.match( new RegExp( '(^|\\s)' + $.escapeRE( pat ), 'i' ) );
+ match = node.data.match( new RegExp( '(^|\\s)' + mw.RegExp.escape( pat ), 'i' ) );
if ( match ) {
pos = match.index + match[1].length; // include length of any matched spaces
// create the span wrapper for the matched text
} );
};
-}( jQuery ) );
+}( jQuery, mediaWiki ) );
/*
* JavaScript backwards-compatibility alternatives and other convenience functions
+ *
+ * @deprecated since 1.26 Dated collection of miscellaneous utilities. Methods are
+ * either trivially inline, obsolete, or have a better place elsewhere.
*/
-( function ( $ ) {
-
- $.extend( {
+( function ( $, mw ) {
+ $.each( {
trimLeft: function ( str ) {
return str === null ? '' : str.toString().replace( /^\s+/, '' );
},
ucFirst: function ( str ) {
return str.charAt( 0 ).toUpperCase() + str.slice( 1 );
},
- escapeRE: function ( str ) {
- return str.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' );
- },
isDomElement: function ( el ) {
return !!el && !!el.nodeType;
},
return true;
}
// the for-loop could potentially contain prototypes
- // to avoid that we check it's length first
+ // to avoid that we check its length first
if ( v.length === 0 ) {
return true;
}
}
return true;
}
+ }, function ( key, value ) {
+ mw.log.deprecate( $, key, value );
} );
-}( jQuery ) );
+ mw.log.deprecate( $, 'escapeRE', function ( str ) {
+ return str.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' );
+ }, 'Use mediawiki.RegExp instead.' );
+
+} )( jQuery, mediaWiki );
// Construct regex for number identification
for ( i = 0; i < ascii.length; i++ ) {
ts.transformTable[localised[i]] = ascii[i];
- digits.push( $.escapeRE( localised[i] ) );
+ digits.push( mw.RegExp.escape( localised[i] ) );
}
}
digitClass = '[' + digits.join( '', digits ) + ']';
for ( i = 0; i < 12; i++ ) {
name = mw.language.months.names[i].toLowerCase();
ts.monthNames[name] = i + 1;
- regex.push( $.escapeRE( name ) );
+ regex.push( mw.RegExp.escape( name ) );
name = mw.language.months.genitive[i].toLowerCase();
ts.monthNames[name] = i + 1;
- regex.push( $.escapeRE( name ) );
+ regex.push( mw.RegExp.escape( name ) );
name = mw.language.months.abbrev[i].toLowerCase().replace( '.', '' );
ts.monthNames[name] = i + 1;
- regex.push( $.escapeRE( name ) );
+ regex.push( mw.RegExp.escape( name ) );
}
// Build piped string
if ( actionPaths.hasOwnProperty( key ) ) {
parts = actionPaths[key].split( '$1' );
for ( i = 0; i < parts.length; i++ ) {
- parts[i] = $.escapeRE( parts[i] );
+ parts[i] = mw.RegExp.escape( parts[i] );
}
m = new RegExp( parts.join( '(.+)' ) ).exec( url );
if ( m && m[1] ) {
fname = fname.replace( / /g, '_' );
// Capitalise first letter if needed
if ( mw.config.get( 'wgCapitalizeUploads' ) ) {
- fname = fname.charAt( 0 ).toUpperCase().concat( fname.slice( 1 ) );
+ fname = fname[0].toUpperCase() + fname.slice( 1 );
}
// Output result
}
// Dont send leading ':' to open search
- if ( value.charAt( 0 ) === ':' ) {
+ if ( value[0] === ':' ) {
value = value.slice( 1 );
}
--- /dev/null
+( function ( mw ) {
+ /**
+ * @class mw.RegExp
+ */
+ mw.RegExp = {
+ /**
+ * Escape string for safe inclusion in regular expression
+ *
+ * The following characters are escaped:
+ *
+ * \ { } ( ) | . ? * + - ^ $ [ ]
+ *
+ * @since 1.26
+ * @static
+ * @param {string} str String to escape
+ * @return {string} Escaped string
+ */
+ escape: function ( str ) {
+ return str.replace( /([\\{}()|.?*+\-\^$\[\]])/g, '\\$1' );
+ }
+ };
+}( mediaWiki ) );
.replace( rUnderscoreTrim, '' );
// Process initial colon
- if ( title !== '' && title.charAt( 0 ) === ':' ) {
+ if ( title !== '' && title[0] === ':' ) {
// Initial colon means main namespace instead of specified default
namespace = NS_MAIN;
title = title
}
// Any remaining initial :s are illegal.
- if ( title.charAt( 0 ) === ':' ) {
+ if ( title[0] === ':' ) {
return false;
}
title = $.trim( title.replace( rWhitespace, ' ' ) );
// Process initial colon
- if ( title !== '' && title.charAt( 0 ) === ':' ) {
+ if ( title !== '' && title[0] === ':' ) {
// Initial colon means main namespace instead of specified default
namespace = NS_MAIN;
title = title
getName: function () {
if ( $.inArray( this.namespace, mw.config.get( 'wgCaseSensitiveNamespaces' ) ) !== -1 ) {
return this.title;
- } else {
- return $.ucFirst( this.title );
}
+ return this.title[0].toUpperCase() + this.title.slice( 1 );
},
/**
this.port = defaultUri.port;
}
}
- if ( this.path && this.path.charAt( 0 ) !== '/' ) {
+ if ( this.path && this.path[0] !== '/' ) {
// A real relative URL, relative to defaultUri.path. We can't really handle that since we cannot
// figure out whether the last path component of defaultUri.path is a directory or a file.
throw new Error( 'Bad constructor arguments' );
$ul = $( this ).prev( 'ul.mw-htmlform-cloner-ul' );
html = $ul.data( 'template' ).replace(
- new RegExp( $.escapeRE( $ul.data( 'uniqueId' ) ), 'g' ),
+ new RegExp( mw.RegExp.escape( $ul.data( 'uniqueId' ) ), 'g' ),
'clone' + ( ++cloneCounter )
);
*/
grep: function ( pattern ) {
if ( typeof pattern.test !== 'function' ) {
- // Based on Y.Escape.regex from YUI v3.15.0
- pattern = new RegExp( pattern.replace( /[\-$\^*()+\[\]{}|\\,.?\s]/g, '\\$&' ), 'g' );
+ pattern = new RegExp( mw.RegExp.escape( pattern ), 'g' );
}
return $.grep( inspect.getLoadedModules(), function ( moduleName ) {
list: 'allusers',
// Prefix of list=allusers is case sensitive. Normalise first
// character to uppercase so that "fo" may yield "Foo".
- auprefix: userInput.charAt( 0 ).toUpperCase() + userInput.slice( 1 ),
+ auprefix: userInput[0].toUpperCase() + userInput.slice( 1 ),
aulimit: maxRows
} ).done( function ( data ) {
var users = $.map( data.query.allusers, function ( userObj ) {
url = location.href;
}
// Get last match, stop at hash
- var re = new RegExp( '^[^#]*[&?]' + $.escapeRE( param ) + '=([^&#]*)' ),
+ var re = new RegExp( '^[^#]*[&?]' + mw.RegExp.escape( param ) + '=([^&#]*)' ),
m = re.exec( url );
if ( m ) {
// Beware that decodeURIComponent is not required to understand '+'
</td><td>
<template lineStart="1"><title>int:Nstab-wp</title></template>
</td></tr><tr><td>
-[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nviews&action=edit nviews]<br>
-[[MediaWiki_talk:Nviews|Talk]]
-</td><td>
-$1 views
-</td><td>
-<template lineStart="1"><title>int:Nviews</title></template>
-</td></tr><tr><td>
[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ok&action=edit ok]<br>
[[MediaWiki_talk:Ok|Talk]]
</td><td>
</td><td>
<template lineStart="1"><title>int:Personaltools</title></template>
</td></tr><tr><td>
-[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Popularpages&action=edit popularpages]<br>
-[[MediaWiki_talk:Popularpages|Talk]]
-</td><td>
-Popular pages
-</td><td>
-<template lineStart="1"><title>int:Popularpages</title></template>
-</td></tr><tr><td>
[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal&action=edit portal]<br>
[[MediaWiki_talk:Portal|Talk]]
</td><td>
</td><td>
{{int:Nstab-wp}}
</td></tr><tr><td>
-[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nviews&action=edit nviews]<br>
-[[MediaWiki_talk:Nviews|Talk]]
-</td><td>
-$1 views
-</td><td>
-{{int:Nviews}}
-</td></tr><tr><td>
[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ok&action=edit ok]<br>
[[MediaWiki_talk:Ok|Talk]]
</td><td>
</td><td>
{{int:Personaltools}}
</td></tr><tr><td>
-[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Popularpages&action=edit popularpages]<br>
-[[MediaWiki_talk:Popularpages|Talk]]
-</td><td>
-Popular pages
-</td><td>
-{{int:Popularpages}}
-</td></tr><tr><td>
[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal&action=edit portal]<br>
[[MediaWiki_talk:Portal|Talk]]
</td><td>
$this->assertEquals( $expected, $actual, $description );
}
+ public function wfWikiID() {
+ $this->setMwGlobals( array(
+ 'wgDBname' => 'example',
+ 'wgDBprefix' => '',
+ ) );
+ $this->assertEquals(
+ wfWikiID(),
+ 'example'
+ );
+
+ $this->setMwGlobals( array(
+ 'wgDBname' => 'example',
+ 'wgDBprefix' => 'mw_',
+ ) );
+ $this->assertEquals(
+ wfWikiID(),
+ 'example-mw_'
+ );
+ }
+
+ public function testWfMemcKey() {
+ // Just assert the exact output so we can catch unintentional changes to key
+ // construction, which would effectively invalidate all existing cache.
+
+ $this->setMwGlobals( array(
+ 'wgCachePrefix' => false,
+ 'wgDBname' => 'example',
+ 'wgDBprefix' => '',
+ ) );
+ $this->assertEquals(
+ wfMemcKey( 'foo', '123', 'bar' ),
+ 'example:foo:123:bar'
+ );
+
+ $this->setMwGlobals( array(
+ 'wgCachePrefix' => false,
+ 'wgDBname' => 'example',
+ 'wgDBprefix' => 'mw_',
+ ) );
+ $this->assertEquals(
+ wfMemcKey( 'foo', '123', 'bar' ),
+ 'example-mw_:foo:123:bar'
+ );
+
+ $this->setMwGlobals( array(
+ 'wgCachePrefix' => 'custom',
+ 'wgDBname' => 'example',
+ 'wgDBprefix' => 'mw_',
+ ) );
+ $this->assertEquals(
+ wfMemcKey( 'foo', '123', 'bar' ),
+ 'custom:foo:123:bar'
+ );
+ }
+
+ public function testWfForeignMemcKey() {
+ $this->setMwGlobals( array(
+ 'wgCachePrefix' => false,
+ 'wgDBname' => 'example',
+ 'wgDBprefix' => '',
+ ) );
+ $local = wfMemcKey( 'foo', 'bar' );
+
+ $this->setMwGlobals( array(
+ 'wgDBname' => 'other',
+ 'wgDBprefix' => 'mw_',
+ ) );
+ $this->assertEquals(
+ wfForeignMemcKey( 'example', '', 'foo', 'bar' ),
+ $local,
+ 'Match output of wfMemcKey from local wiki'
+ );
+ }
+
+ public function testWfGlobalCacheKey() {
+ $this->setMwGlobals( array(
+ 'wgCachePrefix' => 'ignored',
+ 'wgDBname' => 'example',
+ 'wgDBprefix' => ''
+ ) );
+ $one = wfGlobalCacheKey( 'some', 'thing' );
+ $this->assertEquals(
+ $one,
+ 'global:some:thing'
+ );
+
+ $this->setMwGlobals( array(
+ 'wgDBname' => 'other',
+ 'wgDBprefix' => 'mw_'
+ ) );
+ $two = wfGlobalCacheKey( 'some', 'thing' );
+
+ $this->assertEquals(
+ $one,
+ $two,
+ 'Not fragmented by wiki id'
+ );
+ }
+
public static function provideWfShellWikiCmdList() {
global $wgPhpCli;
--- /dev/null
+<?php
+
+class MediaWikiTest extends MediaWikiTestCase {
+ protected function setUp() {
+ parent::setUp();
+
+ $this->setMwGlobals( array(
+ 'wgServer' => 'http://example.org',
+ 'wgScriptPath' => '/w',
+ 'wgScript' => '/w/index.php',
+ 'wgArticlePath' => '/wiki/$1',
+ 'wgActionPaths' => array(),
+ ) );
+ }
+
+ public static function provideTryNormaliseRedirect() {
+ return array(
+ array(
+ // View: Canonical
+ 'url' => 'http://example.org/wiki/Foo_Bar',
+ 'query' => array(),
+ 'title' => 'Foo_Bar',
+ 'redirect' => false,
+ ),
+ array(
+ // View: Escaped title
+ 'url' => 'http://example.org/wiki/Foo%20Bar',
+ 'query' => array(),
+ 'title' => 'Foo_Bar',
+ 'redirect' => 'http://example.org/wiki/Foo_Bar',
+ ),
+ array(
+ // View: Script path
+ 'url' => 'http://example.org/w/index.php?title=Foo_Bar',
+ 'query' => array( 'title' => 'Foo_Bar' ),
+ 'title' => 'Foo_Bar',
+ 'redirect' => false,
+ ),
+ array(
+ // View: Script path with implicit title from page id
+ 'url' => 'http://example.org/w/index.php?curid=123',
+ 'query' => array( 'curid' => '123' ),
+ 'title' => 'Foo_Bar',
+ 'redirect' => false,
+ ),
+ array(
+ // View: Script path with implicit title from revision id
+ 'url' => 'http://example.org/w/index.php?oldid=123',
+ 'query' => array( 'oldid' => '123' ),
+ 'title' => 'Foo_Bar',
+ 'redirect' => false,
+ ),
+ array(
+ // View: Script path without title
+ 'url' => 'http://example.org/w/index.php',
+ 'query' => array(),
+ 'title' => 'Main_Page',
+ 'redirect' => 'http://example.org/wiki/Main_Page',
+ ),
+ array(
+ // View: Script path with empty title
+ 'url' => 'http://example.org/w/index.php?title=',
+ 'query' => array( 'title' => '' ),
+ 'title' => 'Main_Page',
+ 'redirect' => 'http://example.org/wiki/Main_Page',
+ ),
+ array(
+ // View: Index with escaped title
+ 'url' => 'http://example.org/w/index.php?title=Foo%20Bar',
+ 'query' => array( 'title' => 'Foo Bar' ),
+ 'title' => 'Foo_Bar',
+ 'redirect' => 'http://example.org/wiki/Foo_Bar',
+ ),
+ array(
+ // View: Script path with escaped title
+ 'url' => 'http://example.org/w/?title=Foo_Bar',
+ 'query' => array( 'title' => 'Foo_Bar' ),
+ 'title' => 'Foo_Bar',
+ 'redirect' => false,
+ ),
+ array(
+ // View: Root path with escaped title
+ 'url' => 'http://example.org/?title=Foo_Bar',
+ 'query' => array( 'title' => 'Foo_Bar' ),
+ 'title' => 'Foo_Bar',
+ 'redirect' => false,
+ ),
+ array(
+ // View: Canonical with redundant query
+ 'url' => 'http://example.org/wiki/Foo_Bar?action=view',
+ 'query' => array( 'action' => 'view' ),
+ 'title' => 'Foo_Bar',
+ 'redirect' => false,
+ ),
+ array(
+ // Edit: Canonical view url with action query
+ 'url' => 'http://example.org/wiki/Foo_Bar?action=edit',
+ 'query' => array( 'action' => 'edit' ),
+ 'title' => 'Foo_Bar',
+ 'redirect' => false,
+ ),
+ array(
+ // View: Index with action query
+ 'url' => 'http://example.org/w/index.php?title=Foo_Bar&action=view',
+ 'query' => array( 'title' => 'Foo_Bar', 'action' => 'view' ),
+ 'title' => 'Foo_Bar',
+ 'redirect' => false,
+ ),
+ array(
+ // Edit: Index with action query
+ 'url' => 'http://example.org/w/index.php?title=Foo_Bar&action=edit',
+ 'query' => array( 'title' => 'Foo_Bar', 'action' => 'edit' ),
+ 'title' => 'Foo_Bar',
+ 'redirect' => false,
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider provideTryNormaliseRedirect
+ * @covers MediaWiki::tryNormaliseRedirect
+ */
+ public function testTryNormaliseRedirect( $url, $query, $title, $expectedRedirect = false ) {
+ // Set SERVER because interpolateTitle() doesn't use getRequestURL(),
+ // whereas tryNormaliseRedirect does().
+ $_SERVER['REQUEST_URI'] = $url;
+
+ $req = new FauxRequest( $query );
+ $req->setRequestURL( $url );
+ // This adds a virtual 'title' query parameter. Normally called from Setup.php
+ $req->interpolateTitle();
+
+ $titleObj = Title::newFromText( $title );
+
+ // Set global context since some involved code paths don't yet have context
+ $context = RequestContext::getMain();
+ $context->setRequest( $req );
+ $context->setTitle( $titleObj );
+
+ $mw = new MediaWiki( $context );
+
+ $method = new ReflectionMethod( $mw, 'tryNormaliseRedirect' );
+ $method->setAccessible( true );
+ $ret = $method->invoke( $mw, $titleObj );
+
+ $this->assertEquals(
+ $expectedRedirect !== false,
+ $ret,
+ 'Return true only when redirecting'
+ );
+
+ $this->assertEquals(
+ $expectedRedirect ?: '',
+ $context->getOutput()->getRedirect()
+ );
+ }
+}
/**
* @group Media
*/
-class ExifBitmapTest extends MediaWikiTestCase {
+class ExifBitmapTest extends MediaWikiMediaTestCase {
/**
* @var ExifBitmapHandler
$res = $this->handler->convertMetadataVersion( $metadata, 1 );
$this->assertEquals( $expected, $res );
}
+
+ /**
+ * @dataProvider provideSwappingICCProfile
+ * @covers BitmapHandler::swapICCProfile
+ */
+ public function testSwappingICCProfile( $sourceFilename, $controlFilename, $newProfileFilename, $oldProfileName ) {
+ global $wgExiftool;
+
+ if ( !$wgExiftool || !is_file( $wgExiftool ) ) {
+ $this->markTestSkipped( "Exiftool not installed, cannot test ICC profile swapping" );
+ }
+
+ $this->setMwGlobals( 'wgUseTinyRGBForJPGThumbnails', true );
+
+ $sourceFilepath = $this->filePath . $sourceFilename;
+ $controlFilepath = $this->filePath . $controlFilename;
+ $profileFilepath = $this->filePath . $newProfileFilename;
+ $filepath = $this->getNewTempFile();
+
+ copy( $sourceFilepath, $filepath );
+
+ $file = $this->dataFile( $sourceFilename, 'image/jpeg' );
+ $this->handler->swapICCProfile( $filepath, $oldProfileName, $profileFilepath );
+
+ $this->assertEquals( sha1( file_get_contents( $filepath ) ), sha1( file_get_contents( $controlFilepath ) ) );
+ }
+
+ public function provideSwappingICCProfile() {
+ return array(
+ // File with sRGB should end up with TinyRGB
+ array( 'srgb.jpg', 'tinyrgb.jpg', 'tinyrgb.icc', 'IEC 61966-2.1 Default RGB colour space - sRGB' ),
+ // File with TinyRGB should be left unchanged
+ array( 'tinyrgb.jpg', 'tinyrgb.jpg', 'tinyrgb.icc', 'IEC 61966-2.1 Default RGB colour space - sRGB' ),
+ // File with no profile should be left unchanged
+ array( 'test.jpg', 'test.jpg', 'tinyrgb.icc', 'IEC 61966-2.1 Default RGB colour space - sRGB' )
+ );
+ }
}
'tests/qunit/suites/resources/mediawiki/mediawiki.jqueryMsg.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.messagePoster.factory.test.js',
+ 'tests/qunit/suites/resources/mediawiki/mediawiki.RegExp.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.template.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.test.js',
'tests/qunit/suites/resources/mediawiki/mediawiki.Title.test.js',
'mediawiki.api.watch',
'mediawiki.jqueryMsg',
'mediawiki.messagePoster',
+ 'mediawiki.RegExp',
'mediawiki.Title',
'mediawiki.toc',
'mediawiki.Uri',
( function ( $ ) {
- QUnit.module( 'jquery.mwExtension', QUnit.newMwEnvironment() );
+ QUnit.module( 'jquery.mwExtension', QUnit.newMwEnvironment( {
+ // This entire module is deprecated.
+ // Surpress deprecation warnings in test output.
+ setup: function () {
+ this.suppressWarnings();
+ },
+ teardown: function () {
+ this.restoreWarnings();
+ }
+ }) );
QUnit.test( 'String functions', 7, function ( assert ) {
assert.equal( $.trimLeft( ' foo bar ' ), 'foo bar ', 'trimLeft' );
--- /dev/null
+( function ( mw, $ ) {
+ QUnit.module( 'mediawiki.RegExp' );
+
+ QUnit.test( 'escape', 16, function ( assert ) {
+ var specials, normal;
+
+ specials = [
+ '\\',
+ '{',
+ '}',
+ '(',
+ ')',
+ '[',
+ ']',
+ '|',
+ '.',
+ '?',
+ '*',
+ '+',
+ '-',
+ '^',
+ '$'
+ ];
+
+ normal = [
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+ 'abcdefghijklmnopqrstuvwxyz',
+ '0123456789'
+ ].join( '' );
+
+ $.each( specials, function ( i, str ) {
+ assert.propEqual( str.match( new RegExp( mw.RegExp.escape( str ) ) ), [ str ], 'Match ' + str );
+ } );
+
+ assert.equal( mw.RegExp.escape( normal ), normal, 'Alphanumerals are left alone' );
+ } );
+
+}( mediaWiki, jQuery ) );