private $mTarget = null;
/**
- * @var bool Whether parser output should contain table of contents
+ * @var bool Whether parser output contains a table of contents
*/
- private $mEnableTOC = true;
+ private $mEnableTOC = false;
/**
* @var bool Whether parser output should contain section edit links
$outputPage = $this;
Hooks::run( 'LanguageLinks', [ $this->getTitle(), &$this->mLanguageLinks, &$linkFlags ] );
Hooks::run( 'OutputPageParserOutput', [ &$outputPage, $parserOutput ] );
+
+ // This check must be after 'OutputPageParserOutput' runs in addParserOutputMetadata
+ // so that extensions may modify ParserOutput to toggle TOC.
+ // This cannot be moved to addParserOutputText because that is not
+ // called by EditPage for Preview.
+ if ( $parserOutput->getTOCEnabled() && $parserOutput->getTOCHTML() ) {
+ $this->mEnableTOC = true;
+ }
}
/**
*/
function addParserOutput( $parserOutput ) {
$this->addParserOutputMetadata( $parserOutput );
- $parserOutput->setTOCEnabled( $this->mEnableTOC );
// Touch section edit links only if not previously disabled
if ( $parserOutput->getEditSectionTokens() ) {
}
$sk = $this->getSkin();
- // add skin specific modules
- $modules = $sk->getDefaultModules();
-
- // Enforce various default modules for all pages and all skins
- $coreModules = [
- // Keep this list as small as possible
- 'site',
- 'mediawiki.page.startup',
- 'mediawiki.user',
- ];
-
- // Support for high-density display images if enabled
- if ( $config->get( 'ResponsiveImages' ) ) {
- $coreModules[] = 'mediawiki.hidpi';
- }
-
- $this->addModules( $coreModules );
- foreach ( $modules as $group ) {
+ foreach ( $sk->getDefaultModules() as $group ) {
$this->addModules( $group );
}
+
MWDebug::addModules( $this );
// Avoid PHP 7.1 warning of passing $this by reference
}
/**
- * Enables/disables TOC, doesn't override __NOTOC__
- * @param bool $flag
- * @since 1.22
- */
- public function enableTOC( $flag = true ) {
- $this->mEnableTOC = $flag;
- }
-
- /**
+ * Whether the output has a table of contents
* @return bool
* @since 1.22
*/
$revid = $revision ? $revision->getId() : null;
}
if ( $revid !== null ) {
- $key = self::getCacheKey( $title, $revid );
- ObjectCache::getMainWANInstance()->delete( $key );
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+ $key = self::getCacheKey( $cache, $title, $revid );
+ $cache->delete( $key );
}
}
protected function pageCounts( Page $page ) {
$fname = __METHOD__;
$config = $this->context->getConfig();
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
- return ObjectCache::getMainWANInstance()->getWithSetCallback(
- self::getCacheKey( $page->getTitle(), $page->getLatest() ),
+ return $cache->getWithSetCallback(
+ self::getCacheKey( $cache, $page->getTitle(), $page->getLatest() ),
WANObjectCache::TTL_WEEK,
function ( $oldValue, &$ttl, &$setOpts ) use ( $page, $config, $fname ) {
$title = $page->getTitle();
}
/**
+ * @param WANObjectCache $cache
* @param Title $title
* @param int $revId
* @return string
*/
- protected static function getCacheKey( Title $title, $revId ) {
- return wfMemcKey( 'infoaction', md5( $title->getPrefixedText() ), $revId, self::VERSION );
+ protected static function getCacheKey( WANObjectCache $cache, Title $title, $revId ) {
+ return $cache->makeKey( 'infoaction', md5( $title->getPrefixedText() ), $revId, self::VERSION );
}
}
* @file
*/
+use MediaWiki\MediaWikiServices;
+
/**
* @ingroup API
*/
$result_array['title'] = $titleObj->getPrefixedText();
$result_array['pageid'] = $pageid ?: $pageObj->getId();
+ if ( $params['disabletoc'] ) {
+ $p_result->setTOCEnabled( false );
+ }
+
+ if ( isset( $params['useskin'] ) ) {
+ $factory = MediaWikiServices::getInstance()->getSkinFactory();
+ $skin = $factory->makeSkin( Skin::normalizeKey( $params['useskin'] ) );
+ } else {
+ $skin = null;
+ }
+
+ $outputPage = null;
+ if ( $skin || isset( $prop['headhtml'] ) ) {
+ // Enabling the skin via 'useskin' or 'headhtml' gets OutputPage and
+ // Skin involved, which (among others) applies these hooks:
+ // - ParserOutputHooks
+ // - Hook: LanguageLinks
+ // - Hook: OutputPageParserOutput
+ $context = new DerivativeContext( $this->getContext() );
+ $context->setTitle( $titleObj );
+ $context->setWikiPage( $pageObj );
+
+ if ( $skin ) {
+ // Use the skin specified by 'useskin'
+ $context->setSkin( $skin );
+ // Context clones the skin, refetch to stay in sync. (T166022)
+ $skin = $context->getSkin();
+ }
+
+ $outputPage = new OutputPage( $context );
+ $outputPage->addParserOutputMetadata( $p_result );
+ $context->setOutput( $outputPage );
+
+ if ( $skin ) {
+ // Based on OutputPage::output()
+ foreach ( $skin->getDefaultModules() as $group ) {
+ $outputPage->addModules( $group );
+ }
+ }
+ }
+
if ( !is_null( $oldid ) ) {
$result_array['revid'] = intval( $oldid );
}
$result_array['redirects'] = $redirValues;
}
- if ( $params['disabletoc'] ) {
- $p_result->setTOCEnabled( false );
- }
-
if ( isset( $prop['text'] ) ) {
$result_array['text'] = $p_result->getText();
$result_array[ApiResult::META_BC_SUBELEMENTS][] = 'text';
}
if ( isset( $prop['langlinks'] ) ) {
- $langlinks = $p_result->getLanguageLinks();
-
- if ( $params['effectivelanglinks'] ) {
- // Link flags are ignored for now, but may in the future be
- // included in the result.
- $linkFlags = [];
- Hooks::run( 'LanguageLinks', [ $titleObj, &$langlinks, &$linkFlags ] );
+ if ( $skin ) {
+ $langlinks = $outputPage->getLanguageLinks();
+ } else {
+ $langlinks = $p_result->getLanguageLinks();
+ // The deprecated 'effectivelanglinks' option depredates OutputPage
+ // support via 'useskin'. If not already applied, then run just this
+ // one hook of OutputPage::addParserOutputMetadata here.
+ if ( $params['effectivelanglinks'] ) {
+ $linkFlags = [];
+ Hooks::run( 'LanguageLinks', [ $titleObj, &$langlinks, &$linkFlags ] );
+ }
}
- } else {
- $langlinks = false;
- }
- if ( isset( $prop['langlinks'] ) ) {
$result_array['langlinks'] = $this->formatLangLinks( $langlinks );
}
if ( isset( $prop['categories'] ) ) {
}
if ( isset( $prop['headitems'] ) ) {
- $result_array['headitems'] = $this->formatHeadItems( $p_result->getHeadItems() );
+ if ( $skin ) {
+ $result_array['headitems'] = $this->formatHeadItems( $outputPage->getHeadItemsArray() );
+ } else {
+ $result_array['headitems'] = $this->formatHeadItems( $p_result->getHeadItems() );
+ }
$this->addDeprecation( 'apiwarn-deprecation-parse-headitems', 'action=parse&prop=headitems' );
}
if ( isset( $prop['headhtml'] ) ) {
- $context = new DerivativeContext( $this->getContext() );
- $context->setTitle( $titleObj );
- $context->setWikiPage( $pageObj );
-
- // We need an OutputPage tied to $context, not to the
- // RequestContext at the root of the stack.
- $output = new OutputPage( $context );
- $output->addParserOutputMetadata( $p_result );
-
- $result_array['headhtml'] = $output->headElement( $context->getSkin() );
+ $result_array['headhtml'] = $outputPage->headElement( $context->getSkin() );
$result_array[ApiResult::META_BC_SUBELEMENTS][] = 'headhtml';
}
if ( isset( $prop['modules'] ) ) {
- $result_array['modules'] = array_values( array_unique( $p_result->getModules() ) );
- $result_array['modulescripts'] = array_values( array_unique( $p_result->getModuleScripts() ) );
- $result_array['modulestyles'] = array_values( array_unique( $p_result->getModuleStyles() ) );
+ if ( $skin ) {
+ $result_array['modules'] = $outputPage->getModules();
+ $result_array['modulescripts'] = $outputPage->getModuleScripts();
+ $result_array['modulestyles'] = $outputPage->getModuleStyles();
+ } else {
+ $result_array['modules'] = array_values( array_unique( $p_result->getModules() ) );
+ $result_array['modulescripts'] = array_values( array_unique( $p_result->getModuleScripts() ) );
+ $result_array['modulestyles'] = array_values( array_unique( $p_result->getModuleStyles() ) );
+ }
}
if ( isset( $prop['jsconfigvars'] ) ) {
- $result_array['jsconfigvars'] =
- ApiResult::addMetadataToResultVars( $p_result->getJsConfigVars() );
+ $jsconfigvars = $skin ? $outputPage->getJsConfigVars() : $p_result->getJsConfigVars();
+ $result_array['jsconfigvars'] = ApiResult::addMetadataToResultVars( $jsconfigvars );
}
if ( isset( $prop['encodedjsconfigvars'] ) ) {
+ $jsconfigvars = $skin ? $outputPage->getJsConfigVars() : $p_result->getJsConfigVars();
$result_array['encodedjsconfigvars'] = FormatJson::encode(
- $p_result->getJsConfigVars(), false, FormatJson::ALL_OK
+ $jsconfigvars,
+ false,
+ FormatJson::ALL_OK
);
$result_array[ApiResult::META_SUBELEMENTS][] = 'encodedjsconfigvars';
}
}
if ( isset( $prop['indicators'] ) ) {
- $result_array['indicators'] = (array)$p_result->getIndicators();
+ if ( $skin ) {
+ $result_array['indicators'] = (array)$outputPage->getIndicators();
+ } else {
+ $result_array['indicators'] = (array)$p_result->getIndicators();
+ }
ApiResult::setArrayType( $result_array['indicators'], 'BCkvp', 'name' );
}
'wrapoutputclass' => 'mw-parser-output',
'pst' => false,
'onlypst' => false,
- 'effectivelanglinks' => false,
+ 'effectivelanglinks' => [
+ ApiBase::PARAM_DFLT => false,
+ ApiBase::PARAM_DEPRECATED => true,
+ ],
'section' => null,
'sectiontitle' => [
ApiBase::PARAM_TYPE => 'string',
'preview' => false,
'sectionpreview' => false,
'disabletoc' => false,
+ 'useskin' => [
+ ApiBase::PARAM_TYPE => array_keys( Skin::getAllowedSkins() ),
+ ],
'contentformat' => [
ApiBase::PARAM_TYPE => ContentHandler::getAllContentFormats(),
],
"apihelp-parse-param-preview": "Im Vorschaumodus parsen.",
"apihelp-parse-param-sectionpreview": "Im Abschnitt Vorschau-Modus parsen (aktiviert ebenfalls den Vorschau-Modus)",
"apihelp-parse-param-disabletoc": "Inhaltsverzeichnis in der Ausgabe weglassen.",
+ "apihelp-parse-param-useskin": "Wendet die ausgewählte Benutzeroberfläche auf die Parserausgabe an. Kann Auswirkungen auf die folgenden Eigenschaften haben: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
"apihelp-parse-param-contentmodel": "Inhaltsmodell des eingegebenen Textes. Fall ausgelassen, muss $1title angegeben werden und Standardwert wird das Modell des angegebenen Titels. Ist nur gültig im Zusammenhang mit $1text.",
"apihelp-parse-example-page": "Eine Seite parsen.",
"apihelp-parse-example-text": "Wikitext parsen.",
"apihelp-parse-param-preview": "Parse in preview mode.",
"apihelp-parse-param-sectionpreview": "Parse in section preview mode (enables preview mode too).",
"apihelp-parse-param-disabletoc": "Omit table of contents in output.",
+ "apihelp-parse-param-useskin": "Apply the selected skin to the parser output. May affect the following properties: <kbd>langlinks</kbd>, <kbd>headitems</kbd>, <kbd>modules</kbd>, <kbd>jsconfigvars</kbd>, <kbd>indicators</kbd>.",
"apihelp-parse-param-contentformat": "Content serialization format used for the input text. Only valid when used with $1text.",
"apihelp-parse-param-contentmodel": "Content model of the input text. If omitted, $1title must be specified, and default will be the model of the specified title. Only valid when used with $1text.",
"apihelp-parse-example-page": "Parse a page.",
"apihelp-query+alltransclusions-example-unique": "Különböző beillesztett címek listázása.",
"apihelp-query+alltransclusions-example-unique-generator": "Az összes beillesztett lap lekérése, hiányzók megjelölése.",
"apihelp-query+alltransclusions-example-generator": "A beillesztéseket tartalmazó lapok lekérése.",
+ "apihelp-query+allusers-description": "Az összes regisztrált felhasználó visszaadása.",
+ "apihelp-query+allusers-param-from": "A felhasználók listázása ettől a névtől.",
+ "apihelp-query+allusers-param-to": "A felhasználók listázása eddig a névig.",
+ "apihelp-query+allusers-param-prefix": "Ezzel kezdődő nevű felhasználók keresése.",
+ "apihelp-query+allusers-param-dir": "A rendezés iránya.",
+ "apihelp-query+allusers-param-group": "Csak megadott csoportokba tartozó felhasználók visszaadása.",
+ "apihelp-query+allusers-param-excludegroup": "Csak a megadott csoportokba <em>nem</em> tartozó felhasználók visszaadása.",
+ "apihelp-query+allusers-param-rights": "Csak a megadott jogosultságokkal rendelkező felhasználók visszaadása. Ez nem tartalmazza azokat a jogosultságokat, amiket implicit vagy automatikusan hozzáadott csoportok adnak meg, mint a *, a user vagy az autoconfirmed.",
+ "apihelp-query+allusers-param-prop": "Visszaadandó információk:",
+ "apihelp-query+allusers-paramvalue-prop-blockinfo": "Információk a felhasználó jelenleg érvényes blokkjáról.",
+ "apihelp-query+allusers-paramvalue-prop-groups": "A felhasználó csoportjai. Ez több szervererőforrást használ, és lehet, hogy a limitnél kevesebb eredményt ad vissza.",
+ "apihelp-query+allusers-paramvalue-prop-implicitgroups": "A felhasználó automatikus csoportjai.",
+ "apihelp-query+allusers-paramvalue-prop-rights": "A felhasználó jogosultságai.",
+ "apihelp-query+allusers-paramvalue-prop-editcount": "A felhasználó szerkesztésszáma.",
+ "apihelp-query+allusers-paramvalue-prop-registration": "A felhasználó regisztrációjának időbélyege, ha elérhető (lehet üres).",
+ "apihelp-query+allusers-paramvalue-prop-centralids": "A felhasználó központi azonosítói és az összekapcsolási státusza.",
+ "apihelp-query+allusers-param-limit": "A visszaadandó felhasználónevek maximális száma.",
+ "apihelp-query+allusers-param-witheditsonly": "Csak szerkesztéssel rendelkező felhasználók listázása.",
+ "apihelp-query+allusers-param-activeusers": "Csak az elmúlt $1 napban aktív felhasználók listázása.",
+ "apihelp-query+allusers-param-attachedwiki": "Az <kbd>$1prop=centralids</kbd> paraméter mellett annak jelzése, hogy a felhasználó össze van-e kapcsolva a megadott wikivel.",
+ "apihelp-query+allusers-example-Y": "A felhasználók listázása <kbd>Y</kbd>-tól kezdve.",
+ "apihelp-query+authmanagerinfo-description": "Információk lekérése az aktuális azonosítási státuszról.",
+ "apihelp-query+authmanagerinfo-param-securitysensitiveoperation": "Annak ellenőrzése, hogy a felhasználó jelenlegi azonosítási státusza megfelelő-e a megadott biztonságkritikus művelethez.",
+ "apihelp-query+authmanagerinfo-param-requestsfor": "Információk lekérése a megadott azonosítási művelethez szükséges azonosítási kérésekről.",
"apihelp-query+deletedrevs-paraminfo-modes": "{{PLURAL:$1|Mód|Módok}}: $2",
"apihelp-query+imageinfo-paramvalue-prop-sha1": "SHA-1 hash hozzáadása a fájlhoz.",
"apihelp-query+imageinfo-paramvalue-prop-mime": "MIME-típus hozzáadása a fájlhoz.",
"apihelp-parse-param-preview": "{{doc-apihelp-param|parse|preview}}",
"apihelp-parse-param-sectionpreview": "{{doc-apihelp-param|parse|sectionpreview}}",
"apihelp-parse-param-disabletoc": "{{doc-apihelp-param|parse|disabletoc}}",
+ "apihelp-parse-param-useskin": "{{doc-apihelp-param|parse|useskin}}",
"apihelp-parse-param-contentformat": "{{doc-apihelp-param|parse|contentformat}}",
"apihelp-parse-param-contentmodel": "{{doc-apihelp-param|parse|contentmodel}}",
"apihelp-parse-example-page": "{{doc-apihelp-example|parse}}",
"apihelp-paraminfo-param-formatmodules": "Список названий форматных модулей (значения параметра <var>format</var>). Вместо этого используйте <var>$1modules</var>.",
"apihelp-paraminfo-example-1": "Показать информацию для <kbd>[[Special:ApiHelp/parse|action=parse]]</kbd>, <kbd>[[Special:ApiHelp/jsonfm|format=jsonfm]]</kbd>, <kbd>[[Special:ApiHelp/query+allpages|action=query&list=allpages]]</kbd>, и <kbd>[[Special:ApiHelp/query+siteinfo|action=query&meta=siteinfo]]</kbd>.",
"apihelp-paraminfo-example-2": "Показать информацию для всех подмодулей <kbd>[[Special:ApiHelp/query|action=query]]</kbd>.",
- "apihelp-parse-description": "Ð\90нализиÑ\80Ñ\83еÑ\82 Ñ\81одеÑ\80жимое и возвÑ\80аÑ\89аеÑ\82 Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82 анализа.\n\nСм. Ñ\80азлиÑ\87нÑ\8bе prop-модÑ\83ли <kbd>[[Special:ApiHelp/query|action=query]]</kbd> длÑ\8f полÑ\83Ñ\87ениÑ\8f инÑ\84оÑ\80маÑ\86ии о Ñ\82екÑ\83Ñ\89ей веÑ\80Ñ\81ии Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b.\n\nÐ\95Ñ\81Ñ\82Ñ\8c неÑ\81колÑ\8cко Ñ\81поÑ\81обов Ñ\83казаÑ\82Ñ\8c Ñ\82екÑ\81Ñ\82 длÑ\8f анализа:\n# Указать страницы или версию, используя <var>$1page</var>, <var>$1pageid</var> или <var>$1oldid</var>.\n# Явно указать содержимое, используя <var>$1text</var>, <var>$1title</var> и <var>$1contentmodel</var>.\n# Указать описание правки. Параметру <var>$1prop</var> должно быть присвоено пустое значение.",
+ "apihelp-parse-description": "Ð\9fаÑ\80Ñ\81иÑ\82 Ñ\81одеÑ\80жимое и возвÑ\80аÑ\89аеÑ\82 Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82 паÑ\80Ñ\81инга.\n\nСм. Ñ\80азлиÑ\87нÑ\8bе prop-модÑ\83ли <kbd>[[Special:ApiHelp/query|action=query]]</kbd> длÑ\8f полÑ\83Ñ\87ениÑ\8f инÑ\84оÑ\80маÑ\86ии о Ñ\82екÑ\83Ñ\89ей веÑ\80Ñ\81ии Ñ\81Ñ\82Ñ\80аниÑ\86Ñ\8b.\n\nÐ\95Ñ\81Ñ\82Ñ\8c неÑ\81колÑ\8cко Ñ\81поÑ\81обов Ñ\83казаÑ\82Ñ\8c Ñ\82екÑ\81Ñ\82 длÑ\8f паÑ\80Ñ\81инга:\n# Указать страницы или версию, используя <var>$1page</var>, <var>$1pageid</var> или <var>$1oldid</var>.\n# Явно указать содержимое, используя <var>$1text</var>, <var>$1title</var> и <var>$1contentmodel</var>.\n# Указать описание правки. Параметру <var>$1prop</var> должно быть присвоено пустое значение.",
"apihelp-parse-param-title": "Название страницы, которой принадлежит текст. Если опущено, должен быть указан параметр <var>$1contentmodel</var>, и в качестве заголовка будет использовано [[API]].",
- "apihelp-parse-param-text": "Ð\90нализиÑ\80Ñ\83емый текст. Используйте <var>$1title</var> или <var>$1contentmodel</var> для управления моделью содержимого.",
+ "apihelp-parse-param-text": "РаÑ\81паÑ\80Ñ\81иваемый текст. Используйте <var>$1title</var> или <var>$1contentmodel</var> для управления моделью содержимого.",
"apihelp-parse-param-summary": "Анализируемое описание правки.",
- "apihelp-parse-param-page": "Ð\90нализиÑ\80овать содержимое этой страницы. Не может быть использовано совместно с <var>$1text</var> и <var>$1title</var>.",
+ "apihelp-parse-param-page": "РаÑ\81паÑ\80Ñ\81ить содержимое этой страницы. Не может быть использовано совместно с <var>$1text</var> и <var>$1title</var>.",
"apihelp-parse-param-pageid": "Анализировать содержимое этой страницы. Переопределяет <var>$1page</var>.",
"apihelp-parse-param-redirects": "Если значением <var>$1page</var> или <var>$1pageid</var> указано перенаправление, разрешить его.",
- "apihelp-parse-param-oldid": "Ð\90нализиÑ\80овать содержимое этой версии. Переопределяет <var>$1page</var> и <var>$1pageid</var>.",
+ "apihelp-parse-param-oldid": "РаÑ\81паÑ\80Ñ\81ить содержимое этой версии. Переопределяет <var>$1page</var> и <var>$1pageid</var>.",
"apihelp-parse-param-prop": "Какую информацию включить:",
- "apihelp-parse-paramvalue-prop-text": "Возвращает текст проанализированного вики-текста.",
- "apihelp-parse-paramvalue-prop-langlinks": "Возвращает языковые ссылки из проанализированного вики-текста.",
+ "apihelp-parse-paramvalue-prop-text": "Возвращает текст распарсенного вики-текста.",
+ "apihelp-parse-paramvalue-prop-langlinks": "Возвращает языковые ссылки из распарсенного вики-текста.",
"apihelp-parse-paramvalue-prop-categories": "Возвращает категории из проанализированного вики-текста.",
"apihelp-parse-paramvalue-prop-categorieshtml": "Возвращает HTML-версию категорий.",
- "apihelp-parse-paramvalue-prop-links": "Возвращает внутренние ссылки из проанализированного вики-текста.",
+ "apihelp-parse-paramvalue-prop-links": "Возвращает внутренние ссылки из распарсенного вики-текста.",
"apihelp-parse-paramvalue-prop-templates": "Возвращает шаблоны из проанализированного вики-текста.",
- "apihelp-parse-paramvalue-prop-images": "Возвращает изображения из проанализированного вики-текста.",
- "apihelp-parse-paramvalue-prop-externallinks": "Возвращает внешние ссылки из проанализированного вики-текста.",
+ "apihelp-parse-paramvalue-prop-images": "Возвращает изображения из распарсенного вики-текста.",
+ "apihelp-parse-paramvalue-prop-externallinks": "Возвращает внешние ссылки из распарсенного вики-текста.",
"apihelp-parse-paramvalue-prop-sections": "Возвращает разделы из проанализированного вики-текста.",
- "apihelp-parse-paramvalue-prop-revid": "Добавляет идентификатор версии проанализированной страницы.",
+ "apihelp-parse-paramvalue-prop-revid": "Добавляет идентификатор версии распарсенной страницы.",
"apihelp-parse-paramvalue-prop-displaytitle": "Добавляет название проанализированного вики-текста.",
"apihelp-parse-paramvalue-prop-headitems": "<span class=\"apihelp-deprecated\">Не поддерживается.</span> Возвращает элементы, которые следует поместить в <code><head></code> страницы.",
- "apihelp-parse-paramvalue-prop-headhtml": "Возвращает проанализированный <code><head></code> страницы.",
+ "apihelp-parse-paramvalue-prop-headhtml": "Возвращает распарсенный <code><head></code> страницы.",
"apihelp-parse-paramvalue-prop-modules": "Возвращает использованные на странице модули ResourceLoader. Для загрузки, используйте <code>mw.loader.using()</code>. Одновременно с <kbd>modules</kbd> должно быть запрошено либо <kbd>jsconfigvars</kbd>, либо <kbd>encodedjsconfigvars</kbd>.",
"apihelp-parse-paramvalue-prop-jsconfigvars": "Возвращает переменные JavaScript с данными настроек для этой страницы. Для их применения используйте <code>mw.condig.set()</code>.",
"apihelp-parse-paramvalue-prop-encodedjsconfigvars": "Возвращает переменные JavaScript с данными настроек для этой страницы в виде JSON-строки.",
"apihelp-parse-paramvalue-prop-indicators": "Возвращает HTML-код индикаторов, использованных на данной странице.",
- "apihelp-parse-paramvalue-prop-iwlinks": "Возвращает интервики-ссылки из проанализированного вики-текста.",
- "apihelp-parse-paramvalue-prop-wikitext": "Возвращает исходный анализируемый вики-текст.",
+ "apihelp-parse-paramvalue-prop-iwlinks": "Возвращает интервики-ссылки из распарсенного вики-текста.",
+ "apihelp-parse-paramvalue-prop-wikitext": "Возвращает исходный распарсиваемый вики-текст.",
"apihelp-parse-paramvalue-prop-properties": "Возвращает различные свойства, объявленные в проанализированном вики-тексте.",
"apihelp-parse-paramvalue-prop-limitreportdata": "Возвращает структурированный отчёт о лимите. Не возвращает данных, если задан <var>$1disablelimitreport</var>.",
"apihelp-parse-paramvalue-prop-limitreporthtml": "Возвращает HTML-версию отчёта о лимите. Не возвращает данных, если задан <var>$1disablelimitreport</var>.",
- "apihelp-parse-paramvalue-prop-parsetree": "XML-дерево анализа содержимого версии (требуется модель содержимого <code>$1</code>).",
+ "apihelp-parse-paramvalue-prop-parsetree": "Дерево парсинга XML содержимого версии (требуется модель содержимого <code>$1</code>).",
"apihelp-parse-paramvalue-prop-parsewarnings": "Возвращает предупреждения, возникшие во время анализа.",
- "apihelp-parse-param-wrapoutputclass": "CSS-клаÑ\81Ñ\81, иÑ\81полÑ\8cзÑ\83емÑ\8bй длÑ\8f обоÑ\80аÑ\87иваниÑ\8f вÑ\8bвода анализаÑ\82ора.",
+ "apihelp-parse-param-wrapoutputclass": "CSS-клаÑ\81Ñ\81, иÑ\81полÑ\8cзÑ\83емÑ\8bй длÑ\8f обоÑ\80аÑ\87иваниÑ\8f вÑ\8bвода паÑ\80Ñ\81ера.",
"apihelp-parse-param-pst": "Выполнить преобразование перед записью правки (PST) до того, как начать анализировать текст. Доступно только когда используется с текстом.",
- "apihelp-parse-param-onlypst": "Ð\92Ñ\8bполниÑ\82Ñ\8c пÑ\80еобÑ\80азование пеÑ\80ед запиÑ\81Ñ\8cÑ\8e пÑ\80авки (PST) вÑ\85однÑ\8bÑ\85 даннÑ\8bÑ\85, но не анализиÑ\80овать их. Возвращает тот же вики-текст после применения PST. Доступно только при применении с <var>$1text</var>.",
+ "apihelp-parse-param-onlypst": "Ð\92Ñ\8bполниÑ\82Ñ\8c пÑ\80еобÑ\80азование пеÑ\80ед запиÑ\81Ñ\8cÑ\8e пÑ\80авки (PST) вÑ\85однÑ\8bÑ\85 даннÑ\8bÑ\85, но не паÑ\80Ñ\81ить их. Возвращает тот же вики-текст после применения PST. Доступно только при применении с <var>$1text</var>.",
"apihelp-parse-param-effectivelanglinks": "Включает языковые ссылки, обеспечиваемые расширениями (для использования с <kbd>$1prop=langlinks</kbd>).",
- "apihelp-parse-param-section": "Ð\9fÑ\80оанализиÑ\80оваÑ\82Ñ\8c Ñ\81одеÑ\80жимое Ñ\82олÑ\8cко Ñ\81екÑ\86ии Ñ\81 заданнÑ\8bм номеÑ\80ом.\n\nÐ\95Ñ\81ли задан <kbd>new</kbd>, пÑ\80оанализиÑ\80овать <var>$1text</var> и <var>$1sectiontitle</var> так, как будто добавлена новая секция на страницу.\n\n<kbd>new</kbd> доступен только при заданном <var>text</var>.",
+ "apihelp-parse-param-section": "РаÑ\81паÑ\80Ñ\81иÑ\82Ñ\8c Ñ\81одеÑ\80жимое Ñ\82олÑ\8cко Ñ\81екÑ\86ии Ñ\81 заданнÑ\8bм номеÑ\80ом.\n\nÐ\95Ñ\81ли задан <kbd>new</kbd>, Ñ\80аÑ\81паÑ\80Ñ\81ить <var>$1text</var> и <var>$1sectiontitle</var> так, как будто добавлена новая секция на страницу.\n\n<kbd>new</kbd> доступен только при заданном <var>text</var>.",
"apihelp-parse-param-sectiontitle": "Название новой секции, когда <var>section</var> имеет значение <kbd>new</kbd>.\n\nВ отличие от редактирования страницы, оно не примет значение параметра <var>summary</var>, если опустить его или оставить пустым.",
- "apihelp-parse-param-disablelimitreport": "Ð\9eпÑ\83Ñ\81Ñ\82иÑ\82Ñ\8c оÑ\82Ñ\87Ñ\91Ñ\82 о лимиÑ\82е («NewPP limit report») из Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82а анализа.",
+ "apihelp-parse-param-disablelimitreport": "Ð\9eпÑ\83Ñ\81Ñ\82иÑ\82Ñ\8c оÑ\82Ñ\87Ñ\91Ñ\82 о лимиÑ\82е («NewPP limit report») из Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82а паÑ\80Ñ\81инга.",
"apihelp-parse-param-disablepp": "Вместо этого используйте <var>$1disablelimitreport</var>.",
- "apihelp-parse-param-disableeditsection": "Ð\9eпÑ\83Ñ\81Ñ\82иÑ\82Ñ\8c Ñ\81Ñ\81Ñ\8bлки на Ñ\80едакÑ\82иÑ\80ование Ñ\80азделов из Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82а анализа.",
- "apihelp-parse-param-disabletidy": "Ð\9dе пÑ\80оводиÑ\82Ñ\8c оÑ\87иÑ\81Ñ\82кÑ\83 HTML (напÑ\80имеÑ\80, Ñ\81 помоÑ\89Ñ\8cÑ\8e tidy) Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82ов анализа.",
- "apihelp-parse-param-generatexml": "Сгенерировать XML-дерево анализа (требуется модель содержимого <code>$1</code>, замещено <kbd>$2prop=parsetree</kbd>).",
+ "apihelp-parse-param-disableeditsection": "Ð\9eпÑ\83Ñ\81Ñ\82иÑ\82Ñ\8c Ñ\81Ñ\81Ñ\8bлки на Ñ\80едакÑ\82иÑ\80ование Ñ\80азделов из Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82а паÑ\80Ñ\81инга.",
+ "apihelp-parse-param-disabletidy": "Ð\9dе пÑ\80оводиÑ\82Ñ\8c оÑ\87иÑ\81Ñ\82кÑ\83 HTML (напÑ\80имеÑ\80, Ñ\81 помоÑ\89Ñ\8cÑ\8e tidy) Ñ\80езÑ\83лÑ\8cÑ\82аÑ\82ов паÑ\80Ñ\81инга.",
+ "apihelp-parse-param-generatexml": "Сгенерировать дерево парсинга XML (требуется модель содержимого <code>$1</code>, замещено <kbd>$2prop=parsetree</kbd>).",
"apihelp-parse-param-preview": "Проанализировать в режиме препросмотра.",
- "apihelp-parse-param-sectionpreview": "Ð\9fÑ\80оанализиÑ\80овать в режиме предпросмотра раздела (также активирует режим предпросмотра).",
+ "apihelp-parse-param-sectionpreview": "РаÑ\81паÑ\80Ñ\81ить в режиме предпросмотра раздела (также активирует режим предпросмотра).",
"apihelp-parse-param-disabletoc": "Не включать в вывод содержание.",
"apihelp-parse-param-contentformat": "Формат сериализации содержимого, использующийся во входном тексте. Доступен только при использовании с $1text.",
"apihelp-parse-param-contentmodel": "Модель содержимого входного текста. Если пропущена, должен быть задан $1title, и значение по умолчанию будет взято в зависимости от указанного названия. Доступно только при использовании с $1text.",
- "apihelp-parse-example-page": "Ð\90нализ страницы.",
+ "apihelp-parse-example-page": "Ð\9fаÑ\80Ñ\81инг страницы.",
"apihelp-parse-example-text": "Анализ вики-текста.",
- "apihelp-parse-example-texttitle": "Ð\90нализ вики-текста с заданным заголовком страницы.",
+ "apihelp-parse-example-texttitle": "Ð\9fаÑ\80Ñ\81инг вики-текста с заданным заголовком страницы.",
"apihelp-parse-example-summary": "Анализ описания правки.",
"apihelp-patrol-description": "Патрулирование страницы или версии.",
"apihelp-patrol-param-rcid": "Идентификатор патрулируемой последней правки.",
"apihelp-query+allmessages-description": "Возвращает сообщения с этого сайта.",
"apihelp-query+allmessages-param-messages": "Какие сообщения выводить. <kbd>*</kbd> (по умолчанию) означает «все сообщения».",
"apihelp-query+allmessages-param-prop": "Какие свойства получить:",
- "apihelp-query+allmessages-param-enableparser": "УÑ\81Ñ\82ановиÑ\82е, Ñ\87Ñ\82обÑ\8b акÑ\82ивиÑ\80оваÑ\82Ñ\8c анализаÑ\82ор, который будет обрабатывать вики-текст сообщений (подставлять магические слова, обрабатывать шаблоны, и так далее).",
+ "apihelp-query+allmessages-param-enableparser": "УÑ\81Ñ\82ановиÑ\82е, Ñ\87Ñ\82обÑ\8b акÑ\82ивиÑ\80оваÑ\82Ñ\8c паÑ\80Ñ\81ер, который будет обрабатывать вики-текст сообщений (подставлять магические слова, обрабатывать шаблоны, и так далее).",
"apihelp-query+allmessages-param-nocontent": "Если установлен, ничего не делать с содержимым сообщений перед выводом.",
"apihelp-query+allmessages-param-includelocal": "Также включить локальные сообщения, то есть, сообщения, не существующие в программе, но существующие в пространстве имён {{ns:MediaWiki}}. Это перечислит все страницы из пространства {{ns:MediaWiki}}, поэтому в результат также могут попасть страницы, не являющимися сообщениями — например, [[MediaWiki:Common.js|Common.js]].",
"apihelp-query+allmessages-param-args": "Аргументы, подставляемые в сообщение.",
}
}
- $backoffKey = wfMemcKey( 'AuthManager', 'autocreate-failed', md5( $username ) );
+ $backoffKey = $cache->makeKey( 'AuthManager', 'autocreate-failed', md5( $username ) );
if ( $cache->get( $backoffKey ) ) {
$this->logger->debug( __METHOD__ . ': {username} denied by prior creation attempt failures', [
'username' => $username,
continue;
}
- $throttleKey = wfGlobalCacheKey( 'throttler', $this->type, $index, $ipKey, $userKey );
+ $throttleKey = $this->cache->makeGlobalKey( 'throttler', $this->type, $index, $ipKey, $userKey );
$throttleCount = $this->cache->get( $throttleKey );
if ( !$throttleCount ) { // counter not started yet
$userKey = $username ? md5( $username ) : null;
foreach ( $this->conditions as $index => $specificThrottle ) {
$ipKey = isset( $specificThrottle['allIPs'] ) ? null : $ip;
- $throttleKey = wfGlobalCacheKey( 'throttler', $this->type, $index, $ipKey, $userKey );
+ $throttleKey = $this->cache->makeGlobalKey( 'throttler', $this->type, $index, $ipKey, $userKey );
$this->cache->delete( $throttleKey );
}
}
: IP::sanitizeRange( "$ip/16" );
# Bail out if a request already came from this range...
- $key = wfMemcKey( static::class, 'attempt', $this->mType, $this->mKey, $ip );
+ $key = $cache->makeKey( static::class, 'attempt', $this->mType, $this->mKey, $ip );
if ( $cache->get( $key ) ) {
return; // possibly the same user
}
$cache->set( $key, 1, self::MISS_TTL_SEC );
# Increment the number of cache misses...
- $key = $this->cacheMissKey();
+ $key = $this->cacheMissKey( $cache );
if ( $cache->get( $key ) === false ) {
$cache->set( $key, 1, self::MISS_TTL_SEC );
} else {
public function getMissesRecent() {
$cache = ObjectCache::getLocalClusterInstance();
- return self::MISS_FACTOR * $cache->get( $this->cacheMissKey() );
+ return self::MISS_FACTOR * $cache->get( $this->cacheMissKey( $cache ) );
}
/**
+ * @param BagOStuff $cache Instance that the key will be used with
* @return string
*/
- protected function cacheMissKey() {
- return wfMemcKey( static::class, 'misses', $this->mType, $this->mKey );
+ protected function cacheMissKey( BagOStuff $cache ) {
+ return $cache->makeKey( static::class, 'misses', $this->mType, $this->mKey );
}
}
* @ingroup Change tagging
*/
+use MediaWiki\MediaWikiServices;
use Wikimedia\Rdbms\Database;
class ChangeTags {
if ( !Hooks::isRegistered( 'ChangeTagsListActive' ) ) {
return $tags;
}
- return ObjectCache::getMainWANInstance()->getWithSetCallback(
- wfMemcKey( 'active-tags' ),
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+ return $cache->getWithSetCallback(
+ $cache->makeKey( 'active-tags' ),
WANObjectCache::TTL_MINUTE * 5,
function ( $oldValue, &$ttl, array &$setOpts ) use ( $tags ) {
$setOpts += Database::getCacheSetOptions( wfGetDB( DB_REPLICA ) );
return $tags;
},
[
- 'checkKeys' => [ wfMemcKey( 'active-tags' ) ],
+ 'checkKeys' => [ $cache->makeKey( 'active-tags' ) ],
'lockTSE' => WANObjectCache::TTL_MINUTE * 5,
'pcTTL' => WANObjectCache::TTL_PROC_LONG
]
public static function listExplicitlyDefinedTags() {
$fname = __METHOD__;
- return ObjectCache::getMainWANInstance()->getWithSetCallback(
- wfMemcKey( 'valid-tags-db' ),
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+ return $cache->getWithSetCallback(
+ $cache->makeKey( 'valid-tags-db' ),
WANObjectCache::TTL_MINUTE * 5,
function ( $oldValue, &$ttl, array &$setOpts ) use ( $fname ) {
$dbr = wfGetDB( DB_REPLICA );
return array_filter( array_unique( $tags ) );
},
[
- 'checkKeys' => [ wfMemcKey( 'valid-tags-db' ) ],
+ 'checkKeys' => [ $cache->makeKey( 'valid-tags-db' ) ],
'lockTSE' => WANObjectCache::TTL_MINUTE * 5,
'pcTTL' => WANObjectCache::TTL_PROC_LONG
]
if ( !Hooks::isRegistered( 'ListDefinedTags' ) ) {
return $tags;
}
- return ObjectCache::getMainWANInstance()->getWithSetCallback(
- wfMemcKey( 'valid-tags-hook' ),
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+ return $cache->getWithSetCallback(
+ $cache->makeKey( 'valid-tags-hook' ),
WANObjectCache::TTL_MINUTE * 5,
function ( $oldValue, &$ttl, array &$setOpts ) use ( $tags ) {
$setOpts += Database::getCacheSetOptions( wfGetDB( DB_REPLICA ) );
return array_filter( array_unique( $tags ) );
},
[
- 'checkKeys' => [ wfMemcKey( 'valid-tags-hook' ) ],
+ 'checkKeys' => [ $cache->makeKey( 'valid-tags-hook' ) ],
'lockTSE' => WANObjectCache::TTL_MINUTE * 5,
'pcTTL' => WANObjectCache::TTL_PROC_LONG
]
* @since 1.25
*/
public static function purgeTagCacheAll() {
- $cache = ObjectCache::getMainWANInstance();
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
- $cache->touchCheckKey( wfMemcKey( 'active-tags' ) );
- $cache->touchCheckKey( wfMemcKey( 'valid-tags-db' ) );
- $cache->touchCheckKey( wfMemcKey( 'valid-tags-hook' ) );
+ $cache->touchCheckKey( $cache->makeKey( 'active-tags' ) );
+ $cache->touchCheckKey( $cache->makeKey( 'valid-tags-db' ) );
+ $cache->touchCheckKey( $cache->makeKey( 'valid-tags-hook' ) );
self::purgeTagUsageCache();
}
* @since 1.25
*/
public static function purgeTagUsageCache() {
- $cache = ObjectCache::getMainWANInstance();
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
- $cache->touchCheckKey( wfMemcKey( 'change-tag-statistics' ) );
+ $cache->touchCheckKey( $cache->makeKey( 'change-tag-statistics' ) );
}
/**
*/
public static function tagUsageStatistics() {
$fname = __METHOD__;
- return ObjectCache::getMainWANInstance()->getWithSetCallback(
- wfMemcKey( 'change-tag-statistics' ),
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
+ return $cache->getWithSetCallback(
+ $cache->makeKey( 'change-tag-statistics' ),
WANObjectCache::TTL_MINUTE * 5,
function ( $oldValue, &$ttl, array &$setOpts ) use ( $fname ) {
$dbr = wfGetDB( DB_REPLICA, 'vslow' );
return $out;
},
[
- 'checkKeys' => [ wfMemcKey( 'change-tag-statistics' ) ],
+ 'checkKeys' => [ $cache->makeKey( 'change-tag-statistics' ) ],
'lockTSE' => WANObjectCache::TTL_MINUTE * 5,
'pcTTL' => WANObjectCache::TTL_PROC_LONG
]
$metadata = MediaWiki\quietCall( 'unserialize', $metadata );
}
- return $handler->getContentHeaders( $metadata );
+ return $handler->getContentHeaders( $metadata, $this->getWidth(), $this->getHeight() );
}
}
if ( $handler ) {
$metadata = MediaWiki\quietCall( 'unserialize', $props['metadata'] );
- $options['headers'] = $handler->getContentHeaders( $metadata );
+ $options['headers'] = $handler->getContentHeaders(
+ $metadata, $props['width'], $props['height']
+ );
} else {
$options['headers'] = [];
}
/**
* Get useful response headers for GET/HEAD requests for a file with the given metadata
* @param $metadata Array Contains this handler's unserialized getMetadata() for a file
- * @return array
+ * @param $fallbackWidth int|null Width to fall back to if metadata doesn't have any
+ * @param $fallbackHeight int|null Height to fall back to if metadata doesn't have any
+ * @return Array
+ * @since 1.30
*/
- public function getContentHeaders( $metadata ) {
+ public function getContentHeaders( $metadata, $fallbackWidth = null, $fallbackHeight = null ) {
if ( !is_array( $metadata ) || !isset( $metadata['xml'] ) ) {
return [];
}
* @link http://exif.org/Exif2-2.PDF The Exif 2.2 specification
*/
$this->mExifTags = [
- 'COMPUTED' => [
- 'Width' => Exif::SHORT_OR_LONG, # Image width
- 'Height' => Exif::SHORT_OR_LONG, # Image height
- ],
-
# TIFF Rev. 6.0 Attribute Information (p22)
'IFD0' => [
# Tags relating to image structure
return 0;
}
-
- /**
- * Get useful response headers for GET/HEAD requests for a file with the given metadata
- * @param $metadata Array Contains this handler's unserialized getMetadata() for a file
- * @return Array
- */
- public function getContentHeaders( $metadata ) {
- if ( !isset( $metadata['Width'] ) || !isset( $metadata['Height'] ) ) {
- return [];
- }
-
- $dimensionsMetadata = [];
-
- if ( $this->autoRotateEnabled() && isset( $metadata['Orientation'] ) ) {
- switch ( $metadata['Orientation'] ) {
- case 5: // CCW flipped
- case 6: // CCW
- case 7: // CW flipped
- case 8: // CW
- $dimensionsMetadata['width'] = $metadata['Height'];
- $dimensionsMetadata['height'] = $metadata['Width'];
- break;
- }
- }
-
- if ( !isset( $dimensionsMetadata['width'] ) ) {
- $dimensionsMetadata['width'] = $metadata['Width'];
- $dimensionsMetadata['height'] = $metadata['Height'];
- }
-
- return parent::getContentHeaders( $dimensionsMetadata );
- }
}
* @see http://exif.org/Exif2-2.PDF The Exif 2.2 specification
* @file
*/
+use MediaWiki\MediaWikiServices;
use Wikimedia\Timestamp\TimestampException;
/**
public function makeFormattedData( $tags ) {
$resolutionunit = !isset( $tags['ResolutionUnit'] ) || $tags['ResolutionUnit'] == 2 ? 2 : 3;
unset( $tags['ResolutionUnit'] );
- // Width and height are for internal use and already available & displayed outside of metadata
- unset( $tags['Width'] );
- unset( $tags['Height'] );
foreach ( $tags as $tag => &$vals ) {
// This seems ugly to wrap non-array's in an array just to unwrap again,
* @since 1.23
*/
public function fetchExtendedMetadata( File $file ) {
- $cache = ObjectCache::getMainWANInstance();
+ $cache = MediaWikiServices::getInstance()->getMainWANObjectCache();
// If revision deleted, exit immediately
if ( $file->isDeleted( File::DELETED_FILE ) ) {
return [];
}
- $cacheKey = wfMemcKey(
+ $cacheKey = $cache->makeKey(
'getExtendedMetadata',
$this->getLanguage()->getCode(),
(int)$this->singleLang,
'duration' => $duration,
'xmp' => $xmp,
'comment' => $comment,
- 'width' => $width,
- 'height' => $height,
];
}
/**
* Get useful response headers for GET/HEAD requests for a file with the given metadata
* @param $metadata Array Contains this handler's unserialized getMetadata() for a file
+ * @param $fallbackWidth int|null Width to fall back to if metadata doesn't have any
+ * @param $fallbackHeight int|null Height to fall back to if metadata doesn't have any
* @return Array
* @since 1.30
*/
- public function getContentHeaders( $metadata ) {
- if ( !isset( $metadata['width'] ) || !isset( $metadata['height'] ) ) {
- return [];
+ public function getContentHeaders( $metadata, $fallbackWidth = null, $fallbackHeight = null ) {
+ if ( !isset( $metadata['width'] ) ) {
+ if ( is_null( $fallbackWidth ) ) {
+ return [];
+ }
+
+ $metadata['width'] = $fallbackWidth;
+ }
+
+ if ( !isset( $metadata['height'] ) ) {
+ if ( is_null( $fallbackHeight ) ) {
+ return [];
+ }
+
+ $metadata['height'] = $fallbackHeight;
}
$dimensionString = $metadata['width'] . 'x' . $metadata['height'];
'text' => $text,
'bitDepth' => $bitDepth,
'colorType' => $colorType,
- 'width' => $width,
- 'height' => $height,
];
}
$metadata['colorType'] = 'unknown';
}
-
- $metadata['width'] = $header['width'];
- $metadata['height'] = $header['height'];
} else {
// Marker to prevent repeated attempted extraction
$metadata['error'] = true;
$toc = Linker::tocList( $toc, $this->mOptions->getUserLangObj() );
$this->mOutput->setTOCHTML( $toc );
$toc = self::TOC_START . $toc . self::TOC_END;
- $this->mOutput->addModules( 'mediawiki.toc' );
}
if ( $isMain ) {
$cache = new EmptyBagOStuff();
}
// See if this queue is in APC
- $key = wfMemcKey(
+ $key = $cache->makeKey(
'registration',
md5( json_encode( $this->queued + $versions ) )
);
$this->forceHTTPS = $info->forceHTTPS();
$this->providerMetadata = $info->getProviderMetadata();
- $blob = $store->get( wfMemcKey( 'MWSession', (string)$this->id ) );
+ $blob = $store->get( $store->makeKey( 'MWSession', (string)$this->id ) );
if ( !is_array( $blob ) ||
!isset( $blob['metadata'] ) || !is_array( $blob['metadata'] ) ||
!isset( $blob['data'] ) || !is_array( $blob['data'] )
$this->autosave();
// Delete the data for the old session ID now
- $this->store->delete( wfMemcKey( 'MWSession', $oldId ) );
+ $this->store->delete( $this->store->makeKey( 'MWSession', $oldId ) );
}
}
// Delete the session data, so the local cache-only write in
// self::save() doesn't get things out of sync with the backend.
- $this->store->delete( wfMemcKey( 'MWSession', (string)$this->id ) );
+ $this->store->delete( $this->store->makeKey( 'MWSession', (string)$this->id ) );
$this->autosave();
}
$flags = $this->persist ? 0 : CachedBagOStuff::WRITE_CACHE_ONLY;
$flags |= CachedBagOStuff::WRITE_SYNC; // write to all datacenters
$this->store->set(
- wfMemcKey( 'MWSession', (string)$this->id ),
+ $this->store->makeKey( 'MWSession', (string)$this->id ),
[
'data' => $this->data,
'metadata' => $metadata,
}
// Test if the session is in storage, and if so try to load it.
- $key = wfMemcKey( 'MWSession', $id );
+ $key = $this->store->makeKey( 'MWSession', $id );
if ( is_array( $this->store->get( $key ) ) ) {
$create = false; // If loading fails, don't bother creating because it probably will fail too.
if ( $this->loadSessionInfoFromStore( $info, $request ) ) {
throw new \InvalidArgumentException( 'Invalid session ID' );
}
- $key = wfMemcKey( 'MWSession', $id );
+ $key = $this->store->makeKey( 'MWSession', $id );
if ( is_array( $this->store->get( $key ) ) ) {
throw new \InvalidArgumentException( 'Session ID already exists' );
}
* @return bool Whether the session info matches the stored data (if any)
*/
private function loadSessionInfoFromStore( SessionInfo &$info, WebRequest $request ) {
- $key = wfMemcKey( 'MWSession', $info->getId() );
+ $key = $this->store->makeKey( 'MWSession', $info->getId() );
$blob = $this->store->get( $key );
// If we got data from the store and the SessionInfo says to force use,
public function generateSessionId() {
do {
$id = \Wikimedia\base_convert( \MWCryptRand::generateHex( 40 ), 16, 32, 32 );
- $key = wfMemcKey( 'MWSession', $id );
+ $key = $this->store->makeKey( 'MWSession', $id );
} while ( isset( $this->allSessionIds[$id] ) || is_array( $this->store->get( $key ) ) );
return $id;
}
global $wgUseAjax, $wgEnableAPI, $wgEnableWriteAPI;
$out = $this->getOutput();
+ $config = $this->getConfig();
$user = $out->getUser();
$modules = [
+ // modules not specific to any specific skin or page
+ 'core' => [
+ // Enforce various default modules for all pages and all skins
+ // Keep this list as small as possible
+ 'site',
+ 'mediawiki.page.startup',
+ 'mediawiki.user',
+ ],
// modules that enhance the page content in some way
'content' => [
'mediawiki.page.ready',
'user' => [],
];
+ // Support for high-density display images if enabled
+ if ( $config->get( 'ResponsiveImages' ) ) {
+ $modules['core'][] = 'mediawiki.hidpi';
+ }
+
// Preload jquery.tablesorter for mediawiki.page.ready
if ( strpos( $out->getHTML(), 'sortable' ) !== false ) {
$modules['content'][] = 'jquery.tablesorter';
$modules['content'][] = 'jquery.makeCollapsible';
}
+ if ( $out->isTOCEnabled() ) {
+ $modules['content'][] = 'mediawiki.toc';
+ }
+
// Add various resources if required
if ( $wgUseAjax && $wgEnableAPI ) {
if ( $wgEnableWriteAPI && $user->isLoggedIn()
}
// Use the extra hash appender to let eg SSL variants separately cache.
- $key = wfMemcKey( $name . $wgRenderHashAppend );
+ $key = $parserMemc->makeKey( $name . $wgRenderHashAppend );
$cachedNotice = $parserMemc->get( $key );
if ( is_array( $cachedNotice ) ) {
if ( md5( $notice ) == $cachedNotice['hash'] ) {
"showhideselectedversions": "Wys/versteek gekose weergawes",
"editundo": "maak ongedaan",
"diff-empty": "(Geen verskil)",
- "diff-multi-sameuser": "({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur dieselfde gebruiker nie gewys nie)",
- "diff-multi-manyusers": "({{PLURAL:$1|Een tussenin wysiging|$1 tussenin wysigings}} deur meer as $2 {{PLURAL:$2|gebruiker|gebruikers}} nie gewys nie)",
+ "diff-multi-sameuser": "({{PLURAL:$1|Een wysiging tussenin|$1 wysigings tussenin}} deur dieselfde gebruiker nie gewys nie)",
+ "diff-multi-manyusers": "({{PLURAL:$1|Een wysiging tussenin|$1 wysigings tussenin}} deur meer as $2 {{PLURAL:$2|gebruiker|gebruikers}} nie gewys nie)",
"difference-missing-revision": "{{PLURAL:$2|'n Weergawe|$2 weergawes}} van die verskil ($1) {{PLURAL:$2|is|is}} nie gevind nie.\n\nDit word meestal veroorsaak deur die volg van 'n verouderde verwysing na 'n bladsy wat verwyder is.\nDetails kan in die [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} skraplogboek] gevind word.",
"searchresults": "Soekresultate",
"searchresults-title": "Soekresultate vir \"$1\"",
"historyaction-submit": "Wapata",
"dellogpage": " Nesitc ka wepinikatek kanaweritcikan",
"rollbacklink": "e maninakatek",
- "rollbacklinkcount": " nesitc wepina$1 {{PLURAL:$1|kweskisinikan|kweskisinihikana}}",
+ "rollbacklinkcount": " nesitc wepina $1 {{PLURAL:$1|kweskisinikan|kweskisinihikana}}",
"protectlogpage": "Nanakatisiwina wapatcikan",
"restriction-edit": "Meckotcita",
"undeleteviewlink": "tapwatcike",
"rcfilters-filter-watchlist-watchednew-label": "Новыя зьмены ў сьпісе назіраньня",
"rcfilters-filter-watchlist-watchednew-description": "Зьмены старонак у вашым сьпісе назіраньня, якія вы не наведвалі з моманту гэтых зьменаў.",
"rcfilters-filter-watchlist-notwatched-label": "Ня ў сьпісе назіраньня",
+ "rcfilters-filter-watchlist-notwatched-description": "Усё, за выключэньнем зьменаў старонак з вашага сьпісу назіраньня.",
"rcfilters-filtergroup-changetype": "Тып зьмены",
"rcfilters-filter-pageedits-label": "Рэдагаваньні старонкі",
"rcfilters-filter-pageedits-description": "Рэдагаваньні вікізьместу, абмеркаваньняў, апісаньняў катэгорыяў…",
"rcfilters-savedqueries-defaultlabel": "Съхранени филтри",
"rcfilters-savedqueries-rename": "Преименуване",
"rcfilters-savedqueries-setdefault": "Съхраняване по подразбиране",
- "rcfilters-savedqueries-unsetdefault": "Ð\9eÑ\82мÑ\8fна на Ñ\81Ñ\8aÑ\85Ñ\80анÑ\8fванеÑ\82о по подразбиране",
+ "rcfilters-savedqueries-unsetdefault": "Ð\9fÑ\80емаÑ\85ване по подразбиране",
"rcfilters-savedqueries-remove": "Премахване",
"rcfilters-savedqueries-new-name-label": "Име",
+ "rcfilters-savedqueries-apply-label": "Създаване на бърза връзка",
"rcfilters-savedqueries-cancel-label": "Отказ",
- "rcfilters-restore-default-filters": "Възстановяване на филтри по подразбиране",
+ "rcfilters-savedqueries-add-new-title": "Съхраняване на филтрите като бърза връзка",
+ "rcfilters-restore-default-filters": "Възстановяване на филтрите по подразбиране",
"rcfilters-clear-all-filters": "Изчистване на всички филтри",
"rcfilters-search-placeholder": "Филтриране на последните промени (изберете или започнете да въвеждате)",
+ "rcfilters-invalid-filter": "Невалиден филтър",
"rcfilters-empty-filter": "Няма активни филтри. Показани са всички редакции.",
"rcfilters-filterlist-title": "Филтри",
"rcfilters-filterlist-whatsthis": "Какво е това?",
+ "rcfilters-filterlist-feedbacklink": "Оставете коментар за новите (бета) филтри",
"rcfilters-highlightbutton-title": "Отбелязване на резултатите",
"rcfilters-highlightmenu-title": "Изберете цвят",
"rcfilters-highlightmenu-help": "Изберете цвят за отбелязване на свойството",
"rcfilters-filter-registered-description": "Влезли в системата редактори.",
"rcfilters-filter-unregistered-label": "Нерегистрирани",
"rcfilters-filter-unregistered-description": "Редактори, които не са влезли в системата.",
+ "rcfilters-filtergroup-authorship": "Авторство на редакциите",
"rcfilters-filter-editsbyself-label": "Ваши редакции",
"rcfilters-filter-editsbyself-description": "Ваши редакции.",
"rcfilters-filter-editsbyother-label": "Чужди редакции",
"rcfilters-filter-editsbyother-description": "Всички редакции с изключение на вашите собствени.",
+ "rcfilters-filtergroup-userExpLevel": "Ниво на опита (само за регистрирани потребители)",
"rcfilters-filter-user-experience-level-newcomer-label": "Новодошли",
"rcfilters-filter-user-experience-level-newcomer-description": "По-малко от 10 редакции и 5 дни активност.",
"rcfilters-filter-user-experience-level-learner-label": "Учещи се",
"rcfilters-filter-minor-label": "Малки промени",
"rcfilters-filter-minor-description": "Редакции, които не са отбелязани като малки промени.",
"rcfilters-filter-major-label": "Обикновени редакции",
+ "rcfilters-filter-major-description": "Редакции, които не са отбелязани като малки промени.",
+ "rcfilters-filtergroup-watchlist": "Страници от списъка за наблюдение",
+ "rcfilters-filter-watchlist-watched-label": "В списъка за наблюдение",
+ "rcfilters-filter-watchlist-watched-description": "Промени в страници от списъка за наблюдение.",
+ "rcfilters-filter-watchlist-watchednew-label": "Нови промени в списъка за наблюдение",
+ "rcfilters-filter-watchlist-watchednew-description": "Промени в страниците от списъка за наблюдение, които не сте посетили от извършването им.",
+ "rcfilters-filter-watchlist-notwatched-label": "Извън списъка за наблюдение",
+ "rcfilters-filter-watchlist-notwatched-description": "Всички, освен промените в страници от списъка за наблюдение.",
"rcfilters-filtergroup-changetype": "Вид на промяната",
"rcfilters-filter-pageedits-label": "Редакции на страници",
- "rcfilters-filter-pageedits-description": "РедакÑ\86ии на Ñ\81Ñ\8aдÑ\8aÑ\80жаниеÑ\82о, диÑ\81кÑ\83Ñ\81ии, описания на категории...",
+ "rcfilters-filter-pageedits-description": "РедакÑ\86ии на Ñ\81Ñ\8aдÑ\8aÑ\80жаниеÑ\82о, беÑ\81еди, описания на категории...",
"rcfilters-filter-newpages-label": "Създавания на страници",
"rcfilters-filter-newpages-description": "Редакции, чрез които се създават нови страници.",
"rcfilters-filter-categorization-label": "Промяна на категории",
+ "rcfilters-filter-categorization-description": "Записи от добавяне или премахване на страници от категории.",
+ "rcfilters-filter-logactions-label": "Записани в дневника действия.",
"rcfilters-filter-logactions-description": "Административни действия, създавания на сметки, изтривания на страници, качвания...",
"rcfilters-filtergroup-lastRevision": "Текуща версия",
+ "rcfilters-filter-lastrevision-label": "Текуща версия",
"rcfilters-filter-lastrevision-description": "Последната промяна на страница.",
"rcfilters-filter-previousrevision-label": "По-ранни версии",
"rcfilters-filter-previousrevision-description": "Всички редакции, които не са последните на страница.",
"movepage-moved-noredirect": "Създаването на пренасочване беше спряно.",
"articleexists": "Вече съществува страница с това име или името, което сте избрали, е невалидно. Изберете друго име.",
"cantmove-titleprotected": "Страницата не може да бъде преместена под новото заглавие, тъй като то е защитено от създаване",
- "movetalk": "Ð\9fÑ\80емеÑ\81Ñ\82ване и на диÑ\81кÑ\83Ñ\81ионнаÑ\82а Ñ\81Ñ\82Ñ\80аниÑ\86а, ако е пÑ\80иложимо.",
+ "movetalk": "Ð\9fÑ\80емеÑ\81Ñ\82ване и на беÑ\81едаÑ\82а, ако е пÑ\80иложимо",
"move-subpages": "Преместване на всички подстраници (до $1)",
"move-talk-subpages": "Преместване на всички подстраници на беседата (до $1)",
"movepage-page-exists": "Страницата $1 вече съществува и няма да бъде автоматично презаписана.",
"authmanager-realname-help": "Истинско име на потребителя",
"authmanager-provider-temporarypassword": "Временна парола",
"authprovider-resetpass-skip-label": "Пропусни",
+ "authform-notoken": "Липсва маркер",
"specialpage-securitylevel-not-allowed-title": "Не е позволено",
"cannotauth-not-allowed-title": "Достъпът е отказан",
"cannotauth-not-allowed": "Не ви е позволено да използвате тази страница",
"right-undelete": "हटावल पन्ना वापस ले आईं",
"right-protect": "सुरक्षा स्तर बदलीं आ कास्केड-सुरक्षित पन्ना के सम्पादन करीं",
"right-unwatchedpages": "ध्यानसूची में जवन पन्ना नइखे ओकर सूची देखीं",
+ "grant-blockusers": "प्रयोगकर्ता लोग पर रोक लगाईं आ रोक हटाईं",
+ "grant-createaccount": "खाता बनाईं",
+ "grant-createeditmovepage": "पन्ना बनाईं, संपादित करीं आ स्थानांतरण करीं",
+ "grant-editmyoptions": "आपन पसंदीदा सेटिंग संपादित करीं",
+ "grant-editmywatchlist": "आपन धियानसूची संपादित करीं",
+ "grant-editpage": "पहिले से मौजूद पन्ना संपादित करीं",
+ "grant-editprotected": "सुरक्षित पन्ना संपादित करीं",
+ "grant-highvolume": "भारी-मात्रा में संपादन",
+ "grant-oversight": "प्रयोगकर्ता छिपाईं आ रिवीजन दबा देईं",
+ "grant-patrol": "पन्ना पर बदलाव सभ के गश्त करीं",
+ "grant-privateinfo": "निजी जानकारी तक पहुँचीं",
+ "grant-protect": "पन्ना सुरक्षित आ बिनासुरक्षित करीं",
+ "grant-rollback": "पन्ना पर बदलाव सभ के रोलबैक करीं",
"newuserlogpage": "खाता बनवले के लॉग",
"newuserlogpagetext": "ई खाता निर्माण के लॉग बा",
"rightslog": "सदस्य अधिकार लॉग",
"permalink": "Trajni link",
"print": "Štampaj",
"view": "Pogled",
- "view-foreign": "Vidi na $1",
+ "view-foreign": "Vidi na {{GRAMMAR:dativ|$1}}",
"edit": "Uredi",
"edit-local": "Uredi lokalni opis",
"create": "Napravi",
"rawhtml-notallowed": "<html> oznake ne mogu se koristiti van normalnih stranica.",
"gotointerwiki": "Napuštate {{GRAMMAR:akuzativ|{{SITENAME}}}}",
"gotointerwiki-invalid": "Navedeni naslov nije ispravan.",
- "gotointerwiki-external": "Napuštate {{GRAMMAR:akuzativ|{{SITENAME}}}} da biste posjetili zasebni veb-sajt [[$2]].\n\n[$1 Kliknite ovdje da biste otišli na $1].",
+ "gotointerwiki-external": "Napuštate {{GRAMMAR:akuzativ|{{SITENAME}}}} da biste posjetili zasebni veb-sajt [[$2]].\n\n<strong>[$1 Idi na $1]</strong>",
"undelete-cantedit": "Ne možete vratiti ovu stranicu jer Vam nije dozvoljeno da je uređujete."
}
"unlinkaccounts": "Dissocier les comptes",
"unlinkaccounts-success": "Le compte a été dissocié.",
"authenticationdatachange-ignored": "Les modifications de données d’authentification n’ont pas été gérées. Peut-être aucun fournisseur n’a-t-il été configuré ?",
- "userjsispublic": "Veuillez noter: les sous-pages JavaScript ne doivent pas contenir de données confidentielles parce qu'elles sont visibles des autres utilisateurs.",
+ "userjsispublic": "Veuillez noter : les sous-pages JavaScript ne doivent pas contenir de données confidentielles parce qu’elles sont visibles des autres utilisateurs.",
"usercssispublic": "Veuillez noter: les sous-pages CSS ne doivent pas contenir de données confidentielles parce qu'elles sont visibles des autres utilisateurs.",
"restrictionsfield-badip": "Adresse IP ou plage non valide : $1",
"restrictionsfield-label": "Plages IP autorisées :",
"Xð",
"Robin van der Vliet",
"PiefPafPier",
- "Catrope"
+ "Catrope",
+ "Sjoerddebruin"
]
},
"tog-underline": "Keppelings ûnderstreekje:",
"watching": "Dwaande mei op'e folchlist te setten ...",
"unwatching": "Dwaande mei fan'e folchlist ôf te heljen ...",
"enotif_impersonal_salutation": "meidogger fan {{SITENAME}}",
- "enotif_body": "Bêste $WATCHINGUSERNAME,\n\nDe {{SITENAME}}side '$PAGETITLE' is op $PAGEEDITDATE $CHANGEDORCREATED troch meidogger $PAGEEDITOR;\nsjoch $PAGETITLE_URL foar de aktuele ferzje.\n\n$NEWPAGE\n\nGearfetting: $PAGESUMMARY $PAGEMINOREDIT\n\nFoar oerlis mei meidogger $PAGEEDITOR:\n- netpost: $PAGEEDITOR_EMAIL\n- wiki: $PAGEEDITOR_WIKI\n\nFierdere meldings wurde jo net tastjoerd, oant jo de side lêzen hawwe. Op jo folchlist kinne jo op 'e nij meldings foar al jo folge siden freegje.\n\n Jo freonlike {{SITENAME}}-meldingssysteem.\n\n--\nGean nei {{canonicalurl:{{#special:EditWatchlist}}}}\nom jo folchlistynstellings te feroarjen.\n\nReaksjes en fierdere help:\n$HELPPAGE",
+ "enotif_body": "Bêste $WATCHINGUSERNAME,\n\n$PAGEINTRO $NEWPAGE\n\nGearfetting: $PAGESUMMARY $PAGEMINOREDIT\n\nFoar oerlis mei meidogger:\nnetpost: $PAGEEDITOR_EMAIL\nwiki: $PAGEEDITOR_WIKI\n\nFierdere meldings wurde jo net tastjoerd, oant jo de side lêzen hawwe. Op jo folchlist kinne jo op 'e nij meldings foar al jo folge siden freegje.\n\nJo freonlike {{SITENAME}}-meldingssysteem.\n\n--\nGean nei {{canonicalurl:{{#special:Preferences}}}}\nom jo netpostynstellings te feroarjen.\n\nGean nei {{canonicalurl:{{#special:EditWatchlist}}}}\nom jo folchlistynstellings te feroarjen.\n\nOm de side fan jo folchlist te ferwiderjen, gean nei\n$UNWATCHURL\n\nReaksjes en fierdere help:\n$HELPPAGE",
"created": "oanmakke",
"changed": "feroare",
"deletepage": "Wisk side",
"pageid": "identificador de páxina $1",
"rawhtml-notallowed": "As marcas <html> non poden usarse fóra das páxinas normais.",
"gotointerwiki": "Deixando {{SITENAME}}",
- "gotointerwiki-invalid": "O título especificado non era válido.",
- "gotointerwiki-external": "Vai sair de {{SITENAME}} para visitar [[$2]], que é un sitio web externo.\n\n[$1 Prema aquí para continuar a $1]",
+ "gotointerwiki-invalid": "O título especificado non é válido.",
+ "gotointerwiki-external": "Vai sair de {{SITENAME}} para visitar [[$2]], que é un sitio web externo.\n\n'''[$1 Continuar en $1]'''",
"undelete-cantedit": "Non pode anular o borrado desta páxina porque non ten permisos para editar esta páxina.",
"undelete-cantcreate": "Non pode anular o borrado desta páxina xa que non hai ningunha páxina con ese nome e non ten permisos para creala."
}
"logentry-delete-delete_redir": "$1 {{GENDER:$2|מחק|מחקה}} את ההפניה $3 באמצעות דריסה",
"logentry-delete-restore": "$1 {{GENDER:$2|שחזר|שחזרה}} את הדף $3 ($4)",
"logentry-delete-restore-nocount": "$1 {{GENDER:$2|שחזר|שחזרה}} את הדף $3",
- "restore-count-revisions": "עם {{PLURAL:$1|גרסה אחת|$1 גרסאות}}",
- "restore-count-files": "עם {{PLURAL:$1|קובץ אחד|$1 קבצים}}",
+ "restore-count-revisions": "{{PLURAL:$1|גרסה אחת|$1 גרסאות}}",
+ "restore-count-files": "{{PLURAL:$1|קובץ אחד|$1 קבצים}}",
"logentry-delete-event": "$1 {{GENDER:$2|שינה|שינתה}} את מצב התצוגה של {{PLURAL:$5|פעולת יומן|$5 פעולות יומן}} של $3: $4",
"logentry-delete-revision": "$1 {{GENDER:$2|שינה|שינתה}} את מצב התצוגה של {{PLURAL:$5|גרסה|$5 גרסאות}} בדף $3: $4",
"logentry-delete-event-legacy": "$1 {{GENDER:$2|שינה|שינתה}} את מצב התצוגה של פעולות יומן של $3",
"nchanges": "$1 változtatás",
"enhancedrc-since-last-visit": "$1 az utolsó látogatás óta",
"enhancedrc-history": "történet",
- "recentchanges": "Legutóbbi változtatások",
+ "recentchanges": "Friss változtatások",
"recentchanges-legend": "A friss változtatások beállításai",
"recentchanges-summary": "Ezen a lapon a wikiben történt legutóbbi fejleményeket lehet nyomon követni.",
"recentchanges-noresult": "A megadott időszakban nincs a feltételeknek megfelelő szerkesztés.",
"editfont-monospace": "Fon monospasi",
"editfont-sansserif": "Fon tansèrif",
"editfont-serif": "Fon sèrif",
- "sunday": "Minggu",
+ "sunday": "Ngahad",
"monday": "Senèn",
"tuesday": "Selasa",
"wednesday": "Rebo",
"december-date": "$1 Dhésèmber",
"period-am": "Isuk-Awan",
"period-pm": "Soré-Wengi",
- "pagecategories": "{{PLURAL:$1|Kategori|Kategori}}",
+ "pagecategories": "{{PLURAL:$1|Kategori}}",
"category_header": "Kaca sajeroning kategori \"$1\"",
"subcategories": "Anak kategori",
"category-media-header": "Médhia sajeroning kategori \"$1\"",
"viewhelppage": "Deleng kaca pitulung",
"categorypage": "Deleng kaca kategori",
"viewtalkpage": "Deleng parembugan",
- "otherlanguages": "Ing basa liya",
+ "otherlanguages": "Ing basa liyané",
"redirectedfrom": "(Dilih saka $1)",
"redirectpagesub": "Alih kaca",
"redirectto": "Ngalih menyang:",
- "lastmodifiedat": "Kaca iki dibesut pungkasan nalika $1, tabuh $2.",
+ "lastmodifiedat": "Kaca iki dibesut pungkasan nalika $1, pukul $2.",
"viewcount": "Kaca iki wis diaksès ping {{PLURAL:$1|siji|$1}}.",
"protectedpage": "Kaca kareksa",
"jumpto": "Jujug:",
"aboutpage": "Project:Ngenani",
"copyright": "Kabèh isi kasedyakaké miturut $1.",
"copyrightpage": "{{ns:project}}:Hak cipta",
- "currentevents": "Kadadian saiki",
- "currentevents-url": "Project:Kadadian saiki",
+ "currentevents": "Kadadéan saiki",
+ "currentevents-url": "Project:Kadadéan saiki",
"disclaimers": "Sélakan",
"disclaimerpage": "Project:Sélakan umum",
"edithelp": "Pitulung besut",
"portal": "Gapura paguyuban",
"portal-url": "Project:Garupa paguyuban",
"privacy": "Paugeran privasi",
- "privacypage": "Project:Niti priangga",
+ "privacypage": "Project:Paugeran privasi",
"badaccess": "Aksès ora olèh",
"badaccess-group0": "Panjenengan ora pareng nglakokaké tindhakan sing panjenengan gayuh.",
"badaccess-groups": "Pratingkah panjenengan diwatesi tumrap panganggo ing {{PLURAL:$2|klompoké|klompoké}}: $1.",
"feed-invalid": "Tipe permintaan asupan ora bener.",
"feed-unavailable": "Umpan sindikasi (''syndication feeds'') ora kasedyakaké",
"site-rss-feed": "$1 ''RSS Feed''",
- "site-atom-feed": "Umpan atom $1",
+ "site-atom-feed": "Lebon atom $1",
"page-rss-feed": "\"$1\" ''RSS Feed''",
"page-atom-feed": "\"$1\" ''Atom Feed''",
"red-link-title": "$1 (kaca durung ana)",
"resetpass_forbidden": "Tembung wadi ora bisa diganti",
"resetpass-no-info": "Panjenengan kudu mlebu log kanggo ngaksès kaca iki sacara langsung.",
"resetpass-submit-loggedin": "Ganti tembung wadi",
- "resetpass-submit-cancel": "Batal",
+ "resetpass-submit-cancel": "Wurung",
"resetpass-wrong-oldpass": "Tembung wadi saiki utawa sauntara ora trep.\nPanjengen bokmanawa wis ngganti tembung wadiné panjenengan utawa nyuwun tembung wadi sauntara sing anyar.",
"resetpass-temp-password": "Tembung wadi sauntara:",
"resetpass-abort-generic": "Ngowah tembung sandhi diwurungaké déning èkstènsi.",
"undo-failure": "Suntingan iki ora bisa dibatalakén amerga ana konflik panyuntingan antara.",
"undo-norev": "Besutan iki ora bisa diwurungaké amarga wis ora ana utawa wis dibusak.",
"undo-summary": "Mbalèkaké owahan $1 déning [[Special:Contributions/$2|$2]] ([[User talk:$2|rembugan]])",
- "undo-summary-username-hidden": "Batalna revisi $1 saking panganggo kang didhelikake",
+ "undo-summary-username-hidden": "Balèkaké owahan $1 déning panganggo sing didhelikaké",
"cantcreateaccount-text": "Saka alamat IP iki ('''$1''') ora diparengaké nggawé akun utawa rékening. Sing mblokir utawa ora marengaké iku [[User:$3|$3]].\n\nAlesané miturut $3 yaiku ''$2''",
"cantcreateaccount-range-text": "Nggawe akun saking alamat IP \"$1\", sing termasuk IP sampeyan (<strong>$4</strong>), sampun diblokir kaliyan [[User:$3|$3]].\n\nAlesan pamblokiran yaiku \"$2\"",
"viewpagelogs": "Deleng cathetaning kaca iki",
"mergehistory-same-destination": "Jeneng kaca sumber lan tujuan ora kena padha",
"mergehistory-reason": "Alesan:",
"mergelog": "Gabung log",
- "revertmerge": "Batalna panggabungan",
+ "revertmerge": "Wurung gabung",
"mergelogpagetext": "Ing ngisor iki kapacak daftar panggabungan sajarah kaca ing kaca liyané.",
"history-title": "Sujarah owahaning \"$1\"",
"difference-title": "Prabéda antara owahan \"$1\"",
"datedefault": "Ora ana pilihan",
"prefs-labs": "Piranti lab",
"prefs-user-pages": "Kacaning sing nganggo",
- "prefs-personal": "Panjèrènging sing nganggo",
+ "prefs-personal": "Profil panganggo",
"prefs-rc": "Owah-owahan pungkasan",
"prefs-watchlist": "Pawawangan",
"prefs-editwatchlist": "Besut pawawangan",
"right-delete": "Busak kaca-kaca",
"right-bigdelete": "Busak kaca-kaca mawa sajarah panyuntingan sing gedhé",
"right-deletelogentry": "Busak lan wurung busak èntri log tartamtu",
- "right-deleterevision": "Busak lan batal busak révisi tartamtu kaca-kaca",
+ "right-deleterevision": "Busak lan wurung busak owahan tinamtuné kaca",
"right-deletedhistory": "Ndeleng sajarah èntri-èntri kabusak, tanpa bisa ndeleng apa sing dibusak",
"right-deletedtext": "Delok tèks kabusak lan panggantèn antara rèpisi kabusak",
"right-browsearchive": "Golèk kaca-kaca sing wis dibusak",
"action-import": "impor kaca iki saka wiki liya",
"action-importupload": "impor kaca iki saka pamunggahan berkas",
"action-patrol": "nandhani besutan wong liya yèn wis kapriksa",
- "action-autopatrol": "nandhani besutan panjenengan dhéwé yèn wis kapriksa",
+ "action-autopatrol": "nandhani besutané panjenengan dhéwé yèn wis kapriksa",
"action-unwatchedpages": "deleng pratélan kaca sing ingawasan",
"action-mergehistory": "nggabungaké sajarah kaca iki",
"action-userrights": "ngowahi kabèh hak panganggo",
"rcshowhidecategorization": "$1 kategorisasi kaca",
"rcshowhidecategorization-show": "Tuduhaké",
"rcshowhidecategorization-hide": "Dhelikaké",
- "rclinks": "Tuduhaké $1 owahan kawit $2 dina kapungkur.",
+ "rclinks": "Tuduhaké $1 owahan pungkasan kawit $2 dina kapungkur.",
"diff": "béd",
"hist": "saj",
"hide": "Dhelikaké",
"protectedpagesempty": "Saat ini tidak ada halaman yang sedang dilindungi.",
"protectedpages-page": "Kaca",
"protectedpages-expiry": "Kadaluwarsa",
+ "protectedpages-performer": "Ngreksa panganggo",
+ "protectedpages-params": "Paramèter rereksan",
"protectedpages-reason": "Alesan",
+ "protectedpages-submit": "Tuduhaké kaca",
+ "protectedpages-unknown-timestamp": "Ora dingertèni",
+ "protectedpages-unknown-performer": "Panganggo ora dingertèni",
"protectedtitles": "Sesirah direksa",
"protectedtitlesempty": "Ora ana sesirah sing saiki kareksa mawa paramèter iki.",
+ "protectedtitles-submit": "Tuduhaké sesirah",
"listusers": "Daftar panganggo",
"listusers-editsonly": "Tampilaké mung panganggo sing nduwèni kontribusi",
"listusers-creationsort": "Urut miturut tanggal digawé",
"usereditcount": "$1 {{PLURAL:$1|besutan|besutan}}",
"usercreated": "{{GENDER:$3|Digawé}} $1 wanci $2",
"newpages": "Kaca anyar",
+ "newpages-submit": "Tuduhaké",
"newpages-username": "Asma panganggo:",
"ancientpages": "Kaca paling lawas",
"move": "Pindhahen",
"pager-older-n": "{{PLURAL:$1|1 luwih lawas|$1 luwih lawas}}",
"suppress": "Dhelikaké",
"querypage-disabled": "Kaca kusus iki dipatèni kanggo alesan kinerja.",
+ "apihelp": "Pitulung API",
+ "apihelp-no-such-module": "Modhul \"$1\" ora katemu.",
"apisandbox": "Kothak wedhi API",
+ "apisandbox-jsonly": "JavaScript dibutuhaké saperlu nganggo bak wedhi API.",
"apisandbox-api-disabled": "API dipatèni nèng situs iki.",
"apisandbox-intro": "Anggo kaca iki kanggo njajal-njajal '''API layanan wèb MediaWiki'''.\nRujuk [https://www.mediawiki.org/wiki/API:Main_page the dhokumèntasi API] kanggo panganggoan API luwih rinci. Conto: [https://www.mediawiki.org/wiki/API#A_simple_example ngéntukaké kontèn Kaca Utama]. Pilih laku kanggo ndelok conto luwih akèh.",
+ "apisandbox-fullscreen": "Jembaraké panèl",
+ "apisandbox-fullscreen-tooltip": "Jembaraké panèl bak wedhi kanggo ngisi jendhéla pangluru.",
+ "apisandbox-unfullscreen": "Tuduhaké kaca",
+ "apisandbox-unfullscreen-tooltip": "Ciyutaké panèl bak wedhi supaya pranala navigasi MediaWiki dadi ana.",
"apisandbox-submit": "Gawé panjalukan",
"apisandbox-reset": "Resiki",
+ "apisandbox-retry": "Jajal manèh",
+ "apisandbox-loading": "Ngamot katerangan kanggo modhul API \"$1\"...",
+ "apisandbox-load-error": "Ana masalah nalika ngamot katerangan modhul API \"$1\": $2",
+ "apisandbox-no-parameters": "Modhul API iki ora ana paramèteré.",
+ "apisandbox-helpurls": "Pranala pitulung",
"apisandbox-examples": "Conto",
"apisandbox-dynamic-parameters": "Paramèter tambahan",
"apisandbox-dynamic-parameters-add-label": "Tambah paramèter:",
"apisandbox-results-error": "Ana masalah nalika ngamot wangsulan kanggo panyuwuné API: $1.",
"apisandbox-request-selectformat-label": "Tuduhaké dhata suwunan minangka:",
"apisandbox-request-url-label": "URL dikarepaké:",
- "apisandbox-request-time": "Suwéné panjalukan: $1",
+ "apisandbox-request-json-label": "Nyuwun JSON:",
+ "apisandbox-request-time": "Suwéné panyuwunan: {{PLURAL:$1|$1 ms}}",
+ "apisandbox-results-fixtoken": "Dandanana tokené lan balènana numpuk",
+ "apisandbox-results-fixtoken-fail": "Wurung njupuk token \"$1\".",
+ "apisandbox-alert-page": "Babagan ing kaca iki ora trep.",
+ "apisandbox-alert-field": "Ajiné babagan iki ora trep.",
+ "apisandbox-continue": "Banjuraké",
+ "apisandbox-continue-clear": "Resiki",
+ "apisandbox-continue-help": "{{int:apisandbox-continue}} bakal [https://www.mediawiki.org/wiki/API:Query#Continuing_queries mbanjuraké] panyuwunané sing pungkasan; {{int:apisandbox-continue-clear}} bakal ngresiki paramèter sing gegayutan karo tumindak panglanjutané.",
+ "apisandbox-param-limit": "Isènana <kbd>max</kbd> saperlu nganggo watesan maksimum.",
+ "apisandbox-multivalue-all-namespaces": "$1 (Kabèh mandala aran)",
+ "apisandbox-multivalue-all-values": "$1 (Kabèh aji)",
"booksources": "Sumber buku",
"booksources-search-legend": "Golèk sumber buku",
"booksources-search": "Golèk",
"booksources-text": "Ing ngisor iki kapacak daftar pranala menyang situs liyané sing ngadol buku anyar lan bekas, lan mbok-menawa uga ndarbèni informasi sabanjuré ngenani buku-buku sing lagi panjenengan golèki:",
"booksources-invalid-isbn": "ISBN sing diwènèhaké katonané ora valid; priksa kasalahan penyalinan saka sumber asli.",
+ "magiclink-tracking-rfc": "Kaca sing nganggo pranala ajaib RFC",
+ "magiclink-tracking-rfc-desc": "Kaca iki nganggo pranala ajaib RFC. Delengen [https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Magic_links mediawiki.org] ngenani carané boyongan.",
+ "magiclink-tracking-pmid": "Kaca nganggo pranala ajaib PMID",
"specialloguserlabel": "Panampil:",
"speciallogtitlelabel": "Patujon (judhul utawa panganggo) :",
"log": "Log",
+ "logeventslist-submit": "Tuduhaké",
"all-logs-page": "Kabèh log publik",
"alllogstext": "Gabungan tampilam kabèh log sing ana ing {{SITENAME}}.\nPanjenengan bisa mbatesi tampilan kanthi milih jinis log, jeneng panganggo (sènsitif aksara gedhé/cilik), utawa kaca sing magepokan (uga sènsitif aksara gedhé/cilik).",
"logempty": "Ora ditemokaké èntri log sing pas.",
"log-title-wildcard": "Golèk sesirah sing diwiwiti tulisan iki",
"showhideselectedlogentries": "Tuduhalé/dhelikaké èntri log kapilih",
+ "log-edit-tags": "Besut tag saka isian log sing dipilih",
+ "checkbox-select": "Pilih: $1",
"checkbox-all": "Kabèh",
"checkbox-none": "Ora ana",
"checkbox-invert": "Balèkaké",
"activeusers-count": "$1 {{PLURAL:$1|suntingan|suntingan}} ing {{PLURAL:$3|dina|$3 dina}} pungkasan",
"activeusers-from": "Tampilna panganggo wiwit saka:",
"activeusers-groups": "Tuduhaké panganggo sing mlebu golongan:",
+ "activeusers-excludegroups": "Aja lebokaké panganggo sing kalebu golongan:",
"activeusers-noresult": "Panganggo ora ana.",
"activeusers-submit": "Tuduhaké panganggo aktif",
"listgrouprights": "Hak-hak grup panganggo",
"listgrouprights-removegroup-self": "Mbusak {{PLURAL:$2|klompok|klompok}} saka akuné dhéwé: $1",
"listgrouprights-addgroup-self-all": "Nambahaké kabèh grup menyang akuné dhéwé",
"listgrouprights-removegroup-self-all": "Mbusak kabèh klompok saka akuné dhéwé",
+ "listgrouprights-namespaceprotection-header": "Watesan mandala aran",
+ "listgrouprights-namespaceprotection-namespace": "Mandala aran",
+ "listgrouprights-namespaceprotection-restrictedto": "Hak sing ngidinaké panganggo mbesut",
+ "listgrants": "Idin",
+ "listgrants-grant": "Idin",
+ "listgrants-rights": "Hak",
+ "trackingcategories": "Kategori panglacak",
+ "trackingcategories-msg": "Kategori panglacak",
+ "trackingcategories-name": "Jeneng layang",
"mailnologin": "Ora ana alamat layang e-mail",
"mailnologintext": "Panjenengan kudu [[Special:UserLogin|mlebu log]] lan duwé alamat layang-èl sing trep ing [[Special:Preferences|pilalané]] panjenengan kanggo nglayangi panganggo liyané.",
"emailuser": "Kirim e-mail panganggo iki",
"watch": "Awasi",
"watchthispage": "Periksa kaca iki",
"unwatch": "Ora usah ngawasaké manèh",
- "unwatchthispage": "Batalna olèhé ngawasi kaca iki",
+ "unwatchthispage": "Mandheg ngawasi",
"notanarticle": "Dudu kaca artikel",
"notvisiblerev": "Révisi wis dibusak",
"watchlist-details": "Ngawasaké {{PLURAL:$1|$1 kaca|$1 kaca}}, ora kalebu kaca-kaca dhiskusi.",
"export-download": "Simpen minangka berkas",
"export-templates": "Kalebu cithakan-cithakan",
"export-pagelinks": "Lebokaké kaca sing kagayut nyang jeroning:",
+ "export-manual": "Tambah kaca kanthi manual:",
"allmessages": "Kabèh laporan sistém",
"allmessagesname": "Asma (jeneng)",
"allmessagesdefault": "Tèks baku",
"allmessages-prefix": "Saring nganggo ater-ater:",
"allmessages-language": "Basa:",
"allmessages-filter-submit": "Tumuju menyang",
+ "allmessages-filter-translate": "Pertal",
"thumbnail-more": "Gedhèkaké",
"filemissing": "Barkas ilang",
"thumbnail_error": "Kaluputan nalika nggawé gambar cilik (''thumbnail''): $1",
"thumbnail-temp-create": "Ora bisa nggawé berkas gambar mini sawetara",
"thumbnail-dest-create": "Ora bisa nyimpen bambar mini nèng papan patujon",
"thumbnail_invalid_params": "Paramèter gambar cilik (''thumbnail'') ora absah",
+ "thumbnail_toobigimagearea": "Barkas kanthi alang-ujur luwih gedhé saka $1",
"thumbnail_dest_directory": "Ora bisa nggawé dirèktori tujuan",
"thumbnail_image-type": "Tipe gambar ora didhukung",
"thumbnail_gd-library": "Konfigurasi pustaka GD ora pepak: fungsi $1 ilang",
"import": "Impor kaca",
"importinterwiki": "Impor saka wiki liya",
"import-interwiki-text": "Pilih sawijining wiki lan irah-irahan kaca sing arep diimpor.\nTanggal révisi lan jeneng panyunting bakal dilestarèkaké.\nKabèh aktivitas impor transwiki bakal dilog ing [[Special:Log/import|log impor]].",
+ "import-interwiki-sourcewiki": "Wiki sumber:",
+ "import-interwiki-sourcepage": "Kaca sumber:",
"import-interwiki-history": "Tuladen kabèh vèrsi lawas saka kaca iki",
"import-interwiki-templates": "Katutna kabèh cithakan",
"import-interwiki-submit": "Impor",
+ "import-mapping-default": "Impor nyang pernah gawan",
+ "import-mapping-namespace": "Impor nyang mandala aran:",
+ "import-mapping-subpage": "Impor minangka anak kaca iki:",
"import-upload-filename": "Jeneng barkas:",
"import-comment": "Komentar:",
"importtext": "Mangga èkspor berkas saka wiki sumber nganggo [[Special:Export|prangkat èkspor]].\nSimpen nèng komputer Sampéyan lan unggaha nèng kéné.",
"import-logentry-upload-detail": "$1 {{PLURAL:$1|révisi|révisi}}",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|révisi}} saka $2",
"javascripttest": "Panjajalan JavaScript",
+ "javascripttest-pagetext-unknownaction": "Tumindak ora dingertèni: $1",
"javascripttest-qunit-intro": "Delok [dhokumèntasi panjajalan $1] nèng mediawiki.org.",
"tooltip-pt-userpage": "Kaca {{GENDER:|panganggoning sampéyan}}",
"tooltip-pt-anonuserpage": "Kaca panganggo IP panjenengan",
"tooltip-pt-preferences": "Pilih-pilihaning {{GENDER:|sampéyan}}",
"tooltip-pt-watchlist": "Pratélaning kaca sing sampéyan awasi owah-owahané",
"tooltip-pt-mycontris": "Pratélaning sumbanganing {{GENDER:|sampéyan}}",
- "tooltip-pt-login": "Sampéyan prayogané mlebu masiya ora kudu",
+ "tooltip-pt-anoncontribs": "Pratélan besutané alamat IP iki",
+ "tooltip-pt-login": "Panjenengan prayogané mlebu log, sanadyan ora kudu",
+ "tooltip-pt-login-private": "Panjenengan kudu mlebu log supaya bisa nganggo wiki iki",
"tooltip-pt-logout": "Metu",
- "tooltip-pt-createaccount": "Sampéyan prayogané gawé akun lan mlebu masiya ora kudu",
- "tooltip-ca-talk": "Pirembug ngenani kaca isi",
+ "tooltip-pt-createaccount": "Panjenengan prayogané nggawé akun lan mlebu log, sanadyan ora kudu",
+ "tooltip-ca-talk": "Rembugan ngenani kaca isi",
"tooltip-ca-edit": "Besut kaca iki",
"tooltip-ca-addsection": "Miwiti pérangan anyar",
"tooltip-ca-viewsource": "Kaca iki direksa. \nSampéyan bisa ndeleng sumberé",
- "tooltip-ca-history": "Owahaning kaca iki sadurungé",
+ "tooltip-ca-history": "Owahan sadurungé saka kaca iki",
"tooltip-ca-protect": "Reksa kaca iki",
"tooltip-ca-unprotect": "Ganti panjagan kaca iki",
"tooltip-ca-delete": "Busak kaca iki",
"tooltip-p-logo": "Menyang tepas",
"tooltip-n-mainpage": "Menyang tepas",
"tooltip-n-mainpage-description": "Menyang tepas",
- "tooltip-n-portal": "Bab proyèk, apa sing bisa sampéyan garap, ana ing endi saprelu golèk apa-apa",
- "tooltip-n-currentevents": "Temokaké katerangan latar wuri saka kadadéan saiki",
+ "tooltip-n-portal": "Ngenani proyèk, apa sing bisa panjenengan garap, lang ing endi saprelu golèk apa-apa",
+ "tooltip-n-currentevents": "Golèk katerangan latar wuri saka kadadéan saiki",
"tooltip-n-recentchanges": "Pratélaning owah-owahan pungkasan sajeroning wiki.",
- "tooltip-n-randompage": "Mot waton kaca",
+ "tooltip-n-randompage": "Mot sembarang kaca",
"tooltip-n-help": "Papan kanggo golèk weruh",
- "tooltip-t-whatlinkshere": "Pratélaning kabèh kaca wiki sing nggayut mréné",
+ "tooltip-t-whatlinkshere": "Pratélané kabèh kaca wiki sing nggayut mréné",
"tooltip-t-recentchangeslinked": "Owah-owahan anyar saka kaca-kaca sing nggayut kaca iki",
"tooltip-feed-rss": "''RSS feed'' kanggo kaca iki",
"tooltip-feed-atom": "''Atom feed'' kanggo kaca iki",
"tooltip-t-contributions": "Pratélaning sumbangan {{GENDER:$1|panganggo iki}}",
- "tooltip-t-emailuser": "Kirimna e-mail menyang panganggo iki",
+ "tooltip-t-emailuser": "Kirimi layang-èl nyang {{GENDER:$1|panganggo iki}}",
+ "tooltip-t-info": "Katerangan liyané ngenani kaca iki",
"tooltip-t-upload": "Unggah barkas",
"tooltip-t-specialpages": "Pratélaning kabèh kaca mirunggan",
"tooltip-t-print": "Vèrsi cithak kaca iki",
"tooltip-ca-nstab-category": "Deleng kaca kategori",
"tooltip-minoredit": "Tandhani iki yèn besutan cilik",
"tooltip-save": "Simpen owah-owahaning sampéyan",
+ "tooltip-publish": "Babar owahané panjenengan",
"tooltip-preview": "Pratuduhing owah-owahaning sampéyan. Anggoa cara iki sadurungé nyimpen.",
"tooltip-diff": "Tuduhaké owah-owahan endi sing sampéyan gawé tumrap tulisan iki",
"tooltip-compareselectedversions": "Delengen prabédan antara rong vèrsi kaca iki sing dipilih.",
"anonymous": "{{PLURAL:$1|Panganggo|panganggo}} anon ing {{SITENAME}}.",
"siteuser": "Panganggo {{SITENAME}} $1",
"anonuser": "Panganggo anonim {{SITENAME}} $1",
- "lastmodifiedatby": "Kaca iki pungkasan diowahi $2, $1 déning $3.",
+ "lastmodifiedatby": "Kaca iki pungkasan diowahi pukul $2, $1 déning $3.",
"othercontribs": "Adhedhasar karyané $1.",
"others": "liya-liyané",
- "siteusers": "{{PLURAL:$2|Panganggo|Panganggo-panganggo}} {{SITENAME}} $1",
+ "siteusers": "{{PLURAL:$2|{{GENDER:$1|Panganggo}}|Panganggo}} {{SITENAME}} $1",
"anonusers": "{{PLURAL:$2|Panganggo|Panganggo}} anonim {{SITENAME}} $1",
"creditspage": "Informasi para panulis kaca",
"nocredits": "Ora ana informasi ngenani para panulis ing kaca iki.",
"pageinfo-length": "Panjang halaman (dalam bita)",
"pageinfo-article-id": "ID kaca",
"pageinfo-language": "Basaning isining kaca",
+ "pageinfo-language-change": "owah",
"pageinfo-content-model": "Model isi kaca",
+ "pageinfo-content-model-change": "owah",
"pageinfo-robot-policy": "Diindeks karo robot",
"pageinfo-robot-index": "Entuk",
"pageinfo-robot-noindex": "Ora entuk",
"pageinfo-watchers": "Cacahé pangawas kaca",
+ "pageinfo-visiting-watchers": "Cacahé pandeleng kaca sing nekani besutan anyar",
"pageinfo-few-watchers": "Kurang seka $1 {{PLURAL:$1|wong tilik|wong tilik}}",
"pageinfo-redirects-name": "Jumlah pangalihan menyang kaca iki",
"pageinfo-subpages-name": "Subhalaman halaman ini",
"markedaspatrollederror": "Ora bisa awèh tandha wis dipatroli",
"markedaspatrollederrortext": "Panjenengan kudu nentokaké sawijining révisi kanggo ditandhani minangka sing dipatroli.",
"markedaspatrollederror-noautopatrol": "Panjenengan ora pareng nandhani suntingan panjenengan dhéwé minangka dipatroli.",
- "markedaspatrollednotify": "Perubahan $1 telah dipatroli.",
+ "markedaspatrollednotify": "Owahan $1 wis dipatroli.",
"markedaspatrollederrornotify": "Penanda patroli gagal dibuat.",
"patrol-log-page": "Log patroli",
"patrol-log-header": "Iki log revisi sing wis dipatroli.",
"exif-attributionurl": "Nalika nganggo manèh karya iki, mangga ubungaké nèng",
"exif-preferredattributionname": "Nalika nganggo manèh karya iki, mangga awèhi krèdit",
"exif-pngfilecomment": "Tanggepan berkas PNG",
- "exif-disclaimer": "Pamaidonan",
+ "exif-disclaimer": "Sélakan",
"exif-contentwarning": "Pèngetan kontèn",
"exif-giffilecomment": "Tanggepan berkas GIF",
"exif-intellectualgenre": "Jinis barang",
"confirmemail_body": "Sawijining wong, mbokmenawa panjenengan dhéwé, saka alamat IP $1, wis ndaftaraké akun \"$2\" mawa alamat e-mail iki ing {{SITENAME}}. Bukaka pranala iki ing panjlajah wèb panjenengan.\n\n$3\n\nYèn panjenengan *ora tau* ndaftar akun iki, tutna pranala ing ngisor iki kanggo mbatalaké konfirmasi alamat e-mail:\n\n$5\n\nKonfirmasi iki bakal kadaluwarsa ing $4.",
"confirmemail_body_changed": "Sawijining wong, mbokmenawa panjenengan dhéwé, saka alamat IP $1, wis ndaftaraké akun \"$2\" mawa alamat e-mail iki ing {{SITENAME}}. Bukaka pranala iki ing panjlajah wèb panjenengan.\n\n$3\n\nYèn panjenengan *ora tau* ndaftar akun iki, tutna pranala ing ngisor iki kanggo mbatalaké konfirmasi alamat e-mail:\n\n$5\n\nKonfirmasi iki bakal kadaluwarsa ing $4.",
"confirmemail_body_set": "Sawijining wong, mbokmenawa panjenengan dhéwé, saka alamat IP $1, wis ndaftaraké akun \"$2\" mawa alamat e-mail iki ing {{SITENAME}}. Bukaka pranala iki ing panjlajah wèb panjenengan.\n\n$3\n\nYèn panjenengan *ora tau* ndaftar akun iki, tutna pranala ing ngisor iki kanggo mbatalaké konfirmasi alamat e-mail:\n\n$5\n\nKonfirmasi iki bakal kadaluwarsa ing $4.",
- "confirmemail_invalidated": "Pandhedhesan (konfirmasi) alamat e-mail batal",
- "invalidateemail": "Batalna pandhedhesan (konfirmasi) e-mail",
+ "confirmemail_invalidated": "Konfirmasi alamat layang-èl wurung",
+ "invalidateemail": "Wurung konfirmasi layang-èl",
"scarytranscludedisabled": "[Transklusi cithakan interwiki dipatèni]",
"scarytranscludefailed": "[Olèhé njupuk cithakan $1 gagal]",
"scarytranscludefailed-httpstatus": "[Pengambilan templat $1 gagal: HTTP $2]",
"htmlform-int-toohigh": "Aji sing panjenengan lebokaké kegedhèn ngluwihi aji maksimum $1",
"htmlform-required": "Nilé iki dibutuhaké",
"htmlform-submit": "Kirim",
- "htmlform-reset": "Batalna pangowahan",
+ "htmlform-reset": "Balèkaké owahan",
"htmlform-selectorother-other": "Liya",
"htmlform-no": "Ora",
"htmlform-yes": "Iya",
"feedback-bugcheck": "Apik! Pesthèké kuwi dudu sawijining [$1 bug sing dingertèni].",
"feedback-bugnew": "Aku wis mriksa. Kandakaké bug anyar",
"feedback-bugornote": "Yèn Sampéyan siap njelasaké masalah tèhnis kanthi rinci mangga [$1 laporaké bug].\nUtawa, Sampéyan bisa nganggo pormulir gampang ngisor. Tanggepan Sampéyan bakal ditambahaké nèng kaca \"[$3 $2]\", bebarengan karo jeneng panganggo Sampéyan lan pramban sing Sampéyan anggo.",
- "feedback-cancel": "Batal",
+ "feedback-cancel": "Wurung",
"feedback-close": "Rampung",
"feedback-error1": "Kasalahan: Asil ora dikenal saka API",
"feedback-error2": "Cacad: Gagal mbesut",
"permalink": "Suglung a permanenti",
"print": "I-print",
"view": "Lawen",
+ "view-foreign": "Lawen king $1",
"edit": "Alilan",
"create": "Maglalang",
"editthispage": "I-edit ya ing bulung a ini",
"nstab-template": "Ulma (template)",
"nstab-help": "Saup bulung",
"nstab-category": "Kategoriya",
+ "mainpage-nstab": "Pun Bulung",
"nosuchaction": "Alang makanyan a gawa",
"nosuchactiontext": "E ne kikilalanan ning wiki ing dapat/utus a babanggitan ning URL",
"nosuchspecialpage": "Alang bulung a makabukud/espesial a anti kanian",
"logouttext": "'''Maka logout na ka.'''\n\nMalyari mung isundu ing pamangamit mu king {{SITENAME}} a e ka papakilala, o malyari kang mag login pasibayu anting pareu o aliwang talagamit.\nApansingan mung mapalyaring makalto la pa murin deng aliwang bulung a bala mu maka login ka pa murin, anggang e me lilinisan (clear) ing kekang browser cache.",
"yourname": "Lagyung talagamit (Username):",
"yourpassword": "Kekang password:",
+ "userlogin-yourpassword": "Udyat (Password)",
"yourpasswordagain": "Pakisulat meng pasibayu ing password:",
"yourdomainname": "Ing kekang karinan (domain):",
"externaldberror": "Mapalyaring mika pamagkamali king external authentication (pamagpatutung panlual) ning database, o ala kang paintulut a i-update ya ing kekang account a panlual (external account).",
"createaccount-title": "Pamaglalang account para king {{SITENAME}}",
"createaccount-text": "Ating miglalang account para king kekang e-mail address king {{SITENAME}} ($4) a maki lagyung \"$2\", ampong password a \"$3\".\nKailangan mung mag-login ngeni ba meng ayalilan ing kekang password.\n\nMalyari meng e pansinan ining mensahi, nung pamagkamali ing pamaglalang na niting account.",
"loginlanguagelabel": "Amanu: $1",
+ "pt-login-button": "Maglagda (log in)",
"changepassword": "Alilan ya ing password",
"resetpass_announce": "Gagamit kang pansamantalang code a me e-mail keka aniang mig-login ka.\nBang mayari ing kekang pamag-login, kailangan mung mangibiling bayung password keni:",
"resetpass_header": "Alilan ya ing password",
"resetpass_submit": "Mangibili kang password at maglogin ka",
"changepassword-success": "Melaus ing pamanalili mung password! Ngeni mila-login naka...",
"resetpass_forbidden": "E la malyaring alilan deng password keng wiking ini",
+ "passwordreset": "Alilan udyat (reset password)",
"bold_sample": "Makapasalang kulitan",
"bold_tip": "Makapal pangasulat",
"italic_sample": "Makakiling pangasulat",
"action-edit": "i-edit/alilan ya ing bulung a ini",
"action-managechangetags": "maglalang at magbura tags ibat database",
"nchanges": "$1 {{PLURAL:$1|miyalilan|miyalilan}}",
+ "enhancedrc-history": "amlat/kasaleselan",
"recentchanges": "Bayung mengayalili",
"recentchanges-legend": "Pipamilinan kareng bayung mengayalili",
"recentchanges-summary": "Talukyan mo reng tawling diling mengayalilan king bulung a ini.",
"recentchanges-feed-description": "Talukian mo reng bayung diling mengayalili king wiki king feed a ini.",
+ "rcfilters-savedqueries-new-name-label": "Lagyu",
+ "rcfilters-savedqueries-cancel-label": "E taglus",
+ "rcfilters-filtergroup-watchlist": "Deng bulung a yati lu king babanten",
+ "rcfilters-filter-watchlist-watched-label": "Deng atiu babanten",
+ "rcfilters-filter-watchlist-notwatched-label": "Ala lu king babanten",
+ "rcfilters-filtergroup-lastRevision": "Kasalungsungan a pangayalili",
+ "rcfilters-filter-lastrevision-label": "Kasalungsungan a pangayalili",
"rcnotefrom": "Atilu king lalam deng miyalilan manibat anyang <b>$2</b> (angga king <b>$1</b> makalto).",
"rclistfrom": "Pakit la reng bayung miyalilan manibat anyang $3 $2",
"rcshowhideminor": "$1 malating edit",
+ "rcshowhideminor-show": "Pakit",
+ "rcshowhideminor-hide": "Isalikut",
"rcshowhidebots": "$1 la reng bot",
+ "rcshowhidebots-show": "Pakit",
+ "rcshowhidebots-hide": "Isalikut",
"rcshowhideliu": "$1 talagamit a maka-log in",
+ "rcshowhideliu-hide": "Isalikut",
"rcshowhideanons": "$1 talagamit a e migpakilala",
+ "rcshowhideanons-show": "Pakit",
+ "rcshowhideanons-hide": "Isalikut",
"rcshowhidepatr": "$1 edit a babanten (patrolled edits)",
"rcshowhidemine": "$1 deng elilan ku",
+ "rcshowhidemine-show": "Pakit",
+ "rcshowhidemine-hide": "Isalikut",
"rcshowhidecategorization-show": "Pakit",
"rclinks": "Pakit la reng tauling $1 miyalilan anyang tauling $2 aldo",
"diff": "aliwa",
"suppress": "Alakton (oversight)",
"booksources": "Aklat a pikuanan",
"booksources-search-legend": "Panintunan la reng aklat penibatan",
+ "booksources-search": "Manintun/Manuliksa",
"booksources-text": "Makabili la king lalam deng suglung kareng aliwang karinan o site a mamisaling librung bayu at megamit na, at mapalyaring atin la muring aliwang informaciun kareng librung paintunan mu.",
"specialloguserlabel": "Talagamit:",
"speciallogtitlelabel": "Bansag:",
"namespace": "Pirinan lagyu (Namespace):",
"invert": "Ibaligtad la pamitukituki",
"blanknamespace": "(Pun)",
- "contributions": "Ambag da reng gagamit",
+ "contributions": "{{GENDER:$1|User}} deng ambag",
"contributions-title": "Deng ambag da reng talagamit para king $1",
"mycontris": "Deng kakung ambag",
"anoncontribs": "Deng ambag",
"whatlinkshere-prev": "{{PLURAL:$1|minunang|minunang $1}}",
"whatlinkshere-next": "{{PLURAL:$1|next|tutuking $1}}",
"whatlinkshere-links": "← suglung",
- "whatlinkshere-hideredirs": "$1 pamanalis direksiun (redirects)",
+ "whatlinkshere-hideredirs": "$1 pamanalis direksyun (redirects)",
"whatlinkshere-hidetrans": "$1 langkap (transclusions)",
"whatlinkshere-hidelinks": "$1 suglung",
"whatlinkshere-filters": "Panialak (filters)",
"file-info-size": "$1 × $2 pixel, sukad ning simpan: $3, MIME type: $4",
"file-nohires": "Ala nang mas malino pa.",
"svg-long-desc": "SVG file, masasabing $1 × $2 pixels, dagul ning simpan: $3",
- "show-big-image": "Pekamalino",
+ "show-big-image": "Ing minunang simpan (file)",
"newimages": "Pirinan kareng bayung simpan (new files)",
"imagelisttext": "Ing makatuki tala yang '''$1''' {{PLURAL:$1|simpan|simpan}} a misamasan $2.",
"newimages-summary": "Ining bulung a makabukud papakit no reng simpan (file) a tauling milulan.",
"watchlisttools-view": "Lon la reng miyalilan a makaugne kaniti",
"watchlisttools-edit": "Lon ya ampong i-edit ing tala ding babanten (watchlist)",
"watchlisttools-raw": "I-edit ya ing e pa metagin a tala ding babanten (raw watchlist)",
+ "signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|pamisabi-sabi]])",
"version": "Bersion",
"version-specialpages": "Bulung a makabukud",
"version-other": "Aliwa",
"readonlywarning": "<strong>Сэрэтии: Сиэрбэргэ техническай үлэ бара турар, онон киллэрбит уларытыыларыҥ тута бигэргэнэр кыахтара суох.</strong>\nОнон уларытыыгын тиэкистээх билэҕэ уган хаалларан баран, манна кэлин угуоххун сөп.\n\nХааччаҕы туруорбут дьаһабыл маннык быһаарыыны хаалларбыт: $1",
"protectedpagewarning": "'''Сэрэтии: Бу сирэй хатанан турар, администратор бырааптаах эрэ кыттааччылар уларытар кыахтаахтар.'''\nАллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
"semiprotectedpagewarning": "'''Биллэрии:''' Бу сирэй хатанан турар; ааттарын билиһиннэрбит эрэ кыттааччылар уларытар кыахтаахтар.\nАллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
- "cascadeprotectedwarning": "<strong>Сэрэтии:</strong> Бу сирэйи дьаһабыллар эрэ уларытар кыахтаахтар, тоҕо диэтэххэ сирэй каскаднай көмүскэллээх {{PLURAL:$1|сирэй бөлөҕөр|сирэйдэр бөлөхтөрүгэр}} киирэр:",
+ "cascadeprotectedwarning": "<strong>Сэрэтии:</strong> Бу сирэйи [[Special:ListGroupRights|анал бырааптаах дьон]] эрэ уларытар кыахтаахтар, тоҕо диэтэххэ сирэй каскаднай көмүскэллээх {{PLURAL:$1|сирэй бөлөҕөр|сирэйдэр бөлөхтөрүгэр}} киирэр:",
"titleprotectedwarning": "'''Сэрэтии: Маннык ааттаах сирэйи уларытар бобуллубут, [[Special:ListGroupRights|анал бырааптаах эрэ дьон]] уларытыахтарын сөп .'''\nАллара сурунаал бүтэһик суруга көрдөрүлүннэ:",
"templatesused": "Манна туттуллубут {{PLURAL:$1|халыып|халыыптар}} :",
"templatesusedpreview": "Манна туттуллубут {{PLURAL:$1|халыып|халыыптар}} бигэргэтиэх иннинэ көстүүлэрэ:",
"saveusergroups": "{{GENDER:$1|Кыттааччы}} бөлөхтөрүн бигэргэт",
"userrights-groupsmember": "Бу бөлөхтөргө киирэр:",
"userrights-groupsmember-auto": "Көстүбэт чилиэн:",
- "userrights-groups-help": "Ð\91Ñ\83 киһи кииÑ\80Ñ\8dÑ\80 бөлөÑ\85Ñ\82Ó©Ñ\80үн Ñ\83лаÑ\80Ñ\8bÑ\82Ñ\8bаÑ\85Ñ\85Ñ\8bн Ñ\81өп:\n* Ð\91өлөÑ\85 ааÑ\82Ñ\8bн Ñ\82аһÑ\8bгаÑ\80 бÑ\8dлиÑ\8d Ñ\82Ñ\83Ñ\80аÑ\80 бÑ\83оллаÒ\95Ñ\8bна бÑ\83 кÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b бÑ\83 бөлөÑ\85Ñ\85Ó© кииÑ\80Ñ\8dÑ\80.\n* Ð\91Ñ\8dлиÑ\8d Ñ\81Ñ\83оÑ\85 бÑ\83оллаÒ\95Ñ\8bна - кÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b бөлөÑ\85Ñ\85Ó© кииÑ\80бÑ\8dÑ\82\n* Ð\9cаннÑ\8bк бÑ\8dлиÑ\8d * кÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b бөлөÑ\85Ñ\85Ó© кииÑ\80Ñ\8dÑ\80ин/кииÑ\80бÑ\8dÑ\82ин Ñ\83лаÑ\80Ñ\8bÑ\82аÑ\80 кÑ\8bаÒ\95Ñ\8bÒ¥ Ñ\81Ñ\83оÒ\95Ñ\83н көÑ\80дөÑ\80Ó©Ñ\80.",
+ "userrights-groups-help": "Ð\91Ñ\83 киһи кииÑ\80Ñ\8dÑ\80 бөлөÑ\85Ñ\82Ó©Ñ\80үн Ñ\83лаÑ\80Ñ\8bÑ\82Ñ\8bаÑ\85Ñ\85Ñ\8bн Ñ\81өп:\n* Ð\91өлөÑ\85 ааÑ\82Ñ\8bн Ñ\82аһÑ\8bгаÑ\80 бÑ\8dлиÑ\8d Ñ\82Ñ\83Ñ\80аÑ\80 бÑ\83оллаÒ\95Ñ\8bна бÑ\83 кÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b ол бөлөÑ\85Ñ\85Ó© кииÑ\80Ñ\8dÑ\80.\n* Ð\91Ñ\8dлиÑ\8d Ñ\81Ñ\83оÑ\85 бÑ\83оллаÒ\95Ñ\8bна - кÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b ол бөлөÑ\85Ñ\85Ó© кииÑ\80бÑ\8dÑ\82\n* Ð\9cаннÑ\8bк бÑ\8dлиÑ\8d * кÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b бөлөÑ\85Ñ\85Ó© кииÑ\80Ñ\8dÑ\80ин/кииÑ\80бÑ\8dÑ\82ин Ñ\83лаÑ\80Ñ\8bÑ\82аÑ\80 кÑ\8bаÒ\95Ñ\8bÒ¥ Ñ\81Ñ\83оÒ\95Ñ\83н көÑ\80дөÑ\80Ó©Ñ\80.\n* Ð\9cаннÑ\8bк бÑ\8dлиÑ\8d # кÑ\8bÑ\82Ñ\82ааÑ\87Ñ\87Ñ\8b бөлөÑ\85Ñ\85Ó© кииÑ\80Ñ\8dÑ\80 болдÑ\8cоÒ\95Ñ\83н Ñ\85ойÑ\83Ñ\82аÑ\82аÑ\80 бÑ\8bÑ\80аапÑ\82ааÑ\85Ñ\85Ñ\8bн көÑ\80дөÑ\80Ó©Ñ\80, ол Ñ\8dÑ\80Ñ\8dÑ\8dÑ\80и Ñ\8dÑ\80дÑ\8dлÑ\8dÑ\82Ñ\8dÑ\80 кÑ\8bаÒ\95Ñ\8bÒ¥ Ñ\81Ñ\83оÑ\85.",
"userrights-reason": "Төрүөтэ:",
"userrights-no-interwiki": "Атын биикилэргэ кыттааччылар бырааптарын уларытар быраабыҥ суох.",
"userrights-nodatabase": "$1 билэ тиһигэ (олоҕо, база данных) суох эбэтэр локальнай буолбатах.",
"userrights-changeable-col": "Эн уларытар кыахтаах бөлөхтөрүҥ",
"userrights-unchangeable-col": "Бу бөлөхтөрү уларытар кыаҕыҥ суох",
+ "userrights-expiry-current": "Болдьоҕо баччаҕа бүтэр: $1",
+ "userrights-expiry-none": "Хаһан да",
+ "userrights-expiry": "Болдьоҕо баччаҕа бүтэр:",
+ "userrights-expiry-existing": "Билиҥҥи болдьоҕо: $3, $2",
+ "userrights-expiry-othertime": "Атын болдьох:",
+ "userrights-expiry-options": "1 күн:1 күн,1 нэдиэлэ:1 нэдиэлэ,1 ый:1 ый,3 ый:3 ый,6 ый:6 ый,1 сыл:1 сыл",
+ "userrights-invalid-expiry": "«$1» бөлөх болдьоҕо алҕастаах ыйыллыбыт.",
+ "userrights-expiry-in-past": "«$1» бөлөх болдьоҕо ааспыт кэмҥэ ыйыллыбыт.",
"userrights-conflict": "Кыттааччы быраабын быһаарарга алҕас таҕыста! Хатылаан көр.",
"group": "Бөлөх:",
"group-user": "Кыттааччылар",
"recentchanges-summary": "Пратите скорашње измене на овој страници.",
"recentchanges-noresult": "Нема промена у задатом времену за задате критеријуме.",
"recentchanges-feed-description": "Пратите скорашње измене уз помоћ овог довода.",
- "recentchanges-label-newpage": "Ð\9dова страница",
+ "recentchanges-label-newpage": "Ð\9eвом изменом напÑ\80авÑ\99ена Ñ\98е нова страница",
"recentchanges-label-minor": "Ово је мања измена",
"recentchanges-label-bot": "Ову измену је направио бот",
"recentchanges-label-unpatrolled": "Ова измена још није патролирана",
"rawhtml-notallowed": "<html> тагови не могу да се користе ван нормалних страница.",
"gotointerwiki": "Напуштам пројекат {{SITENAME}}",
"gotointerwiki-invalid": "Одабрани наслов је невалидан.",
- "gotointerwiki-external": "Управо ћете да напустите сајт {{SITENAME}} да бисте посетили пројекат [[$2]], који је засебан веб-сајт.\n\n'''[$1 Продужи на $1]'''",
+ "gotointerwiki-external": "Управо ћете да напустите пројекат {{SITENAME}} да бисте на засебном веб-сајту посетили [[$2]].\n\n'''[$1 Продужи на $1]'''",
"undelete-cantedit": "Не можете повратити ову страницу јер немате дозволу да је уређујете.",
"undelete-cantcreate": "Не можете повратити ову страницу јер нема постојеће странице са овим именом и немате дозволу да направите ову страницу."
}
"recentchanges-summary": "Pratite skorašnje izmene na ovoj stranici.",
"recentchanges-noresult": "Nema promena u zadatom vremenu za zadate kriterijume.",
"recentchanges-feed-description": "Pratite skorašnje izmene uz pomoć ovog dovoda.",
- "recentchanges-label-newpage": "Nova stranica",
+ "recentchanges-label-newpage": "Ovom izmenom napravljena je nova izmena",
"recentchanges-label-minor": "Ovo je manja izmena",
"recentchanges-label-bot": "Ovu izmenu je napravio bot",
"recentchanges-label-unpatrolled": "Ova izmena još nije patrolirana",
"authmanager-email-label": "Imejl",
"authmanager-email-help": "Imejl adresa",
"changecredentials": "Promjena akreditiva",
- "removecredentials": "Uklanjanje akreditiva"
+ "removecredentials": "Uklanjanje akreditiva",
+ "gotointerwiki-external": "Upravo ćete da napustite projekat {{SITENAME}} da biste na zasebnom veb-sajtu posetili [[$2]].\n\n'''[$1 Produži na $1]'''"
}
"datedefault": "ไม่ตั้งค่า",
"prefs-labs": "คุณสมบัติทดลอง",
"prefs-user-pages": "หน้าผู้ใช้",
- "prefs-personal": "à¹\82à¸\9eรà¹\84à¸\9fลà¹\8cผู้ใช้",
+ "prefs-personal": "à¸\82à¹\89à¸à¸¡à¸¹à¸¥ผู้ใช้",
"prefs-rc": "ปรับปรุงล่าสุด",
"prefs-watchlist": "รายการเฝ้าดู",
"prefs-editwatchlist": "แก้ไขรายการเฝ้าดู",
"recentchanges-label-plusminus": "Nagbago ang laki ng pahina sa ganitong bilang ng mga byte",
"recentchanges-legend-heading": "<strong>Gabay:</strong>",
"recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (tingnan din [[Special:NewPages|ang talaan ng mga bagong pahina]])",
+ "rcfilters-quickfilters": "Mga mabilisang kawing",
+ "rcfilters-savedqueries-rename": "Pangalanang muli",
+ "rcfilters-savedqueries-remove": "Alisin",
+ "rcfilters-savedqueries-new-name-label": "Pangalan",
+ "rcfilters-savedqueries-cancel-label": "Balewalain",
"rcfilters-restore-default-filters": "Ibalik ang mga napagkaukulang 'filters'",
"rcfilters-clear-all-filters": "Burahin lahat ng mga 'filters'",
"rcfilters-empty-filter": "Walang aktibong panangga. Lahat ay ipinamalas.",
"special-characters-group-khmer": "Khmer",
"mw-widgets-dateinput-placeholder-day": "TTTT-BB-AA",
"mw-widgets-dateinput-placeholder-month": "TTTT-BB",
- "randomrootpage": "Alin mang pinag-ugatang/pinagmulang pahina"
+ "date-range-from": "Mula sa petsang:",
+ "randomrootpage": "Alin mang pinag-ugatang/pinagmulang pahina",
+ "gotointerwiki-invalid": "Di-wasto ang tinukoy na pamagat."
}
"currentrevisionlink": "Алиез версия",
"cur": "али",
"last": "азьв.",
- "history-fieldset-title": "Ð\98Ñ\81Ñ\82оÑ\80иез воÑ\88Ñ\82Ó¥Ñ\81Ñ\8cкон понна",
- "history-show-deleted": "Ӵотаны ӵушылэмъёссэ гинэ",
+ "history-fieldset-title": "ТÑ\83паÑ\82онÑ\8aÑ\91Ñ\81Ñ\82Ñ\8b Ñ\83Ñ\82Ñ\87анÑ\8b",
+ "history-show-deleted": "Ӵушылэм тупатонъёссэ гинэ",
"rev-delundel": "возьматыны/ватыны",
"rev-showdeleted": "возьматоно",
"revdelete-show-file-submit": "Бен",
"prefs-editing": "Тупатон",
"yourlanguage": "Интерфейслэн кылыз:",
"prefs-preview": "Бамез эскерон",
- "userrights": "Ð\9fÑ\8bÑ\80иÑ\81Ñ\8cкиÑ\81Ñ\8cлÑ\8dн пÑ\80авооÑ\81Ñ\8bныз",
+ "userrights": "Ð\92икиавÑ\82оÑ\80лÑ\8dн пÑ\80авооÑ\81ыз",
"editusergroup": "Викиавторлэсь группаоссэ возьматыны",
"group-autoconfirmed": "Авто-юнматэм викиавторъёс",
"group-bot": "Ботъёс",
"Visem",
"MMH",
"Олександр",
- "Similartothissimilartothat"
+ "Similartothissimilartothat",
+ "Bunyk"
]
},
"tog-underline": "Підкреслювання посилань:",
"pageid": "ID сторінки $1",
"rawhtml-notallowed": "Теги <html> не можна використовувати за межами звичайних сторінок.",
"gotointerwiki": "Ви покидаєте сайт {{SITENAME}}",
- "gotointerwiki-invalid": "Ð\92казана назва бÑ\83ла непÑ\80ипÑ\83Ñ\81Ñ\82имоÑ\8e.",
+ "gotointerwiki-invalid": "Ð\92казана назва непÑ\80ипÑ\83Ñ\81Ñ\82има.",
"gotointerwiki-external": "Ви збираєтесь покинути сайт {{SITENAME}}, щоб відвідати проект [[$2]], який є окремим веб-сайтом.\n\n[$1 Клацніть тут, щоб продовжити, перейшовши до $1].",
"undelete-cantedit": "Ви не можете відновити цю сторінку, оскільки Ви не маєте прав на редагування цієї сторінки.",
"undelete-cantcreate": "Ви не можете відновити цю сторінку, оскільки сторінка з такою назвою не існує, і Ви не маєте прав на створення цієї сторінки."
if ( $handler ) {
$metadata = MediaWiki\quietCall( 'unserialize', $props['metadata'] );
- $publishOptions['headers'] = $handler->getContentHeaders( $metadata );
+ $publishOptions['headers'] = $handler->getContentHeaders(
+ $metadata, $props['width'], $props['height']
+ );
} else {
$publishOptions['headers'] = [];
}
$count = 0;
$dbr = $this->getDB( DB_REPLICA );
+
do {
$conds = [ "img_name > {$dbr->addQuotes( $start )}" ];
+
if ( strlen( $end ) ) {
$conds[] = "img_name <= {$dbr->addQuotes( $end )}";
}
+
$res = $dbr->select( 'image', '*', $conds,
__METHOD__, [ 'LIMIT' => $this->mBatchSize, 'ORDER BY' => 'img_name ASC' ] );
$res->rewind();
}
+ $backendOperations = [];
+
foreach ( $res as $row ) {
$file = $repo->newFileFromRow( $row );
$headers = $file->getContentHeaders();
+
if ( count( $headers ) ) {
- $this->updateFileHeaders( $file, $headers );
+ $backendOperations[] = [
+ 'op' => 'describe', 'src' => $file->getPath(), 'headers' => $headers
+ ];
}
+
// Do all of the older file versions...
foreach ( $file->getHistory() as $oldFile ) {
$headers = $oldFile->getContentHeaders();
if ( count( $headers ) ) {
- $this->updateFileHeaders( $oldFile, $headers );
+ $backendOperations[] = [
+ 'op' => 'describe', 'src' => $oldFile->getPath(), 'headers' => $headers
+ ];
}
}
+
if ( $this->hasOption( 'verbose' ) ) {
- $this->output( "Updated headers for file '{$row->img_name}'.\n" );
+ $this->output( "Queued headers update for file '{$row->img_name}'.\n" );
}
- ++$count;
+
$start = $row->img_name; // advance
}
+
+ $backendOperationsCount = count( $backendOperations );
+ $count += $backendOperationsCount;
+
+ $this->output( "Updating headers for {$backendOperationsCount} file(s).\n" );
+ $this->updateFileHeaders( $repo, $backendOperations );
} while ( $res->numRows() === $this->mBatchSize );
$this->output( "Done. Updated headers for $count file(s).\n" );
}
- protected function updateFileHeaders( File $file, array $headers ) {
- $status = $file->getRepo()->getBackend()->describe( [
- 'src' => $file->getPath(), 'headers' => $headers
- ] );
+ protected function updateFileHeaders( $repo, $backendOperations ) {
+ $status = $repo->getBackend()->doQuickOperations( $backendOperations );
+
if ( !$status->isGood() ) {
$this->error( "Encountered error: " . print_r( $status, true ) );
}
preview: true,
sectionpreview: section !== '',
disableeditsection: true,
+ useskin: mw.config.get( 'skin' ),
uselang: mw.config.get( 'wgUserLanguage' )
} );
if ( section === 'new' ) {
( function ( mw, $ ) {
- mw.page = {};
-
$( function () {
var $diff;
}
// Expose public methods
- mw.page.watch = {
- updateWatchLink: updateWatchLink
+ mw.page = {
+ watch: {
+ updateWatchLink: updateWatchLink
+ }
};
$( function () {
<pre>Foo →bar</pre>
!! html/parsoid
-<pre about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"#tag:pre","function":"#tag"},"params":{"1":{"wt":"Foo <nowiki>&rarr;bar</nowiki>"}},"i":0}}]}'>Foo <span typeof="mw:Entity">→</span>bar</pre>
+<pre about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"#tag:pre","function":"tag"},"params":{"1":{"wt":"Foo <nowiki>&rarr;bar</nowiki>"}},"i":0}}]}'>Foo <span typeof="mw:Entity">→</span>bar</pre>
!! end
## Don't expect this to rt, Parsoid drops the unmatched closing pre tags that
<p>{{echo|[[Foo}}</p>
!! end
+!! test
+Wikilinks with embedded newlines are not broken
+!! wikitext
+{{echo|[[ Foo
+B
+C]]}}
+!! html/php
+<p>[[ Foo
+B
+C]]
+</p>
+!! html/parsoid
+<p typeof="mw:Transclusion" data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"[[ Foo\nB\nC]]"}},"i":0}}]}'>[[ Foo B C]]</p>
+!! end
+
!! test
Broken templates
!! options
|}
!! html/parsoid
<table>
-<tbody><tr><td> Test <ref about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"#tag:ref","function":"#tag"},"params":{"1":{"wt":"One two \"[[three]]\" four"}},"i":0}}]}'>One two "<a rel="mw:WikiLink" href="./Three" title="Three">three</a>" four</ref></td></tr>
+<tbody><tr><td> Test <ref about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[{"k":"1"}]]}' data-mw='{"parts":[{"template":{"target":{"wt":"#tag:ref","function":"tag"},"params":{"1":{"wt":"One two \"[[three]]\" four"}},"i":0}}]}'>One two "<a rel="mw:WikiLink" href="./Three" title="Three">three</a>" four</ref></td></tr>
</tbody></table>
!! end
| is not a magic word here but | is still a magic word here
</p>
!! html/parsoid
-<p><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","href":"./Template:!"},"params":{},"i":0}}]}'>|</span> is a magic word there and <span about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","href":"./Template:!"},"params":{},"i":0}}]}'>|</span> is still a magic word here
-| is not a magic word here but <span about="#mwt3" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","href":"./Template:!"},"params":{},"i":0}}]}'>|</span> is still a magic word here</p>
-
+<p><span about="#mwt1" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","function":"!"},"params":{},"i":0}}]}'>|</span> is a magic word there and <span about="#mwt2" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","function":"!"},"params":{},"i":0}}]}'>|</span> is still a magic word here
+| is not a magic word here but <span about="#mwt3" typeof="mw:Transclusion" data-parsoid='{"pi":[[]]}' data-mw='{"parts":[{"template":{"target":{"wt":"!","function":"!"},"params":{},"i":0}}]}'>|</span> is still a magic word here</p>
!! end
!! test
}}
</table>
!! html/parsoid
-<table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["<table>\n",{"template":{"target":{"wt":"#if:","function":"#if"},"params":{"1":{"wt":"\n<td>foo</td>\n"}},"i":0}},"\n</table>"]}' data-parsoid='{"stx":"html","pi":[[{"k":"1"}]]}'>
+<table about="#mwt1" typeof="mw:Transclusion" data-mw='{"parts":["<table>\n",{"template":{"target":{"wt":"#if:","function":"if"},"params":{"1":{"wt":"\n<td>foo</td>\n"}},"i":0}},"\n</table>"]}' data-parsoid='{"stx":"html","pi":[[{"k":"1"}]]}'>
</table>
!! end
'SerialNumber' => '123456789',
'_MW_PNG_VERSION' => 1,
],
- 'width' => 50,
- 'height' => 50,
];
$this->assertEquals( $expected, $result );
}
'GPSAltitude' => -3.141592653,
'GPSDOP' => '5/1',
'GPSVersionID' => '2.2.0.0',
- 'Height' => 10,
- 'Width' => 40,
];
$this->assertEquals( $expected, $data, '', 0.0000000001 );
}
$expected = [
'UserComment' => 'test⁔comment',
- 'Height' => 10,
- 'Width' => 40,
];
$this->assertEquals( $expected, $data );
}
'frameCount' => 1,
'looped' => false,
'xmp' => '',
- 'width' => 45,
- 'height' => 30,
]
],
[
'frameCount' => 4,
'looped' => true,
'xmp' => '',
- 'width' => 45,
- 'height' => 30,
]
],
'frameCount' => 4,
'looped' => true,
'comment' => [ 'GIƒ·test·file' ],
- 'width' => 45,
- 'height' => 30,
]
],
];
[ 'Something invalid!', GIFHandler::METADATA_BAD ],
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
[
- 'a:6:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}s:5:"width";i:45;s:6:"height";i:30;}',
+ 'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}',
GIFHandler::METADATA_GOOD
],
// @codingStandardsIgnoreEnd
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
[
'nonanimated.gif',
- 'a:6:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}s:5:"width";i:45;s:6:"height";i:30;}'
+ 'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file ⁕ Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}'
],
[
'animated-xmp.gif',
- 'a:6:{s:10:"frameCount";i:4;s:6:"looped";b:1;s:8:"duration";d:2.399999999999999911182158029987476766109466552734375;s:8:"metadata";a:5:{s:6:"Artist";s:7:"Bawolff";s:16:"ImageDescription";a:2:{s:9:"x-default";s:18:"A file to test GIF";s:5:"_type";s:4:"lang";}s:15:"SublocationDest";s:13:"The interwebs";s:14:"GIFFileComment";a:1:{i:0;s:16:"GIƒ·test·file";}s:15:"_MW_GIF_VERSION";i:1;}s:5:"width";i:45;s:6:"height";i:30;}'
+ 'a:4:{s:10:"frameCount";i:4;s:6:"looped";b:1;s:8:"duration";d:2.399999999999999911182158029987476766109466552734375;s:8:"metadata";a:5:{s:6:"Artist";s:7:"Bawolff";s:16:"ImageDescription";a:2:{s:9:"x-default";s:18:"A file to test GIF";s:5:"_type";s:4:"lang";}s:15:"SublocationDest";s:13:"The interwebs";s:14:"GIFFileComment";a:1:{i:0;s:16:"GIƒ·test·file";}s:15:"_MW_GIF_VERSION";i:1;}}'
],
// @codingStandardsIgnoreEnd
];
$file = $this->dataFile( 'test.jpg', 'image/jpeg' );
$res = $this->handler->getMetadata( $file, $this->filePath . 'test.jpg' );
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- $expected = 'a:9:{s:16:"ImageDescription";s:9:"Test file";s:11:"XResolution";s:4:"72/1";s:11:"YResolution";s:4:"72/1";s:14:"ResolutionUnit";i:2;s:16:"YCbCrPositioning";i:1;s:15:"JPEGFileComment";a:1:{i:0;s:17:"Created with GIMP";}s:22:"MEDIAWIKI_EXIF_VERSION";i:2;s:5:"Width";i:20;s:6:"Height";i:20;}';
+ $expected = 'a:7:{s:16:"ImageDescription";s:9:"Test file";s:11:"XResolution";s:4:"72/1";s:11:"YResolution";s:4:"72/1";s:14:"ResolutionUnit";i:2;s:16:"YCbCrPositioning";i:1;s:15:"JPEGFileComment";a:1:{i:0;s:17:"Created with GIMP";}s:22:"MEDIAWIKI_EXIF_VERSION";i:2;}';
// @codingStandardsIgnoreEnd
// Unserialize in case serialization format ever changes.
$file = $this->dataFile( 'test.jpg', 'image/jpeg' );
$res = $this->handler->getCommonMetaArray( $file );
$expected = [
- 'Height' => 20,
- 'Width' => 20,
'ImageDescription' => 'Test file',
'XResolution' => '72/1',
'YResolution' => '72/1',
[ 'Something invalid!', PNGHandler::METADATA_BAD ],
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
[
- 'a:8:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:5:"width";i:50;s:6:"height";i:50;s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}',
+ 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}',
PNGHandler::METADATA_GOOD
],
// @codingStandardsIgnoreEnd
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
[
'rgb-na-png.png',
- 'a:8:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:5:"width";i:50;s:6:"height";i:50;s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}'
+ 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}'
],
[
'xmp.png',
- 'a:8:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:1;s:9:"colorType";s:14:"index-coloured";s:5:"width";i:50;s:6:"height";i:50;s:8:"metadata";a:2:{s:12:"SerialNumber";s:9:"123456789";s:15:"_MW_PNG_VERSION";i:1;}}'
+ 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:1;s:9:"colorType";s:14:"index-coloured";s:8:"metadata";a:2:{s:12:"SerialNumber";s:9:"123456789";s:15:"_MW_PNG_VERSION";i:1;}}'
],
// @codingStandardsIgnoreEnd
];
$res = $this->handler->getMetadata( null, $this->filePath . 'test.tiff' );
// @codingStandardsIgnoreStart Ignore Generic.Files.LineLength.TooLong
- $expected = 'a:18:{s:10:"ImageWidth";i:20;s:11:"ImageLength";i:20;s:13:"BitsPerSample";a:3:{i:0;i:8;i:1;i:8;i:2;i:8;}s:11:"Compression";i:5;s:25:"PhotometricInterpretation";i:2;s:16:"ImageDescription";s:17:"Created with GIMP";s:12:"StripOffsets";i:8;s:11:"Orientation";i:1;s:15:"SamplesPerPixel";i:3;s:12:"RowsPerStrip";i:64;s:15:"StripByteCounts";i:238;s:11:"XResolution";s:19:"1207959552/16777216";s:11:"YResolution";s:19:"1207959552/16777216";s:19:"PlanarConfiguration";i:1;s:14:"ResolutionUnit";i:2;s:22:"MEDIAWIKI_EXIF_VERSION";i:2;s:5:"Width";i:20;s:6:"Height";i:20;}';
+ $expected = 'a:16:{s:10:"ImageWidth";i:20;s:11:"ImageLength";i:20;s:13:"BitsPerSample";a:3:{i:0;i:8;i:1;i:8;i:2;i:8;}s:11:"Compression";i:5;s:25:"PhotometricInterpretation";i:2;s:16:"ImageDescription";s:17:"Created with GIMP";s:12:"StripOffsets";i:8;s:11:"Orientation";i:1;s:15:"SamplesPerPixel";i:3;s:12:"RowsPerStrip";i:64;s:15:"StripByteCounts";i:238;s:11:"XResolution";s:19:"1207959552/16777216";s:11:"YResolution";s:19:"1207959552/16777216";s:19:"PlanarConfiguration";i:1;s:14:"ResolutionUnit";i:2;s:22:"MEDIAWIKI_EXIF_VERSION";i:2;}';
// @codingStandardsIgnoreEnd
// Re-unserialize in case there are subtle differences between how versions
public static function provideGetMetadata() {
return [
[ '80x60-2layers.xcf',
- 'a:3:{s:9:"colorType";s:16:"truecolour-alpha";s:5:"width";i:80;s:6:"height";i:60;}'
+ 'a:1:{s:9:"colorType";s:16:"truecolour-alpha";}'
],
[ '80x60-RGB.xcf',
- 'a:3:{s:9:"colorType";s:16:"truecolour-alpha";s:5:"width";i:80;s:6:"height";i:60;}'
+ 'a:1:{s:9:"colorType";s:16:"truecolour-alpha";}'
],
[ '80x60-Greyscale.xcf',
- 'a:3:{s:9:"colorType";s:15:"greyscale-alpha";s:5:"width";i:80;s:6:"height";i:60;}'
+ 'a:1:{s:9:"colorType";s:15:"greyscale-alpha";}'
],
];
}
$this->insertPage( 'Example Foo' );
$this->insertPage( 'Example Foo/Bar' );
$this->insertPage( 'Example/Baz' );
+ $this->insertPage( 'Sample' );
+ $this->insertPage( 'Sample Ban' );
+ $this->insertPage( 'Sample Eat' );
+ $this->insertPage( 'Sample Who' );
+ $this->insertPage( 'Sample Zoo' );
$this->insertPage( 'Redirect test', '#REDIRECT [[Redirect Test]]' );
$this->insertPage( 'Redirect Test' );
$this->insertPage( 'Redirect Test Worse Result' );
] ],
[ [
'Main namespace with title prefix',
- 'query' => 'Ex',
+ 'query' => 'Sa',
'results' => [
- 'Example',
- 'Example/Baz',
- 'Example Bar',
+ 'Sample',
+ 'Sample Ban',
+ 'Sample Eat',
],
// Third result when testing offset
'offsetresult' => [
- 'Example Foo',
+ 'Sample Who',
],
] ],
[ [
$results = array_map( function( Title $t ) {
return $t->getPrefixedText();
}, $results );
+
$this->assertEquals(
$case['results'],
$results,
$backend->unpersist();
$this->assertFalse( $backend->isPersistent() );
$this->assertFalse( $this->store->getSession( self::SESSIONID ) );
- $this->assertNotFalse( $wrap->store->get( wfMemcKey( 'MWSession', self::SESSIONID ) ) );
+ $this->assertNotFalse(
+ $wrap->store->get( $wrap->store->makeKey( 'MWSession', self::SESSIONID ) )
+ );
}
public function testRememberUser() {
$expiry = \RequestContext::getMain()->getConfig()->get( 'ObjectCacheSessionExpiry' );
}
- $this->set( wfMemcKey( 'MWSession', $id ), $blob, $expiry );
+ $this->set( $this->makeKey( 'MWSession', $id ), $blob, $expiry );
}
/**
* @return mixed
*/
public function getSession( $id ) {
- return $this->get( wfMemcKey( 'MWSession', $id ) );
+ return $this->get( $this->makeKey( 'MWSession', $id ) );
}
/**
* @return mixed
*/
public function getSessionFromBackend( $id ) {
- return $this->backend->get( wfMemcKey( 'MWSession', $id ) );
+ return $this->backend->get( $this->makeKey( 'MWSession', $id ) );
}
/**
* @param string $id Session ID
*/
public function deleteSession( $id ) {
- $this->delete( wfMemcKey( 'MWSession', $id ) );
+ $this->delete( $this->makeKey( 'MWSession', $id ) );
}
}