should implement supporting behavior. Not doing so can result in undefined
behavior from API clients trying to continue through prefix results.
* Update jQuery from v1.11.1 to v1.11.2.
+* External libraries installed via composer will now be displayed
+ on Special:Version in their own section. Extensions or skins that are
+ installed via composer will not be shown in this section as it is assumed
+ they will add the proper credits to the skins or extensions section.
==== External libraries ====
* MediaWiki now requires certain external libraries to be installed. In the past
* (T78737) action=expandtemplates can now return page properties.
* (T78690) list=allimages now accepts multiple pipe-separated values
for the 'aimime' parameter.
+* prop=info with inprop=protections will now return applicable protection types
+ with the 'restrictiontypes' key.
=== Action API internal changes in 1.25 ===
* ApiHelp has been rewritten to support i18n and paginated HTML output.
'ForeignDBFile' => __DIR__ . '/includes/filerepo/file/ForeignDBFile.php',
'ForeignDBRepo' => __DIR__ . '/includes/filerepo/ForeignDBRepo.php',
'ForeignDBViaLBRepo' => __DIR__ . '/includes/filerepo/ForeignDBViaLBRepo.php',
+ 'ForeignTitle' => __DIR__ . '/includes/title/ForeignTitle.php',
+ 'ForeignTitleFactory' => __DIR__ . '/includes/title/ForeignTitleFactory.php',
'ForkController' => __DIR__ . '/includes/ForkController.php',
'FormAction' => __DIR__ . '/includes/actions/FormAction.php',
'FormOptions' => __DIR__ . '/includes/FormOptions.php',
'ImportSiteScripts' => __DIR__ . '/maintenance/importSiteScripts.php',
'ImportStreamSource' => __DIR__ . '/includes/Import.php',
'ImportStringSource' => __DIR__ . '/includes/Import.php',
+ 'ImportTitleFactory' => __DIR__ . '/includes/title/ImportTitleFactory.php',
'IncludableSpecialPage' => __DIR__ . '/includes/specialpage/IncludableSpecialPage.php',
'IndexPager' => __DIR__ . '/includes/pager/IndexPager.php',
'InfoAction' => __DIR__ . '/includes/actions/InfoAction.php',
'MySqlLockManager' => __DIR__ . '/includes/filebackend/lockmanager/DBLockManager.php',
'MysqlInstaller' => __DIR__ . '/includes/installer/MysqlInstaller.php',
'MysqlUpdater' => __DIR__ . '/includes/installer/MysqlUpdater.php',
+ 'NaiveForeignTitleFactory' => __DIR__ . '/includes/title/NaiveForeignTitleFactory.php',
+ 'NaiveImportTitleFactory' => __DIR__ . '/includes/title/NaiveImportTitleFactory.php',
+ 'NamespaceAwareForeignTitleFactory' => __DIR__ . '/includes/title/NamespaceAwareForeignTitleFactory.php',
'NamespaceConflictChecker' => __DIR__ . '/maintenance/namespaceDupes.php',
+ 'NamespaceImportTitleFactory' => __DIR__ . '/includes/title/NamespaceImportTitleFactory.php',
'NewFilesPager' => __DIR__ . '/includes/specials/SpecialNewimages.php',
'NewPagesPager' => __DIR__ . '/includes/specials/SpecialNewpages.php',
'NewUsersLogFormatter' => __DIR__ . '/includes/logging/NewUsersLogFormatter.php',
'StubObject' => __DIR__ . '/includes/StubObject.php',
'StubUserLang' => __DIR__ . '/includes/StubObject.php',
'SubmitAction' => __DIR__ . '/includes/actions/SubmitAction.php',
+ 'SubpageImportTitleFactory' => __DIR__ . '/includes/title/SubpageImportTitleFactory.php',
'SvgHandler' => __DIR__ . '/includes/media/SVG.php',
'SwiftFileBackend' => __DIR__ . '/includes/filebackend/SwiftFileBackend.php',
'SwiftFileBackendDirList' => __DIR__ . '/includes/filebackend/SwiftFileBackend.php',
'AfterImportPage': When a page import is completed.
$title: Title under which the revisions were imported
-$origTitle: Title provided by the XML file
+$foreignTitle: ForeignTitle object based on data provided by the XML file
$revCount: Number of revisions in the XML file
$sRevCount: Number of successfully imported revisions
$pageInfo: associative array of page information
*/
class WikiImporter {
private $reader = null;
+ private $foreignNamespaces = null;
private $mLogItemCallback, $mUploadCallback, $mRevisionCallback, $mPageCallback;
- private $mSiteInfoCallback, $mTargetNamespace, $mTargetRootPage, $mPageOutCallback;
+ private $mSiteInfoCallback, $mTargetNamespace, $mPageOutCallback;
private $mNoticeCallback, $mDebug;
private $mImportUploads, $mImageBasePath;
private $mNoUpdates = false;
/** @var Config */
private $config;
+ /** @var ImportTitleFactory */
+ private $importTitleFactory;
/**
* Creates an ImportXMLReader drawing from the source provided
$this->setUploadCallback( array( $this, 'importUpload' ) );
$this->setLogItemCallback( array( $this, 'importLogItem' ) );
$this->setPageOutCallback( array( $this, 'finishImportPage' ) );
+
+ $this->importTitleFactory = new NaiveImportTitleFactory();
}
/**
return $previous;
}
+ /**
+ * Sets the factory object to use to convert ForeignTitle objects into local
+ * Title objects
+ * @param ImportTitleFactory $factory
+ */
+ public function setImportTitleFactory( $factory ) {
+ $this->importTitleFactory = $factory;
+ }
+
/**
* Set a target namespace to override the defaults
* @param null|int $namespace
if ( is_null( $namespace ) ) {
// Don't override namespaces
$this->mTargetNamespace = null;
- } elseif ( $namespace >= 0 ) {
- // @todo FIXME: Check for validity
- $this->mTargetNamespace = intval( $namespace );
+ $this->setImportTitleFactory( new NaiveImportTitleFactory() );
+ return true;
+ } elseif (
+ $namespace >= 0 &&
+ MWNamespace::exists( intval( $namespace ) )
+ ) {
+ $namespace = intval( $namespace );
+ $this->mTargetNamespace = $namespace;
+ $this->setImportTitleFactory( new NamespaceImportTitleFactory( $namespace ) );
+ return true;
} else {
return false;
}
$status = Status::newGood();
if ( is_null( $rootpage ) ) {
// No rootpage
- $this->mTargetRootPage = null;
+ $this->setImportTitleFactory( new NaiveImportTitleFactory() );
} elseif ( $rootpage !== '' ) {
$rootpage = rtrim( $rootpage, '/' ); //avoid double slashes
$title = Title::newFromText( $rootpage, !is_null( $this->mTargetNamespace )
: $wgContLang->getNsText( $title->getNamespace() );
$status->fatal( 'import-rootpage-nosubpage', $displayNSText );
} else {
- // set namespace to 'all', so the namespace check in processTitle() can passed
+ // set namespace to 'all', so the namespace check in processTitle() can pass
$this->setTargetNamespace( null );
- $this->mTargetRootPage = $title->getPrefixedDBkey();
+ $this->setImportTitleFactory( new SubpageImportTitleFactory( $title ) );
}
}
}
/**
* Mostly for hook use
* @param Title $title
- * @param string $origTitle
+ * @param ForeignTitle $foreignTitle
* @param int $revCount
* @param int $sRevCount
* @param array $pageInfo
* @return bool
*/
- public function finishImportPage( $title, $origTitle, $revCount, $sRevCount, $pageInfo ) {
+ public function finishImportPage( $title, $foreignTitle, $revCount,
+ $sRevCount, $pageInfo ) {
$args = func_get_args();
return Hooks::run( 'AfterImportPage', $args );
}
$this->debug( "-- Text: " . $revision->text );
}
+ /**
+ * Notify the callback function of site info
+ * @param array $siteInfo
+ * @return bool|mixed
+ */
+ private function siteInfoCallback( $siteInfo ) {
+ if ( isset( $this->mSiteInfoCallback ) ) {
+ return call_user_func_array( $this->mSiteInfoCallback,
+ array( $siteInfo, $this ) );
+ } else {
+ return false;
+ }
+ }
+
/**
* Notify the callback function when a new "<page>" is reached.
* @param Title $title
/**
* Notify the callback function when a "</page>" is closed.
* @param Title $title
- * @param Title $origTitle
+ * @param ForeignTitle $foreignTitle
* @param int $revCount
* @param int $sucCount Number of revisions for which callback returned true
* @param array $pageInfo Associative array of page information
*/
- private function pageOutCallback( $title, $origTitle, $revCount, $sucCount, $pageInfo ) {
+ private function pageOutCallback( $title, $foreignTitle, $revCount,
+ $sucCount, $pageInfo ) {
if ( isset( $this->mPageOutCallback ) ) {
$args = func_get_args();
call_user_func_array( $this->mPageOutCallback, $args );
return true;
}
- /**
- * @return bool
- * @throws MWException
- */
private function handleSiteInfo() {
- // Site info is useful, but not actually used for dump imports.
- // Includes a quick short-circuit to save performance.
- if ( !$this->mSiteInfoCallback ) {
- $this->reader->next();
- return true;
+ $this->debug( "Enter site info handler." );
+ $siteInfo = array();
+
+ // Fields that can just be stuffed in the siteInfo object
+ $normalFields = array( 'sitename', 'base', 'generator', 'case' );
+
+ while ( $this->reader->read() ) {
+ if ( $this->reader->nodeType == XmlReader::END_ELEMENT &&
+ $this->reader->name == 'siteinfo' ) {
+ break;
+ }
+
+ $tag = $this->reader->name;
+
+ if ( $tag == 'namespace' ) {
+ $this->foreignNamespaces[ $this->nodeAttribute( 'key' ) ] =
+ $this->nodeContents();
+ } elseif ( in_array( $tag, $normalFields ) ) {
+ $siteInfo[$tag] = $this->nodeContents();
+ }
}
- throw new MWException( "SiteInfo tag is not yet handled, do not set mSiteInfoCallback" );
+
+ $siteInfo['_namespaces'] = $this->foreignNamespaces;
+ $this->siteInfoCallback( $siteInfo );
}
private function handleLogItem() {
$pageInfo = array( 'revisionCount' => 0, 'successfulRevisionCount' => 0 );
// Fields that can just be stuffed in the pageInfo object
- $normalFields = array( 'title', 'id', 'redirect', 'restrictions' );
+ $normalFields = array( 'title', 'ns', 'id', 'redirect', 'restrictions' );
$skip = false;
$badTitle = false;
break;
}
+ $skip = false;
+
$tag = $this->reader->name;
if ( $badTitle ) {
$pageInfo[$tag] = $this->nodeAttribute( 'title' );
} else {
$pageInfo[$tag] = $this->nodeContents();
- if ( $tag == 'title' ) {
- $title = $this->processTitle( $pageInfo['title'] );
+ }
+ } elseif ( $tag == 'revision' || $tag == 'upload' ) {
+ if ( !isset( $title ) ) {
+ $title = $this->processTitle( $pageInfo['title'],
+ isset( $pageInfo['ns'] ) ? $pageInfo['ns'] : null );
+
+ if ( !$title ) {
+ $badTitle = true;
+ $skip = true;
+ }
- if ( !$title ) {
- $badTitle = true;
- $skip = true;
- }
+ $this->pageCallback( $title );
+ list( $pageInfo['_title'], $foreignTitle ) = $title;
+ }
- $this->pageCallback( $title );
- list( $pageInfo['_title'], $origTitle ) = $title;
+ if ( $title ) {
+ if ( $tag == 'revision' ) {
+ $this->handleRevision( $pageInfo );
+ } else {
+ $this->handleUpload( $pageInfo );
}
}
- } elseif ( $tag == 'revision' ) {
- $this->handleRevision( $pageInfo );
- } elseif ( $tag == 'upload' ) {
- $this->handleUpload( $pageInfo );
} elseif ( $tag != '#text' ) {
$this->warn( "Unhandled page XML tag $tag" );
$skip = true;
}
}
- $this->pageOutCallback( $pageInfo['_title'], $origTitle,
+ $this->pageOutCallback( $pageInfo['_title'], $foreignTitle,
$pageInfo['revisionCount'],
$pageInfo['successfulRevisionCount'],
$pageInfo );
/**
* @param string $text
+ * @param string|null $ns
* @return array|bool
*/
- private function processTitle( $text ) {
- $workTitle = $text;
- $origTitle = Title::newFromText( $workTitle );
-
- if ( !is_null( $this->mTargetNamespace ) && !is_null( $origTitle ) ) {
- # makeTitleSafe, because $origTitle can have a interwiki (different setting of interwiki map)
- # and than dbKey can begin with a lowercase char
- $title = Title::makeTitleSafe( $this->mTargetNamespace,
- $origTitle->getDBkey() );
+ private function processTitle( $text, $ns = null ) {
+ if ( is_null( $this->foreignNamespaces ) ) {
+ $foreignTitleFactory = new NaiveForeignTitleFactory();
} else {
- if ( !is_null( $this->mTargetRootPage ) ) {
- $workTitle = $this->mTargetRootPage . '/' . $workTitle;
- }
- $title = Title::newFromText( $workTitle );
+ $foreignTitleFactory = new NamespaceAwareForeignTitleFactory(
+ $this->foreignNamespaces );
}
+ $foreignTitle = $foreignTitleFactory->createForeignTitle( $text,
+ intval( $ns ) );
+
+ $title = $this->importTitleFactory->createTitleFromForeignTitle(
+ $foreignTitle );
+
$commandLineMode = $this->config->get( 'CommandLineMode' );
if ( is_null( $title ) ) {
# Invalid page title? Ignore the page
- $this->notice( 'import-error-invalid', $workTitle );
+ $this->notice( 'import-error-invalid', $foreignTitle->getFullText() );
return false;
} elseif ( $title->isExternal() ) {
$this->notice( 'import-error-interwiki', $title->getPrefixedText() );
return false;
}
- return array( $title, $origTitle );
+ return array( $title, $foreignTitle );
}
}
* call rather than a "<script src='...'>" tag.
* @return string The html "<script>", "<link>" and "<style>" tags
*/
- protected function makeResourceLoaderLink( $modules, $only, $useESI = false,
+ public function makeResourceLoaderLink( $modules, $only, $useESI = false,
array $extraQuery = array(), $loadCall = false
) {
$modules = (array)$modules;
* have to be purged on configuration changes.
* @return array
*/
- private function getJSVars() {
+ public function getJSVars() {
global $wgContLang;
$curRevisionId = 0;
private $pageRestrictions, $pageIsRedir, $pageIsNew, $pageTouched,
$pageLatest, $pageLength;
- private $protections, $watched, $watchers, $notificationtimestamps,
+ private $protections, $restrictionTypes, $watched, $watchers, $notificationtimestamps,
$talkids, $subjectids, $displaytitles;
private $showZeroWatchers = false;
$this->protections[$ns][$dbkey];
}
$this->getResult()->setIndexedTagName( $pageInfo['protection'], 'pr' );
+
+ $pageInfo['restrictiontypes'] = array();
+ if ( isset( $this->restrictionTypes[$ns][$dbkey] ) ) {
+ $pageInfo['restrictiontypes'] =
+ $this->restrictionTypes[$ns][$dbkey];
+ }
+ $this->getResult()->setIndexedTagName( $pageInfo['restrictiontypes'], 'rt' );
}
if ( $this->fld_watched && isset( $this->watched[$ns][$dbkey] ) ) {
}
}
- // Cascading protections
+ // Separate good and missing titles into files and other pages
+ // and populate $this->restrictionTypes
$images = $others = array();
foreach ( $this->everything as $title ) {
if ( $title->getNamespace() == NS_FILE ) {
} else {
$others[] = $title;
}
+ // Applicable protection types
+ $this->restrictionTypes[$title->getNamespace()][$title->getDBkey()] =
+ array_values( $title->getRestrictionTypes() );
}
if ( count( $others ) ) {
"apihelp-compare-param-toid": "ID другой старонкі для параўнаньня.",
"apihelp-compare-param-torev": "Другая вэрсія для параўнаньня.",
"apihelp-compare-example-1": "Паказвае розьніцу паміж вэрсіямі 1 і 2",
- "apihelp-createaccount-description": "Стварэньне новага рахунку ўдзельніка."
+ "apihelp-createaccount-description": "Стварэньне новага рахунку ўдзельніка.",
+ "apihelp-createaccount-param-name": "Імя ўдзельніка."
}
{
"@metadata": {
"authors": [
- "Nike"
+ "Nike",
+ "MrTapsa"
]
},
+ "apihelp-query+linkshere-param-show": "Näytä vain kohteet, jotka täyttävät nämä kriteerit:\n;redirect:Näytä vain uudelleenohjaukset.\n;!redirect:Näytä vain ei-uudelleenohjaukset",
"apihelp-upload-param-stash": "Mikäli valittu, palvelin säilöö tiedoston väliaikaisesti tallentamisen sijaan."
}
"apihelp-query+allmessages-example-ipb": "Visa meddelanden som börjar med \"ipb-\"",
"apihelp-query+allmessages-example-de": "Visa meddelandena \"august\" och \"mainpage\" på tyska",
"apihelp-query+allpages-param-filterredir": "Vilka sidor att lista.",
+ "apihelp-query+allusers-param-dir": "Riktning att sortera i.",
+ "apihelp-query+allusers-example-Y": "Lista användare som börjar på Y",
"apihelp-query+revisions-example-first5-not-localhost": "Hämta första 5 revideringarna av \"huvudsidan\" och som inte gjorts av anonym användare \"127.0.0.1\"",
"apihelp-query+stashimageinfo-description": "Returnerar filinformation för temporära filer.",
"apihelp-query+stashimageinfo-param-filekey": "Nyckel som identifierar en tidigare uppladdning som lagrats temporärt.",
} else {
wfDebugLog( 'error', $log );
}
+
+ $json = self::jsonSerializeException( $e, false, FormatJson::ALL_OK );
+ if ( $json !== false ) {
+ wfDebugLog( 'error-json', $json, 'private' );
+ }
}
}
if ( $exists ) {
# Create a null revision
$latest = $descTitle->getLatestRevID();
- $editSummary = LogFormatter::newFromEntry( $logEntry )->getPlainActionText();
+ // Use own context to get the action text in content language
+ $formatter = LogFormatter::newFromEntry( $logEntry );
+ $formatter->setContext( RequestContext::newExtraneousContext( $descTitle ) );
+ $editSummary = $formatter->getPlainActionText();
$nullRevision = Revision::newNullRevision(
$dbw,
public function getInstalledDependencies() {
$deps = array();
foreach ( $this->contents['packages'] as $installed ) {
- $deps[$installed['name']] = ComposerJson::normalizeVersion( $installed['version'] );
+ $deps[$installed['name']] = array(
+ 'version' => ComposerJson::normalizeVersion( $installed['version'] ),
+ 'type' => $installed['type'],
+ );
}
return $deps;
}
function doBatchLookups() {
+ parent::doBatchLookups();
+
$uids = array();
foreach ( $this->mResult as $row ) {
$uids[] = $row->user_id;
// Note: This is a different loop than for user rights,
// because we're reusing it to build the group links
// at the same time
- foreach ( $user->getGroups() as $group ) {
+ $groups_list = self::getGroups( intval( $row->user_id ), $this->userGroupCache );
+ foreach ( $groups_list as $group ) {
if ( in_array( $group, $this->hideGroups ) ) {
return '';
}
/**
* @param Title $title
- * @param Title $origTitle
+ * @param ForeignTitle $foreignTitle
* @param int $revisionCount
* @param int $successCount
* @param array $pageInfo
* @return void
*/
- function reportPage( $title, $origTitle, $revisionCount, $successCount, $pageInfo ) {
+ function reportPage( $title, $foreignTitle, $revisionCount,
+ $successCount, $pageInfo ) {
$args = func_get_args();
call_user_func_array( $this->mOriginalPageOutCallback, $args );
$log->addEntry( 'upload', $title, $detail, array(), $this->getUser() );
} else {
$interwiki = '[[:' . $this->mInterwiki . ':' .
- $origTitle->getPrefixedText() . ']]';
+ $foreignTitle->getFullText() . ']]';
$detail = $this->msg( 'import-logentry-interwiki-detail' )->numParams(
$successCount )->params( $interwiki )->inContentLanguage()->text();
if ( $this->reason ) {
*/
class SpecialJavaScriptTest extends SpecialPage {
/**
- * @var array Mapping of framework ids and their initilizer methods
- * in this class. If a framework is requested but not in this array,
- * the 'unknownframework' error is served.
+ * @var array Supported frameworks.
*/
private static $frameworks = array(
- 'qunit' => 'initQUnitTesting',
+ 'qunit',
);
public function __construct() {
$this->setHeaders();
$out->disallowUserJs();
- $out->addModules( 'mediawiki.special.javaScriptTest' );
-
- // Determine framework
- $pars = explode( '/', $par );
- $framework = strtolower( $pars[0] );
-
- // No framework specified
- if ( $par == '' ) {
+ if ( $par === null ) {
+ // No framework specified
+ $out->setStatusCode( 404 );
$out->setPageTitle( $this->msg( 'javascripttest' ) );
- $summary = $this->wrapSummaryHtml(
- $this->msg( 'javascripttest-pagetext-noframework' )->escaped() .
- $this->getFrameworkListHtml(),
- 'noframework'
+ $out->addHTML(
+ $this->msg( 'javascripttest-pagetext-noframework' )->parseAsBlock()
+ . $this->getFrameworkListHtml()
);
- $out->addHtml( $summary );
- } elseif ( isset( self::$frameworks[$framework] ) ) {
- // Matched! Display proper title and initialize the framework
- $out->setPageTitle( $this->msg(
- 'javascripttest-title',
- // Messages: javascripttest-qunit-name
- $this->msg( "javascripttest-$framework-name" )->plain()
- ) );
- $out->setSubtitle( $this->msg( 'javascripttest-backlink' )
- ->rawParams( Linker::linkKnown( $this->getPageTitle() ) ) );
- $this->{self::$frameworks[$framework]}();
- } else {
- // Framework not found, display error
- $out->setPageTitle( $this->msg( 'javascripttest' ) );
- $summary = $this->wrapSummaryHtml(
- '<p class="error">' .
- $this->msg( 'javascripttest-pagetext-unknownframework', $par )->escaped() .
- '</p>' .
- $this->getFrameworkListHtml(),
- 'unknownframework'
+ return;
+ }
+
+ // Determine framework and mode
+ $pars = explode( '/', $par, 2 );
+
+ $framework = $pars[0];
+ if ( !in_array( $framework, self::$frameworks ) ) {
+ // Framework not found
+ $out->setStatusCode( 404 );
+ $out->addHTML(
+ '<div class="error">'
+ . $this->msg( 'javascripttest-pagetext-unknownframework' )
+ ->plaintextParams( $par )->parseAsBlock()
+ . '</div>'
+ . $this->getFrameworkListHtml()
);
- $out->addHtml( $summary );
+ return;
+ }
+
+ // This special page is disabled by default ($wgEnableJavaScriptTest), and contains
+ // no sensitive data. In order to allow TestSwarm to embed it into a test client window,
+ // we need to allow iframing of this page.
+ $out->allowClickjacking();
+ $out->setSubtitle(
+ $this->msg( 'javascripttest-backlink' )
+ ->rawParams( Linker::linkKnown( $this->getPageTitle() ) )
+ );
+
+ // Custom actions
+ if ( isset( $pars[1] ) ) {
+ $action = $pars[1];
+ if ( !in_array( $action, array( 'export', 'plain' ) ) ) {
+ $out->setStatusCode( 404 );
+ $out->addHTML(
+ '<div class="error">'
+ . $this->msg( 'javascripttest-pagetext-unknownaction' )
+ ->plaintextParams( $action )->parseAsBlock()
+ . '</div>'
+ );
+ return;
+ }
+ $method = $action . ucfirst( $framework );
+ $this->$method();
+ return;
}
+
+ $out->addModules( 'mediawiki.special.javaScriptTest' );
+
+ $method = 'view' . ucfirst( $framework );
+ $this->$method();
+ $out->setPageTitle( $this->msg(
+ 'javascripttest-title',
+ // Messages: javascripttest-qunit-name
+ $this->msg( "javascripttest-$framework-name" )->plain()
+ ) );
}
/**
*/
private function getFrameworkListHtml() {
$list = '<ul>';
- foreach ( self::$frameworks as $framework => $initFn ) {
+ foreach ( self::$frameworks as $framework ) {
$list .= Html::rawElement(
'li',
array(),
}
/**
- * Function to wrap the summary.
- * It must be given a valid state as a second parameter or an exception will
- * be thrown.
- * @param string $html The raw HTML.
- * @param string $state State, one of 'noframework', 'unknownframework' or 'frameworkfound'
- * @throws MWException
- * @return string
+ * Wrap HTML contents in a summary container.
+ *
+ * @param string $html HTML contents to be wrapped
+ * @return string HTML
*/
- private function wrapSummaryHtml( $html, $state ) {
- $validStates = array( 'noframework', 'unknownframework', 'frameworkfound' );
-
- if ( !in_array( $state, $validStates ) ) {
- throw new MWException( __METHOD__
- . ' given an invalid state. Must be one of "'
- . join( '", "', $validStates ) . '".'
- );
- }
-
- return "<div id=\"mw-javascripttest-summary\" class=\"mw-javascripttest-$state\">$html</div>";
+ private function wrapSummaryHtml( $html ) {
+ return "<div id=\"mw-javascripttest-summary\">$html</div>";
}
/**
- * Initialize the page for QUnit.
+ * Run the test suite on the Special page.
+ *
+ * Rendered by OutputPage and Skin.
*/
- private function initQUnitTesting() {
+ private function viewQUnit() {
$out = $this->getOutput();
- $out->addModules( 'test.mediawiki.qunit.testrunner' );
- $qunitTestModules = $out->getResourceLoader()->getTestModuleNames( 'qunit' );
- $out->addModules( $qunitTestModules );
+ $modules = $out->getResourceLoader()->getTestModuleNames( 'qunit' );
$summary = $this->msg( 'javascripttest-qunit-intro' )
->params( 'https://www.mediawiki.org/wiki/Manual:JavaScript_unit_testing' )
->parseAsBlock();
- $header = $this->msg( 'javascripttest-qunit-heading' )->escaped();
- $userDir = $this->getLanguage()->getDir();
$baseHtml = <<<HTML
<div class="mw-content-ltr">
-<div id="qunit-header"><span dir="$userDir">$header</span></div>
-<div id="qunit-banner"></div>
-<div id="qunit-testrunner-toolbar"></div>
-<div id="qunit-userAgent"></div>
-<ol id="qunit-tests"></ol>
-<div id="qunit-fixture">test markup, will be hidden</div>
+<div id="qunit"></div>
+<div id="qunit-fixture"></div>
</div>
HTML;
- $out->addHtml( $this->wrapSummaryHtml( $summary, 'frameworkfound' ) . $baseHtml );
- // This special page is disabled by default ($wgEnableJavaScriptTest), and contains
- // no sensitive data. In order to allow test frameworks to embed it into a test client window,
- // we need to allow iframing of this page.
- $out->allowClickjacking();
+ $out->addHtml( $this->wrapSummaryHtml( $summary ) . $baseHtml );
+
+ // The testrunner configures QUnit and essentially depends on it. However, test suites
+ // are reusable in environments that preload QUnit (or a compatibility interface to
+ // another framework). Therefore we have to load it ourselves.
+ $out->addHtml( Html::inlineScript(
+ ResourceLoader::makeLoaderConditionalScript(
+ Xml::encodeJsCall( 'mw.loader.using', array(
+ array( 'jquery.qunit', 'jquery.qunit.completenessTest' ),
+ new XmlJsCode(
+ 'function () {' . Xml::encodeJsCall( 'mw.loader.load', array( $modules ) ) . '}'
+ )
+ ) )
+ )
+ ) );
+ }
+
+ /**
+ * Generate self-sufficient JavaScript payload to run the tests elsewhere.
+ *
+ * Includes startup module to request modules from ResourceLoader.
+ *
+ * Note: This modifies the registry to replace 'jquery.qunit' with an
+ * empty module to allow external environment to preload QUnit with any
+ * neccecary framework adapters (e.g. Karma). Loading it again would
+ * re-define QUnit and dereference event handlers from Karma.
+ */
+ private function exportQUnit() {
+ $out = $this->getOutput();
+
+ $out->disable();
+
+ $rl = $out->getResourceLoader();
+
+ $query = array(
+ 'lang' => $this->getLanguage()->getCode(),
+ 'skin' => $this->getSkin()->getSkinName(),
+ 'debug' => ResourceLoader::inDebugMode() ? 'true' : 'false',
+ );
+ $embedContext = new ResourceLoaderContext( $rl, new FauxRequest( $query ) );
+ $query['only'] = 'scripts';
+ $startupContext = new ResourceLoaderContext( $rl, new FauxRequest( $query ) );
+
+ $modules = $rl->getTestModuleNames( 'qunit' );
+
+ // The below is essentially a pure-javascript version of OutputPage::getHeadScripts.
+ $startup = $rl->makeModuleResponse( $startupContext, array(
+ 'startup' => $rl->getModule( 'startup' ),
+ ) );
+ // Embed page-specific mw.config variables.
+ // The current Special page shouldn't be relevant to tests, but various modules (which
+ // are loaded before the test suites), reference mw.config while initialising.
+ $code = ResourceLoader::makeConfigSetScript( $out->getJSVars() );
+ // Embed private modules as they're not allowed to be loaded dynamically
+ $code .= $rl->makeModuleResponse( $embedContext, array(
+ 'user.options' => $rl->getModule( 'user.options' ),
+ 'user.tokens' => $rl->getModule( 'user.tokens' ),
+ ) );
+ $code .= Xml::encodeJsCall( 'mw.loader.load', array( $modules ) );
+
+ header( 'Content-Type: text/javascript; charset=utf-8' );
+ header( 'Cache-Control: private, no-cache, must-revalidate' );
+ header( 'Pragma: no-cache' );
+ echo $startup;
+ echo "\n";
+ // Note: The following has to be wrapped in a script tag because the startup module also
+ // writes a script tag (the one loading mediawiki.js). Script tags are synchronous, block
+ // each other, and run in order. But they don't nest. The code appended after the startup
+ // module runs before the added script tag is parsed and executed.
+ echo Xml::encodeJsCall( 'document.write', array( Html::inlineScript( $code ) ) );
+ }
+
+ private function plainQUnit() {
+ $out = $this->getOutput();
+ $out->disable();
+
+ $url = $this->getPageTitle( 'qunit/export' )->getFullURL( array(
+ 'debug' => ResourceLoader::inDebugMode() ? 'true' : 'false',
+ ) );
+
+ $styles = $out->makeResourceLoaderLink( 'jquery.qunit', ResourceLoaderModule::TYPE_STYLES, false );
+ // Use 'raw' since this is a plain HTML page without ResourceLoader
+ $scripts = $out->makeResourceLoaderLink( 'jquery.qunit', ResourceLoaderModule::TYPE_SCRIPTS, false, array( 'raw' => 'true' ) );
+
+ $head = trim( $styles['html'] . $scripts['html'] );
+ $html = <<<HTML
+<!DOCTYPE html>
+<title>QUnit</title>
+$head
+<div id="qunit"></div>
+<div id="qunit-fixture"></div>
+HTML;
+ $html .= "\n" . Html::linkedScript( $url );
+
+ header( 'Content-Type: text/html; charset=utf-8' );
+ echo $html;
}
/**
* @return string[] subpages
*/
public function getSubpagesForPrefixSearch() {
- return array_keys( self::$frameworks );
+ return self::$frameworks;
}
protected function getGroupName() {
/**
* @var array A array with user ids as key and a array of groups as value
*/
- private $userGroupCache;
+ protected $userGroupCache;
/**
* @param IContextSource $context
. Html::element( 'th', array(), $this->msg( 'version-libraries-library' )->text() )
. Html::element( 'th', array(), $this->msg( 'version-libraries-version' )->text() )
. Html::closeElement( 'tr' );
- ;
- foreach ( $lock->getInstalledDependencies() as $name => $version ) {
+
+ foreach ( $lock->getInstalledDependencies() as $name => $info ) {
+ if ( strpos( $info['type'], 'mediawiki-' ) === 0 ) {
+ // Skip any extensions or skins since they'll be listed
+ // in their proper section
+ continue;
+ }
$out .= Html::openElement( 'tr' )
. Html::rawElement( 'td', array(), Linker::makeExternalLink( "https://packagist.org/packages/$name", $name ) )
- . Html::element( 'td', array(), $version )
+ . Html::element( 'td', array(), $info['version'] )
. Html::closeElement( 'tr' );
}
$out .= Html::closeElement( 'table' );
--- /dev/null
+<?php
+/**
+ * A structure to hold the title of a page on a foreign MediaWiki installation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author This, that and the other
+ */
+
+/**
+ * A simple, immutable structure to hold the title of a page on a foreign
+ * MediaWiki installation.
+ */
+class ForeignTitle {
+ /**
+ * @var int|null
+ * Null if we don't know the namespace ID (e.g. interwiki links)
+ */
+ protected $namespaceId;
+ /** @var string */
+ protected $namespaceName;
+ /** @var string */
+ protected $pageName;
+
+ /**
+ * Creates a new ForeignTitle object.
+ *
+ * @param int|null $namespaceId Null if the namespace ID is unknown (e.g.
+ * interwiki links)
+ * @param string $namespaceName
+ * @param string $pageName
+ */
+ public function __construct( $namespaceId, $namespaceName, $pageName ) {
+ if ( is_null( $namespaceId ) ) {
+ $this->namespaceId = null;
+ } else {
+ $this->namespaceId = intval( $namespaceId );
+ }
+ $this->namespaceName = str_replace( ' ', '_', $namespaceName );
+ $this->pageName = str_replace( ' ', '_', $pageName );
+ }
+
+ /**
+ * Do we know the namespace ID of the page on the foreign wiki?
+ * @return bool
+ */
+ public function isNamespaceIdKnown() {
+ return !is_null( $this->namespaceId );
+ }
+
+ /**
+ * @return int
+ * @throws MWException If isNamespaceIdKnown() is false, it does not make
+ * sense to call this function.
+ */
+ public function getNamespaceId() {
+ if ( is_null( $this->namespaceId ) ) {
+ throw new MWException(
+ "Attempted to call getNamespaceId when the namespace ID is not known" );
+ }
+ return $this->namespaceId;
+ }
+
+ /** @return string */
+ public function getNamespaceName() {
+ return $this->namespaceName;
+ }
+
+ /** @return string */
+ public function getText() {
+ return $this->pageName;
+ }
+
+ /** @return string */
+ public function getFullText() {
+ $result = '';
+ if ( $this->namespaceName ) {
+ $result .= $this->namespaceName . ':';
+ }
+ $result .= $this->pageName;
+ return $result;
+ }
+
+ /**
+ * Returns a string representation of the title, for logging. This is purely
+ * informative and must not be used programmatically. Use the appropriate
+ * ImportTitleFactory to generate the correct string representation for a
+ * given use.
+ *
+ * @return string
+ */
+ public function __toString() {
+ $name = '';
+ if ( $this->isNamespaceIdKnown() ) {
+ $name .= '{ns' . $this->namespaceId . '}';
+ } else {
+ $name .= '{ns??}';
+ }
+ $name .= $this->namespaceName . ':' . $this->pageName;
+
+ return $name;
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ */
+
+/**
+ * A parser that translates page titles into ForeignTitle objects.
+ */
+interface ForeignTitleFactory {
+ /**
+ * Creates a ForeignTitle object based on the page title, and optionally the
+ * namespace ID, of a page on a foreign wiki. These values could be, for
+ * example, the <title> and <ns> attributes found in an XML dump.
+ *
+ * @param string $title The page title
+ * @param int|null $ns The namespace ID, or null if this data is not available
+ * @return ForeignTitle
+ */
+ public function createForeignTitle( $title, $ns = null );
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ */
+
+/**
+ * Represents an object that can convert page titles on a foreign wiki
+ * (ForeignTitle objects) into page titles on the local wiki (Title objects).
+ */
+interface ImportTitleFactory {
+ /**
+ * Determines which local title best corresponds to the given foreign title.
+ * If such a title can't be found or would be locally invalid, null is
+ * returned.
+ *
+ * @param ForeignTitle $foreignTitle The ForeignTitle to convert
+ * @return Title|null
+ */
+ public function createTitleFromForeignTitle( ForeignTitle $foreignTitle );
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ */
+
+/**
+ * A parser that translates page titles on a foreign wiki into ForeignTitle
+ * objects, with no knowledge of the namespace setup on the foreign site.
+ */
+class NaiveForeignTitleFactory implements ForeignTitleFactory {
+ /**
+ * Creates a ForeignTitle object based on the page title, and optionally the
+ * namespace ID, of a page on a foreign wiki. These values could be, for
+ * example, the <title> and <ns> attributes found in an XML dump.
+ *
+ * Although exported XML dumps have contained a map of namespace IDs to names
+ * since MW 1.5, the importer used to completely ignore the <siteinfo> tag
+ * before MW 1.25. It is therefore possible that custom XML dumps (i.e. not
+ * generated by Special:Export) have been created without this metadata.
+ * As a result, this code falls back to using namespace data for the local
+ * wiki (similar to buggy pre-1.25 behaviour) if $ns is not supplied.
+ *
+ * @param string $title The page title
+ * @param int|null $ns The namespace ID, or null if this data is not available
+ * @return ForeignTitle
+ */
+ public function createForeignTitle( $title, $ns = null ) {
+ $pieces = explode( ':', $title, 2 );
+
+ global $wgContLang;
+
+ // Can we assume that the part of the page title before the colon is a
+ // namespace name?
+ //
+ // XML export schema version 0.5 and earlier (MW 1.18 and earlier) does not
+ // contain a <ns> tag, so we need to be able to handle that case.
+ //
+ // If we know the namespace ID, we assume a non-zero namespace ID means
+ // the ':' sets off a valid namespace name. If we don't know the namespace
+ // ID, we fall back to using the local wiki's namespace names to resolve
+ // this -- better than nothing, and mimics the old crappy behavior
+ $isNamespacePartValid = is_null( $ns ) ?
+ ( $wgContLang->getNsIndex( $pieces[0] ) !== false ) :
+ $ns != 0;
+
+ if ( count( $pieces ) === 2 && $isNamespacePartValid ) {
+ list( $namespaceName, $pageName ) = $pieces;
+ } else {
+ $namespaceName = '';
+ $pageName = $title;
+ }
+
+ return new ForeignTitle( $ns, $namespaceName, $pageName );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ */
+
+/**
+ * A class to convert page titles on a foreign wiki (ForeignTitle objects) into
+ * page titles on the local wiki (Title objects), using a default namespace
+ * mapping.
+ *
+ * For built-in namespaces (0 <= ID < 100), we try to find a local namespace
+ * with the same namespace ID as the foreign page. If no such namespace exists,
+ * or the namespace ID is unknown or > 100, we look for a local namespace with
+ * a matching namespace name. If that can't be found, we dump the page in the
+ * main namespace as a last resort.
+ */
+class NaiveImportTitleFactory implements ImportTitleFactory {
+ /**
+ * Determines which local title best corresponds to the given foreign title.
+ * If such a title can't be found or would be locally invalid, null is
+ * returned.
+ *
+ * @param ForeignTitle $foreignTitle The ForeignTitle to convert
+ * @return Title|null
+ */
+ public function createTitleFromForeignTitle( ForeignTitle $foreignTitle ) {
+ global $wgContLang;
+
+ if ( $foreignTitle->isNamespaceIdKnown() ) {
+ $foreignNs = $foreignTitle->getNamespaceId();
+
+ // For built-in namespaces (0 <= ID < 100), we try to find a local NS with
+ // the same namespace ID
+ if ( $foreignNs < 100 && MWNamespace::exists( $foreignNs ) ) {
+ return Title::makeTitleSafe( $foreignNs, $foreignTitle->getText() );
+ }
+ }
+
+ // Do we have a local namespace by the same name as the foreign
+ // namespace?
+ $targetNs = $wgContLang->getNsIndex( $foreignTitle->getNamespaceName() );
+ if ( $targetNs !== false ) {
+ return Title::makeTitleSafe( $targetNs, $foreignTitle->getText() );
+ }
+
+ // Otherwise, just fall back to main namespace
+ return Title::makeTitleSafe( 0, $foreignTitle->getFullText() );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ */
+
+/**
+ * A parser that translates page titles on a foreign wiki into ForeignTitle
+ * objects, using information about the namespace setup on the foreign site.
+ */
+class NamespaceAwareForeignTitleFactory implements ForeignTitleFactory {
+ /**
+ * @var array
+ */
+ protected $foreignNamespaces;
+ /**
+ * @var array
+ */
+ private $foreignNamespacesFlipped;
+
+ /**
+ * Normalizes an array name for $foreignNamespacesFlipped.
+ * @param string $name
+ * @return string
+ */
+ private function normalizeNamespaceName( $name ) {
+ return strtolower( str_replace( ' ', '_', $name ) );
+ }
+
+ /**
+ * @param array|null $foreignNamespaces An array 'id' => 'name' which contains
+ * the complete namespace setup of the foreign wiki. Such data could be
+ * obtained from siteinfo/namespaces in an XML dump file, or by an action API
+ * query such as api.php?action=query&meta=siteinfo&siprop=namespaces. If
+ * this data is unavailable, use NaiveForeignTitleFactory instead.
+ */
+ public function __construct( $foreignNamespaces ) {
+ $this->foreignNamespaces = $foreignNamespaces;
+ if ( !is_null( $foreignNamespaces ) ) {
+ $this->foreignNamespacesFlipped = array();
+ foreach ( $foreignNamespaces as $id => $name ) {
+ $newKey = self::normalizeNamespaceName( $name );
+ $this->foreignNamespacesFlipped[$newKey] = $id;
+ }
+ }
+ }
+
+ /**
+ * Creates a ForeignTitle object based on the page title, and optionally the
+ * namespace ID, of a page on a foreign wiki. These values could be, for
+ * example, the <title> and <ns> attributes found in an XML dump.
+ *
+ * @param string $title The page title
+ * @param int|null $ns The namespace ID, or null if this data is not available
+ * @return ForeignTitle
+ */
+ public function createForeignTitle( $title, $ns = null ) {
+ // Export schema version 0.5 and earlier (MW 1.18 and earlier) does not
+ // contain a <ns> tag, so we need to be able to handle that case.
+ if ( is_null( $ns ) ) {
+ return self::parseTitleNoNs( $title );
+ } else {
+ return self::parseTitleWithNs( $title, $ns );
+ }
+ }
+
+ /**
+ * Helper function to parse the title when the namespace ID is not specified.
+ *
+ * @param string $title
+ * @return ForeignTitle
+ */
+ protected function parseTitleNoNs( $title ) {
+ $pieces = explode( ':', $title, 2 );
+ $key = self::normalizeNamespaceName( $pieces[0] );
+
+ // Does the part before the colon match a known namespace? Check the
+ // foreign namespaces
+ $isNamespacePartValid = isset( $this->foreignNamespacesFlipped[$key] );
+
+ if ( count( $pieces ) === 2 && $isNamespacePartValid ) {
+ list( $namespaceName, $pageName ) = $pieces;
+ $ns = $this->foreignNamespacesFlipped[$key];
+ } else {
+ $namespaceName = '';
+ $pageName = $title;
+ $ns = 0;
+ }
+
+ return new ForeignTitle( $ns, $namespaceName, $pageName );
+ }
+
+ /**
+ * Helper function to parse the title when the namespace value is known.
+ *
+ * @param string $title
+ * @param int $ns
+ * @return ForeignTitle
+ */
+ protected function parseTitleWithNs( $title, $ns ) {
+ $pieces = explode( ':', $title, 2 );
+
+ if ( isset( $this->foreignNamespaces[$ns] ) ) {
+ $namespaceName = $this->foreignNamespaces[$ns];
+ } else {
+ $namespaceName = $ns == '0' ? '' : $pieces[0];
+ }
+
+ // We assume that the portion of the page title before the colon is the
+ // namespace name, except in the case of namespace 0
+ if ( $ns != '0' ) {
+ $pageName = $pieces[1];
+ } else {
+ $pageName = $title;
+ }
+
+ return new ForeignTitle( $ns, $namespaceName, $pageName );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ */
+
+/**
+ * A class to convert page titles on a foreign wiki (ForeignTitle objects) into
+ * page titles on the local wiki (Title objects), placing all pages in a fixed
+ * local namespace.
+ */
+class NamespaceImportTitleFactory implements ImportTitleFactory {
+ /** @var int */
+ protected $ns;
+
+ /**
+ * @param int $ns The namespace to use for all pages
+ */
+ public function __construct( $ns ) {
+ if ( !MWNamespace::exists( $ns ) ) {
+ throw new MWException( "Namespace $ns doesn't exist on this wiki" );
+ }
+ $this->ns = $ns;
+ }
+
+ /**
+ * Determines which local title best corresponds to the given foreign title.
+ * If such a title can't be found or would be locally invalid, null is
+ * returned.
+ *
+ * @param ForeignTitle $foreignTitle The ForeignTitle to convert
+ * @return Title|null
+ */
+ public function createTitleFromForeignTitle( ForeignTitle $foreignTitle ) {
+ return Title::makeTitleSafe( $this->ns, $foreignTitle->getText() );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ */
+
+/**
+ * A class to convert page titles on a foreign wiki (ForeignTitle objects) into
+ * page titles on the local wiki (Title objects), placing all pages as subpages
+ * of a given root page.
+ */
+class SubpageImportTitleFactory implements ImportTitleFactory {
+ /** @var Title */
+ protected $rootPage;
+
+ /**
+ * @param Title $rootPage The root page under which all pages should be
+ * created
+ */
+ public function __construct( Title $rootPage ) {
+ if ( !MWNamespace::hasSubpages( $rootPage->getNamespace() ) ) {
+ throw new MWException( "The root page you specified, $rootPage, is in a " .
+ "namespace where subpages are not allowed" );
+ }
+ $this->rootPage = $rootPage;
+ }
+
+ /**
+ * Determines which local title best corresponds to the given foreign title.
+ * If such a title can't be found or would be locally invalid, null is
+ * returned.
+ *
+ * @param ForeignTitle $foreignTitle The ForeignTitle to convert
+ * @return Title|null
+ */
+ public function createTitleFromForeignTitle( ForeignTitle $foreignTitle ) {
+ return Title::newFromText( $this->rootPage->getPrefixedDBkey() . '/' .
+ $foreignTitle->getFullText() );
+ }
+}
"import-logentry-interwiki": "importeer $1 via transwiki",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|weergawe|weergawes}} vanaf $2",
"javascripttest": "JavaScript toetsing",
- "javascripttest-title": "Voer toetse uit vir $1",
"javascripttest-pagetext-noframework": "Hierdie bladsy is gereserveer vir die uitvoer van JavaScript-toetse.",
"javascripttest-pagetext-unknownframework": "Onbekende toetsraamwerk \"$1\".",
"javascripttest-pagetext-frameworks": "Kies een van die volgende toetsraamwerke: $1",
"javascripttest-pagetext-skins": "Kies 'n omslag waarmee die toets uitgevoer moet word:",
"javascripttest-qunit-intro": "Sien die [$1 toetsdokumentasie] op mediawiki.org.",
- "javascripttest-qunit-heading": "QUnit toetssuite vir MediaWiki JavaScript",
"tooltip-pt-userpage": "My gebruikerbladsy",
"tooltip-pt-anonuserpage": "Die gebruikersbladsy vir die IP-adres waaronder u wysigings aanbring",
"tooltip-pt-mytalk": "My besprekingsbladsy",
"import-logentry-interwiki": "استورد عبر الويكي $1",
"import-logentry-interwiki-detail": "تم استيراد {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}} من $2",
"javascripttest": "اختبار جافاسكربت",
- "javascripttest-title": "تشغيل أختبارات $1",
"javascripttest-pagetext-noframework": "هذه الصفحة محجوزة لإجراء أختبارات الجافا سكريبت.",
"javascripttest-pagetext-unknownframework": "إطار اختبار غير معروف \"$1\".",
"javascripttest-pagetext-frameworks": "الرجاء اختيار أحد أطر الاختبارات التالية: $1",
"javascripttest-pagetext-skins": "قم باختيار الواجهة لإجراء الإحتبارات بها:",
"javascripttest-qunit-intro": "راجع [$1 وثيقة الاختبار] على mediawiki.org.",
- "javascripttest-qunit-heading": "جناح اختبار MediaWiki JavaScript QUnit",
"tooltip-pt-userpage": "صفحة المستخدم الخاصة بك",
"tooltip-pt-anonuserpage": "صفحة المستخدم للأيبي الذي تقوم بالتحرير من خلاله",
"tooltip-pt-mytalk": "صفحة نقاشك",
"import-logentry-interwiki": "আন্তঃৱিকি-স্থানান্তৰিত $1",
"import-logentry-interwiki-detail": "$2ৱে কৰা $1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}}",
"javascripttest": "জাভাস্ক্ৰিপ্ট পৰীক্ষা।",
- "javascripttest-title": "$1 পৰীক্ষাসমূহ চলোৱা হৈছে",
"javascripttest-pagetext-noframework": "এই পৃষ্ঠাটো জাভাস্ক্ৰিপ্ট পৰীক্ষা চলোৱাৰ বাবে সংৰক্ষিত।",
"javascripttest-pagetext-unknownframework": "অজ্ঞাত সম্পৰীক্ষা ফ্ৰেমৱৰ্ক \"$1\"।",
"javascripttest-pagetext-frameworks": "অনুগ্ৰহ কৰি তলৰ যিকোনো এটা সম্পৰীক্ষা ফ্ৰেমৱৰ্ক বাছনি কৰক: $1",
"javascripttest-pagetext-skins": "পৰীক্ষা কৰিবলৈ আৱৰণ এখন বাছনি কৰক:",
"javascripttest-qunit-intro": "mediawiki.org-ত [$1 পৰীক্ষা নথিকৰণ] চাওক।",
- "javascripttest-qunit-heading": "মিডিয়াৱিকি জাভাস্ক্ৰিপ্ট QUnit পৰীক্ষা চুট",
"tooltip-pt-userpage": "আপোনাৰ সদস্য পৃষ্ঠা",
"tooltip-pt-anonuserpage": "যি আই.পি. ঠিকনাৰ পৰা আপুনি সম্পাদনা কৰিছে তাৰ সদস্য পৃষ্ঠা",
"tooltip-pt-mytalk": "আপোনাৰ আলোচনা পৃষ্ঠা",
]
},
"tog-underline": "कड़ि अधोरेखन:",
- "tog-hideminor": "हाल à¤\95य बदलावमà¥\87à¤\82 à¤\9bà¥\8bà¤\9f बदलाव लà¥\81à¤\95à¥\81वाà¤\93",
- "tog-hidepatrolled": "हाल à¤\95य बदलावमà¥\87à¤\82 परà¥\80à¤\95à¥\8dषित बदलाव लà¥\81à¤\95à¥\81वाà¤\93",
- "tog-newpageshidepatrolled": "नवा पनà¥\8dनन à¤\95य सà¥\82à¤\9aà¥\80 मà¥\87à¤\82 परà¥\80à¤\95à¥\8dषित पनà¥\8dना लà¥\81à¤\95à¥\81वाà¤\93",
- "tog-extendwatchlist": "à¤\96ालà¥\80 हालिà¤\8f à¤\95य नाहà¥\80à¤\82, बलà¥\8dà¤\95ि à¤\95à¥\81ल बदलाव à¤\95य दà¥\87à¤\96ावà¥\87 à¤\95य लिà¤\8f धà¥\8dयानसà¥\82à¤\9aà¥\80 à¤\95य विसà¥\8dतारित à¤\95रà¥\8b",
- "tog-usenewrc": "à¤\85à¤à¤¿à¤¨ à¤\95य बदलाव मà¥\87 à¤\85à¤\89र धà¥\8dयानसà¥\82à¤\9aà¥\80 मà¥\87à¤\82 बदलाव à¤\95य पनà¥\8dना à¤\95य à¤\85नà¥\81सार समà¥\82ह मà¥\87à¤\82 बाà¤\81à¤\9fà¥\8b",
- "tog-numberheadings": "शà¥\80रà¥\8dषà¤\95 सà¥\8dव-à¤\95à¥\8dरमाà¤\82à¤\95ित à¤\95रà¥\8b",
+ "tog-hideminor": "हाल à¤\95य बदलावमà¥\87à¤\82 à¤\9bà¥\8bà¤\9f बदलाव लà¥\81à¤\95à¥\81à¤\86वा à¤\9cाय",
+ "tog-hidepatrolled": "हाल à¤\95य बदलावमà¥\87à¤\82 परà¥\80à¤\95à¥\8dषित बदलाव लà¥\81à¤\95à¥\81à¤\86वा à¤\9cाय",
+ "tog-newpageshidepatrolled": "नवा पनà¥\8dनन à¤\95य सà¥\82à¤\9aà¥\80 मà¥\87à¤\82 परà¥\80à¤\95à¥\8dषित पनà¥\8dना लà¥\81à¤\95à¥\81à¤\86वा à¤\9cाय",
+ "tog-extendwatchlist": "à¤\96ालà¥\80 हालिà¤\8f à¤\95य नाहà¥\80à¤\82, बलà¥\8dà¤\95ि à¤\95à¥\81ल बदलाव à¤\95य दà¥\87à¤\96ावà¥\87 à¤\95य लिà¤\8f धà¥\8dयानसà¥\82à¤\9aà¥\80 à¤\95य विसà¥\8dतारित à¤\95रा à¤\9cाय",
+ "tog-usenewrc": "à¤\85à¤à¤¿à¤¨ à¤\95य बदलाव मà¥\87 à¤\85à¤\89र धà¥\8dयानसà¥\82à¤\9aà¥\80 मà¥\87à¤\82 बदलाव à¤\95य पनà¥\8dना à¤\95य à¤\85नà¥\81सार समà¥\82ह मà¥\87à¤\82 बाà¤\81à¤\9fा à¤\9cाय",
+ "tog-numberheadings": "शà¥\80रà¥\8dषà¤\95 सà¥\8dव-à¤\95à¥\8dरमाà¤\82à¤\95ित à¤\95रा à¤\9cाय",
"tog-showtoolbar": "सम्पादन औज़ारपट्टी देखावो",
- "tog-editondblclick": "दà¥\81à¤\88 à¤\95à¥\8dलिà¤\95 सà¥\87 पनà¥\8dना सà¤\82पादित à¤\95रà¥\8b",
+ "tog-editondblclick": "दà¥\81à¤\88 à¤\95à¥\8dलिà¤\95 सà¥\87 पनà¥\8dना सà¤\82पादित à¤\95रा à¤\9cाय",
"tog-editsectiononrightclick": "अनुभाग शीर्षक पे दायाँ क्लिक कई कय अनुभाग सम्पादित कीन जाय",
"tog-watchcreations": "हमार बनावा पन्ना अव हमार अपलोड करल फाइल कय हमरे ध्यानसूची में जोडो",
"tog-watchdefault": "हमार सम्पादन करल पन्ना अव फाइल कय ध्यानसूची में जोडो",
"anontalk": "ई आइ॰पी कय खरतिन बातचीत",
"navigation": "घुमाई",
"and": " अउर",
- "qbfind": "à¤\96à¥\8bà¤\9cà¥\8b",
+ "qbfind": "à¤\96à¥\8bà¤\9cा à¤\9cाय",
"qbbrowse": "ब्राउज़",
"qbedit": "सम्पादन",
"qbpageoptions": "ई पन्ना",
"qbmyoptions": "हमार पन्ना",
- "faq": "बहुत पूछ जाय वाला प्रश्न",
+ "faq": "बहुत पूछा जाय वाला प्रश्न",
"faqpage": "Project:ढेर पूछा जाय वाला सवाल",
"actions": "काम कुल",
"namespaces": "नामस्थान",
"returnto": "$1 मे लौटो।",
"tagline": "{{SITENAME}} से",
"help": "मदद",
- "search": "à¤\96à¥\8bà¤\9cà¥\8b",
- "searchbutton": "à¤\96à¥\8bà¤\9cà¥\8b",
- "go": "à¤\9cाà¤\93",
- "searcharticle": "à¤\9cाà¤\93",
+ "search": "à¤\96à¥\8bà¤\9cा à¤\9cाय",
+ "searchbutton": "à¤\96à¥\8bà¤\9cा à¤\9cाय",
+ "go": "à¤\9cावा à¤\9cाय",
+ "searcharticle": "à¤\9cावा à¤\9cाय",
"history": "पन्ना कय इतिहास",
"history_short": "इतिहास",
"updatedmarker": "हमरे अन्तिम दाँइ आवे कय बाद कय अपडेट",
"edit-local": "स्थानीय विवरण सम्पादन",
"create": "बनावो",
"create-local": "स्थानीय विवरण जोडो",
- "editthispage": "à¤\88 पनà¥\8dना à¤\95य समà¥\8dपादन à¤\95रà¥\8b",
- "create-this-page": "à¤\88 पनà¥\8dना बनाà¤\93",
- "delete": "मिà¤\9fाà¤\93",
- "deletethispage": "à¤\88 पनà¥\8dना मिà¤\9fाà¤\93",
- "undeletethispage": "à¤\88 पनà¥\8dना à¤\95य पà¥\81नरà¥\8dसà¥\8dथापित à¤\95रà¥\8b।",
- "undelete_short": "{{PLURAL:$1|à¤\8fà¤\95 मà¥\87à¤\9fाà¤\88 à¤\97à¤\8f|$1 मà¥\87à¤\9fाà¤\88 à¤\97à¤\8f}} बदलाव वापिस लाओ",
+ "editthispage": "à¤\88 पनà¥\8dना à¤\95य समà¥\8dपादन à¤\95रा à¤\9cाय",
+ "create-this-page": "à¤\88 पनà¥\8dना बनावा à¤\9cाय",
+ "delete": "मिà¤\9fावा à¤\9cाय",
+ "deletethispage": "à¤\88 पनà¥\8dना मà¥\87à¤\9fावा à¤\9cाय",
+ "undeletethispage": "à¤\88 पनà¥\8dना à¤\95य पà¥\81नरà¥\8dसà¥\8dथापित à¤\95रा à¤\9cाय।",
+ "undelete_short": "{{PLURAL:$1|à¤\8fà¤\95 मà¥\87à¤\9fाà¤\88 à¤\97य}} बदलाव वापिस लाओ",
"viewdeleted_short": "देखा जाय {{PLURAL:$1|एक मेटावल सम्पादन|$1 मेटावल सम्पादन}}",
- "protect": "सà¥\81रà¤\95à¥\8dषित à¤\95रà¥\8b",
- "protect_change": "बदलà¥\8b",
- "protectthispage": "à¤\87 पनà¥\8dना à¤\95य सà¥\81रà¤\95à¥\8dषित à¤\95रà¥\8b",
+ "protect": "सà¥\81रà¤\95à¥\8dषित à¤\95रा à¤\9cाय",
+ "protect_change": "बदला à¤\9cाय",
+ "protectthispage": "à¤\87 पनà¥\8dना à¤\95य सà¥\81रà¤\95à¥\8dषित à¤\95रा à¤\9cाय",
"unprotect": "असुरक्षित",
- "unprotectthispage": "à¤\88 पनà¥\8dना à¤\95य सà¥\81रà¤\95à¥\8dषा सà¥\8dतर बदलà¥\8b",
- "newpage": "नवाà¤\81 पन्ना",
- "talkpage": "à¤\88 पनà¥\8dना à¤\95य बारà¥\87 मà¥\87 à¤\9aरà¥\8dà¤\9aा à¤\95रà¥\8b",
+ "unprotectthispage": "à¤\88 पनà¥\8dना à¤\95य सà¥\81रà¤\95à¥\8dषा सà¥\8dतर बदला à¤\9cाय",
+ "newpage": "नà¤\81वा पन्ना",
+ "talkpage": "à¤\88 पनà¥\8dना à¤\95य बारà¥\87 मà¥\87 à¤\9aरà¥\8dà¤\9aा à¤\95रा à¤\9cाय",
"talkpagelinktext": "बातचीत",
"specialpage": "विशेष पन्ना",
"personaltools": "वैयक्तिक औज़ार",
- "articlepage": "सामà¤\97à¥\8dरà¥\80 पनà¥\8dना दà¥\87à¤\96à¥\8b",
+ "articlepage": "सामà¤\97à¥\8dरà¥\80 पनà¥\8dना दà¥\87à¤\96ा à¤\9cाय",
"talk": "चर्चा",
"views": "दर्शाव",
"toolbox": "साधन पेटी",
"userpage": "सदस्य पन्ना देखो",
- "projectpage": "परियà¥\8bà¤\9cना पनà¥\8dना दà¥\87à¤\96à¥\8b",
- "imagepage": "फ़ाà¤\87ल पनà¥\8dना दà¥\87à¤\96à¥\8b",
- "mediawikipage": "सनà¥\87शा पनà¥\8dना दà¥\87à¤\96à¥\8b",
- "templatepage": "साà¤\81à¤\9aा पनà¥\8dना दà¥\87à¤\96à¥\8b",
- "viewhelppage": "मदद पनà¥\8dना दà¥\87à¤\96à¥\8b",
- "categorypage": "शà¥\8dरà¥\87णà¥\80 पनà¥\8dना दà¥\87à¤\96à¥\8b",
- "viewtalkpage": "à¤\9aरà¥\8dà¤\9aा दà¥\87à¤\96à¥\8b",
+ "projectpage": "परियà¥\8bà¤\9cना पनà¥\8dना दà¥\87à¤\96ा à¤\9cाय",
+ "imagepage": "फ़ाà¤\87ल पनà¥\8dना दà¥\87à¤\96ा à¤\9cाय",
+ "mediawikipage": "सनà¥\87शा पनà¥\8dना दà¥\87à¤\96ा à¤\9cाय",
+ "templatepage": "साà¤\81à¤\9aा पनà¥\8dना दà¥\87à¤\96ा à¤\9cाय",
+ "viewhelppage": "मदद पनà¥\8dना दà¥\87à¤\96ा à¤\9cाय",
+ "categorypage": "शà¥\8dरà¥\87णà¥\80 पनà¥\8dना दà¥\87à¤\96ा à¤\9cाय",
+ "viewtalkpage": "à¤\9aरà¥\8dà¤\9aा दà¥\87à¤\96ा à¤\9cाय",
"otherlanguages": "अउर भाषा सब",
"redirectedfrom": "($1 से पुनर्निर्देशित)",
"redirectpagesub": "पुनर्निर्देश पन्ना",
"redirectto": "पुनर्निर्देश करो:",
"lastmodifiedat": "इ पन्ना कय पिछला बदलाव $1 कय $2 बजे भवा रहा।",
"protectedpage": "सुरक्षित पन्ना",
- "jumpto": "यहà¤\81 à¤\9cाà¤\93:",
+ "jumpto": "यहà¤\81 à¤\9cावा à¤\9cाय:",
"jumptonavigation": "घुमाई",
- "jumptosearch": "à¤\96à¥\8bà¤\9cà¥\8b",
+ "jumptosearch": "à¤\96à¥\8bà¤\9cा à¤\9cाय",
"view-pool-error": "क्षमा करा जाय, यह समय सर्वर पे ढेर बोझ है।\nबहुत ढेर प्रयोक्ता लोग इ पन्ना कय देखेक प्रयास करत हँय।\nतनी कुछ समय अगोरिकय फिर से इ पन्ना कय देखेक प्रयास करा जाय।\n\n$1",
"generic-pool-error": "क्षमा करा जाय, यह समय सर्वर पे ढेर बोझ है।\nबहुत ढेर प्रयोक्ता लोग इ चिज कय देखेक प्रयास करत हँय।\nतनी कुछ समय अगोरिकय फिर से इ चिज कय देखेक प्रयास करा जाय।\n\n$1",
"pool-timeout": "तालाबन्दी कय लिए अगोरे कय समय खतम",
"youhavenewmessagesmulti": "$1 पे आप कय खरतिन नवाँ सनेशा है",
"editsection": "सम्पादन",
"editold": "सम्पादन",
- "viewsourceold": "सà¥\8dरà¥\8bत दà¥\87à¤\96à¥\8b",
+ "viewsourceold": "सà¥\8dरà¥\8bत दà¥\87à¤\96ा à¤\9cाय",
"editlink": "सम्पादन",
- "viewsourcelink": "सà¥\8dरà¥\8bत दà¥\87à¤\96à¥\8b",
+ "viewsourcelink": "सà¥\8dरà¥\8bत दà¥\87à¤\96ा à¤\9cाय",
"editsectionhint": "अनुभाग सम्पादन: $1",
"toc": "विषय सूची",
"showtoc": "देखाओ",
"perfcached": "नीचे दिया हुआ डेटा कैशे मेमोरी से लिया हुआ है, अतः हो सकता है कि इसका पूर्ण अद्यतन न हुआ हो। कैशे मेमोरी में अधिकतम {{PLURAL:$1|एक नतीजा|$1 नतीजे}} उपलब्ध हैं।",
"perfcachedts": "नीचे दिया हुआ डेटा कैशे मेमोरी से है, और इसका अंतिम अद्यतन $1 को हुआ था। कैशे मेमोरी में अधिकतम {{PLURAL:$4|एक नतीजा|$4 नतीजे}} उपलब्ध हैं।",
"querypage-no-updates": "इस पृष्ठ का नवीनीकरण करना मना है। अभी यहाँ के डाटा को ताज़ा नहीं कर सकते।",
- "viewsource": "सà¥\8dरà¥\8bत दà¥\87à¤\96à¥\8b",
- "viewsource-title": "$1 à¤\95य लिà¤\8f सà¥\8dरà¥\8bत दà¥\87à¤\96à¥\8b",
+ "viewsource": "सà¥\8dरà¥\8bत दà¥\87à¤\96ा à¤\9cाय",
+ "viewsource-title": "$1 à¤\95य लिà¤\8f सà¥\8dरà¥\8bत दà¥\87à¤\96ा à¤\9cाय",
"actionthrottled": "काम खतम कई दिहा है",
"protectedpagetext": "ई पन्ना संपादन अव अउर काम से सुरक्षित किहा है।",
"viewsourcetext": "आप इ पन्ना कय स्रोत देखी सका जात है औ ओकर नकल उतार सका जात है:",
"userloginnocreate": "लॉग इन",
"logout": "बहरे निकरो",
"userlogout": "बहरे निकरो",
- "notloggedin": "लà¥\89à¤\97 à¤\87न नाà¤\87 à¤\95रà¥\87 हव",
+ "notloggedin": "लà¥\89à¤\97 à¤\87न नाà¤\87 à¤\95रा à¤\97ा हà¥\88",
"userlogin-noaccount": "खाता नाइ है?",
"userlogin-joinproject": "{{SITENAME}} से जुडव",
"nologin": "का आप सदस्यता नाई लीहे हव? '''$1'''।",
"tog-shownumberswatching": "İzləyən istifadəçilərin sayını göstər",
"tog-oldsig": "İndiki imza:",
"tog-fancysig": "Vikimətn şəklində imza (avtomatik keçid yaratmadan)",
- "tog-uselivepreview": "Canlı sınaq baxışı xüsusiyyətindən istifadə et (JavaScript tələb edir, sınaq mərhələsindədir)",
+ "tog-uselivepreview": "Canlı sınaq baxışını istifadə et",
"tog-forceeditsummary": "Qısa məzmunu boş saxladıqda mənə bildir",
"tog-watchlisthideown": "Mənim redaktələrimi izləmə siyahısında gizlət",
"tog-watchlisthidebots": "Bot redaktələrini izləmə siyahısında gizlət",
"viewsourcetext": "Siz bu səhifənin məzmununu görə və köçürə bilərsiniz:",
"viewyourtext": "Bu səhifəyə '''etdiyiniz dəyişikliklərin''' mənbəyini görüntüləyib köçürə bilərsiniz:",
"protectedinterface": "Bu səhifədə proqram təminatı üçün sistem məlumatları var və sui-istifadənin qarşısını almaq üçün mühafizə olunmalıdır.",
- "editinginterface": "'''Diqqət!''' Siz proqram təminatı interfeysinin mətn olan səhifəsini redaktə edirsiniz.\nOnun dəyişdirilməsi digər istifadəçilərin interfeysinin xarici görünüşünə təsir göstərir.\nTərcümə üçün daha yaxşı olar ki, MediaWiki-nin lokallaşması üçün olan [//translatewiki.net/wiki/Main_Page?setlang=az translatewiki.net] layihəsindən istifadə edəsiniz.",
+ "editinginterface": "<strong>Diqqət:</strong> Siz proqram təminatı üçün interfeys mətni olan səhifəni redaktə edirsiniz.\nOnun dəyişdirilməsi digər istifadəçilərin interfeysinin xarici görünüşünə təsir göstərəcək.",
"cascadeprotected": "Səhifə mühafizə olunub, çünki o kaskad mühafizə olunan {{PLURAL:$1|növbəti səhifəyə|növbəti səhifələrə}} qoşulub:\n$2",
"namespaceprotected": "Sizin adlarında $1 olan məqalələrdə redaktə etməyə icazəniz yoxdur.",
"customcssprotected": "Bu səhifəni redaktə etmə izniniz yoxdur, çünki bu səhifə başqa bir istifadəçinin fərdi parametrlərinə sahibdir.",
"invalidtitle-knownnamespace": "\"$2\" sahə adı üçün \"$3\" mətni keçərsiz bir başlıq",
"invalidtitle-unknownnamespace": "Naməlum $1 ad sahəsi miqdarı və keçərsiz \"$2\" başlıq",
"exception-nologin": "Giriş edilməmişdir",
- "exception-nologin-text": "Bu səhifəyə daxi olmaq üçün [[Special:Userlogin|özünüzü təqdim]], edin.",
+ "exception-nologin-text": "Bu səhifəyə daxil olmaq və ya fəaliyyəti icra etmək üçün özünüzü sistemə təqdim edin.",
"exception-nologin-text-manual": " bu səhifəyə və ya hərəkətə daxil olmaq üçün $1 lazımdır.",
"virus-badscanner": "Düzgün olmayan konfiqurasiya: naməlum ''$1'' virus yoxlayanı",
"virus-scanfailed": "Yoxlama başa çatmadı (kod $1)",
"virus-unknownscanner": "naməlum antivirus",
- "logouttext": "'''Sistemdən çıxdınız.'''\n\nSiz {{SITENAME}} saytını anonim olaraq istifadə etməyə davam edə bilər və ya eyni, yaxud başqa istifadəçi adı ilə <span class='plainlinks'>[$1 yenidən daxil ola]</span> bilərsiniz. Veb-brauzerin keş yaddaşını təmizləyənədək bəzi səhifələr hələ də sistemdə imişsiniz kimi görünə bilər.",
+ "logouttext": "<strong>Sistemdən çıxdınız.</strong>\n\nVeb-brauzerin keş yaddaşını təmizləyənədək bəzi səhifələr hələ də sistemdəymişsiniz kimi görünə bilər.",
"welcomeuser": "Xoş gəldin $1!",
"welcomecreation-msg": "Hesabınız yaradıldı.\n[[Special:Preferences|{{SITENAME}} nizamlamalarınızı]] dəyişdirməyi unutmayın.",
"yourname": "İstifadəçi adı",
"userlogin-noaccount": "İstifadəçi hesabınız yoxdur?",
"userlogin-joinproject": "{{SITENAME}} qoşulun",
"nologin": "İstifadəçi hesabınız yoxdur? $1.",
- "nologinlink": "Hesab yaradın",
- "createaccount": "Hesab aç",
+ "nologinlink": "Hesab yarat",
+ "createaccount": "Hesab yarat",
"gotaccount": "İstifadəçi hesabınız varmı? '''$1'''.",
"gotaccountlink": "Daxil olun",
"userlogin-resetlink": "Daxilolma məlumatlarınızı unutmusunuz?",
"cannotchangeemail": "Hesabın e-poçt ünvanı bu wiki üzərindən dəyişdirilə bilməz.",
"emaildisabled": "Bu saytdan e-poçt göndərə bilməzsiniz.",
"accountcreated": "Hesab yaradıldı",
- "accountcreatedtext": "$1 üçün istifadəçi hesabı yaradıldı.",
+ "accountcreatedtext": "[[{{ns:User}}:$1|$1]] ([[{{ns:User talk}}:$1|talk]]) üçün istifadəçi hesabı yaradıldı.",
"createaccount-title": "{{SITENAME}} hesabın yaradılması",
"createaccount-text": "Biriləri {{SITENAME}} saytında ($4) sizin e-poçt ünvanınızdan istifadə edərək, parolu \"$3\" olan, \"$2\" adlı bir hesab yaratdı.\n\nSayta daxil olmalı və parolunuzu dəyişdirməlisiniz.\n\nƏgər istifadəçi hesabını səhvən yaratmısınızsa, bu mesajı gözardı edə bilərsiniz.",
- "login-throttled": "Sistemə daxil olmaq üçün həddən artıq cəhd etmisiniz.\nYeni cəhd etməzdən əvvəl bir qədər gözləyin.",
+ "login-throttled": "Sistemə daxil olmaq üçün həddən artıq cəhd etmisiniz.\nYeni cəhd etməzdən əvvəl $1 gözləyin.",
"login-abort-generic": "Giriş uğursuz alındı - Rədd",
"loginlanguagelabel": "Dil: $1",
"suspicious-userlogout": "Sizin çıxış üçün cəhdiniz uğursuz alındı. Bu, brouzerin yaxud proksi-keşləmənin düzgün işləməməsindən qaynaqlanır.",
"createacct-another-realname-tip": "Gərçək adınız istəyə bağlıdır.\nƏgər gərçək adınızı göstərsəniz, çalışmalarınıza müraciət etmək üçün istifadə ediləcəkdir.",
"pt-login": "Daxil ol",
"pt-login-button": "Daxil ol",
- "pt-createaccount": "İstifadəçi hesabı yarat",
+ "pt-createaccount": "Hesab yarat",
"pt-userlogout": "Çıxış",
"php-mail-error-unknown": "PHP-nin mail() funksiyasında naməlum xəta",
"user-mail-no-addy": "Bir e-poçt ünvanı olmadan e-poçt göndərməyə çalışdı.",
"preview": "Sınaq görüntüsü",
"showpreview": "Sınaq göstərişi",
"showdiff": "Dəyişiklikləri göstər",
- "anoneditwarning": "'''DİQQƏT!''' Siz özünüzü sistemə təqdim etməmisiniz. Sizin IP ünvanınız bu səhifənin tarixçəsinə qeyd olunacaq.",
+ "anoneditwarning": "<strong>Diqqət:</strong> Siz sistemə daxil olmamısınız. Hər hansı dəyişiklik etsəniz, sizin IP-ünvanınız hamıya görünəcək. Əgər <strong>[$1 daxil olsanız]</strong> və ya <strong>[$2 hesab yaratsanız]</strong>, redaktələriniz sizin istifadəçi adınıza yazılacaq və digər üstünlüklər də qazanacaqsınız.",
"anonpreviewwarning": "Sistemə daxil olmamısınız. \"Səhifəni qeyd et\" düyməsini bassanız IP ünvanınız səhifənin tarixçəsində qeyd olunacaq.",
"missingsummary": "'''Xatırlatma.''' Siz dəyişikliklərin qısa şərhini verməmisiniz. \"Səhifəni qeyd et\" düyməsinə təkrar basandan sonra sizin dəyişiklikləriniz şərhsiz qeyd olunacaq.",
"missingcommenttext": "Zəhmət olmasa, aşağıda şərhinizi yazın.",
"currentrev": "Hal-hazırkı versiya",
"currentrev-asof": "Səhifəsinin $1 tarixinə olan son halı",
"revisionasof": "$1 versiyası",
- "revision-info": "$2 tərəfindən yaradılmış $1 tarixli dəyişiklik",
+ "revision-info": "$2$7 tərəfindən edilmiş $1 tarixli dəyişiklik",
"previousrevision": "←Əvvəlki versiya",
"nextrevision": "Sonrakı versiya→",
"currentrevisionlink": "Hal-hazırkı versiya",
"history-feed-empty": "Axtardığınız səhifə mövcud deyil.\nÇox guman ki, bu səhifə silinib və ya onun adı dəyişdirilib.\nVikidə buna bənzər səhifələri [[Special:Search|axtarmağa]] cəhd edin.",
"rev-deleted-comment": "(şərhlər silindi)",
"rev-deleted-user": "(İstifadəçi adı silindi)",
- "rev-deleted-event": "(qeyd silindi)",
+ "rev-deleted-event": "(qeydiyyat detalları silindi)",
"rev-deleted-user-contribs": "[istifadəçi adı və ya IP ünvanı silindi - dəyişiklik fəaliyyətlərdən çıxarıldı]",
"rev-deleted-text-permission": "Səhifənin bu versiyası''' silinib'''.\nMümkündür ki, bunun səbəbi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silmə qeydlərində] göstərilmişdir.",
"rev-suppressed-text-unhide": "Səhifənin bu versiyası''' silinib'''.\nMümkündür ki, bunun səbəbi [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} silmə qeydlərində] göstərilmişdir.\nSiz idarəçi olduğunuza görə silinən [$1 bu versiyanı] nəzərdən keçirə bilərsiniz.",
"revdelete-show-file-submit": "Bəli",
"logdelete-selected": "Jurnalın {{PLURAL:$1|seçilmiş qeydi|seçilmiş qeydləri}}:",
"revdelete-legend": "Məhdudiyyətləri müəyyənləşdir:",
- "revdelete-hide-text": "Səhifənin bu versiyasının mətnini gizlə",
+ "revdelete-hide-text": "Dəyişikliyin mətni",
"revdelete-hide-image": "Faylın məzmununu gizlə",
- "revdelete-hide-name": "Hərəkəti və məqsədi gizləmək",
- "revdelete-hide-comment": "Dəyişikliklərin şərhini gizlə",
- "revdelete-hide-user": "Redaktə müəllifinin istifadəçi adını/IP ünvanını gizlə",
+ "revdelete-hide-name": "Məqsədi və parametrləri gizlə",
+ "revdelete-hide-comment": "Dəyişikliklərin təsviri",
+ "revdelete-hide-user": "Redaktə müəllifinin istifadəçi adı/IP-ünvanı",
"revdelete-hide-restricted": "Məlumatları idarəçilərdən də gizlə",
"revdelete-radio-same": "(dəyişdirmə)",
"revdelete-radio-set": "Gizli",
"revdel-restore": "Görünüşü dəyiş",
"pagehist": "Səhifənin tarixçəsi",
"deletedhist": "Silmə qeydləri",
- "revdelete-reason-dropdown": "*Ümumi silmə səbəbləri\n** Müəllif hüquqları pozuntusu\n** Uyğunsuz şəxsi məlumat",
+ "revdelete-reason-dropdown": "*Əsas silmə səbəbləri\n** Müəllif hüquqları pozuntusu\n** Uyğun olmayan şəxsi məlumat\n** Uyğun olmayan istifadəçi adı\n** Potensial böhtan xarakterli məlumat",
"revdelete-otherreason": "Digər/əlavə səbəb:",
"revdelete-reasonotherlist": "Digər səbəb",
"revdelete-edit-reasonlist": "Silmə səbəblərini redaktə et",
"search-section": "(bölmə $1)",
"search-suggest": "Bəlkə, bunu nəzərdə tuturdunuz: $1",
"search-interwiki-caption": "Qardaş layihələr",
- "search-interwiki-default": "$1 nəticə:",
+ "search-interwiki-default": "$1 nəticələri:",
"search-interwiki-more": "(yenə)",
"search-relatedarticle": "əlaqədar",
"searchrelated": "əlaqəli",
"timezoneregion-indian": "Hind Okeanı",
"timezoneregion-pacific": "Sakit Okean",
"allowemail": "Digər istifadəçilər mənə e-məktub göndərə bilər",
- "prefs-searchoptions": "Axtarış kriteriyaları",
+ "prefs-searchoptions": "Axtar",
"prefs-namespaces": "Adlar fəzası",
"default": "boş",
"prefs-files": "Fayllar",
"prefs-common-css-js": "Bütün skinlər üçün ümumi CSS/JavaScript:",
"prefs-emailconfirm-label": "E-poçtun təsdiqlənməsi:",
"youremail": "E-məktub:",
- "username": "İstifadəçi adı:",
- "prefs-memberingroups": "Üzvü olduğu {{PLURAL:$1|qrup|qrup}}:",
+ "username": "{{GENDER:$1|İstifadəçi adı}}:",
+ "prefs-memberingroups": "{{GENDER:$2|Üzv}} olduğu {{PLURAL:$1|qrup}}:",
"prefs-memberingroups-type": "$1",
"prefs-registration": "Qeydiyyat vaxtı:",
"prefs-registration-date-time": "$1",
"yournick": "Ləqəb:",
"badsig": "Səhv xam imza.\nHTML kodu yoxla.",
"badsiglength": "İmzanız çox uzundur. İmza $1 {{PLURAL:$1|simvoldan|simvoldan}} uzun olmamalıdır.",
- "yourgender": "Cins:",
- "gender-unknown": "göstərmə",
- "gender-male": "kişi",
- "gender-female": "qadın",
+ "yourgender": "Hansı təsvir sizə daha uyğundur?",
+ "gender-unknown": "Bildirmək istəmirəm",
+ "gender-male": "Bu kişi istifadəçi viki-səhifələri redaktə edir",
+ "gender-female": "Bu qadın istifadəçi viki-səhifələri redaktə edir",
"email": "E-məktub",
- "prefs-help-realname": "Həqiqi adınızı daxil etmək məcburi deyil.\nBu seçimi etdiyiniz halda, adınız redaktələrinizə görə müəlliflik hüququnuzun tanınması üçün istifadə ediləcək.",
+ "prefs-help-realname": "Həqiqi adınızı daxil etmək məcburi deyil.\nDaxil etsəniz, adınız redaktələrinizin müəllifliyinin təyin edilməsi üçün istifadə edilə bilər.",
"prefs-help-email": "E-poçt ünvanınızı daxil etmək məcburi deyil.\nBu, parolunuzu unutduğunuz halda, sizə yeni parol göndərməyə imkan verir.",
"prefs-help-email-others": "Həmçinin, istifadəçi və ya müzakirə səhifənizdəki link vasitəsilə başqa istifadəçilərin sizinlə əlaqə yaratmasını seçə bilərsiniz. Bu halda sizin e-poçt ünvanınız heç kimə görünməyəcək.",
"prefs-help-email-required": "Elektron ünvan tələb olunur.",
"prefs-signature": "İmza",
"prefs-dateformat": "Tarix formatı",
"prefs-timeoffset": "Saat qurşağının fərqi",
- "prefs-advancedediting": "Ətraflı variantlar",
+ "prefs-advancedediting": "Ümumi parametrlər",
"prefs-advancedrc": "Ətraflı variantlar",
"prefs-advancedrendering": "Ətraflı variantlar",
"prefs-advancedsearchoptions": "Ətraflı variantlar",
"userrights-no-interwiki": "Sizə başqa vikilayihələrdəki istifadəçilərin statusunu dəyişməyə icazə verilməyib",
"userrights-nodatabase": "$1 verilənlər bazası ya mövcud deyil, ya da lokal deyil.",
"userrights-nologin": "Siz istifadəçilərin hüquqlarını dəyişmək üçün sistemə idarəçi olaraq [[Special:UserLogin|daxil olmalısınız]].",
- "userrights-notallowed": "Sizin istifadəçi hesabınıza digər istifadəçilərə hüquqlar vermək və ya almağa icazə verilməyib.",
+ "userrights-notallowed": "Sizin digər istifadəçilərə hüquqlar vermək və ya almaq icazəniz yoxdur.",
"userrights-changeable-col": "Dəyişdirə bildiyiniz qruplar",
"userrights-unchangeable-col": "Dəyişdirə bilmədiyiniz qruplar",
"userrights-irreversible-marker": "$1*",
"right-reupload-own": "Mövcud faylın yeni versiyasının həmin istifadəçi tərəfindən yüklənməsi",
"right-reupload-shared": "ümumi anbarda olan faylın adının lokal adla dəyişdirilməsi",
"right-upload_by_url": "URL-dən fayl yüklə",
- "right-autoconfirmed": "Yarım mühafizə edilmiş səhifənin redaktəsi",
+ "right-autoconfirmed": "IP-ünvana görə sürət məhdudiyyəti yoxdur",
"right-bot": "Avtomatik proses hesab edilir",
"right-apihighlimits": "API sorğularında yüksək həddən istifadə et",
"right-writeapi": "Redaktələrdən zamanı API-dən (İnterfeys proqramlaşdıran proqram) istifadə",
"right-hideuser": "İstifadəçi adına qadağa qoy və adın görünməsinin qarşısını al",
"right-ipblock-exempt": "IP bloklanmalarını, avtobloklanmalarını və diapazon bloklanmalarını keç",
"right-proxyunbannable": "Proksilərin avtomatik bloklanmalarını keç",
- "right-unblockself": "Özünün blokunun qaldırılması",
- "right-protect": "Mühafizə səviyyəsi dəyiş və mühafizə altında olan səhifəni redaktə et",
- "right-editprotected": "Mühafizə olunmuş səhifələri redaktə (kaskad mühafizə daxil olmaqla)",
+ "right-unblockself": "Öz blokunuzun açılması",
+ "right-protect": "Mühafizə səviyyəsinin dəyişilməsi və kaskad mühafizə olunan səhifələrin redaktə edilməsi",
+ "right-editprotected": "\"{{int:protect-level-sysop}}\" mühafizə səviyyəsinə malik səhifələrin redaktə edilməsi",
"right-editinterface": "İstifadəçi interfeysini dəyişmək",
"right-editusercssjs": "Digər istifadəçilərin CSS və JavaScript fayllarını redaktə",
"right-editusercss": "Digər istifadəçilərin CSS faylını redaktə",
"recentchanges-label-bot": "Bu redaktə bot tərəfindən edilmişdir",
"recentchanges-label-unpatrolled": "Bu redaktə hələ nəzərdən keçirilməmişdir",
"recentchanges-label-plusminus": "Səhifənin ölçüsü bayt miqdarı ilə təyin edilir",
- "recentchanges-legend-newpage": "$1 - yeni səhifə",
+ "recentchanges-legend-newpage": "{{int:recentchanges-label-newpage}} (həmçinin bax: [[Special:NewPages|yeni səhifələrin siyahısı]])",
"rcnotefrom": "Aşağıda <strong>$2</strong>-dən bu yana olan dəyişikliklər göstərilib (<strong>$1</strong>-dən çox olmayaraq).",
"rclistfrom": "$3 $2 vaxtından başlayaraq yeni dəyişiklikləri göstər",
"rcshowhideminor": "Kiçik redaktələri $1",
"backend-fail-delete": "\"$1\" faylı sililmədi.",
"backend-fail-copy": "\"$1\" faylı \"$2\" faylına kopyalanmır.",
"backend-fail-read": "\"$1\" faylı oxunmadı.",
- "backend-fail-create": "\"$1\" faylı yaranmadı.",
+ "backend-fail-create": "\"$1\" faylı yazıla bilmədi.",
"uploadstash": "Gizli yükləmə",
"uploadstash-clear": "Müvəqqəti faylları təmizlə",
"uploadstash-refresh": "Fayl siyahısını yenilə",
"license": "Lisenziya",
"license-header": "Lisenziya",
"nolicense": "Heç biri seçilməmişdir",
- "upload_source_url": " (keçərli, hər kəsin daxil ola biləcəyi bir URL)",
- "upload_source_file": " (kompyuterinizdəki bir fayl)",
+ "upload_source_url": "(siz düzgün, hər kəsin daxil ola biləcəyi URL seçdiniz)",
+ "upload_source_file": "(siz kompüterinizdəki faylı seçdiniz)",
"listfiles_search_for": "Media adı üçün axtar:",
"imgfile": "fayl",
"listfiles": "Fayl siyahısı",
"statistics-users-active": "Aktiv istifadəçilər",
"statistics-users-active-desc": "Son {{PLURAL:$1|gün|$1 gündə}} iş görən istifadəçilər",
"doubleredirects": "İkiqat istiqamətləndirmələr",
- "double-redirect-fixed-move": "[[$1]] dəyişdirilib.\nHazırda [[$2]]-yə istiqamətlənib.",
- "double-redirect-fixed-maintenance": "[[$1]]-dən [[$2]]-yə ikiqat istiqamətlənmə düzəldilir.",
+ "double-redirect-fixed-move": "[[$1]] səhifəsinin yeri dəyişdirilib.\nO avtomatik yenilənib və [[$2]] səhifəsinə yönləndirilib.",
+ "double-redirect-fixed-maintenance": "[[$1]] səhifəsindən [[$2]] səhifəsinə ikiqat yönləndirmə avtomatik düzəldilir.",
"double-redirect-fixer": "Yönləndirmə səhvdir",
"brokenredirects": "Xətalı istiqamətləndirmə",
"brokenredirectstext": "Aşağıdakı istiqamətləndirmələr mövcud olmayan səhifələrə keçid verir:",
"wantedtemplates": "Tələb olunan şablonlar",
"mostlinked": "Ən çox keçidlənən səhifələr",
"mostlinkedcategories": "Ən çox məqaləsi olan kateqoriyalar",
- "mostlinkedtemplates": "Ən çox istifadə olunan şablonlar",
+ "mostlinkedtemplates": "Ən çox istifadə olunan səhifələr",
"mostcategories": "Kateqoriyası ən çox olan məqalələr",
"mostimages": "Ən çox istifadə edilmiş şəkillər",
"mostrevisions": "Ən çox nəzərdən keçirilmiş (versiyalı) məqalələr",
"listusers-noresult": "İstifadəçi tapılmadı.",
"listusers-blocked": "(bloklandı)",
"activeusers": "Aktiv istifadəçilərin siyahısı",
- "activeusers-count": "$1 {{PLURAL:$1|edit|redaktə}} son {{PLURAL:$3|day|$3 gün}}",
+ "activeusers-count": "Son {{PLURAL:$3|gündə|$3 gündə}} $1 {{PLURAL:$1|redaktə|redaktə}}",
"activeusers-hidebots": "Botları gizlə",
"activeusers-hidesysops": "İdarəçiləri gizlə",
"activeusers-noresult": "İstifadəçi tapılmadı.",
"listgrouprights": "İstifadəçi qruplarının hüquqları",
"listgrouprights-summary": "Bu vikidə olan istifadəçi siyahıları və onların hüquqları aşağıda göstərilmişdir.\nFərdi hüquqlar haqqında əlavə məlumatı [[{{MediaWiki:Listgrouprights-helppage}}]] səhifəsində tapa bilərsiniz",
- "listgrouprights-key": "* <span class=\"listgrouprights-granted\">Verilmiş hüquqlar</span>\n* <span class=\"listgrouprights-revoked\">Ləğv edilmiş hüquqlar</span>",
+ "listgrouprights-key": "İzah:\n* <span class=\"listgrouprights-granted\">Verilmiş hüquqlar</span>\n* <span class=\"listgrouprights-revoked\">Geri alınmış hüquqlar</span>",
"listgrouprights-group": "Qrup",
"listgrouprights-rights": "Hüquqlar",
"listgrouprights-helppage": "Help:Qrup hüquqları",
"mywatchlist": "İzləmə siyahısı",
"watchlistfor2": "$1 $2 üçün",
"nowatchlist": "İzləmə siyahınız böşdur.",
- "watchlistanontext": "Lütfən, izlədiyiniz səhifələri görmək və ya redaktə etmək üçün $1.",
+ "watchlistanontext": "Lütfən, izlədiyiniz səhifələri görmək və ya redaktə etmək üçün sistemə daxil olun.",
"watchnologin": "Daxil olmamısınız",
"addwatch": "İzləmə siyahısına əlavə et",
"addedwatchtext": "\"[[:$1]]\" səhifəsi [[Special:Watchlist|izlədiyiniz səhifələr]] siyahısına əlavə edildi. Bu səhifədə və əlaqəli müzakirə səhifəsindəki bütün dəyişikliklər orada göstəriləcək və səhifə asanlıqla seçiləbilmək üçün [[Special:RecentChanges|son dəyişikliklərdə]] qalın şriftlərlə görünəcəkdir. <p> Səhifəni izləmə siyahınızdan çıxarmaq üçün yan lövhədəki \"izləmə\" düyməsinə vurun.",
"import-logentry-interwiki": "імпартавана зь іншай вікі $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|вэрсія імпартаваная|вэрсіі імпартаваныя|вэрсіяў імпартаваныя}} з $2",
"javascripttest": "Тэставаньне JavaScript",
- "javascripttest-title": "Праводзіцца тэставаньне $1",
"javascripttest-pagetext-noframework": "Гэтая старонка трымаецца для правядзеньня тэстаў JavaScript.",
"javascripttest-pagetext-unknownframework": "Невядомая бібліятэка тэставаньня «$1».",
"javascripttest-pagetext-frameworks": "Калі ласка, выберыце адну з прапанаваных бібліятэка тэставаньня: $1",
"javascripttest-pagetext-skins": "Выберыце афармленьне для тэставаньня:",
"javascripttest-qunit-intro": "Глядзіце [$1 дакумэнтацыю па тэставаньні] на mediawiki.org.",
- "javascripttest-qunit-heading": "Набор QUnit-тэстаў для MediaWiki JavaScript",
"tooltip-pt-userpage": "Вашая ўласная старонка",
"tooltip-pt-anonuserpage": "Старонка ўдзельніка для IP-адрасу, зь якога Вы рэдагуеце",
"tooltip-pt-mytalk": "Ваша старонка гутарак",
"import-logentry-interwiki": "$1 উইকি-স্থানান্তরিত",
"import-logentry-interwiki-detail": "$2-এর থেকে $1টি {{PLURAL:$1|সংশোধন}} করা হয়েছে",
"javascripttest": "জাভাস্ক্রিপ্ট পরীক্ষা",
- "javascripttest-title": "$1 পরীক্ষা চলছে",
"javascripttest-pagetext-noframework": "এই পাতাটি জাভাস্ক্রিপ্ট পরীক্ষার জন্য সংরক্ষিত।",
"javascripttest-pagetext-unknownframework": "পরীক্ষার অজানা ফ্রেমওয়ার্ক \"$1\"।",
"javascripttest-pagetext-frameworks": "অনুগ্রহ করে নিচের কোনো একটি ফ্রেমওয়ার্ক নির্ধারণ করুন: $1",
"javascripttest-pagetext-skins": "পরীক্ষার জন্য একটি স্কীন নির্ধারণ করুন:",
"javascripttest-qunit-intro": "mediawiki.org থেকে [$1 পরীক্ষার ডলুমেন্টেশন] দেখুন।",
- "javascripttest-qunit-heading": "মিডিয়াউইকি জাভাস্ক্রিপ্ট কিউইউনিট টেস্ট স্যুট",
"tooltip-pt-userpage": "আপনার ব্যবহারকারী পাতা",
"tooltip-pt-anonuserpage": "যে আইপি ঠিকানা থেকে আপনি সম্পাদনা করছেন, তার ব্যবহারকারী পাতা",
"tooltip-pt-mytalk": "আপনার আলাপের পাতা",
"version-entrypoints": "শুরুর ইউআরএল",
"version-entrypoints-header-entrypoint": "শুরু",
"version-entrypoints-header-url": "ইউআরএল",
+ "version-libraries-version": "সংস্করণ",
"redirect": "পাতা, ফাইল, ব্যবহারকরী, অথবা সংশোধন আইডি দ্বারা পুনঃনির্দেশ করা হয়েছে",
"redirect-legend": "একটি ফাইল অথবা পাতায় পুনঃনির্দেশ করা হয়েছে",
"redirect-summary": "এই বিশেষ পাতাটি একটি ফাইলে (ফাইলের নাম), একটি পাতায় (সংস্করণ আইডি বা পাতা আইডি), অথবা একটি ব্যবহারকরী পাতায় (সংখ্যায় লেখা ব্যবহারকারী আইডি) পুনঃনির্দেশিত হয়েছে। ব্যবহার: [[{{#Special:Redirect}}/file/উদাহরণ.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], অথবা [[{{#Special:Redirect}}/user/101]]।",
"sqlite-no-fts": "$1 বাদে পূর্ণ টেক্সট সার্চ সমর্থন",
"logentry-delete-delete": "$1 কর্তৃক $3 পাতাটি অপসারিত হয়েছে",
"logentry-delete-restore": "$1 কর্তৃক $3 পাতাটি {{GENDER:$2|ফিরিয়ে আনা}} হয়েছে",
- "logentry-delete-event": "$1 {{PLURAL:$5|à¦\8fà¦\95à¦\9fি লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fà§\87র|$5 লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fসমà§\82হà§\87র}} à¦à¦¿à¦\9cিবিলিà¦\9fি {{GENDER:$2|পরিবর্তন}} করেছেন $3: $4",
- "logentry-delete-revision": "$1 {{PLURAL:$5|একটি সংস্করণের|$5 সংস্করণসমূহের}} ভিজিবিলিটি {{GENDER:$2|পরিবর্তন}} করেছেন $3: $4",
- "logentry-delete-event-legacy": "$1 $3à¦\9fায় লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fসমà§\82হà§\87র à¦à¦¿à¦\9cিবিলিà¦\9fি {{GENDER:$2|পরিবর্তন}} করেছেন",
- "logentry-delete-revision-legacy": "$1 $3à¦\9fায় সà¦\82সà§\8dà¦\95রণসমà§\82হà§\87র à¦à¦¿à¦\9cিবিলিà¦\9fি {{GENDER:$2|পরিবর্তন}} করেছেন",
+ "logentry-delete-event": "$1 {{PLURAL:$5|à¦\8fà¦\95à¦\9fি লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fà§\87র|$5 লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fসমà§\82হà§\87র}} দà§\83শà§\8dযমানতা {{GENDER:$2|পরিবর্তন}} করেছেন $3: $4",
+ "logentry-delete-revision": "$1 {{PLURAL:$5|একটি সংস্করণের|$5টি সংস্করণের}} দৃশ্যমানতা {{GENDER:$2|পরিবর্তন}} করেছেন $3: $4",
+ "logentry-delete-event-legacy": "$1 $3à¦\9fায় লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fসমà§\82হà§\87র দà§\83শà§\8dযমানতা {{GENDER:$2|পরিবর্তন}} করেছেন",
+ "logentry-delete-revision-legacy": "$1 $3à¦\9fায় সà¦\82সà§\8dà¦\95রণসমà§\82হà§\87র দà§\83শà§\8dযমানতা {{GENDER:$2|পরিবর্তন}} করেছেন",
"logentry-suppress-delete": "$1 কর্তৃক $3 পাতাটি {{GENDER:$2|ফিরিয়ে আনা}} হয়েছে",
- "logentry-suppress-event": "$1 à¦\97à§\8bপনà§\87 {{PLURAL:$5|à¦\8fà¦\95à¦\9fি লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fà§\87র|$5 লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fসমà§\82হà§\87র}} à¦à¦¿à¦\9cিবিলিà¦\9fি {{GENDER:$2|পরিবর্তন}} করেছেন $3: $4",
- "logentry-suppress-revision": "$1 গোপনে {{PLURAL:$5|একটি সংস্করণের|$5 সংস্করণসমূহের}} ভিজিবিলিটি {{GENDER:$2|পরিবর্তন}} করেছেন $3: $4",
- "logentry-suppress-event-legacy": "$1 à¦\97à§\8bপনà§\87 $3à¦\9fায় লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fসমà§\82হà§\87র à¦à¦¿à¦\9cিবিলিà¦\9fি {{GENDER:$2|পরিবর্তন}} করেছেন",
- "logentry-suppress-revision-legacy": "$1 à¦\97à§\8bপনà§\87 $3à¦\9fায় সà¦\82সà§\8dà¦\95রণসমà§\82হà§\87র à¦à¦¿à¦\9cিবিলিà¦\9fি {{GENDER:$2|পরিবর্তন}} করেছেন",
+ "logentry-suppress-event": "$1 à¦\97à§\8bপনà§\87 {{PLURAL:$5|à¦\8fà¦\95à¦\9fি লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fà§\87র|$5 লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fসমà§\82হà§\87র}} দà§\83শà§\8dযমানতা {{GENDER:$2|পরিবর্তন}} করেছেন $3: $4",
+ "logentry-suppress-revision": "$1 গোপনে {{PLURAL:$5|একটি সংস্করণের|$5টি সংস্করণের}} দৃশ্যমানতা {{GENDER:$2|পরিবর্তন}} করেছেন $3: $4",
+ "logentry-suppress-event-legacy": "$1 à¦\97à§\8bপনà§\87 $3à¦\9fায় লà¦\97 à¦\87à¦à§\87নà§\8dà¦\9fসমà§\82হà§\87র দà§\83শà§\8dযমানতা {{GENDER:$2|পরিবর্তন}} করেছেন",
+ "logentry-suppress-revision-legacy": "$1 à¦\97à§\8bপনà§\87 $3à¦\9fায় সà¦\82সà§\8dà¦\95রণসমà§\82হà§\87র দà§\83শà§\8dযমানতা {{GENDER:$2|পরিবর্তন}} করেছেন",
"revdelete-content-hid": "বিষয়বস্তু লুকায়িত",
"revdelete-summary-hid": "সম্পাদনা সারাংশ লুকায়িত",
"revdelete-uname-hid": "ব্যবহারকারী নাম লুকায়িত",
"import-logentry-interwiki": "«$1» — викиюкъара импорт",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|верси импорт йина|версеш импорт йина}} $2 чура",
"javascripttest": "JavaScript хьажар",
- "javascripttest-title": "$1 хьожуш бу",
"tooltip-pt-userpage": "Декъашхочуьна агlо",
"tooltip-pt-mytalk": "Сан дийцаре агlо",
"tooltip-pt-preferences": "Хьан гlирс нисбар",
"import-logentry-interwiki": "přenesl $1",
"import-logentry-interwiki-detail": "{{PLURAL:$1|naimportována $1 revize|naimportovány $1 revize|naimportováno $1 revizí}} z $2",
"javascripttest": "Testování JavaScriptu",
- "javascripttest-title": "Spouštějí se testy v $1",
"javascripttest-pagetext-noframework": "Tato stránka je vyhrazena pro spouštění testů JavaScriptu.",
"javascripttest-pagetext-unknownframework": "Neznámá testovací knihovna „$1“.",
"javascripttest-pagetext-frameworks": "Zvolte jednu z následujících testovacích knihoven: $1",
"javascripttest-pagetext-skins": "Zvolte vzhled, pod kterým se mají testy spustit:",
"javascripttest-qunit-intro": "Vizte [$1 dokumentaci testování] na mediawiki.org",
- "javascripttest-qunit-heading": "Sada testů JavaScriptu v MediaWiki pomocí QUnit",
"tooltip-pt-userpage": "Vaše uživatelská stránka",
"tooltip-pt-anonuserpage": "Uživatelská stránka pro IP adresu, ze které editujete",
"tooltip-pt-mytalk": "Vaše diskusní stránka",
"version-entrypoints-header-url": "URL",
"version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Cesta k článkům]",
"version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Cesta ke skriptům]",
+ "version-libraries": "Nainstalované knihovny",
+ "version-libraries-library": "Knihovna",
+ "version-libraries-version": "Verze",
"redirect": "Přesměrování podle souboru, uživatele, stránky nebo ID revize",
"redirect-legend": "Přesměrování na soubor či stránku",
"redirect-summary": "Tato speciální stránka přesměrovává na soubor (podle názvu), stránku (podle ID stránky nebo revize) nebo uživatele (podle číselného uživatelského ID). Použití: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]] nebo [[{{#Special:Redirect}}/user/101]].",
"compare-revision-not-exists": "Zadaná revize neexistuje.",
"dberr-problems": "Promiňte! Tento server má v tuto chvíli technické problémy.",
"dberr-again": "Zkuste několik minut počkat a poté znovu načíst stránku.",
- "dberr-info": "(Nelze navázat spojení s databázovým serverem: $1)",
- "dberr-info-hidden": "(Nelze navázat spojení s databázovým serverem)",
+ "dberr-info": "(Nelze se připojit k databázi: $1)",
+ "dberr-info-hidden": "(Nelze se připojit k databázi)",
"dberr-usegoogle": "Mezitím můžete zkusit hledat pomocí Google.",
"dberr-outofdate": "Uvědomte si, že jejich vyhledávací index našeho obsahu může být zastaralý.",
"dberr-cachederror": "Následující stránka je kopie z cache a nemusí být aktuální.",
"import-logentry-interwiki": "importierte „$1“ (Transwiki)",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|Version|Versionen}} von $2 importiert",
"javascripttest": "JavaScript-Test",
- "javascripttest-title": "$1-Tests werden durchgeführt",
"javascripttest-pagetext-noframework": "Diese Seite ist JavaSkript-Tests vorbehalten.",
"javascripttest-pagetext-unknownframework": "Unbekanntes Framework „$1“.",
"javascripttest-pagetext-frameworks": "Bitte wähle eine der folgenden Prüfumgebungen aus: $1",
"javascripttest-pagetext-skins": "Wähle eine Benutzeroberfläche zur Durchführung der Tests aus:",
"javascripttest-qunit-intro": "Siehe die [$1 Dokumentation zu Tests] auf mediawiki.org",
- "javascripttest-qunit-heading": "MediaWiki-JavaSkript-QUnit-Tester",
"tooltip-pt-userpage": "Deine Benutzerseite",
"tooltip-pt-anonuserpage": "Benutzerseite der IP-Adresse von der aus du Änderungen durchführst",
"tooltip-pt-mytalk": "Deine Diskussionsseite",
"category-subcat-count-limited": "In cla categoréia ché a gh'é{{PLURAL:$1|'na sòt-categoréia, nutêda|$1 sòt-categoréi, nutêdi}}ché 'd sègvit.",
"category-article-count": "{{PLURAL:$2|In cla categoréia ché a gh'é sōl 'na pàgina, sgnêda ché.|Cla categoréia ché la gh'à {{PLURAL:$1|la pàgina sgnêda| al pàgini $1 sgnêdi}} ed sègvit, in un totêl ed $2.}}",
"category-article-count-limited": "In cla categoréia ché a gh'é {{PLURAL:$1|la pàgina nutêda|al $1 pàgini nutêdi ch'é 'd sègvit.}}",
- "category-file-count": "{{PLURAL:$2|In cla categoréia ché a gh'é sōl un file, sgnê ché.|In cla categoréia ché gh'é{{PLURAL:$1|un file sgnê ché| i file $1, sgnê}} ed sègvit, in un totêl ed $2.}}",
+ "category-file-count": "{{PLURAL:$2|In cla categoréia ché a gh'é sōl un file, sgnê ché.|In cla categoréia ché gh'é{{PLURAL:$1|un file sgnê ché|$1 file , sgnê}} ed sègvit, in un totêl ed $2.}}",
"category-file-count-limited": "In cla categoréia ché a gh'é {{PLURAL:$1|al file nutê|i $1 file nutê}} ché 'd sègvit.",
"listingcontinuesabbrev": "cunt.",
"index-category": "Pàgini gancêdi",
"import-logentry-interwiki": "η σελίδα $1 εισάχθηκε μεταξύ wiki",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Εισήχθη $1 αναθεώρηση|Εισήχθησαν $1 αναθεωρήσεις}} από $2",
"javascripttest": "Δοκιμή JavaScript",
- "javascripttest-title": "Εκτελούνται $1 δοκιμές",
"javascripttest-pagetext-noframework": "Αυτή η σελίδα είναι δεσμευμένη για την εκτέλεση δοκιμών σε JavaScript.",
"javascripttest-pagetext-unknownframework": "Άγνωστο πλαίσιο δοκιμών \" $1 \".",
"javascripttest-pagetext-frameworks": "Παρακαλώ επιλέξτε ένα από τα ακόλουθα πλαίσια δοκιμών: $1",
"javascripttest-pagetext-skins": "Επιλέξτε ένα skin για να εκτελέσετε δοκιμές με αυτό:",
"javascripttest-qunit-intro": "Ανατρέξτε στην ενότητα [ $1 τεκμηρίωση δοκιμών] στο mediawiki.org.",
- "javascripttest-qunit-heading": "Σουίτα δοκιμών JavaScript QUnit του MediaWiki",
"tooltip-pt-userpage": "Η σελίδα χρήστη σας",
"tooltip-pt-anonuserpage": "Η σελίδα χρήστη στον οποίο αντιστοιχεί η διεύθυνση IP που έχετε",
"tooltip-pt-mytalk": "Η σελίδα συζήτησής σας",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revision|revisions}} imported from $2",
"javascripttest": "JavaScript testing",
"javascripttest-backlink": "< $1",
- "javascripttest-title": "Running $1 tests",
+ "javascripttest-title": "$1",
"javascripttest-pagetext-noframework": "This page is reserved for running JavaScript tests.",
"javascripttest-pagetext-unknownframework": "Unknown testing framework \"$1\".",
+ "javascripttest-pagetext-unknownaction": "Unknown action \"$1\".",
"javascripttest-pagetext-frameworks": "Please choose one of the following testing frameworks: $1",
"javascripttest-pagetext-skins": "Choose a skin to run the tests with:",
"javascripttest-qunit-name": "QUnit",
"javascripttest-qunit-intro": "See [$1 testing documentation] on mediawiki.org.",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit test suite",
"accesskey-pt-userpage": ".",
"accesskey-pt-anonuserpage": ".",
"accesskey-pt-mytalk": "n",
"import-logentry-interwiki": "transwikificada $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revisión importada|revisiones importadas}} desde $2",
"javascripttest": "Pruebas de JavaScript",
- "javascripttest-title": "Pruebas de $1 en ejecución",
"javascripttest-pagetext-noframework": "Esta página está reservada para ejecutar pruebas de JavaScript.",
"javascripttest-pagetext-unknownframework": "Marco de pruebas desconocido \"$1\".",
"javascripttest-pagetext-frameworks": "Por favor, seleccione uno de los marcos de pruebas siguientes: $1",
"javascripttest-pagetext-skins": "Elija un aspecto (skin) para ejecutar las pruebas:",
"javascripttest-qunit-intro": "Consulte la [$1 documentación sobre las pruebas] en mediawiki.org.",
- "javascripttest-qunit-heading": "Conjunto de pruebas MediaWiki JavaScript QUnit",
"tooltip-pt-userpage": "Tu página de {{gender:|usuario|usuaria}}",
"tooltip-pt-anonuserpage": "La página de usuario de la IP desde la que editas",
"tooltip-pt-mytalk": "Tu página de discusión",
"import-logentry-interwiki": "importis teisest vikist lehekülje $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|redaktsioon|redaktsiooni}} imporditud asukohast $2",
"javascripttest": "JavaScripti katsetamine",
- "javascripttest-title": "$1-katse käitus",
"javascripttest-pagetext-noframework": "Seda lehekülge hoitakse JavaScripti katsete jaoks.",
"javascripttest-pagetext-unknownframework": "Tundmatu katseraamistik \"$1\".",
"javascripttest-pagetext-frameworks": "Palun vali üks järgmistest katseraamistikest: $1",
"javascripttest-pagetext-skins": "Vali kujundus, millega katsetada:",
"javascripttest-qunit-intro": "Vaata [$1 katsetamise dokumentatsiooni] asukohas mediawiki.org.",
- "javascripttest-qunit-heading": "MediaWiki JavaScripti QUnit-katsekomplekt",
"tooltip-pt-userpage": "Sinu kasutajaleht",
"tooltip-pt-anonuserpage": "Sinu IP-aadressi kasutajalehekülg",
"tooltip-pt-mytalk": "Sinu arutelulehekülg",
"thumbnail-temp-create": "Ezin izan da behin-behineko iruditxoa sortu",
"thumbnail-dest-create": "Ezin izan da iruditxoa gorde helburuan",
"thumbnail_invalid_params": "Irudi txikiaren ezarpenak ez dira baliagarriak",
+ "thumbnail_toobigimagearea": "$1 baino gehiagoko fitxategia",
"thumbnail_dest_directory": "Ezinezkoa izan da helburu direktorioa sortu",
"thumbnail_image-type": "Irudi mota ez babestua",
"thumbnail_gd-library": "GD liburutegiaren konfigurazio osagabea: $1 funtzioa falta da",
"import-logentry-interwiki": "$1 wiki artean mugitu da",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|berrikuspen|berrikuspen}} $2-(e)tik",
"javascripttest": "JavaScript frogatzen",
- "javascripttest-title": "$1 frogak egiten",
"javascripttest-pagetext-noframework": "Orrialde hau JavaScript frogak egiteko gordeta dago.",
"javascripttest-pagetext-unknownframework": "Froga eremu ez-ezaguna \"$1\".",
"javascripttest-pagetext-frameworks": "Mesedez, aukera ezazu froga eremu hauetako bat: $1",
"javascripttest-pagetext-skins": "Aukeratu frogak egiteko itxura bat:",
"javascripttest-qunit-intro": "Ikusi [$1 frogen dokumentazioa] mediawiki.org orrialdean.",
- "javascripttest-qunit-heading": "MediWiki JavaScript QUnit froga taldea",
"tooltip-pt-userpage": "Nire lankide orria",
"tooltip-pt-anonuserpage": "Zure IParen lankide orrialdea",
"tooltip-pt-mytalk": "Nire eztabaida orria",
"watchlistedit-raw-done": "Zure jarraipen zerrenda berritu da.",
"watchlistedit-raw-added": "{{PLURAL:$1|Titulu 1 gehitu da|$1 gehitu dira}}:",
"watchlistedit-raw-removed": "{{PLURAL:$1|Izenburu 1|$1 izenburu}} ezabatu dira:",
+ "watchlistedit-clear-titles": "Izenburuak:",
"watchlisttools-view": "Aldaketa garrantzitsuak ikusi",
"watchlisttools-edit": "Zerrenda ikusi eta aldatu",
"watchlisttools-raw": "Zerrenda idatziz aldatu",
"version-entrypoints": "Sarrera puntuko URLa",
"version-entrypoints-header-entrypoint": "Sarrera puntua",
"version-entrypoints-header-url": "URL",
+ "version-libraries-version": "Bertsioa",
"redirect": "Birzuzendu fitxategi, lankide edo berrikuspen IDaren arabera",
"redirect-legend": "Orrialde edo fitxategi batera birzuzendu",
"redirect-submit": "Joan",
"pool-queuefull": "Prosessijoukon jono on täynnä",
"pool-errorunknown": "Tuntematon virhe.",
"pool-servererror": "Pool counter -palvelu ei ole käytettävissä ($1).",
- "poolcounter-usage-error": "Käytön virhe: $1",
+ "poolcounter-usage-error": "Käyttövirhe: $1",
"aboutsite": "Tietoja {{GRAMMAR:elative|{{SITENAME}}}}",
"aboutpage": "Project:Tietoja",
"copyright": "Sisältö on käytettävissä lisenssillä $1, ellei toisin ole mainittu.",
"import-logentry-interwiki": "toi toisesta wikistä sivun $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versio|versiota}} tuotiin wikistä $2",
"javascripttest": "JavaScriptin testaus",
- "javascripttest-title": "Suoritetaan $1-testejä.",
"javascripttest-pagetext-noframework": "Tämä sivu on varattu JavaScript-testien suorittamiseen.",
"javascripttest-pagetext-unknownframework": "Tuntematon testausalusta $1.",
"javascripttest-pagetext-frameworks": "Valitse yksi seuraavista testausalustoista: $1",
"javascripttest-pagetext-skins": "Valitse testauksessa käytettävä ulkoasu",
"javascripttest-qunit-intro": "Katso [$1 testausohjeet] mediawiki.orgissa.",
- "javascripttest-qunit-heading": "MediaWikin JavaScriptin QUnit-testikokoelma",
"tooltip-pt-userpage": "Oma käyttäjäsivu",
"tooltip-pt-anonuserpage": "IP-osoitteesi käyttäjäsivu",
"tooltip-pt-mytalk": "Oma keskustelusivu",
"import-logentry-interwiki": "a importé $1 d'un wiki à l'autre",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|révision importée|révisions importées}} depuis $2",
"javascripttest": "Test de JavaScript",
- "javascripttest-title": "Exécution des tests $1",
"javascripttest-pagetext-noframework": "Cette page est réservée pour l'exécution des tests JavaScript.",
"javascripttest-pagetext-unknownframework": "Structure « $1 » inconnue.",
"javascripttest-pagetext-frameworks": "Veuillez choisir l'une des structures de test suivantes : $1",
"javascripttest-pagetext-skins": "Choisissez un habillage avec lequel lancer les tests :",
"javascripttest-qunit-intro": "Voir [$1 la documentation de test] sur mediawiki.org.",
- "javascripttest-qunit-heading": "Suite de test QUnit de JavaScript sur MediaWiki",
"tooltip-pt-userpage": "Votre page utilisateur",
"tooltip-pt-anonuserpage": "La page utilisateur de l'IP avec laquelle vous contribuez",
"tooltip-pt-mytalk": "Votre page de discussion",
"import-logentry-interwiki": "importou \"$1\"",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Importouse $1 revisión|Importáronse $1 revisións}} desde $2",
"javascripttest": "Proba de JavaScript",
- "javascripttest-title": "Executando probas de $1",
"javascripttest-pagetext-noframework": "Esta páxina está reservada para executar probas do JavaScript.",
"javascripttest-pagetext-unknownframework": "Descoñécese a infraestrutura dixital \"$1\" de probas.",
"javascripttest-pagetext-frameworks": "Seleccione unha das seguintes infraestruturas dixitais de probas: $1",
"javascripttest-pagetext-skins": "Escolla a aparencia na que executar as probas:",
"javascripttest-qunit-intro": "Bótelle unha ollada á [$1 documentación das probas] en mediawiki.org.",
- "javascripttest-qunit-heading": "Conxunto de probas QUnit para o JavaScript de MediaWiki",
"tooltip-pt-userpage": "A súa páxina de {{GENDER:|usuario|usuaria}}",
"tooltip-pt-anonuserpage": "A páxina de usuario do enderezo IP desde o que está a editar",
"tooltip-pt-mytalk": "A súa páxina de conversa",
"import-logentry-interwiki": "આંતરવિકિ $1",
"import-logentry-interwiki-detail": "$2 માંથી આયાત કરેલ $1 {{PLURAL:$1|પુનરાવર્તન|પુનરાવર્તનો}}",
"javascripttest": "જાવા સ્ક્રીપ્ટ પરીક્ષણ",
- "javascripttest-title": "$1 પરીક્ષણ જારી",
"javascripttest-pagetext-noframework": "આ પાનું જાવા સ્ક્રીપ્ટ ચલાવવા આરક્ષિત છે.",
"javascripttest-pagetext-unknownframework": "અજાણ ચકાસણી ફ્રેમવર્ક \"$1\".",
"javascripttest-pagetext-frameworks": "નીચેનામાંથી કોઈ એક ચકાસણી ફ્રેમવર્ક પસંદ કરો : $1",
"javascripttest-pagetext-skins": "ચકાસણી કરવા માટેની સ્કીન પસંદ કરો",
"javascripttest-qunit-intro": "mediawiki.org પર [$1 testing documentation] તપાસ માહિતી જુઓ",
- "javascripttest-qunit-heading": "મિડિયા વિકી જાવા સ્ક્રીપ્ટ QUnit test suite",
"tooltip-pt-userpage": "તમારૂં પાનું (તમારૂં 'મારા વિષે')",
"tooltip-pt-anonuserpage": "IP સરનામું માટેના સભ્ય પાનામાં તમે ફેરફાર કરી રહ્યાં છો.",
"tooltip-pt-mytalk": "તમારૂં ચર્ચાનું પાનું",
"import-logentry-interwiki": "ייבא את $1 בייבוא בין־אתרי",
"import-logentry-interwiki-detail": "{{PLURAL:$1|גרסה אחת של הדף $2 יובאה|$1 גרסאות של הדף $2 יובאו}}",
"javascripttest": "בדיקת JavaScript",
- "javascripttest-title": "הרצת בדיקות $1",
"javascripttest-pagetext-noframework": "דף זה שמור להרצת בדיקות JavaScript.",
"javascripttest-pagetext-unknownframework": "סביבת הבדיקות \"$1\" אינה ידועה.",
"javascripttest-pagetext-frameworks": "נא לבחור אחת מסביבות הבדיקות הבאות: $1",
"javascripttest-pagetext-skins": "בחירת עיצוב שאיתו יורצו הבדיקות:",
"javascripttest-qunit-intro": "ראו את [$1 תיעוד הבדיקות] באתר mediawiki.org.",
- "javascripttest-qunit-heading": "מערך בדיקות QUnit ל־JavaScript של מדיה־ויקי",
"tooltip-pt-userpage": "דף המשתמש שלך",
"tooltip-pt-anonuserpage": "דף המשתמש של משתמש אנונימי זה",
"tooltip-pt-mytalk": "דף השיחה שלך",
"import-logentry-interwiki": "transwiki uvezeno $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|promjena|promjene|promjena}} od $2",
"javascripttest": "Testiranje JavaScripta",
- "javascripttest-title": "Izvršavaju se $1 testovi",
"javascripttest-pagetext-noframework": "Ova je stranica rezervirana za izvršavanje JavaScript testova.",
"javascripttest-pagetext-unknownframework": "Nepoznata testna okolina \"$1\".",
"javascripttest-pagetext-frameworks": "Molimo izaberite jednu od sljedećih testnih okolina: $1",
"javascripttest-pagetext-skins": "Izaberite temu (''skin'') za testiranje:",
"javascripttest-qunit-intro": "Pogledajte [$1 testnu dokumentaciju] na mediawiki.org.",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit testni alati",
"tooltip-pt-userpage": "Moja suradnička stranica",
"tooltip-pt-anonuserpage": "Suradnička stranica za IP adresu pod kojom uređujete",
"tooltip-pt-mytalk": "Moja stranica za razgovor",
"import-logentry-interwiki": "$1 más wikiből áthozva",
"import-logentry-interwiki-detail": "$1 változat innen: $2",
"javascripttest": "JavaScript tesztelés",
- "javascripttest-title": "$1 tesztek futtatása",
"javascripttest-pagetext-noframework": "Ez az oldal JavaStript tesztek futtatására van fenntartva.",
"javascripttest-pagetext-unknownframework": "Ismeretlen teszt keretrendszer: $1.",
"javascripttest-pagetext-frameworks": "Kérlek válaszd valamelyik teszt keretrendszert az alábbiak közül: $1",
"javascripttest-pagetext-skins": "Válassz egy megjelenítő felületet, amin a tesztet futtatod:",
"javascripttest-qunit-intro": "Lásd a [$1 tesztelési dokumentációt] a mediawiki.org helyen.",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit tesztcsomag",
"tooltip-pt-userpage": "A szerkesztőlapod",
"tooltip-pt-anonuserpage": "Az általad használt IP-címhez tartozó felhasználói lap",
"tooltip-pt-mytalk": "A vitalapod",
"import-logentry-interwiki": "importava $1 transwiki",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|version|versiones}} importate desde $2",
"javascripttest": "Test de JavaScript",
- "javascripttest-title": "Execution de $1 tests",
"javascripttest-pagetext-noframework": "Iste pagina es reservate pro le execution de tests de JavaScript.",
"javascripttest-pagetext-unknownframework": "Structura de test \"$1\" incognite.",
"javascripttest-pagetext-frameworks": "Per favor selige un del sequente structuras de test: $1",
"javascripttest-pagetext-skins": "Selige un apparentia con le qual executar le tests:",
"javascripttest-qunit-intro": "Vide [$1 documentation de tests] sur mediawiki.org.",
- "javascripttest-qunit-heading": "Programmas de test QUnit de JavaScript de MediaWiki",
"tooltip-pt-userpage": "Tu pagina de usator",
"tooltip-pt-anonuserpage": "Le pagina de usator pro le adresse IP desde le qual tu face modificationes",
"tooltip-pt-mytalk": "Tu pagina de discussion",
"import-logentry-interwiki": "ha trasferito da altra wiki la pagina $1",
"import-logentry-interwiki-detail": "{{PLURAL:$1|una versione importata|$1 versioni importate}} da $2",
"javascripttest": "Sperimentazione JavaScript",
- "javascripttest-title": "In esecuzione test per $1",
"javascripttest-pagetext-noframework": "Questa pagina è riservata all'esecuzione di test di JavaScript.",
"javascripttest-pagetext-unknownframework": "Framework di test sconosciuto \"$1\".",
"javascripttest-pagetext-frameworks": "Per cortesia, scegli uno dei seguenti framework per i test: $1",
"javascripttest-pagetext-skins": "Scegli una skin con cui eseguire i test:",
"javascripttest-qunit-intro": "Vedi su mediawiki.org la [$1 documentazione riguardante i test].",
- "javascripttest-qunit-heading": "Suite di test di JavaScript per QUnit in MediaWiki",
"tooltip-pt-userpage": "La tua pagina utente",
"tooltip-pt-anonuserpage": "La pagina utente di questo indirizzo IP",
"tooltip-pt-mytalk": "La tua pagina di discussione",
"version-entrypoints-header-url": "URL",
"version-entrypoints-articlepath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgArticlePath Percorso voci]",
"version-entrypoints-scriptpath": "[https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:$wgScriptPath Percorso script]",
+ "version-libraries": "Librerie installate",
+ "version-libraries-library": "Libreria",
+ "version-libraries-version": "Versione",
"redirect": "Reindirizzamento da file, utente, pagina o versione",
"redirect-legend": "Reindirizza a un file o una pagina",
"redirect-summary": "Questa pagina speciale reindirizza a un file (specificando il nome del file), a una pagina (specificando un ID di versione o un ID pagina) o a un utente (specificando un ID utente numerico).\nEsempi: [[{{#Special:Redirect}}/file/Example.jpg]], [[{{#Special:Redirect}}/page/64308]], [[{{#Special:Redirect}}/revision/328429]], or [[{{#Special:Redirect}}/user/101]].",
"import-logentry-interwiki": "$1をウィキ間移動しました",
"import-logentry-interwiki-detail": "$2からインポート済みの$1{{PLURAL:$1|版}}",
"javascripttest": "JavaScript をテスト中",
- "javascripttest-title": "$1 のテストの実行",
"javascripttest-pagetext-noframework": "このページは JavaScript のテストを実行するために予約されています。",
"javascripttest-pagetext-unknownframework": "テストフレームワーク「$1」は不明です。",
"javascripttest-pagetext-frameworks": "以下のテストフレームワークから1つ選択してください: $1",
"javascripttest-pagetext-skins": "テストを実行する外装を選択してください:",
"javascripttest-qunit-intro": "mediawiki.org上の[$1 テストのドキュメント]を参照してください。",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit テストスイート",
"tooltip-pt-userpage": "自分の利用者ページ",
"tooltip-pt-anonuserpage": "自分が編集しているIPアドレスの利用者ページ",
"tooltip-pt-mytalk": "自分のトークページ",
"import-logentry-interwiki": "„$1“ — ტრანსვიკი იმპორტი",
"import-logentry-interwiki-detail": "$1 ცვლილება $2-დან",
"javascripttest": "JavaScript-ის ტესტირება",
- "javascripttest-title": "მიმდინარეობს $1-ის ტესტირება",
"javascripttest-pagetext-noframework": "ეს გვერდი დარეგისტრირებულია JavaScript-ის ტესტების გასაშვებად.",
"javascripttest-pagetext-unknownframework": "„$1-ის“ ტესტირების უცნობი გარემო.",
"javascripttest-pagetext-frameworks": "გთხოვთ, აირჩიეთ ტესტირების ერთ-ერთი შემდეგი გარემო: $1",
"javascripttest-pagetext-skins": "ტესტების გასაშვებად აირჩიეთ გაფორმების თემა:",
"javascripttest-qunit-intro": "იხილეთ [$1 ტესტირების დოკუმენტები] mediawiki.org-ზე.",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit-ის ტესტების კრებული",
"tooltip-pt-userpage": "თქვენი მომხმარებლის გვერდი",
"tooltip-pt-anonuserpage": "ჩემი IP-ის მქონე მომხმარებლის გვერდი",
"tooltip-pt-mytalk": "თქვენი განხილვის გვერდი",
"import-logentry-interwiki": "$1 문서를 다른 위키에서 가져왔습니다",
"import-logentry-interwiki-detail": "$2에서 {{PLURAL:$1|판}} $1개를 가져왔습니다",
"javascripttest": "자바스크립트 테스트",
- "javascripttest-title": "$1 테스트 실행",
"javascripttest-pagetext-noframework": "이 문서는 자바스크립트 테스트를 실행하기 위한 용도로 할당되어 있습니다.",
"javascripttest-pagetext-unknownframework": "실험용 프레임워크 \"$1\"를 알 수 없습니다.",
"javascripttest-pagetext-frameworks": "다음 실험용 프레임워크 중 하나를 선택하세요: $1",
"javascripttest-pagetext-skins": "실험할 스킨을 선택하세요:",
"javascripttest-qunit-intro": "mediawiki.org의 [$1 테스트 설명서]를 참고하세요.",
- "javascripttest-qunit-heading": "미디어위키 자바스크립트 QUnit 실험군",
"tooltip-pt-userpage": "내 사용자 문서",
"tooltip-pt-anonuserpage": "현재 사용하는 IP 주소의 사용자 문서",
"tooltip-pt-mytalk": "내 토론 문서",
"import-logentry-interwiki": "huet $1 importéiert (Transwiki)",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|Versioun|Versiounen}} importéiert vu(n) $2",
"javascripttest": "JavaScript-Test",
- "javascripttest-title": "$1-Tester ginn elo gemaach",
"javascripttest-pagetext-noframework": "Dës Säit ass fir Java-Script-Tester reservéiert.",
"javascripttest-pagetext-unknownframework": "Onbekannten Test-Framework \"$1\".",
"javascripttest-pagetext-frameworks": "Sicht w.e.g. eng vun dësen Test-Strukturen eraus: $1",
"javascripttest-pagetext-skins": "Sicht en Interface (skin) eraus fir d'Tester ze maachen:",
"javascripttest-qunit-intro": "Kuckt d'[$1 Dokumentatioun vun den Tester] op mediawiki.org",
- "javascripttest-qunit-heading": "JavaScript-QUnit Testserie op MediaWiki",
"tooltip-pt-userpage": "Är Benotzersäit",
"tooltip-pt-anonuserpage": "Benotzersäit vun der IP-Adress vun där aus Dir den Ament Ännerunge maachtt",
"tooltip-pt-mytalk": "Är Diskussiounssäit",
"api-error-overwrite": "D'Iwwerschreiwe vun engem Fichier ass net erlaabt.",
"api-error-stashfailed": "Interne Feeler: de Server konnt den temporäre Fichier net späicheren.",
"api-error-publishfailed": "Interne Feeler: de Server konnt den temporäre Fichier net publizéieren.",
+ "api-error-stasherror": "Beim Eropluede vum Fichier ass e Feeler geschitt.",
"api-error-stashzerolength": "De Server konnt de Fichier net späicheren, well en eng Längt vun Null hat.",
"api-error-timeout": "De Server huet net bannen där Zäit geäntwert déi virgesinn ass.",
"api-error-unclassified": "En onbekannte Feeler ass geschitt",
"import-logentry-interwiki": "tarpprojektinis $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|keitimas|keitimai|keitimų}} iš $2",
"javascripttest": "JavaScript testavimas",
- "javascripttest-title": "Vykdomas $1 testavimas",
"javascripttest-pagetext-noframework": "Šis puslapis yra skirtas vykdyti JavaScript testavimus.",
"javascripttest-pagetext-unknownframework": "Nežinoma \"$1\" testavimo struktūra.",
"javascripttest-pagetext-frameworks": "Prašome pasirinkti vieną iš išvardintų testavimo struktūrų: $1",
"javascripttest-pagetext-skins": "Pasirinkite naudotojo sąsajos išvaizdą, kuriai atliksite testavimą:",
"javascripttest-qunit-intro": "Peržiūrėkite [$1 testavimo dokumentaciją]",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit bandymų komplektas",
"tooltip-pt-userpage": "Jūsų naudotojo puslapis",
"tooltip-pt-anonuserpage": "Naudotojo puslapis jūsų IP adresui",
"tooltip-pt-mytalk": "Jūsų aptarimo puslapis",
"import-logentry-interwiki": "трансвикифиран $1",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Увезена е една преработка|Увезени се $1 преработки}} од $2",
"javascripttest": "Проба на JavaScript",
- "javascripttest-title": "Вршам $1 проби",
"javascripttest-pagetext-noframework": "Оваа страница е резервирана за вршење на проби со JavaScript.",
"javascripttest-pagetext-unknownframework": "Непозната рамка „$1“.",
"javascripttest-pagetext-frameworks": "Изберете една од следниве рамки: $1",
"javascripttest-pagetext-skins": "Одберете со кое руво да ја направите пробата:",
"javascripttest-qunit-intro": "Вид. [$1 документација на испробувањето] на mediawiki.org.",
- "javascripttest-qunit-heading": "JavaScript-програм за испробување на МедијаВики „QUnit“",
"tooltip-pt-userpage": "Вашата корисничка страница",
"tooltip-pt-anonuserpage": "Корисничка страница за IP-адресата од која уредувате",
"tooltip-pt-mytalk": "Вашата страница за разговор",
"import-logentry-interwiki": "trasferito 'a n'ata wiki 'a paggena $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|verzione|verziune}} mpurtate 'a $2",
"javascripttest": "Test JavaScript",
- "javascripttest-title": "Secutanno test pe' $1",
"javascripttest-pagetext-noframework": "Sta paggena è riservata pe' l'esecuziune d' 'e test 'e Javascript.",
"javascripttest-pagetext-unknownframework": "Ambiente 'e test scanusciuto \"$1\".",
+ "javascripttest-pagetext-unknownaction": "Azione scanusciuta \"$1\".",
"javascripttest-pagetext-frameworks": "Pe' piacere sciglite uno 'e ll'ambiente 'e test ccà abbascio: $1",
"javascripttest-pagetext-skins": "Sciglite nu skin pe' ne fà 'e test:",
"javascripttest-qunit-intro": "Vedite 'a [$1 documentaziona d' 'o test] ncopp'a mediawiki.org.",
- "javascripttest-qunit-heading": "Ambiente 'e test MediaWiki JavaScript QUnit",
"tooltip-pt-userpage": "A toja paggena utente",
"tooltip-pt-anonuserpage": "'A paggena utente pe l'IP ca vuje state cagnanno cumme",
"tooltip-pt-mytalk": "A toja paggena 'e discussione",
"import-logentry-interwiki": "transwikiimporterte $1",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Én revisjon|$1 revisjoner}} er importert fra $2",
"javascripttest": "JavaScript-testing",
- "javascripttest-title": "Kjører $1 tester",
"javascripttest-pagetext-noframework": "Denne siden er reservert for å kjøre JavaScript-tester.",
"javascripttest-pagetext-unknownframework": "Ukjent testerammeverk \"$1\".",
"javascripttest-pagetext-frameworks": "Vennligst velg en av følgende testerammeverk: $1",
"javascripttest-pagetext-skins": "Velg et utseende for testene:",
"javascripttest-qunit-intro": "Se [$1 testedokumentasjonen] på mediawiki.org.",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit testsuite",
"tooltip-pt-userpage": "Din brukerside",
"tooltip-pt-anonuserpage": "Brukersiden for IP-adressen du redigerer fra",
"tooltip-pt-mytalk": "Din diskusjonsside",
"import-logentry-interwiki": "transwiki $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versie|versies}} van $2",
"javascripttest": "JavaScript testen",
- "javascripttest-title": "Tests uutvoeren veur $1",
"javascripttest-pagetext-noframework": "Disse zied is ereserveerd veur t uutvoeren van JavaScript-testen.",
"javascripttest-pagetext-unknownframework": "Onbekend testraamwark \"$1\".",
"javascripttest-pagetext-frameworks": "Kies een van de volgende testraamwarken: $1",
"javascripttest-pagetext-skins": "Kies n vormgeving um de tests mee uut te voeren:",
"javascripttest-qunit-intro": "Zie de [$1 testdokumentasie] op mediawiki.org.",
- "javascripttest-qunit-heading": "QUnit testsuite veur MediaWiki JavaScript",
"tooltip-pt-userpage": "Oew gebroekersbladziede",
"tooltip-pt-anonuserpage": "Gebroekersbladziede vuur t IP-adres da'j broekt",
"tooltip-pt-mytalk": "Oew oaverlegbladziede",
"import-logentry-interwiki": "importeerde $1 via transwiki",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versie|versies}} geïmporteerd uit $2",
"javascripttest": "JavaScript testen",
- "javascripttest-title": "Tests uitvoeren voor $1",
"javascripttest-pagetext-noframework": "Deze pagina is gereserveerd voor het uitvoeren van JavaScripttesten.",
"javascripttest-pagetext-unknownframework": "Onbekend testframework \"$1\".",
"javascripttest-pagetext-frameworks": "Kies een van de volgende testframeworks: $1",
"javascripttest-pagetext-skins": "Kies een vormgeving om de tests mee uit te voeren:",
"javascripttest-qunit-intro": "Zie de [$1 testdocumentatie] op mediawiki.org.",
- "javascripttest-qunit-heading": "QUnit testsuite voor MediaWiki JavaScript",
"tooltip-pt-userpage": "Uw gebruikerspagina",
"tooltip-pt-anonuserpage": "Gebruikerspagina voor uw IP-adres",
"tooltip-pt-mytalk": "Uw overlegpagina",
"import-logentry-interwiki": "overførte $1 mellom wikiar",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Éin versjon|$1 versjonar}} frå $2",
"javascripttest": "JavaScript-utrøyning",
- "javascripttest-title": "Køyrer $1-utrøyningar",
"javascripttest-pagetext-noframework": "Sida er reservert for køyring av JavaScript-utrøyningar.",
"javascripttest-pagetext-unknownframework": "Ukjent utrøyningsrammeverk: «$1».",
"javascripttest-pagetext-frameworks": "Vel eitt av dei fylgjande utrøyningsrammeverka: $1",
"javascripttest-pagetext-skins": "Vel ei drakt som utrøyningane skal køyrast med:",
"javascripttest-qunit-intro": "Sjå [$1 utrøyningsdokumentasjon] på mediawiki.org.",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit testsuite",
"tooltip-pt-userpage": "Brukarsida di",
"tooltip-pt-anonuserpage": "Brukarsida for ip-adressa du endrar under",
"tooltip-pt-mytalk": "Diskusjonssida di",
"import-logentry-interwiki": "zaimportował(a) $1 używając transwiki",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|wersja|wersje|wersji}} z $2",
"javascripttest": "Testowanie JavaScript",
- "javascripttest-title": "Uruchamianie testów $1",
"javascripttest-pagetext-noframework": "Ta strona jest zarezerwowana dla wykonywania testów JavaScript.",
"javascripttest-pagetext-unknownframework": "Nieznany framework testowania „$1”.",
"javascripttest-pagetext-frameworks": "Wybierz jeden z następujących frameworków testowania: $1",
"javascripttest-pagetext-skins": "Wybierz skórkę, na której chcesz uruchomić testy:",
"javascripttest-qunit-intro": "Zobacz [$1 dokumentację testów] na mediawiki.org.",
- "javascripttest-qunit-heading": "Pakiet testów JavaScriptu MediaWiki QUnit",
"tooltip-pt-userpage": "Moja osobista strona",
"tooltip-pt-anonuserpage": "Strona użytkownika dla adresu IP, spod którego edytujesz",
"tooltip-pt-mytalk": "Moja strona dyskusji",
"import-logentry-interwiki": "Amportà da n'àutra wiki $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revision}} amportà da $2",
"javascripttest": "Preuva ëd JavaScript",
- "javascripttest-title": "Fé dle preuve $1",
"javascripttest-pagetext-noframework": "Costa pàgina a l'é arservà për fé dle preuve JavaScript.",
"javascripttest-pagetext-unknownframework": "Strutura ëd preuva pa conossùa «$1».",
"javascripttest-pagetext-frameworks": "Për piasì, ch'a serna un-a dle struture ëd preuva sì-dapress: $1",
"javascripttest-pagetext-skins": "Ch'a serna na pel për fé le preuve:",
"javascripttest-qunit-intro": "Vëdde [$1 la documentassion dle preuve] dzora a mediawiki.org.",
- "javascripttest-qunit-heading": "Sequensa ëd preuve QUnit ëd JavaScript su MediaWiki",
"tooltip-pt-userpage": "Soa pàgina utent",
"tooltip-pt-anonuserpage": "La pàgina utent për l'IP con ël qual chiel a contribuiss",
"tooltip-pt-mytalk": "Soa pàgina ëd discussion e ciaciarade",
"아라",
"Leon saudanha",
"Macofe",
- "He7d3r"
+ "He7d3r",
+ "Ti4goc"
]
},
"tog-underline": "Sublinhar ligações:",
"content-model-javascript": "JavaScript",
"content-model-css": "CSS",
"content-json-empty-object": "Objeto vazio",
+ "content-json-empty-array": "Matriz vazia",
"duplicate-args-category": "Páginas que utilizam argumentos duplicados ao chamar predefinições",
+ "duplicate-args-category-desc": "A página que contém o modelo de chamadas que utilizam duplicatas de argumentos, tais como <code><nowiki>{{foo|bar=1|bar=2}}</nowiki></code> ou <code><nowiki>{{foo|bar|1=baz}}</nowiki></code>.",
"expensive-parserfunction-warning": "'''Aviso:''' Esta página contém demasiadas chamadas de funções exigentes do analisador sintático.\n\nDevia ter menos de $2 {{PLURAL:$2|chamada|chamadas}}. Neste momento tem $1 {{PLURAL:$1|chamada|chamadas}}.",
"expensive-parserfunction-category": "Páginas com demasiadas chamadas a funções exigentes",
"post-expand-template-inclusion-warning": "Aviso: O tamanho de inclusão de predefinições é demasiado grande, algumas predefinições não serão incluídas.",
"right-protect": "Mudar níveis de proteção e editar páginas protegidas em cascata",
"right-editprotected": "Editar páginas protegidas como \"{{int:protect-level-sysop}}\"",
"right-editsemiprotected": "Editar páginas protegidas como \"{{int:protect-level-autoconfirmed}}\"",
+ "right-editcontentmodel": "Editar o modelo de conteúdo de uma página",
"right-editinterface": "Editar a interface de utilizador",
"right-editusercssjs": "Editar os ficheiros CSS e JS de outros utilizadores",
"right-editusercss": "Editar os ficheiros CSS de outros utilizadores",
"action-viewmywatchlist": "ver a sua lista de páginas vigiadas",
"action-viewmyprivateinfo": "ver a sua informação privada",
"action-editmyprivateinfo": "editar a sua informação privada",
+ "action-editcontentmodel": "editar o modelo de conteúdo de uma página",
"nchanges": "$1 {{PLURAL:$1|alteração|alterações}}",
"enhancedrc-since-last-visit": "$1 {{PLURAL:$1|desde a última visita}}",
"enhancedrc-history": "histórico",
"protect-othertime": "Outra duração:",
"protect-othertime-op": "outra duração",
"protect-existing-expiry": "A proteção atual expirará às $3 de $2",
+ "protect-existing-expiry-infinity": "Existente tempo de expiração: infinito",
"protect-otherreason": "Outro motivo/motivo adicional:",
"protect-otherreason-op": "Outro motivo",
"protect-dropdown": "*Motivos comuns para proteção\n** Vandalismo excessivo\n** ''Spam'' excessivo\n** Guerra de edições improdutiva\n** Página muito visitada",
"thumbnail-temp-create": "Não foi possível criar o ficheiro temporário da miniatura",
"thumbnail-dest-create": "Não é possível gravar a miniatura no destino",
"thumbnail_invalid_params": "Parâmetros de miniatura inválidos",
+ "thumbnail_toobigimagearea": "Ficheiro com dimensões maiores do que <span class=\"notranslate\" converter=\"não\">$1</span>",
"thumbnail_dest_directory": "Não foi possível criar o diretório de destino",
"thumbnail_image-type": "Tipo de imagem não suportado",
"thumbnail_gd-library": "Configuração da biblioteca GD incompleta: função $1 em falta",
"import-logentry-interwiki": "transwikis $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|edição importada|edições importadas}} de $2",
"javascripttest": "Teste de JavaScript",
- "javascripttest-title": "A executar os testes $1",
"javascripttest-pagetext-noframework": "Esta página é reservada para a execução de testes de JavaScript.",
"javascripttest-pagetext-unknownframework": "Estrutura de testes \"$1\" desconhecida.",
"javascripttest-pagetext-frameworks": "Escolha, por favor, uma das seguintes estruturas de teste: $1",
"javascripttest-pagetext-skins": "Escolher um tema para executar os testes com:",
"javascripttest-qunit-intro": "Consulte a [ $1 documentação de testes] no mediawiki.org.",
- "javascripttest-qunit-heading": "Pacote de ferramentas de teste de JavaScript QUnit do MediaWiki",
"tooltip-pt-userpage": "A sua página de utilizador",
"tooltip-pt-anonuserpage": "A página de utilizador para o endereço IP que está a usar",
"tooltip-pt-mytalk": "A sua página de discussão",
"signature": "[[{{ns:user}}:$1|$2]] ([[{{ns:user_talk}}:$1|discussão]])",
"duplicate-defaultsort": "<strong>Aviso:</strong> A chave de ordenação padrão \"$2\" sobrepõe-se à anterior \"$1\".",
"duplicate-displaytitle": "<strong>Aviso:</strong> Exibir título \"$2\" substituindo o título anteriormente em exibição \"$1\".",
+ "invalid-indicator-name": "<strong>Erro:</strong> Página de estados de indicadores' <code>nome</code> atributo não deve estar vazia.",
"version": "Versão",
"version-extensions": "Extensões instaladas",
"version-skins": "Temas instalados",
"api-error-stashfailed": "Erro interno: O servidor não conseguiu armazenar o ficheiro temporário.",
"api-error-publishfailed": "Erro interno: Servidor não conseguiu publicar ficheiro temporário.",
"api-error-stasherror": "Ocorreu um erro no carregamento do ficheiro escondido.",
+ "api-error-stashedfilenotfound": "O escondido ficheiro não foi encontrado ao tentar carregar a pasta do stash.",
+ "api-error-stashpathinvalid": "O caminho no qual o ficheiro escondido deveria ter sido encontrado era inválido.",
+ "api-error-stashfilestorage": "Ocorreu um erro no carregamento do ficheiro escondido.",
+ "api-error-stashzerolength": "O servidor não pôde esconder o ficheiro, porque ele tinha de comprimento zero.",
+ "api-error-stashnotloggedin": "Você deve estar com sessão iniciaca para gravar ficheiros no carregamento do stash.",
+ "api-error-stashwrongowner": "O ficheiro que estava a tentar aceder o stash não pertence a você.",
+ "api-error-stashnosuchfilekey": "O ficheiro de chave que está a tentar aceder no stash não existe.",
"api-error-timeout": "O servidor não respondeu no prazo esperado.",
"api-error-unclassified": "Ocorreu um erro desconhecido",
"api-error-unknown-code": "Erro desconhecido: \"$1\"",
"expand_templates_generate_xml": "Mostrar a árvore de análise sintáctica do XML",
"expand_templates_generate_rawhtml": "Mostrar o HTML puro",
"expand_templates_preview": "Antevisão do resultado",
+ "expand_templates_preview_fail_html": "<em>Porque {{SITENAME}} foi matérias HTML ativado e houve uma perda de dados de sessão, a visualização é escondida como uma precaução contra os ataques do JavaScrips.</em>\n\n<strong>Se esta é uma legítima tentativa de visualização, por favor, tente novamente.</strong>\nSe ainda assim não funcionar, tente [[Special:UserLogout|sair]] e voltar a fazer o login.",
+ "expand_templates_preview_fail_html_anon": "<em>Porque {{SITENAME}} foi matérias HTML ativado e você não estiver ligado, a pré-visualização é escondida como uma precaução contra os ataques do JavaScript.</em>\n\n<strong>Se esta é uma legítima tentativa de visualização, por favor [[Especial:UserLogin|login]] e tente novamente.</strong>",
"pagelanguage": "Seletor de idioma da página",
"pagelang-name": "Página",
"pagelang-language": "Idioma",
"import-logentry-interwiki-detail": "Used as success message and log entry. Parameters:\n* $1 - number of succeeded revisions\n* $2 - interwiki name\nSee also:\n* {{msg-mw|Import-logentry-upload-detail}}",
"javascripttest": "Title of the special page [[Special:JavaScriptTest]].\n\nSee also:\n* {{msg-mw|Javascripttest|title}}\n* {{msg-mw|Javascripttest-pagetext-noframework|summary}}\n* {{msg-mw|Javascripttest-pagetext-unknownframework|error message}}",
"javascripttest-backlink": "{{optional}}\nUsed as subtitle in [[Special:JavaScriptTest]]. Parameters:\n* $1 - page title",
- "javascripttest-title": "Title of the special page when running a test suite. Parameters:\n* $1 is the name of the framework, for example QUnit.",
+ "javascripttest-title": "{{Ignore}}",
"javascripttest-pagetext-noframework": "Used as summary when no framework specified.\n\nSee also:\n* {{msg-mw|Javascripttest|title}}\n* {{msg-mw|Javascripttest-pagetext-noframework|summary}}\n* {{msg-mw|Javascripttest-pagetext-unknownframework|error message}}",
"javascripttest-pagetext-unknownframework": "Error message when given framework ID is not found. Parameters:\n* $1 - the ID of the framework\nSee also:\n* {{msg-mw|Javascripttest|title}}\n* {{msg-mw|Javascripttest-pagetext-noframework|summary}}\n* {{msg-mw|Javascripttest-pagetext-unknownframework|error message}}",
+ "javascripttest-pagetext-unknownaction": "Error message when url specifies an unknown action. Parameters:\n* $1 - the action specified in the url.",
"javascripttest-pagetext-frameworks": "Parameters:\n* $1 - frameworks list which contain a link text {{msg-mw|Javascripttest-qunit-name}}",
"javascripttest-pagetext-skins": "Used as label in [[Special:JavaScriptTest]].",
"javascripttest-qunit-name": "{{Ignore}}",
"javascripttest-qunit-intro": "Used as summary. Parameters:\n* $1 - the configured URL to the documentation\nSee also:\n* {{msg-mw|Javascripttest-qunit-heading}}",
- "javascripttest-qunit-heading": "See also:\n* {{msg-mw|Javascripttest-qunit-intro}}",
"accesskey-pt-userpage": "{{doc-accesskey}}\nSee also:\n<!--* username-->\n* {{msg-mw|Accesskey-pt-userpage}}\n* {{msg-mw|Tooltip-pt-userpage}}",
"accesskey-pt-anonuserpage": "{{doc-accesskey}}",
"accesskey-pt-mytalk": "{{doc-accesskey}}\nSee also:\n* {{msg-mw|Mytalk}}\n* {{msg-mw|Accesskey-pt-mytalk}}\n* {{msg-mw|Tooltip-pt-mytalk}}",
"import-logentry-interwiki": "transwikificat $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|versiune|versiuni|de versiuni}} importate de la $2",
"javascripttest": "Testare JavaScript",
- "javascripttest-title": "Rulare teste pentru $1",
"javascripttest-pagetext-noframework": "Această pagină este rezervată rulării testelor JavaScript.",
"javascripttest-pagetext-unknownframework": "Cadru de testare „$1” necunoscut.",
"javascripttest-pagetext-frameworks": "Alegeți unul din următoarele cadre de testare: $1",
"javascripttest-pagetext-skins": "Alegeți un aspect pentru care să rulați teste:",
"javascripttest-qunit-intro": "A se vedea [$1 documentația de testare] pe mediawiki.org.",
- "javascripttest-qunit-heading": "Suita de test MediaWiki JavaScript QUnit",
"tooltip-pt-userpage": "Pagina dumneavoastră de utilizator",
"tooltip-pt-anonuserpage": "Pagina de utilizator pentru adresa IP curentă",
"tooltip-pt-mytalk": "Pagina dumneavoastră de discuții",
"import-logentry-interwiki": "«$1» — межвики импорт",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|версия импортирована|версии импортировано|версий импортировано}} из $2",
"javascripttest": "Проверка JavaScript",
- "javascripttest-title": "Проводится проверка $1",
"javascripttest-pagetext-noframework": "Эта страница зарезервирована для запуска JavaScript-тестов.",
"javascripttest-pagetext-unknownframework": "Неизвестная среда тестирования «$1».",
"javascripttest-pagetext-frameworks": "Пожалуйста, выберите одну из следующих сред тестирования: $1",
"javascripttest-pagetext-skins": "Выберите тему оформления для запуска тестов:",
"javascripttest-qunit-intro": "См. [$1 документацию по тестированию] на mediawiki.org.",
- "javascripttest-qunit-heading": "Набор тестов MediaWiki JavaScript QUnit",
"tooltip-pt-userpage": "Ваша страница участника",
"tooltip-pt-anonuserpage": "Страница участника для моего IP",
"tooltip-pt-mytalk": "Ваша страница обсуждения",
"import-logentry-interwiki": "ट्रान्स्विकिकृतम् ।$1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|पुनरावृत्तिः}} $2 इत्येतस्मात् ।",
"javascripttest": "जावालिपिपरीक्षणम् ।",
- "javascripttest-title": "$1 परीक्षाप्रचलति ।",
"javascripttest-pagetext-noframework": "जावलिपिचालनपरीक्षार्थम् एतत्पुटम् आरक्षितम् ।",
"javascripttest-pagetext-unknownframework": "अज्ञातपरीक्षाप्रक्रिया $1",
"javascripttest-pagetext-frameworks": "अधो दत्तेषु कञ्चिदेकां परीक्षाप्रक्रियां चिनोतु : $1",
"javascripttest-pagetext-skins": "अनेन सह परीक्षां सञ्चालयितुं काचित् त्वक् चिनोतु ।",
"javascripttest-qunit-intro": "mediawiki.org. [$1 अभिलेखपरीक्षा] इत्यत्र पश्यतु ।",
- "javascripttest-qunit-heading": "मिडियाविक्याः जवालिपेः Qघटकस्य परीक्षाप्रणाली ।",
"tooltip-pt-userpage": "भवतः/भवत्याः योजकपृष्ठम्",
"tooltip-pt-anonuserpage": "ऐपिसङ्केतार्थं योजकपुटं भवान् सम्पादयति एवम्..",
"tooltip-pt-mytalk": "भवतः/भवत्याः सम्भाषणपृष्ठम्",
"import-logentry-interwiki": "hà trasfiritu di àutra wiki la pàggina $1",
"import-logentry-interwiki-detail": "{{PLURAL:$1|na virsioni mpurtata|$1 virsioni mpurtati}} di $2",
"javascripttest": "Virìfichi JavaScript",
- "javascripttest-title": "Esicuzzioni dî virìfichi di $1",
"javascripttest-pagetext-noframework": "Sta pàggina è risirvata pi' l'esicuzzioni dî virìfichi JavaScript.",
"javascripttest-pagetext-unknownframework": "Framework di virìfica \"$1\" scanusciutu.",
"javascripttest-pagetext-frameworks": "Pi' favuri scegghî unu dî siguenti framework di virìfica: $1",
"javascripttest-pagetext-skins": "Scegghî na peḍḍi câ quali esiguìri i virìfichi:",
"javascripttest-qunit-intro": "Talìa [$1 a ducumintazzioni a' prupositu dî virìfichi] supra a' mediawiki.org.",
- "javascripttest-qunit-heading": "Pachettu di virìfichi JavaScript QUnit di MediaWiki",
"tooltip-pt-userpage": "La tò pàggina utenti",
"tooltip-pt-anonuserpage": "La pàggina utenti di stu ndirizzu IP",
"tooltip-pt-mytalk": "La to' pàggina di discussioni",
"import-logentry-interwiki": "uveženo (\"transwikied\") $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|revizija|revizije|revizija}} sa $2",
"javascripttest": "Javaskript test",
- "javascripttest-title": "Izvršavanje testova za $1",
"javascripttest-pagetext-noframework": "Ova stranica je rezervisana za izvršavanje javaskript testova.",
"javascripttest-pagetext-unknownframework": "Nepoznati radni okvir „$1“.",
"javascripttest-pagetext-frameworks": "Izaberite jedan od sledećih radnih okvira: $1",
"javascripttest-pagetext-skins": "Izaberite s kojim skinom (interfejsom) želite da pokrenete probu:",
"javascripttest-qunit-intro": "Pogledajte [$1 dokumentaciju za testiranje] na mediawiki.org.",
- "javascripttest-qunit-heading": "Medijavikijin paket za testiranje – QUnit",
"tooltip-pt-userpage": "Vaša korisnička stranica",
"tooltip-pt-anonuserpage": "Korisnička stranica za ip koju Vi uređujete kao",
"tooltip-pt-mytalk": "Vaša stranica za razgovor",
"아라",
"හරිත",
"Indunil Chamara",
- "Susith Chandira Gts"
+ "Susith Chandira Gts",
+ "Thanushka"
]
},
"tog-underline": "සබැඳි යටීර කිරීම:",
"tog-hideminor": "මෑත වෙනස් කිරීම්වල සුළු සංස්කරණ සඟවන්න",
- "tog-hidepatrolled": "මà·\91චà·\80à·\99නà·\83à·\8a à¶\9aà·\92රà·\93මà·\8aà·\80ල මà·\94ර à·\83à¶\82චà·\8fරය à¶\9aරන ලද à·\83à¶\82à·\83à·\8aà¶\9aරණ à·\83à¶\9fවන්න",
- "tog-newpageshidepatrolled": "විමසුමට ලක්කෙරුණු පිටු, අළුත් පිටු ලැයිස්තුවෙහි නොපෙන්වන්න",
+ "tog-hidepatrolled": "à·\80à·\92මà·\83à·\94මට ලà¶\9aà·\8aà¶\9aà·\99රà·\94ණà·\94 à·\83à¶\82à·\83à·\8aà¶\9aරණ, මà·\91චà·\80à·\99නà·\83à·\8a à¶\9aà·\92රà·\93මà·\8a à¶à·\94ල නà·\9cපà·\99නà·\8aවන්න",
+ "tog-newpageshidepatrolled": "විමසුමට ලක්කෙරුණු පිටු, අළුත් පිටු ලැයිස්තුව තුල නොපෙන්වන්න",
"tog-extendwatchlist": "මෑත වෙනස්වීම් පමණක් නොව, අදාළ සියළු වෙනස්වීම් දක්වා පෙන්වන අයුරින් මුර-ලැයිස්තුව පුළුල් කරන්න",
"tog-usenewrc": "මෑත වෙනස්වීම් සහ මුර ලැයිස්තුව හී පිටුව අනුව සමූහ වෙනස්වීම් (ජාවාස්ක්රිප්ට් ඇවැසිය)",
"tog-numberheadings": "ශීර්ෂ-නාම ස්වයංක්රීයව අංකනය කරන්න",
"tog-shownumberswatching": "මුර කරනු ලබන පරිශීලකයන් සංඛ්යාව පෙන්වන්න",
"tog-oldsig": "පවතින අත්සන:",
"tog-fancysig": "අත්සන විකිපෙළ (ස්වයංක්රීය සබැඳියක් විරහිතව) ලෙසින් සලකන්න",
- "tog-uselivepreview": "තත්කාල පෙර-දසුන භාවිතා කරන්න (ජාවාස්ක්රිප්ට්) (පරීක්ෂණාත්මක)",
+ "tog-uselivepreview": "තත්කාල පෙර-දසුන භාවිතා කරන්න",
"tog-forceeditsummary": "හිස් සංස්කරණ සාරාංශයකට මා ඇතුළු වන විට මාහට ඉඟි කරන්න",
"tog-watchlisthideown": "මුර-ලැයිස්තුවෙන් මාගේ සංස්කරණ සඟවන්න",
"tog-watchlisthidebots": "මුර-ලැයිස්තුවෙන් රොබෝ සංස්කරණ සඟවන්න",
"tog-watchlisthideminor": "මුර-ලැයිස්තුවෙන් සුළු සංස්කරණ සඟවන්න",
"tog-watchlisthideliu": "ප්රවිෂ්ට වී ඇති පරිශීලකයන් විසින් සිදුකර ඇති සංස්කරණ මුර-ලැයිස්තුවෙන් සඟවන්න",
"tog-watchlisthideanons": "නිර්නාමික පරිශීලකයන් විසින් සිදුකොට ඇති සංස්කරණ මුර-ලැයිස්තුවෙන් සඟවන්න",
- "tog-watchlisthidepatrolled": "විමසුමට ලක්කෙරුණු සංස්කරණයන්, මෑත වෙනස්වීම් හී නොපෙන්වන්න",
+ "tog-watchlisthidepatrolled": "විමසුමට ලක්කෙරුණු සංස්කරණයන් මුර-ලැයිස්තුව තුල නොපෙන්වන්න",
"tog-ccmeonemails": "මා විසින් අනෙකුත් පරිශීලකයන් හට යවන විද්යුත්-තැපෑලයන්හි පිටපත් මාහට එවන්න",
"tog-diffonly": "“වෙනස් ”පදයන්ට පහළින්, පිටුවල අන්තර්ගතය නොපෙන්වන්න",
"tog-showhiddencats": "සැඟවුනු ප්රවර්ග පෙන්වන්න",
"underline-always": "සැමවිටම කරන්න",
"underline-never": "කිසිවිටෙක නොකරන්න",
"underline-default": "සම හෝ ගවේෂකයෙහි පෙරනිමිය",
- "editfont-style": "à¶\85à¶\9aà·\94රà·\94 à·\80à·\92ලà·\8fà·\83යනà·\8a à·\83à¶\82à·\83à·\8aà¶\9aරණ පà·\99දà·\99à·\83:",
+ "editfont-style": "à·\83à¶\82à·\83à·\8aà¶\9aරණ පà·\99දà·\99à·\83 à¶à·\94ල à¶\85à¶\9aà·\94රà·\94 à·\80à·\92ලà·\8fà·\83ය:",
"editfont-default": "පෙර නිමි බ්රව්සරය",
"editfont-monospace": "ඒක අවකාශිත ෆොන්ට්",
"editfont-sansserif": "සෙරිෆ්-විරහිත අකුරු",
"viewsourcetext": "මෙම පිටුවෙහි මූලාශ්රය නැරඹීමට හා පිටපත් කිරීමට ඔබ හට හැකිය:",
"viewyourtext": "'''ඔබගේ සංස්කරණ''' නැරඹීම සහ මූලාශ්රය පිටපත් කිරීම ඔබට කල හැක:",
"protectedinterface": "මෙම පිටුව විසින්, මෘදුකාංගය සඳහා අතුරුමුව පෙළ සපයන අතර එබැවින් අපයෙදුම වැලැක්වීම සඳහා එය අවුරා ඇත.",
- "editinginterface": "'''අවවාදයයි:''' මෘදුකාංගයට අතුරුමුව පෙළ සැපයීමට භාවිතා වන පිටුවක් ඔබ විසින් සංස්කරණය කරනු ලබයි.\nමෙම පිටුවට සිදු කරන වෙනස්වීම් විසින් අනෙකුත් පරිශීලකයන්ගේ පරිශීලක අතුරුමුවෙහි පෙනුමට බලපෑම් එල්ල කෙරෙනු ඇත.\nපරිවර්තන සඳහා, මීඩියාවිකි ප්රාදේශීයකරන ව්යාපෘතිය, [//translatewiki.net/wiki/Main_Page?setlang=si translatewiki.net], භාවිතා කිරීම සලකා බැලීමට කාරුණික වන්න.",
+ "editinginterface": "<strong>අවවාදයයි:</strong> මෘදුකාංගයට අතුරුමුව පෙළ සැපයීමට භාවිතා වන පිටුවක් ඔබ විසින් සංස්කරණය කරනු ලබයි.\nමෙම පිටුවට සිදු කරන වෙනස්වීම් විසින් අනෙකුත් පරිශීලකයන්ගේ පරිශීලක අතුරුමුවෙහි පෙනුමට බලපෑම් එල්ල කෙරෙනු ඇත.",
"cascadeprotected": "\"තීරු දර්ශන\" විකල්පය සක්රීයනය කොට එමගින් ආරක්ෂණය කල පහත දැක්වෙන {{PLURAL:$1|පිටුව|පිටු}} අඩංගු කර ඇති බැවින්, මෙම පිටුව සංස්කරණය කිරීමෙන් වලකා ඇත:\n$2",
"namespaceprotected": "'''$1''' නාමඅවකාශයෙහි පිටු සංස්කරණය කිරීමට ඔබහට අවසර නොමැත.",
"customcssprotected": "මෙම CSS පිටුව සංස්කරණය කිරීමට ඔබට අවසර නොමැත්තේ එහි අනෙකුත් පරිශීලකයෙකුගේ පුද්ගලික පරිස්ථිතීන් අඩංගු බැවිනි.",
"preview": "පෙරදසුන",
"showpreview": "පෙරදසුන පෙන්වන්න",
"showdiff": "වෙනස්කිරීම් පෙන්වන්න",
- "anoneditwarning": "'''අවවාදයයි:''' ඔබ පරිශීලකයෙකු වශයෙන් පද්ධතියට ප්රවිෂ්ට වී නොමැත.\nඔබගේ අයිපී යොමුව මෙම පිටුවෙහි සංස්කරණ ඉතිහාසයෙහි වාර්තාගත වෙනු ඇත",
+ "anoneditwarning": "<strong>අවවාදයයි:</strong> ඔබ පරිශීලකයෙකු වශයෙන් පද්ධතියට ප්රවිෂ්ට වී නොමැත.\nඔබගේ අයිපී යොමුව මෙම පිටුවෙහි සංස්කරණ ඉතිහාසයෙහි වාර්තාගත වෙනු ඇත\nඔබ <strong>[$1 පිවිසීම]</strong> හෝ <strong>[$2 ගිණුමක් තැනීම]</strong> කලහොත්, ඔබගේ සංස්කරණයන් වෙනත් ප්රතිලාභ සමග, ඔබගේ පරිශීලක නාමය ඉදිරියේ දැක්වෙනු ඇත.",
"anonpreviewwarning": "අවවාදයයි: ඔබ පරිශීලකයෙකු වශයෙන් පද්ධතියට ප්රවිෂ්ට වී නොමැත. එමනිසා මෙම පිටුවෙහි සංස්කරණ ඉතිහාසයෙහි, ඔබගේ අන්තර්ජාල ලිපිනය සටහන් කරගැනීමට සිදුවනු ඇත.",
"missingsummary": "'''සිහිගැන්වීමයි:''' ඔබ විසින් සංස්කරණ සාරාංශයක් සපයා නොමැත.\nඔබ නැවතත් සුරැකීම ක්ලික් කලහොත්, ඔබගේ සංස්කරණය එවැන්නක් විරහිතවම සුරැකෙනු ඇත.",
"missingcommenttext": "කරුණාකර පහතින් පරිකථනයක් ඇතුළු කරන්න.",
"edit-gone-missing": "පිටුව යාවත්කාල කිරීම සිදුකල නොහැකි විය.\nඑය මකා දමා ඇති බවක් පෙනේ.",
"edit-conflict": "සංස්කරණ ගැටුම.",
"edit-no-change": "පෙළට කිසිදු වෙනසක් සිදු නොකල බැවින් ඔබගේ සංස්කරණය නොසලකාහරින ලදි.",
+ "postedit-confirmation-created": "මෙම පිටුව නිර්මාණය කරන ලදී.",
+ "postedit-confirmation-restored": "මෙම පිටුව නැවත පිහිටුවන ලදී.",
"postedit-confirmation-saved": "ඔබගේ සංස්කරණය සුරකින ලදී.",
"edit-already-exists": "නව පිටුවක් තැනිය නොහැකි විය.\nඑය දැනටමත් පවතියි.",
"defaultmessagetext": "සාමාන්ය පණිවුඩ පෙළ",
"history-feed-empty": "අයැදුනු පිටුව නොපවතියි.\nඑය විකියෙන් මකා දමා හෝ නම-වෙනස් කොට ඇතිවා විය හැකිය.\nඅදාල නව පිටු සඳහා [[Special:Search|විකිය තුල ගවේෂණය]] අත්හදා බලන්න.",
"rev-deleted-comment": "(සංස්කරණ සාරාංශය ඉවත් කරන ලදි)",
"rev-deleted-user": "(පරිශීලක-නාමය ඉවත් කරන ලදි)",
- "rev-deleted-event": "(ලà¶\9dà·\94-à·\83ටà·\84නà·\8a à¶à·\90බà·\93මà·\9a à¶\9aà·\8aâ\80\8dරà·\92යà·\8fà·\80 à¶\85à¶à·\8aà·\84à·\92ටà·\94à·\80න ලදà·\92)",
+ "rev-deleted-event": "(ලà¶\9dà·\94-à·\83ටà·\84නà·\8a à¶\89à·\80à¶à·\8a à¶\9aරන ලදà·\93)",
"rev-deleted-user-contribs": "[පරිශීපක නාමය හෝ ලිපිනය ඉවත් කළා - දායකත්ව මඟින් සඟවන ලද සංස්කරණය]",
"rev-deleted-text-permission": "මෙම පිටු සංශෝධනය '''මකා දමා ඇත'''.\nවැඩි විස්තර බොහෝ විට [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} මකාදැමීම් ලඝු-සටහන] වෙත තිබීමට ඉඩ ඇත.",
"rev-deleted-text-unhide": "මෙම පිටුව සංශෝධනය කිරීම '''මකා දමා ඇත'''.\nමේ පිලිබඳ විස්තර බොහෝවිට [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} මකා දැමීම් ලඝු-සටහනෙහි] තිබීමට ඉඩ ඇත.\nඔබට ඇවැසි නම් [$1 මෙම වෙනස නැරඹීම] තවමත් සිදුකල හැක.",
"powersearch-togglelabel": "පිරික්සන්න:",
"powersearch-toggleall": "සියල්ල",
"powersearch-togglenone": "කිසිවක් නොමැත",
+ "powersearch-remember": "අනාගත සෙවිම් තුලදි මෙම තෝරාගැනීම් මතක තබාගන්න",
"search-external": "බාහිර ගවේෂණය",
"searchdisabled": "{{SITENAME}} ගවේෂණය අක්රීය කොට ඇත.\nමේ අතරතුර ඔබ හට ගූගල් ඔස්සේ ගවේෂණය කල හැක.\n{{SITENAME}} අන්තර්ගතය පිළිබඳ ඔවුන්ගේ සූචි යල් පැන ගොස් ඇතිවා විය හැකි බව සටහන් කර ගන්න.",
+ "search-error": "සෙවීම් සිදුකිරීමේදී වැරද්දක් මතුවී ඇත: $1",
"preferences": "අභිරුචි",
"mypreferences": "අභිරුචීන්",
"prefs-edits": "සංස්කරණයන් සංඛ්යාව:",
"right-editusercssjs": "අනෙකුත් පරිශීලකයන්ගේ CSS හා JS ගොනු සංස්කරණය කරන්න",
"right-editusercss": "අනෙකුත් පරිශීලකයන්ගේ CSS ගොනු සංස්කරණය කරන්න",
"right-edituserjs": "අනෙකුත් පරිශීලකයන්ගේ JS ගොනු සංස්කරණය කරන්න",
+ "right-viewmywatchlist": "ඔබගේ මුර-ලැයිස්තුව පෙන්වන්න",
+ "right-viewmyprivateinfo": "ඔබගේ පෞද්ගලික දත්ත පෙන්වන්න (උදා. විද්යුත් තැපැල් ලිපිනය, නිවැරදි නම)",
+ "right-editmyprivateinfo": "ඔබගේ පෞද්ගලික දත්ත සංස්කරණය කරන්න (උදා. විද්යුත් තැපැල් ලිපිනය, නිවැරදි නම)",
+ "right-editmyoptions": "ඔබගේ අභිරුචියන් සංස්කරණය කරන්න",
"right-rollback": "සුවිශේෂ පිටුවක් අවසන් වරට සංස්කරණය කල පරිශීලකයෙකුගේ සංස්කරණයන් විගසින් පුනරාවර්තනය කරන්න",
"right-markbotedits": "පුනරාවර්තනය-කෙරුනු සංස්කරණයන් රොබෝ සංස්කරණයන් ලෙස සලකුණු කරන්න",
"right-noratelimit": "සීඝ්රතා සීමාවන්ගෙක් බලපෑම් ඇතිනොවන්න",
"action-createpage": "පිටු තනන්න",
"action-createtalk": "සංවාද පිටු තනන්න",
"action-createaccount": "මෙම පරිශීලක ගිණුම තනන්න",
+ "action-history": "මෙම පිටුවේ ඉතිහාසය පෙන්වන්න",
"action-minoredit": "මෙම සංස්කරණය සුළු ලෙස සලකුණු කරන්න",
"action-move": "මෙම පිටුව ගෙනයන්න",
"action-move-subpages": "මෙම පිටුව හා එහි උප පිටු ගෙන යන්න",
"action-userrights-interwiki": "අනෙකුත් විකියන්ගේ පරිශීලකයන්ගේ පරිශීලක හිමිකම් සංස්කරණය කරන්න",
"action-siteadmin": "දත්ත-සංචිතය අවහිරකරන්න හෝ අවහිරය ඉවත් කරන්න",
"action-sendemail": "ඊ-තැපැල් පණිවුඩ යවන්න",
+ "action-editmywatchlist": "ඔබගේ මුර-ලැයිස්තුව සංස්කරණය කරන්න",
+ "action-viewmywatchlist": "ඔබගේ මුර-ලැයිස්තුව පෙන්වන්න",
+ "action-viewmyprivateinfo": "ඔබගේ පෞද්ගලික තොරතුරු පෙන්වන්න",
+ "action-editmyprivateinfo": "ඔබගේ පෞද්ගලික තොරතුරු සංස්කරණය කරන්න",
"nchanges": "$1 {{PLURAL:$1|වෙනස්වීම|වෙනස්වීම්}}",
"enhancedrc-history": "ඉතිහාසය",
"recentchanges": "මෑත වෙනස්කිරීම්",
"import-logentry-interwiki": "$1 අන්තර්විකීකරණය කරන ලදි",
"import-logentry-interwiki-detail": "$2 වෙතින් {{PLURAL:$1|එක් සංශෝධනයක්|සංශෝධන $1 ක්}}",
"javascripttest": "ජාවාස්ක්රිප්ට් පරික්ෂාකරමින්",
- "javascripttest-title": "$1 පරික්ෂණ සිදුකරමින්",
"javascripttest-pagetext-noframework": "මෙම පිටුව ජාවාස්ක්රිප්ට් පරික්ෂණ සිදුකිරීම සඳහා වෙන්කර ඇත.",
"tooltip-pt-userpage": "ඔබගේ පරිශීලක පිටුව",
"tooltip-pt-anonuserpage": "සංස්කරණයට ඔබ භාවිතා කරමින් පවතින අන්තර්ජාල ලිපිනය සඳහා පරිශීලක පිටුව",
"version-entrypoints": "නිවේශන ලක්ෂ්ය URL",
"version-entrypoints-header-entrypoint": "නිවේශන ලක්ෂ්යය",
"version-entrypoints-header-url": "URL",
+ "version-libraries": "ස්ථාපිත පුස්තකාල",
+ "version-libraries-library": "පුස්තකාලය",
+ "version-libraries-version": "අනුවාදය",
"fileduplicatesearch": "අනුපිටපත් ගොනු සඳහා ගවේෂණය කරන්න",
"fileduplicatesearch-summary": "එහි පූරක අගය පාදක කර ගෙන අනුපිටපත් ගොනු සඳහා ගවේෂණය කරන්න.",
"fileduplicatesearch-legend": "අනුපිටපතක් සඳහා ගවේෂණය කරන්න",
"compare-revision-not-exists": "ඔබ විසින් විශේෂණය කෙරූ සංශෝධනය නොපවතියි.",
"dberr-problems": "සමාවන්න! මෙම අඩවිය තාක්ෂණික ගැටළු අත්දකියි.",
"dberr-again": "විනාඩි කිහිපයක් කල්ගතකර යළි-බාගැනුම උත්සාහ කරන්න.",
- "dberr-info": "(දත්තගබඩා සේවාදායකය හා සම්බන්ධ වීමට නොහැක: $1)",
+ "dberr-info": "(දත්තගබඩාවට ඇතුළු වීමට නොහැකිය: $1)",
+ "dberr-info-hidden": "(දත්තගබඩාවට ඇතුළු වීමට නොහැකිය)",
"dberr-usegoogle": "මේ අතරතුර ගූගල් ඔස්සේ ගවේෂණය කිරීමට ඔබ විසින් යත්න දැරිය හැක.",
"dberr-outofdate": "අපගේ අන්තර්ගතයෙහි සූචියන් යල් පැන ගොස් තිබිය හැකි බව සටහන් කර ගන්න.",
"dberr-cachederror": "මෙය ඉල්ලා ඇති පිටුවෙහි පූර්වාපේක්ෂිත සංචිත පිටුවක් වන අතර එය යාවත්කාලින නොවිය හැකි බව සලකන්න.",
"import-logentry-interwiki": "prenesel $1 med wikiji",
"import-logentry-interwiki-detail": "{{PLURAL:$1|Uvožena $1 redakcija|Uvoženi $1 redakciji|Uvožene $1 redakcije|Uvoženih $1 redakcij}} z $2",
"javascripttest": "Preizkušanje JavaScripta",
- "javascripttest-title": "Poganjanje $1 preizkusov",
"javascripttest-pagetext-noframework": "Stran je rezervirana za poganjanje preizkusov JavaScript.",
"javascripttest-pagetext-unknownframework": "Neznano ogrodje za preizkušanje »$1«.",
+ "javascripttest-pagetext-unknownaction": "Neznano dejanje »$1«.",
"javascripttest-pagetext-frameworks": "Prosimo, izberite enega od naslednjih ogrodjev za preizkušanje: $1",
"javascripttest-pagetext-skins": "Izberite kožo, v kateri želite pognati preizkuse:",
"javascripttest-qunit-intro": "Oglejte si [$1 dokumentacijo o preizkušanju] na mediawiki.org.",
- "javascripttest-qunit-heading": "Preizkuševalni paket MediaWiki JavaScript QUnit",
"tooltip-pt-userpage": "Vaša uporabniška stran",
"tooltip-pt-anonuserpage": "Uporabniška stran IP-naslova, ki ga uporabljate",
"tooltip-pt-mytalk": "Vaša pogovorna stran",
"import-logentry-interwiki": "је увезао $1 с другог викија",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|измена увезена|измене увезене|измена увезено}} из $2",
"javascripttest": "Јаваскрипт тест",
- "javascripttest-title": "Извршавање тестова за $1",
"javascripttest-pagetext-noframework": "Ова страница је резервисана за извршавање јаваскрипт тестова.",
"javascripttest-pagetext-unknownframework": "Непознати радни оквир „$1“.",
"javascripttest-pagetext-frameworks": "Изаберите један од следећих радних оквира: $1",
"javascripttest-pagetext-skins": "Изаберите с којом темом желите да покренете пробу:",
"javascripttest-qunit-intro": "Погледајте [$1 документацију за тестирање] на mediawiki.org.",
- "javascripttest-qunit-heading": "Медијавикијин пакет за тестирање – QUnit",
"tooltip-pt-userpage": "Ваша корисничка страница",
"tooltip-pt-anonuserpage": "Корисничка страница за ИП адресу с које уређујете",
"tooltip-pt-mytalk": "Ваша страница за разговор",
"import-logentry-interwiki": "je uvezao $1 s drugog vikija",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|izmena uvezena|izmene uvezene|izmena uvezeno}} iz $2",
"javascripttest": "Javaskript test",
- "javascripttest-title": "Izvršavanje testova za $1",
"javascripttest-pagetext-noframework": "Ova stranica je rezervisana za izvršavanje javaskript testova.",
"javascripttest-pagetext-unknownframework": "Nepoznati radni okvir „$1“.",
"javascripttest-pagetext-frameworks": "Izaberite jedan od sledećih radnih okvira: $1",
"javascripttest-pagetext-skins": "Izaberite s kojom temom želite da pokrenete probu:",
"javascripttest-qunit-intro": "Pogledajte [$1 dokumentaciju za testiranje] na mediawiki.org.",
- "javascripttest-qunit-heading": "Medijavikijin paket za testiranje – QUnit",
"tooltip-pt-userpage": "Vaša korisnička stranica",
"tooltip-pt-anonuserpage": "Korisnička stranica za IP adresu s koje uređujete",
"tooltip-pt-mytalk": "Vaša stranica za razgovor",
"import-logentry-interwiki": "överförde $1 mellan wikier",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|version|versioner}} importerades från $2",
"javascripttest": "JavaScript-testning",
- "javascripttest-title": "Kör $1 tester",
"javascripttest-pagetext-noframework": "Denna sida är reserverat för att köra JavaScript-tester.",
"javascripttest-pagetext-unknownframework": "Okänd testmiljö \"$1\".",
"javascripttest-pagetext-frameworks": "Välj en av följande testmiljöer: $1",
"javascripttest-pagetext-skins": "Välj ett utseende att köra tester med:",
"javascripttest-qunit-intro": "Se [$1 testningsdokumentationen] på mediawiki.org.",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit testsvit",
"tooltip-pt-userpage": "Din användarsida",
"tooltip-pt-anonuserpage": "Användarsida för ip-numret du redigerar från",
"tooltip-pt-mytalk": "Din diskussionssida",
"import-logentry-interwiki": "$1 transvikileşmiş",
"import-logentry-interwiki-detail": "$2 sayfasından $1 {{PLURAL:$1|revizyon|revizyon}} içe aktarıldı",
"javascripttest": "JavaScript denemesi",
- "javascripttest-title": "$1 testleri çalışıyor",
"javascripttest-pagetext-noframework": "Bu sayfa JavaScript testleri çalıştırmak için ayrılmıştır.",
"javascripttest-pagetext-unknownframework": "Bilinmeyen test çerçevesi \"$1\".",
"javascripttest-pagetext-frameworks": "Lütfen aşağıdaki test çerçevelerinden birini seçin: $1",
"javascripttest-pagetext-skins": "Testleri koşmak için bir tema seçin:",
"javascripttest-qunit-intro": "mediawiki.org üzerinden [$1 deneme belgelerine] bakınız.",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit deneme paketi",
"tooltip-pt-userpage": "Kullanıcı sayfanız",
"tooltip-pt-anonuserpage": "The user page for the ip you",
"tooltip-pt-mytalk": "Mesaj sayfanız",
"import-logentry-interwiki": "אריבערגעוויקיט $1",
"import-logentry-interwiki-detail": "$1 {{PLURAL:$1|רעוויזיע|רעוויזיעס}} אימפארטירט פֿון $2",
"javascripttest": "JavaScript טעסט",
- "javascripttest-title": "דורכפירנדיק $1 בדיקות",
"javascripttest-pagetext-noframework": " דער בלאט איז רעזערווירט פאר JavaScript. פרואוון.",
"javascripttest-pagetext-unknownframework": "אומבאקאנטער טעסטן גערעם \"$1\".",
"javascripttest-pagetext-frameworks": "ביטע קלויבט איינעם פון די פאלגנדע טעסטן־גערעם: $1",
"javascripttest-pagetext-skins": "קלויבט א באניצער־אייבערפלאך מיט וואס דורכצופירן די בדיקות:",
"javascripttest-qunit-intro": "זעט [$1 דאקומענטאציע פאר טעסטן] בײַ mediawiki.org.",
- "javascripttest-qunit-heading": "מעדיעוויקי JavaScript QUnit קאנטראל־פראגראם",
"tooltip-pt-userpage": "אייער באניצער בלאט",
"tooltip-pt-anonuserpage": "באַניצער בלאַט פון דעם IP אַדרעס",
"tooltip-pt-mytalk": "אייער שמועס בלאט",
"import-logentry-interwiki": "跨wiki导入页面$1",
"import-logentry-interwiki-detail": "来自$2的$1个{{PLURAL:$1|版本}}已导入",
"javascripttest": "JavaScript测试",
- "javascripttest-title": "运行$1测试",
"javascripttest-pagetext-noframework": "本页面被保留进行JavaScript测试。",
"javascripttest-pagetext-unknownframework": "未知的框架“$1”。",
"javascripttest-pagetext-frameworks": "请选择以下的框架之一:$1",
"javascripttest-pagetext-skins": "选择外观来运行测试:",
"javascripttest-qunit-intro": "请见mediawiki.org的[$1 测试说明文件]。",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit 测试套件",
"tooltip-pt-userpage": "你的用户页面",
"tooltip-pt-anonuserpage": "你用于编辑的IP地址的用户页面",
"tooltip-pt-mytalk": "你的讨论页面",
"import-logentry-interwiki": "Transwiki 頁面 $1",
"import-logentry-interwiki-detail": "已從 $2 匯入 $1 筆{{PLURAL:$1|修訂}}",
"javascripttest": "JavaScript 測試",
- "javascripttest-title": "執行 $1 測試。",
"javascripttest-pagetext-noframework": "此頁面保留用來作為 JavaScript 測試使用。",
"javascripttest-pagetext-unknownframework": "不明的測試 Framework \"$1\"。",
"javascripttest-pagetext-frameworks": "請選擇下列一種測試 Framework:$1",
"javascripttest-pagetext-skins": "選擇執行測試的外觀:",
"javascripttest-qunit-intro": "請參考 mediawiki.org 的 [$1 測試說明文件]。",
- "javascripttest-qunit-heading": "MediaWiki JavaScript QUnit 測試工具",
"tooltip-pt-userpage": "您的使用者頁面",
"tooltip-pt-anonuserpage": "您編輯使用的 IP 位址所對應的使用者頁面",
"tooltip-pt-mytalk": "您的對話頁面",
*
* @return DatabaseBase
*/
- protected function &getDB( $db, $groups = array(), $wiki = false ) {
+ protected function getDB( $db, $groups = array(), $wiki = false ) {
if ( is_null( $this->mDb ) ) {
return wfGetDB( $db, $groups, $wiki );
} else {
*
* @param DatabaseBase $db Database object to be used
*/
- public function setDB( &$db ) {
+ public function setDB( $db ) {
$this->mDb = $db;
}
* Lock the search index
* @param DatabaseBase &$db
*/
- private function lockSearchindex( &$db ) {
+ private function lockSearchindex( $db ) {
$write = array( 'searchindex' );
$read = array( 'page', 'revision', 'text', 'interwiki', 'l10n_cache', 'user' );
$db->lockTables( $read, $write, __CLASS__ . '::' . __METHOD__ );
* Unlock the tables
* @param DatabaseBase &$db
*/
- private function unlockSearchindex( &$db ) {
+ private function unlockSearchindex( $db ) {
$db->unlockTables( __CLASS__ . '::' . __METHOD__ );
}
* Since the lock is low-priority, queued reads will be able to complete
* @param DatabaseBase &$db
*/
- private function relockSearchindex( &$db ) {
+ private function relockSearchindex( $db ) {
$this->unlockSearchindex( $db );
$this->lockSearchindex( $db );
}
$installed = $lock->getInstalledDependencies();
foreach ( $json->getRequiredDependencies() as $name => $version ) {
if ( isset( $installed[$name] ) ) {
- if ( $installed[$name] !== $version ) {
- $this->output( "$name: {$installed[$name]} installed, $version required.\n" );
+ if ( $installed[$name]['version'] !== $version ) {
+ $this->output( "$name: {$installed[$name]['version']} installed, $version required.\n" );
$found = true;
}
} else {
'colon-separator',
'javascripttest-pagetext-skins',
) ),
- 'dependencies' => array( 'jquery.qunit' ),
+ 'dependencies' => array(
+ 'mediawiki.Uri',
+ ),
'position' => 'top',
'targets' => array( 'desktop', 'mobile' ),
),
// Create useskin dropdown menu and reload onchange to the selected skin
// (only if a framework was found, not on error pages).
- $( '#mw-javascripttest-summary.mw-javascripttest-frameworkfound' ).append( function () {
+ $( '#mw-javascripttest-summary' ).append( function () {
var $html = $( '<p><label for="useskin">'
+ mw.message( 'javascripttest-pagetext-skins' ).escaped()
// Bind onchange event handler and append to form
$html.append(
$( select ).change( function () {
- location.href = QUnit.url( { useskin: $( this ).val() } );
+ var url = new mw.Uri();
+ location.href = url.extend( { useskin: $( this ).val() } );
} )
);
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
- "hash": "cc6e7fc565b246cb30b0cac103a2b31e",
+ "hash": "a3bb80b0ac4c4a31e52574d48c032923",
"packages": [
{
- "name": "cdb/cdb",
- "version": "1.0.0",
+ "name": "composer/installers",
+ "version": "v1.0.19",
"source": {
"type": "git",
- "url": "https://github.com/wikimedia/cdb.git",
- "reference": "918601ea3d31b8c37312e9c0e54446aa8bfb3425"
+ "url": "https://github.com/composer/installers.git",
+ "reference": "89d77bfbee79e16653f7162c86e602cc188471db"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/wikimedia/cdb/zipball/918601ea3d31b8c37312e9c0e54446aa8bfb3425",
- "reference": "918601ea3d31b8c37312e9c0e54446aa8bfb3425",
+ "url": "https://api.github.com/repos/composer/installers/zipball/89d77bfbee79e16653f7162c86e602cc188471db",
+ "reference": "89d77bfbee79e16653f7162c86e602cc188471db",
"shasum": ""
},
- "require": {
- "php": ">=5.3.2"
+ "replace": {
+ "roundcube/plugin-installer": "*",
+ "shama/baton": "*"
},
"require-dev": {
- "phpunit/phpunit": "*"
+ "composer/composer": "1.0.*@dev",
+ "phpunit/phpunit": "4.1.*"
+ },
+ "type": "composer-installer",
+ "extra": {
+ "class": "Composer\\Installers\\Installer",
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
},
- "type": "library",
"autoload": {
- "classmap": [
- "src/"
- ]
+ "psr-0": {
+ "Composer\\Installers\\": "src/"
+ }
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "GPLv2"
+ "MIT"
],
"authors": [
{
- "name": "Tim Starling",
- "email": "tstarling@wikimedia.org"
- },
- {
- "name": "Chad Horohoe",
- "email": "chad@wikimedia.org"
+ "name": "Kyle Robinson Young",
+ "email": "kyle@dontkry.com",
+ "homepage": "https://github.com/shama"
}
],
- "description": "Constant Database (CDB) wrapper library for PHP. Provides pure-PHP fallback when dba_* functions are absent.",
- "homepage": "https://www.mediawiki.org/wiki/CDB",
- "time": "2014-11-12 19:03:26"
+ "description": "A multi-framework Composer library installer",
+ "homepage": "http://composer.github.com/installers/",
+ "keywords": [
+ "Craft",
+ "Dolibarr",
+ "Hurad",
+ "MODX Evo",
+ "OXID",
+ "Thelia",
+ "WolfCMS",
+ "agl",
+ "annotatecms",
+ "bitrix",
+ "cakephp",
+ "chef",
+ "codeigniter",
+ "concrete5",
+ "croogo",
+ "dokuwiki",
+ "drupal",
+ "elgg",
+ "fuelphp",
+ "grav",
+ "installer",
+ "joomla",
+ "kohana",
+ "laravel",
+ "lithium",
+ "magento",
+ "mako",
+ "mediawiki",
+ "modulework",
+ "moodle",
+ "phpbb",
+ "piwik",
+ "ppi",
+ "puppet",
+ "roundcube",
+ "shopware",
+ "silverstripe",
+ "symfony",
+ "typo3",
+ "wordpress",
+ "zend",
+ "zikula"
+ ],
+ "time": "2014-11-29 01:29:17"
},
{
"name": "cssjanus/cssjanus",
"homepage": "http://leafo.net/lessphp/",
"time": "2014-11-24 18:39:20"
},
+ {
+ "name": "mediawiki/translate",
+ "version": "2014.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wikimedia/mediawiki-extensions-Translate.git",
+ "reference": "2bc100763f3150380412faceea258c7378ce7ea0"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-Translate/zipball/2bc100763f3150380412faceea258c7378ce7ea0",
+ "reference": "2bc100763f3150380412faceea258c7378ce7ea0",
+ "shasum": ""
+ },
+ "require": {
+ "composer/installers": ">=1.0.1",
+ "mediawiki/universal-language-selector": "*",
+ "php": ">=5.3.0"
+ },
+ "suggest": {
+ "mediawiki/babel": "Users can easily indicate their language proficiency on their user page",
+ "mediawiki/translation-notifications": "Manage communication with translators",
+ "mustangostang/spyc": "More recent version of the bundled spyc library"
+ },
+ "type": "mediawiki-extension",
+ "autoload": {
+ "files": [
+ "Translate.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0+"
+ ],
+ "authors": [
+ {
+ "name": "Niklas Laxström",
+ "email": "niklas.laxstrom@gmail.com",
+ "role": "Lead nitpicker"
+ },
+ {
+ "name": "Siebrand Mazeland",
+ "email": "s.mazeland@xs4all.nl",
+ "role": "Developer"
+ }
+ ],
+ "description": "The only standard solution to translate any kind of text with an avant-garde web interface within MediaWiki, including your documentation and software",
+ "homepage": "https://www.mediawiki.org/wiki/Extension:Translate",
+ "keywords": [
+ "g11n",
+ "i18n",
+ "internationalization",
+ "l10n",
+ "localization",
+ "m17n",
+ "mediawiki",
+ "translatewiki.net",
+ "translation"
+ ],
+ "time": "2014-12-30 15:21:24"
+ },
+ {
+ "name": "mediawiki/universal-language-selector",
+ "version": "2014.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wikimedia/mediawiki-extensions-UniversalLanguageSelector.git",
+ "reference": "f730b0f47e2828001c1e03ec40d4681bfb0bff2d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wikimedia/mediawiki-extensions-UniversalLanguageSelector/zipball/f730b0f47e2828001c1e03ec40d4681bfb0bff2d",
+ "reference": "f730b0f47e2828001c1e03ec40d4681bfb0bff2d",
+ "shasum": ""
+ },
+ "require": {
+ "composer/installers": ">=1.0.1",
+ "php": ">=5.3.0"
+ },
+ "suggest": {
+ "mediawiki/cldr": "Language names in all languages"
+ },
+ "type": "mediawiki-extension",
+ "autoload": {
+ "files": [
+ "UniversalLanguageSelector.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0+",
+ "MIT"
+ ],
+ "description": "The primary aim is to allow users to select a language and configure its support in an easy way. Main features are language selection, input methods and web fonts.",
+ "homepage": "https://www.mediawiki.org/wiki/Extension:UniversalLanguageSelector",
+ "keywords": [
+ "Input methods",
+ "Language selection",
+ "Web fonts",
+ "mediawiki"
+ ],
+ "time": "2014-12-30 15:21:25"
+ },
+ {
+ "name": "oojs/oojs-ui",
+ "version": "v0.6.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wikimedia/oojs-ui.git",
+ "reference": "50fa12637ad377f00bdbf1913406a3bfe9c1689e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wikimedia/oojs-ui/zipball/50fa12637ad377f00bdbf1913406a3bfe9c1689e",
+ "reference": "50fa12637ad377f00bdbf1913406a3bfe9c1689e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "php/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "homepage": "https://www.mediawiki.org/wiki/OOjs_UI",
+ "time": "2014-12-16 20:50:05"
+ },
{
"name": "psr/log",
"version": "1.0.0",
"psr-3"
],
"time": "2012-12-21 11:40:51"
+ },
+ {
+ "name": "wikimedia/cdb",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/wikimedia/cdb.git",
+ "reference": "3b7d5366c88eccf2517ebac57c59eb557c82f46c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/wikimedia/cdb/zipball/3b7d5366c88eccf2517ebac57c59eb557c82f46c",
+ "reference": "3b7d5366c88eccf2517ebac57c59eb557c82f46c",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "*"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "GPL-2.0"
+ ],
+ "authors": [
+ {
+ "name": "Tim Starling",
+ "email": "tstarling@wikimedia.org"
+ },
+ {
+ "name": "Chad Horohoe",
+ "email": "chad@wikimedia.org"
+ }
+ ],
+ "description": "Constant Database (CDB) wrapper library for PHP. Provides pure-PHP fallback when dba_* functions are absent.",
+ "homepage": "https://www.mediawiki.org/wiki/CDB",
+ "time": "2014-12-08 19:26:44"
}
],
"packages-dev": [
},
{
"name": "phpunit/php-code-coverage",
- "version": "2.0.12",
+ "version": "2.0.14",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "7ce9da20f96964bb7a4033f53834df13328dbeab"
+ "reference": "ca158276c1200cc27f5409a5e338486bc0b4fc94"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7ce9da20f96964bb7a4033f53834df13328dbeab",
- "reference": "7ce9da20f96964bb7a4033f53834df13328dbeab",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ca158276c1200cc27f5409a5e338486bc0b4fc94",
+ "reference": "ca158276c1200cc27f5409a5e338486bc0b4fc94",
"shasum": ""
},
"require": {
"testing",
"xunit"
],
- "time": "2014-12-02 13:17:01"
+ "time": "2014-12-26 13:28:33"
},
{
"name": "phpunit/php-file-iterator",
},
{
"name": "phpunit/phpunit",
- "version": "4.3.5",
+ "version": "4.4.1",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "2dab9d593997db4abcf58d0daf798eb4e9cecfe1"
+ "reference": "6a5e49a86ce5e33b8d0657abe145057fc513543a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/2dab9d593997db4abcf58d0daf798eb4e9cecfe1",
- "reference": "2dab9d593997db4abcf58d0daf798eb4e9cecfe1",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/6a5e49a86ce5e33b8d0657abe145057fc513543a",
+ "reference": "6a5e49a86ce5e33b8d0657abe145057fc513543a",
"shasum": ""
},
"require": {
"phpunit/phpunit-mock-objects": "~2.3",
"sebastian/comparator": "~1.0",
"sebastian/diff": "~1.1",
- "sebastian/environment": "~1.0",
+ "sebastian/environment": "~1.1",
"sebastian/exporter": "~1.0",
+ "sebastian/global-state": "~1.0",
"sebastian/version": "~1.0",
"symfony/yaml": "~2.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.3.x-dev"
+ "dev-master": "4.4.x-dev"
}
},
"autoload": {
]
},
"notification-url": "https://packagist.org/downloads/",
- "include-path": [
- "",
- "../../symfony/yaml/"
- ],
"license": [
"BSD-3-Clause"
],
}
],
"description": "The PHP Unit Testing framework.",
- "homepage": "http://www.phpunit.de/",
+ "homepage": "https://phpunit.de/",
"keywords": [
"phpunit",
"testing",
"xunit"
],
- "time": "2014-11-11 10:11:09"
+ "time": "2014-12-28 07:57:05"
},
{
"name": "phpunit/phpunit-mock-objects",
},
{
"name": "sebastian/comparator",
- "version": "1.0.1",
+ "version": "1.1.0",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "e54a01c0da1b87db3c5a3c4c5277ddf331da4aef"
+ "reference": "c484a80f97573ab934e37826dba0135a3301b26a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/e54a01c0da1b87db3c5a3c4c5277ddf331da4aef",
- "reference": "e54a01c0da1b87db3c5a3c4c5277ddf331da4aef",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/c484a80f97573ab934e37826dba0135a3301b26a",
+ "reference": "c484a80f97573ab934e37826dba0135a3301b26a",
"shasum": ""
},
"require": {
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0.x-dev"
+ "dev-master": "1.1.x-dev"
}
},
"autoload": {
"compare",
"equality"
],
- "time": "2014-05-11 23:00:21"
+ "time": "2014-11-16 21:32:38"
},
{
"name": "sebastian/diff",
],
"time": "2014-09-10 00:51:36"
},
+ {
+ "name": "sebastian/global-state",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
+ "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2014-10-06 09:23:50"
+ },
{
"name": "sebastian/version",
- "version": "1.0.3",
+ "version": "1.0.4",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
- "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43"
+ "reference": "a77d9123f8e809db3fbdea15038c27a95da4058b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
- "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/a77d9123f8e809db3fbdea15038c27a95da4058b",
+ "reference": "a77d9123f8e809db3fbdea15038c27a95da4058b",
"shasum": ""
},
"type": "library",
],
"description": "Library that helps with managing the version number of Git-hosted PHP projects",
"homepage": "https://github.com/sebastianbergmann/version",
- "time": "2014-03-07 15:35:33"
+ "time": "2014-12-15 14:25:24"
},
{
"name": "symfony/yaml",
- "version": "v2.6.0",
+ "version": "v2.6.1",
"target-dir": "Symfony/Component/Yaml",
"source": {
"type": "git",
"url": "https://github.com/symfony/Yaml.git",
- "reference": "51c845cf3e4bfc182d1d5c05ed1c7338361d86f8"
+ "reference": "3346fc090a3eb6b53d408db2903b241af51dcb20"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/Yaml/zipball/51c845cf3e4bfc182d1d5c05ed1c7338361d86f8",
- "reference": "51c845cf3e4bfc182d1d5c05ed1c7338361d86f8",
+ "url": "https://api.github.com/repos/symfony/Yaml/zipball/3346fc090a3eb6b53d408db2903b241af51dcb20",
+ "reference": "3346fc090a3eb6b53d408db2903b241af51dcb20",
"shasum": ""
},
"require": {
],
"description": "Symfony Yaml Component",
"homepage": "http://symfony.com",
- "time": "2014-11-20 13:24:23"
+ "time": "2014-12-02 20:19:20"
}
],
"aliases": [],
$source = $this->getInputStreamSource( $xml );
$redirect = null;
- $callback = function ( $title, $origTitle, $revCount, $sRevCount, $pageInfo ) use ( &$redirect ) {
+ $callback = function ( Title $title, ForeignTitle $foreignTitle, $revCount,
+ $sRevCount, $pageInfo ) use ( &$redirect ) {
if ( array_key_exists( 'redirect', $pageInfo ) ) {
$redirect = $pageInfo['redirect'];
}
);
}
+ /**
+ * @covers WikiImporter::handleSiteInfo
+ * @dataProvider getSiteInfoXML
+ * @param string $xml
+ * @param array|null $namespaces
+ */
+ public function testSiteInfoContainsNamespaces( $xml, $namespaces ) {
+ $source = $this->getInputStreamSource( $xml );
+
+ $importNamespaces = null;
+ $callback = function ( array $siteinfo, $innerImporter ) use ( &$importNamespaces ) {
+ $importNamespaces = $siteinfo['_namespaces'];
+ };
+
+ $importer = new WikiImporter( $source, ConfigFactory::getDefaultInstance()->makeConfig( 'main' ) );
+ $importer->setSiteInfoCallback( $callback );
+ $importer->doImport();
+
+ $this->assertEquals( $importNamespaces, $namespaces );
+ }
+
+ public function getSiteInfoXML() {
+ return array(
+ array(
+ <<< EOF
+<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.10/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.10/ http://www.mediawiki.org/xml/export-0.10.xsd" version="0.10" xml:lang="en">
+ <siteinfo>
+ <namespaces>
+ <namespace key="-2" case="first-letter">Media</namespace>
+ <namespace key="-1" case="first-letter">Special</namespace>
+ <namespace key="0" case="first-letter" />
+ <namespace key="1" case="first-letter">Talk</namespace>
+ <namespace key="2" case="first-letter">User</namespace>
+ <namespace key="3" case="first-letter">User talk</namespace>
+ <namespace key="100" case="first-letter">Portal</namespace>
+ <namespace key="101" case="first-letter">Portal talk</namespace>
+ </namespaces>
+ </siteinfo>
+</mediawiki>
+EOF
+ ,
+ array(
+ '-2' => 'Media',
+ '-1' => 'Special',
+ '0' => '',
+ '1' => 'Talk',
+ '2' => 'User',
+ '3' => 'User talk',
+ '100' => 'Portal',
+ '101' => 'Portal talk',
+ )
+ ),
+ );
+ }
+
}
*/
public function testGetHash() {
$lock = new ComposerLock( $this->lock );
- $this->assertEquals( 'cc6e7fc565b246cb30b0cac103a2b31e', $lock->getHash() );
+ $this->assertEquals( 'a3bb80b0ac4c4a31e52574d48c032923', $lock->getHash() );
}
/**
public function testGetInstalledDependencies() {
$lock = new ComposerLock( $this->lock );
$this->assertArrayEquals( array(
- 'cdb/cdb' => '1.0.0',
- 'cssjanus/cssjanus' => '1.1.1',
- 'leafo/lessphp' => '0.5.0',
- 'psr/log' => '1.0.0',
+ 'wikimedia/cdb' => array(
+ 'version' => '1.0.1',
+ 'type' => 'library',
+ ),
+ 'cssjanus/cssjanus' => array(
+ 'version' => '1.1.1',
+ 'type' => 'library',
+ ),
+ 'leafo/lessphp' => array(
+ 'version' => '0.5.0',
+ 'type' => 'library',
+ ),
+ 'psr/log' => array(
+ 'version' => '1.0.0',
+ 'type' => 'library',
+ ),
+ 'oojs/oojs-ui' => array(
+ 'version' => '0.6.0',
+ 'type' => 'library',
+ ),
+ 'composer/installers' => array(
+ 'version' => '1.0.19',
+ 'type' => 'composer-installer',
+ ),
+ 'mediawiki/translate' => array(
+ 'version' => '2014.12',
+ 'type' => 'mediawiki-extension',
+ ),
+ 'mediawiki/universal-language-selector' => array(
+ 'version' => '2014.12',
+ 'type' => 'mediawiki-extension',
+ ),
), $lock->getInstalledDependencies(), false, true );
}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author This, that and the other
+ */
+
+/**
+ * @covers ForeignTitle
+ *
+ * @group Title
+ */
+class ForeignTitleTest extends MediaWikiTestCase {
+
+ public function basicProvider() {
+ return array(
+ array(
+ new ForeignTitle( 20, 'Contributor', 'JohnDoe' ),
+ 20, 'Contributor', 'JohnDoe'
+ ),
+ array(
+ new ForeignTitle( '1', 'Discussion', 'Capital' ),
+ 1, 'Discussion', 'Capital'
+ ),
+ array(
+ new ForeignTitle( 0, '', 'MainNamespace' ),
+ 0, '', 'MainNamespace'
+ ),
+ array(
+ new ForeignTitle( 4, 'Some ns', 'Article title with spaces' ),
+ 4, 'Some_ns', 'Article_title_with_spaces'
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider basicProvider
+ */
+ public function testBasic( ForeignTitle $title, $expectedId, $expectedName,
+ $expectedText ) {
+
+ $this->assertEquals( true, $title->isNamespaceIdKnown() );
+ $this->assertEquals( $expectedId, $title->getNamespaceId() );
+ $this->assertEquals( $expectedName, $title->getNamespaceName() );
+ $this->assertEquals( $expectedText, $title->getText() );
+ }
+
+ public function testUnknownNamespaceCheck( ) {
+ $title = new ForeignTitle( null, 'this', 'that' );
+
+ $this->assertEquals( false, $title->isNamespaceIdKnown() );
+ $this->assertEquals( 'this', $title->getNamespaceName() );
+ $this->assertEquals( 'that', $title->getText() );
+ }
+
+ public function testUnknownNamespaceError( ) {
+ $this->setExpectedException( 'MWException' );
+ $title = new ForeignTitle( null, 'this', 'that' );
+ $title->getNamespaceId();
+ }
+
+ public function fullTextProvider() {
+ return array(
+ array(
+ new ForeignTitle( 20, 'Contributor', 'JohnDoe' ),
+ 'Contributor:JohnDoe'
+ ),
+ array(
+ new ForeignTitle( '1', 'Discussion', 'Capital' ),
+ 'Discussion:Capital'
+ ),
+ array(
+ new ForeignTitle( 0, '', 'MainNamespace' ),
+ 'MainNamespace'
+ ),
+ array(
+ new ForeignTitle( 4, 'Some ns', 'Article title with spaces' ),
+ 'Some_ns:Article_title_with_spaces'
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider fullTextProvider
+ */
+ public function testFullText( ForeignTitle $title, $fullText ) {
+ $this->assertEquals( $fullText, $title->getFullText() );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author This, that and the other
+ */
+
+/**
+ * @covers NaiveForeignTitleFactory
+ *
+ * @group Title
+ */
+class NaiveForeignTitleFactoryTest extends MediaWikiTestCase {
+
+ public function basicProvider() {
+ return array(
+ array(
+ 'MainNamespaceArticle', 0,
+ new ForeignTitle( 0, '', 'MainNamespaceArticle' ),
+ ),
+ array(
+ 'MainNamespaceArticle', null,
+ new ForeignTitle( null, '', 'MainNamespaceArticle' ),
+ ),
+ array(
+ 'Talk:Nice_talk', 1,
+ new ForeignTitle( 1, 'Talk', 'Nice_talk' ),
+ ),
+ array(
+ 'Bogus:Nice_talk', 0,
+ new ForeignTitle( 0, '', 'Bogus:Nice_talk' ),
+ ),
+ array(
+ 'Bogus:Nice_talk', 9000, // non-existent local namespace ID
+ new ForeignTitle( 9000, 'Bogus', 'Nice_talk' ),
+ ),
+ array(
+ 'Bogus:Nice_talk', 4, // existing local namespace ID
+ new ForeignTitle( 4, 'Bogus', 'Nice_talk' ),
+ ),
+ array(
+ 'Talk:Extra:Nice_talk', 1,
+ new ForeignTitle( 1, 'Talk', 'Extra:Nice_talk' ),
+ ),
+ array(
+ 'Talk:Extra:Nice_talk', null,
+ new ForeignTitle( null, 'Talk', 'Extra:Nice_talk' ),
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider basicProvider
+ */
+ public function testBasic( $title, $ns, ForeignTitle $foreignTitle ) {
+ $factory = new NaiveForeignTitleFactory();
+ $testTitle = $factory->createForeignTitle( $title, $ns );
+
+ $this->assertEquals( $testTitle->isNamespaceIdKnown(),
+ $foreignTitle->isNamespaceIdKnown() );
+
+ if (
+ $testTitle->isNamespaceIdKnown() &&
+ $foreignTitle->isNamespaceIdKnown()
+ ) {
+ $this->assertEquals( $testTitle->getNamespaceId(),
+ $foreignTitle->getNamespaceId() );
+ }
+
+ $this->assertEquals( $testTitle->getNamespaceName(),
+ $foreignTitle->getNamespaceName() );
+ $this->assertEquals( $testTitle->getText(), $foreignTitle->getText() );
+
+ $this->assertEquals( str_replace( ' ', '_', $title ),
+ $foreignTitle->getFullText() );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author This, that and the other
+ */
+
+/**
+ * @covers NaiveImportTitleFactory
+ *
+ * @group Title
+ */
+class NaiveImportTitleFactoryTest extends MediaWikiTestCase {
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->setMwGlobals( array(
+ 'wgLanguageCode' => 'en',
+ 'wgContLang' => Language::factory( 'en' ),
+ 'wgExtraNamespaces' => array( 100 => 'Portal' ),
+ ) );
+ }
+
+ public function basicProvider() {
+ return array(
+ array(
+ new ForeignTitle( 0, '', 'MainNamespaceArticle' ),
+ Title::newFromText( 'MainNamespaceArticle' )
+ ),
+ array(
+ new ForeignTitle( null, '', 'MainNamespaceArticle' ),
+ Title::newFromText( 'MainNamespaceArticle' )
+ ),
+ array(
+ new ForeignTitle( 1, 'Discussion', 'Nice_talk' ),
+ Title::newFromText( 'Talk:Nice_talk' )
+ ),
+ array(
+ new ForeignTitle( 0, '', 'Bogus:Nice_talk' ),
+ Title::newFromText( 'Bogus:Nice_talk' )
+ ),
+ array(
+ new ForeignTitle( 100, 'Bogus', 'Nice_talk' ),
+ Title::newFromText( 'Bogus:Nice_talk' ) // not Portal:Nice_talk
+ ),
+ array(
+ new ForeignTitle( 1, 'Bogus', 'Nice_talk' ),
+ Title::newFromText( 'Talk:Nice_talk' ) // not Bogus:Nice_talk
+ ),
+ array(
+ new ForeignTitle( 100, 'Portal', 'Nice_talk' ),
+ Title::newFromText( 'Portal:Nice_talk' )
+ ),
+ array(
+ new ForeignTitle( 724, 'Portal', 'Nice_talk' ),
+ Title::newFromText( 'Portal:Nice_talk' )
+ ),
+ array(
+ new ForeignTitle( 2, 'Portal', 'Nice_talk' ),
+ Title::newFromText( 'User:Nice_talk' )
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider basicProvider
+ */
+ public function testBasic( ForeignTitle $foreignTitle, Title $title ) {
+ $factory = new NaiveImportTitleFactory();
+ $testTitle = $factory->createTitleFromForeignTitle( $foreignTitle );
+
+ $this->assertTrue( $title->equals( $testTitle ) );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author This, that and the other
+ */
+
+/**
+ * @covers NamespaceAwareForeignTitleFactory
+ *
+ * @group Title
+ */
+class NamespaceAwareForeignTitleFactoryTest extends MediaWikiTestCase {
+
+ public function basicProvider() {
+ return array(
+ array(
+ 'MainNamespaceArticle', 0,
+ new ForeignTitle( 0, '', 'MainNamespaceArticle' ),
+ ),
+ array(
+ 'MainNamespaceArticle', null,
+ new ForeignTitle( 0, '', 'MainNamespaceArticle' ),
+ ),
+ array(
+ 'Talk:Nice_talk', 1,
+ new ForeignTitle( 1, 'Talk', 'Nice_talk' ),
+ ),
+ array(
+ 'Bogus:Nice_talk', 0,
+ new ForeignTitle( 0, '', 'Bogus:Nice_talk' ),
+ ),
+ array(
+ 'Bogus:Nice_talk', null,
+ new ForeignTitle( 9000, 'Bogus', 'Nice_talk' ),
+ ),
+ array(
+ 'Bogus:Nice_talk', 4,
+ new ForeignTitle( 4, 'Bogus', 'Nice_talk' ),
+ ),
+ array(
+ 'Bogus:Nice_talk', 1,
+ new ForeignTitle( 1, 'Talk', 'Nice_talk' ),
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider basicProvider
+ */
+ public function testBasic( $title, $ns, ForeignTitle $foreignTitle ) {
+
+ $foreignNamespaces = array(
+ 0 => '', 1 => 'Talk', 100 => 'Portal', 9000 => 'Bogus'
+ );
+
+ $factory = new NamespaceAwareForeignTitleFactory( $foreignNamespaces );
+ $testTitle = $factory->createForeignTitle( $title, $ns );
+
+ $this->assertEquals( $testTitle->isNamespaceIdKnown(),
+ $foreignTitle->isNamespaceIdKnown() );
+
+ if (
+ $testTitle->isNamespaceIdKnown() &&
+ $foreignTitle->isNamespaceIdKnown()
+ ) {
+ $this->assertEquals( $testTitle->getNamespaceId(),
+ $foreignTitle->getNamespaceId() );
+ }
+
+ $this->assertEquals( $testTitle->getNamespaceName(),
+ $foreignTitle->getNamespaceName() );
+ $this->assertEquals( $testTitle->getText(), $foreignTitle->getText() );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author This, that and the other
+ */
+
+/**
+ * @covers NamespaceImportTitleFactory
+ *
+ * @group Title
+ */
+class NamespaceImportTitleFactoryTest extends MediaWikiTestCase {
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->setMwGlobals( array(
+ 'wgLanguageCode' => 'en',
+ 'wgContLang' => Language::factory( 'en' ),
+ ) );
+ }
+
+ public function basicProvider() {
+ return array(
+ array(
+ new ForeignTitle( 0, '', 'MainNamespaceArticle' ),
+ 0,
+ Title::newFromText( 'MainNamespaceArticle' )
+ ),
+ array(
+ new ForeignTitle( 0, '', 'MainNamespaceArticle' ),
+ 2,
+ Title::newFromText( 'User:MainNamespaceArticle' )
+ ),
+ array(
+ new ForeignTitle( 1, 'Discussion', 'Nice_talk' ),
+ 0,
+ Title::newFromText( 'Nice_talk' )
+ ),
+ array(
+ new ForeignTitle( 0, '', 'Bogus:Nice_talk' ),
+ 0,
+ Title::newFromText( 'Bogus:Nice_talk' )
+ ),
+ array(
+ new ForeignTitle( 0, '', 'Bogus:Nice_talk' ),
+ 2,
+ Title::newFromText( 'User:Bogus:Nice_talk' )
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider basicProvider
+ */
+ public function testBasic( ForeignTitle $foreignTitle, $ns, Title $title ) {
+ $factory = new NamespaceImportTitleFactory( $ns );
+ $testTitle = $factory->createTitleFromForeignTitle( $foreignTitle );
+
+ $this->assertTrue( $title->equals( $testTitle ) );
+ }
+}
--- /dev/null
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @license GPL 2+
+ * @author This, that and the other
+ */
+
+/**
+ * @covers SubpageImportTitleFactory
+ *
+ * @group Title
+ */
+class SubpageImportTitleFactoryTest extends MediaWikiTestCase {
+
+ protected function setUp() {
+ parent::setUp();
+
+ $this->setMwGlobals( array(
+ 'wgLanguageCode' => 'en',
+ 'wgContLang' => Language::factory( 'en' ),
+ 'wgNamespacesWithSubpages' => array( 0 => false, 2 => true ),
+ ) );
+ }
+
+ public function basicProvider() {
+ return array(
+ array(
+ new ForeignTitle( 0, '', 'MainNamespaceArticle' ),
+ Title::newFromText( 'User:Graham' ),
+ Title::newFromText( 'User:Graham/MainNamespaceArticle' )
+ ),
+ array(
+ new ForeignTitle( 1, 'Discussion', 'Nice_talk' ),
+ Title::newFromText( 'User:Graham' ),
+ Title::newFromText( 'User:Graham/Discussion:Nice_talk' )
+ ),
+ array(
+ new ForeignTitle( 0, '', 'Bogus:Nice_talk' ),
+ Title::newFromText( 'User:Graham' ),
+ Title::newFromText( 'User:Graham/Bogus:Nice_talk' )
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider basicProvider
+ */
+ public function testBasic( ForeignTitle $foreignTitle, Title $rootPage,
+ Title $title ) {
+
+ $factory = new SubpageImportTitleFactory( $rootPage );
+ $testTitle = $factory->createTitleFromForeignTitle( $foreignTitle );
+
+ $this->assertTrue( $testTitle->equals( $title ) );
+ }
+
+ public function failureProvider() {
+ return array(
+ array(
+ Title::newFromText( 'Graham' ),
+ ),
+ );
+ }
+
+ /**
+ * @dataProvider failureProvider
+ */
+ public function testFailures( Title $rootPage ) {
+ $this->setExpectedException( 'MWException' );
+ new SubpageImportTitleFactory( $rootPage );
+ }
+}
'tests/qunit/data/testrunner.js',
),
'dependencies' => array(
+ // Test runner configures QUnit but can't have it as dependency,
+ // see SpecialJavaScriptTest::viewQUnit.
'jquery.getAttrs',
- 'jquery.qunit',
- 'jquery.qunit.completenessTest',
'mediawiki.page.ready',
'mediawiki.page.startup',
'test.sinonjs',